LCOV - code coverage report
Current view: top level - src/frontend/SageIII - Cxx_GrammarCopyMemberFunctions.C (source / functions) Hit Total Coverage
Test: ROSE Lines: 3631 49671 7.3 %
Date: 2022-12-08 13:48:47 Functions: 53 679 7.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // MACHINE GENERATED SOURCE FILE WITH ROSE (Grammar.h)--- DO NOT MODIFY!
       2             : 
       3             : #include "sage3basic.h"
       4             : 
       5             : #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
       6             :    #include "AST_FILE_IO.h"
       7             : #endif 
       8             : // The header file ("rose_config.h") should only be included by source files that require it.
       9             : #include "rose_config.h"
      10             : 
      11             : #if _MSC_VER
      12             : #define USE_CPP_NEW_DELETE_OPERATORS 0
      13             : #endif
      14             : 
      15             : #define ROSE_ALLOC_TRACE 0
      16             : #undef mprintf
      17             : #define mprintf Rose::Diagnostics::mfprintf(Rose::ir_node_mlog[Rose::Diagnostics::DEBUG])
      18             : 
      19             : 
      20             : using namespace std;
      21             : 
      22             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
      23             : 
      24           0 : SgNode* SgNode::copy ( SgCopyHelp& help) const
      25             :    {
      26           0 :      SgNode* result = NULL;
      27             : 
      28             :   // printf ("Copy SgNode = %p = %s \n",this,SageInterface::get_name(this).c_str());
      29             : 
      30             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
      31             :   // used to associated old and new symbols in the original AST and the copy of the AST.
      32             :   // The default value of the depth is 0, so after this call the depth is 1!
      33           0 :      help.incrementDepth();
      34             : 
      35             : #if 0
      36             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
      37             :   // but it is not generally true that things can only be copied once!
      38             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
      39             :   // AstAttribute* existingAttribute = const_cast<SgNode*>(this)->attribute["copied"];
      40             :      bool previouslyCopied = const_cast<SgNode*>(this)->attribute.exists("copied");
      41             :      if (previouslyCopied == true)
      42             :         {
      43             :           this->get_file_info()->display("Called from copy SgNode: debug");
      44             :         }
      45             :      ROSE_ASSERT(previouslyCopied == false);
      46             : 
      47             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
      48             :      AstAttribute* newAttribute = new AstAttribute();
      49             :      ROSE_ASSERT(newAttribute != NULL);
      50             : 
      51             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
      52             :      const_cast<SgNode*>(this)->attribute.add("copied",newAttribute);
      53             : #endif
      54             : 
      55             :   // Copy data members from base classes
      56             :  
      57             : 
      58             :   // Build an empty copy of this object (will be filled in, but 
      59             :   // the parent can't be set and must be set by the caller)
      60           0 :      result = new SgNode(  );
      61           0 :      ROSE_ASSERT(result != NULL);
      62             : 
      63             :   // Copy data members of "this" class
      64             : 
      65             : 
      66             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
      67             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
      68             :   // fixupCopy(result,help);
      69             : 
      70             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
      71             :   // the Sg_File_Info objects that are built for the new IR nodes.
      72           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
      73           0 :      if (locatedNode != NULL)
      74             :         {
      75             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
      76           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
      77           0 :           ROSE_ASSERT(start != NULL);
      78             : #if 0
      79             :        // Debugging information
      80             :           if (start->get_parent() == NULL)
      81             :              {
      82             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
      83             :              }
      84             : #endif
      85           0 :           start->set_parent(locatedNode);
      86           0 :           ROSE_ASSERT(start->get_parent() != NULL);
      87             : 
      88           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
      89             : 
      90             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
      91             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
      92             :        // ROSE_ASSERT(end != NULL);
      93           0 :           if (end == NULL)
      94             :              {
      95           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
      96             :              }
      97             :             else
      98             :              {
      99             : #if 0
     100             :             // Debugging information
     101             :                if (end->get_parent() == NULL)
     102             :                   {
     103             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     104             :                   }
     105             : #endif
     106           0 :                end->set_parent(locatedNode);
     107           0 :                ROSE_ASSERT(end->get_parent() != NULL);
     108             :              }
     109             : 
     110           0 :           SgExpression* expression = isSgExpression(result);
     111           0 :           if (isSgExpression(this) != NULL)
     112             :              {
     113           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
     114             : 
     115             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
     116           0 :                if (operatorPosition != NULL)
     117             :                   {
     118             : #if 0
     119             :                  // Debugging information
     120             :                     if (operatorPosition->get_parent() == NULL)
     121             :                        {
     122             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     123             :                        }
     124             : #endif
     125           0 :                     operatorPosition->set_parent(expression);
     126           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
     127             :                   }
     128             :              }
     129             :         }
     130             : 
     131             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
     132           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
     133           0 :      if (initializedName != NULL)
     134             :         {
     135             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
     136           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
     137           0 :           ROSE_ASSERT(start != NULL);
     138             : #if 0
     139             :        // Debugging information
     140             :           if (start->get_parent() == NULL)
     141             :              {
     142             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     143             :              }
     144             : #endif
     145           0 :           start->set_parent(initializedName);
     146           0 :           ROSE_ASSERT(start->get_parent() != NULL);
     147             : 
     148             : #if 0
     149             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
     150             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
     151             : 
     152             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
     153             :        // ROSE_ASSERT(end != NULL);
     154             :           if (end == NULL)
     155             :              {
     156             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
     157             :              }
     158             :             else
     159             :              {
     160             :                if (end->get_parent() == NULL)
     161             :                   {
     162             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     163             :                   }
     164             :                end->set_parent(initializedName);
     165             :                ROSE_ASSERT(end->get_parent() != NULL);
     166             :              }
     167             : #endif
     168             :         }
     169             : 
     170             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
     171           0 :      help.insertCopiedNodePair(this,result);
     172             : 
     173             :   // printf ("End of copy SgNode = %p = %s \n",this,SageInterface::get_name(this).c_str());
     174             : 
     175             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     176             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     177           0 :      help.decrementDepth();
     178             : 
     179             :   // Test if this is the root of the copy!
     180           0 :      if (help.get_depth() == 0)
     181             :         {
     182             :        // This is the original calling node.
     183             : 
     184             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
     185             :        // printf ("Calling SgNode::fixupCopy() (from root of AST being copied) \n");
     186             : #if ALT_FIXUP_COPY
     187             :        // DQ (11/7/2007): These need to be called separately (see documentation)
     188           0 :           fixupCopy_scopes (result,help);
     189           0 :           fixupCopy_symbols (result,help);
     190           0 :           fixupCopy_references (result,help);
     191             : #else
     192             :           fixupCopy(result,help);
     193             : #endif
     194             :        // Allow this to be called recursively, so accumulate the state.
     195             :        // Also, clear the state in the SgCopyHelp object.
     196             :        // help.clearState();
     197             :         }
     198             : 
     199           0 :      return result;
     200             :    }
     201             : 
     202             : 
     203             : /* #line 204 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
     204             : 
     205             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
     206             : 
     207           0 : SgNode* SgSupport::copy ( SgCopyHelp& help) const
     208             :    {
     209           0 :      SgSupport* result = NULL;
     210             : 
     211             :   // printf ("Copy SgSupport = %p = %s \n",this,SageInterface::get_name(this).c_str());
     212             : 
     213             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     214             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     215             :   // The default value of the depth is 0, so after this call the depth is 1!
     216           0 :      help.incrementDepth();
     217             : 
     218             : #if 0
     219             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
     220             :   // but it is not generally true that things can only be copied once!
     221             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
     222             :   // AstAttribute* existingAttribute = const_cast<SgSupport*>(this)->attribute["copied"];
     223             :      bool previouslyCopied = const_cast<SgSupport*>(this)->attribute.exists("copied");
     224             :      if (previouslyCopied == true)
     225             :         {
     226             :           this->get_file_info()->display("Called from copy SgSupport: debug");
     227             :         }
     228             :      ROSE_ASSERT(previouslyCopied == false);
     229             : 
     230             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
     231             :      AstAttribute* newAttribute = new AstAttribute();
     232             :      ROSE_ASSERT(newAttribute != NULL);
     233             : 
     234             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
     235             :      const_cast<SgSupport*>(this)->attribute.add("copied",newAttribute);
     236             : #endif
     237             : 
     238             :   // Copy data members from base classes
     239             :  
     240             : 
     241             :   // Build an empty copy of this object (will be filled in, but 
     242             :   // the parent can't be set and must be set by the caller)
     243           0 :      result = new SgSupport(  );
     244           0 :      ROSE_ASSERT(result != NULL);
     245             : 
     246             :   // Copy data members of "this" class
     247             : 
     248             : 
     249             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
     250             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
     251             :   // fixupCopy(result,help);
     252             : 
     253             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
     254             :   // the Sg_File_Info objects that are built for the new IR nodes.
     255           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
     256           0 :      if (locatedNode != NULL)
     257             :         {
     258             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
     259           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
     260           0 :           ROSE_ASSERT(start != NULL);
     261             : #if 0
     262             :        // Debugging information
     263             :           if (start->get_parent() == NULL)
     264             :              {
     265             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     266             :              }
     267             : #endif
     268           0 :           start->set_parent(locatedNode);
     269           0 :           ROSE_ASSERT(start->get_parent() != NULL);
     270             : 
     271           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
     272             : 
     273             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
     274             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
     275             :        // ROSE_ASSERT(end != NULL);
     276           0 :           if (end == NULL)
     277             :              {
     278           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
     279             :              }
     280             :             else
     281             :              {
     282             : #if 0
     283             :             // Debugging information
     284             :                if (end->get_parent() == NULL)
     285             :                   {
     286             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     287             :                   }
     288             : #endif
     289           0 :                end->set_parent(locatedNode);
     290           0 :                ROSE_ASSERT(end->get_parent() != NULL);
     291             :              }
     292             : 
     293           0 :           SgExpression* expression = isSgExpression(result);
     294           0 :           if (isSgExpression(this) != NULL)
     295             :              {
     296           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
     297             : 
     298             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
     299           0 :                if (operatorPosition != NULL)
     300             :                   {
     301             : #if 0
     302             :                  // Debugging information
     303             :                     if (operatorPosition->get_parent() == NULL)
     304             :                        {
     305             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     306             :                        }
     307             : #endif
     308           0 :                     operatorPosition->set_parent(expression);
     309           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
     310             :                   }
     311             :              }
     312             :         }
     313             : 
     314             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
     315           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
     316           0 :      if (initializedName != NULL)
     317             :         {
     318             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
     319           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
     320           0 :           ROSE_ASSERT(start != NULL);
     321             : #if 0
     322             :        // Debugging information
     323             :           if (start->get_parent() == NULL)
     324             :              {
     325             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     326             :              }
     327             : #endif
     328           0 :           start->set_parent(initializedName);
     329           0 :           ROSE_ASSERT(start->get_parent() != NULL);
     330             : 
     331             : #if 0
     332             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
     333             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
     334             : 
     335             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
     336             :        // ROSE_ASSERT(end != NULL);
     337             :           if (end == NULL)
     338             :              {
     339             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
     340             :              }
     341             :             else
     342             :              {
     343             :                if (end->get_parent() == NULL)
     344             :                   {
     345             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     346             :                   }
     347             :                end->set_parent(initializedName);
     348             :                ROSE_ASSERT(end->get_parent() != NULL);
     349             :              }
     350             : #endif
     351             :         }
     352             : 
     353             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
     354           0 :      help.insertCopiedNodePair(this,result);
     355             : 
     356             :   // printf ("End of copy SgSupport = %p = %s \n",this,SageInterface::get_name(this).c_str());
     357             : 
     358             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     359             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     360           0 :      help.decrementDepth();
     361             : 
     362             :   // Test if this is the root of the copy!
     363           0 :      if (help.get_depth() == 0)
     364             :         {
     365             :        // This is the original calling node.
     366             : 
     367             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
     368             :        // printf ("Calling SgSupport::fixupCopy() (from root of AST being copied) \n");
     369             : #if ALT_FIXUP_COPY
     370             :        // DQ (11/7/2007): These need to be called separately (see documentation)
     371           0 :           fixupCopy_scopes (result,help);
     372           0 :           fixupCopy_symbols (result,help);
     373           0 :           fixupCopy_references (result,help);
     374             : #else
     375             :           fixupCopy(result,help);
     376             : #endif
     377             :        // Allow this to be called recursively, so accumulate the state.
     378             :        // Also, clear the state in the SgCopyHelp object.
     379             :        // help.clearState();
     380             :         }
     381             : 
     382           0 :      return result;
     383             :    }
     384             : 
     385             : 
     386             : /* #line 387 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
     387             : 
     388             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
     389             : 
     390           0 : SgNode* SgModifier::copy ( SgCopyHelp& help) const
     391             :    {
     392           0 :      SgModifier* result = NULL;
     393             : 
     394             :   // printf ("Copy SgModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
     395             : 
     396             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     397             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     398             :   // The default value of the depth is 0, so after this call the depth is 1!
     399           0 :      help.incrementDepth();
     400             : 
     401             : #if 0
     402             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
     403             :   // but it is not generally true that things can only be copied once!
     404             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
     405             :   // AstAttribute* existingAttribute = const_cast<SgModifier*>(this)->attribute["copied"];
     406             :      bool previouslyCopied = const_cast<SgModifier*>(this)->attribute.exists("copied");
     407             :      if (previouslyCopied == true)
     408             :         {
     409             :           this->get_file_info()->display("Called from copy SgModifier: debug");
     410             :         }
     411             :      ROSE_ASSERT(previouslyCopied == false);
     412             : 
     413             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
     414             :      AstAttribute* newAttribute = new AstAttribute();
     415             :      ROSE_ASSERT(newAttribute != NULL);
     416             : 
     417             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
     418             :      const_cast<SgModifier*>(this)->attribute.add("copied",newAttribute);
     419             : #endif
     420             : 
     421             :   // Copy data members from base classes
     422             :  
     423             : 
     424             :   // Build an empty copy of this object (will be filled in, but 
     425             :   // the parent can't be set and must be set by the caller)
     426           0 :      result = new SgModifier(  );
     427           0 :      ROSE_ASSERT(result != NULL);
     428             : 
     429             :   // Copy data members of "this" class
     430             : 
     431             : 
     432             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
     433             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
     434             :   // fixupCopy(result,help);
     435             : 
     436             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
     437             :   // the Sg_File_Info objects that are built for the new IR nodes.
     438           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
     439           0 :      if (locatedNode != NULL)
     440             :         {
     441             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
     442           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
     443           0 :           ROSE_ASSERT(start != NULL);
     444             : #if 0
     445             :        // Debugging information
     446             :           if (start->get_parent() == NULL)
     447             :              {
     448             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     449             :              }
     450             : #endif
     451           0 :           start->set_parent(locatedNode);
     452           0 :           ROSE_ASSERT(start->get_parent() != NULL);
     453             : 
     454           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
     455             : 
     456             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
     457             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
     458             :        // ROSE_ASSERT(end != NULL);
     459           0 :           if (end == NULL)
     460             :              {
     461           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
     462             :              }
     463             :             else
     464             :              {
     465             : #if 0
     466             :             // Debugging information
     467             :                if (end->get_parent() == NULL)
     468             :                   {
     469             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     470             :                   }
     471             : #endif
     472           0 :                end->set_parent(locatedNode);
     473           0 :                ROSE_ASSERT(end->get_parent() != NULL);
     474             :              }
     475             : 
     476           0 :           SgExpression* expression = isSgExpression(result);
     477           0 :           if (isSgExpression(this) != NULL)
     478             :              {
     479           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
     480             : 
     481             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
     482           0 :                if (operatorPosition != NULL)
     483             :                   {
     484             : #if 0
     485             :                  // Debugging information
     486             :                     if (operatorPosition->get_parent() == NULL)
     487             :                        {
     488             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     489             :                        }
     490             : #endif
     491           0 :                     operatorPosition->set_parent(expression);
     492           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
     493             :                   }
     494             :              }
     495             :         }
     496             : 
     497             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
     498           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
     499           0 :      if (initializedName != NULL)
     500             :         {
     501             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
     502           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
     503           0 :           ROSE_ASSERT(start != NULL);
     504             : #if 0
     505             :        // Debugging information
     506             :           if (start->get_parent() == NULL)
     507             :              {
     508             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     509             :              }
     510             : #endif
     511           0 :           start->set_parent(initializedName);
     512           0 :           ROSE_ASSERT(start->get_parent() != NULL);
     513             : 
     514             : #if 0
     515             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
     516             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
     517             : 
     518             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
     519             :        // ROSE_ASSERT(end != NULL);
     520             :           if (end == NULL)
     521             :              {
     522             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
     523             :              }
     524             :             else
     525             :              {
     526             :                if (end->get_parent() == NULL)
     527             :                   {
     528             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     529             :                   }
     530             :                end->set_parent(initializedName);
     531             :                ROSE_ASSERT(end->get_parent() != NULL);
     532             :              }
     533             : #endif
     534             :         }
     535             : 
     536             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
     537           0 :      help.insertCopiedNodePair(this,result);
     538             : 
     539             :   // printf ("End of copy SgModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
     540             : 
     541             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     542             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     543           0 :      help.decrementDepth();
     544             : 
     545             :   // Test if this is the root of the copy!
     546           0 :      if (help.get_depth() == 0)
     547             :         {
     548             :        // This is the original calling node.
     549             : 
     550             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
     551             :        // printf ("Calling SgModifier::fixupCopy() (from root of AST being copied) \n");
     552             : #if ALT_FIXUP_COPY
     553             :        // DQ (11/7/2007): These need to be called separately (see documentation)
     554           0 :           fixupCopy_scopes (result,help);
     555           0 :           fixupCopy_symbols (result,help);
     556           0 :           fixupCopy_references (result,help);
     557             : #else
     558             :           fixupCopy(result,help);
     559             : #endif
     560             :        // Allow this to be called recursively, so accumulate the state.
     561             :        // Also, clear the state in the SgCopyHelp object.
     562             :        // help.clearState();
     563             :         }
     564             : 
     565           0 :      return result;
     566             :    }
     567             : 
     568             : 
     569             : /* #line 570 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
     570             : 
     571             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
     572             : 
     573           0 : SgNode* SgModifierNodes::copy ( SgCopyHelp& help) const
     574             :    {
     575           0 :      SgModifierNodes* result = NULL;
     576             : 
     577             :   // printf ("Copy SgModifierNodes = %p = %s \n",this,SageInterface::get_name(this).c_str());
     578             : 
     579             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     580             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     581             :   // The default value of the depth is 0, so after this call the depth is 1!
     582           0 :      help.incrementDepth();
     583             : 
     584             : #if 0
     585             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
     586             :   // but it is not generally true that things can only be copied once!
     587             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
     588             :   // AstAttribute* existingAttribute = const_cast<SgModifierNodes*>(this)->attribute["copied"];
     589             :      bool previouslyCopied = const_cast<SgModifierNodes*>(this)->attribute.exists("copied");
     590             :      if (previouslyCopied == true)
     591             :         {
     592             :           this->get_file_info()->display("Called from copy SgModifierNodes: debug");
     593             :         }
     594             :      ROSE_ASSERT(previouslyCopied == false);
     595             : 
     596             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
     597             :      AstAttribute* newAttribute = new AstAttribute();
     598             :      ROSE_ASSERT(newAttribute != NULL);
     599             : 
     600             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
     601             :      const_cast<SgModifierNodes*>(this)->attribute.add("copied",newAttribute);
     602             : #endif
     603             : 
     604             :   // Copy data members from base classes
     605             :  
     606             : 
     607             :   // Build an empty copy of this object (will be filled in, but 
     608             :   // the parent can't be set and must be set by the caller)
     609           0 :      result = new SgModifierNodes(  );
     610           0 :      ROSE_ASSERT(result != NULL);
     611             : 
     612             :   // Copy data members of "this" class
     613             :   // Copy non-constructor parameter data member (access function): nodes_copy
     614             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nodes
     615             :   // case: toBeCopied == COPY_DATA for nodes
     616           0 :      SgModifierTypePtrVector nodes_copy = p_nodes; 
     617           0 :      result->p_nodes = nodes_copy; 
     618             :   // Copy non-constructor parameter data member (access function): next_copy
     619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for next
     620             :   // case: toBeCopied == COPY_DATA for next
     621           0 :      SgModifierNodes* next_copy = p_next; 
     622           0 :      result->p_next = next_copy; 
     623             : 
     624             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
     625             : 
     626             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
     627             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
     628             :   // fixupCopy(result,help);
     629             : 
     630             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
     631             :   // the Sg_File_Info objects that are built for the new IR nodes.
     632           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
     633           0 :      if (locatedNode != NULL)
     634             :         {
     635             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
     636           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
     637           0 :           ROSE_ASSERT(start != NULL);
     638             : #if 0
     639             :        // Debugging information
     640             :           if (start->get_parent() == NULL)
     641             :              {
     642             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     643             :              }
     644             : #endif
     645           0 :           start->set_parent(locatedNode);
     646           0 :           ROSE_ASSERT(start->get_parent() != NULL);
     647             : 
     648           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
     649             : 
     650             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
     651             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
     652             :        // ROSE_ASSERT(end != NULL);
     653           0 :           if (end == NULL)
     654             :              {
     655           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
     656             :              }
     657             :             else
     658             :              {
     659             : #if 0
     660             :             // Debugging information
     661             :                if (end->get_parent() == NULL)
     662             :                   {
     663             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     664             :                   }
     665             : #endif
     666           0 :                end->set_parent(locatedNode);
     667           0 :                ROSE_ASSERT(end->get_parent() != NULL);
     668             :              }
     669             : 
     670           0 :           SgExpression* expression = isSgExpression(result);
     671           0 :           if (isSgExpression(this) != NULL)
     672             :              {
     673           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
     674             : 
     675             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
     676           0 :                if (operatorPosition != NULL)
     677             :                   {
     678             : #if 0
     679             :                  // Debugging information
     680             :                     if (operatorPosition->get_parent() == NULL)
     681             :                        {
     682             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     683             :                        }
     684             : #endif
     685           0 :                     operatorPosition->set_parent(expression);
     686           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
     687             :                   }
     688             :              }
     689             :         }
     690             : 
     691             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
     692           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
     693           0 :      if (initializedName != NULL)
     694             :         {
     695             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
     696           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
     697           0 :           ROSE_ASSERT(start != NULL);
     698             : #if 0
     699             :        // Debugging information
     700             :           if (start->get_parent() == NULL)
     701             :              {
     702             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     703             :              }
     704             : #endif
     705           0 :           start->set_parent(initializedName);
     706           0 :           ROSE_ASSERT(start->get_parent() != NULL);
     707             : 
     708             : #if 0
     709             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
     710             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
     711             : 
     712             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
     713             :        // ROSE_ASSERT(end != NULL);
     714             :           if (end == NULL)
     715             :              {
     716             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
     717             :              }
     718             :             else
     719             :              {
     720             :                if (end->get_parent() == NULL)
     721             :                   {
     722             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     723             :                   }
     724             :                end->set_parent(initializedName);
     725             :                ROSE_ASSERT(end->get_parent() != NULL);
     726             :              }
     727             : #endif
     728             :         }
     729             : 
     730             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
     731           0 :      help.insertCopiedNodePair(this,result);
     732             : 
     733             :   // printf ("End of copy SgModifierNodes = %p = %s \n",this,SageInterface::get_name(this).c_str());
     734             : 
     735             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     736             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     737           0 :      help.decrementDepth();
     738             : 
     739             :   // Test if this is the root of the copy!
     740           0 :      if (help.get_depth() == 0)
     741             :         {
     742             :        // This is the original calling node.
     743             : 
     744             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
     745             :        // printf ("Calling SgModifierNodes::fixupCopy() (from root of AST being copied) \n");
     746             : #if ALT_FIXUP_COPY
     747             :        // DQ (11/7/2007): These need to be called separately (see documentation)
     748           0 :           fixupCopy_scopes (result,help);
     749           0 :           fixupCopy_symbols (result,help);
     750           0 :           fixupCopy_references (result,help);
     751             : #else
     752             :           fixupCopy(result,help);
     753             : #endif
     754             :        // Allow this to be called recursively, so accumulate the state.
     755             :        // Also, clear the state in the SgCopyHelp object.
     756             :        // help.clearState();
     757             :         }
     758             : 
     759           0 :      return result;
     760             :    }
     761             : 
     762             : 
     763             : /* #line 764 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
     764             : 
     765             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
     766             : 
     767           0 : SgNode* SgConstVolatileModifier::copy ( SgCopyHelp& help) const
     768             :    {
     769           0 :      SgConstVolatileModifier* result = NULL;
     770             : 
     771             :   // printf ("Copy SgConstVolatileModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
     772             : 
     773             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     774             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     775             :   // The default value of the depth is 0, so after this call the depth is 1!
     776           0 :      help.incrementDepth();
     777             : 
     778             : #if 0
     779             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
     780             :   // but it is not generally true that things can only be copied once!
     781             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
     782             :   // AstAttribute* existingAttribute = const_cast<SgConstVolatileModifier*>(this)->attribute["copied"];
     783             :      bool previouslyCopied = const_cast<SgConstVolatileModifier*>(this)->attribute.exists("copied");
     784             :      if (previouslyCopied == true)
     785             :         {
     786             :           this->get_file_info()->display("Called from copy SgConstVolatileModifier: debug");
     787             :         }
     788             :      ROSE_ASSERT(previouslyCopied == false);
     789             : 
     790             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
     791             :      AstAttribute* newAttribute = new AstAttribute();
     792             :      ROSE_ASSERT(newAttribute != NULL);
     793             : 
     794             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
     795             :      const_cast<SgConstVolatileModifier*>(this)->attribute.add("copied",newAttribute);
     796             : #endif
     797             : 
     798             :   // Copy data members from base classes
     799             :  
     800             : 
     801             :   // Build an empty copy of this object (will be filled in, but 
     802             :   // the parent can't be set and must be set by the caller)
     803           0 :      result = new SgConstVolatileModifier(  );
     804           0 :      ROSE_ASSERT(result != NULL);
     805             : 
     806             :   // Copy data members of "this" class
     807             :   // Copy non-constructor parameter data member (access function): modifier_copy
     808             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
     809             :   // case: toBeCopied == COPY_DATA for modifier
     810           0 :      SgConstVolatileModifier::cv_modifier_enum modifier_copy = p_modifier; 
     811           0 :      result->p_modifier = modifier_copy; 
     812             : 
     813             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
     814             : 
     815             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
     816             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
     817             :   // fixupCopy(result,help);
     818             : 
     819             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
     820             :   // the Sg_File_Info objects that are built for the new IR nodes.
     821           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
     822           0 :      if (locatedNode != NULL)
     823             :         {
     824             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
     825           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
     826           0 :           ROSE_ASSERT(start != NULL);
     827             : #if 0
     828             :        // Debugging information
     829             :           if (start->get_parent() == NULL)
     830             :              {
     831             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     832             :              }
     833             : #endif
     834           0 :           start->set_parent(locatedNode);
     835           0 :           ROSE_ASSERT(start->get_parent() != NULL);
     836             : 
     837           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
     838             : 
     839             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
     840             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
     841             :        // ROSE_ASSERT(end != NULL);
     842           0 :           if (end == NULL)
     843             :              {
     844           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
     845             :              }
     846             :             else
     847             :              {
     848             : #if 0
     849             :             // Debugging information
     850             :                if (end->get_parent() == NULL)
     851             :                   {
     852             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     853             :                   }
     854             : #endif
     855           0 :                end->set_parent(locatedNode);
     856           0 :                ROSE_ASSERT(end->get_parent() != NULL);
     857             :              }
     858             : 
     859           0 :           SgExpression* expression = isSgExpression(result);
     860           0 :           if (isSgExpression(this) != NULL)
     861             :              {
     862           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
     863             : 
     864             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
     865           0 :                if (operatorPosition != NULL)
     866             :                   {
     867             : #if 0
     868             :                  // Debugging information
     869             :                     if (operatorPosition->get_parent() == NULL)
     870             :                        {
     871             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     872             :                        }
     873             : #endif
     874           0 :                     operatorPosition->set_parent(expression);
     875           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
     876             :                   }
     877             :              }
     878             :         }
     879             : 
     880             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
     881           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
     882           0 :      if (initializedName != NULL)
     883             :         {
     884             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
     885           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
     886           0 :           ROSE_ASSERT(start != NULL);
     887             : #if 0
     888             :        // Debugging information
     889             :           if (start->get_parent() == NULL)
     890             :              {
     891             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     892             :              }
     893             : #endif
     894           0 :           start->set_parent(initializedName);
     895           0 :           ROSE_ASSERT(start->get_parent() != NULL);
     896             : 
     897             : #if 0
     898             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
     899             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
     900             : 
     901             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
     902             :        // ROSE_ASSERT(end != NULL);
     903             :           if (end == NULL)
     904             :              {
     905             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
     906             :              }
     907             :             else
     908             :              {
     909             :                if (end->get_parent() == NULL)
     910             :                   {
     911             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
     912             :                   }
     913             :                end->set_parent(initializedName);
     914             :                ROSE_ASSERT(end->get_parent() != NULL);
     915             :              }
     916             : #endif
     917             :         }
     918             : 
     919             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
     920           0 :      help.insertCopiedNodePair(this,result);
     921             : 
     922             :   // printf ("End of copy SgConstVolatileModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
     923             : 
     924             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     925             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     926           0 :      help.decrementDepth();
     927             : 
     928             :   // Test if this is the root of the copy!
     929           0 :      if (help.get_depth() == 0)
     930             :         {
     931             :        // This is the original calling node.
     932             : 
     933             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
     934             :        // printf ("Calling SgConstVolatileModifier::fixupCopy() (from root of AST being copied) \n");
     935             : #if ALT_FIXUP_COPY
     936             :        // DQ (11/7/2007): These need to be called separately (see documentation)
     937           0 :           fixupCopy_scopes (result,help);
     938           0 :           fixupCopy_symbols (result,help);
     939           0 :           fixupCopy_references (result,help);
     940             : #else
     941             :           fixupCopy(result,help);
     942             : #endif
     943             :        // Allow this to be called recursively, so accumulate the state.
     944             :        // Also, clear the state in the SgCopyHelp object.
     945             :        // help.clearState();
     946             :         }
     947             : 
     948           0 :      return result;
     949             :    }
     950             : 
     951             : 
     952             : /* #line 953 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
     953             : 
     954             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
     955             : 
     956           0 : SgNode* SgStorageModifier::copy ( SgCopyHelp& help) const
     957             :    {
     958           0 :      SgStorageModifier* result = NULL;
     959             : 
     960             :   // printf ("Copy SgStorageModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
     961             : 
     962             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
     963             :   // used to associated old and new symbols in the original AST and the copy of the AST.
     964             :   // The default value of the depth is 0, so after this call the depth is 1!
     965           0 :      help.incrementDepth();
     966             : 
     967             : #if 0
     968             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
     969             :   // but it is not generally true that things can only be copied once!
     970             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
     971             :   // AstAttribute* existingAttribute = const_cast<SgStorageModifier*>(this)->attribute["copied"];
     972             :      bool previouslyCopied = const_cast<SgStorageModifier*>(this)->attribute.exists("copied");
     973             :      if (previouslyCopied == true)
     974             :         {
     975             :           this->get_file_info()->display("Called from copy SgStorageModifier: debug");
     976             :         }
     977             :      ROSE_ASSERT(previouslyCopied == false);
     978             : 
     979             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
     980             :      AstAttribute* newAttribute = new AstAttribute();
     981             :      ROSE_ASSERT(newAttribute != NULL);
     982             : 
     983             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
     984             :      const_cast<SgStorageModifier*>(this)->attribute.add("copied",newAttribute);
     985             : #endif
     986             : 
     987             :   // Copy data members from base classes
     988             :  
     989             : 
     990             :   // Build an empty copy of this object (will be filled in, but 
     991             :   // the parent can't be set and must be set by the caller)
     992           0 :      result = new SgStorageModifier(  );
     993           0 :      ROSE_ASSERT(result != NULL);
     994             : 
     995             :   // Copy data members of "this" class
     996             :   // Copy non-constructor parameter data member (access function): modifier_copy
     997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
     998             :   // case: toBeCopied == COPY_DATA for modifier
     999           0 :      SgStorageModifier::storage_modifier_enum modifier_copy = p_modifier; 
    1000           0 :      result->p_modifier = modifier_copy; 
    1001             :   // Copy non-constructor parameter data member (access function): thread_local_storage_copy
    1002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for thread_local_storage
    1003             :   // case: toBeCopied == COPY_DATA for thread_local_storage
    1004           0 :      bool thread_local_storage_copy = p_thread_local_storage; 
    1005           0 :      result->p_thread_local_storage = thread_local_storage_copy; 
    1006             : 
    1007             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1008             : 
    1009             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    1010             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    1011             :   // fixupCopy(result,help);
    1012             : 
    1013             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    1014             :   // the Sg_File_Info objects that are built for the new IR nodes.
    1015           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    1016           0 :      if (locatedNode != NULL)
    1017             :         {
    1018             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1019           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    1020           0 :           ROSE_ASSERT(start != NULL);
    1021             : #if 0
    1022             :        // Debugging information
    1023             :           if (start->get_parent() == NULL)
    1024             :              {
    1025             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1026             :              }
    1027             : #endif
    1028           0 :           start->set_parent(locatedNode);
    1029           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1030             : 
    1031           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    1032             : 
    1033             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    1034             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    1035             :        // ROSE_ASSERT(end != NULL);
    1036           0 :           if (end == NULL)
    1037             :              {
    1038           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    1039             :              }
    1040             :             else
    1041             :              {
    1042             : #if 0
    1043             :             // Debugging information
    1044             :                if (end->get_parent() == NULL)
    1045             :                   {
    1046             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1047             :                   }
    1048             : #endif
    1049           0 :                end->set_parent(locatedNode);
    1050           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    1051             :              }
    1052             : 
    1053           0 :           SgExpression* expression = isSgExpression(result);
    1054           0 :           if (isSgExpression(this) != NULL)
    1055             :              {
    1056           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    1057             : 
    1058             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    1059           0 :                if (operatorPosition != NULL)
    1060             :                   {
    1061             : #if 0
    1062             :                  // Debugging information
    1063             :                     if (operatorPosition->get_parent() == NULL)
    1064             :                        {
    1065             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1066             :                        }
    1067             : #endif
    1068           0 :                     operatorPosition->set_parent(expression);
    1069           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    1070             :                   }
    1071             :              }
    1072             :         }
    1073             : 
    1074             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    1075           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    1076           0 :      if (initializedName != NULL)
    1077             :         {
    1078             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1079           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    1080           0 :           ROSE_ASSERT(start != NULL);
    1081             : #if 0
    1082             :        // Debugging information
    1083             :           if (start->get_parent() == NULL)
    1084             :              {
    1085             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1086             :              }
    1087             : #endif
    1088           0 :           start->set_parent(initializedName);
    1089           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1090             : 
    1091             : #if 0
    1092             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    1093             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    1094             : 
    1095             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    1096             :        // ROSE_ASSERT(end != NULL);
    1097             :           if (end == NULL)
    1098             :              {
    1099             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    1100             :              }
    1101             :             else
    1102             :              {
    1103             :                if (end->get_parent() == NULL)
    1104             :                   {
    1105             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1106             :                   }
    1107             :                end->set_parent(initializedName);
    1108             :                ROSE_ASSERT(end->get_parent() != NULL);
    1109             :              }
    1110             : #endif
    1111             :         }
    1112             : 
    1113             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    1114           0 :      help.insertCopiedNodePair(this,result);
    1115             : 
    1116             :   // printf ("End of copy SgStorageModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1117             : 
    1118             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1119             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1120           0 :      help.decrementDepth();
    1121             : 
    1122             :   // Test if this is the root of the copy!
    1123           0 :      if (help.get_depth() == 0)
    1124             :         {
    1125             :        // This is the original calling node.
    1126             : 
    1127             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    1128             :        // printf ("Calling SgStorageModifier::fixupCopy() (from root of AST being copied) \n");
    1129             : #if ALT_FIXUP_COPY
    1130             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    1131           0 :           fixupCopy_scopes (result,help);
    1132           0 :           fixupCopy_symbols (result,help);
    1133           0 :           fixupCopy_references (result,help);
    1134             : #else
    1135             :           fixupCopy(result,help);
    1136             : #endif
    1137             :        // Allow this to be called recursively, so accumulate the state.
    1138             :        // Also, clear the state in the SgCopyHelp object.
    1139             :        // help.clearState();
    1140             :         }
    1141             : 
    1142           0 :      return result;
    1143             :    }
    1144             : 
    1145             : 
    1146             : /* #line 1147 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    1147             : 
    1148             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1149             : 
    1150           0 : SgNode* SgAccessModifier::copy ( SgCopyHelp& help) const
    1151             :    {
    1152           0 :      SgAccessModifier* result = NULL;
    1153             : 
    1154             :   // printf ("Copy SgAccessModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1155             : 
    1156             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1157             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1158             :   // The default value of the depth is 0, so after this call the depth is 1!
    1159           0 :      help.incrementDepth();
    1160             : 
    1161             : #if 0
    1162             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    1163             :   // but it is not generally true that things can only be copied once!
    1164             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    1165             :   // AstAttribute* existingAttribute = const_cast<SgAccessModifier*>(this)->attribute["copied"];
    1166             :      bool previouslyCopied = const_cast<SgAccessModifier*>(this)->attribute.exists("copied");
    1167             :      if (previouslyCopied == true)
    1168             :         {
    1169             :           this->get_file_info()->display("Called from copy SgAccessModifier: debug");
    1170             :         }
    1171             :      ROSE_ASSERT(previouslyCopied == false);
    1172             : 
    1173             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    1174             :      AstAttribute* newAttribute = new AstAttribute();
    1175             :      ROSE_ASSERT(newAttribute != NULL);
    1176             : 
    1177             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    1178             :      const_cast<SgAccessModifier*>(this)->attribute.add("copied",newAttribute);
    1179             : #endif
    1180             : 
    1181             :   // Copy data members from base classes
    1182             :  
    1183             : 
    1184             :   // Build an empty copy of this object (will be filled in, but 
    1185             :   // the parent can't be set and must be set by the caller)
    1186           0 :      result = new SgAccessModifier(  );
    1187           0 :      ROSE_ASSERT(result != NULL);
    1188             : 
    1189             :   // Copy data members of "this" class
    1190             :   // Copy non-constructor parameter data member (access function): modifier_copy
    1191             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
    1192             :   // case: toBeCopied == COPY_DATA for modifier
    1193           0 :      SgAccessModifier::access_modifier_enum modifier_copy = p_modifier; 
    1194           0 :      result->p_modifier = modifier_copy; 
    1195             : 
    1196             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1197             : 
    1198             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    1199             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    1200             :   // fixupCopy(result,help);
    1201             : 
    1202             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    1203             :   // the Sg_File_Info objects that are built for the new IR nodes.
    1204           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    1205           0 :      if (locatedNode != NULL)
    1206             :         {
    1207             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1208           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    1209           0 :           ROSE_ASSERT(start != NULL);
    1210             : #if 0
    1211             :        // Debugging information
    1212             :           if (start->get_parent() == NULL)
    1213             :              {
    1214             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1215             :              }
    1216             : #endif
    1217           0 :           start->set_parent(locatedNode);
    1218           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1219             : 
    1220           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    1221             : 
    1222             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    1223             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    1224             :        // ROSE_ASSERT(end != NULL);
    1225           0 :           if (end == NULL)
    1226             :              {
    1227           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    1228             :              }
    1229             :             else
    1230             :              {
    1231             : #if 0
    1232             :             // Debugging information
    1233             :                if (end->get_parent() == NULL)
    1234             :                   {
    1235             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1236             :                   }
    1237             : #endif
    1238           0 :                end->set_parent(locatedNode);
    1239           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    1240             :              }
    1241             : 
    1242           0 :           SgExpression* expression = isSgExpression(result);
    1243           0 :           if (isSgExpression(this) != NULL)
    1244             :              {
    1245           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    1246             : 
    1247             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    1248           0 :                if (operatorPosition != NULL)
    1249             :                   {
    1250             : #if 0
    1251             :                  // Debugging information
    1252             :                     if (operatorPosition->get_parent() == NULL)
    1253             :                        {
    1254             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1255             :                        }
    1256             : #endif
    1257           0 :                     operatorPosition->set_parent(expression);
    1258           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    1259             :                   }
    1260             :              }
    1261             :         }
    1262             : 
    1263             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    1264           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    1265           0 :      if (initializedName != NULL)
    1266             :         {
    1267             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1268           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    1269           0 :           ROSE_ASSERT(start != NULL);
    1270             : #if 0
    1271             :        // Debugging information
    1272             :           if (start->get_parent() == NULL)
    1273             :              {
    1274             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1275             :              }
    1276             : #endif
    1277           0 :           start->set_parent(initializedName);
    1278           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1279             : 
    1280             : #if 0
    1281             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    1282             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    1283             : 
    1284             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    1285             :        // ROSE_ASSERT(end != NULL);
    1286             :           if (end == NULL)
    1287             :              {
    1288             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    1289             :              }
    1290             :             else
    1291             :              {
    1292             :                if (end->get_parent() == NULL)
    1293             :                   {
    1294             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1295             :                   }
    1296             :                end->set_parent(initializedName);
    1297             :                ROSE_ASSERT(end->get_parent() != NULL);
    1298             :              }
    1299             : #endif
    1300             :         }
    1301             : 
    1302             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    1303           0 :      help.insertCopiedNodePair(this,result);
    1304             : 
    1305             :   // printf ("End of copy SgAccessModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1306             : 
    1307             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1308             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1309           0 :      help.decrementDepth();
    1310             : 
    1311             :   // Test if this is the root of the copy!
    1312           0 :      if (help.get_depth() == 0)
    1313             :         {
    1314             :        // This is the original calling node.
    1315             : 
    1316             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    1317             :        // printf ("Calling SgAccessModifier::fixupCopy() (from root of AST being copied) \n");
    1318             : #if ALT_FIXUP_COPY
    1319             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    1320           0 :           fixupCopy_scopes (result,help);
    1321           0 :           fixupCopy_symbols (result,help);
    1322           0 :           fixupCopy_references (result,help);
    1323             : #else
    1324             :           fixupCopy(result,help);
    1325             : #endif
    1326             :        // Allow this to be called recursively, so accumulate the state.
    1327             :        // Also, clear the state in the SgCopyHelp object.
    1328             :        // help.clearState();
    1329             :         }
    1330             : 
    1331           0 :      return result;
    1332             :    }
    1333             : 
    1334             : 
    1335             : /* #line 1336 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    1336             : 
    1337             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1338             : 
    1339           0 : SgNode* SgFunctionModifier::copy ( SgCopyHelp& help) const
    1340             :    {
    1341           0 :      SgFunctionModifier* result = NULL;
    1342             : 
    1343             :   // printf ("Copy SgFunctionModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1344             : 
    1345             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1346             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1347             :   // The default value of the depth is 0, so after this call the depth is 1!
    1348           0 :      help.incrementDepth();
    1349             : 
    1350             : #if 0
    1351             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    1352             :   // but it is not generally true that things can only be copied once!
    1353             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    1354             :   // AstAttribute* existingAttribute = const_cast<SgFunctionModifier*>(this)->attribute["copied"];
    1355             :      bool previouslyCopied = const_cast<SgFunctionModifier*>(this)->attribute.exists("copied");
    1356             :      if (previouslyCopied == true)
    1357             :         {
    1358             :           this->get_file_info()->display("Called from copy SgFunctionModifier: debug");
    1359             :         }
    1360             :      ROSE_ASSERT(previouslyCopied == false);
    1361             : 
    1362             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    1363             :      AstAttribute* newAttribute = new AstAttribute();
    1364             :      ROSE_ASSERT(newAttribute != NULL);
    1365             : 
    1366             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    1367             :      const_cast<SgFunctionModifier*>(this)->attribute.add("copied",newAttribute);
    1368             : #endif
    1369             : 
    1370             :   // Copy data members from base classes
    1371             :  
    1372             : 
    1373             :   // Build an empty copy of this object (will be filled in, but 
    1374             :   // the parent can't be set and must be set by the caller)
    1375           0 :      result = new SgFunctionModifier(  );
    1376           0 :      ROSE_ASSERT(result != NULL);
    1377             : 
    1378             :   // Copy data members of "this" class
    1379             :   // Copy non-constructor parameter data member (access function): modifierVector_copy
    1380             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifierVector
    1381             :   // case: toBeCopied == COPY_DATA for modifierVector
    1382           0 :      SgBitVector modifierVector_copy = p_modifierVector; 
    1383           0 :      result->p_modifierVector = modifierVector_copy; 
    1384             :   // Copy non-constructor parameter data member (access function): gnu_attribute_constructor_destructor_priority_copy
    1385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_constructor_destructor_priority
    1386             :   // case: toBeCopied == COPY_DATA for gnu_attribute_constructor_destructor_priority
    1387           0 :      unsigned long int gnu_attribute_constructor_destructor_priority_copy = p_gnu_attribute_constructor_destructor_priority; 
    1388           0 :      result->p_gnu_attribute_constructor_destructor_priority = gnu_attribute_constructor_destructor_priority_copy; 
    1389             :   // Copy non-constructor parameter data member (access function): gnu_attribute_named_weak_reference_copy
    1390             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_named_weak_reference
    1391             :   // case: toBeCopied == COPY_DATA for gnu_attribute_named_weak_reference
    1392           0 :      std::string gnu_attribute_named_weak_reference_copy = p_gnu_attribute_named_weak_reference; 
    1393           0 :      result->p_gnu_attribute_named_weak_reference = gnu_attribute_named_weak_reference_copy; 
    1394             :   // Copy non-constructor parameter data member (access function): gnu_attribute_named_alias_copy
    1395             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_named_alias
    1396             :   // case: toBeCopied == COPY_DATA for gnu_attribute_named_alias
    1397           0 :      std::string gnu_attribute_named_alias_copy = p_gnu_attribute_named_alias; 
    1398           0 :      result->p_gnu_attribute_named_alias = gnu_attribute_named_alias_copy; 
    1399             :   // Copy non-constructor parameter data member (access function): opencl_vec_type_copy
    1400             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for opencl_vec_type
    1401             :   // case: toBeCopied == COPY_DATA for opencl_vec_type
    1402           0 :      SgType * opencl_vec_type_copy = p_opencl_vec_type; 
    1403           0 :      result->p_opencl_vec_type = opencl_vec_type_copy; 
    1404             :   // Copy non-constructor parameter data member (access function): opencl_work_group_size_copy
    1405             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for opencl_work_group_size
    1406             :   // case: toBeCopied == COPY_DATA for opencl_work_group_size
    1407           0 :      SgFunctionModifier::opencl_work_group_size_t opencl_work_group_size_copy = p_opencl_work_group_size; 
    1408           0 :      result->p_opencl_work_group_size = opencl_work_group_size_copy; 
    1409             : 
    1410             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1411             : 
    1412             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    1413             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    1414             :   // fixupCopy(result,help);
    1415             : 
    1416             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    1417             :   // the Sg_File_Info objects that are built for the new IR nodes.
    1418           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    1419           0 :      if (locatedNode != NULL)
    1420             :         {
    1421             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1422           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    1423           0 :           ROSE_ASSERT(start != NULL);
    1424             : #if 0
    1425             :        // Debugging information
    1426             :           if (start->get_parent() == NULL)
    1427             :              {
    1428             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1429             :              }
    1430             : #endif
    1431           0 :           start->set_parent(locatedNode);
    1432           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1433             : 
    1434           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    1435             : 
    1436             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    1437             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    1438             :        // ROSE_ASSERT(end != NULL);
    1439           0 :           if (end == NULL)
    1440             :              {
    1441           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    1442             :              }
    1443             :             else
    1444             :              {
    1445             : #if 0
    1446             :             // Debugging information
    1447             :                if (end->get_parent() == NULL)
    1448             :                   {
    1449             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1450             :                   }
    1451             : #endif
    1452           0 :                end->set_parent(locatedNode);
    1453           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    1454             :              }
    1455             : 
    1456           0 :           SgExpression* expression = isSgExpression(result);
    1457           0 :           if (isSgExpression(this) != NULL)
    1458             :              {
    1459           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    1460             : 
    1461             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    1462           0 :                if (operatorPosition != NULL)
    1463             :                   {
    1464             : #if 0
    1465             :                  // Debugging information
    1466             :                     if (operatorPosition->get_parent() == NULL)
    1467             :                        {
    1468             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1469             :                        }
    1470             : #endif
    1471           0 :                     operatorPosition->set_parent(expression);
    1472           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    1473             :                   }
    1474             :              }
    1475             :         }
    1476             : 
    1477             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    1478           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    1479           0 :      if (initializedName != NULL)
    1480             :         {
    1481             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1482           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    1483           0 :           ROSE_ASSERT(start != NULL);
    1484             : #if 0
    1485             :        // Debugging information
    1486             :           if (start->get_parent() == NULL)
    1487             :              {
    1488             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1489             :              }
    1490             : #endif
    1491           0 :           start->set_parent(initializedName);
    1492           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1493             : 
    1494             : #if 0
    1495             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    1496             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    1497             : 
    1498             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    1499             :        // ROSE_ASSERT(end != NULL);
    1500             :           if (end == NULL)
    1501             :              {
    1502             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    1503             :              }
    1504             :             else
    1505             :              {
    1506             :                if (end->get_parent() == NULL)
    1507             :                   {
    1508             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1509             :                   }
    1510             :                end->set_parent(initializedName);
    1511             :                ROSE_ASSERT(end->get_parent() != NULL);
    1512             :              }
    1513             : #endif
    1514             :         }
    1515             : 
    1516             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    1517           0 :      help.insertCopiedNodePair(this,result);
    1518             : 
    1519             :   // printf ("End of copy SgFunctionModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1520             : 
    1521             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1522             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1523           0 :      help.decrementDepth();
    1524             : 
    1525             :   // Test if this is the root of the copy!
    1526           0 :      if (help.get_depth() == 0)
    1527             :         {
    1528             :        // This is the original calling node.
    1529             : 
    1530             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    1531             :        // printf ("Calling SgFunctionModifier::fixupCopy() (from root of AST being copied) \n");
    1532             : #if ALT_FIXUP_COPY
    1533             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    1534           0 :           fixupCopy_scopes (result,help);
    1535           0 :           fixupCopy_symbols (result,help);
    1536           0 :           fixupCopy_references (result,help);
    1537             : #else
    1538             :           fixupCopy(result,help);
    1539             : #endif
    1540             :        // Allow this to be called recursively, so accumulate the state.
    1541             :        // Also, clear the state in the SgCopyHelp object.
    1542             :        // help.clearState();
    1543             :         }
    1544             : 
    1545           0 :      return result;
    1546             :    }
    1547             : 
    1548             : 
    1549             : /* #line 1550 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    1550             : 
    1551             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1552             : 
    1553           0 : SgNode* SgUPC_AccessModifier::copy ( SgCopyHelp& help) const
    1554             :    {
    1555           0 :      SgUPC_AccessModifier* result = NULL;
    1556             : 
    1557             :   // printf ("Copy SgUPC_AccessModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1558             : 
    1559             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1560             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1561             :   // The default value of the depth is 0, so after this call the depth is 1!
    1562           0 :      help.incrementDepth();
    1563             : 
    1564             : #if 0
    1565             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    1566             :   // but it is not generally true that things can only be copied once!
    1567             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    1568             :   // AstAttribute* existingAttribute = const_cast<SgUPC_AccessModifier*>(this)->attribute["copied"];
    1569             :      bool previouslyCopied = const_cast<SgUPC_AccessModifier*>(this)->attribute.exists("copied");
    1570             :      if (previouslyCopied == true)
    1571             :         {
    1572             :           this->get_file_info()->display("Called from copy SgUPC_AccessModifier: debug");
    1573             :         }
    1574             :      ROSE_ASSERT(previouslyCopied == false);
    1575             : 
    1576             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    1577             :      AstAttribute* newAttribute = new AstAttribute();
    1578             :      ROSE_ASSERT(newAttribute != NULL);
    1579             : 
    1580             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    1581             :      const_cast<SgUPC_AccessModifier*>(this)->attribute.add("copied",newAttribute);
    1582             : #endif
    1583             : 
    1584             :   // Copy data members from base classes
    1585             :  
    1586             : 
    1587             :   // Build an empty copy of this object (will be filled in, but 
    1588             :   // the parent can't be set and must be set by the caller)
    1589           0 :      result = new SgUPC_AccessModifier(  );
    1590           0 :      ROSE_ASSERT(result != NULL);
    1591             : 
    1592             :   // Copy data members of "this" class
    1593             :   // Copy non-constructor parameter data member (access function): modifier_copy
    1594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
    1595             :   // case: toBeCopied == COPY_DATA for modifier
    1596           0 :      SgUPC_AccessModifier::upc_access_modifier_enum modifier_copy = p_modifier; 
    1597           0 :      result->p_modifier = modifier_copy; 
    1598             :   // Copy non-constructor parameter data member (access function): isShared_copy
    1599             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isShared
    1600             :   // case: toBeCopied == COPY_DATA for isShared
    1601           0 :      bool isShared_copy = p_isShared; 
    1602           0 :      result->p_isShared = isShared_copy; 
    1603             :   // Copy non-constructor parameter data member (access function): layout_copy
    1604             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for layout
    1605             :   // case: toBeCopied == COPY_DATA for layout
    1606           0 :      long layout_copy = p_layout; 
    1607           0 :      result->p_layout = layout_copy; 
    1608             : 
    1609             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1610             : 
    1611             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    1612             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    1613             :   // fixupCopy(result,help);
    1614             : 
    1615             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    1616             :   // the Sg_File_Info objects that are built for the new IR nodes.
    1617           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    1618           0 :      if (locatedNode != NULL)
    1619             :         {
    1620             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1621           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    1622           0 :           ROSE_ASSERT(start != NULL);
    1623             : #if 0
    1624             :        // Debugging information
    1625             :           if (start->get_parent() == NULL)
    1626             :              {
    1627             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1628             :              }
    1629             : #endif
    1630           0 :           start->set_parent(locatedNode);
    1631           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1632             : 
    1633           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    1634             : 
    1635             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    1636             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    1637             :        // ROSE_ASSERT(end != NULL);
    1638           0 :           if (end == NULL)
    1639             :              {
    1640           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    1641             :              }
    1642             :             else
    1643             :              {
    1644             : #if 0
    1645             :             // Debugging information
    1646             :                if (end->get_parent() == NULL)
    1647             :                   {
    1648             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1649             :                   }
    1650             : #endif
    1651           0 :                end->set_parent(locatedNode);
    1652           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    1653             :              }
    1654             : 
    1655           0 :           SgExpression* expression = isSgExpression(result);
    1656           0 :           if (isSgExpression(this) != NULL)
    1657             :              {
    1658           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    1659             : 
    1660             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    1661           0 :                if (operatorPosition != NULL)
    1662             :                   {
    1663             : #if 0
    1664             :                  // Debugging information
    1665             :                     if (operatorPosition->get_parent() == NULL)
    1666             :                        {
    1667             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1668             :                        }
    1669             : #endif
    1670           0 :                     operatorPosition->set_parent(expression);
    1671           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    1672             :                   }
    1673             :              }
    1674             :         }
    1675             : 
    1676             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    1677           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    1678           0 :      if (initializedName != NULL)
    1679             :         {
    1680             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1681           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    1682           0 :           ROSE_ASSERT(start != NULL);
    1683             : #if 0
    1684             :        // Debugging information
    1685             :           if (start->get_parent() == NULL)
    1686             :              {
    1687             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1688             :              }
    1689             : #endif
    1690           0 :           start->set_parent(initializedName);
    1691           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1692             : 
    1693             : #if 0
    1694             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    1695             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    1696             : 
    1697             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    1698             :        // ROSE_ASSERT(end != NULL);
    1699             :           if (end == NULL)
    1700             :              {
    1701             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    1702             :              }
    1703             :             else
    1704             :              {
    1705             :                if (end->get_parent() == NULL)
    1706             :                   {
    1707             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1708             :                   }
    1709             :                end->set_parent(initializedName);
    1710             :                ROSE_ASSERT(end->get_parent() != NULL);
    1711             :              }
    1712             : #endif
    1713             :         }
    1714             : 
    1715             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    1716           0 :      help.insertCopiedNodePair(this,result);
    1717             : 
    1718             :   // printf ("End of copy SgUPC_AccessModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1719             : 
    1720             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1721             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1722           0 :      help.decrementDepth();
    1723             : 
    1724             :   // Test if this is the root of the copy!
    1725           0 :      if (help.get_depth() == 0)
    1726             :         {
    1727             :        // This is the original calling node.
    1728             : 
    1729             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    1730             :        // printf ("Calling SgUPC_AccessModifier::fixupCopy() (from root of AST being copied) \n");
    1731             : #if ALT_FIXUP_COPY
    1732             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    1733           0 :           fixupCopy_scopes (result,help);
    1734           0 :           fixupCopy_symbols (result,help);
    1735           0 :           fixupCopy_references (result,help);
    1736             : #else
    1737             :           fixupCopy(result,help);
    1738             : #endif
    1739             :        // Allow this to be called recursively, so accumulate the state.
    1740             :        // Also, clear the state in the SgCopyHelp object.
    1741             :        // help.clearState();
    1742             :         }
    1743             : 
    1744           0 :      return result;
    1745             :    }
    1746             : 
    1747             : 
    1748             : /* #line 1749 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    1749             : 
    1750             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1751             : 
    1752           0 : SgNode* SgSpecialFunctionModifier::copy ( SgCopyHelp& help) const
    1753             :    {
    1754           0 :      SgSpecialFunctionModifier* result = NULL;
    1755             : 
    1756             :   // printf ("Copy SgSpecialFunctionModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1757             : 
    1758             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1759             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1760             :   // The default value of the depth is 0, so after this call the depth is 1!
    1761           0 :      help.incrementDepth();
    1762             : 
    1763             : #if 0
    1764             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    1765             :   // but it is not generally true that things can only be copied once!
    1766             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    1767             :   // AstAttribute* existingAttribute = const_cast<SgSpecialFunctionModifier*>(this)->attribute["copied"];
    1768             :      bool previouslyCopied = const_cast<SgSpecialFunctionModifier*>(this)->attribute.exists("copied");
    1769             :      if (previouslyCopied == true)
    1770             :         {
    1771             :           this->get_file_info()->display("Called from copy SgSpecialFunctionModifier: debug");
    1772             :         }
    1773             :      ROSE_ASSERT(previouslyCopied == false);
    1774             : 
    1775             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    1776             :      AstAttribute* newAttribute = new AstAttribute();
    1777             :      ROSE_ASSERT(newAttribute != NULL);
    1778             : 
    1779             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    1780             :      const_cast<SgSpecialFunctionModifier*>(this)->attribute.add("copied",newAttribute);
    1781             : #endif
    1782             : 
    1783             :   // Copy data members from base classes
    1784             :  
    1785             : 
    1786             :   // Build an empty copy of this object (will be filled in, but 
    1787             :   // the parent can't be set and must be set by the caller)
    1788           0 :      result = new SgSpecialFunctionModifier(  );
    1789           0 :      ROSE_ASSERT(result != NULL);
    1790             : 
    1791             :   // Copy data members of "this" class
    1792             :   // Copy non-constructor parameter data member (access function): modifierVector_copy
    1793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifierVector
    1794             :   // case: toBeCopied == COPY_DATA for modifierVector
    1795           0 :      SgBitVector modifierVector_copy = p_modifierVector; 
    1796           0 :      result->p_modifierVector = modifierVector_copy; 
    1797             : 
    1798             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1799             : 
    1800             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    1801             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    1802             :   // fixupCopy(result,help);
    1803             : 
    1804             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    1805             :   // the Sg_File_Info objects that are built for the new IR nodes.
    1806           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    1807           0 :      if (locatedNode != NULL)
    1808             :         {
    1809             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1810           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    1811           0 :           ROSE_ASSERT(start != NULL);
    1812             : #if 0
    1813             :        // Debugging information
    1814             :           if (start->get_parent() == NULL)
    1815             :              {
    1816             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1817             :              }
    1818             : #endif
    1819           0 :           start->set_parent(locatedNode);
    1820           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1821             : 
    1822           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    1823             : 
    1824             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    1825             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    1826             :        // ROSE_ASSERT(end != NULL);
    1827           0 :           if (end == NULL)
    1828             :              {
    1829           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    1830             :              }
    1831             :             else
    1832             :              {
    1833             : #if 0
    1834             :             // Debugging information
    1835             :                if (end->get_parent() == NULL)
    1836             :                   {
    1837             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1838             :                   }
    1839             : #endif
    1840           0 :                end->set_parent(locatedNode);
    1841           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    1842             :              }
    1843             : 
    1844           0 :           SgExpression* expression = isSgExpression(result);
    1845           0 :           if (isSgExpression(this) != NULL)
    1846             :              {
    1847           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    1848             : 
    1849             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    1850           0 :                if (operatorPosition != NULL)
    1851             :                   {
    1852             : #if 0
    1853             :                  // Debugging information
    1854             :                     if (operatorPosition->get_parent() == NULL)
    1855             :                        {
    1856             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1857             :                        }
    1858             : #endif
    1859           0 :                     operatorPosition->set_parent(expression);
    1860           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    1861             :                   }
    1862             :              }
    1863             :         }
    1864             : 
    1865             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    1866           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    1867           0 :      if (initializedName != NULL)
    1868             :         {
    1869             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1870           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    1871           0 :           ROSE_ASSERT(start != NULL);
    1872             : #if 0
    1873             :        // Debugging information
    1874             :           if (start->get_parent() == NULL)
    1875             :              {
    1876             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1877             :              }
    1878             : #endif
    1879           0 :           start->set_parent(initializedName);
    1880           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    1881             : 
    1882             : #if 0
    1883             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    1884             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    1885             : 
    1886             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    1887             :        // ROSE_ASSERT(end != NULL);
    1888             :           if (end == NULL)
    1889             :              {
    1890             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    1891             :              }
    1892             :             else
    1893             :              {
    1894             :                if (end->get_parent() == NULL)
    1895             :                   {
    1896             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    1897             :                   }
    1898             :                end->set_parent(initializedName);
    1899             :                ROSE_ASSERT(end->get_parent() != NULL);
    1900             :              }
    1901             : #endif
    1902             :         }
    1903             : 
    1904             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    1905           0 :      help.insertCopiedNodePair(this,result);
    1906             : 
    1907             :   // printf ("End of copy SgSpecialFunctionModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1908             : 
    1909             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1910             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1911           0 :      help.decrementDepth();
    1912             : 
    1913             :   // Test if this is the root of the copy!
    1914           0 :      if (help.get_depth() == 0)
    1915             :         {
    1916             :        // This is the original calling node.
    1917             : 
    1918             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    1919             :        // printf ("Calling SgSpecialFunctionModifier::fixupCopy() (from root of AST being copied) \n");
    1920             : #if ALT_FIXUP_COPY
    1921             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    1922           0 :           fixupCopy_scopes (result,help);
    1923           0 :           fixupCopy_symbols (result,help);
    1924           0 :           fixupCopy_references (result,help);
    1925             : #else
    1926             :           fixupCopy(result,help);
    1927             : #endif
    1928             :        // Allow this to be called recursively, so accumulate the state.
    1929             :        // Also, clear the state in the SgCopyHelp object.
    1930             :        // help.clearState();
    1931             :         }
    1932             : 
    1933           0 :      return result;
    1934             :    }
    1935             : 
    1936             : 
    1937             : /* #line 1938 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    1938             : 
    1939             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1940             : 
    1941           0 : SgNode* SgElaboratedTypeModifier::copy ( SgCopyHelp& help) const
    1942             :    {
    1943           0 :      SgElaboratedTypeModifier* result = NULL;
    1944             : 
    1945             :   // printf ("Copy SgElaboratedTypeModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    1946             : 
    1947             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    1948             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    1949             :   // The default value of the depth is 0, so after this call the depth is 1!
    1950           0 :      help.incrementDepth();
    1951             : 
    1952             : #if 0
    1953             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    1954             :   // but it is not generally true that things can only be copied once!
    1955             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    1956             :   // AstAttribute* existingAttribute = const_cast<SgElaboratedTypeModifier*>(this)->attribute["copied"];
    1957             :      bool previouslyCopied = const_cast<SgElaboratedTypeModifier*>(this)->attribute.exists("copied");
    1958             :      if (previouslyCopied == true)
    1959             :         {
    1960             :           this->get_file_info()->display("Called from copy SgElaboratedTypeModifier: debug");
    1961             :         }
    1962             :      ROSE_ASSERT(previouslyCopied == false);
    1963             : 
    1964             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    1965             :      AstAttribute* newAttribute = new AstAttribute();
    1966             :      ROSE_ASSERT(newAttribute != NULL);
    1967             : 
    1968             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    1969             :      const_cast<SgElaboratedTypeModifier*>(this)->attribute.add("copied",newAttribute);
    1970             : #endif
    1971             : 
    1972             :   // Copy data members from base classes
    1973             :  
    1974             : 
    1975             :   // Build an empty copy of this object (will be filled in, but 
    1976             :   // the parent can't be set and must be set by the caller)
    1977           0 :      result = new SgElaboratedTypeModifier(  );
    1978           0 :      ROSE_ASSERT(result != NULL);
    1979             : 
    1980             :   // Copy data members of "this" class
    1981             :   // Copy non-constructor parameter data member (access function): modifier_copy
    1982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
    1983             :   // case: toBeCopied == COPY_DATA for modifier
    1984           0 :      SgElaboratedTypeModifier::elaborated_type_modifier_enum modifier_copy = p_modifier; 
    1985           0 :      result->p_modifier = modifier_copy; 
    1986             : 
    1987             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    1988             : 
    1989             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    1990             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    1991             :   // fixupCopy(result,help);
    1992             : 
    1993             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    1994             :   // the Sg_File_Info objects that are built for the new IR nodes.
    1995           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    1996           0 :      if (locatedNode != NULL)
    1997             :         {
    1998             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    1999           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    2000           0 :           ROSE_ASSERT(start != NULL);
    2001             : #if 0
    2002             :        // Debugging information
    2003             :           if (start->get_parent() == NULL)
    2004             :              {
    2005             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2006             :              }
    2007             : #endif
    2008           0 :           start->set_parent(locatedNode);
    2009           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2010             : 
    2011           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    2012             : 
    2013             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    2014             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    2015             :        // ROSE_ASSERT(end != NULL);
    2016           0 :           if (end == NULL)
    2017             :              {
    2018           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    2019             :              }
    2020             :             else
    2021             :              {
    2022             : #if 0
    2023             :             // Debugging information
    2024             :                if (end->get_parent() == NULL)
    2025             :                   {
    2026             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2027             :                   }
    2028             : #endif
    2029           0 :                end->set_parent(locatedNode);
    2030           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    2031             :              }
    2032             : 
    2033           0 :           SgExpression* expression = isSgExpression(result);
    2034           0 :           if (isSgExpression(this) != NULL)
    2035             :              {
    2036           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    2037             : 
    2038             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    2039           0 :                if (operatorPosition != NULL)
    2040             :                   {
    2041             : #if 0
    2042             :                  // Debugging information
    2043             :                     if (operatorPosition->get_parent() == NULL)
    2044             :                        {
    2045             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2046             :                        }
    2047             : #endif
    2048           0 :                     operatorPosition->set_parent(expression);
    2049           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    2050             :                   }
    2051             :              }
    2052             :         }
    2053             : 
    2054             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    2055           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    2056           0 :      if (initializedName != NULL)
    2057             :         {
    2058             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    2059           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    2060           0 :           ROSE_ASSERT(start != NULL);
    2061             : #if 0
    2062             :        // Debugging information
    2063             :           if (start->get_parent() == NULL)
    2064             :              {
    2065             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2066             :              }
    2067             : #endif
    2068           0 :           start->set_parent(initializedName);
    2069           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2070             : 
    2071             : #if 0
    2072             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    2073             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    2074             : 
    2075             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    2076             :        // ROSE_ASSERT(end != NULL);
    2077             :           if (end == NULL)
    2078             :              {
    2079             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    2080             :              }
    2081             :             else
    2082             :              {
    2083             :                if (end->get_parent() == NULL)
    2084             :                   {
    2085             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2086             :                   }
    2087             :                end->set_parent(initializedName);
    2088             :                ROSE_ASSERT(end->get_parent() != NULL);
    2089             :              }
    2090             : #endif
    2091             :         }
    2092             : 
    2093             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    2094           0 :      help.insertCopiedNodePair(this,result);
    2095             : 
    2096             :   // printf ("End of copy SgElaboratedTypeModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2097             : 
    2098             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2099             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2100           0 :      help.decrementDepth();
    2101             : 
    2102             :   // Test if this is the root of the copy!
    2103           0 :      if (help.get_depth() == 0)
    2104             :         {
    2105             :        // This is the original calling node.
    2106             : 
    2107             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    2108             :        // printf ("Calling SgElaboratedTypeModifier::fixupCopy() (from root of AST being copied) \n");
    2109             : #if ALT_FIXUP_COPY
    2110             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    2111           0 :           fixupCopy_scopes (result,help);
    2112           0 :           fixupCopy_symbols (result,help);
    2113           0 :           fixupCopy_references (result,help);
    2114             : #else
    2115             :           fixupCopy(result,help);
    2116             : #endif
    2117             :        // Allow this to be called recursively, so accumulate the state.
    2118             :        // Also, clear the state in the SgCopyHelp object.
    2119             :        // help.clearState();
    2120             :         }
    2121             : 
    2122           0 :      return result;
    2123             :    }
    2124             : 
    2125             : 
    2126             : /* #line 2127 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    2127             : 
    2128             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    2129             : 
    2130           0 : SgNode* SgLinkageModifier::copy ( SgCopyHelp& help) const
    2131             :    {
    2132           0 :      SgLinkageModifier* result = NULL;
    2133             : 
    2134             :   // printf ("Copy SgLinkageModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2135             : 
    2136             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2137             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2138             :   // The default value of the depth is 0, so after this call the depth is 1!
    2139           0 :      help.incrementDepth();
    2140             : 
    2141             : #if 0
    2142             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    2143             :   // but it is not generally true that things can only be copied once!
    2144             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    2145             :   // AstAttribute* existingAttribute = const_cast<SgLinkageModifier*>(this)->attribute["copied"];
    2146             :      bool previouslyCopied = const_cast<SgLinkageModifier*>(this)->attribute.exists("copied");
    2147             :      if (previouslyCopied == true)
    2148             :         {
    2149             :           this->get_file_info()->display("Called from copy SgLinkageModifier: debug");
    2150             :         }
    2151             :      ROSE_ASSERT(previouslyCopied == false);
    2152             : 
    2153             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    2154             :      AstAttribute* newAttribute = new AstAttribute();
    2155             :      ROSE_ASSERT(newAttribute != NULL);
    2156             : 
    2157             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    2158             :      const_cast<SgLinkageModifier*>(this)->attribute.add("copied",newAttribute);
    2159             : #endif
    2160             : 
    2161             :   // Copy data members from base classes
    2162             :  
    2163             : 
    2164             :   // Build an empty copy of this object (will be filled in, but 
    2165             :   // the parent can't be set and must be set by the caller)
    2166           0 :      result = new SgLinkageModifier(  );
    2167           0 :      ROSE_ASSERT(result != NULL);
    2168             : 
    2169             :   // Copy data members of "this" class
    2170             :   // Copy non-constructor parameter data member (access function): modifier_copy
    2171             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
    2172             :   // case: toBeCopied == COPY_DATA for modifier
    2173           0 :      SgLinkageModifier::linkage_modifier_enum modifier_copy = p_modifier; 
    2174           0 :      result->p_modifier = modifier_copy; 
    2175             : 
    2176             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    2177             : 
    2178             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    2179             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    2180             :   // fixupCopy(result,help);
    2181             : 
    2182             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    2183             :   // the Sg_File_Info objects that are built for the new IR nodes.
    2184           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    2185           0 :      if (locatedNode != NULL)
    2186             :         {
    2187             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    2188           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    2189           0 :           ROSE_ASSERT(start != NULL);
    2190             : #if 0
    2191             :        // Debugging information
    2192             :           if (start->get_parent() == NULL)
    2193             :              {
    2194             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2195             :              }
    2196             : #endif
    2197           0 :           start->set_parent(locatedNode);
    2198           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2199             : 
    2200           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    2201             : 
    2202             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    2203             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    2204             :        // ROSE_ASSERT(end != NULL);
    2205           0 :           if (end == NULL)
    2206             :              {
    2207           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    2208             :              }
    2209             :             else
    2210             :              {
    2211             : #if 0
    2212             :             // Debugging information
    2213             :                if (end->get_parent() == NULL)
    2214             :                   {
    2215             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2216             :                   }
    2217             : #endif
    2218           0 :                end->set_parent(locatedNode);
    2219           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    2220             :              }
    2221             : 
    2222           0 :           SgExpression* expression = isSgExpression(result);
    2223           0 :           if (isSgExpression(this) != NULL)
    2224             :              {
    2225           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    2226             : 
    2227             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    2228           0 :                if (operatorPosition != NULL)
    2229             :                   {
    2230             : #if 0
    2231             :                  // Debugging information
    2232             :                     if (operatorPosition->get_parent() == NULL)
    2233             :                        {
    2234             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2235             :                        }
    2236             : #endif
    2237           0 :                     operatorPosition->set_parent(expression);
    2238           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    2239             :                   }
    2240             :              }
    2241             :         }
    2242             : 
    2243             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    2244           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    2245           0 :      if (initializedName != NULL)
    2246             :         {
    2247             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    2248           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    2249           0 :           ROSE_ASSERT(start != NULL);
    2250             : #if 0
    2251             :        // Debugging information
    2252             :           if (start->get_parent() == NULL)
    2253             :              {
    2254             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2255             :              }
    2256             : #endif
    2257           0 :           start->set_parent(initializedName);
    2258           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2259             : 
    2260             : #if 0
    2261             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    2262             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    2263             : 
    2264             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    2265             :        // ROSE_ASSERT(end != NULL);
    2266             :           if (end == NULL)
    2267             :              {
    2268             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    2269             :              }
    2270             :             else
    2271             :              {
    2272             :                if (end->get_parent() == NULL)
    2273             :                   {
    2274             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2275             :                   }
    2276             :                end->set_parent(initializedName);
    2277             :                ROSE_ASSERT(end->get_parent() != NULL);
    2278             :              }
    2279             : #endif
    2280             :         }
    2281             : 
    2282             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    2283           0 :      help.insertCopiedNodePair(this,result);
    2284             : 
    2285             :   // printf ("End of copy SgLinkageModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2286             : 
    2287             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2288             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2289           0 :      help.decrementDepth();
    2290             : 
    2291             :   // Test if this is the root of the copy!
    2292           0 :      if (help.get_depth() == 0)
    2293             :         {
    2294             :        // This is the original calling node.
    2295             : 
    2296             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    2297             :        // printf ("Calling SgLinkageModifier::fixupCopy() (from root of AST being copied) \n");
    2298             : #if ALT_FIXUP_COPY
    2299             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    2300           0 :           fixupCopy_scopes (result,help);
    2301           0 :           fixupCopy_symbols (result,help);
    2302           0 :           fixupCopy_references (result,help);
    2303             : #else
    2304             :           fixupCopy(result,help);
    2305             : #endif
    2306             :        // Allow this to be called recursively, so accumulate the state.
    2307             :        // Also, clear the state in the SgCopyHelp object.
    2308             :        // help.clearState();
    2309             :         }
    2310             : 
    2311           0 :      return result;
    2312             :    }
    2313             : 
    2314             : 
    2315             : /* #line 2316 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    2316             : 
    2317             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    2318             : 
    2319           0 : SgNode* SgBaseClassModifier::copy ( SgCopyHelp& help) const
    2320             :    {
    2321           0 :      SgBaseClassModifier* result = NULL;
    2322             : 
    2323             :   // printf ("Copy SgBaseClassModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2324             : 
    2325             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2326             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2327             :   // The default value of the depth is 0, so after this call the depth is 1!
    2328           0 :      help.incrementDepth();
    2329             : 
    2330             : #if 0
    2331             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    2332             :   // but it is not generally true that things can only be copied once!
    2333             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    2334             :   // AstAttribute* existingAttribute = const_cast<SgBaseClassModifier*>(this)->attribute["copied"];
    2335             :      bool previouslyCopied = const_cast<SgBaseClassModifier*>(this)->attribute.exists("copied");
    2336             :      if (previouslyCopied == true)
    2337             :         {
    2338             :           this->get_file_info()->display("Called from copy SgBaseClassModifier: debug");
    2339             :         }
    2340             :      ROSE_ASSERT(previouslyCopied == false);
    2341             : 
    2342             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    2343             :      AstAttribute* newAttribute = new AstAttribute();
    2344             :      ROSE_ASSERT(newAttribute != NULL);
    2345             : 
    2346             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    2347             :      const_cast<SgBaseClassModifier*>(this)->attribute.add("copied",newAttribute);
    2348             : #endif
    2349             : 
    2350             :   // Copy data members from base classes
    2351             :  
    2352             : 
    2353             :   // Build an empty copy of this object (will be filled in, but 
    2354             :   // the parent can't be set and must be set by the caller)
    2355           0 :      result = new SgBaseClassModifier(  );
    2356           0 :      ROSE_ASSERT(result != NULL);
    2357             : 
    2358             :   // Copy data members of "this" class
    2359             :   // Copy non-constructor parameter data member (access function): modifier_copy
    2360             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
    2361             :   // case: toBeCopied == COPY_DATA for modifier
    2362           0 :      SgBaseClassModifier::baseclass_modifier_enum modifier_copy = p_modifier; 
    2363           0 :      result->p_modifier = modifier_copy; 
    2364             :   // Copy non-constructor parameter data member (no access function): result->p_accessModifier
    2365             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for accessModifier
    2366             :   // case: toBeCopied == COPY_DATA for accessModifier
    2367           0 :      SgAccessModifier accessModifier_copy = p_accessModifier; 
    2368           0 :      result->p_accessModifier = accessModifier_copy; 
    2369             : 
    2370             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    2371             : 
    2372             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    2373             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    2374             :   // fixupCopy(result,help);
    2375             : 
    2376             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    2377             :   // the Sg_File_Info objects that are built for the new IR nodes.
    2378           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    2379           0 :      if (locatedNode != NULL)
    2380             :         {
    2381             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    2382           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    2383           0 :           ROSE_ASSERT(start != NULL);
    2384             : #if 0
    2385             :        // Debugging information
    2386             :           if (start->get_parent() == NULL)
    2387             :              {
    2388             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2389             :              }
    2390             : #endif
    2391           0 :           start->set_parent(locatedNode);
    2392           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2393             : 
    2394           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    2395             : 
    2396             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    2397             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    2398             :        // ROSE_ASSERT(end != NULL);
    2399           0 :           if (end == NULL)
    2400             :              {
    2401           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    2402             :              }
    2403             :             else
    2404             :              {
    2405             : #if 0
    2406             :             // Debugging information
    2407             :                if (end->get_parent() == NULL)
    2408             :                   {
    2409             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2410             :                   }
    2411             : #endif
    2412           0 :                end->set_parent(locatedNode);
    2413           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    2414             :              }
    2415             : 
    2416           0 :           SgExpression* expression = isSgExpression(result);
    2417           0 :           if (isSgExpression(this) != NULL)
    2418             :              {
    2419           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    2420             : 
    2421             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    2422           0 :                if (operatorPosition != NULL)
    2423             :                   {
    2424             : #if 0
    2425             :                  // Debugging information
    2426             :                     if (operatorPosition->get_parent() == NULL)
    2427             :                        {
    2428             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2429             :                        }
    2430             : #endif
    2431           0 :                     operatorPosition->set_parent(expression);
    2432           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    2433             :                   }
    2434             :              }
    2435             :         }
    2436             : 
    2437             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    2438           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    2439           0 :      if (initializedName != NULL)
    2440             :         {
    2441             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    2442           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    2443           0 :           ROSE_ASSERT(start != NULL);
    2444             : #if 0
    2445             :        // Debugging information
    2446             :           if (start->get_parent() == NULL)
    2447             :              {
    2448             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2449             :              }
    2450             : #endif
    2451           0 :           start->set_parent(initializedName);
    2452           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2453             : 
    2454             : #if 0
    2455             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    2456             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    2457             : 
    2458             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    2459             :        // ROSE_ASSERT(end != NULL);
    2460             :           if (end == NULL)
    2461             :              {
    2462             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    2463             :              }
    2464             :             else
    2465             :              {
    2466             :                if (end->get_parent() == NULL)
    2467             :                   {
    2468             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2469             :                   }
    2470             :                end->set_parent(initializedName);
    2471             :                ROSE_ASSERT(end->get_parent() != NULL);
    2472             :              }
    2473             : #endif
    2474             :         }
    2475             : 
    2476             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    2477           0 :      help.insertCopiedNodePair(this,result);
    2478             : 
    2479             :   // printf ("End of copy SgBaseClassModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2480             : 
    2481             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2482             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2483           0 :      help.decrementDepth();
    2484             : 
    2485             :   // Test if this is the root of the copy!
    2486           0 :      if (help.get_depth() == 0)
    2487             :         {
    2488             :        // This is the original calling node.
    2489             : 
    2490             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    2491             :        // printf ("Calling SgBaseClassModifier::fixupCopy() (from root of AST being copied) \n");
    2492             : #if ALT_FIXUP_COPY
    2493             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    2494           0 :           fixupCopy_scopes (result,help);
    2495           0 :           fixupCopy_symbols (result,help);
    2496           0 :           fixupCopy_references (result,help);
    2497             : #else
    2498             :           fixupCopy(result,help);
    2499             : #endif
    2500             :        // Allow this to be called recursively, so accumulate the state.
    2501             :        // Also, clear the state in the SgCopyHelp object.
    2502             :        // help.clearState();
    2503             :         }
    2504             : 
    2505           0 :      return result;
    2506             :    }
    2507             : 
    2508             : 
    2509             : /* #line 2510 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    2510             : 
    2511             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    2512             : 
    2513           0 : SgNode* SgStructureModifier::copy ( SgCopyHelp& help) const
    2514             :    {
    2515           0 :      SgStructureModifier* result = NULL;
    2516             : 
    2517             :   // printf ("Copy SgStructureModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2518             : 
    2519             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2520             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2521             :   // The default value of the depth is 0, so after this call the depth is 1!
    2522           0 :      help.incrementDepth();
    2523             : 
    2524             : #if 0
    2525             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    2526             :   // but it is not generally true that things can only be copied once!
    2527             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    2528             :   // AstAttribute* existingAttribute = const_cast<SgStructureModifier*>(this)->attribute["copied"];
    2529             :      bool previouslyCopied = const_cast<SgStructureModifier*>(this)->attribute.exists("copied");
    2530             :      if (previouslyCopied == true)
    2531             :         {
    2532             :           this->get_file_info()->display("Called from copy SgStructureModifier: debug");
    2533             :         }
    2534             :      ROSE_ASSERT(previouslyCopied == false);
    2535             : 
    2536             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    2537             :      AstAttribute* newAttribute = new AstAttribute();
    2538             :      ROSE_ASSERT(newAttribute != NULL);
    2539             : 
    2540             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    2541             :      const_cast<SgStructureModifier*>(this)->attribute.add("copied",newAttribute);
    2542             : #endif
    2543             : 
    2544             :   // Copy data members from base classes
    2545             :  
    2546             : 
    2547             :   // Build an empty copy of this object (will be filled in, but 
    2548             :   // the parent can't be set and must be set by the caller)
    2549           0 :      result = new SgStructureModifier(  );
    2550           0 :      ROSE_ASSERT(result != NULL);
    2551             : 
    2552             :   // Copy data members of "this" class
    2553             :   // Copy non-constructor parameter data member (access function): modifier_copy
    2554             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
    2555             :   // case: toBeCopied == COPY_DATA for modifier
    2556           0 :      SgStructureModifier::jovial_structure_modifier_enum modifier_copy = p_modifier; 
    2557           0 :      result->p_modifier = modifier_copy; 
    2558             :   // Copy non-constructor parameter data member (access function): bits_per_entry_copy
    2559             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for bits_per_entry
    2560             :   // case: toBeCopied == COPY_DATA for bits_per_entry
    2561           0 :      int bits_per_entry_copy = p_bits_per_entry; 
    2562           0 :      result->p_bits_per_entry = bits_per_entry_copy; 
    2563             : 
    2564             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    2565             : 
    2566             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    2567             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    2568             :   // fixupCopy(result,help);
    2569             : 
    2570             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    2571             :   // the Sg_File_Info objects that are built for the new IR nodes.
    2572           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    2573           0 :      if (locatedNode != NULL)
    2574             :         {
    2575             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    2576           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    2577           0 :           ROSE_ASSERT(start != NULL);
    2578             : #if 0
    2579             :        // Debugging information
    2580             :           if (start->get_parent() == NULL)
    2581             :              {
    2582             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2583             :              }
    2584             : #endif
    2585           0 :           start->set_parent(locatedNode);
    2586           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2587             : 
    2588           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    2589             : 
    2590             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    2591             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    2592             :        // ROSE_ASSERT(end != NULL);
    2593           0 :           if (end == NULL)
    2594             :              {
    2595           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    2596             :              }
    2597             :             else
    2598             :              {
    2599             : #if 0
    2600             :             // Debugging information
    2601             :                if (end->get_parent() == NULL)
    2602             :                   {
    2603             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2604             :                   }
    2605             : #endif
    2606           0 :                end->set_parent(locatedNode);
    2607           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    2608             :              }
    2609             : 
    2610           0 :           SgExpression* expression = isSgExpression(result);
    2611           0 :           if (isSgExpression(this) != NULL)
    2612             :              {
    2613           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    2614             : 
    2615             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    2616           0 :                if (operatorPosition != NULL)
    2617             :                   {
    2618             : #if 0
    2619             :                  // Debugging information
    2620             :                     if (operatorPosition->get_parent() == NULL)
    2621             :                        {
    2622             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2623             :                        }
    2624             : #endif
    2625           0 :                     operatorPosition->set_parent(expression);
    2626           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    2627             :                   }
    2628             :              }
    2629             :         }
    2630             : 
    2631             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    2632           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    2633           0 :      if (initializedName != NULL)
    2634             :         {
    2635             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    2636           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    2637           0 :           ROSE_ASSERT(start != NULL);
    2638             : #if 0
    2639             :        // Debugging information
    2640             :           if (start->get_parent() == NULL)
    2641             :              {
    2642             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2643             :              }
    2644             : #endif
    2645           0 :           start->set_parent(initializedName);
    2646           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2647             : 
    2648             : #if 0
    2649             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    2650             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    2651             : 
    2652             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    2653             :        // ROSE_ASSERT(end != NULL);
    2654             :           if (end == NULL)
    2655             :              {
    2656             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    2657             :              }
    2658             :             else
    2659             :              {
    2660             :                if (end->get_parent() == NULL)
    2661             :                   {
    2662             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2663             :                   }
    2664             :                end->set_parent(initializedName);
    2665             :                ROSE_ASSERT(end->get_parent() != NULL);
    2666             :              }
    2667             : #endif
    2668             :         }
    2669             : 
    2670             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    2671           0 :      help.insertCopiedNodePair(this,result);
    2672             : 
    2673             :   // printf ("End of copy SgStructureModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2674             : 
    2675             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2676             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2677           0 :      help.decrementDepth();
    2678             : 
    2679             :   // Test if this is the root of the copy!
    2680           0 :      if (help.get_depth() == 0)
    2681             :         {
    2682             :        // This is the original calling node.
    2683             : 
    2684             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    2685             :        // printf ("Calling SgStructureModifier::fixupCopy() (from root of AST being copied) \n");
    2686             : #if ALT_FIXUP_COPY
    2687             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    2688           0 :           fixupCopy_scopes (result,help);
    2689           0 :           fixupCopy_symbols (result,help);
    2690           0 :           fixupCopy_references (result,help);
    2691             : #else
    2692             :           fixupCopy(result,help);
    2693             : #endif
    2694             :        // Allow this to be called recursively, so accumulate the state.
    2695             :        // Also, clear the state in the SgCopyHelp object.
    2696             :        // help.clearState();
    2697             :         }
    2698             : 
    2699           0 :      return result;
    2700             :    }
    2701             : 
    2702             : 
    2703             : /* #line 2704 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    2704             : 
    2705             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    2706             : 
    2707           0 : SgNode* SgTypeModifier::copy ( SgCopyHelp& help) const
    2708             :    {
    2709           0 :      SgTypeModifier* result = NULL;
    2710             : 
    2711             :   // printf ("Copy SgTypeModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2712             : 
    2713             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2714             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2715             :   // The default value of the depth is 0, so after this call the depth is 1!
    2716           0 :      help.incrementDepth();
    2717             : 
    2718             : #if 0
    2719             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    2720             :   // but it is not generally true that things can only be copied once!
    2721             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    2722             :   // AstAttribute* existingAttribute = const_cast<SgTypeModifier*>(this)->attribute["copied"];
    2723             :      bool previouslyCopied = const_cast<SgTypeModifier*>(this)->attribute.exists("copied");
    2724             :      if (previouslyCopied == true)
    2725             :         {
    2726             :           this->get_file_info()->display("Called from copy SgTypeModifier: debug");
    2727             :         }
    2728             :      ROSE_ASSERT(previouslyCopied == false);
    2729             : 
    2730             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    2731             :      AstAttribute* newAttribute = new AstAttribute();
    2732             :      ROSE_ASSERT(newAttribute != NULL);
    2733             : 
    2734             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    2735             :      const_cast<SgTypeModifier*>(this)->attribute.add("copied",newAttribute);
    2736             : #endif
    2737             : 
    2738             :   // Copy data members from base classes
    2739             :  
    2740             : 
    2741             :   // Build an empty copy of this object (will be filled in, but 
    2742             :   // the parent can't be set and must be set by the caller)
    2743           0 :      result = new SgTypeModifier(  );
    2744           0 :      ROSE_ASSERT(result != NULL);
    2745             : 
    2746             :   // Copy data members of "this" class
    2747             :   // Copy non-constructor parameter data member (access function): modifierVector_copy
    2748             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifierVector
    2749             :   // case: toBeCopied == COPY_DATA for modifierVector
    2750           0 :      SgBitVector modifierVector_copy = p_modifierVector; 
    2751           0 :      result->p_modifierVector = modifierVector_copy; 
    2752             :   // Copy non-constructor parameter data member (no access function): result->p_upcModifier
    2753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upcModifier
    2754             :   // case: toBeCopied == COPY_DATA for upcModifier
    2755           0 :      SgUPC_AccessModifier upcModifier_copy = p_upcModifier; 
    2756           0 :      result->p_upcModifier = upcModifier_copy; 
    2757             :   // Copy non-constructor parameter data member (no access function): result->p_structureModifier
    2758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for structureModifier
    2759             :   // case: toBeCopied == COPY_DATA for structureModifier
    2760           0 :      SgStructureModifier structureModifier_copy = p_structureModifier; 
    2761           0 :      result->p_structureModifier = structureModifier_copy; 
    2762             :   // Copy non-constructor parameter data member (no access function): result->p_constVolatileModifier
    2763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for constVolatileModifier
    2764             :   // case: toBeCopied == COPY_DATA for constVolatileModifier
    2765           0 :      SgConstVolatileModifier constVolatileModifier_copy = p_constVolatileModifier; 
    2766           0 :      result->p_constVolatileModifier = constVolatileModifier_copy; 
    2767             :   // Copy non-constructor parameter data member (no access function): result->p_elaboratedTypeModifier
    2768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for elaboratedTypeModifier
    2769             :   // case: toBeCopied == COPY_DATA for elaboratedTypeModifier
    2770           0 :      SgElaboratedTypeModifier elaboratedTypeModifier_copy = p_elaboratedTypeModifier; 
    2771           0 :      result->p_elaboratedTypeModifier = elaboratedTypeModifier_copy; 
    2772             :   // Copy non-constructor parameter data member (no access function): result->p_gnu_extension_machine_mode
    2773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_machine_mode
    2774             :   // case: toBeCopied == COPY_DATA for gnu_extension_machine_mode
    2775           0 :      SgTypeModifier::gnu_extension_machine_mode_enum gnu_extension_machine_mode_copy = p_gnu_extension_machine_mode; 
    2776           0 :      result->p_gnu_extension_machine_mode = gnu_extension_machine_mode_copy; 
    2777             :   // Copy non-constructor parameter data member (access function): gnu_attribute_alignment_copy
    2778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_alignment
    2779             :   // case: toBeCopied == COPY_DATA for gnu_attribute_alignment
    2780           0 :      int gnu_attribute_alignment_copy = p_gnu_attribute_alignment; 
    2781           0 :      result->p_gnu_attribute_alignment = gnu_attribute_alignment_copy; 
    2782             :   // Copy non-constructor parameter data member (access function): gnu_attribute_sentinel_copy
    2783             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_sentinel
    2784             :   // case: toBeCopied == COPY_DATA for gnu_attribute_sentinel
    2785           0 :      long gnu_attribute_sentinel_copy = p_gnu_attribute_sentinel; 
    2786           0 :      result->p_gnu_attribute_sentinel = gnu_attribute_sentinel_copy; 
    2787             :   // Copy non-constructor parameter data member (access function): address_space_value_copy
    2788             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for address_space_value
    2789             :   // case: toBeCopied == COPY_DATA for address_space_value
    2790           0 :      unsigned address_space_value_copy = p_address_space_value; 
    2791           0 :      result->p_address_space_value = address_space_value_copy; 
    2792             :   // Copy non-constructor parameter data member (access function): vector_size_copy
    2793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for vector_size
    2794             :   // case: toBeCopied == COPY_DATA for vector_size
    2795           0 :      unsigned vector_size_copy = p_vector_size; 
    2796           0 :      result->p_vector_size = vector_size_copy; 
    2797             : 
    2798             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    2799             : 
    2800             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    2801             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    2802             :   // fixupCopy(result,help);
    2803             : 
    2804             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    2805             :   // the Sg_File_Info objects that are built for the new IR nodes.
    2806           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    2807           0 :      if (locatedNode != NULL)
    2808             :         {
    2809             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    2810           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    2811           0 :           ROSE_ASSERT(start != NULL);
    2812             : #if 0
    2813             :        // Debugging information
    2814             :           if (start->get_parent() == NULL)
    2815             :              {
    2816             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2817             :              }
    2818             : #endif
    2819           0 :           start->set_parent(locatedNode);
    2820           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2821             : 
    2822           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    2823             : 
    2824             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    2825             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    2826             :        // ROSE_ASSERT(end != NULL);
    2827           0 :           if (end == NULL)
    2828             :              {
    2829           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    2830             :              }
    2831             :             else
    2832             :              {
    2833             : #if 0
    2834             :             // Debugging information
    2835             :                if (end->get_parent() == NULL)
    2836             :                   {
    2837             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2838             :                   }
    2839             : #endif
    2840           0 :                end->set_parent(locatedNode);
    2841           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    2842             :              }
    2843             : 
    2844           0 :           SgExpression* expression = isSgExpression(result);
    2845           0 :           if (isSgExpression(this) != NULL)
    2846             :              {
    2847           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    2848             : 
    2849             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    2850           0 :                if (operatorPosition != NULL)
    2851             :                   {
    2852             : #if 0
    2853             :                  // Debugging information
    2854             :                     if (operatorPosition->get_parent() == NULL)
    2855             :                        {
    2856             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2857             :                        }
    2858             : #endif
    2859           0 :                     operatorPosition->set_parent(expression);
    2860           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    2861             :                   }
    2862             :              }
    2863             :         }
    2864             : 
    2865             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    2866           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    2867           0 :      if (initializedName != NULL)
    2868             :         {
    2869             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    2870           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    2871           0 :           ROSE_ASSERT(start != NULL);
    2872             : #if 0
    2873             :        // Debugging information
    2874             :           if (start->get_parent() == NULL)
    2875             :              {
    2876             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2877             :              }
    2878             : #endif
    2879           0 :           start->set_parent(initializedName);
    2880           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    2881             : 
    2882             : #if 0
    2883             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    2884             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    2885             : 
    2886             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    2887             :        // ROSE_ASSERT(end != NULL);
    2888             :           if (end == NULL)
    2889             :              {
    2890             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    2891             :              }
    2892             :             else
    2893             :              {
    2894             :                if (end->get_parent() == NULL)
    2895             :                   {
    2896             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    2897             :                   }
    2898             :                end->set_parent(initializedName);
    2899             :                ROSE_ASSERT(end->get_parent() != NULL);
    2900             :              }
    2901             : #endif
    2902             :         }
    2903             : 
    2904             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    2905           0 :      help.insertCopiedNodePair(this,result);
    2906             : 
    2907             :   // printf ("End of copy SgTypeModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2908             : 
    2909             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2910             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2911           0 :      help.decrementDepth();
    2912             : 
    2913             :   // Test if this is the root of the copy!
    2914           0 :      if (help.get_depth() == 0)
    2915             :         {
    2916             :        // This is the original calling node.
    2917             : 
    2918             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    2919             :        // printf ("Calling SgTypeModifier::fixupCopy() (from root of AST being copied) \n");
    2920             : #if ALT_FIXUP_COPY
    2921             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    2922           0 :           fixupCopy_scopes (result,help);
    2923           0 :           fixupCopy_symbols (result,help);
    2924           0 :           fixupCopy_references (result,help);
    2925             : #else
    2926             :           fixupCopy(result,help);
    2927             : #endif
    2928             :        // Allow this to be called recursively, so accumulate the state.
    2929             :        // Also, clear the state in the SgCopyHelp object.
    2930             :        // help.clearState();
    2931             :         }
    2932             : 
    2933           0 :      return result;
    2934             :    }
    2935             : 
    2936             : 
    2937             : /* #line 2938 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    2938             : 
    2939             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    2940             : 
    2941           0 : SgNode* SgDeclarationModifier::copy ( SgCopyHelp& help) const
    2942             :    {
    2943           0 :      SgDeclarationModifier* result = NULL;
    2944             : 
    2945             :   // printf ("Copy SgDeclarationModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    2946             : 
    2947             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    2948             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    2949             :   // The default value of the depth is 0, so after this call the depth is 1!
    2950           0 :      help.incrementDepth();
    2951             : 
    2952             : #if 0
    2953             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    2954             :   // but it is not generally true that things can only be copied once!
    2955             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    2956             :   // AstAttribute* existingAttribute = const_cast<SgDeclarationModifier*>(this)->attribute["copied"];
    2957             :      bool previouslyCopied = const_cast<SgDeclarationModifier*>(this)->attribute.exists("copied");
    2958             :      if (previouslyCopied == true)
    2959             :         {
    2960             :           this->get_file_info()->display("Called from copy SgDeclarationModifier: debug");
    2961             :         }
    2962             :      ROSE_ASSERT(previouslyCopied == false);
    2963             : 
    2964             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    2965             :      AstAttribute* newAttribute = new AstAttribute();
    2966             :      ROSE_ASSERT(newAttribute != NULL);
    2967             : 
    2968             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    2969             :      const_cast<SgDeclarationModifier*>(this)->attribute.add("copied",newAttribute);
    2970             : #endif
    2971             : 
    2972             :   // Copy data members from base classes
    2973             :  
    2974             : 
    2975             :   // Build an empty copy of this object (will be filled in, but 
    2976             :   // the parent can't be set and must be set by the caller)
    2977           0 :      result = new SgDeclarationModifier(  );
    2978           0 :      ROSE_ASSERT(result != NULL);
    2979             : 
    2980             :   // Copy data members of "this" class
    2981             :   // Copy non-constructor parameter data member (access function): modifierVector_copy
    2982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifierVector
    2983             :   // case: toBeCopied == COPY_DATA for modifierVector
    2984           0 :      SgBitVector modifierVector_copy = p_modifierVector; 
    2985           0 :      result->p_modifierVector = modifierVector_copy; 
    2986             :   // Copy non-constructor parameter data member (no access function): result->p_typeModifier
    2987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeModifier
    2988             :   // case: toBeCopied == COPY_DATA for typeModifier
    2989           0 :      SgTypeModifier typeModifier_copy = p_typeModifier; 
    2990           0 :      result->p_typeModifier = typeModifier_copy; 
    2991             :   // Copy non-constructor parameter data member (no access function): result->p_accessModifier
    2992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for accessModifier
    2993             :   // case: toBeCopied == COPY_DATA for accessModifier
    2994           0 :      SgAccessModifier accessModifier_copy = p_accessModifier; 
    2995           0 :      result->p_accessModifier = accessModifier_copy; 
    2996             :   // Copy non-constructor parameter data member (no access function): result->p_storageModifier
    2997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for storageModifier
    2998             :   // case: toBeCopied == COPY_DATA for storageModifier
    2999           0 :      SgStorageModifier storageModifier_copy = p_storageModifier; 
    3000           0 :      result->p_storageModifier = storageModifier_copy; 
    3001             :   // Copy non-constructor parameter data member (access function): gnu_attribute_section_name_copy
    3002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_section_name
    3003             :   // case: toBeCopied == COPY_DATA for gnu_attribute_section_name
    3004           0 :      std::string gnu_attribute_section_name_copy = p_gnu_attribute_section_name; 
    3005           0 :      result->p_gnu_attribute_section_name = gnu_attribute_section_name_copy; 
    3006             :   // Copy non-constructor parameter data member (access function): gnu_attribute_visability_copy
    3007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_visability
    3008             :   // case: toBeCopied == COPY_DATA for gnu_attribute_visability
    3009           0 :      SgDeclarationModifier::gnu_declaration_visability_enum gnu_attribute_visability_copy = p_gnu_attribute_visability; 
    3010           0 :      result->p_gnu_attribute_visability = gnu_attribute_visability_copy; 
    3011             :   // Copy non-constructor parameter data member (access function): microsoft_uuid_string_copy
    3012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for microsoft_uuid_string
    3013             :   // case: toBeCopied == COPY_DATA for microsoft_uuid_string
    3014           0 :      std::string microsoft_uuid_string_copy = p_microsoft_uuid_string; 
    3015           0 :      result->p_microsoft_uuid_string = microsoft_uuid_string_copy; 
    3016             :   // Copy non-constructor parameter data member (access function): microsoft_property_get_function_name_copy
    3017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for microsoft_property_get_function_name
    3018             :   // case: toBeCopied == COPY_DATA for microsoft_property_get_function_name
    3019           0 :      std::string microsoft_property_get_function_name_copy = p_microsoft_property_get_function_name; 
    3020           0 :      result->p_microsoft_property_get_function_name = microsoft_property_get_function_name_copy; 
    3021             :   // Copy non-constructor parameter data member (access function): microsoft_property_put_function_name_copy
    3022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for microsoft_property_put_function_name
    3023             :   // case: toBeCopied == COPY_DATA for microsoft_property_put_function_name
    3024           0 :      std::string microsoft_property_put_function_name_copy = p_microsoft_property_put_function_name; 
    3025           0 :      result->p_microsoft_property_put_function_name = microsoft_property_put_function_name_copy; 
    3026             : 
    3027             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3028             : 
    3029             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    3030             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    3031             :   // fixupCopy(result,help);
    3032             : 
    3033             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    3034             :   // the Sg_File_Info objects that are built for the new IR nodes.
    3035           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    3036           0 :      if (locatedNode != NULL)
    3037             :         {
    3038             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3039           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    3040           0 :           ROSE_ASSERT(start != NULL);
    3041             : #if 0
    3042             :        // Debugging information
    3043             :           if (start->get_parent() == NULL)
    3044             :              {
    3045             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3046             :              }
    3047             : #endif
    3048           0 :           start->set_parent(locatedNode);
    3049           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3050             : 
    3051           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    3052             : 
    3053             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    3054             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    3055             :        // ROSE_ASSERT(end != NULL);
    3056           0 :           if (end == NULL)
    3057             :              {
    3058           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    3059             :              }
    3060             :             else
    3061             :              {
    3062             : #if 0
    3063             :             // Debugging information
    3064             :                if (end->get_parent() == NULL)
    3065             :                   {
    3066             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3067             :                   }
    3068             : #endif
    3069           0 :                end->set_parent(locatedNode);
    3070           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    3071             :              }
    3072             : 
    3073           0 :           SgExpression* expression = isSgExpression(result);
    3074           0 :           if (isSgExpression(this) != NULL)
    3075             :              {
    3076           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    3077             : 
    3078             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    3079           0 :                if (operatorPosition != NULL)
    3080             :                   {
    3081             : #if 0
    3082             :                  // Debugging information
    3083             :                     if (operatorPosition->get_parent() == NULL)
    3084             :                        {
    3085             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3086             :                        }
    3087             : #endif
    3088           0 :                     operatorPosition->set_parent(expression);
    3089           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    3090             :                   }
    3091             :              }
    3092             :         }
    3093             : 
    3094             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    3095           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    3096           0 :      if (initializedName != NULL)
    3097             :         {
    3098             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3099           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    3100           0 :           ROSE_ASSERT(start != NULL);
    3101             : #if 0
    3102             :        // Debugging information
    3103             :           if (start->get_parent() == NULL)
    3104             :              {
    3105             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3106             :              }
    3107             : #endif
    3108           0 :           start->set_parent(initializedName);
    3109           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3110             : 
    3111             : #if 0
    3112             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    3113             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    3114             : 
    3115             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    3116             :        // ROSE_ASSERT(end != NULL);
    3117             :           if (end == NULL)
    3118             :              {
    3119             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    3120             :              }
    3121             :             else
    3122             :              {
    3123             :                if (end->get_parent() == NULL)
    3124             :                   {
    3125             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3126             :                   }
    3127             :                end->set_parent(initializedName);
    3128             :                ROSE_ASSERT(end->get_parent() != NULL);
    3129             :              }
    3130             : #endif
    3131             :         }
    3132             : 
    3133             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    3134           0 :      help.insertCopiedNodePair(this,result);
    3135             : 
    3136             :   // printf ("End of copy SgDeclarationModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3137             : 
    3138             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3139             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3140           0 :      help.decrementDepth();
    3141             : 
    3142             :   // Test if this is the root of the copy!
    3143           0 :      if (help.get_depth() == 0)
    3144             :         {
    3145             :        // This is the original calling node.
    3146             : 
    3147             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    3148             :        // printf ("Calling SgDeclarationModifier::fixupCopy() (from root of AST being copied) \n");
    3149             : #if ALT_FIXUP_COPY
    3150             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    3151           0 :           fixupCopy_scopes (result,help);
    3152           0 :           fixupCopy_symbols (result,help);
    3153           0 :           fixupCopy_references (result,help);
    3154             : #else
    3155             :           fixupCopy(result,help);
    3156             : #endif
    3157             :        // Allow this to be called recursively, so accumulate the state.
    3158             :        // Also, clear the state in the SgCopyHelp object.
    3159             :        // help.clearState();
    3160             :         }
    3161             : 
    3162           0 :      return result;
    3163             :    }
    3164             : 
    3165             : 
    3166             : /* #line 3167 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    3167             : 
    3168             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3169             : 
    3170           0 : SgNode* SgOpenclAccessModeModifier::copy ( SgCopyHelp& help) const
    3171             :    {
    3172           0 :      SgOpenclAccessModeModifier* result = NULL;
    3173             : 
    3174             :   // printf ("Copy SgOpenclAccessModeModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3175             : 
    3176             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3177             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3178             :   // The default value of the depth is 0, so after this call the depth is 1!
    3179           0 :      help.incrementDepth();
    3180             : 
    3181             : #if 0
    3182             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    3183             :   // but it is not generally true that things can only be copied once!
    3184             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    3185             :   // AstAttribute* existingAttribute = const_cast<SgOpenclAccessModeModifier*>(this)->attribute["copied"];
    3186             :      bool previouslyCopied = const_cast<SgOpenclAccessModeModifier*>(this)->attribute.exists("copied");
    3187             :      if (previouslyCopied == true)
    3188             :         {
    3189             :           this->get_file_info()->display("Called from copy SgOpenclAccessModeModifier: debug");
    3190             :         }
    3191             :      ROSE_ASSERT(previouslyCopied == false);
    3192             : 
    3193             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    3194             :      AstAttribute* newAttribute = new AstAttribute();
    3195             :      ROSE_ASSERT(newAttribute != NULL);
    3196             : 
    3197             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    3198             :      const_cast<SgOpenclAccessModeModifier*>(this)->attribute.add("copied",newAttribute);
    3199             : #endif
    3200             : 
    3201             :   // Copy data members from base classes
    3202             :  
    3203             : 
    3204             :   // Build an empty copy of this object (will be filled in, but 
    3205             :   // the parent can't be set and must be set by the caller)
    3206           0 :      result = new SgOpenclAccessModeModifier(  );
    3207           0 :      ROSE_ASSERT(result != NULL);
    3208             : 
    3209             :   // Copy data members of "this" class
    3210             :   // Copy non-constructor parameter data member (access function): modifier_copy
    3211             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
    3212             :   // case: toBeCopied == COPY_DATA for modifier
    3213           0 :      SgOpenclAccessModeModifier::access_mode_modifier_enum modifier_copy = p_modifier; 
    3214           0 :      result->p_modifier = modifier_copy; 
    3215             : 
    3216             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3217             : 
    3218             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    3219             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    3220             :   // fixupCopy(result,help);
    3221             : 
    3222             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    3223             :   // the Sg_File_Info objects that are built for the new IR nodes.
    3224           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    3225           0 :      if (locatedNode != NULL)
    3226             :         {
    3227             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3228           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    3229           0 :           ROSE_ASSERT(start != NULL);
    3230             : #if 0
    3231             :        // Debugging information
    3232             :           if (start->get_parent() == NULL)
    3233             :              {
    3234             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3235             :              }
    3236             : #endif
    3237           0 :           start->set_parent(locatedNode);
    3238           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3239             : 
    3240           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    3241             : 
    3242             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    3243             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    3244             :        // ROSE_ASSERT(end != NULL);
    3245           0 :           if (end == NULL)
    3246             :              {
    3247           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    3248             :              }
    3249             :             else
    3250             :              {
    3251             : #if 0
    3252             :             // Debugging information
    3253             :                if (end->get_parent() == NULL)
    3254             :                   {
    3255             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3256             :                   }
    3257             : #endif
    3258           0 :                end->set_parent(locatedNode);
    3259           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    3260             :              }
    3261             : 
    3262           0 :           SgExpression* expression = isSgExpression(result);
    3263           0 :           if (isSgExpression(this) != NULL)
    3264             :              {
    3265           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    3266             : 
    3267             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    3268           0 :                if (operatorPosition != NULL)
    3269             :                   {
    3270             : #if 0
    3271             :                  // Debugging information
    3272             :                     if (operatorPosition->get_parent() == NULL)
    3273             :                        {
    3274             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3275             :                        }
    3276             : #endif
    3277           0 :                     operatorPosition->set_parent(expression);
    3278           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    3279             :                   }
    3280             :              }
    3281             :         }
    3282             : 
    3283             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    3284           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    3285           0 :      if (initializedName != NULL)
    3286             :         {
    3287             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3288           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    3289           0 :           ROSE_ASSERT(start != NULL);
    3290             : #if 0
    3291             :        // Debugging information
    3292             :           if (start->get_parent() == NULL)
    3293             :              {
    3294             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3295             :              }
    3296             : #endif
    3297           0 :           start->set_parent(initializedName);
    3298           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3299             : 
    3300             : #if 0
    3301             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    3302             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    3303             : 
    3304             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    3305             :        // ROSE_ASSERT(end != NULL);
    3306             :           if (end == NULL)
    3307             :              {
    3308             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    3309             :              }
    3310             :             else
    3311             :              {
    3312             :                if (end->get_parent() == NULL)
    3313             :                   {
    3314             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3315             :                   }
    3316             :                end->set_parent(initializedName);
    3317             :                ROSE_ASSERT(end->get_parent() != NULL);
    3318             :              }
    3319             : #endif
    3320             :         }
    3321             : 
    3322             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    3323           0 :      help.insertCopiedNodePair(this,result);
    3324             : 
    3325             :   // printf ("End of copy SgOpenclAccessModeModifier = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3326             : 
    3327             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3328             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3329           0 :      help.decrementDepth();
    3330             : 
    3331             :   // Test if this is the root of the copy!
    3332           0 :      if (help.get_depth() == 0)
    3333             :         {
    3334             :        // This is the original calling node.
    3335             : 
    3336             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    3337             :        // printf ("Calling SgOpenclAccessModeModifier::fixupCopy() (from root of AST being copied) \n");
    3338             : #if ALT_FIXUP_COPY
    3339             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    3340           0 :           fixupCopy_scopes (result,help);
    3341           0 :           fixupCopy_symbols (result,help);
    3342           0 :           fixupCopy_references (result,help);
    3343             : #else
    3344             :           fixupCopy(result,help);
    3345             : #endif
    3346             :        // Allow this to be called recursively, so accumulate the state.
    3347             :        // Also, clear the state in the SgCopyHelp object.
    3348             :        // help.clearState();
    3349             :         }
    3350             : 
    3351           0 :      return result;
    3352             :    }
    3353             : 
    3354             : 
    3355             : /* #line 3356 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    3356             : 
    3357             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3358             : 
    3359           0 : SgNode* SgName::copy ( SgCopyHelp& help) const
    3360             :    {
    3361           0 :      SgName* result = NULL;
    3362             : 
    3363             :   // printf ("Copy SgName = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3364             : 
    3365             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3366             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3367             :   // The default value of the depth is 0, so after this call the depth is 1!
    3368           0 :      help.incrementDepth();
    3369             : 
    3370             : #if 0
    3371             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    3372             :   // but it is not generally true that things can only be copied once!
    3373             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    3374             :   // AstAttribute* existingAttribute = const_cast<SgName*>(this)->attribute["copied"];
    3375             :      bool previouslyCopied = const_cast<SgName*>(this)->attribute.exists("copied");
    3376             :      if (previouslyCopied == true)
    3377             :         {
    3378             :           this->get_file_info()->display("Called from copy SgName: debug");
    3379             :         }
    3380             :      ROSE_ASSERT(previouslyCopied == false);
    3381             : 
    3382             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    3383             :      AstAttribute* newAttribute = new AstAttribute();
    3384             :      ROSE_ASSERT(newAttribute != NULL);
    3385             : 
    3386             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    3387             :      const_cast<SgName*>(this)->attribute.add("copied",newAttribute);
    3388             : #endif
    3389             : 
    3390             :   // Copy data members from base classes
    3391             :  
    3392             : 
    3393             :   // Build an empty copy of this object (will be filled in, but 
    3394             :   // the parent can't be set and must be set by the caller)
    3395           0 :      result = new SgName(  );
    3396           0 :      ROSE_ASSERT(result != NULL);
    3397             : 
    3398             :   // Copy data members of "this" class
    3399             :   // Copy non-constructor parameter data member (no access function): result->p_char
    3400             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for char
    3401             :   // case: toBeCopied == COPY_DATA for char
    3402           0 :      std::string char_copy = p_char; 
    3403           0 :      result->p_char = char_copy; 
    3404             : 
    3405             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3406             : 
    3407             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    3408             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    3409             :   // fixupCopy(result,help);
    3410             : 
    3411             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    3412             :   // the Sg_File_Info objects that are built for the new IR nodes.
    3413           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    3414           0 :      if (locatedNode != NULL)
    3415             :         {
    3416             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3417           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    3418           0 :           ROSE_ASSERT(start != NULL);
    3419             : #if 0
    3420             :        // Debugging information
    3421             :           if (start->get_parent() == NULL)
    3422             :              {
    3423             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3424             :              }
    3425             : #endif
    3426           0 :           start->set_parent(locatedNode);
    3427           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3428             : 
    3429           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    3430             : 
    3431             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    3432             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    3433             :        // ROSE_ASSERT(end != NULL);
    3434           0 :           if (end == NULL)
    3435             :              {
    3436           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    3437             :              }
    3438             :             else
    3439             :              {
    3440             : #if 0
    3441             :             // Debugging information
    3442             :                if (end->get_parent() == NULL)
    3443             :                   {
    3444             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3445             :                   }
    3446             : #endif
    3447           0 :                end->set_parent(locatedNode);
    3448           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    3449             :              }
    3450             : 
    3451           0 :           SgExpression* expression = isSgExpression(result);
    3452           0 :           if (isSgExpression(this) != NULL)
    3453             :              {
    3454           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    3455             : 
    3456             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    3457           0 :                if (operatorPosition != NULL)
    3458             :                   {
    3459             : #if 0
    3460             :                  // Debugging information
    3461             :                     if (operatorPosition->get_parent() == NULL)
    3462             :                        {
    3463             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3464             :                        }
    3465             : #endif
    3466           0 :                     operatorPosition->set_parent(expression);
    3467           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    3468             :                   }
    3469             :              }
    3470             :         }
    3471             : 
    3472             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    3473           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    3474           0 :      if (initializedName != NULL)
    3475             :         {
    3476             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3477           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    3478           0 :           ROSE_ASSERT(start != NULL);
    3479             : #if 0
    3480             :        // Debugging information
    3481             :           if (start->get_parent() == NULL)
    3482             :              {
    3483             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3484             :              }
    3485             : #endif
    3486           0 :           start->set_parent(initializedName);
    3487           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3488             : 
    3489             : #if 0
    3490             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    3491             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    3492             : 
    3493             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    3494             :        // ROSE_ASSERT(end != NULL);
    3495             :           if (end == NULL)
    3496             :              {
    3497             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    3498             :              }
    3499             :             else
    3500             :              {
    3501             :                if (end->get_parent() == NULL)
    3502             :                   {
    3503             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3504             :                   }
    3505             :                end->set_parent(initializedName);
    3506             :                ROSE_ASSERT(end->get_parent() != NULL);
    3507             :              }
    3508             : #endif
    3509             :         }
    3510             : 
    3511             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    3512           0 :      help.insertCopiedNodePair(this,result);
    3513             : 
    3514             :   // printf ("End of copy SgName = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3515             : 
    3516             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3517             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3518           0 :      help.decrementDepth();
    3519             : 
    3520             :   // Test if this is the root of the copy!
    3521           0 :      if (help.get_depth() == 0)
    3522             :         {
    3523             :        // This is the original calling node.
    3524             : 
    3525             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    3526             :        // printf ("Calling SgName::fixupCopy() (from root of AST being copied) \n");
    3527             : #if ALT_FIXUP_COPY
    3528             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    3529           0 :           fixupCopy_scopes (result,help);
    3530           0 :           fixupCopy_symbols (result,help);
    3531           0 :           fixupCopy_references (result,help);
    3532             : #else
    3533             :           fixupCopy(result,help);
    3534             : #endif
    3535             :        // Allow this to be called recursively, so accumulate the state.
    3536             :        // Also, clear the state in the SgCopyHelp object.
    3537             :        // help.clearState();
    3538             :         }
    3539             : 
    3540           0 :      return result;
    3541             :    }
    3542             : 
    3543             : 
    3544             : /* #line 3545 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    3545             : 
    3546             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3547             : 
    3548           0 : SgNode* SgSymbolTable::copy ( SgCopyHelp& help) const
    3549             :    {
    3550           0 :      SgSymbolTable* result = NULL;
    3551             : 
    3552             :   // printf ("Copy SgSymbolTable = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3553             : 
    3554             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3555             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3556             :   // The default value of the depth is 0, so after this call the depth is 1!
    3557           0 :      help.incrementDepth();
    3558             : 
    3559             : #if 0
    3560             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    3561             :   // but it is not generally true that things can only be copied once!
    3562             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    3563             :   // AstAttribute* existingAttribute = const_cast<SgSymbolTable*>(this)->attribute["copied"];
    3564             :      bool previouslyCopied = const_cast<SgSymbolTable*>(this)->attribute.exists("copied");
    3565             :      if (previouslyCopied == true)
    3566             :         {
    3567             :           this->get_file_info()->display("Called from copy SgSymbolTable: debug");
    3568             :         }
    3569             :      ROSE_ASSERT(previouslyCopied == false);
    3570             : 
    3571             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    3572             :      AstAttribute* newAttribute = new AstAttribute();
    3573             :      ROSE_ASSERT(newAttribute != NULL);
    3574             : 
    3575             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    3576             :      const_cast<SgSymbolTable*>(this)->attribute.add("copied",newAttribute);
    3577             : #endif
    3578             : 
    3579             :   // Copy data members from base classes
    3580             :  
    3581             : 
    3582             :   // Build an empty copy of this object (will be filled in, but 
    3583             :   // the parent can't be set and must be set by the caller)
    3584           0 :      result = new SgSymbolTable(  );
    3585           0 :      ROSE_ASSERT(result != NULL);
    3586             : 
    3587             :   // Copy data members of "this" class
    3588             :   // Copy non-constructor parameter data member (no access function): result->p_iterator
    3589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for iterator
    3590             :   // case: toBeCopied == COPY_DATA for iterator
    3591           0 :      hash_iterator iterator_copy = p_iterator; 
    3592           0 :      result->p_iterator = iterator_copy; 
    3593             :   // Copy non-constructor parameter data member (access function): name_copy
    3594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
    3595             :   // case: toBeCopied == COPY_DATA for name
    3596           0 :      SgName name_copy = p_name; 
    3597           0 :      result->p_name = name_copy; 
    3598             :   // Copy non-constructor parameter data member (access function): no_name_copy
    3599             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_name
    3600             :   // case: toBeCopied == COPY_DATA for no_name
    3601           0 :      bool no_name_copy = p_no_name; 
    3602           0 :      result->p_no_name = no_name_copy; 
    3603             :   // Copy non-constructor parameter data member (access function): table_copy
    3604             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for table
    3605             :   // case: toBeCopied == COPY_DATA for table
    3606           0 :       rose_hash_multimap* table_copy = p_table; 
    3607           0 :      result->p_table = table_copy; 
    3608             :   // Copy non-constructor parameter data member (access function): symbolSet_copy
    3609             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbolSet
    3610             :   // case: toBeCopied == COPY_DATA for symbolSet
    3611           0 :      SgNodeSet symbolSet_copy = p_symbolSet; 
    3612           0 :      result->p_symbolSet = symbolSet_copy; 
    3613             :   // Copy non-constructor parameter data member (no access function): result->p_case_insensitive
    3614             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for case_insensitive
    3615             :   // case: toBeCopied == COPY_DATA for case_insensitive
    3616           0 :      bool case_insensitive_copy = p_case_insensitive; 
    3617           0 :      result->p_case_insensitive = case_insensitive_copy; 
    3618             :   // Copy non-constructor parameter data member (no access function): result->p_aliasSymbolCausalNodeSet
    3619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for aliasSymbolCausalNodeSet
    3620             :   // case: toBeCopied == COPY_DATA for aliasSymbolCausalNodeSet
    3621           0 :      static SgNodeSet aliasSymbolCausalNodeSet_copy = p_aliasSymbolCausalNodeSet; 
    3622           0 :      result->p_aliasSymbolCausalNodeSet = aliasSymbolCausalNodeSet_copy; 
    3623             :   // Copy non-constructor parameter data member (no access function): result->p_force_search_of_base_classes
    3624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for force_search_of_base_classes
    3625             :   // case: toBeCopied == COPY_DATA for force_search_of_base_classes
    3626           0 :      static bool force_search_of_base_classes_copy = p_force_search_of_base_classes; 
    3627           0 :      result->p_force_search_of_base_classes = force_search_of_base_classes_copy; 
    3628             : 
    3629             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3630             : 
    3631             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    3632             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    3633             :   // fixupCopy(result,help);
    3634             : 
    3635             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    3636             :   // the Sg_File_Info objects that are built for the new IR nodes.
    3637           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    3638           0 :      if (locatedNode != NULL)
    3639             :         {
    3640             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3641           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    3642           0 :           ROSE_ASSERT(start != NULL);
    3643             : #if 0
    3644             :        // Debugging information
    3645             :           if (start->get_parent() == NULL)
    3646             :              {
    3647             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3648             :              }
    3649             : #endif
    3650           0 :           start->set_parent(locatedNode);
    3651           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3652             : 
    3653           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    3654             : 
    3655             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    3656             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    3657             :        // ROSE_ASSERT(end != NULL);
    3658           0 :           if (end == NULL)
    3659             :              {
    3660           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    3661             :              }
    3662             :             else
    3663             :              {
    3664             : #if 0
    3665             :             // Debugging information
    3666             :                if (end->get_parent() == NULL)
    3667             :                   {
    3668             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3669             :                   }
    3670             : #endif
    3671           0 :                end->set_parent(locatedNode);
    3672           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    3673             :              }
    3674             : 
    3675           0 :           SgExpression* expression = isSgExpression(result);
    3676           0 :           if (isSgExpression(this) != NULL)
    3677             :              {
    3678           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    3679             : 
    3680             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    3681           0 :                if (operatorPosition != NULL)
    3682             :                   {
    3683             : #if 0
    3684             :                  // Debugging information
    3685             :                     if (operatorPosition->get_parent() == NULL)
    3686             :                        {
    3687             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3688             :                        }
    3689             : #endif
    3690           0 :                     operatorPosition->set_parent(expression);
    3691           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    3692             :                   }
    3693             :              }
    3694             :         }
    3695             : 
    3696             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    3697           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    3698           0 :      if (initializedName != NULL)
    3699             :         {
    3700             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3701           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    3702           0 :           ROSE_ASSERT(start != NULL);
    3703             : #if 0
    3704             :        // Debugging information
    3705             :           if (start->get_parent() == NULL)
    3706             :              {
    3707             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3708             :              }
    3709             : #endif
    3710           0 :           start->set_parent(initializedName);
    3711           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3712             : 
    3713             : #if 0
    3714             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    3715             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    3716             : 
    3717             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    3718             :        // ROSE_ASSERT(end != NULL);
    3719             :           if (end == NULL)
    3720             :              {
    3721             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    3722             :              }
    3723             :             else
    3724             :              {
    3725             :                if (end->get_parent() == NULL)
    3726             :                   {
    3727             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3728             :                   }
    3729             :                end->set_parent(initializedName);
    3730             :                ROSE_ASSERT(end->get_parent() != NULL);
    3731             :              }
    3732             : #endif
    3733             :         }
    3734             : 
    3735             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    3736           0 :      help.insertCopiedNodePair(this,result);
    3737             : 
    3738             :   // printf ("End of copy SgSymbolTable = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3739             : 
    3740             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3741             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3742           0 :      help.decrementDepth();
    3743             : 
    3744             :   // Test if this is the root of the copy!
    3745           0 :      if (help.get_depth() == 0)
    3746             :         {
    3747             :        // This is the original calling node.
    3748             : 
    3749             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    3750             :        // printf ("Calling SgSymbolTable::fixupCopy() (from root of AST being copied) \n");
    3751             : #if ALT_FIXUP_COPY
    3752             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    3753           0 :           fixupCopy_scopes (result,help);
    3754           0 :           fixupCopy_symbols (result,help);
    3755           0 :           fixupCopy_references (result,help);
    3756             : #else
    3757             :           fixupCopy(result,help);
    3758             : #endif
    3759             :        // Allow this to be called recursively, so accumulate the state.
    3760             :        // Also, clear the state in the SgCopyHelp object.
    3761             :        // help.clearState();
    3762             :         }
    3763             : 
    3764           0 :      return result;
    3765             :    }
    3766             : 
    3767             : 
    3768             : /* #line 3769 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    3769             : 
    3770             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3771             : 
    3772           0 : SgNode* SgAttribute::copy ( SgCopyHelp& help) const
    3773             :    {
    3774           0 :      SgAttribute* result = NULL;
    3775             : 
    3776             :   // printf ("Copy SgAttribute = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3777             : 
    3778             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3779             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3780             :   // The default value of the depth is 0, so after this call the depth is 1!
    3781           0 :      help.incrementDepth();
    3782             : 
    3783             : #if 0
    3784             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    3785             :   // but it is not generally true that things can only be copied once!
    3786             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    3787             :   // AstAttribute* existingAttribute = const_cast<SgAttribute*>(this)->attribute["copied"];
    3788             :      bool previouslyCopied = const_cast<SgAttribute*>(this)->attribute.exists("copied");
    3789             :      if (previouslyCopied == true)
    3790             :         {
    3791             :           this->get_file_info()->display("Called from copy SgAttribute: debug");
    3792             :         }
    3793             :      ROSE_ASSERT(previouslyCopied == false);
    3794             : 
    3795             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    3796             :      AstAttribute* newAttribute = new AstAttribute();
    3797             :      ROSE_ASSERT(newAttribute != NULL);
    3798             : 
    3799             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    3800             :      const_cast<SgAttribute*>(this)->attribute.add("copied",newAttribute);
    3801             : #endif
    3802             : 
    3803             :   // Copy data members from base classes
    3804             :   // Copy constructor parameter data member: name_copy
    3805             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
    3806             :   // case: toBeCopied == COPY_DATA for name
    3807           0 :      std::string name_copy = p_name; 
    3808             :  
    3809             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3810             : 
    3811             :   // Build an empty copy of this object (will be filled in, but 
    3812             :   // the parent can't be set and must be set by the caller)
    3813           0 :      result = new SgAttribute(  name_copy );
    3814           0 :      ROSE_ASSERT(result != NULL);
    3815             : 
    3816             :   // Copy data members of "this" class
    3817             : 
    3818             : 
    3819             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    3820             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    3821             :   // fixupCopy(result,help);
    3822             : 
    3823             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    3824             :   // the Sg_File_Info objects that are built for the new IR nodes.
    3825           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    3826           0 :      if (locatedNode != NULL)
    3827             :         {
    3828             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3829           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    3830           0 :           ROSE_ASSERT(start != NULL);
    3831             : #if 0
    3832             :        // Debugging information
    3833             :           if (start->get_parent() == NULL)
    3834             :              {
    3835             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3836             :              }
    3837             : #endif
    3838           0 :           start->set_parent(locatedNode);
    3839           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3840             : 
    3841           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    3842             : 
    3843             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    3844             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    3845             :        // ROSE_ASSERT(end != NULL);
    3846           0 :           if (end == NULL)
    3847             :              {
    3848           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    3849             :              }
    3850             :             else
    3851             :              {
    3852             : #if 0
    3853             :             // Debugging information
    3854             :                if (end->get_parent() == NULL)
    3855             :                   {
    3856             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3857             :                   }
    3858             : #endif
    3859           0 :                end->set_parent(locatedNode);
    3860           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    3861             :              }
    3862             : 
    3863           0 :           SgExpression* expression = isSgExpression(result);
    3864           0 :           if (isSgExpression(this) != NULL)
    3865             :              {
    3866           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    3867             : 
    3868             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    3869           0 :                if (operatorPosition != NULL)
    3870             :                   {
    3871             : #if 0
    3872             :                  // Debugging information
    3873             :                     if (operatorPosition->get_parent() == NULL)
    3874             :                        {
    3875             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3876             :                        }
    3877             : #endif
    3878           0 :                     operatorPosition->set_parent(expression);
    3879           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    3880             :                   }
    3881             :              }
    3882             :         }
    3883             : 
    3884             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    3885           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    3886           0 :      if (initializedName != NULL)
    3887             :         {
    3888             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    3889           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    3890           0 :           ROSE_ASSERT(start != NULL);
    3891             : #if 0
    3892             :        // Debugging information
    3893             :           if (start->get_parent() == NULL)
    3894             :              {
    3895             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3896             :              }
    3897             : #endif
    3898           0 :           start->set_parent(initializedName);
    3899           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    3900             : 
    3901             : #if 0
    3902             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    3903             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    3904             : 
    3905             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    3906             :        // ROSE_ASSERT(end != NULL);
    3907             :           if (end == NULL)
    3908             :              {
    3909             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    3910             :              }
    3911             :             else
    3912             :              {
    3913             :                if (end->get_parent() == NULL)
    3914             :                   {
    3915             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    3916             :                   }
    3917             :                end->set_parent(initializedName);
    3918             :                ROSE_ASSERT(end->get_parent() != NULL);
    3919             :              }
    3920             : #endif
    3921             :         }
    3922             : 
    3923             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    3924           0 :      help.insertCopiedNodePair(this,result);
    3925             : 
    3926             :   // printf ("End of copy SgAttribute = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3927             : 
    3928             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3929             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3930           0 :      help.decrementDepth();
    3931             : 
    3932             :   // Test if this is the root of the copy!
    3933           0 :      if (help.get_depth() == 0)
    3934             :         {
    3935             :        // This is the original calling node.
    3936             : 
    3937             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    3938             :        // printf ("Calling SgAttribute::fixupCopy() (from root of AST being copied) \n");
    3939             : #if ALT_FIXUP_COPY
    3940             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    3941           0 :           fixupCopy_scopes (result,help);
    3942           0 :           fixupCopy_symbols (result,help);
    3943           0 :           fixupCopy_references (result,help);
    3944             : #else
    3945             :           fixupCopy(result,help);
    3946             : #endif
    3947             :        // Allow this to be called recursively, so accumulate the state.
    3948             :        // Also, clear the state in the SgCopyHelp object.
    3949             :        // help.clearState();
    3950             :         }
    3951             : 
    3952           0 :      return result;
    3953             :    }
    3954             : 
    3955             : 
    3956             : /* #line 3957 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    3957             : 
    3958             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    3959             : 
    3960           0 : SgNode* SgPragma::copy ( SgCopyHelp& help) const
    3961             :    {
    3962           0 :      SgPragma* result = NULL;
    3963             : 
    3964             :   // printf ("Copy SgPragma = %p = %s \n",this,SageInterface::get_name(this).c_str());
    3965             : 
    3966             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    3967             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    3968             :   // The default value of the depth is 0, so after this call the depth is 1!
    3969           0 :      help.incrementDepth();
    3970             : 
    3971             : #if 0
    3972             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    3973             :   // but it is not generally true that things can only be copied once!
    3974             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    3975             :   // AstAttribute* existingAttribute = const_cast<SgPragma*>(this)->attribute["copied"];
    3976             :      bool previouslyCopied = const_cast<SgPragma*>(this)->attribute.exists("copied");
    3977             :      if (previouslyCopied == true)
    3978             :         {
    3979             :           this->get_file_info()->display("Called from copy SgPragma: debug");
    3980             :         }
    3981             :      ROSE_ASSERT(previouslyCopied == false);
    3982             : 
    3983             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    3984             :      AstAttribute* newAttribute = new AstAttribute();
    3985             :      ROSE_ASSERT(newAttribute != NULL);
    3986             : 
    3987             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    3988             :      const_cast<SgPragma*>(this)->attribute.add("copied",newAttribute);
    3989             : #endif
    3990             : 
    3991             :   // Copy data members from base classes
    3992             :   // Copy constructor parameter data member: name_copy
    3993             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
    3994             :   // case: toBeCopied == COPY_DATA for name
    3995           0 :      std::string name_copy = p_name; 
    3996             :   // Copy constructor parameter data member: startOfConstruct_copy
    3997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
    3998             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
    3999           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
    4000           0 :      if ( p_startOfConstruct != NULL ) 
    4001             :         { 
    4002           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
    4003             :         } 
    4004             :        else 
    4005             :         { 
    4006             :           startOfConstruct_copy = NULL; 
    4007             :         } 
    4008             :   // Copy constructor parameter data member: endOfConstruct_copy
    4009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
    4010             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
    4011           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
    4012           0 :      if ( p_endOfConstruct != NULL ) 
    4013             :         { 
    4014           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
    4015             :         } 
    4016             :        else 
    4017             :         { 
    4018             :           endOfConstruct_copy = NULL; 
    4019             :         } 
    4020             :  
    4021             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4022             : 
    4023             :   // Build an empty copy of this object (will be filled in, but 
    4024             :   // the parent can't be set and must be set by the caller)
    4025           0 :      result = new SgPragma(  name_copy, startOfConstruct_copy, endOfConstruct_copy );
    4026           0 :      ROSE_ASSERT(result != NULL);
    4027             : 
    4028             :   // Copy data members of "this" class
    4029             :   // Copy non-constructor parameter data member (no access function): result->p_printed
    4030             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for printed
    4031             :   // case: toBeCopied == COPY_DATA for printed
    4032           0 :      short printed_copy = p_printed; 
    4033           0 :      result->p_printed = printed_copy; 
    4034             :   // Copy non-constructor parameter data member (access function): args_copy
    4035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for args
    4036             :   // case: toBeCopied == COPY_DATA for args
    4037           0 :      SgExprListExp* args_copy = p_args; 
    4038           0 :      result->p_args = args_copy; 
    4039             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
    4040             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
    4041             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
    4042           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
    4043           0 :      if ( p_attributeMechanism != NULL ) 
    4044             :         { 
    4045           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
    4046             :         } 
    4047             :        else 
    4048             :         { 
    4049             :           attributeMechanism_copy = NULL; 
    4050             :         } 
    4051             :   /* check for a valid pointer and delete if present */ 
    4052           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
    4053             :   /* add assignment to result here */ 
    4054           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
    4055             : 
    4056             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4057             : 
    4058             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    4059             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    4060             :   // fixupCopy(result,help);
    4061             : 
    4062             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    4063             :   // the Sg_File_Info objects that are built for the new IR nodes.
    4064           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    4065           0 :      if (locatedNode != NULL)
    4066             :         {
    4067             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4068           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    4069           0 :           ROSE_ASSERT(start != NULL);
    4070             : #if 0
    4071             :        // Debugging information
    4072             :           if (start->get_parent() == NULL)
    4073             :              {
    4074             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4075             :              }
    4076             : #endif
    4077           0 :           start->set_parent(locatedNode);
    4078           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4079             : 
    4080           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    4081             : 
    4082             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    4083             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    4084             :        // ROSE_ASSERT(end != NULL);
    4085           0 :           if (end == NULL)
    4086             :              {
    4087           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    4088             :              }
    4089             :             else
    4090             :              {
    4091             : #if 0
    4092             :             // Debugging information
    4093             :                if (end->get_parent() == NULL)
    4094             :                   {
    4095             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4096             :                   }
    4097             : #endif
    4098           0 :                end->set_parent(locatedNode);
    4099           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    4100             :              }
    4101             : 
    4102           0 :           SgExpression* expression = isSgExpression(result);
    4103           0 :           if (isSgExpression(this) != NULL)
    4104             :              {
    4105           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    4106             : 
    4107             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    4108           0 :                if (operatorPosition != NULL)
    4109             :                   {
    4110             : #if 0
    4111             :                  // Debugging information
    4112             :                     if (operatorPosition->get_parent() == NULL)
    4113             :                        {
    4114             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4115             :                        }
    4116             : #endif
    4117           0 :                     operatorPosition->set_parent(expression);
    4118           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    4119             :                   }
    4120             :              }
    4121             :         }
    4122             : 
    4123             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    4124           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    4125           0 :      if (initializedName != NULL)
    4126             :         {
    4127             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4128           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    4129           0 :           ROSE_ASSERT(start != NULL);
    4130             : #if 0
    4131             :        // Debugging information
    4132             :           if (start->get_parent() == NULL)
    4133             :              {
    4134             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4135             :              }
    4136             : #endif
    4137           0 :           start->set_parent(initializedName);
    4138           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4139             : 
    4140             : #if 0
    4141             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    4142             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    4143             : 
    4144             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    4145             :        // ROSE_ASSERT(end != NULL);
    4146             :           if (end == NULL)
    4147             :              {
    4148             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    4149             :              }
    4150             :             else
    4151             :              {
    4152             :                if (end->get_parent() == NULL)
    4153             :                   {
    4154             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4155             :                   }
    4156             :                end->set_parent(initializedName);
    4157             :                ROSE_ASSERT(end->get_parent() != NULL);
    4158             :              }
    4159             : #endif
    4160             :         }
    4161             : 
    4162             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    4163           0 :      help.insertCopiedNodePair(this,result);
    4164             : 
    4165             :   // printf ("End of copy SgPragma = %p = %s \n",this,SageInterface::get_name(this).c_str());
    4166             : 
    4167             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    4168             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    4169           0 :      help.decrementDepth();
    4170             : 
    4171             :   // Test if this is the root of the copy!
    4172           0 :      if (help.get_depth() == 0)
    4173             :         {
    4174             :        // This is the original calling node.
    4175             : 
    4176             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    4177             :        // printf ("Calling SgPragma::fixupCopy() (from root of AST being copied) \n");
    4178             : #if ALT_FIXUP_COPY
    4179             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    4180           0 :           fixupCopy_scopes (result,help);
    4181           0 :           fixupCopy_symbols (result,help);
    4182           0 :           fixupCopy_references (result,help);
    4183             : #else
    4184             :           fixupCopy(result,help);
    4185             : #endif
    4186             :        // Allow this to be called recursively, so accumulate the state.
    4187             :        // Also, clear the state in the SgCopyHelp object.
    4188             :        // help.clearState();
    4189             :         }
    4190             : 
    4191           0 :      return result;
    4192             :    }
    4193             : 
    4194             : 
    4195             : /* #line 4196 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    4196             : 
    4197             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4198             : 
    4199           0 : SgNode* SgBitAttribute::copy ( SgCopyHelp& help) const
    4200             :    {
    4201           0 :      SgBitAttribute* result = NULL;
    4202             : 
    4203             :   // printf ("Copy SgBitAttribute = %p = %s \n",this,SageInterface::get_name(this).c_str());
    4204             : 
    4205             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    4206             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    4207             :   // The default value of the depth is 0, so after this call the depth is 1!
    4208           0 :      help.incrementDepth();
    4209             : 
    4210             : #if 0
    4211             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    4212             :   // but it is not generally true that things can only be copied once!
    4213             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    4214             :   // AstAttribute* existingAttribute = const_cast<SgBitAttribute*>(this)->attribute["copied"];
    4215             :      bool previouslyCopied = const_cast<SgBitAttribute*>(this)->attribute.exists("copied");
    4216             :      if (previouslyCopied == true)
    4217             :         {
    4218             :           this->get_file_info()->display("Called from copy SgBitAttribute: debug");
    4219             :         }
    4220             :      ROSE_ASSERT(previouslyCopied == false);
    4221             : 
    4222             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    4223             :      AstAttribute* newAttribute = new AstAttribute();
    4224             :      ROSE_ASSERT(newAttribute != NULL);
    4225             : 
    4226             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    4227             :      const_cast<SgBitAttribute*>(this)->attribute.add("copied",newAttribute);
    4228             : #endif
    4229             : 
    4230             :   // Copy data members from base classes
    4231             :   // Copy constructor parameter data member: name_copy
    4232             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
    4233             :   // case: toBeCopied == COPY_DATA for name
    4234           0 :      std::string name_copy = p_name; 
    4235             :   // Copy constructor parameter data member: bitflag_copy
    4236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for bitflag
    4237             :   // case: toBeCopied == COPY_DATA for bitflag
    4238           0 :      unsigned long int bitflag_copy = p_bitflag; 
    4239             :  
    4240             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4241             : 
    4242             :   // Build an empty copy of this object (will be filled in, but 
    4243             :   // the parent can't be set and must be set by the caller)
    4244           0 :      result = new SgBitAttribute(  name_copy, bitflag_copy );
    4245           0 :      ROSE_ASSERT(result != NULL);
    4246             : 
    4247             :   // Copy data members of "this" class
    4248             : 
    4249             : 
    4250             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    4251             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    4252             :   // fixupCopy(result,help);
    4253             : 
    4254             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    4255             :   // the Sg_File_Info objects that are built for the new IR nodes.
    4256           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    4257           0 :      if (locatedNode != NULL)
    4258             :         {
    4259             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4260           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    4261           0 :           ROSE_ASSERT(start != NULL);
    4262             : #if 0
    4263             :        // Debugging information
    4264             :           if (start->get_parent() == NULL)
    4265             :              {
    4266             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4267             :              }
    4268             : #endif
    4269           0 :           start->set_parent(locatedNode);
    4270           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4271             : 
    4272           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    4273             : 
    4274             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    4275             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    4276             :        // ROSE_ASSERT(end != NULL);
    4277           0 :           if (end == NULL)
    4278             :              {
    4279           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    4280             :              }
    4281             :             else
    4282             :              {
    4283             : #if 0
    4284             :             // Debugging information
    4285             :                if (end->get_parent() == NULL)
    4286             :                   {
    4287             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4288             :                   }
    4289             : #endif
    4290           0 :                end->set_parent(locatedNode);
    4291           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    4292             :              }
    4293             : 
    4294           0 :           SgExpression* expression = isSgExpression(result);
    4295           0 :           if (isSgExpression(this) != NULL)
    4296             :              {
    4297           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    4298             : 
    4299             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    4300           0 :                if (operatorPosition != NULL)
    4301             :                   {
    4302             : #if 0
    4303             :                  // Debugging information
    4304             :                     if (operatorPosition->get_parent() == NULL)
    4305             :                        {
    4306             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4307             :                        }
    4308             : #endif
    4309           0 :                     operatorPosition->set_parent(expression);
    4310           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    4311             :                   }
    4312             :              }
    4313             :         }
    4314             : 
    4315             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    4316           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    4317           0 :      if (initializedName != NULL)
    4318             :         {
    4319             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4320           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    4321           0 :           ROSE_ASSERT(start != NULL);
    4322             : #if 0
    4323             :        // Debugging information
    4324             :           if (start->get_parent() == NULL)
    4325             :              {
    4326             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4327             :              }
    4328             : #endif
    4329           0 :           start->set_parent(initializedName);
    4330           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4331             : 
    4332             : #if 0
    4333             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    4334             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    4335             : 
    4336             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    4337             :        // ROSE_ASSERT(end != NULL);
    4338             :           if (end == NULL)
    4339             :              {
    4340             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    4341             :              }
    4342             :             else
    4343             :              {
    4344             :                if (end->get_parent() == NULL)
    4345             :                   {
    4346             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4347             :                   }
    4348             :                end->set_parent(initializedName);
    4349             :                ROSE_ASSERT(end->get_parent() != NULL);
    4350             :              }
    4351             : #endif
    4352             :         }
    4353             : 
    4354             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    4355           0 :      help.insertCopiedNodePair(this,result);
    4356             : 
    4357             :   // printf ("End of copy SgBitAttribute = %p = %s \n",this,SageInterface::get_name(this).c_str());
    4358             : 
    4359             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    4360             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    4361           0 :      help.decrementDepth();
    4362             : 
    4363             :   // Test if this is the root of the copy!
    4364           0 :      if (help.get_depth() == 0)
    4365             :         {
    4366             :        // This is the original calling node.
    4367             : 
    4368             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    4369             :        // printf ("Calling SgBitAttribute::fixupCopy() (from root of AST being copied) \n");
    4370             : #if ALT_FIXUP_COPY
    4371             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    4372           0 :           fixupCopy_scopes (result,help);
    4373           0 :           fixupCopy_symbols (result,help);
    4374           0 :           fixupCopy_references (result,help);
    4375             : #else
    4376             :           fixupCopy(result,help);
    4377             : #endif
    4378             :        // Allow this to be called recursively, so accumulate the state.
    4379             :        // Also, clear the state in the SgCopyHelp object.
    4380             :        // help.clearState();
    4381             :         }
    4382             : 
    4383           0 :      return result;
    4384             :    }
    4385             : 
    4386             : 
    4387             : /* #line 4388 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    4388             : 
    4389             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4390             : 
    4391           0 : SgNode* SgFuncDecl_attr::copy ( SgCopyHelp& help) const
    4392             :    {
    4393           0 :      SgFuncDecl_attr* result = NULL;
    4394             : 
    4395             :   // printf ("Copy SgFuncDecl_attr = %p = %s \n",this,SageInterface::get_name(this).c_str());
    4396             : 
    4397             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    4398             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    4399             :   // The default value of the depth is 0, so after this call the depth is 1!
    4400           0 :      help.incrementDepth();
    4401             : 
    4402             : #if 0
    4403             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    4404             :   // but it is not generally true that things can only be copied once!
    4405             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    4406             :   // AstAttribute* existingAttribute = const_cast<SgFuncDecl_attr*>(this)->attribute["copied"];
    4407             :      bool previouslyCopied = const_cast<SgFuncDecl_attr*>(this)->attribute.exists("copied");
    4408             :      if (previouslyCopied == true)
    4409             :         {
    4410             :           this->get_file_info()->display("Called from copy SgFuncDecl_attr: debug");
    4411             :         }
    4412             :      ROSE_ASSERT(previouslyCopied == false);
    4413             : 
    4414             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    4415             :      AstAttribute* newAttribute = new AstAttribute();
    4416             :      ROSE_ASSERT(newAttribute != NULL);
    4417             : 
    4418             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    4419             :      const_cast<SgFuncDecl_attr*>(this)->attribute.add("copied",newAttribute);
    4420             : #endif
    4421             : 
    4422             :   // Copy data members from base classes
    4423             :  
    4424             : 
    4425             :   // Build an empty copy of this object (will be filled in, but 
    4426             :   // the parent can't be set and must be set by the caller)
    4427           0 :      result = new SgFuncDecl_attr(  );
    4428           0 :      ROSE_ASSERT(result != NULL);
    4429             : 
    4430             :   // Copy data members of "this" class
    4431             :   // Copy non-constructor parameter data member (access function): name_copy
    4432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
    4433             :   // case: toBeCopied == COPY_DATA for name
    4434           0 :      std::string name_copy = p_name; 
    4435           0 :      result->p_name = name_copy; 
    4436             :   // Copy non-constructor parameter data member (access function): bitflag_copy
    4437             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for bitflag
    4438             :   // case: toBeCopied == COPY_DATA for bitflag
    4439           0 :      unsigned long int bitflag_copy = p_bitflag; 
    4440           0 :      result->p_bitflag = bitflag_copy; 
    4441             : 
    4442             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4443             : 
    4444             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    4445             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    4446             :   // fixupCopy(result,help);
    4447             : 
    4448             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    4449             :   // the Sg_File_Info objects that are built for the new IR nodes.
    4450           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    4451           0 :      if (locatedNode != NULL)
    4452             :         {
    4453             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4454           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    4455           0 :           ROSE_ASSERT(start != NULL);
    4456             : #if 0
    4457             :        // Debugging information
    4458             :           if (start->get_parent() == NULL)
    4459             :              {
    4460             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4461             :              }
    4462             : #endif
    4463           0 :           start->set_parent(locatedNode);
    4464           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4465             : 
    4466           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    4467             : 
    4468             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    4469             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    4470             :        // ROSE_ASSERT(end != NULL);
    4471           0 :           if (end == NULL)
    4472             :              {
    4473           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    4474             :              }
    4475             :             else
    4476             :              {
    4477             : #if 0
    4478             :             // Debugging information
    4479             :                if (end->get_parent() == NULL)
    4480             :                   {
    4481             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4482             :                   }
    4483             : #endif
    4484           0 :                end->set_parent(locatedNode);
    4485           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    4486             :              }
    4487             : 
    4488           0 :           SgExpression* expression = isSgExpression(result);
    4489           0 :           if (isSgExpression(this) != NULL)
    4490             :              {
    4491           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    4492             : 
    4493             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    4494           0 :                if (operatorPosition != NULL)
    4495             :                   {
    4496             : #if 0
    4497             :                  // Debugging information
    4498             :                     if (operatorPosition->get_parent() == NULL)
    4499             :                        {
    4500             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4501             :                        }
    4502             : #endif
    4503           0 :                     operatorPosition->set_parent(expression);
    4504           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    4505             :                   }
    4506             :              }
    4507             :         }
    4508             : 
    4509             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    4510           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    4511           0 :      if (initializedName != NULL)
    4512             :         {
    4513             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4514           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    4515           0 :           ROSE_ASSERT(start != NULL);
    4516             : #if 0
    4517             :        // Debugging information
    4518             :           if (start->get_parent() == NULL)
    4519             :              {
    4520             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4521             :              }
    4522             : #endif
    4523           0 :           start->set_parent(initializedName);
    4524           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4525             : 
    4526             : #if 0
    4527             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    4528             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    4529             : 
    4530             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    4531             :        // ROSE_ASSERT(end != NULL);
    4532             :           if (end == NULL)
    4533             :              {
    4534             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    4535             :              }
    4536             :             else
    4537             :              {
    4538             :                if (end->get_parent() == NULL)
    4539             :                   {
    4540             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4541             :                   }
    4542             :                end->set_parent(initializedName);
    4543             :                ROSE_ASSERT(end->get_parent() != NULL);
    4544             :              }
    4545             : #endif
    4546             :         }
    4547             : 
    4548             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    4549           0 :      help.insertCopiedNodePair(this,result);
    4550             : 
    4551             :   // printf ("End of copy SgFuncDecl_attr = %p = %s \n",this,SageInterface::get_name(this).c_str());
    4552             : 
    4553             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    4554             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    4555           0 :      help.decrementDepth();
    4556             : 
    4557             :   // Test if this is the root of the copy!
    4558           0 :      if (help.get_depth() == 0)
    4559             :         {
    4560             :        // This is the original calling node.
    4561             : 
    4562             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    4563             :        // printf ("Calling SgFuncDecl_attr::fixupCopy() (from root of AST being copied) \n");
    4564             : #if ALT_FIXUP_COPY
    4565             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    4566           0 :           fixupCopy_scopes (result,help);
    4567           0 :           fixupCopy_symbols (result,help);
    4568           0 :           fixupCopy_references (result,help);
    4569             : #else
    4570             :           fixupCopy(result,help);
    4571             : #endif
    4572             :        // Allow this to be called recursively, so accumulate the state.
    4573             :        // Also, clear the state in the SgCopyHelp object.
    4574             :        // help.clearState();
    4575             :         }
    4576             : 
    4577           0 :      return result;
    4578             :    }
    4579             : 
    4580             : 
    4581             : /* #line 4582 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    4582             : 
    4583             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4584             : 
    4585           0 : SgNode* SgClassDecl_attr::copy ( SgCopyHelp& help) const
    4586             :    {
    4587           0 :      SgClassDecl_attr* result = NULL;
    4588             : 
    4589             :   // printf ("Copy SgClassDecl_attr = %p = %s \n",this,SageInterface::get_name(this).c_str());
    4590             : 
    4591             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    4592             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    4593             :   // The default value of the depth is 0, so after this call the depth is 1!
    4594           0 :      help.incrementDepth();
    4595             : 
    4596             : #if 0
    4597             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    4598             :   // but it is not generally true that things can only be copied once!
    4599             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    4600             :   // AstAttribute* existingAttribute = const_cast<SgClassDecl_attr*>(this)->attribute["copied"];
    4601             :      bool previouslyCopied = const_cast<SgClassDecl_attr*>(this)->attribute.exists("copied");
    4602             :      if (previouslyCopied == true)
    4603             :         {
    4604             :           this->get_file_info()->display("Called from copy SgClassDecl_attr: debug");
    4605             :         }
    4606             :      ROSE_ASSERT(previouslyCopied == false);
    4607             : 
    4608             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    4609             :      AstAttribute* newAttribute = new AstAttribute();
    4610             :      ROSE_ASSERT(newAttribute != NULL);
    4611             : 
    4612             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    4613             :      const_cast<SgClassDecl_attr*>(this)->attribute.add("copied",newAttribute);
    4614             : #endif
    4615             : 
    4616             :   // Copy data members from base classes
    4617             :  
    4618             : 
    4619             :   // Build an empty copy of this object (will be filled in, but 
    4620             :   // the parent can't be set and must be set by the caller)
    4621           0 :      result = new SgClassDecl_attr(  );
    4622           0 :      ROSE_ASSERT(result != NULL);
    4623             : 
    4624             :   // Copy data members of "this" class
    4625             :   // Copy non-constructor parameter data member (access function): name_copy
    4626             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
    4627             :   // case: toBeCopied == COPY_DATA for name
    4628           0 :      std::string name_copy = p_name; 
    4629           0 :      result->p_name = name_copy; 
    4630             :   // Copy non-constructor parameter data member (access function): bitflag_copy
    4631             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for bitflag
    4632             :   // case: toBeCopied == COPY_DATA for bitflag
    4633           0 :      unsigned long int bitflag_copy = p_bitflag; 
    4634           0 :      result->p_bitflag = bitflag_copy; 
    4635             : 
    4636             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4637             : 
    4638             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    4639             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    4640             :   // fixupCopy(result,help);
    4641             : 
    4642             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    4643             :   // the Sg_File_Info objects that are built for the new IR nodes.
    4644           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    4645           0 :      if (locatedNode != NULL)
    4646             :         {
    4647             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4648           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    4649           0 :           ROSE_ASSERT(start != NULL);
    4650             : #if 0
    4651             :        // Debugging information
    4652             :           if (start->get_parent() == NULL)
    4653             :              {
    4654             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4655             :              }
    4656             : #endif
    4657           0 :           start->set_parent(locatedNode);
    4658           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4659             : 
    4660           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    4661             : 
    4662             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    4663             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    4664             :        // ROSE_ASSERT(end != NULL);
    4665           0 :           if (end == NULL)
    4666             :              {
    4667           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    4668             :              }
    4669             :             else
    4670             :              {
    4671             : #if 0
    4672             :             // Debugging information
    4673             :                if (end->get_parent() == NULL)
    4674             :                   {
    4675             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4676             :                   }
    4677             : #endif
    4678           0 :                end->set_parent(locatedNode);
    4679           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    4680             :              }
    4681             : 
    4682           0 :           SgExpression* expression = isSgExpression(result);
    4683           0 :           if (isSgExpression(this) != NULL)
    4684             :              {
    4685           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    4686             : 
    4687             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    4688           0 :                if (operatorPosition != NULL)
    4689             :                   {
    4690             : #if 0
    4691             :                  // Debugging information
    4692             :                     if (operatorPosition->get_parent() == NULL)
    4693             :                        {
    4694             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4695             :                        }
    4696             : #endif
    4697           0 :                     operatorPosition->set_parent(expression);
    4698           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    4699             :                   }
    4700             :              }
    4701             :         }
    4702             : 
    4703             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    4704           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    4705           0 :      if (initializedName != NULL)
    4706             :         {
    4707             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4708           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    4709           0 :           ROSE_ASSERT(start != NULL);
    4710             : #if 0
    4711             :        // Debugging information
    4712             :           if (start->get_parent() == NULL)
    4713             :              {
    4714             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4715             :              }
    4716             : #endif
    4717           0 :           start->set_parent(initializedName);
    4718           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4719             : 
    4720             : #if 0
    4721             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    4722             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    4723             : 
    4724             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    4725             :        // ROSE_ASSERT(end != NULL);
    4726             :           if (end == NULL)
    4727             :              {
    4728             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    4729             :              }
    4730             :             else
    4731             :              {
    4732             :                if (end->get_parent() == NULL)
    4733             :                   {
    4734             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4735             :                   }
    4736             :                end->set_parent(initializedName);
    4737             :                ROSE_ASSERT(end->get_parent() != NULL);
    4738             :              }
    4739             : #endif
    4740             :         }
    4741             : 
    4742             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    4743           0 :      help.insertCopiedNodePair(this,result);
    4744             : 
    4745             :   // printf ("End of copy SgClassDecl_attr = %p = %s \n",this,SageInterface::get_name(this).c_str());
    4746             : 
    4747             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    4748             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    4749           0 :      help.decrementDepth();
    4750             : 
    4751             :   // Test if this is the root of the copy!
    4752           0 :      if (help.get_depth() == 0)
    4753             :         {
    4754             :        // This is the original calling node.
    4755             : 
    4756             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    4757             :        // printf ("Calling SgClassDecl_attr::fixupCopy() (from root of AST being copied) \n");
    4758             : #if ALT_FIXUP_COPY
    4759             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    4760           0 :           fixupCopy_scopes (result,help);
    4761           0 :           fixupCopy_symbols (result,help);
    4762           0 :           fixupCopy_references (result,help);
    4763             : #else
    4764             :           fixupCopy(result,help);
    4765             : #endif
    4766             :        // Allow this to be called recursively, so accumulate the state.
    4767             :        // Also, clear the state in the SgCopyHelp object.
    4768             :        // help.clearState();
    4769             :         }
    4770             : 
    4771           0 :      return result;
    4772             :    }
    4773             : 
    4774             : 
    4775             : /* #line 4776 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    4776             : 
    4777             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4778             : 
    4779       34146 : SgNode* Sg_File_Info::copy ( SgCopyHelp& help) const
    4780             :    {
    4781       34146 :      Sg_File_Info* result = NULL;
    4782             : 
    4783             :   // printf ("Copy Sg_File_Info = %p = %s \n",this,SageInterface::get_name(this).c_str());
    4784             : 
    4785             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    4786             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    4787             :   // The default value of the depth is 0, so after this call the depth is 1!
    4788       34146 :      help.incrementDepth();
    4789             : 
    4790             : #if 0
    4791             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    4792             :   // but it is not generally true that things can only be copied once!
    4793             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    4794             :   // AstAttribute* existingAttribute = const_cast<Sg_File_Info*>(this)->attribute["copied"];
    4795             :      bool previouslyCopied = const_cast<Sg_File_Info*>(this)->attribute.exists("copied");
    4796             :      if (previouslyCopied == true)
    4797             :         {
    4798             :           this->get_file_info()->display("Called from copy Sg_File_Info: debug");
    4799             :         }
    4800             :      ROSE_ASSERT(previouslyCopied == false);
    4801             : 
    4802             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    4803             :      AstAttribute* newAttribute = new AstAttribute();
    4804             :      ROSE_ASSERT(newAttribute != NULL);
    4805             : 
    4806             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    4807             :      const_cast<Sg_File_Info*>(this)->attribute.add("copied",newAttribute);
    4808             : #endif
    4809             : 
    4810             :   // Copy data members from base classes
    4811             :  
    4812             : 
    4813             :   // Build an empty copy of this object (will be filled in, but 
    4814             :   // the parent can't be set and must be set by the caller)
    4815       34146 :      result = new Sg_File_Info(  );
    4816       34146 :      ROSE_ASSERT(result != NULL);
    4817             : 
    4818             :   // Copy data members of "this" class
    4819             :   // Copy non-constructor parameter data member (no access function): result->p_file_id
    4820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for file_id
    4821             :   // case: toBeCopied == COPY_DATA for file_id
    4822       34146 :      int file_id_copy = p_file_id; 
    4823       34146 :      result->p_file_id = file_id_copy; 
    4824             :   // Copy non-constructor parameter data member (no access function): result->p_line
    4825             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for line
    4826             :   // case: toBeCopied == COPY_DATA for line
    4827       34146 :      int line_copy = p_line; 
    4828       34146 :      result->p_line = line_copy; 
    4829             :   // Copy non-constructor parameter data member (no access function): result->p_col
    4830             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for col
    4831             :   // case: toBeCopied == COPY_DATA for col
    4832       34146 :      int col_copy = p_col; 
    4833       34146 :      result->p_col = col_copy; 
    4834             :   // Copy non-constructor parameter data member (no access function): result->p_classificationBitField
    4835             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for classificationBitField
    4836             :   // case: toBeCopied == COPY_DATA for classificationBitField
    4837       34146 :      unsigned int classificationBitField_copy = p_classificationBitField; 
    4838       34146 :      result->p_classificationBitField = classificationBitField_copy; 
    4839             :   // Copy non-constructor parameter data member (no access function): result->p_physical_file_id
    4840             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for physical_file_id
    4841             :   // case: toBeCopied == COPY_DATA for physical_file_id
    4842       34146 :      int physical_file_id_copy = p_physical_file_id; 
    4843       34146 :      result->p_physical_file_id = physical_file_id_copy; 
    4844             :   // Copy non-constructor parameter data member (no access function): result->p_physical_line
    4845             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for physical_line
    4846             :   // case: toBeCopied == COPY_DATA for physical_line
    4847       34146 :      int physical_line_copy = p_physical_line; 
    4848       34146 :      result->p_physical_line = physical_line_copy; 
    4849             :   // Copy non-constructor parameter data member (no access function): result->p_source_sequence_number
    4850             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_number
    4851             :   // case: toBeCopied == COPY_DATA for source_sequence_number
    4852       34146 :      unsigned int source_sequence_number_copy = p_source_sequence_number; 
    4853       34146 :      result->p_source_sequence_number = source_sequence_number_copy; 
    4854             :   // Copy non-constructor parameter data member (list access function): result->get_fileIDsToUnparse()
    4855             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fileIDsToUnparse
    4856             :   // case: toBeCopied == COPY_DATA for fileIDsToUnparse
    4857       34146 :      SgFileIdList fileIDsToUnparse_copy = p_fileIDsToUnparse; 
    4858       34146 :      result->p_fileIDsToUnparse = fileIDsToUnparse_copy; 
    4859             :   // Copy non-constructor parameter data member (list access function): result->get_fileLineNumbersToUnparse()
    4860             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fileLineNumbersToUnparse
    4861             :   // case: toBeCopied == COPY_DATA for fileLineNumbersToUnparse
    4862       68292 :      SgFileLineNumberList fileLineNumbersToUnparse_copy = p_fileLineNumbersToUnparse; 
    4863       34146 :      result->p_fileLineNumbersToUnparse = fileLineNumbersToUnparse_copy; 
    4864             :   // Copy non-constructor parameter data member (no access function): result->p_fileidtoname_map
    4865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fileidtoname_map
    4866             :   // case: toBeCopied == COPY_DATA for fileidtoname_map
    4867       34146 :      static std::map<int, std::string> fileidtoname_map_copy = p_fileidtoname_map; 
    4868       34146 :      result->p_fileidtoname_map = fileidtoname_map_copy; 
    4869             :   // Copy non-constructor parameter data member (no access function): result->p_nametofileid_map
    4870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nametofileid_map
    4871             :   // case: toBeCopied == COPY_DATA for nametofileid_map
    4872       34146 :      static std::map<std::string, int> nametofileid_map_copy = p_nametofileid_map; 
    4873       34146 :      result->p_nametofileid_map = nametofileid_map_copy; 
    4874             : 
    4875             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    4876             : 
    4877             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    4878             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    4879             :   // fixupCopy(result,help);
    4880             : 
    4881             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    4882             :   // the Sg_File_Info objects that are built for the new IR nodes.
    4883       34146 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    4884       34146 :      if (locatedNode != NULL)
    4885             :         {
    4886             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4887           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    4888           0 :           ROSE_ASSERT(start != NULL);
    4889             : #if 0
    4890             :        // Debugging information
    4891             :           if (start->get_parent() == NULL)
    4892             :              {
    4893             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4894             :              }
    4895             : #endif
    4896           0 :           start->set_parent(locatedNode);
    4897           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4898             : 
    4899           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    4900             : 
    4901             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    4902             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    4903             :        // ROSE_ASSERT(end != NULL);
    4904           0 :           if (end == NULL)
    4905             :              {
    4906           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    4907             :              }
    4908             :             else
    4909             :              {
    4910             : #if 0
    4911             :             // Debugging information
    4912             :                if (end->get_parent() == NULL)
    4913             :                   {
    4914             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4915             :                   }
    4916             : #endif
    4917           0 :                end->set_parent(locatedNode);
    4918           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    4919             :              }
    4920             : 
    4921           0 :           SgExpression* expression = isSgExpression(result);
    4922           0 :           if (isSgExpression(this) != NULL)
    4923             :              {
    4924           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    4925             : 
    4926             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    4927           0 :                if (operatorPosition != NULL)
    4928             :                   {
    4929             : #if 0
    4930             :                  // Debugging information
    4931             :                     if (operatorPosition->get_parent() == NULL)
    4932             :                        {
    4933             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4934             :                        }
    4935             : #endif
    4936           0 :                     operatorPosition->set_parent(expression);
    4937           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    4938             :                   }
    4939             :              }
    4940             :         }
    4941             : 
    4942             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    4943       34146 :      SgInitializedName* initializedName = isSgInitializedName(result);
    4944       34146 :      if (initializedName != NULL)
    4945             :         {
    4946             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    4947           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    4948           0 :           ROSE_ASSERT(start != NULL);
    4949             : #if 0
    4950             :        // Debugging information
    4951             :           if (start->get_parent() == NULL)
    4952             :              {
    4953             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4954             :              }
    4955             : #endif
    4956           0 :           start->set_parent(initializedName);
    4957           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    4958             : 
    4959             : #if 0
    4960             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    4961             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    4962             : 
    4963             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    4964             :        // ROSE_ASSERT(end != NULL);
    4965             :           if (end == NULL)
    4966             :              {
    4967             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    4968             :              }
    4969             :             else
    4970             :              {
    4971             :                if (end->get_parent() == NULL)
    4972             :                   {
    4973             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    4974             :                   }
    4975             :                end->set_parent(initializedName);
    4976             :                ROSE_ASSERT(end->get_parent() != NULL);
    4977             :              }
    4978             : #endif
    4979             :         }
    4980             : 
    4981             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    4982       34146 :      help.insertCopiedNodePair(this,result);
    4983             : 
    4984             :   // printf ("End of copy Sg_File_Info = %p = %s \n",this,SageInterface::get_name(this).c_str());
    4985             : 
    4986             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    4987             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    4988       34146 :      help.decrementDepth();
    4989             : 
    4990             :   // Test if this is the root of the copy!
    4991       34146 :      if (help.get_depth() == 0)
    4992             :         {
    4993             :        // This is the original calling node.
    4994             : 
    4995             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    4996             :        // printf ("Calling Sg_File_Info::fixupCopy() (from root of AST being copied) \n");
    4997             : #if ALT_FIXUP_COPY
    4998             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    4999       34146 :           fixupCopy_scopes (result,help);
    5000       34146 :           fixupCopy_symbols (result,help);
    5001       34146 :           fixupCopy_references (result,help);
    5002             : #else
    5003             :           fixupCopy(result,help);
    5004             : #endif
    5005             :        // Allow this to be called recursively, so accumulate the state.
    5006             :        // Also, clear the state in the SgCopyHelp object.
    5007             :        // help.clearState();
    5008             :         }
    5009             : 
    5010       68292 :      return result;
    5011             :    }
    5012             : 
    5013             : 
    5014             : /* #line 5015 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    5015             : 
    5016             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    5017             : 
    5018           0 : SgNode* SgFile::copy ( SgCopyHelp& help) const
    5019             :    {
    5020           0 :      SgFile* result = NULL;
    5021             : 
    5022             :   // printf ("Copy SgFile = %p = %s \n",this,SageInterface::get_name(this).c_str());
    5023             : 
    5024             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    5025             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    5026             :   // The default value of the depth is 0, so after this call the depth is 1!
    5027           0 :      help.incrementDepth();
    5028             : 
    5029             : #if 0
    5030             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    5031             :   // but it is not generally true that things can only be copied once!
    5032             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    5033             :   // AstAttribute* existingAttribute = const_cast<SgFile*>(this)->attribute["copied"];
    5034             :      bool previouslyCopied = const_cast<SgFile*>(this)->attribute.exists("copied");
    5035             :      if (previouslyCopied == true)
    5036             :         {
    5037             :           this->get_file_info()->display("Called from copy SgFile: debug");
    5038             :         }
    5039             :      ROSE_ASSERT(previouslyCopied == false);
    5040             : 
    5041             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    5042             :      AstAttribute* newAttribute = new AstAttribute();
    5043             :      ROSE_ASSERT(newAttribute != NULL);
    5044             : 
    5045             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    5046             :      const_cast<SgFile*>(this)->attribute.add("copied",newAttribute);
    5047             : #endif
    5048             : 
    5049             :   // Copy data members from base classes
    5050             :  
    5051             : 
    5052             :   // Build an empty copy of this object (will be filled in, but 
    5053             :   // the parent can't be set and must be set by the caller)
    5054           0 :      result = new SgFile(  );
    5055           0 :      ROSE_ASSERT(result != NULL);
    5056             : 
    5057             :   // Copy data members of "this" class
    5058             :   // Copy non-constructor parameter data member (access function): startOfConstruct_copy
    5059             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
    5060             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
    5061           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
    5062           0 :      if ( p_startOfConstruct != NULL ) 
    5063             :         { 
    5064           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
    5065             :         } 
    5066             :        else 
    5067             :         { 
    5068             :           startOfConstruct_copy = NULL; 
    5069             :         } 
    5070             :   /* check for a valid pointer and delete if present */ 
    5071           0 :      if (result->p_startOfConstruct != NULL) delete result->p_startOfConstruct; 
    5072             :   /* add assignment to result here */ 
    5073           0 :      result->p_startOfConstruct = startOfConstruct_copy; 
    5074             :   // Copy non-constructor parameter data member (access function): originalCommandLineArgumentList_copy
    5075             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalCommandLineArgumentList
    5076             :   // case: toBeCopied == COPY_DATA for originalCommandLineArgumentList
    5077           0 :      SgStringList originalCommandLineArgumentList_copy = p_originalCommandLineArgumentList; 
    5078           0 :      result->p_originalCommandLineArgumentList = originalCommandLineArgumentList_copy; 
    5079             :   // Copy non-constructor parameter data member (access function): verbose_copy
    5080             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for verbose
    5081             :   // case: toBeCopied == COPY_DATA for verbose
    5082           0 :      int verbose_copy = p_verbose; 
    5083           0 :      result->p_verbose = verbose_copy; 
    5084             :   // Copy non-constructor parameter data member (access function): output_warnings_copy
    5085             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for output_warnings
    5086             :   // case: toBeCopied == COPY_DATA for output_warnings
    5087           0 :      bool output_warnings_copy = p_output_warnings; 
    5088           0 :      result->p_output_warnings = output_warnings_copy; 
    5089             :   // Copy non-constructor parameter data member (access function): C_only_copy
    5090             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for C_only
    5091             :   // case: toBeCopied == COPY_DATA for C_only
    5092           0 :      bool C_only_copy = p_C_only; 
    5093           0 :      result->p_C_only = C_only_copy; 
    5094             :   // Copy non-constructor parameter data member (access function): Cxx_only_copy
    5095             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cxx_only
    5096             :   // case: toBeCopied == COPY_DATA for Cxx_only
    5097           0 :      bool Cxx_only_copy = p_Cxx_only; 
    5098           0 :      result->p_Cxx_only = Cxx_only_copy; 
    5099             :   // Copy non-constructor parameter data member (access function): Fortran_only_copy
    5100             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Fortran_only
    5101             :   // case: toBeCopied == COPY_DATA for Fortran_only
    5102           0 :      bool Fortran_only_copy = p_Fortran_only; 
    5103           0 :      result->p_Fortran_only = Fortran_only_copy; 
    5104             :   // Copy non-constructor parameter data member (access function): CoArrayFortran_only_copy
    5105             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for CoArrayFortran_only
    5106             :   // case: toBeCopied == COPY_DATA for CoArrayFortran_only
    5107           0 :      bool CoArrayFortran_only_copy = p_CoArrayFortran_only; 
    5108           0 :      result->p_CoArrayFortran_only = CoArrayFortran_only_copy; 
    5109             :   // Copy non-constructor parameter data member (access function): upc_threads_copy
    5110             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upc_threads
    5111             :   // case: toBeCopied == COPY_DATA for upc_threads
    5112           0 :      int upc_threads_copy = p_upc_threads; 
    5113           0 :      result->p_upc_threads = upc_threads_copy; 
    5114             :   // Copy non-constructor parameter data member (access function): Cuda_only_copy
    5115             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cuda_only
    5116             :   // case: toBeCopied == COPY_DATA for Cuda_only
    5117           0 :      bool Cuda_only_copy = p_Cuda_only; 
    5118           0 :      result->p_Cuda_only = Cuda_only_copy; 
    5119             :   // Copy non-constructor parameter data member (access function): OpenCL_only_copy
    5120             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for OpenCL_only
    5121             :   // case: toBeCopied == COPY_DATA for OpenCL_only
    5122           0 :      bool OpenCL_only_copy = p_OpenCL_only; 
    5123           0 :      result->p_OpenCL_only = OpenCL_only_copy; 
    5124             :   // Copy non-constructor parameter data member (access function): requires_C_preprocessor_copy
    5125             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requires_C_preprocessor
    5126             :   // case: toBeCopied == COPY_DATA for requires_C_preprocessor
    5127           0 :      bool requires_C_preprocessor_copy = p_requires_C_preprocessor; 
    5128           0 :      result->p_requires_C_preprocessor = requires_C_preprocessor_copy; 
    5129             :   // Copy non-constructor parameter data member (access function): inputFormat_copy
    5130             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for inputFormat
    5131             :   // case: toBeCopied == COPY_DATA for inputFormat
    5132           0 :      SgFile::outputFormatOption_enum inputFormat_copy = p_inputFormat; 
    5133           0 :      result->p_inputFormat = inputFormat_copy; 
    5134             :   // Copy non-constructor parameter data member (access function): outputFormat_copy
    5135             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for outputFormat
    5136             :   // case: toBeCopied == COPY_DATA for outputFormat
    5137           0 :      SgFile::outputFormatOption_enum outputFormat_copy = p_outputFormat; 
    5138           0 :      result->p_outputFormat = outputFormat_copy; 
    5139             :   // Copy non-constructor parameter data member (access function): backendCompileFormat_copy
    5140             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for backendCompileFormat
    5141             :   // case: toBeCopied == COPY_DATA for backendCompileFormat
    5142           0 :      SgFile::outputFormatOption_enum backendCompileFormat_copy = p_backendCompileFormat; 
    5143           0 :      result->p_backendCompileFormat = backendCompileFormat_copy; 
    5144             :   // Copy non-constructor parameter data member (access function): fortran_implicit_none_copy
    5145             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fortran_implicit_none
    5146             :   // case: toBeCopied == COPY_DATA for fortran_implicit_none
    5147           0 :      bool fortran_implicit_none_copy = p_fortran_implicit_none; 
    5148           0 :      result->p_fortran_implicit_none = fortran_implicit_none_copy; 
    5149             :   // Copy non-constructor parameter data member (access function): openmp_copy
    5150             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp
    5151             :   // case: toBeCopied == COPY_DATA for openmp
    5152           0 :      bool openmp_copy = p_openmp; 
    5153           0 :      result->p_openmp = openmp_copy; 
    5154             :   // Copy non-constructor parameter data member (access function): openmp_parse_only_copy
    5155             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_parse_only
    5156             :   // case: toBeCopied == COPY_DATA for openmp_parse_only
    5157           0 :      bool openmp_parse_only_copy = p_openmp_parse_only; 
    5158           0 :      result->p_openmp_parse_only = openmp_parse_only_copy; 
    5159             :   // Copy non-constructor parameter data member (access function): openmp_ast_only_copy
    5160             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_ast_only
    5161             :   // case: toBeCopied == COPY_DATA for openmp_ast_only
    5162           0 :      bool openmp_ast_only_copy = p_openmp_ast_only; 
    5163           0 :      result->p_openmp_ast_only = openmp_ast_only_copy; 
    5164             :   // Copy non-constructor parameter data member (access function): openmp_lowering_copy
    5165             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_lowering
    5166             :   // case: toBeCopied == COPY_DATA for openmp_lowering
    5167           0 :      bool openmp_lowering_copy = p_openmp_lowering; 
    5168           0 :      result->p_openmp_lowering = openmp_lowering_copy; 
    5169             :   // Copy non-constructor parameter data member (access function): openmp_analyzing_copy
    5170             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_analyzing
    5171             :   // case: toBeCopied == COPY_DATA for openmp_analyzing
    5172           0 :      bool openmp_analyzing_copy = p_openmp_analyzing; 
    5173           0 :      result->p_openmp_analyzing = openmp_analyzing_copy; 
    5174             :   // Copy non-constructor parameter data member (access function): cray_pointer_support_copy
    5175             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for cray_pointer_support
    5176             :   // case: toBeCopied == COPY_DATA for cray_pointer_support
    5177           0 :      bool cray_pointer_support_copy = p_cray_pointer_support; 
    5178           0 :      result->p_cray_pointer_support = cray_pointer_support_copy; 
    5179             :   // Copy non-constructor parameter data member (access function): failsafe_copy
    5180             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for failsafe
    5181             :   // case: toBeCopied == COPY_DATA for failsafe
    5182           0 :      bool failsafe_copy = p_failsafe; 
    5183           0 :      result->p_failsafe = failsafe_copy; 
    5184             :   // Copy non-constructor parameter data member (access function): output_parser_actions_copy
    5185             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for output_parser_actions
    5186             :   // case: toBeCopied == COPY_DATA for output_parser_actions
    5187           0 :      bool output_parser_actions_copy = p_output_parser_actions; 
    5188           0 :      result->p_output_parser_actions = output_parser_actions_copy; 
    5189             :   // Copy non-constructor parameter data member (access function): exit_after_parser_copy
    5190             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exit_after_parser
    5191             :   // case: toBeCopied == COPY_DATA for exit_after_parser
    5192           0 :      bool exit_after_parser_copy = p_exit_after_parser; 
    5193           0 :      result->p_exit_after_parser = exit_after_parser_copy; 
    5194             :   // Copy non-constructor parameter data member (access function): skip_syntax_check_copy
    5195             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_syntax_check
    5196             :   // case: toBeCopied == COPY_DATA for skip_syntax_check
    5197           0 :      bool skip_syntax_check_copy = p_skip_syntax_check; 
    5198           0 :      result->p_skip_syntax_check = skip_syntax_check_copy; 
    5199             :   // Copy non-constructor parameter data member (access function): skip_parser_copy
    5200             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_parser
    5201             :   // case: toBeCopied == COPY_DATA for skip_parser
    5202           0 :      bool skip_parser_copy = p_skip_parser; 
    5203           0 :      result->p_skip_parser = skip_parser_copy; 
    5204             :   // Copy non-constructor parameter data member (access function): relax_syntax_check_copy
    5205             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for relax_syntax_check
    5206             :   // case: toBeCopied == COPY_DATA for relax_syntax_check
    5207           0 :      bool relax_syntax_check_copy = p_relax_syntax_check; 
    5208           0 :      result->p_relax_syntax_check = relax_syntax_check_copy; 
    5209             :   // Copy non-constructor parameter data member (access function): skip_translation_from_edg_ast_to_rose_ast_copy
    5210             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_translation_from_edg_ast_to_rose_ast
    5211             :   // case: toBeCopied == COPY_DATA for skip_translation_from_edg_ast_to_rose_ast
    5212           0 :      bool skip_translation_from_edg_ast_to_rose_ast_copy = p_skip_translation_from_edg_ast_to_rose_ast; 
    5213           0 :      result->p_skip_translation_from_edg_ast_to_rose_ast = skip_translation_from_edg_ast_to_rose_ast_copy; 
    5214             :   // Copy non-constructor parameter data member (access function): skip_transformation_copy
    5215             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_transformation
    5216             :   // case: toBeCopied == COPY_DATA for skip_transformation
    5217           0 :      bool skip_transformation_copy = p_skip_transformation; 
    5218           0 :      result->p_skip_transformation = skip_transformation_copy; 
    5219             :   // Copy non-constructor parameter data member (access function): skip_unparse_copy
    5220             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_unparse
    5221             :   // case: toBeCopied == COPY_DATA for skip_unparse
    5222           0 :      bool skip_unparse_copy = p_skip_unparse; 
    5223           0 :      result->p_skip_unparse = skip_unparse_copy; 
    5224             :   // Copy non-constructor parameter data member (access function): skipfinalCompileStep_copy
    5225             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipfinalCompileStep
    5226             :   // case: toBeCopied == COPY_DATA for skipfinalCompileStep
    5227           0 :      bool skipfinalCompileStep_copy = p_skipfinalCompileStep; 
    5228           0 :      result->p_skipfinalCompileStep = skipfinalCompileStep_copy; 
    5229             :   // Copy non-constructor parameter data member (access function): unparse_includes_copy
    5230             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_includes
    5231             :   // case: toBeCopied == COPY_DATA for unparse_includes
    5232           0 :      bool unparse_includes_copy = p_unparse_includes; 
    5233           0 :      result->p_unparse_includes = unparse_includes_copy; 
    5234             :   // Copy non-constructor parameter data member (access function): unparse_line_directives_copy
    5235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_line_directives
    5236             :   // case: toBeCopied == COPY_DATA for unparse_line_directives
    5237           0 :      bool unparse_line_directives_copy = p_unparse_line_directives; 
    5238           0 :      result->p_unparse_line_directives = unparse_line_directives_copy; 
    5239             :   // Copy non-constructor parameter data member (access function): unparse_function_calls_using_operator_syntax_copy
    5240             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_function_calls_using_operator_syntax
    5241             :   // case: toBeCopied == COPY_DATA for unparse_function_calls_using_operator_syntax
    5242           0 :      bool unparse_function_calls_using_operator_syntax_copy = p_unparse_function_calls_using_operator_syntax; 
    5243           0 :      result->p_unparse_function_calls_using_operator_syntax = unparse_function_calls_using_operator_syntax_copy; 
    5244             :   // Copy non-constructor parameter data member (access function): unparse_function_calls_using_operator_names_copy
    5245             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_function_calls_using_operator_names
    5246             :   // case: toBeCopied == COPY_DATA for unparse_function_calls_using_operator_names
    5247           0 :      bool unparse_function_calls_using_operator_names_copy = p_unparse_function_calls_using_operator_names; 
    5248           0 :      result->p_unparse_function_calls_using_operator_names = unparse_function_calls_using_operator_names_copy; 
    5249             :   // Copy non-constructor parameter data member (access function): unparse_instruction_addresses_copy
    5250             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_instruction_addresses
    5251             :   // case: toBeCopied == COPY_DATA for unparse_instruction_addresses
    5252           0 :      bool unparse_instruction_addresses_copy = p_unparse_instruction_addresses; 
    5253           0 :      result->p_unparse_instruction_addresses = unparse_instruction_addresses_copy; 
    5254             :   // Copy non-constructor parameter data member (access function): unparse_raw_memory_contents_copy
    5255             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_raw_memory_contents
    5256             :   // case: toBeCopied == COPY_DATA for unparse_raw_memory_contents
    5257           0 :      bool unparse_raw_memory_contents_copy = p_unparse_raw_memory_contents; 
    5258           0 :      result->p_unparse_raw_memory_contents = unparse_raw_memory_contents_copy; 
    5259             :   // Copy non-constructor parameter data member (access function): unparse_binary_file_format_copy
    5260             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_binary_file_format
    5261             :   // case: toBeCopied == COPY_DATA for unparse_binary_file_format
    5262           0 :      bool unparse_binary_file_format_copy = p_unparse_binary_file_format; 
    5263           0 :      result->p_unparse_binary_file_format = unparse_binary_file_format_copy; 
    5264             :   // Copy non-constructor parameter data member (access function): outputLanguage_copy
    5265             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for outputLanguage
    5266             :   // case: toBeCopied == COPY_DATA for outputLanguage
    5267           0 :      SgFile::languageOption_enum outputLanguage_copy = p_outputLanguage; 
    5268           0 :      result->p_outputLanguage = outputLanguage_copy; 
    5269             :   // Copy non-constructor parameter data member (access function): inputLanguage_copy
    5270             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for inputLanguage
    5271             :   // case: toBeCopied == COPY_DATA for inputLanguage
    5272           0 :      SgFile::languageOption_enum inputLanguage_copy = p_inputLanguage; 
    5273           0 :      result->p_inputLanguage = inputLanguage_copy; 
    5274             :   // Copy non-constructor parameter data member (access function): sourceFileNameWithPath_copy
    5275             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileNameWithPath
    5276             :   // case: toBeCopied == COPY_DATA for sourceFileNameWithPath
    5277           0 :      std::string sourceFileNameWithPath_copy = p_sourceFileNameWithPath; 
    5278           0 :      result->p_sourceFileNameWithPath = sourceFileNameWithPath_copy; 
    5279             :   // Copy non-constructor parameter data member (access function): sourceFileNameWithoutPath_copy
    5280             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileNameWithoutPath
    5281             :   // case: toBeCopied == COPY_DATA for sourceFileNameWithoutPath
    5282           0 :      std::string sourceFileNameWithoutPath_copy = p_sourceFileNameWithoutPath; 
    5283           0 :      result->p_sourceFileNameWithoutPath = sourceFileNameWithoutPath_copy; 
    5284             :   // Copy non-constructor parameter data member (access function): unparse_output_filename_copy
    5285             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_output_filename
    5286             :   // case: toBeCopied == COPY_DATA for unparse_output_filename
    5287           0 :      std::string unparse_output_filename_copy = p_unparse_output_filename; 
    5288           0 :      result->p_unparse_output_filename = unparse_output_filename_copy; 
    5289             :   // Copy non-constructor parameter data member (access function): objectFileNameWithPath_copy
    5290             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for objectFileNameWithPath
    5291             :   // case: toBeCopied == COPY_DATA for objectFileNameWithPath
    5292           0 :      std::string objectFileNameWithPath_copy = p_objectFileNameWithPath; 
    5293           0 :      result->p_objectFileNameWithPath = objectFileNameWithPath_copy; 
    5294             :   // Copy non-constructor parameter data member (access function): objectFileNameWithoutPath_copy
    5295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for objectFileNameWithoutPath
    5296             :   // case: toBeCopied == COPY_DATA for objectFileNameWithoutPath
    5297           0 :      std::string objectFileNameWithoutPath_copy = p_objectFileNameWithoutPath; 
    5298           0 :      result->p_objectFileNameWithoutPath = objectFileNameWithoutPath_copy; 
    5299             :   // Copy non-constructor parameter data member (access function): useBackendOnly_copy
    5300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for useBackendOnly
    5301             :   // case: toBeCopied == COPY_DATA for useBackendOnly
    5302           0 :      bool useBackendOnly_copy = p_useBackendOnly; 
    5303           0 :      result->p_useBackendOnly = useBackendOnly_copy; 
    5304             :   // Copy non-constructor parameter data member (access function): compileOnly_copy
    5305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for compileOnly
    5306             :   // case: toBeCopied == COPY_DATA for compileOnly
    5307           0 :      bool compileOnly_copy = p_compileOnly; 
    5308           0 :      result->p_compileOnly = compileOnly_copy; 
    5309             :   // Copy non-constructor parameter data member (access function): savedFrontendCommandLine_copy
    5310             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for savedFrontendCommandLine
    5311             :   // case: toBeCopied == COPY_DATA for savedFrontendCommandLine
    5312           0 :      std::string savedFrontendCommandLine_copy = p_savedFrontendCommandLine; 
    5313           0 :      result->p_savedFrontendCommandLine = savedFrontendCommandLine_copy; 
    5314             :   // Copy non-constructor parameter data member (access function): no_implicit_templates_copy
    5315             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_implicit_templates
    5316             :   // case: toBeCopied == COPY_DATA for no_implicit_templates
    5317           0 :      bool no_implicit_templates_copy = p_no_implicit_templates; 
    5318           0 :      result->p_no_implicit_templates = no_implicit_templates_copy; 
    5319             :   // Copy non-constructor parameter data member (access function): no_implicit_inline_templates_copy
    5320             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_implicit_inline_templates
    5321             :   // case: toBeCopied == COPY_DATA for no_implicit_inline_templates
    5322           0 :      bool no_implicit_inline_templates_copy = p_no_implicit_inline_templates; 
    5323           0 :      result->p_no_implicit_inline_templates = no_implicit_inline_templates_copy; 
    5324             :   // Copy non-constructor parameter data member (access function): skip_commentsAndDirectives_copy
    5325             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_commentsAndDirectives
    5326             :   // case: toBeCopied == COPY_DATA for skip_commentsAndDirectives
    5327           0 :      bool skip_commentsAndDirectives_copy = p_skip_commentsAndDirectives; 
    5328           0 :      result->p_skip_commentsAndDirectives = skip_commentsAndDirectives_copy; 
    5329             :   // Copy non-constructor parameter data member (access function): collectAllCommentsAndDirectives_copy
    5330             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for collectAllCommentsAndDirectives
    5331             :   // case: toBeCopied == COPY_DATA for collectAllCommentsAndDirectives
    5332           0 :      bool collectAllCommentsAndDirectives_copy = p_collectAllCommentsAndDirectives; 
    5333           0 :      result->p_collectAllCommentsAndDirectives = collectAllCommentsAndDirectives_copy; 
    5334             :   // Copy non-constructor parameter data member (access function): translateCommentsAndDirectivesIntoAST_copy
    5335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for translateCommentsAndDirectivesIntoAST
    5336             :   // case: toBeCopied == COPY_DATA for translateCommentsAndDirectivesIntoAST
    5337           0 :      bool translateCommentsAndDirectivesIntoAST_copy = p_translateCommentsAndDirectivesIntoAST; 
    5338           0 :      result->p_translateCommentsAndDirectivesIntoAST = translateCommentsAndDirectivesIntoAST_copy; 
    5339             :   // Copy non-constructor parameter data member (access function): unparseHeaderFiles_copy
    5340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparseHeaderFiles
    5341             :   // case: toBeCopied == COPY_DATA for unparseHeaderFiles
    5342           0 :      bool unparseHeaderFiles_copy = p_unparseHeaderFiles; 
    5343           0 :      result->p_unparseHeaderFiles = unparseHeaderFiles_copy; 
    5344             :   // Copy non-constructor parameter data member (access function): preprocessorDirectivesAndCommentsList_copy
    5345             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preprocessorDirectivesAndCommentsList
    5346             :   // case: toBeCopied == COPY_DATA for preprocessorDirectivesAndCommentsList
    5347           0 :      ROSEAttributesListContainerPtr preprocessorDirectivesAndCommentsList_copy = p_preprocessorDirectivesAndCommentsList; 
    5348           0 :      result->p_preprocessorDirectivesAndCommentsList = preprocessorDirectivesAndCommentsList_copy; 
    5349             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
    5350             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
    5351             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
    5352           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
    5353           0 :      if ( p_attributeMechanism != NULL ) 
    5354             :         { 
    5355           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
    5356             :         } 
    5357             :        else 
    5358             :         { 
    5359             :           attributeMechanism_copy = NULL; 
    5360             :         } 
    5361             :   /* check for a valid pointer and delete if present */ 
    5362           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
    5363             :   /* add assignment to result here */ 
    5364           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
    5365             :   // Copy non-constructor parameter data member (access function): KCC_frontend_copy
    5366             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for KCC_frontend
    5367             :   // case: toBeCopied == COPY_DATA for KCC_frontend
    5368           0 :      bool KCC_frontend_copy = p_KCC_frontend; 
    5369           0 :      result->p_KCC_frontend = KCC_frontend_copy; 
    5370             :   // Copy non-constructor parameter data member (access function): new_frontend_copy
    5371             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for new_frontend
    5372             :   // case: toBeCopied == COPY_DATA for new_frontend
    5373           0 :      bool new_frontend_copy = p_new_frontend; 
    5374           0 :      result->p_new_frontend = new_frontend_copy; 
    5375             :   // Copy non-constructor parameter data member (access function): disable_edg_backend_copy
    5376             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for disable_edg_backend
    5377             :   // case: toBeCopied == COPY_DATA for disable_edg_backend
    5378           0 :      bool disable_edg_backend_copy = p_disable_edg_backend; 
    5379           0 :      result->p_disable_edg_backend = disable_edg_backend_copy; 
    5380             :   // Copy non-constructor parameter data member (access function): disable_sage_backend_copy
    5381             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for disable_sage_backend
    5382             :   // case: toBeCopied == COPY_DATA for disable_sage_backend
    5383           0 :      bool disable_sage_backend_copy = p_disable_sage_backend; 
    5384           0 :      result->p_disable_sage_backend = disable_sage_backend_copy; 
    5385             :   // Copy non-constructor parameter data member (access function): testingLevel_copy
    5386             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for testingLevel
    5387             :   // case: toBeCopied == COPY_DATA for testingLevel
    5388           0 :      int testingLevel_copy = p_testingLevel; 
    5389           0 :      result->p_testingLevel = testingLevel_copy; 
    5390             :   // Copy non-constructor parameter data member (access function): preinit_il_copy
    5391             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preinit_il
    5392             :   // case: toBeCopied == COPY_DATA for preinit_il
    5393           0 :      bool preinit_il_copy = p_preinit_il; 
    5394           0 :      result->p_preinit_il = preinit_il_copy; 
    5395             :   // Copy non-constructor parameter data member (access function): enable_cp_backend_copy
    5396             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for enable_cp_backend
    5397             :   // case: toBeCopied == COPY_DATA for enable_cp_backend
    5398           0 :      bool enable_cp_backend_copy = p_enable_cp_backend; 
    5399           0 :      result->p_enable_cp_backend = enable_cp_backend_copy; 
    5400             :   // Copy non-constructor parameter data member (access function): markGeneratedFiles_copy
    5401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for markGeneratedFiles
    5402             :   // case: toBeCopied == COPY_DATA for markGeneratedFiles
    5403           0 :      bool markGeneratedFiles_copy = p_markGeneratedFiles; 
    5404           0 :      result->p_markGeneratedFiles = markGeneratedFiles_copy; 
    5405             :   // Copy non-constructor parameter data member (access function): negative_test_copy
    5406             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for negative_test
    5407             :   // case: toBeCopied == COPY_DATA for negative_test
    5408           0 :      bool negative_test_copy = p_negative_test; 
    5409           0 :      result->p_negative_test = negative_test_copy; 
    5410             :   // Copy non-constructor parameter data member (access function): strict_language_handling_copy
    5411             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for strict_language_handling
    5412             :   // case: toBeCopied == COPY_DATA for strict_language_handling
    5413           0 :      bool strict_language_handling_copy = p_strict_language_handling; 
    5414           0 :      result->p_strict_language_handling = strict_language_handling_copy; 
    5415             :   // Copy non-constructor parameter data member (access function): wave_copy
    5416             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for wave
    5417             :   // case: toBeCopied == COPY_DATA for wave
    5418           0 :      bool wave_copy = p_wave; 
    5419           0 :      result->p_wave = wave_copy; 
    5420             :   // Copy non-constructor parameter data member (access function): embedColorCodesInGeneratedCode_copy
    5421             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for embedColorCodesInGeneratedCode
    5422             :   // case: toBeCopied == COPY_DATA for embedColorCodesInGeneratedCode
    5423           0 :      int embedColorCodesInGeneratedCode_copy = p_embedColorCodesInGeneratedCode; 
    5424           0 :      result->p_embedColorCodesInGeneratedCode = embedColorCodesInGeneratedCode_copy; 
    5425             :   // Copy non-constructor parameter data member (access function): generateSourcePositionCodes_copy
    5426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for generateSourcePositionCodes
    5427             :   // case: toBeCopied == COPY_DATA for generateSourcePositionCodes
    5428           0 :      int generateSourcePositionCodes_copy = p_generateSourcePositionCodes; 
    5429           0 :      result->p_generateSourcePositionCodes = generateSourcePositionCodes_copy; 
    5430             :   // Copy non-constructor parameter data member (access function): sourceFileUsesCppFileExtension_copy
    5431             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesCppFileExtension
    5432             :   // case: toBeCopied == COPY_DATA for sourceFileUsesCppFileExtension
    5433           0 :      bool sourceFileUsesCppFileExtension_copy = p_sourceFileUsesCppFileExtension; 
    5434           0 :      result->p_sourceFileUsesCppFileExtension = sourceFileUsesCppFileExtension_copy; 
    5435             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortranFileExtension_copy
    5436             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortranFileExtension
    5437             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortranFileExtension
    5438           0 :      bool sourceFileUsesFortranFileExtension_copy = p_sourceFileUsesFortranFileExtension; 
    5439           0 :      result->p_sourceFileUsesFortranFileExtension = sourceFileUsesFortranFileExtension_copy; 
    5440             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran77FileExtension_copy
    5441             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran77FileExtension
    5442             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran77FileExtension
    5443           0 :      bool sourceFileUsesFortran77FileExtension_copy = p_sourceFileUsesFortran77FileExtension; 
    5444           0 :      result->p_sourceFileUsesFortran77FileExtension = sourceFileUsesFortran77FileExtension_copy; 
    5445             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran90FileExtension_copy
    5446             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran90FileExtension
    5447             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran90FileExtension
    5448           0 :      bool sourceFileUsesFortran90FileExtension_copy = p_sourceFileUsesFortran90FileExtension; 
    5449           0 :      result->p_sourceFileUsesFortran90FileExtension = sourceFileUsesFortran90FileExtension_copy; 
    5450             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran95FileExtension_copy
    5451             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran95FileExtension
    5452             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran95FileExtension
    5453           0 :      bool sourceFileUsesFortran95FileExtension_copy = p_sourceFileUsesFortran95FileExtension; 
    5454           0 :      result->p_sourceFileUsesFortran95FileExtension = sourceFileUsesFortran95FileExtension_copy; 
    5455             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran2003FileExtension_copy
    5456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran2003FileExtension
    5457             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran2003FileExtension
    5458           0 :      bool sourceFileUsesFortran2003FileExtension_copy = p_sourceFileUsesFortran2003FileExtension; 
    5459           0 :      result->p_sourceFileUsesFortran2003FileExtension = sourceFileUsesFortran2003FileExtension_copy; 
    5460             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran2008FileExtension_copy
    5461             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran2008FileExtension
    5462             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran2008FileExtension
    5463           0 :      bool sourceFileUsesFortran2008FileExtension_copy = p_sourceFileUsesFortran2008FileExtension; 
    5464           0 :      result->p_sourceFileUsesFortran2008FileExtension = sourceFileUsesFortran2008FileExtension_copy; 
    5465             :   // Copy non-constructor parameter data member (access function): sourceFileUsesCoArrayFortranFileExtension_copy
    5466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesCoArrayFortranFileExtension
    5467             :   // case: toBeCopied == COPY_DATA for sourceFileUsesCoArrayFortranFileExtension
    5468           0 :      bool sourceFileUsesCoArrayFortranFileExtension_copy = p_sourceFileUsesCoArrayFortranFileExtension; 
    5469           0 :      result->p_sourceFileUsesCoArrayFortranFileExtension = sourceFileUsesCoArrayFortranFileExtension_copy; 
    5470             :   // Copy non-constructor parameter data member (access function): sourceFileUsesPHPFileExtension_copy
    5471             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesPHPFileExtension
    5472             :   // case: toBeCopied == COPY_DATA for sourceFileUsesPHPFileExtension
    5473           0 :      bool sourceFileUsesPHPFileExtension_copy = p_sourceFileUsesPHPFileExtension; 
    5474           0 :      result->p_sourceFileUsesPHPFileExtension = sourceFileUsesPHPFileExtension_copy; 
    5475             :   // Copy non-constructor parameter data member (access function): sourceFileUsesPythonFileExtension_copy
    5476             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesPythonFileExtension
    5477             :   // case: toBeCopied == COPY_DATA for sourceFileUsesPythonFileExtension
    5478           0 :      bool sourceFileUsesPythonFileExtension_copy = p_sourceFileUsesPythonFileExtension; 
    5479           0 :      result->p_sourceFileUsesPythonFileExtension = sourceFileUsesPythonFileExtension_copy; 
    5480             :   // Copy non-constructor parameter data member (access function): sourceFileTypeIsUnknown_copy
    5481             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileTypeIsUnknown
    5482             :   // case: toBeCopied == COPY_DATA for sourceFileTypeIsUnknown
    5483           0 :      bool sourceFileTypeIsUnknown_copy = p_sourceFileTypeIsUnknown; 
    5484           0 :      result->p_sourceFileTypeIsUnknown = sourceFileTypeIsUnknown_copy; 
    5485             :   // Copy non-constructor parameter data member (access function): detect_dangling_pointers_copy
    5486             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for detect_dangling_pointers
    5487             :   // case: toBeCopied == COPY_DATA for detect_dangling_pointers
    5488           0 :      int detect_dangling_pointers_copy = p_detect_dangling_pointers; 
    5489           0 :      result->p_detect_dangling_pointers = detect_dangling_pointers_copy; 
    5490             :   // Copy non-constructor parameter data member (access function): experimental_fortran_frontend_copy
    5491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_fortran_frontend
    5492             :   // case: toBeCopied == COPY_DATA for experimental_fortran_frontend
    5493           0 :      bool experimental_fortran_frontend_copy = p_experimental_fortran_frontend; 
    5494           0 :      result->p_experimental_fortran_frontend = experimental_fortran_frontend_copy; 
    5495             :   // Copy non-constructor parameter data member (access function): experimental_flang_frontend_copy
    5496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_flang_frontend
    5497             :   // case: toBeCopied == COPY_DATA for experimental_flang_frontend
    5498           0 :      bool experimental_flang_frontend_copy = p_experimental_flang_frontend; 
    5499           0 :      result->p_experimental_flang_frontend = experimental_flang_frontend_copy; 
    5500             :   // Copy non-constructor parameter data member (access function): experimental_cuda_fortran_frontend_copy
    5501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_cuda_fortran_frontend
    5502             :   // case: toBeCopied == COPY_DATA for experimental_cuda_fortran_frontend
    5503           0 :      bool experimental_cuda_fortran_frontend_copy = p_experimental_cuda_fortran_frontend; 
    5504           0 :      result->p_experimental_cuda_fortran_frontend = experimental_cuda_fortran_frontend_copy; 
    5505             :   // Copy non-constructor parameter data member (access function): experimental_fortran_frontend_OFP_test_copy
    5506             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_fortran_frontend_OFP_test
    5507             :   // case: toBeCopied == COPY_DATA for experimental_fortran_frontend_OFP_test
    5508           0 :      bool experimental_fortran_frontend_OFP_test_copy = p_experimental_fortran_frontend_OFP_test; 
    5509           0 :      result->p_experimental_fortran_frontend_OFP_test = experimental_fortran_frontend_OFP_test_copy; 
    5510             :   // Copy non-constructor parameter data member (access function): read_executable_file_format_only_copy
    5511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for read_executable_file_format_only
    5512             :   // case: toBeCopied == COPY_DATA for read_executable_file_format_only
    5513           0 :      bool read_executable_file_format_only_copy = p_read_executable_file_format_only; 
    5514           0 :      result->p_read_executable_file_format_only = read_executable_file_format_only_copy; 
    5515             :   // Copy non-constructor parameter data member (access function): visualize_executable_file_format_skip_symbols_copy
    5516             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for visualize_executable_file_format_skip_symbols
    5517             :   // case: toBeCopied == COPY_DATA for visualize_executable_file_format_skip_symbols
    5518           0 :      bool visualize_executable_file_format_skip_symbols_copy = p_visualize_executable_file_format_skip_symbols; 
    5519           0 :      result->p_visualize_executable_file_format_skip_symbols = visualize_executable_file_format_skip_symbols_copy; 
    5520             :   // Copy non-constructor parameter data member (access function): visualize_dwarf_only_copy
    5521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for visualize_dwarf_only
    5522             :   // case: toBeCopied == COPY_DATA for visualize_dwarf_only
    5523           0 :      bool visualize_dwarf_only_copy = p_visualize_dwarf_only; 
    5524           0 :      result->p_visualize_dwarf_only = visualize_dwarf_only_copy; 
    5525             :   // Copy non-constructor parameter data member (access function): read_instructions_only_copy
    5526             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for read_instructions_only
    5527             :   // case: toBeCopied == COPY_DATA for read_instructions_only
    5528           0 :      bool read_instructions_only_copy = p_read_instructions_only; 
    5529           0 :      result->p_read_instructions_only = read_instructions_only_copy; 
    5530             :   // Copy non-constructor parameter data member (no access function): result->p_skip_unparse_asm_commands
    5531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_unparse_asm_commands
    5532             :   // case: toBeCopied == COPY_DATA for skip_unparse_asm_commands
    5533           0 :      static bool skip_unparse_asm_commands_copy = p_skip_unparse_asm_commands; 
    5534           0 :      result->p_skip_unparse_asm_commands = skip_unparse_asm_commands_copy; 
    5535             :   // Copy non-constructor parameter data member (list access function): result->get_libraryArchiveObjectFileNameList()
    5536             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for libraryArchiveObjectFileNameList
    5537             :   // case: toBeCopied == COPY_DATA for libraryArchiveObjectFileNameList
    5538           0 :      SgStringList libraryArchiveObjectFileNameList_copy = p_libraryArchiveObjectFileNameList; 
    5539           0 :      result->p_libraryArchiveObjectFileNameList = libraryArchiveObjectFileNameList_copy; 
    5540             :   // Copy non-constructor parameter data member (access function): isLibraryArchive_copy
    5541             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isLibraryArchive
    5542             :   // case: toBeCopied == COPY_DATA for isLibraryArchive
    5543           0 :      bool isLibraryArchive_copy = p_isLibraryArchive; 
    5544           0 :      result->p_isLibraryArchive = isLibraryArchive_copy; 
    5545             :   // Copy non-constructor parameter data member (access function): isObjectFile_copy
    5546             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isObjectFile
    5547             :   // case: toBeCopied == COPY_DATA for isObjectFile
    5548           0 :      bool isObjectFile_copy = p_isObjectFile; 
    5549           0 :      result->p_isObjectFile = isObjectFile_copy; 
    5550             :   // Copy non-constructor parameter data member (access function): unparse_tokens_copy
    5551             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_tokens
    5552             :   // case: toBeCopied == COPY_DATA for unparse_tokens
    5553           0 :      bool unparse_tokens_copy = p_unparse_tokens; 
    5554           0 :      result->p_unparse_tokens = unparse_tokens_copy; 
    5555             :   // Copy non-constructor parameter data member (access function): unparse_tokens_testing_copy
    5556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_tokens_testing
    5557             :   // case: toBeCopied == COPY_DATA for unparse_tokens_testing
    5558           0 :      int unparse_tokens_testing_copy = p_unparse_tokens_testing; 
    5559           0 :      result->p_unparse_tokens_testing = unparse_tokens_testing_copy; 
    5560             :   // Copy non-constructor parameter data member (access function): unparse_using_leading_and_trailing_token_mappings_copy
    5561             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_using_leading_and_trailing_token_mappings
    5562             :   // case: toBeCopied == COPY_DATA for unparse_using_leading_and_trailing_token_mappings
    5563           0 :      bool unparse_using_leading_and_trailing_token_mappings_copy = p_unparse_using_leading_and_trailing_token_mappings; 
    5564           0 :      result->p_unparse_using_leading_and_trailing_token_mappings = unparse_using_leading_and_trailing_token_mappings_copy; 
    5565             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
    5566             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
    5567             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
    5568           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
    5569           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
    5570             :   // Copy non-constructor parameter data member (access function): skipAstConsistancyTests_copy
    5571             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipAstConsistancyTests
    5572             :   // case: toBeCopied == COPY_DATA for skipAstConsistancyTests
    5573           0 :      bool skipAstConsistancyTests_copy = p_skipAstConsistancyTests; 
    5574           0 :      result->p_skipAstConsistancyTests = skipAstConsistancyTests_copy; 
    5575             :   // Copy non-constructor parameter data member (access function): multifile_support_copy
    5576             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for multifile_support
    5577             :   // case: toBeCopied == COPY_DATA for multifile_support
    5578           0 :      bool multifile_support_copy = p_multifile_support; 
    5579           0 :      result->p_multifile_support = multifile_support_copy; 
    5580             :   // Copy non-constructor parameter data member (access function): optimization_copy
    5581             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for optimization
    5582             :   // case: toBeCopied == COPY_DATA for optimization
    5583           0 :      bool optimization_copy = p_optimization; 
    5584           0 :      result->p_optimization = optimization_copy; 
    5585             :   // Copy non-constructor parameter data member (access function): use_token_stream_to_improve_source_position_info_copy
    5586             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for use_token_stream_to_improve_source_position_info
    5587             :   // case: toBeCopied == COPY_DATA for use_token_stream_to_improve_source_position_info
    5588           0 :      bool use_token_stream_to_improve_source_position_info_copy = p_use_token_stream_to_improve_source_position_info; 
    5589           0 :      result->p_use_token_stream_to_improve_source_position_info = use_token_stream_to_improve_source_position_info_copy; 
    5590             :   // Copy non-constructor parameter data member (access function): suppress_variable_declaration_normalization_copy
    5591             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for suppress_variable_declaration_normalization
    5592             :   // case: toBeCopied == COPY_DATA for suppress_variable_declaration_normalization
    5593           0 :      bool suppress_variable_declaration_normalization_copy = p_suppress_variable_declaration_normalization; 
    5594           0 :      result->p_suppress_variable_declaration_normalization = suppress_variable_declaration_normalization_copy; 
    5595             :   // Copy non-constructor parameter data member (access function): edg_il_to_graphviz_copy
    5596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for edg_il_to_graphviz
    5597             :   // case: toBeCopied == COPY_DATA for edg_il_to_graphviz
    5598           0 :      bool edg_il_to_graphviz_copy = p_edg_il_to_graphviz; 
    5599           0 :      result->p_edg_il_to_graphviz = edg_il_to_graphviz_copy; 
    5600             :   // Copy non-constructor parameter data member (access function): clang_il_to_graphviz_copy
    5601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clang_il_to_graphviz
    5602             :   // case: toBeCopied == COPY_DATA for clang_il_to_graphviz
    5603           0 :      bool clang_il_to_graphviz_copy = p_clang_il_to_graphviz; 
    5604           0 :      result->p_clang_il_to_graphviz = clang_il_to_graphviz_copy; 
    5605             :   // Copy non-constructor parameter data member (access function): no_optimize_flag_for_frontend_copy
    5606             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_optimize_flag_for_frontend
    5607             :   // case: toBeCopied == COPY_DATA for no_optimize_flag_for_frontend
    5608           0 :      bool no_optimize_flag_for_frontend_copy = p_no_optimize_flag_for_frontend; 
    5609           0 :      result->p_no_optimize_flag_for_frontend = no_optimize_flag_for_frontend_copy; 
    5610             :   // Copy non-constructor parameter data member (access function): unparse_edg_normalized_method_ROSE_1392_copy
    5611             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_edg_normalized_method_ROSE_1392
    5612             :   // case: toBeCopied == COPY_DATA for unparse_edg_normalized_method_ROSE_1392
    5613           0 :      bool unparse_edg_normalized_method_ROSE_1392_copy = p_unparse_edg_normalized_method_ROSE_1392; 
    5614           0 :      result->p_unparse_edg_normalized_method_ROSE_1392 = unparse_edg_normalized_method_ROSE_1392_copy; 
    5615             :   // Copy non-constructor parameter data member (no access function): result->p_header_file_unparsing_optimization
    5616             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for header_file_unparsing_optimization
    5617             :   // case: toBeCopied == COPY_DATA for header_file_unparsing_optimization
    5618           0 :      static bool header_file_unparsing_optimization_copy = p_header_file_unparsing_optimization; 
    5619           0 :      result->p_header_file_unparsing_optimization = header_file_unparsing_optimization_copy; 
    5620             :   // Copy non-constructor parameter data member (access function): header_file_unparsing_optimization_source_file_copy
    5621             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for header_file_unparsing_optimization_source_file
    5622             :   // case: toBeCopied == COPY_DATA for header_file_unparsing_optimization_source_file
    5623           0 :      bool header_file_unparsing_optimization_source_file_copy = p_header_file_unparsing_optimization_source_file; 
    5624           0 :      result->p_header_file_unparsing_optimization_source_file = header_file_unparsing_optimization_source_file_copy; 
    5625             :   // Copy non-constructor parameter data member (access function): header_file_unparsing_optimization_header_file_copy
    5626             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for header_file_unparsing_optimization_header_file
    5627             :   // case: toBeCopied == COPY_DATA for header_file_unparsing_optimization_header_file
    5628           0 :      bool header_file_unparsing_optimization_header_file_copy = p_header_file_unparsing_optimization_header_file; 
    5629           0 :      result->p_header_file_unparsing_optimization_header_file = header_file_unparsing_optimization_header_file_copy; 
    5630             :   // Copy non-constructor parameter data member (no access function): result->p_standard
    5631             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for standard
    5632             :   // case: toBeCopied == COPY_DATA for standard
    5633           0 :      SgFile::standard_enum standard_copy = p_standard; 
    5634           0 :      result->p_standard = standard_copy; 
    5635             :   // Copy non-constructor parameter data member (no access function): result->p_gnu_standard
    5636             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_standard
    5637             :   // case: toBeCopied == COPY_DATA for gnu_standard
    5638           0 :      bool gnu_standard_copy = p_gnu_standard; 
    5639           0 :      result->p_gnu_standard = gnu_standard_copy; 
    5640             :   // Copy non-constructor parameter data member (access function): frontendErrorCode_copy
    5641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for frontendErrorCode
    5642             :   // case: toBeCopied == COPY_DATA for frontendErrorCode
    5643           0 :      int frontendErrorCode_copy = p_frontendErrorCode; 
    5644           0 :      result->p_frontendErrorCode = frontendErrorCode_copy; 
    5645             :   // Copy non-constructor parameter data member (access function): javacErrorCode_copy
    5646             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for javacErrorCode
    5647             :   // case: toBeCopied == COPY_DATA for javacErrorCode
    5648           0 :      int javacErrorCode_copy = p_javacErrorCode; 
    5649           0 :      result->p_javacErrorCode = javacErrorCode_copy; 
    5650             :   // Copy non-constructor parameter data member (access function): ecjErrorCode_copy
    5651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ecjErrorCode
    5652             :   // case: toBeCopied == COPY_DATA for ecjErrorCode
    5653           0 :      int ecjErrorCode_copy = p_ecjErrorCode; 
    5654           0 :      result->p_ecjErrorCode = ecjErrorCode_copy; 
    5655             :   // Copy non-constructor parameter data member (access function): midendErrorCode_copy
    5656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for midendErrorCode
    5657             :   // case: toBeCopied == COPY_DATA for midendErrorCode
    5658           0 :      int midendErrorCode_copy = p_midendErrorCode; 
    5659           0 :      result->p_midendErrorCode = midendErrorCode_copy; 
    5660             :   // Copy non-constructor parameter data member (access function): unparserErrorCode_copy
    5661             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparserErrorCode
    5662             :   // case: toBeCopied == COPY_DATA for unparserErrorCode
    5663           0 :      int unparserErrorCode_copy = p_unparserErrorCode; 
    5664           0 :      result->p_unparserErrorCode = unparserErrorCode_copy; 
    5665             :   // Copy non-constructor parameter data member (access function): backendCompilerErrorCode_copy
    5666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for backendCompilerErrorCode
    5667             :   // case: toBeCopied == COPY_DATA for backendCompilerErrorCode
    5668           0 :      int backendCompilerErrorCode_copy = p_backendCompilerErrorCode; 
    5669           0 :      result->p_backendCompilerErrorCode = backendCompilerErrorCode_copy; 
    5670             :   // Copy non-constructor parameter data member (access function): unparsedFileFailedCompilation_copy
    5671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparsedFileFailedCompilation
    5672             :   // case: toBeCopied == COPY_DATA for unparsedFileFailedCompilation
    5673           0 :      bool unparsedFileFailedCompilation_copy = p_unparsedFileFailedCompilation; 
    5674           0 :      result->p_unparsedFileFailedCompilation = unparsedFileFailedCompilation_copy; 
    5675             : 
    5676             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    5677             : 
    5678             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    5679             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    5680             :   // fixupCopy(result,help);
    5681             : 
    5682             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    5683             :   // the Sg_File_Info objects that are built for the new IR nodes.
    5684           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    5685           0 :      if (locatedNode != NULL)
    5686             :         {
    5687             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    5688           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    5689           0 :           ROSE_ASSERT(start != NULL);
    5690             : #if 0
    5691             :        // Debugging information
    5692             :           if (start->get_parent() == NULL)
    5693             :              {
    5694             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    5695             :              }
    5696             : #endif
    5697           0 :           start->set_parent(locatedNode);
    5698           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    5699             : 
    5700           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    5701             : 
    5702             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    5703             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    5704             :        // ROSE_ASSERT(end != NULL);
    5705           0 :           if (end == NULL)
    5706             :              {
    5707           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    5708             :              }
    5709             :             else
    5710             :              {
    5711             : #if 0
    5712             :             // Debugging information
    5713             :                if (end->get_parent() == NULL)
    5714             :                   {
    5715             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    5716             :                   }
    5717             : #endif
    5718           0 :                end->set_parent(locatedNode);
    5719           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    5720             :              }
    5721             : 
    5722           0 :           SgExpression* expression = isSgExpression(result);
    5723           0 :           if (isSgExpression(this) != NULL)
    5724             :              {
    5725           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    5726             : 
    5727             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    5728           0 :                if (operatorPosition != NULL)
    5729             :                   {
    5730             : #if 0
    5731             :                  // Debugging information
    5732             :                     if (operatorPosition->get_parent() == NULL)
    5733             :                        {
    5734             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    5735             :                        }
    5736             : #endif
    5737           0 :                     operatorPosition->set_parent(expression);
    5738           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    5739             :                   }
    5740             :              }
    5741             :         }
    5742             : 
    5743             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    5744           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    5745           0 :      if (initializedName != NULL)
    5746             :         {
    5747             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    5748           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    5749           0 :           ROSE_ASSERT(start != NULL);
    5750             : #if 0
    5751             :        // Debugging information
    5752             :           if (start->get_parent() == NULL)
    5753             :              {
    5754             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    5755             :              }
    5756             : #endif
    5757           0 :           start->set_parent(initializedName);
    5758           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    5759             : 
    5760             : #if 0
    5761             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    5762             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    5763             : 
    5764             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    5765             :        // ROSE_ASSERT(end != NULL);
    5766             :           if (end == NULL)
    5767             :              {
    5768             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    5769             :              }
    5770             :             else
    5771             :              {
    5772             :                if (end->get_parent() == NULL)
    5773             :                   {
    5774             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    5775             :                   }
    5776             :                end->set_parent(initializedName);
    5777             :                ROSE_ASSERT(end->get_parent() != NULL);
    5778             :              }
    5779             : #endif
    5780             :         }
    5781             : 
    5782             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    5783           0 :      help.insertCopiedNodePair(this,result);
    5784             : 
    5785             :   // printf ("End of copy SgFile = %p = %s \n",this,SageInterface::get_name(this).c_str());
    5786             : 
    5787             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    5788             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    5789           0 :      help.decrementDepth();
    5790             : 
    5791             :   // Test if this is the root of the copy!
    5792           0 :      if (help.get_depth() == 0)
    5793             :         {
    5794             :        // This is the original calling node.
    5795             : 
    5796             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    5797             :        // printf ("Calling SgFile::fixupCopy() (from root of AST being copied) \n");
    5798             : #if ALT_FIXUP_COPY
    5799             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    5800           0 :           fixupCopy_scopes (result,help);
    5801           0 :           fixupCopy_symbols (result,help);
    5802           0 :           fixupCopy_references (result,help);
    5803             : #else
    5804             :           fixupCopy(result,help);
    5805             : #endif
    5806             :        // Allow this to be called recursively, so accumulate the state.
    5807             :        // Also, clear the state in the SgCopyHelp object.
    5808             :        // help.clearState();
    5809             :         }
    5810             : 
    5811           0 :      return result;
    5812             :    }
    5813             : 
    5814             : 
    5815             : /* #line 5816 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    5816             : 
    5817             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    5818             : 
    5819           0 : SgNode* SgSourceFile::copy ( SgCopyHelp& help) const
    5820             :    {
    5821           0 :      SgSourceFile* result = NULL;
    5822             : 
    5823             :   // printf ("Copy SgSourceFile = %p = %s \n",this,SageInterface::get_name(this).c_str());
    5824             : 
    5825             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    5826             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    5827             :   // The default value of the depth is 0, so after this call the depth is 1!
    5828           0 :      help.incrementDepth();
    5829             : 
    5830             : #if 0
    5831             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    5832             :   // but it is not generally true that things can only be copied once!
    5833             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    5834             :   // AstAttribute* existingAttribute = const_cast<SgSourceFile*>(this)->attribute["copied"];
    5835             :      bool previouslyCopied = const_cast<SgSourceFile*>(this)->attribute.exists("copied");
    5836             :      if (previouslyCopied == true)
    5837             :         {
    5838             :           this->get_file_info()->display("Called from copy SgSourceFile: debug");
    5839             :         }
    5840             :      ROSE_ASSERT(previouslyCopied == false);
    5841             : 
    5842             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    5843             :      AstAttribute* newAttribute = new AstAttribute();
    5844             :      ROSE_ASSERT(newAttribute != NULL);
    5845             : 
    5846             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    5847             :      const_cast<SgSourceFile*>(this)->attribute.add("copied",newAttribute);
    5848             : #endif
    5849             : 
    5850             :   // Copy data members from base classes
    5851             :  
    5852             : 
    5853             :   // Build an empty copy of this object (will be filled in, but 
    5854             :   // the parent can't be set and must be set by the caller)
    5855           0 :      result = new SgSourceFile(  );
    5856           0 :      ROSE_ASSERT(result != NULL);
    5857             : 
    5858             :   // Copy data members of "this" class
    5859             :   // Copy non-constructor parameter data member (access function): startOfConstruct_copy
    5860             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
    5861             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
    5862           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
    5863           0 :      if ( p_startOfConstruct != NULL ) 
    5864             :         { 
    5865           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
    5866             :         } 
    5867             :        else 
    5868             :         { 
    5869             :           startOfConstruct_copy = NULL; 
    5870             :         } 
    5871             :   /* check for a valid pointer and delete if present */ 
    5872           0 :      if (result->p_startOfConstruct != NULL) delete result->p_startOfConstruct; 
    5873             :   /* add assignment to result here */ 
    5874           0 :      result->p_startOfConstruct = startOfConstruct_copy; 
    5875             :   // Copy non-constructor parameter data member (access function): originalCommandLineArgumentList_copy
    5876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalCommandLineArgumentList
    5877             :   // case: toBeCopied == COPY_DATA for originalCommandLineArgumentList
    5878           0 :      SgStringList originalCommandLineArgumentList_copy = p_originalCommandLineArgumentList; 
    5879           0 :      result->p_originalCommandLineArgumentList = originalCommandLineArgumentList_copy; 
    5880             :   // Copy non-constructor parameter data member (access function): verbose_copy
    5881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for verbose
    5882             :   // case: toBeCopied == COPY_DATA for verbose
    5883           0 :      int verbose_copy = p_verbose; 
    5884           0 :      result->p_verbose = verbose_copy; 
    5885             :   // Copy non-constructor parameter data member (access function): output_warnings_copy
    5886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for output_warnings
    5887             :   // case: toBeCopied == COPY_DATA for output_warnings
    5888           0 :      bool output_warnings_copy = p_output_warnings; 
    5889           0 :      result->p_output_warnings = output_warnings_copy; 
    5890             :   // Copy non-constructor parameter data member (access function): C_only_copy
    5891             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for C_only
    5892             :   // case: toBeCopied == COPY_DATA for C_only
    5893           0 :      bool C_only_copy = p_C_only; 
    5894           0 :      result->p_C_only = C_only_copy; 
    5895             :   // Copy non-constructor parameter data member (access function): Cxx_only_copy
    5896             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cxx_only
    5897             :   // case: toBeCopied == COPY_DATA for Cxx_only
    5898           0 :      bool Cxx_only_copy = p_Cxx_only; 
    5899           0 :      result->p_Cxx_only = Cxx_only_copy; 
    5900             :   // Copy non-constructor parameter data member (access function): Fortran_only_copy
    5901             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Fortran_only
    5902             :   // case: toBeCopied == COPY_DATA for Fortran_only
    5903           0 :      bool Fortran_only_copy = p_Fortran_only; 
    5904           0 :      result->p_Fortran_only = Fortran_only_copy; 
    5905             :   // Copy non-constructor parameter data member (access function): CoArrayFortran_only_copy
    5906             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for CoArrayFortran_only
    5907             :   // case: toBeCopied == COPY_DATA for CoArrayFortran_only
    5908           0 :      bool CoArrayFortran_only_copy = p_CoArrayFortran_only; 
    5909           0 :      result->p_CoArrayFortran_only = CoArrayFortran_only_copy; 
    5910             :   // Copy non-constructor parameter data member (access function): upc_threads_copy
    5911             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upc_threads
    5912             :   // case: toBeCopied == COPY_DATA for upc_threads
    5913           0 :      int upc_threads_copy = p_upc_threads; 
    5914           0 :      result->p_upc_threads = upc_threads_copy; 
    5915             :   // Copy non-constructor parameter data member (access function): Cuda_only_copy
    5916             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cuda_only
    5917             :   // case: toBeCopied == COPY_DATA for Cuda_only
    5918           0 :      bool Cuda_only_copy = p_Cuda_only; 
    5919           0 :      result->p_Cuda_only = Cuda_only_copy; 
    5920             :   // Copy non-constructor parameter data member (access function): OpenCL_only_copy
    5921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for OpenCL_only
    5922             :   // case: toBeCopied == COPY_DATA for OpenCL_only
    5923           0 :      bool OpenCL_only_copy = p_OpenCL_only; 
    5924           0 :      result->p_OpenCL_only = OpenCL_only_copy; 
    5925             :   // Copy non-constructor parameter data member (access function): requires_C_preprocessor_copy
    5926             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requires_C_preprocessor
    5927             :   // case: toBeCopied == COPY_DATA for requires_C_preprocessor
    5928           0 :      bool requires_C_preprocessor_copy = p_requires_C_preprocessor; 
    5929           0 :      result->p_requires_C_preprocessor = requires_C_preprocessor_copy; 
    5930             :   // Copy non-constructor parameter data member (access function): inputFormat_copy
    5931             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for inputFormat
    5932             :   // case: toBeCopied == COPY_DATA for inputFormat
    5933           0 :      SgFile::outputFormatOption_enum inputFormat_copy = p_inputFormat; 
    5934           0 :      result->p_inputFormat = inputFormat_copy; 
    5935             :   // Copy non-constructor parameter data member (access function): outputFormat_copy
    5936             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for outputFormat
    5937             :   // case: toBeCopied == COPY_DATA for outputFormat
    5938           0 :      SgFile::outputFormatOption_enum outputFormat_copy = p_outputFormat; 
    5939           0 :      result->p_outputFormat = outputFormat_copy; 
    5940             :   // Copy non-constructor parameter data member (access function): backendCompileFormat_copy
    5941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for backendCompileFormat
    5942             :   // case: toBeCopied == COPY_DATA for backendCompileFormat
    5943           0 :      SgFile::outputFormatOption_enum backendCompileFormat_copy = p_backendCompileFormat; 
    5944           0 :      result->p_backendCompileFormat = backendCompileFormat_copy; 
    5945             :   // Copy non-constructor parameter data member (access function): fortran_implicit_none_copy
    5946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fortran_implicit_none
    5947             :   // case: toBeCopied == COPY_DATA for fortran_implicit_none
    5948           0 :      bool fortran_implicit_none_copy = p_fortran_implicit_none; 
    5949           0 :      result->p_fortran_implicit_none = fortran_implicit_none_copy; 
    5950             :   // Copy non-constructor parameter data member (access function): openmp_copy
    5951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp
    5952             :   // case: toBeCopied == COPY_DATA for openmp
    5953           0 :      bool openmp_copy = p_openmp; 
    5954           0 :      result->p_openmp = openmp_copy; 
    5955             :   // Copy non-constructor parameter data member (access function): openmp_parse_only_copy
    5956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_parse_only
    5957             :   // case: toBeCopied == COPY_DATA for openmp_parse_only
    5958           0 :      bool openmp_parse_only_copy = p_openmp_parse_only; 
    5959           0 :      result->p_openmp_parse_only = openmp_parse_only_copy; 
    5960             :   // Copy non-constructor parameter data member (access function): openmp_ast_only_copy
    5961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_ast_only
    5962             :   // case: toBeCopied == COPY_DATA for openmp_ast_only
    5963           0 :      bool openmp_ast_only_copy = p_openmp_ast_only; 
    5964           0 :      result->p_openmp_ast_only = openmp_ast_only_copy; 
    5965             :   // Copy non-constructor parameter data member (access function): openmp_lowering_copy
    5966             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_lowering
    5967             :   // case: toBeCopied == COPY_DATA for openmp_lowering
    5968           0 :      bool openmp_lowering_copy = p_openmp_lowering; 
    5969           0 :      result->p_openmp_lowering = openmp_lowering_copy; 
    5970             :   // Copy non-constructor parameter data member (access function): openmp_analyzing_copy
    5971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_analyzing
    5972             :   // case: toBeCopied == COPY_DATA for openmp_analyzing
    5973           0 :      bool openmp_analyzing_copy = p_openmp_analyzing; 
    5974           0 :      result->p_openmp_analyzing = openmp_analyzing_copy; 
    5975             :   // Copy non-constructor parameter data member (access function): cray_pointer_support_copy
    5976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for cray_pointer_support
    5977             :   // case: toBeCopied == COPY_DATA for cray_pointer_support
    5978           0 :      bool cray_pointer_support_copy = p_cray_pointer_support; 
    5979           0 :      result->p_cray_pointer_support = cray_pointer_support_copy; 
    5980             :   // Copy non-constructor parameter data member (access function): failsafe_copy
    5981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for failsafe
    5982             :   // case: toBeCopied == COPY_DATA for failsafe
    5983           0 :      bool failsafe_copy = p_failsafe; 
    5984           0 :      result->p_failsafe = failsafe_copy; 
    5985             :   // Copy non-constructor parameter data member (access function): output_parser_actions_copy
    5986             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for output_parser_actions
    5987             :   // case: toBeCopied == COPY_DATA for output_parser_actions
    5988           0 :      bool output_parser_actions_copy = p_output_parser_actions; 
    5989           0 :      result->p_output_parser_actions = output_parser_actions_copy; 
    5990             :   // Copy non-constructor parameter data member (access function): exit_after_parser_copy
    5991             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exit_after_parser
    5992             :   // case: toBeCopied == COPY_DATA for exit_after_parser
    5993           0 :      bool exit_after_parser_copy = p_exit_after_parser; 
    5994           0 :      result->p_exit_after_parser = exit_after_parser_copy; 
    5995             :   // Copy non-constructor parameter data member (access function): skip_syntax_check_copy
    5996             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_syntax_check
    5997             :   // case: toBeCopied == COPY_DATA for skip_syntax_check
    5998           0 :      bool skip_syntax_check_copy = p_skip_syntax_check; 
    5999           0 :      result->p_skip_syntax_check = skip_syntax_check_copy; 
    6000             :   // Copy non-constructor parameter data member (access function): skip_parser_copy
    6001             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_parser
    6002             :   // case: toBeCopied == COPY_DATA for skip_parser
    6003           0 :      bool skip_parser_copy = p_skip_parser; 
    6004           0 :      result->p_skip_parser = skip_parser_copy; 
    6005             :   // Copy non-constructor parameter data member (access function): relax_syntax_check_copy
    6006             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for relax_syntax_check
    6007             :   // case: toBeCopied == COPY_DATA for relax_syntax_check
    6008           0 :      bool relax_syntax_check_copy = p_relax_syntax_check; 
    6009           0 :      result->p_relax_syntax_check = relax_syntax_check_copy; 
    6010             :   // Copy non-constructor parameter data member (access function): skip_translation_from_edg_ast_to_rose_ast_copy
    6011             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_translation_from_edg_ast_to_rose_ast
    6012             :   // case: toBeCopied == COPY_DATA for skip_translation_from_edg_ast_to_rose_ast
    6013           0 :      bool skip_translation_from_edg_ast_to_rose_ast_copy = p_skip_translation_from_edg_ast_to_rose_ast; 
    6014           0 :      result->p_skip_translation_from_edg_ast_to_rose_ast = skip_translation_from_edg_ast_to_rose_ast_copy; 
    6015             :   // Copy non-constructor parameter data member (access function): skip_transformation_copy
    6016             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_transformation
    6017             :   // case: toBeCopied == COPY_DATA for skip_transformation
    6018           0 :      bool skip_transformation_copy = p_skip_transformation; 
    6019           0 :      result->p_skip_transformation = skip_transformation_copy; 
    6020             :   // Copy non-constructor parameter data member (access function): skip_unparse_copy
    6021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_unparse
    6022             :   // case: toBeCopied == COPY_DATA for skip_unparse
    6023           0 :      bool skip_unparse_copy = p_skip_unparse; 
    6024           0 :      result->p_skip_unparse = skip_unparse_copy; 
    6025             :   // Copy non-constructor parameter data member (access function): skipfinalCompileStep_copy
    6026             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipfinalCompileStep
    6027             :   // case: toBeCopied == COPY_DATA for skipfinalCompileStep
    6028           0 :      bool skipfinalCompileStep_copy = p_skipfinalCompileStep; 
    6029           0 :      result->p_skipfinalCompileStep = skipfinalCompileStep_copy; 
    6030             :   // Copy non-constructor parameter data member (access function): unparse_includes_copy
    6031             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_includes
    6032             :   // case: toBeCopied == COPY_DATA for unparse_includes
    6033           0 :      bool unparse_includes_copy = p_unparse_includes; 
    6034           0 :      result->p_unparse_includes = unparse_includes_copy; 
    6035             :   // Copy non-constructor parameter data member (access function): unparse_line_directives_copy
    6036             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_line_directives
    6037             :   // case: toBeCopied == COPY_DATA for unparse_line_directives
    6038           0 :      bool unparse_line_directives_copy = p_unparse_line_directives; 
    6039           0 :      result->p_unparse_line_directives = unparse_line_directives_copy; 
    6040             :   // Copy non-constructor parameter data member (access function): unparse_function_calls_using_operator_syntax_copy
    6041             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_function_calls_using_operator_syntax
    6042             :   // case: toBeCopied == COPY_DATA for unparse_function_calls_using_operator_syntax
    6043           0 :      bool unparse_function_calls_using_operator_syntax_copy = p_unparse_function_calls_using_operator_syntax; 
    6044           0 :      result->p_unparse_function_calls_using_operator_syntax = unparse_function_calls_using_operator_syntax_copy; 
    6045             :   // Copy non-constructor parameter data member (access function): unparse_function_calls_using_operator_names_copy
    6046             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_function_calls_using_operator_names
    6047             :   // case: toBeCopied == COPY_DATA for unparse_function_calls_using_operator_names
    6048           0 :      bool unparse_function_calls_using_operator_names_copy = p_unparse_function_calls_using_operator_names; 
    6049           0 :      result->p_unparse_function_calls_using_operator_names = unparse_function_calls_using_operator_names_copy; 
    6050             :   // Copy non-constructor parameter data member (access function): unparse_instruction_addresses_copy
    6051             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_instruction_addresses
    6052             :   // case: toBeCopied == COPY_DATA for unparse_instruction_addresses
    6053           0 :      bool unparse_instruction_addresses_copy = p_unparse_instruction_addresses; 
    6054           0 :      result->p_unparse_instruction_addresses = unparse_instruction_addresses_copy; 
    6055             :   // Copy non-constructor parameter data member (access function): unparse_raw_memory_contents_copy
    6056             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_raw_memory_contents
    6057             :   // case: toBeCopied == COPY_DATA for unparse_raw_memory_contents
    6058           0 :      bool unparse_raw_memory_contents_copy = p_unparse_raw_memory_contents; 
    6059           0 :      result->p_unparse_raw_memory_contents = unparse_raw_memory_contents_copy; 
    6060             :   // Copy non-constructor parameter data member (access function): unparse_binary_file_format_copy
    6061             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_binary_file_format
    6062             :   // case: toBeCopied == COPY_DATA for unparse_binary_file_format
    6063           0 :      bool unparse_binary_file_format_copy = p_unparse_binary_file_format; 
    6064           0 :      result->p_unparse_binary_file_format = unparse_binary_file_format_copy; 
    6065             :   // Copy non-constructor parameter data member (access function): outputLanguage_copy
    6066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for outputLanguage
    6067             :   // case: toBeCopied == COPY_DATA for outputLanguage
    6068           0 :      SgFile::languageOption_enum outputLanguage_copy = p_outputLanguage; 
    6069           0 :      result->p_outputLanguage = outputLanguage_copy; 
    6070             :   // Copy non-constructor parameter data member (access function): inputLanguage_copy
    6071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for inputLanguage
    6072             :   // case: toBeCopied == COPY_DATA for inputLanguage
    6073           0 :      SgFile::languageOption_enum inputLanguage_copy = p_inputLanguage; 
    6074           0 :      result->p_inputLanguage = inputLanguage_copy; 
    6075             :   // Copy non-constructor parameter data member (access function): sourceFileNameWithPath_copy
    6076             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileNameWithPath
    6077             :   // case: toBeCopied == COPY_DATA for sourceFileNameWithPath
    6078           0 :      std::string sourceFileNameWithPath_copy = p_sourceFileNameWithPath; 
    6079           0 :      result->p_sourceFileNameWithPath = sourceFileNameWithPath_copy; 
    6080             :   // Copy non-constructor parameter data member (access function): sourceFileNameWithoutPath_copy
    6081             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileNameWithoutPath
    6082             :   // case: toBeCopied == COPY_DATA for sourceFileNameWithoutPath
    6083           0 :      std::string sourceFileNameWithoutPath_copy = p_sourceFileNameWithoutPath; 
    6084           0 :      result->p_sourceFileNameWithoutPath = sourceFileNameWithoutPath_copy; 
    6085             :   // Copy non-constructor parameter data member (access function): unparse_output_filename_copy
    6086             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_output_filename
    6087             :   // case: toBeCopied == COPY_DATA for unparse_output_filename
    6088           0 :      std::string unparse_output_filename_copy = p_unparse_output_filename; 
    6089           0 :      result->p_unparse_output_filename = unparse_output_filename_copy; 
    6090             :   // Copy non-constructor parameter data member (access function): objectFileNameWithPath_copy
    6091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for objectFileNameWithPath
    6092             :   // case: toBeCopied == COPY_DATA for objectFileNameWithPath
    6093           0 :      std::string objectFileNameWithPath_copy = p_objectFileNameWithPath; 
    6094           0 :      result->p_objectFileNameWithPath = objectFileNameWithPath_copy; 
    6095             :   // Copy non-constructor parameter data member (access function): objectFileNameWithoutPath_copy
    6096             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for objectFileNameWithoutPath
    6097             :   // case: toBeCopied == COPY_DATA for objectFileNameWithoutPath
    6098           0 :      std::string objectFileNameWithoutPath_copy = p_objectFileNameWithoutPath; 
    6099           0 :      result->p_objectFileNameWithoutPath = objectFileNameWithoutPath_copy; 
    6100             :   // Copy non-constructor parameter data member (access function): useBackendOnly_copy
    6101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for useBackendOnly
    6102             :   // case: toBeCopied == COPY_DATA for useBackendOnly
    6103           0 :      bool useBackendOnly_copy = p_useBackendOnly; 
    6104           0 :      result->p_useBackendOnly = useBackendOnly_copy; 
    6105             :   // Copy non-constructor parameter data member (access function): compileOnly_copy
    6106             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for compileOnly
    6107             :   // case: toBeCopied == COPY_DATA for compileOnly
    6108           0 :      bool compileOnly_copy = p_compileOnly; 
    6109           0 :      result->p_compileOnly = compileOnly_copy; 
    6110             :   // Copy non-constructor parameter data member (access function): savedFrontendCommandLine_copy
    6111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for savedFrontendCommandLine
    6112             :   // case: toBeCopied == COPY_DATA for savedFrontendCommandLine
    6113           0 :      std::string savedFrontendCommandLine_copy = p_savedFrontendCommandLine; 
    6114           0 :      result->p_savedFrontendCommandLine = savedFrontendCommandLine_copy; 
    6115             :   // Copy non-constructor parameter data member (access function): no_implicit_templates_copy
    6116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_implicit_templates
    6117             :   // case: toBeCopied == COPY_DATA for no_implicit_templates
    6118           0 :      bool no_implicit_templates_copy = p_no_implicit_templates; 
    6119           0 :      result->p_no_implicit_templates = no_implicit_templates_copy; 
    6120             :   // Copy non-constructor parameter data member (access function): no_implicit_inline_templates_copy
    6121             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_implicit_inline_templates
    6122             :   // case: toBeCopied == COPY_DATA for no_implicit_inline_templates
    6123           0 :      bool no_implicit_inline_templates_copy = p_no_implicit_inline_templates; 
    6124           0 :      result->p_no_implicit_inline_templates = no_implicit_inline_templates_copy; 
    6125             :   // Copy non-constructor parameter data member (access function): skip_commentsAndDirectives_copy
    6126             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_commentsAndDirectives
    6127             :   // case: toBeCopied == COPY_DATA for skip_commentsAndDirectives
    6128           0 :      bool skip_commentsAndDirectives_copy = p_skip_commentsAndDirectives; 
    6129           0 :      result->p_skip_commentsAndDirectives = skip_commentsAndDirectives_copy; 
    6130             :   // Copy non-constructor parameter data member (access function): collectAllCommentsAndDirectives_copy
    6131             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for collectAllCommentsAndDirectives
    6132             :   // case: toBeCopied == COPY_DATA for collectAllCommentsAndDirectives
    6133           0 :      bool collectAllCommentsAndDirectives_copy = p_collectAllCommentsAndDirectives; 
    6134           0 :      result->p_collectAllCommentsAndDirectives = collectAllCommentsAndDirectives_copy; 
    6135             :   // Copy non-constructor parameter data member (access function): translateCommentsAndDirectivesIntoAST_copy
    6136             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for translateCommentsAndDirectivesIntoAST
    6137             :   // case: toBeCopied == COPY_DATA for translateCommentsAndDirectivesIntoAST
    6138           0 :      bool translateCommentsAndDirectivesIntoAST_copy = p_translateCommentsAndDirectivesIntoAST; 
    6139           0 :      result->p_translateCommentsAndDirectivesIntoAST = translateCommentsAndDirectivesIntoAST_copy; 
    6140             :   // Copy non-constructor parameter data member (access function): unparseHeaderFiles_copy
    6141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparseHeaderFiles
    6142             :   // case: toBeCopied == COPY_DATA for unparseHeaderFiles
    6143           0 :      bool unparseHeaderFiles_copy = p_unparseHeaderFiles; 
    6144           0 :      result->p_unparseHeaderFiles = unparseHeaderFiles_copy; 
    6145             :   // Copy non-constructor parameter data member (access function): preprocessorDirectivesAndCommentsList_copy
    6146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preprocessorDirectivesAndCommentsList
    6147             :   // case: toBeCopied == COPY_DATA for preprocessorDirectivesAndCommentsList
    6148           0 :      ROSEAttributesListContainerPtr preprocessorDirectivesAndCommentsList_copy = p_preprocessorDirectivesAndCommentsList; 
    6149           0 :      result->p_preprocessorDirectivesAndCommentsList = preprocessorDirectivesAndCommentsList_copy; 
    6150             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
    6151             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
    6152             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
    6153           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
    6154           0 :      if ( p_attributeMechanism != NULL ) 
    6155             :         { 
    6156           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
    6157             :         } 
    6158             :        else 
    6159             :         { 
    6160             :           attributeMechanism_copy = NULL; 
    6161             :         } 
    6162             :   /* check for a valid pointer and delete if present */ 
    6163           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
    6164             :   /* add assignment to result here */ 
    6165           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
    6166             :   // Copy non-constructor parameter data member (access function): KCC_frontend_copy
    6167             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for KCC_frontend
    6168             :   // case: toBeCopied == COPY_DATA for KCC_frontend
    6169           0 :      bool KCC_frontend_copy = p_KCC_frontend; 
    6170           0 :      result->p_KCC_frontend = KCC_frontend_copy; 
    6171             :   // Copy non-constructor parameter data member (access function): new_frontend_copy
    6172             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for new_frontend
    6173             :   // case: toBeCopied == COPY_DATA for new_frontend
    6174           0 :      bool new_frontend_copy = p_new_frontend; 
    6175           0 :      result->p_new_frontend = new_frontend_copy; 
    6176             :   // Copy non-constructor parameter data member (access function): disable_edg_backend_copy
    6177             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for disable_edg_backend
    6178             :   // case: toBeCopied == COPY_DATA for disable_edg_backend
    6179           0 :      bool disable_edg_backend_copy = p_disable_edg_backend; 
    6180           0 :      result->p_disable_edg_backend = disable_edg_backend_copy; 
    6181             :   // Copy non-constructor parameter data member (access function): disable_sage_backend_copy
    6182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for disable_sage_backend
    6183             :   // case: toBeCopied == COPY_DATA for disable_sage_backend
    6184           0 :      bool disable_sage_backend_copy = p_disable_sage_backend; 
    6185           0 :      result->p_disable_sage_backend = disable_sage_backend_copy; 
    6186             :   // Copy non-constructor parameter data member (access function): testingLevel_copy
    6187             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for testingLevel
    6188             :   // case: toBeCopied == COPY_DATA for testingLevel
    6189           0 :      int testingLevel_copy = p_testingLevel; 
    6190           0 :      result->p_testingLevel = testingLevel_copy; 
    6191             :   // Copy non-constructor parameter data member (access function): preinit_il_copy
    6192             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preinit_il
    6193             :   // case: toBeCopied == COPY_DATA for preinit_il
    6194           0 :      bool preinit_il_copy = p_preinit_il; 
    6195           0 :      result->p_preinit_il = preinit_il_copy; 
    6196             :   // Copy non-constructor parameter data member (access function): enable_cp_backend_copy
    6197             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for enable_cp_backend
    6198             :   // case: toBeCopied == COPY_DATA for enable_cp_backend
    6199           0 :      bool enable_cp_backend_copy = p_enable_cp_backend; 
    6200           0 :      result->p_enable_cp_backend = enable_cp_backend_copy; 
    6201             :   // Copy non-constructor parameter data member (access function): markGeneratedFiles_copy
    6202             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for markGeneratedFiles
    6203             :   // case: toBeCopied == COPY_DATA for markGeneratedFiles
    6204           0 :      bool markGeneratedFiles_copy = p_markGeneratedFiles; 
    6205           0 :      result->p_markGeneratedFiles = markGeneratedFiles_copy; 
    6206             :   // Copy non-constructor parameter data member (access function): negative_test_copy
    6207             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for negative_test
    6208             :   // case: toBeCopied == COPY_DATA for negative_test
    6209           0 :      bool negative_test_copy = p_negative_test; 
    6210           0 :      result->p_negative_test = negative_test_copy; 
    6211             :   // Copy non-constructor parameter data member (access function): strict_language_handling_copy
    6212             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for strict_language_handling
    6213             :   // case: toBeCopied == COPY_DATA for strict_language_handling
    6214           0 :      bool strict_language_handling_copy = p_strict_language_handling; 
    6215           0 :      result->p_strict_language_handling = strict_language_handling_copy; 
    6216             :   // Copy non-constructor parameter data member (access function): wave_copy
    6217             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for wave
    6218             :   // case: toBeCopied == COPY_DATA for wave
    6219           0 :      bool wave_copy = p_wave; 
    6220           0 :      result->p_wave = wave_copy; 
    6221             :   // Copy non-constructor parameter data member (access function): embedColorCodesInGeneratedCode_copy
    6222             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for embedColorCodesInGeneratedCode
    6223             :   // case: toBeCopied == COPY_DATA for embedColorCodesInGeneratedCode
    6224           0 :      int embedColorCodesInGeneratedCode_copy = p_embedColorCodesInGeneratedCode; 
    6225           0 :      result->p_embedColorCodesInGeneratedCode = embedColorCodesInGeneratedCode_copy; 
    6226             :   // Copy non-constructor parameter data member (access function): generateSourcePositionCodes_copy
    6227             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for generateSourcePositionCodes
    6228             :   // case: toBeCopied == COPY_DATA for generateSourcePositionCodes
    6229           0 :      int generateSourcePositionCodes_copy = p_generateSourcePositionCodes; 
    6230           0 :      result->p_generateSourcePositionCodes = generateSourcePositionCodes_copy; 
    6231             :   // Copy non-constructor parameter data member (access function): sourceFileUsesCppFileExtension_copy
    6232             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesCppFileExtension
    6233             :   // case: toBeCopied == COPY_DATA for sourceFileUsesCppFileExtension
    6234           0 :      bool sourceFileUsesCppFileExtension_copy = p_sourceFileUsesCppFileExtension; 
    6235           0 :      result->p_sourceFileUsesCppFileExtension = sourceFileUsesCppFileExtension_copy; 
    6236             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortranFileExtension_copy
    6237             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortranFileExtension
    6238             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortranFileExtension
    6239           0 :      bool sourceFileUsesFortranFileExtension_copy = p_sourceFileUsesFortranFileExtension; 
    6240           0 :      result->p_sourceFileUsesFortranFileExtension = sourceFileUsesFortranFileExtension_copy; 
    6241             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran77FileExtension_copy
    6242             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran77FileExtension
    6243             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran77FileExtension
    6244           0 :      bool sourceFileUsesFortran77FileExtension_copy = p_sourceFileUsesFortran77FileExtension; 
    6245           0 :      result->p_sourceFileUsesFortran77FileExtension = sourceFileUsesFortran77FileExtension_copy; 
    6246             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran90FileExtension_copy
    6247             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran90FileExtension
    6248             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran90FileExtension
    6249           0 :      bool sourceFileUsesFortran90FileExtension_copy = p_sourceFileUsesFortran90FileExtension; 
    6250           0 :      result->p_sourceFileUsesFortran90FileExtension = sourceFileUsesFortran90FileExtension_copy; 
    6251             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran95FileExtension_copy
    6252             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran95FileExtension
    6253             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran95FileExtension
    6254           0 :      bool sourceFileUsesFortran95FileExtension_copy = p_sourceFileUsesFortran95FileExtension; 
    6255           0 :      result->p_sourceFileUsesFortran95FileExtension = sourceFileUsesFortran95FileExtension_copy; 
    6256             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran2003FileExtension_copy
    6257             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran2003FileExtension
    6258             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran2003FileExtension
    6259           0 :      bool sourceFileUsesFortran2003FileExtension_copy = p_sourceFileUsesFortran2003FileExtension; 
    6260           0 :      result->p_sourceFileUsesFortran2003FileExtension = sourceFileUsesFortran2003FileExtension_copy; 
    6261             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran2008FileExtension_copy
    6262             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran2008FileExtension
    6263             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran2008FileExtension
    6264           0 :      bool sourceFileUsesFortran2008FileExtension_copy = p_sourceFileUsesFortran2008FileExtension; 
    6265           0 :      result->p_sourceFileUsesFortran2008FileExtension = sourceFileUsesFortran2008FileExtension_copy; 
    6266             :   // Copy non-constructor parameter data member (access function): sourceFileUsesCoArrayFortranFileExtension_copy
    6267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesCoArrayFortranFileExtension
    6268             :   // case: toBeCopied == COPY_DATA for sourceFileUsesCoArrayFortranFileExtension
    6269           0 :      bool sourceFileUsesCoArrayFortranFileExtension_copy = p_sourceFileUsesCoArrayFortranFileExtension; 
    6270           0 :      result->p_sourceFileUsesCoArrayFortranFileExtension = sourceFileUsesCoArrayFortranFileExtension_copy; 
    6271             :   // Copy non-constructor parameter data member (access function): sourceFileUsesPHPFileExtension_copy
    6272             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesPHPFileExtension
    6273             :   // case: toBeCopied == COPY_DATA for sourceFileUsesPHPFileExtension
    6274           0 :      bool sourceFileUsesPHPFileExtension_copy = p_sourceFileUsesPHPFileExtension; 
    6275           0 :      result->p_sourceFileUsesPHPFileExtension = sourceFileUsesPHPFileExtension_copy; 
    6276             :   // Copy non-constructor parameter data member (access function): sourceFileUsesPythonFileExtension_copy
    6277             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesPythonFileExtension
    6278             :   // case: toBeCopied == COPY_DATA for sourceFileUsesPythonFileExtension
    6279           0 :      bool sourceFileUsesPythonFileExtension_copy = p_sourceFileUsesPythonFileExtension; 
    6280           0 :      result->p_sourceFileUsesPythonFileExtension = sourceFileUsesPythonFileExtension_copy; 
    6281             :   // Copy non-constructor parameter data member (access function): sourceFileTypeIsUnknown_copy
    6282             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileTypeIsUnknown
    6283             :   // case: toBeCopied == COPY_DATA for sourceFileTypeIsUnknown
    6284           0 :      bool sourceFileTypeIsUnknown_copy = p_sourceFileTypeIsUnknown; 
    6285           0 :      result->p_sourceFileTypeIsUnknown = sourceFileTypeIsUnknown_copy; 
    6286             :   // Copy non-constructor parameter data member (access function): detect_dangling_pointers_copy
    6287             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for detect_dangling_pointers
    6288             :   // case: toBeCopied == COPY_DATA for detect_dangling_pointers
    6289           0 :      int detect_dangling_pointers_copy = p_detect_dangling_pointers; 
    6290           0 :      result->p_detect_dangling_pointers = detect_dangling_pointers_copy; 
    6291             :   // Copy non-constructor parameter data member (access function): experimental_fortran_frontend_copy
    6292             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_fortran_frontend
    6293             :   // case: toBeCopied == COPY_DATA for experimental_fortran_frontend
    6294           0 :      bool experimental_fortran_frontend_copy = p_experimental_fortran_frontend; 
    6295           0 :      result->p_experimental_fortran_frontend = experimental_fortran_frontend_copy; 
    6296             :   // Copy non-constructor parameter data member (access function): experimental_flang_frontend_copy
    6297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_flang_frontend
    6298             :   // case: toBeCopied == COPY_DATA for experimental_flang_frontend
    6299           0 :      bool experimental_flang_frontend_copy = p_experimental_flang_frontend; 
    6300           0 :      result->p_experimental_flang_frontend = experimental_flang_frontend_copy; 
    6301             :   // Copy non-constructor parameter data member (access function): experimental_cuda_fortran_frontend_copy
    6302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_cuda_fortran_frontend
    6303             :   // case: toBeCopied == COPY_DATA for experimental_cuda_fortran_frontend
    6304           0 :      bool experimental_cuda_fortran_frontend_copy = p_experimental_cuda_fortran_frontend; 
    6305           0 :      result->p_experimental_cuda_fortran_frontend = experimental_cuda_fortran_frontend_copy; 
    6306             :   // Copy non-constructor parameter data member (access function): experimental_fortran_frontend_OFP_test_copy
    6307             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_fortran_frontend_OFP_test
    6308             :   // case: toBeCopied == COPY_DATA for experimental_fortran_frontend_OFP_test
    6309           0 :      bool experimental_fortran_frontend_OFP_test_copy = p_experimental_fortran_frontend_OFP_test; 
    6310           0 :      result->p_experimental_fortran_frontend_OFP_test = experimental_fortran_frontend_OFP_test_copy; 
    6311             :   // Copy non-constructor parameter data member (access function): read_executable_file_format_only_copy
    6312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for read_executable_file_format_only
    6313             :   // case: toBeCopied == COPY_DATA for read_executable_file_format_only
    6314           0 :      bool read_executable_file_format_only_copy = p_read_executable_file_format_only; 
    6315           0 :      result->p_read_executable_file_format_only = read_executable_file_format_only_copy; 
    6316             :   // Copy non-constructor parameter data member (access function): visualize_executable_file_format_skip_symbols_copy
    6317             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for visualize_executable_file_format_skip_symbols
    6318             :   // case: toBeCopied == COPY_DATA for visualize_executable_file_format_skip_symbols
    6319           0 :      bool visualize_executable_file_format_skip_symbols_copy = p_visualize_executable_file_format_skip_symbols; 
    6320           0 :      result->p_visualize_executable_file_format_skip_symbols = visualize_executable_file_format_skip_symbols_copy; 
    6321             :   // Copy non-constructor parameter data member (access function): visualize_dwarf_only_copy
    6322             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for visualize_dwarf_only
    6323             :   // case: toBeCopied == COPY_DATA for visualize_dwarf_only
    6324           0 :      bool visualize_dwarf_only_copy = p_visualize_dwarf_only; 
    6325           0 :      result->p_visualize_dwarf_only = visualize_dwarf_only_copy; 
    6326             :   // Copy non-constructor parameter data member (access function): read_instructions_only_copy
    6327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for read_instructions_only
    6328             :   // case: toBeCopied == COPY_DATA for read_instructions_only
    6329           0 :      bool read_instructions_only_copy = p_read_instructions_only; 
    6330           0 :      result->p_read_instructions_only = read_instructions_only_copy; 
    6331             :   // Copy non-constructor parameter data member (no access function): result->p_skip_unparse_asm_commands
    6332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_unparse_asm_commands
    6333             :   // case: toBeCopied == COPY_DATA for skip_unparse_asm_commands
    6334           0 :      static bool skip_unparse_asm_commands_copy = p_skip_unparse_asm_commands; 
    6335           0 :      result->p_skip_unparse_asm_commands = skip_unparse_asm_commands_copy; 
    6336             :   // Copy non-constructor parameter data member (list access function): result->get_libraryArchiveObjectFileNameList()
    6337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for libraryArchiveObjectFileNameList
    6338             :   // case: toBeCopied == COPY_DATA for libraryArchiveObjectFileNameList
    6339           0 :      SgStringList libraryArchiveObjectFileNameList_copy = p_libraryArchiveObjectFileNameList; 
    6340           0 :      result->p_libraryArchiveObjectFileNameList = libraryArchiveObjectFileNameList_copy; 
    6341             :   // Copy non-constructor parameter data member (access function): isLibraryArchive_copy
    6342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isLibraryArchive
    6343             :   // case: toBeCopied == COPY_DATA for isLibraryArchive
    6344           0 :      bool isLibraryArchive_copy = p_isLibraryArchive; 
    6345           0 :      result->p_isLibraryArchive = isLibraryArchive_copy; 
    6346             :   // Copy non-constructor parameter data member (access function): isObjectFile_copy
    6347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isObjectFile
    6348             :   // case: toBeCopied == COPY_DATA for isObjectFile
    6349           0 :      bool isObjectFile_copy = p_isObjectFile; 
    6350           0 :      result->p_isObjectFile = isObjectFile_copy; 
    6351             :   // Copy non-constructor parameter data member (access function): unparse_tokens_copy
    6352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_tokens
    6353             :   // case: toBeCopied == COPY_DATA for unparse_tokens
    6354           0 :      bool unparse_tokens_copy = p_unparse_tokens; 
    6355           0 :      result->p_unparse_tokens = unparse_tokens_copy; 
    6356             :   // Copy non-constructor parameter data member (access function): unparse_tokens_testing_copy
    6357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_tokens_testing
    6358             :   // case: toBeCopied == COPY_DATA for unparse_tokens_testing
    6359           0 :      int unparse_tokens_testing_copy = p_unparse_tokens_testing; 
    6360           0 :      result->p_unparse_tokens_testing = unparse_tokens_testing_copy; 
    6361             :   // Copy non-constructor parameter data member (access function): unparse_using_leading_and_trailing_token_mappings_copy
    6362             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_using_leading_and_trailing_token_mappings
    6363             :   // case: toBeCopied == COPY_DATA for unparse_using_leading_and_trailing_token_mappings
    6364           0 :      bool unparse_using_leading_and_trailing_token_mappings_copy = p_unparse_using_leading_and_trailing_token_mappings; 
    6365           0 :      result->p_unparse_using_leading_and_trailing_token_mappings = unparse_using_leading_and_trailing_token_mappings_copy; 
    6366             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
    6367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
    6368             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
    6369           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
    6370           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
    6371             :   // Copy non-constructor parameter data member (access function): skipAstConsistancyTests_copy
    6372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipAstConsistancyTests
    6373             :   // case: toBeCopied == COPY_DATA for skipAstConsistancyTests
    6374           0 :      bool skipAstConsistancyTests_copy = p_skipAstConsistancyTests; 
    6375           0 :      result->p_skipAstConsistancyTests = skipAstConsistancyTests_copy; 
    6376             :   // Copy non-constructor parameter data member (access function): multifile_support_copy
    6377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for multifile_support
    6378             :   // case: toBeCopied == COPY_DATA for multifile_support
    6379           0 :      bool multifile_support_copy = p_multifile_support; 
    6380           0 :      result->p_multifile_support = multifile_support_copy; 
    6381             :   // Copy non-constructor parameter data member (access function): optimization_copy
    6382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for optimization
    6383             :   // case: toBeCopied == COPY_DATA for optimization
    6384           0 :      bool optimization_copy = p_optimization; 
    6385           0 :      result->p_optimization = optimization_copy; 
    6386             :   // Copy non-constructor parameter data member (access function): use_token_stream_to_improve_source_position_info_copy
    6387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for use_token_stream_to_improve_source_position_info
    6388             :   // case: toBeCopied == COPY_DATA for use_token_stream_to_improve_source_position_info
    6389           0 :      bool use_token_stream_to_improve_source_position_info_copy = p_use_token_stream_to_improve_source_position_info; 
    6390           0 :      result->p_use_token_stream_to_improve_source_position_info = use_token_stream_to_improve_source_position_info_copy; 
    6391             :   // Copy non-constructor parameter data member (access function): suppress_variable_declaration_normalization_copy
    6392             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for suppress_variable_declaration_normalization
    6393             :   // case: toBeCopied == COPY_DATA for suppress_variable_declaration_normalization
    6394           0 :      bool suppress_variable_declaration_normalization_copy = p_suppress_variable_declaration_normalization; 
    6395           0 :      result->p_suppress_variable_declaration_normalization = suppress_variable_declaration_normalization_copy; 
    6396             :   // Copy non-constructor parameter data member (access function): edg_il_to_graphviz_copy
    6397             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for edg_il_to_graphviz
    6398             :   // case: toBeCopied == COPY_DATA for edg_il_to_graphviz
    6399           0 :      bool edg_il_to_graphviz_copy = p_edg_il_to_graphviz; 
    6400           0 :      result->p_edg_il_to_graphviz = edg_il_to_graphviz_copy; 
    6401             :   // Copy non-constructor parameter data member (access function): clang_il_to_graphviz_copy
    6402             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clang_il_to_graphviz
    6403             :   // case: toBeCopied == COPY_DATA for clang_il_to_graphviz
    6404           0 :      bool clang_il_to_graphviz_copy = p_clang_il_to_graphviz; 
    6405           0 :      result->p_clang_il_to_graphviz = clang_il_to_graphviz_copy; 
    6406             :   // Copy non-constructor parameter data member (access function): no_optimize_flag_for_frontend_copy
    6407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_optimize_flag_for_frontend
    6408             :   // case: toBeCopied == COPY_DATA for no_optimize_flag_for_frontend
    6409           0 :      bool no_optimize_flag_for_frontend_copy = p_no_optimize_flag_for_frontend; 
    6410           0 :      result->p_no_optimize_flag_for_frontend = no_optimize_flag_for_frontend_copy; 
    6411             :   // Copy non-constructor parameter data member (access function): unparse_edg_normalized_method_ROSE_1392_copy
    6412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_edg_normalized_method_ROSE_1392
    6413             :   // case: toBeCopied == COPY_DATA for unparse_edg_normalized_method_ROSE_1392
    6414           0 :      bool unparse_edg_normalized_method_ROSE_1392_copy = p_unparse_edg_normalized_method_ROSE_1392; 
    6415           0 :      result->p_unparse_edg_normalized_method_ROSE_1392 = unparse_edg_normalized_method_ROSE_1392_copy; 
    6416             :   // Copy non-constructor parameter data member (no access function): result->p_header_file_unparsing_optimization
    6417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for header_file_unparsing_optimization
    6418             :   // case: toBeCopied == COPY_DATA for header_file_unparsing_optimization
    6419           0 :      static bool header_file_unparsing_optimization_copy = p_header_file_unparsing_optimization; 
    6420           0 :      result->p_header_file_unparsing_optimization = header_file_unparsing_optimization_copy; 
    6421             :   // Copy non-constructor parameter data member (access function): header_file_unparsing_optimization_source_file_copy
    6422             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for header_file_unparsing_optimization_source_file
    6423             :   // case: toBeCopied == COPY_DATA for header_file_unparsing_optimization_source_file
    6424           0 :      bool header_file_unparsing_optimization_source_file_copy = p_header_file_unparsing_optimization_source_file; 
    6425           0 :      result->p_header_file_unparsing_optimization_source_file = header_file_unparsing_optimization_source_file_copy; 
    6426             :   // Copy non-constructor parameter data member (access function): header_file_unparsing_optimization_header_file_copy
    6427             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for header_file_unparsing_optimization_header_file
    6428             :   // case: toBeCopied == COPY_DATA for header_file_unparsing_optimization_header_file
    6429           0 :      bool header_file_unparsing_optimization_header_file_copy = p_header_file_unparsing_optimization_header_file; 
    6430           0 :      result->p_header_file_unparsing_optimization_header_file = header_file_unparsing_optimization_header_file_copy; 
    6431             :   // Copy non-constructor parameter data member (no access function): result->p_standard
    6432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for standard
    6433             :   // case: toBeCopied == COPY_DATA for standard
    6434           0 :      SgFile::standard_enum standard_copy = p_standard; 
    6435           0 :      result->p_standard = standard_copy; 
    6436             :   // Copy non-constructor parameter data member (no access function): result->p_gnu_standard
    6437             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_standard
    6438             :   // case: toBeCopied == COPY_DATA for gnu_standard
    6439           0 :      bool gnu_standard_copy = p_gnu_standard; 
    6440           0 :      result->p_gnu_standard = gnu_standard_copy; 
    6441             :   // Copy non-constructor parameter data member (access function): frontendErrorCode_copy
    6442             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for frontendErrorCode
    6443             :   // case: toBeCopied == COPY_DATA for frontendErrorCode
    6444           0 :      int frontendErrorCode_copy = p_frontendErrorCode; 
    6445           0 :      result->p_frontendErrorCode = frontendErrorCode_copy; 
    6446             :   // Copy non-constructor parameter data member (access function): javacErrorCode_copy
    6447             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for javacErrorCode
    6448             :   // case: toBeCopied == COPY_DATA for javacErrorCode
    6449           0 :      int javacErrorCode_copy = p_javacErrorCode; 
    6450           0 :      result->p_javacErrorCode = javacErrorCode_copy; 
    6451             :   // Copy non-constructor parameter data member (access function): ecjErrorCode_copy
    6452             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ecjErrorCode
    6453             :   // case: toBeCopied == COPY_DATA for ecjErrorCode
    6454           0 :      int ecjErrorCode_copy = p_ecjErrorCode; 
    6455           0 :      result->p_ecjErrorCode = ecjErrorCode_copy; 
    6456             :   // Copy non-constructor parameter data member (access function): midendErrorCode_copy
    6457             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for midendErrorCode
    6458             :   // case: toBeCopied == COPY_DATA for midendErrorCode
    6459           0 :      int midendErrorCode_copy = p_midendErrorCode; 
    6460           0 :      result->p_midendErrorCode = midendErrorCode_copy; 
    6461             :   // Copy non-constructor parameter data member (access function): unparserErrorCode_copy
    6462             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparserErrorCode
    6463             :   // case: toBeCopied == COPY_DATA for unparserErrorCode
    6464           0 :      int unparserErrorCode_copy = p_unparserErrorCode; 
    6465           0 :      result->p_unparserErrorCode = unparserErrorCode_copy; 
    6466             :   // Copy non-constructor parameter data member (access function): backendCompilerErrorCode_copy
    6467             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for backendCompilerErrorCode
    6468             :   // case: toBeCopied == COPY_DATA for backendCompilerErrorCode
    6469           0 :      int backendCompilerErrorCode_copy = p_backendCompilerErrorCode; 
    6470           0 :      result->p_backendCompilerErrorCode = backendCompilerErrorCode_copy; 
    6471             :   // Copy non-constructor parameter data member (access function): unparsedFileFailedCompilation_copy
    6472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparsedFileFailedCompilation
    6473             :   // case: toBeCopied == COPY_DATA for unparsedFileFailedCompilation
    6474           0 :      bool unparsedFileFailedCompilation_copy = p_unparsedFileFailedCompilation; 
    6475           0 :      result->p_unparsedFileFailedCompilation = unparsedFileFailedCompilation_copy; 
    6476             :   // Copy non-constructor parameter data member (access function): globalScope_copy
    6477           0 :      SgGlobal* globalScope_copy; 
    6478             :   // case: not a listType for (using conditionalToCopyVariable)globalScope
    6479           0 :           if (get_globalScope() != NULL) 
    6480             :              { 
    6481           0 :                globalScope_copy = static_cast<SgGlobal*>(help.copyAst(get_globalScope())); 
    6482             :              } 
    6483             :             else 
    6484             :              { 
    6485             :                globalScope_copy = NULL; 
    6486             :              } 
    6487             :   /* check for a valid pointer and delete if present */ 
    6488           0 :      if (result->p_globalScope != NULL) delete result->p_globalScope; 
    6489           0 :      result->p_globalScope = globalScope_copy; 
    6490             :   // case: not a listType for (using conditionalToSetParent)globalScope
    6491           0 :           if ( (globalScope_copy != NULL) && (globalScope_copy->get_parent() == NULL) && (isSgType(globalScope_copy) == NULL) ) 
    6492             :              { 
    6493           0 :                globalScope_copy->set_parent(result); 
    6494             :              } 
    6495             :   // Copy non-constructor parameter data member (list access function): result->get_module_list()
    6496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for module_list
    6497             :   // case: toBeCopied == COPY_DATA for module_list
    6498           0 :      SgModuleStatementPtrList module_list_copy = p_module_list; 
    6499           0 :      result->p_module_list = module_list_copy; 
    6500             :   // Copy non-constructor parameter data member (list access function): result->get_token_list()
    6501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for token_list
    6502             :   // case: toBeCopied == COPY_DATA for token_list
    6503           0 :      SgTokenPtrList token_list_copy = p_token_list; 
    6504           0 :      result->p_token_list = token_list_copy; 
    6505             :   // Copy non-constructor parameter data member (access function): temp_holding_scope_copy
    6506             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for temp_holding_scope
    6507             :   // case: toBeCopied == COPY_DATA for temp_holding_scope
    6508           0 :      SgGlobal* temp_holding_scope_copy = p_temp_holding_scope; 
    6509           0 :      result->p_temp_holding_scope = temp_holding_scope_copy; 
    6510             :   // Copy non-constructor parameter data member (access function): isHeaderFile_copy
    6511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isHeaderFile
    6512             :   // case: toBeCopied == COPY_DATA for isHeaderFile
    6513           0 :      bool isHeaderFile_copy = p_isHeaderFile; 
    6514           0 :      result->p_isHeaderFile = isHeaderFile_copy; 
    6515             :   // Copy non-constructor parameter data member (access function): isHeaderFileIncludedMoreThanOnce_copy
    6516             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isHeaderFileIncludedMoreThanOnce
    6517             :   // case: toBeCopied == COPY_DATA for isHeaderFileIncludedMoreThanOnce
    6518           0 :      bool isHeaderFileIncludedMoreThanOnce_copy = p_isHeaderFileIncludedMoreThanOnce; 
    6519           0 :      result->p_isHeaderFileIncludedMoreThanOnce = isHeaderFileIncludedMoreThanOnce_copy; 
    6520             :   // Copy non-constructor parameter data member (access function): headerFileReport_copy
    6521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for headerFileReport
    6522             :   // case: toBeCopied == COPY_DATA for headerFileReport
    6523           0 :      SgHeaderFileReport* headerFileReport_copy = p_headerFileReport; 
    6524           0 :      result->p_headerFileReport = headerFileReport_copy; 
    6525             :   // Copy non-constructor parameter data member (list access function): result->get_extraIncludeDirectorySpecifierBeforeList()
    6526             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for extraIncludeDirectorySpecifierBeforeList
    6527             :   // case: toBeCopied == COPY_DATA for extraIncludeDirectorySpecifierBeforeList
    6528           0 :      SgStringList extraIncludeDirectorySpecifierBeforeList_copy = p_extraIncludeDirectorySpecifierBeforeList; 
    6529           0 :      result->p_extraIncludeDirectorySpecifierBeforeList = extraIncludeDirectorySpecifierBeforeList_copy; 
    6530             :   // Copy non-constructor parameter data member (list access function): result->get_extraIncludeDirectorySpecifierAfterList()
    6531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for extraIncludeDirectorySpecifierAfterList
    6532             :   // case: toBeCopied == COPY_DATA for extraIncludeDirectorySpecifierAfterList
    6533           0 :      SgStringList extraIncludeDirectorySpecifierAfterList_copy = p_extraIncludeDirectorySpecifierAfterList; 
    6534           0 :      result->p_extraIncludeDirectorySpecifierAfterList = extraIncludeDirectorySpecifierAfterList_copy; 
    6535             :   // Copy non-constructor parameter data member (access function): associated_include_file_copy
    6536             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for associated_include_file
    6537             :   // case: toBeCopied == COPY_DATA for associated_include_file
    6538           0 :      SgIncludeFile* associated_include_file_copy = p_associated_include_file; 
    6539           0 :      result->p_associated_include_file = associated_include_file_copy; 
    6540             :   // Copy non-constructor parameter data member (access function): processedToIncludeCppDirectivesAndComments_copy
    6541             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for processedToIncludeCppDirectivesAndComments
    6542             :   // case: toBeCopied == COPY_DATA for processedToIncludeCppDirectivesAndComments
    6543           0 :      bool processedToIncludeCppDirectivesAndComments_copy = p_processedToIncludeCppDirectivesAndComments; 
    6544           0 :      result->p_processedToIncludeCppDirectivesAndComments = processedToIncludeCppDirectivesAndComments_copy; 
    6545             :   // Copy non-constructor parameter data member (list access function): result->get_extra_nodes_for_namequal_init()
    6546             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for extra_nodes_for_namequal_init
    6547             :   // case: toBeCopied == COPY_DATA for extra_nodes_for_namequal_init
    6548           0 :      SgNodePtrList extra_nodes_for_namequal_init_copy = p_extra_nodes_for_namequal_init; 
    6549           0 :      result->p_extra_nodes_for_namequal_init = extra_nodes_for_namequal_init_copy; 
    6550             :   // Copy non-constructor parameter data member (access function): isDynamicLibrary_copy
    6551             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isDynamicLibrary
    6552             :   // case: toBeCopied == COPY_DATA for isDynamicLibrary
    6553           0 :      bool isDynamicLibrary_copy = p_isDynamicLibrary; 
    6554           0 :      result->p_isDynamicLibrary = isDynamicLibrary_copy; 
    6555             : 
    6556             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    6557             : 
    6558             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    6559             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    6560             :   // fixupCopy(result,help);
    6561             : 
    6562             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    6563             :   // the Sg_File_Info objects that are built for the new IR nodes.
    6564           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    6565           0 :      if (locatedNode != NULL)
    6566             :         {
    6567             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    6568           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    6569           0 :           ROSE_ASSERT(start != NULL);
    6570             : #if 0
    6571             :        // Debugging information
    6572             :           if (start->get_parent() == NULL)
    6573             :              {
    6574             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    6575             :              }
    6576             : #endif
    6577           0 :           start->set_parent(locatedNode);
    6578           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    6579             : 
    6580           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    6581             : 
    6582             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    6583             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    6584             :        // ROSE_ASSERT(end != NULL);
    6585           0 :           if (end == NULL)
    6586             :              {
    6587           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    6588             :              }
    6589             :             else
    6590             :              {
    6591             : #if 0
    6592             :             // Debugging information
    6593             :                if (end->get_parent() == NULL)
    6594             :                   {
    6595             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    6596             :                   }
    6597             : #endif
    6598           0 :                end->set_parent(locatedNode);
    6599           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    6600             :              }
    6601             : 
    6602           0 :           SgExpression* expression = isSgExpression(result);
    6603           0 :           if (isSgExpression(this) != NULL)
    6604             :              {
    6605           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    6606             : 
    6607             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    6608           0 :                if (operatorPosition != NULL)
    6609             :                   {
    6610             : #if 0
    6611             :                  // Debugging information
    6612             :                     if (operatorPosition->get_parent() == NULL)
    6613             :                        {
    6614             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    6615             :                        }
    6616             : #endif
    6617           0 :                     operatorPosition->set_parent(expression);
    6618           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    6619             :                   }
    6620             :              }
    6621             :         }
    6622             : 
    6623             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    6624           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    6625           0 :      if (initializedName != NULL)
    6626             :         {
    6627             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    6628           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    6629           0 :           ROSE_ASSERT(start != NULL);
    6630             : #if 0
    6631             :        // Debugging information
    6632             :           if (start->get_parent() == NULL)
    6633             :              {
    6634             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    6635             :              }
    6636             : #endif
    6637           0 :           start->set_parent(initializedName);
    6638           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    6639             : 
    6640             : #if 0
    6641             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    6642             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    6643             : 
    6644             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    6645             :        // ROSE_ASSERT(end != NULL);
    6646             :           if (end == NULL)
    6647             :              {
    6648             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    6649             :              }
    6650             :             else
    6651             :              {
    6652             :                if (end->get_parent() == NULL)
    6653             :                   {
    6654             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    6655             :                   }
    6656             :                end->set_parent(initializedName);
    6657             :                ROSE_ASSERT(end->get_parent() != NULL);
    6658             :              }
    6659             : #endif
    6660             :         }
    6661             : 
    6662             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    6663           0 :      help.insertCopiedNodePair(this,result);
    6664             : 
    6665             :   // printf ("End of copy SgSourceFile = %p = %s \n",this,SageInterface::get_name(this).c_str());
    6666             : 
    6667             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    6668             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    6669           0 :      help.decrementDepth();
    6670             : 
    6671             :   // Test if this is the root of the copy!
    6672           0 :      if (help.get_depth() == 0)
    6673             :         {
    6674             :        // This is the original calling node.
    6675             : 
    6676             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    6677             :        // printf ("Calling SgSourceFile::fixupCopy() (from root of AST being copied) \n");
    6678             : #if ALT_FIXUP_COPY
    6679             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    6680           0 :           fixupCopy_scopes (result,help);
    6681           0 :           fixupCopy_symbols (result,help);
    6682           0 :           fixupCopy_references (result,help);
    6683             : #else
    6684             :           fixupCopy(result,help);
    6685             : #endif
    6686             :        // Allow this to be called recursively, so accumulate the state.
    6687             :        // Also, clear the state in the SgCopyHelp object.
    6688             :        // help.clearState();
    6689             :         }
    6690             : 
    6691           0 :      return result;
    6692             :    }
    6693             : 
    6694             : 
    6695             : /* #line 6696 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    6696             : 
    6697             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    6698             : 
    6699           0 : SgNode* SgUnknownFile::copy ( SgCopyHelp& help) const
    6700             :    {
    6701           0 :      SgUnknownFile* result = NULL;
    6702             : 
    6703             :   // printf ("Copy SgUnknownFile = %p = %s \n",this,SageInterface::get_name(this).c_str());
    6704             : 
    6705             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    6706             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    6707             :   // The default value of the depth is 0, so after this call the depth is 1!
    6708           0 :      help.incrementDepth();
    6709             : 
    6710             : #if 0
    6711             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    6712             :   // but it is not generally true that things can only be copied once!
    6713             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    6714             :   // AstAttribute* existingAttribute = const_cast<SgUnknownFile*>(this)->attribute["copied"];
    6715             :      bool previouslyCopied = const_cast<SgUnknownFile*>(this)->attribute.exists("copied");
    6716             :      if (previouslyCopied == true)
    6717             :         {
    6718             :           this->get_file_info()->display("Called from copy SgUnknownFile: debug");
    6719             :         }
    6720             :      ROSE_ASSERT(previouslyCopied == false);
    6721             : 
    6722             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    6723             :      AstAttribute* newAttribute = new AstAttribute();
    6724             :      ROSE_ASSERT(newAttribute != NULL);
    6725             : 
    6726             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    6727             :      const_cast<SgUnknownFile*>(this)->attribute.add("copied",newAttribute);
    6728             : #endif
    6729             : 
    6730             :   // Copy data members from base classes
    6731             :  
    6732             : 
    6733             :   // Build an empty copy of this object (will be filled in, but 
    6734             :   // the parent can't be set and must be set by the caller)
    6735           0 :      result = new SgUnknownFile(  );
    6736           0 :      ROSE_ASSERT(result != NULL);
    6737             : 
    6738             :   // Copy data members of "this" class
    6739             :   // Copy non-constructor parameter data member (access function): startOfConstruct_copy
    6740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
    6741             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
    6742           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
    6743           0 :      if ( p_startOfConstruct != NULL ) 
    6744             :         { 
    6745           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
    6746             :         } 
    6747             :        else 
    6748             :         { 
    6749             :           startOfConstruct_copy = NULL; 
    6750             :         } 
    6751             :   /* check for a valid pointer and delete if present */ 
    6752           0 :      if (result->p_startOfConstruct != NULL) delete result->p_startOfConstruct; 
    6753             :   /* add assignment to result here */ 
    6754           0 :      result->p_startOfConstruct = startOfConstruct_copy; 
    6755             :   // Copy non-constructor parameter data member (access function): originalCommandLineArgumentList_copy
    6756             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalCommandLineArgumentList
    6757             :   // case: toBeCopied == COPY_DATA for originalCommandLineArgumentList
    6758           0 :      SgStringList originalCommandLineArgumentList_copy = p_originalCommandLineArgumentList; 
    6759           0 :      result->p_originalCommandLineArgumentList = originalCommandLineArgumentList_copy; 
    6760             :   // Copy non-constructor parameter data member (access function): verbose_copy
    6761             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for verbose
    6762             :   // case: toBeCopied == COPY_DATA for verbose
    6763           0 :      int verbose_copy = p_verbose; 
    6764           0 :      result->p_verbose = verbose_copy; 
    6765             :   // Copy non-constructor parameter data member (access function): output_warnings_copy
    6766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for output_warnings
    6767             :   // case: toBeCopied == COPY_DATA for output_warnings
    6768           0 :      bool output_warnings_copy = p_output_warnings; 
    6769           0 :      result->p_output_warnings = output_warnings_copy; 
    6770             :   // Copy non-constructor parameter data member (access function): C_only_copy
    6771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for C_only
    6772             :   // case: toBeCopied == COPY_DATA for C_only
    6773           0 :      bool C_only_copy = p_C_only; 
    6774           0 :      result->p_C_only = C_only_copy; 
    6775             :   // Copy non-constructor parameter data member (access function): Cxx_only_copy
    6776             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cxx_only
    6777             :   // case: toBeCopied == COPY_DATA for Cxx_only
    6778           0 :      bool Cxx_only_copy = p_Cxx_only; 
    6779           0 :      result->p_Cxx_only = Cxx_only_copy; 
    6780             :   // Copy non-constructor parameter data member (access function): Fortran_only_copy
    6781             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Fortran_only
    6782             :   // case: toBeCopied == COPY_DATA for Fortran_only
    6783           0 :      bool Fortran_only_copy = p_Fortran_only; 
    6784           0 :      result->p_Fortran_only = Fortran_only_copy; 
    6785             :   // Copy non-constructor parameter data member (access function): CoArrayFortran_only_copy
    6786             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for CoArrayFortran_only
    6787             :   // case: toBeCopied == COPY_DATA for CoArrayFortran_only
    6788           0 :      bool CoArrayFortran_only_copy = p_CoArrayFortran_only; 
    6789           0 :      result->p_CoArrayFortran_only = CoArrayFortran_only_copy; 
    6790             :   // Copy non-constructor parameter data member (access function): upc_threads_copy
    6791             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upc_threads
    6792             :   // case: toBeCopied == COPY_DATA for upc_threads
    6793           0 :      int upc_threads_copy = p_upc_threads; 
    6794           0 :      result->p_upc_threads = upc_threads_copy; 
    6795             :   // Copy non-constructor parameter data member (access function): Cuda_only_copy
    6796             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cuda_only
    6797             :   // case: toBeCopied == COPY_DATA for Cuda_only
    6798           0 :      bool Cuda_only_copy = p_Cuda_only; 
    6799           0 :      result->p_Cuda_only = Cuda_only_copy; 
    6800             :   // Copy non-constructor parameter data member (access function): OpenCL_only_copy
    6801             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for OpenCL_only
    6802             :   // case: toBeCopied == COPY_DATA for OpenCL_only
    6803           0 :      bool OpenCL_only_copy = p_OpenCL_only; 
    6804           0 :      result->p_OpenCL_only = OpenCL_only_copy; 
    6805             :   // Copy non-constructor parameter data member (access function): requires_C_preprocessor_copy
    6806             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requires_C_preprocessor
    6807             :   // case: toBeCopied == COPY_DATA for requires_C_preprocessor
    6808           0 :      bool requires_C_preprocessor_copy = p_requires_C_preprocessor; 
    6809           0 :      result->p_requires_C_preprocessor = requires_C_preprocessor_copy; 
    6810             :   // Copy non-constructor parameter data member (access function): inputFormat_copy
    6811             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for inputFormat
    6812             :   // case: toBeCopied == COPY_DATA for inputFormat
    6813           0 :      SgFile::outputFormatOption_enum inputFormat_copy = p_inputFormat; 
    6814           0 :      result->p_inputFormat = inputFormat_copy; 
    6815             :   // Copy non-constructor parameter data member (access function): outputFormat_copy
    6816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for outputFormat
    6817             :   // case: toBeCopied == COPY_DATA for outputFormat
    6818           0 :      SgFile::outputFormatOption_enum outputFormat_copy = p_outputFormat; 
    6819           0 :      result->p_outputFormat = outputFormat_copy; 
    6820             :   // Copy non-constructor parameter data member (access function): backendCompileFormat_copy
    6821             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for backendCompileFormat
    6822             :   // case: toBeCopied == COPY_DATA for backendCompileFormat
    6823           0 :      SgFile::outputFormatOption_enum backendCompileFormat_copy = p_backendCompileFormat; 
    6824           0 :      result->p_backendCompileFormat = backendCompileFormat_copy; 
    6825             :   // Copy non-constructor parameter data member (access function): fortran_implicit_none_copy
    6826             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fortran_implicit_none
    6827             :   // case: toBeCopied == COPY_DATA for fortran_implicit_none
    6828           0 :      bool fortran_implicit_none_copy = p_fortran_implicit_none; 
    6829           0 :      result->p_fortran_implicit_none = fortran_implicit_none_copy; 
    6830             :   // Copy non-constructor parameter data member (access function): openmp_copy
    6831             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp
    6832             :   // case: toBeCopied == COPY_DATA for openmp
    6833           0 :      bool openmp_copy = p_openmp; 
    6834           0 :      result->p_openmp = openmp_copy; 
    6835             :   // Copy non-constructor parameter data member (access function): openmp_parse_only_copy
    6836             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_parse_only
    6837             :   // case: toBeCopied == COPY_DATA for openmp_parse_only
    6838           0 :      bool openmp_parse_only_copy = p_openmp_parse_only; 
    6839           0 :      result->p_openmp_parse_only = openmp_parse_only_copy; 
    6840             :   // Copy non-constructor parameter data member (access function): openmp_ast_only_copy
    6841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_ast_only
    6842             :   // case: toBeCopied == COPY_DATA for openmp_ast_only
    6843           0 :      bool openmp_ast_only_copy = p_openmp_ast_only; 
    6844           0 :      result->p_openmp_ast_only = openmp_ast_only_copy; 
    6845             :   // Copy non-constructor parameter data member (access function): openmp_lowering_copy
    6846             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_lowering
    6847             :   // case: toBeCopied == COPY_DATA for openmp_lowering
    6848           0 :      bool openmp_lowering_copy = p_openmp_lowering; 
    6849           0 :      result->p_openmp_lowering = openmp_lowering_copy; 
    6850             :   // Copy non-constructor parameter data member (access function): openmp_analyzing_copy
    6851             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_analyzing
    6852             :   // case: toBeCopied == COPY_DATA for openmp_analyzing
    6853           0 :      bool openmp_analyzing_copy = p_openmp_analyzing; 
    6854           0 :      result->p_openmp_analyzing = openmp_analyzing_copy; 
    6855             :   // Copy non-constructor parameter data member (access function): cray_pointer_support_copy
    6856             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for cray_pointer_support
    6857             :   // case: toBeCopied == COPY_DATA for cray_pointer_support
    6858           0 :      bool cray_pointer_support_copy = p_cray_pointer_support; 
    6859           0 :      result->p_cray_pointer_support = cray_pointer_support_copy; 
    6860             :   // Copy non-constructor parameter data member (access function): failsafe_copy
    6861             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for failsafe
    6862             :   // case: toBeCopied == COPY_DATA for failsafe
    6863           0 :      bool failsafe_copy = p_failsafe; 
    6864           0 :      result->p_failsafe = failsafe_copy; 
    6865             :   // Copy non-constructor parameter data member (access function): output_parser_actions_copy
    6866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for output_parser_actions
    6867             :   // case: toBeCopied == COPY_DATA for output_parser_actions
    6868           0 :      bool output_parser_actions_copy = p_output_parser_actions; 
    6869           0 :      result->p_output_parser_actions = output_parser_actions_copy; 
    6870             :   // Copy non-constructor parameter data member (access function): exit_after_parser_copy
    6871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exit_after_parser
    6872             :   // case: toBeCopied == COPY_DATA for exit_after_parser
    6873           0 :      bool exit_after_parser_copy = p_exit_after_parser; 
    6874           0 :      result->p_exit_after_parser = exit_after_parser_copy; 
    6875             :   // Copy non-constructor parameter data member (access function): skip_syntax_check_copy
    6876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_syntax_check
    6877             :   // case: toBeCopied == COPY_DATA for skip_syntax_check
    6878           0 :      bool skip_syntax_check_copy = p_skip_syntax_check; 
    6879           0 :      result->p_skip_syntax_check = skip_syntax_check_copy; 
    6880             :   // Copy non-constructor parameter data member (access function): skip_parser_copy
    6881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_parser
    6882             :   // case: toBeCopied == COPY_DATA for skip_parser
    6883           0 :      bool skip_parser_copy = p_skip_parser; 
    6884           0 :      result->p_skip_parser = skip_parser_copy; 
    6885             :   // Copy non-constructor parameter data member (access function): relax_syntax_check_copy
    6886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for relax_syntax_check
    6887             :   // case: toBeCopied == COPY_DATA for relax_syntax_check
    6888           0 :      bool relax_syntax_check_copy = p_relax_syntax_check; 
    6889           0 :      result->p_relax_syntax_check = relax_syntax_check_copy; 
    6890             :   // Copy non-constructor parameter data member (access function): skip_translation_from_edg_ast_to_rose_ast_copy
    6891             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_translation_from_edg_ast_to_rose_ast
    6892             :   // case: toBeCopied == COPY_DATA for skip_translation_from_edg_ast_to_rose_ast
    6893           0 :      bool skip_translation_from_edg_ast_to_rose_ast_copy = p_skip_translation_from_edg_ast_to_rose_ast; 
    6894           0 :      result->p_skip_translation_from_edg_ast_to_rose_ast = skip_translation_from_edg_ast_to_rose_ast_copy; 
    6895             :   // Copy non-constructor parameter data member (access function): skip_transformation_copy
    6896             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_transformation
    6897             :   // case: toBeCopied == COPY_DATA for skip_transformation
    6898           0 :      bool skip_transformation_copy = p_skip_transformation; 
    6899           0 :      result->p_skip_transformation = skip_transformation_copy; 
    6900             :   // Copy non-constructor parameter data member (access function): skip_unparse_copy
    6901             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_unparse
    6902             :   // case: toBeCopied == COPY_DATA for skip_unparse
    6903           0 :      bool skip_unparse_copy = p_skip_unparse; 
    6904           0 :      result->p_skip_unparse = skip_unparse_copy; 
    6905             :   // Copy non-constructor parameter data member (access function): skipfinalCompileStep_copy
    6906             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipfinalCompileStep
    6907             :   // case: toBeCopied == COPY_DATA for skipfinalCompileStep
    6908           0 :      bool skipfinalCompileStep_copy = p_skipfinalCompileStep; 
    6909           0 :      result->p_skipfinalCompileStep = skipfinalCompileStep_copy; 
    6910             :   // Copy non-constructor parameter data member (access function): unparse_includes_copy
    6911             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_includes
    6912             :   // case: toBeCopied == COPY_DATA for unparse_includes
    6913           0 :      bool unparse_includes_copy = p_unparse_includes; 
    6914           0 :      result->p_unparse_includes = unparse_includes_copy; 
    6915             :   // Copy non-constructor parameter data member (access function): unparse_line_directives_copy
    6916             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_line_directives
    6917             :   // case: toBeCopied == COPY_DATA for unparse_line_directives
    6918           0 :      bool unparse_line_directives_copy = p_unparse_line_directives; 
    6919           0 :      result->p_unparse_line_directives = unparse_line_directives_copy; 
    6920             :   // Copy non-constructor parameter data member (access function): unparse_function_calls_using_operator_syntax_copy
    6921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_function_calls_using_operator_syntax
    6922             :   // case: toBeCopied == COPY_DATA for unparse_function_calls_using_operator_syntax
    6923           0 :      bool unparse_function_calls_using_operator_syntax_copy = p_unparse_function_calls_using_operator_syntax; 
    6924           0 :      result->p_unparse_function_calls_using_operator_syntax = unparse_function_calls_using_operator_syntax_copy; 
    6925             :   // Copy non-constructor parameter data member (access function): unparse_function_calls_using_operator_names_copy
    6926             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_function_calls_using_operator_names
    6927             :   // case: toBeCopied == COPY_DATA for unparse_function_calls_using_operator_names
    6928           0 :      bool unparse_function_calls_using_operator_names_copy = p_unparse_function_calls_using_operator_names; 
    6929           0 :      result->p_unparse_function_calls_using_operator_names = unparse_function_calls_using_operator_names_copy; 
    6930             :   // Copy non-constructor parameter data member (access function): unparse_instruction_addresses_copy
    6931             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_instruction_addresses
    6932             :   // case: toBeCopied == COPY_DATA for unparse_instruction_addresses
    6933           0 :      bool unparse_instruction_addresses_copy = p_unparse_instruction_addresses; 
    6934           0 :      result->p_unparse_instruction_addresses = unparse_instruction_addresses_copy; 
    6935             :   // Copy non-constructor parameter data member (access function): unparse_raw_memory_contents_copy
    6936             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_raw_memory_contents
    6937             :   // case: toBeCopied == COPY_DATA for unparse_raw_memory_contents
    6938           0 :      bool unparse_raw_memory_contents_copy = p_unparse_raw_memory_contents; 
    6939           0 :      result->p_unparse_raw_memory_contents = unparse_raw_memory_contents_copy; 
    6940             :   // Copy non-constructor parameter data member (access function): unparse_binary_file_format_copy
    6941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_binary_file_format
    6942             :   // case: toBeCopied == COPY_DATA for unparse_binary_file_format
    6943           0 :      bool unparse_binary_file_format_copy = p_unparse_binary_file_format; 
    6944           0 :      result->p_unparse_binary_file_format = unparse_binary_file_format_copy; 
    6945             :   // Copy non-constructor parameter data member (access function): outputLanguage_copy
    6946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for outputLanguage
    6947             :   // case: toBeCopied == COPY_DATA for outputLanguage
    6948           0 :      SgFile::languageOption_enum outputLanguage_copy = p_outputLanguage; 
    6949           0 :      result->p_outputLanguage = outputLanguage_copy; 
    6950             :   // Copy non-constructor parameter data member (access function): inputLanguage_copy
    6951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for inputLanguage
    6952             :   // case: toBeCopied == COPY_DATA for inputLanguage
    6953           0 :      SgFile::languageOption_enum inputLanguage_copy = p_inputLanguage; 
    6954           0 :      result->p_inputLanguage = inputLanguage_copy; 
    6955             :   // Copy non-constructor parameter data member (access function): sourceFileNameWithPath_copy
    6956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileNameWithPath
    6957             :   // case: toBeCopied == COPY_DATA for sourceFileNameWithPath
    6958           0 :      std::string sourceFileNameWithPath_copy = p_sourceFileNameWithPath; 
    6959           0 :      result->p_sourceFileNameWithPath = sourceFileNameWithPath_copy; 
    6960             :   // Copy non-constructor parameter data member (access function): sourceFileNameWithoutPath_copy
    6961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileNameWithoutPath
    6962             :   // case: toBeCopied == COPY_DATA for sourceFileNameWithoutPath
    6963           0 :      std::string sourceFileNameWithoutPath_copy = p_sourceFileNameWithoutPath; 
    6964           0 :      result->p_sourceFileNameWithoutPath = sourceFileNameWithoutPath_copy; 
    6965             :   // Copy non-constructor parameter data member (access function): unparse_output_filename_copy
    6966             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_output_filename
    6967             :   // case: toBeCopied == COPY_DATA for unparse_output_filename
    6968           0 :      std::string unparse_output_filename_copy = p_unparse_output_filename; 
    6969           0 :      result->p_unparse_output_filename = unparse_output_filename_copy; 
    6970             :   // Copy non-constructor parameter data member (access function): objectFileNameWithPath_copy
    6971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for objectFileNameWithPath
    6972             :   // case: toBeCopied == COPY_DATA for objectFileNameWithPath
    6973           0 :      std::string objectFileNameWithPath_copy = p_objectFileNameWithPath; 
    6974           0 :      result->p_objectFileNameWithPath = objectFileNameWithPath_copy; 
    6975             :   // Copy non-constructor parameter data member (access function): objectFileNameWithoutPath_copy
    6976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for objectFileNameWithoutPath
    6977             :   // case: toBeCopied == COPY_DATA for objectFileNameWithoutPath
    6978           0 :      std::string objectFileNameWithoutPath_copy = p_objectFileNameWithoutPath; 
    6979           0 :      result->p_objectFileNameWithoutPath = objectFileNameWithoutPath_copy; 
    6980             :   // Copy non-constructor parameter data member (access function): useBackendOnly_copy
    6981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for useBackendOnly
    6982             :   // case: toBeCopied == COPY_DATA for useBackendOnly
    6983           0 :      bool useBackendOnly_copy = p_useBackendOnly; 
    6984           0 :      result->p_useBackendOnly = useBackendOnly_copy; 
    6985             :   // Copy non-constructor parameter data member (access function): compileOnly_copy
    6986             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for compileOnly
    6987             :   // case: toBeCopied == COPY_DATA for compileOnly
    6988           0 :      bool compileOnly_copy = p_compileOnly; 
    6989           0 :      result->p_compileOnly = compileOnly_copy; 
    6990             :   // Copy non-constructor parameter data member (access function): savedFrontendCommandLine_copy
    6991             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for savedFrontendCommandLine
    6992             :   // case: toBeCopied == COPY_DATA for savedFrontendCommandLine
    6993           0 :      std::string savedFrontendCommandLine_copy = p_savedFrontendCommandLine; 
    6994           0 :      result->p_savedFrontendCommandLine = savedFrontendCommandLine_copy; 
    6995             :   // Copy non-constructor parameter data member (access function): no_implicit_templates_copy
    6996             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_implicit_templates
    6997             :   // case: toBeCopied == COPY_DATA for no_implicit_templates
    6998           0 :      bool no_implicit_templates_copy = p_no_implicit_templates; 
    6999           0 :      result->p_no_implicit_templates = no_implicit_templates_copy; 
    7000             :   // Copy non-constructor parameter data member (access function): no_implicit_inline_templates_copy
    7001             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_implicit_inline_templates
    7002             :   // case: toBeCopied == COPY_DATA for no_implicit_inline_templates
    7003           0 :      bool no_implicit_inline_templates_copy = p_no_implicit_inline_templates; 
    7004           0 :      result->p_no_implicit_inline_templates = no_implicit_inline_templates_copy; 
    7005             :   // Copy non-constructor parameter data member (access function): skip_commentsAndDirectives_copy
    7006             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_commentsAndDirectives
    7007             :   // case: toBeCopied == COPY_DATA for skip_commentsAndDirectives
    7008           0 :      bool skip_commentsAndDirectives_copy = p_skip_commentsAndDirectives; 
    7009           0 :      result->p_skip_commentsAndDirectives = skip_commentsAndDirectives_copy; 
    7010             :   // Copy non-constructor parameter data member (access function): collectAllCommentsAndDirectives_copy
    7011             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for collectAllCommentsAndDirectives
    7012             :   // case: toBeCopied == COPY_DATA for collectAllCommentsAndDirectives
    7013           0 :      bool collectAllCommentsAndDirectives_copy = p_collectAllCommentsAndDirectives; 
    7014           0 :      result->p_collectAllCommentsAndDirectives = collectAllCommentsAndDirectives_copy; 
    7015             :   // Copy non-constructor parameter data member (access function): translateCommentsAndDirectivesIntoAST_copy
    7016             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for translateCommentsAndDirectivesIntoAST
    7017             :   // case: toBeCopied == COPY_DATA for translateCommentsAndDirectivesIntoAST
    7018           0 :      bool translateCommentsAndDirectivesIntoAST_copy = p_translateCommentsAndDirectivesIntoAST; 
    7019           0 :      result->p_translateCommentsAndDirectivesIntoAST = translateCommentsAndDirectivesIntoAST_copy; 
    7020             :   // Copy non-constructor parameter data member (access function): unparseHeaderFiles_copy
    7021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparseHeaderFiles
    7022             :   // case: toBeCopied == COPY_DATA for unparseHeaderFiles
    7023           0 :      bool unparseHeaderFiles_copy = p_unparseHeaderFiles; 
    7024           0 :      result->p_unparseHeaderFiles = unparseHeaderFiles_copy; 
    7025             :   // Copy non-constructor parameter data member (access function): preprocessorDirectivesAndCommentsList_copy
    7026             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preprocessorDirectivesAndCommentsList
    7027             :   // case: toBeCopied == COPY_DATA for preprocessorDirectivesAndCommentsList
    7028           0 :      ROSEAttributesListContainerPtr preprocessorDirectivesAndCommentsList_copy = p_preprocessorDirectivesAndCommentsList; 
    7029           0 :      result->p_preprocessorDirectivesAndCommentsList = preprocessorDirectivesAndCommentsList_copy; 
    7030             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
    7031             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
    7032             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
    7033           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
    7034           0 :      if ( p_attributeMechanism != NULL ) 
    7035             :         { 
    7036           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
    7037             :         } 
    7038             :        else 
    7039             :         { 
    7040             :           attributeMechanism_copy = NULL; 
    7041             :         } 
    7042             :   /* check for a valid pointer and delete if present */ 
    7043           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
    7044             :   /* add assignment to result here */ 
    7045           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
    7046             :   // Copy non-constructor parameter data member (access function): KCC_frontend_copy
    7047             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for KCC_frontend
    7048             :   // case: toBeCopied == COPY_DATA for KCC_frontend
    7049           0 :      bool KCC_frontend_copy = p_KCC_frontend; 
    7050           0 :      result->p_KCC_frontend = KCC_frontend_copy; 
    7051             :   // Copy non-constructor parameter data member (access function): new_frontend_copy
    7052             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for new_frontend
    7053             :   // case: toBeCopied == COPY_DATA for new_frontend
    7054           0 :      bool new_frontend_copy = p_new_frontend; 
    7055           0 :      result->p_new_frontend = new_frontend_copy; 
    7056             :   // Copy non-constructor parameter data member (access function): disable_edg_backend_copy
    7057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for disable_edg_backend
    7058             :   // case: toBeCopied == COPY_DATA for disable_edg_backend
    7059           0 :      bool disable_edg_backend_copy = p_disable_edg_backend; 
    7060           0 :      result->p_disable_edg_backend = disable_edg_backend_copy; 
    7061             :   // Copy non-constructor parameter data member (access function): disable_sage_backend_copy
    7062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for disable_sage_backend
    7063             :   // case: toBeCopied == COPY_DATA for disable_sage_backend
    7064           0 :      bool disable_sage_backend_copy = p_disable_sage_backend; 
    7065           0 :      result->p_disable_sage_backend = disable_sage_backend_copy; 
    7066             :   // Copy non-constructor parameter data member (access function): testingLevel_copy
    7067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for testingLevel
    7068             :   // case: toBeCopied == COPY_DATA for testingLevel
    7069           0 :      int testingLevel_copy = p_testingLevel; 
    7070           0 :      result->p_testingLevel = testingLevel_copy; 
    7071             :   // Copy non-constructor parameter data member (access function): preinit_il_copy
    7072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preinit_il
    7073             :   // case: toBeCopied == COPY_DATA for preinit_il
    7074           0 :      bool preinit_il_copy = p_preinit_il; 
    7075           0 :      result->p_preinit_il = preinit_il_copy; 
    7076             :   // Copy non-constructor parameter data member (access function): enable_cp_backend_copy
    7077             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for enable_cp_backend
    7078             :   // case: toBeCopied == COPY_DATA for enable_cp_backend
    7079           0 :      bool enable_cp_backend_copy = p_enable_cp_backend; 
    7080           0 :      result->p_enable_cp_backend = enable_cp_backend_copy; 
    7081             :   // Copy non-constructor parameter data member (access function): markGeneratedFiles_copy
    7082             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for markGeneratedFiles
    7083             :   // case: toBeCopied == COPY_DATA for markGeneratedFiles
    7084           0 :      bool markGeneratedFiles_copy = p_markGeneratedFiles; 
    7085           0 :      result->p_markGeneratedFiles = markGeneratedFiles_copy; 
    7086             :   // Copy non-constructor parameter data member (access function): negative_test_copy
    7087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for negative_test
    7088             :   // case: toBeCopied == COPY_DATA for negative_test
    7089           0 :      bool negative_test_copy = p_negative_test; 
    7090           0 :      result->p_negative_test = negative_test_copy; 
    7091             :   // Copy non-constructor parameter data member (access function): strict_language_handling_copy
    7092             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for strict_language_handling
    7093             :   // case: toBeCopied == COPY_DATA for strict_language_handling
    7094           0 :      bool strict_language_handling_copy = p_strict_language_handling; 
    7095           0 :      result->p_strict_language_handling = strict_language_handling_copy; 
    7096             :   // Copy non-constructor parameter data member (access function): wave_copy
    7097             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for wave
    7098             :   // case: toBeCopied == COPY_DATA for wave
    7099           0 :      bool wave_copy = p_wave; 
    7100           0 :      result->p_wave = wave_copy; 
    7101             :   // Copy non-constructor parameter data member (access function): embedColorCodesInGeneratedCode_copy
    7102             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for embedColorCodesInGeneratedCode
    7103             :   // case: toBeCopied == COPY_DATA for embedColorCodesInGeneratedCode
    7104           0 :      int embedColorCodesInGeneratedCode_copy = p_embedColorCodesInGeneratedCode; 
    7105           0 :      result->p_embedColorCodesInGeneratedCode = embedColorCodesInGeneratedCode_copy; 
    7106             :   // Copy non-constructor parameter data member (access function): generateSourcePositionCodes_copy
    7107             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for generateSourcePositionCodes
    7108             :   // case: toBeCopied == COPY_DATA for generateSourcePositionCodes
    7109           0 :      int generateSourcePositionCodes_copy = p_generateSourcePositionCodes; 
    7110           0 :      result->p_generateSourcePositionCodes = generateSourcePositionCodes_copy; 
    7111             :   // Copy non-constructor parameter data member (access function): sourceFileUsesCppFileExtension_copy
    7112             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesCppFileExtension
    7113             :   // case: toBeCopied == COPY_DATA for sourceFileUsesCppFileExtension
    7114           0 :      bool sourceFileUsesCppFileExtension_copy = p_sourceFileUsesCppFileExtension; 
    7115           0 :      result->p_sourceFileUsesCppFileExtension = sourceFileUsesCppFileExtension_copy; 
    7116             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortranFileExtension_copy
    7117             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortranFileExtension
    7118             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortranFileExtension
    7119           0 :      bool sourceFileUsesFortranFileExtension_copy = p_sourceFileUsesFortranFileExtension; 
    7120           0 :      result->p_sourceFileUsesFortranFileExtension = sourceFileUsesFortranFileExtension_copy; 
    7121             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran77FileExtension_copy
    7122             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran77FileExtension
    7123             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran77FileExtension
    7124           0 :      bool sourceFileUsesFortran77FileExtension_copy = p_sourceFileUsesFortran77FileExtension; 
    7125           0 :      result->p_sourceFileUsesFortran77FileExtension = sourceFileUsesFortran77FileExtension_copy; 
    7126             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran90FileExtension_copy
    7127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran90FileExtension
    7128             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran90FileExtension
    7129           0 :      bool sourceFileUsesFortran90FileExtension_copy = p_sourceFileUsesFortran90FileExtension; 
    7130           0 :      result->p_sourceFileUsesFortran90FileExtension = sourceFileUsesFortran90FileExtension_copy; 
    7131             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran95FileExtension_copy
    7132             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran95FileExtension
    7133             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran95FileExtension
    7134           0 :      bool sourceFileUsesFortran95FileExtension_copy = p_sourceFileUsesFortran95FileExtension; 
    7135           0 :      result->p_sourceFileUsesFortran95FileExtension = sourceFileUsesFortran95FileExtension_copy; 
    7136             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran2003FileExtension_copy
    7137             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran2003FileExtension
    7138             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran2003FileExtension
    7139           0 :      bool sourceFileUsesFortran2003FileExtension_copy = p_sourceFileUsesFortran2003FileExtension; 
    7140           0 :      result->p_sourceFileUsesFortran2003FileExtension = sourceFileUsesFortran2003FileExtension_copy; 
    7141             :   // Copy non-constructor parameter data member (access function): sourceFileUsesFortran2008FileExtension_copy
    7142             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesFortran2008FileExtension
    7143             :   // case: toBeCopied == COPY_DATA for sourceFileUsesFortran2008FileExtension
    7144           0 :      bool sourceFileUsesFortran2008FileExtension_copy = p_sourceFileUsesFortran2008FileExtension; 
    7145           0 :      result->p_sourceFileUsesFortran2008FileExtension = sourceFileUsesFortran2008FileExtension_copy; 
    7146             :   // Copy non-constructor parameter data member (access function): sourceFileUsesCoArrayFortranFileExtension_copy
    7147             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesCoArrayFortranFileExtension
    7148             :   // case: toBeCopied == COPY_DATA for sourceFileUsesCoArrayFortranFileExtension
    7149           0 :      bool sourceFileUsesCoArrayFortranFileExtension_copy = p_sourceFileUsesCoArrayFortranFileExtension; 
    7150           0 :      result->p_sourceFileUsesCoArrayFortranFileExtension = sourceFileUsesCoArrayFortranFileExtension_copy; 
    7151             :   // Copy non-constructor parameter data member (access function): sourceFileUsesPHPFileExtension_copy
    7152             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesPHPFileExtension
    7153             :   // case: toBeCopied == COPY_DATA for sourceFileUsesPHPFileExtension
    7154           0 :      bool sourceFileUsesPHPFileExtension_copy = p_sourceFileUsesPHPFileExtension; 
    7155           0 :      result->p_sourceFileUsesPHPFileExtension = sourceFileUsesPHPFileExtension_copy; 
    7156             :   // Copy non-constructor parameter data member (access function): sourceFileUsesPythonFileExtension_copy
    7157             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileUsesPythonFileExtension
    7158             :   // case: toBeCopied == COPY_DATA for sourceFileUsesPythonFileExtension
    7159           0 :      bool sourceFileUsesPythonFileExtension_copy = p_sourceFileUsesPythonFileExtension; 
    7160           0 :      result->p_sourceFileUsesPythonFileExtension = sourceFileUsesPythonFileExtension_copy; 
    7161             :   // Copy non-constructor parameter data member (access function): sourceFileTypeIsUnknown_copy
    7162             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileTypeIsUnknown
    7163             :   // case: toBeCopied == COPY_DATA for sourceFileTypeIsUnknown
    7164           0 :      bool sourceFileTypeIsUnknown_copy = p_sourceFileTypeIsUnknown; 
    7165           0 :      result->p_sourceFileTypeIsUnknown = sourceFileTypeIsUnknown_copy; 
    7166             :   // Copy non-constructor parameter data member (access function): detect_dangling_pointers_copy
    7167             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for detect_dangling_pointers
    7168             :   // case: toBeCopied == COPY_DATA for detect_dangling_pointers
    7169           0 :      int detect_dangling_pointers_copy = p_detect_dangling_pointers; 
    7170           0 :      result->p_detect_dangling_pointers = detect_dangling_pointers_copy; 
    7171             :   // Copy non-constructor parameter data member (access function): experimental_fortran_frontend_copy
    7172             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_fortran_frontend
    7173             :   // case: toBeCopied == COPY_DATA for experimental_fortran_frontend
    7174           0 :      bool experimental_fortran_frontend_copy = p_experimental_fortran_frontend; 
    7175           0 :      result->p_experimental_fortran_frontend = experimental_fortran_frontend_copy; 
    7176             :   // Copy non-constructor parameter data member (access function): experimental_flang_frontend_copy
    7177             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_flang_frontend
    7178             :   // case: toBeCopied == COPY_DATA for experimental_flang_frontend
    7179           0 :      bool experimental_flang_frontend_copy = p_experimental_flang_frontend; 
    7180           0 :      result->p_experimental_flang_frontend = experimental_flang_frontend_copy; 
    7181             :   // Copy non-constructor parameter data member (access function): experimental_cuda_fortran_frontend_copy
    7182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_cuda_fortran_frontend
    7183             :   // case: toBeCopied == COPY_DATA for experimental_cuda_fortran_frontend
    7184           0 :      bool experimental_cuda_fortran_frontend_copy = p_experimental_cuda_fortran_frontend; 
    7185           0 :      result->p_experimental_cuda_fortran_frontend = experimental_cuda_fortran_frontend_copy; 
    7186             :   // Copy non-constructor parameter data member (access function): experimental_fortran_frontend_OFP_test_copy
    7187             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for experimental_fortran_frontend_OFP_test
    7188             :   // case: toBeCopied == COPY_DATA for experimental_fortran_frontend_OFP_test
    7189           0 :      bool experimental_fortran_frontend_OFP_test_copy = p_experimental_fortran_frontend_OFP_test; 
    7190           0 :      result->p_experimental_fortran_frontend_OFP_test = experimental_fortran_frontend_OFP_test_copy; 
    7191             :   // Copy non-constructor parameter data member (access function): read_executable_file_format_only_copy
    7192             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for read_executable_file_format_only
    7193             :   // case: toBeCopied == COPY_DATA for read_executable_file_format_only
    7194           0 :      bool read_executable_file_format_only_copy = p_read_executable_file_format_only; 
    7195           0 :      result->p_read_executable_file_format_only = read_executable_file_format_only_copy; 
    7196             :   // Copy non-constructor parameter data member (access function): visualize_executable_file_format_skip_symbols_copy
    7197             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for visualize_executable_file_format_skip_symbols
    7198             :   // case: toBeCopied == COPY_DATA for visualize_executable_file_format_skip_symbols
    7199           0 :      bool visualize_executable_file_format_skip_symbols_copy = p_visualize_executable_file_format_skip_symbols; 
    7200           0 :      result->p_visualize_executable_file_format_skip_symbols = visualize_executable_file_format_skip_symbols_copy; 
    7201             :   // Copy non-constructor parameter data member (access function): visualize_dwarf_only_copy
    7202             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for visualize_dwarf_only
    7203             :   // case: toBeCopied == COPY_DATA for visualize_dwarf_only
    7204           0 :      bool visualize_dwarf_only_copy = p_visualize_dwarf_only; 
    7205           0 :      result->p_visualize_dwarf_only = visualize_dwarf_only_copy; 
    7206             :   // Copy non-constructor parameter data member (access function): read_instructions_only_copy
    7207             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for read_instructions_only
    7208             :   // case: toBeCopied == COPY_DATA for read_instructions_only
    7209           0 :      bool read_instructions_only_copy = p_read_instructions_only; 
    7210           0 :      result->p_read_instructions_only = read_instructions_only_copy; 
    7211             :   // Copy non-constructor parameter data member (no access function): result->p_skip_unparse_asm_commands
    7212             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skip_unparse_asm_commands
    7213             :   // case: toBeCopied == COPY_DATA for skip_unparse_asm_commands
    7214           0 :      static bool skip_unparse_asm_commands_copy = p_skip_unparse_asm_commands; 
    7215           0 :      result->p_skip_unparse_asm_commands = skip_unparse_asm_commands_copy; 
    7216             :   // Copy non-constructor parameter data member (list access function): result->get_libraryArchiveObjectFileNameList()
    7217             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for libraryArchiveObjectFileNameList
    7218             :   // case: toBeCopied == COPY_DATA for libraryArchiveObjectFileNameList
    7219           0 :      SgStringList libraryArchiveObjectFileNameList_copy = p_libraryArchiveObjectFileNameList; 
    7220           0 :      result->p_libraryArchiveObjectFileNameList = libraryArchiveObjectFileNameList_copy; 
    7221             :   // Copy non-constructor parameter data member (access function): isLibraryArchive_copy
    7222             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isLibraryArchive
    7223             :   // case: toBeCopied == COPY_DATA for isLibraryArchive
    7224           0 :      bool isLibraryArchive_copy = p_isLibraryArchive; 
    7225           0 :      result->p_isLibraryArchive = isLibraryArchive_copy; 
    7226             :   // Copy non-constructor parameter data member (access function): isObjectFile_copy
    7227             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isObjectFile
    7228             :   // case: toBeCopied == COPY_DATA for isObjectFile
    7229           0 :      bool isObjectFile_copy = p_isObjectFile; 
    7230           0 :      result->p_isObjectFile = isObjectFile_copy; 
    7231             :   // Copy non-constructor parameter data member (access function): unparse_tokens_copy
    7232             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_tokens
    7233             :   // case: toBeCopied == COPY_DATA for unparse_tokens
    7234           0 :      bool unparse_tokens_copy = p_unparse_tokens; 
    7235           0 :      result->p_unparse_tokens = unparse_tokens_copy; 
    7236             :   // Copy non-constructor parameter data member (access function): unparse_tokens_testing_copy
    7237             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_tokens_testing
    7238             :   // case: toBeCopied == COPY_DATA for unparse_tokens_testing
    7239           0 :      int unparse_tokens_testing_copy = p_unparse_tokens_testing; 
    7240           0 :      result->p_unparse_tokens_testing = unparse_tokens_testing_copy; 
    7241             :   // Copy non-constructor parameter data member (access function): unparse_using_leading_and_trailing_token_mappings_copy
    7242             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_using_leading_and_trailing_token_mappings
    7243             :   // case: toBeCopied == COPY_DATA for unparse_using_leading_and_trailing_token_mappings
    7244           0 :      bool unparse_using_leading_and_trailing_token_mappings_copy = p_unparse_using_leading_and_trailing_token_mappings; 
    7245           0 :      result->p_unparse_using_leading_and_trailing_token_mappings = unparse_using_leading_and_trailing_token_mappings_copy; 
    7246             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
    7247             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
    7248             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
    7249           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
    7250           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
    7251             :   // Copy non-constructor parameter data member (access function): skipAstConsistancyTests_copy
    7252             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipAstConsistancyTests
    7253             :   // case: toBeCopied == COPY_DATA for skipAstConsistancyTests
    7254           0 :      bool skipAstConsistancyTests_copy = p_skipAstConsistancyTests; 
    7255           0 :      result->p_skipAstConsistancyTests = skipAstConsistancyTests_copy; 
    7256             :   // Copy non-constructor parameter data member (access function): multifile_support_copy
    7257             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for multifile_support
    7258             :   // case: toBeCopied == COPY_DATA for multifile_support
    7259           0 :      bool multifile_support_copy = p_multifile_support; 
    7260           0 :      result->p_multifile_support = multifile_support_copy; 
    7261             :   // Copy non-constructor parameter data member (access function): optimization_copy
    7262             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for optimization
    7263             :   // case: toBeCopied == COPY_DATA for optimization
    7264           0 :      bool optimization_copy = p_optimization; 
    7265           0 :      result->p_optimization = optimization_copy; 
    7266             :   // Copy non-constructor parameter data member (access function): use_token_stream_to_improve_source_position_info_copy
    7267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for use_token_stream_to_improve_source_position_info
    7268             :   // case: toBeCopied == COPY_DATA for use_token_stream_to_improve_source_position_info
    7269           0 :      bool use_token_stream_to_improve_source_position_info_copy = p_use_token_stream_to_improve_source_position_info; 
    7270           0 :      result->p_use_token_stream_to_improve_source_position_info = use_token_stream_to_improve_source_position_info_copy; 
    7271             :   // Copy non-constructor parameter data member (access function): suppress_variable_declaration_normalization_copy
    7272             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for suppress_variable_declaration_normalization
    7273             :   // case: toBeCopied == COPY_DATA for suppress_variable_declaration_normalization
    7274           0 :      bool suppress_variable_declaration_normalization_copy = p_suppress_variable_declaration_normalization; 
    7275           0 :      result->p_suppress_variable_declaration_normalization = suppress_variable_declaration_normalization_copy; 
    7276             :   // Copy non-constructor parameter data member (access function): edg_il_to_graphviz_copy
    7277             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for edg_il_to_graphviz
    7278             :   // case: toBeCopied == COPY_DATA for edg_il_to_graphviz
    7279           0 :      bool edg_il_to_graphviz_copy = p_edg_il_to_graphviz; 
    7280           0 :      result->p_edg_il_to_graphviz = edg_il_to_graphviz_copy; 
    7281             :   // Copy non-constructor parameter data member (access function): clang_il_to_graphviz_copy
    7282             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clang_il_to_graphviz
    7283             :   // case: toBeCopied == COPY_DATA for clang_il_to_graphviz
    7284           0 :      bool clang_il_to_graphviz_copy = p_clang_il_to_graphviz; 
    7285           0 :      result->p_clang_il_to_graphviz = clang_il_to_graphviz_copy; 
    7286             :   // Copy non-constructor parameter data member (access function): no_optimize_flag_for_frontend_copy
    7287             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for no_optimize_flag_for_frontend
    7288             :   // case: toBeCopied == COPY_DATA for no_optimize_flag_for_frontend
    7289           0 :      bool no_optimize_flag_for_frontend_copy = p_no_optimize_flag_for_frontend; 
    7290           0 :      result->p_no_optimize_flag_for_frontend = no_optimize_flag_for_frontend_copy; 
    7291             :   // Copy non-constructor parameter data member (access function): unparse_edg_normalized_method_ROSE_1392_copy
    7292             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_edg_normalized_method_ROSE_1392
    7293             :   // case: toBeCopied == COPY_DATA for unparse_edg_normalized_method_ROSE_1392
    7294           0 :      bool unparse_edg_normalized_method_ROSE_1392_copy = p_unparse_edg_normalized_method_ROSE_1392; 
    7295           0 :      result->p_unparse_edg_normalized_method_ROSE_1392 = unparse_edg_normalized_method_ROSE_1392_copy; 
    7296             :   // Copy non-constructor parameter data member (no access function): result->p_header_file_unparsing_optimization
    7297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for header_file_unparsing_optimization
    7298             :   // case: toBeCopied == COPY_DATA for header_file_unparsing_optimization
    7299           0 :      static bool header_file_unparsing_optimization_copy = p_header_file_unparsing_optimization; 
    7300           0 :      result->p_header_file_unparsing_optimization = header_file_unparsing_optimization_copy; 
    7301             :   // Copy non-constructor parameter data member (access function): header_file_unparsing_optimization_source_file_copy
    7302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for header_file_unparsing_optimization_source_file
    7303             :   // case: toBeCopied == COPY_DATA for header_file_unparsing_optimization_source_file
    7304           0 :      bool header_file_unparsing_optimization_source_file_copy = p_header_file_unparsing_optimization_source_file; 
    7305           0 :      result->p_header_file_unparsing_optimization_source_file = header_file_unparsing_optimization_source_file_copy; 
    7306             :   // Copy non-constructor parameter data member (access function): header_file_unparsing_optimization_header_file_copy
    7307             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for header_file_unparsing_optimization_header_file
    7308             :   // case: toBeCopied == COPY_DATA for header_file_unparsing_optimization_header_file
    7309           0 :      bool header_file_unparsing_optimization_header_file_copy = p_header_file_unparsing_optimization_header_file; 
    7310           0 :      result->p_header_file_unparsing_optimization_header_file = header_file_unparsing_optimization_header_file_copy; 
    7311             :   // Copy non-constructor parameter data member (no access function): result->p_standard
    7312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for standard
    7313             :   // case: toBeCopied == COPY_DATA for standard
    7314           0 :      SgFile::standard_enum standard_copy = p_standard; 
    7315           0 :      result->p_standard = standard_copy; 
    7316             :   // Copy non-constructor parameter data member (no access function): result->p_gnu_standard
    7317             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_standard
    7318             :   // case: toBeCopied == COPY_DATA for gnu_standard
    7319           0 :      bool gnu_standard_copy = p_gnu_standard; 
    7320           0 :      result->p_gnu_standard = gnu_standard_copy; 
    7321             :   // Copy non-constructor parameter data member (access function): frontendErrorCode_copy
    7322             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for frontendErrorCode
    7323             :   // case: toBeCopied == COPY_DATA for frontendErrorCode
    7324           0 :      int frontendErrorCode_copy = p_frontendErrorCode; 
    7325           0 :      result->p_frontendErrorCode = frontendErrorCode_copy; 
    7326             :   // Copy non-constructor parameter data member (access function): javacErrorCode_copy
    7327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for javacErrorCode
    7328             :   // case: toBeCopied == COPY_DATA for javacErrorCode
    7329           0 :      int javacErrorCode_copy = p_javacErrorCode; 
    7330           0 :      result->p_javacErrorCode = javacErrorCode_copy; 
    7331             :   // Copy non-constructor parameter data member (access function): ecjErrorCode_copy
    7332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ecjErrorCode
    7333             :   // case: toBeCopied == COPY_DATA for ecjErrorCode
    7334           0 :      int ecjErrorCode_copy = p_ecjErrorCode; 
    7335           0 :      result->p_ecjErrorCode = ecjErrorCode_copy; 
    7336             :   // Copy non-constructor parameter data member (access function): midendErrorCode_copy
    7337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for midendErrorCode
    7338             :   // case: toBeCopied == COPY_DATA for midendErrorCode
    7339           0 :      int midendErrorCode_copy = p_midendErrorCode; 
    7340           0 :      result->p_midendErrorCode = midendErrorCode_copy; 
    7341             :   // Copy non-constructor parameter data member (access function): unparserErrorCode_copy
    7342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparserErrorCode
    7343             :   // case: toBeCopied == COPY_DATA for unparserErrorCode
    7344           0 :      int unparserErrorCode_copy = p_unparserErrorCode; 
    7345           0 :      result->p_unparserErrorCode = unparserErrorCode_copy; 
    7346             :   // Copy non-constructor parameter data member (access function): backendCompilerErrorCode_copy
    7347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for backendCompilerErrorCode
    7348             :   // case: toBeCopied == COPY_DATA for backendCompilerErrorCode
    7349           0 :      int backendCompilerErrorCode_copy = p_backendCompilerErrorCode; 
    7350           0 :      result->p_backendCompilerErrorCode = backendCompilerErrorCode_copy; 
    7351             :   // Copy non-constructor parameter data member (access function): unparsedFileFailedCompilation_copy
    7352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparsedFileFailedCompilation
    7353             :   // case: toBeCopied == COPY_DATA for unparsedFileFailedCompilation
    7354           0 :      bool unparsedFileFailedCompilation_copy = p_unparsedFileFailedCompilation; 
    7355           0 :      result->p_unparsedFileFailedCompilation = unparsedFileFailedCompilation_copy; 
    7356             :   // Copy non-constructor parameter data member (access function): globalScope_copy
    7357           0 :      SgGlobal* globalScope_copy; 
    7358             :   // case: not a listType for (using conditionalToCopyVariable)globalScope
    7359           0 :           if (get_globalScope() != NULL) 
    7360             :              { 
    7361           0 :                globalScope_copy = static_cast<SgGlobal*>(help.copyAst(get_globalScope())); 
    7362             :              } 
    7363             :             else 
    7364             :              { 
    7365             :                globalScope_copy = NULL; 
    7366             :              } 
    7367             :   /* check for a valid pointer and delete if present */ 
    7368           0 :      if (result->p_globalScope != NULL) delete result->p_globalScope; 
    7369           0 :      result->p_globalScope = globalScope_copy; 
    7370             :   // case: not a listType for (using conditionalToSetParent)globalScope
    7371           0 :           if ( (globalScope_copy != NULL) && (globalScope_copy->get_parent() == NULL) && (isSgType(globalScope_copy) == NULL) ) 
    7372             :              { 
    7373           0 :                globalScope_copy->set_parent(result); 
    7374             :              } 
    7375             : 
    7376             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    7377             : 
    7378             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    7379             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    7380             :   // fixupCopy(result,help);
    7381             : 
    7382             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    7383             :   // the Sg_File_Info objects that are built for the new IR nodes.
    7384           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    7385           0 :      if (locatedNode != NULL)
    7386             :         {
    7387             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    7388           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    7389           0 :           ROSE_ASSERT(start != NULL);
    7390             : #if 0
    7391             :        // Debugging information
    7392             :           if (start->get_parent() == NULL)
    7393             :              {
    7394             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    7395             :              }
    7396             : #endif
    7397           0 :           start->set_parent(locatedNode);
    7398           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    7399             : 
    7400           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    7401             : 
    7402             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    7403             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    7404             :        // ROSE_ASSERT(end != NULL);
    7405           0 :           if (end == NULL)
    7406             :              {
    7407           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    7408             :              }
    7409             :             else
    7410             :              {
    7411             : #if 0
    7412             :             // Debugging information
    7413             :                if (end->get_parent() == NULL)
    7414             :                   {
    7415             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    7416             :                   }
    7417             : #endif
    7418           0 :                end->set_parent(locatedNode);
    7419           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    7420             :              }
    7421             : 
    7422           0 :           SgExpression* expression = isSgExpression(result);
    7423           0 :           if (isSgExpression(this) != NULL)
    7424             :              {
    7425           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    7426             : 
    7427             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    7428           0 :                if (operatorPosition != NULL)
    7429             :                   {
    7430             : #if 0
    7431             :                  // Debugging information
    7432             :                     if (operatorPosition->get_parent() == NULL)
    7433             :                        {
    7434             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    7435             :                        }
    7436             : #endif
    7437           0 :                     operatorPosition->set_parent(expression);
    7438           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    7439             :                   }
    7440             :              }
    7441             :         }
    7442             : 
    7443             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    7444           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    7445           0 :      if (initializedName != NULL)
    7446             :         {
    7447             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    7448           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    7449           0 :           ROSE_ASSERT(start != NULL);
    7450             : #if 0
    7451             :        // Debugging information
    7452             :           if (start->get_parent() == NULL)
    7453             :              {
    7454             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    7455             :              }
    7456             : #endif
    7457           0 :           start->set_parent(initializedName);
    7458           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    7459             : 
    7460             : #if 0
    7461             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    7462             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    7463             : 
    7464             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    7465             :        // ROSE_ASSERT(end != NULL);
    7466             :           if (end == NULL)
    7467             :              {
    7468             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    7469             :              }
    7470             :             else
    7471             :              {
    7472             :                if (end->get_parent() == NULL)
    7473             :                   {
    7474             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    7475             :                   }
    7476             :                end->set_parent(initializedName);
    7477             :                ROSE_ASSERT(end->get_parent() != NULL);
    7478             :              }
    7479             : #endif
    7480             :         }
    7481             : 
    7482             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    7483           0 :      help.insertCopiedNodePair(this,result);
    7484             : 
    7485             :   // printf ("End of copy SgUnknownFile = %p = %s \n",this,SageInterface::get_name(this).c_str());
    7486             : 
    7487             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    7488             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    7489           0 :      help.decrementDepth();
    7490             : 
    7491             :   // Test if this is the root of the copy!
    7492           0 :      if (help.get_depth() == 0)
    7493             :         {
    7494             :        // This is the original calling node.
    7495             : 
    7496             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    7497             :        // printf ("Calling SgUnknownFile::fixupCopy() (from root of AST being copied) \n");
    7498             : #if ALT_FIXUP_COPY
    7499             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    7500           0 :           fixupCopy_scopes (result,help);
    7501           0 :           fixupCopy_symbols (result,help);
    7502           0 :           fixupCopy_references (result,help);
    7503             : #else
    7504             :           fixupCopy(result,help);
    7505             : #endif
    7506             :        // Allow this to be called recursively, so accumulate the state.
    7507             :        // Also, clear the state in the SgCopyHelp object.
    7508             :        // help.clearState();
    7509             :         }
    7510             : 
    7511           0 :      return result;
    7512             :    }
    7513             : 
    7514             : 
    7515             : /* #line 7516 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    7516             : 
    7517             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    7518             : 
    7519           0 : SgNode* SgProject::copy ( SgCopyHelp& help) const
    7520             :    {
    7521           0 :      SgProject* result = NULL;
    7522             : 
    7523             :   // printf ("Copy SgProject = %p = %s \n",this,SageInterface::get_name(this).c_str());
    7524             : 
    7525             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    7526             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    7527             :   // The default value of the depth is 0, so after this call the depth is 1!
    7528           0 :      help.incrementDepth();
    7529             : 
    7530             : #if 0
    7531             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    7532             :   // but it is not generally true that things can only be copied once!
    7533             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    7534             :   // AstAttribute* existingAttribute = const_cast<SgProject*>(this)->attribute["copied"];
    7535             :      bool previouslyCopied = const_cast<SgProject*>(this)->attribute.exists("copied");
    7536             :      if (previouslyCopied == true)
    7537             :         {
    7538             :           this->get_file_info()->display("Called from copy SgProject: debug");
    7539             :         }
    7540             :      ROSE_ASSERT(previouslyCopied == false);
    7541             : 
    7542             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    7543             :      AstAttribute* newAttribute = new AstAttribute();
    7544             :      ROSE_ASSERT(newAttribute != NULL);
    7545             : 
    7546             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    7547             :      const_cast<SgProject*>(this)->attribute.add("copied",newAttribute);
    7548             : #endif
    7549             : 
    7550             :   // Copy data members from base classes
    7551             :  
    7552             : 
    7553             :   // Build an empty copy of this object (will be filled in, but 
    7554             :   // the parent can't be set and must be set by the caller)
    7555           0 :      result = new SgProject(  );
    7556           0 :      ROSE_ASSERT(result != NULL);
    7557             : 
    7558             :   // Copy data members of "this" class
    7559             :   // Copy non-constructor parameter data member (access function): fileList_ptr_copy
    7560           0 :      SgFileList* fileList_ptr_copy; 
    7561             :   // case: not a listType for (using conditionalToCopyVariable)fileList_ptr
    7562           0 :           if (get_fileList_ptr() != NULL) 
    7563             :              { 
    7564           0 :                fileList_ptr_copy = static_cast<SgFileList*>(help.copyAst(get_fileList_ptr())); 
    7565             :              } 
    7566             :             else 
    7567             :              { 
    7568             :                fileList_ptr_copy = NULL; 
    7569             :              } 
    7570             :   /* check for a valid pointer and delete if present */ 
    7571           0 :      if (result->p_fileList_ptr != NULL) delete result->p_fileList_ptr; 
    7572           0 :      result->p_fileList_ptr = fileList_ptr_copy; 
    7573             :   // case: not a listType for (using conditionalToSetParent)fileList_ptr
    7574           0 :           if ( (fileList_ptr_copy != NULL) && (fileList_ptr_copy->get_parent() == NULL) && (isSgType(fileList_ptr_copy) == NULL) ) 
    7575             :              { 
    7576           0 :                fileList_ptr_copy->set_parent(result); 
    7577             :              } 
    7578             :   // Copy non-constructor parameter data member (access function): originalCommandLineArgumentList_copy
    7579             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalCommandLineArgumentList
    7580             :   // case: toBeCopied == COPY_DATA for originalCommandLineArgumentList
    7581           0 :      SgStringList originalCommandLineArgumentList_copy = p_originalCommandLineArgumentList; 
    7582           0 :      result->p_originalCommandLineArgumentList = originalCommandLineArgumentList_copy; 
    7583             :   // Copy non-constructor parameter data member (access function): frontendErrorCode_copy
    7584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for frontendErrorCode
    7585             :   // case: toBeCopied == COPY_DATA for frontendErrorCode
    7586           0 :      int frontendErrorCode_copy = p_frontendErrorCode; 
    7587           0 :      result->p_frontendErrorCode = frontendErrorCode_copy; 
    7588             :   // Copy non-constructor parameter data member (access function): javacErrorCode_copy
    7589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for javacErrorCode
    7590             :   // case: toBeCopied == COPY_DATA for javacErrorCode
    7591           0 :      int javacErrorCode_copy = p_javacErrorCode; 
    7592           0 :      result->p_javacErrorCode = javacErrorCode_copy; 
    7593             :   // Copy non-constructor parameter data member (access function): ecjErrorCode_copy
    7594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ecjErrorCode
    7595             :   // case: toBeCopied == COPY_DATA for ecjErrorCode
    7596           0 :      int ecjErrorCode_copy = p_ecjErrorCode; 
    7597           0 :      result->p_ecjErrorCode = ecjErrorCode_copy; 
    7598             :   // Copy non-constructor parameter data member (access function): midendErrorCode_copy
    7599             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for midendErrorCode
    7600             :   // case: toBeCopied == COPY_DATA for midendErrorCode
    7601           0 :      int midendErrorCode_copy = p_midendErrorCode; 
    7602           0 :      result->p_midendErrorCode = midendErrorCode_copy; 
    7603             :   // Copy non-constructor parameter data member (access function): backendErrorCode_copy
    7604             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for backendErrorCode
    7605             :   // case: toBeCopied == COPY_DATA for backendErrorCode
    7606           0 :      int backendErrorCode_copy = p_backendErrorCode; 
    7607           0 :      result->p_backendErrorCode = backendErrorCode_copy; 
    7608             :   // Copy non-constructor parameter data member (access function): keep_going_copy
    7609             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for keep_going
    7610             :   // case: toBeCopied == COPY_DATA for keep_going
    7611           0 :      bool keep_going_copy = p_keep_going; 
    7612           0 :      result->p_keep_going = keep_going_copy; 
    7613             :   // Copy non-constructor parameter data member (access function): unparser__clobber_input_file_copy
    7614             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparser__clobber_input_file
    7615             :   // case: toBeCopied == COPY_DATA for unparser__clobber_input_file
    7616           0 :      bool unparser__clobber_input_file_copy = p_unparser__clobber_input_file; 
    7617           0 :      result->p_unparser__clobber_input_file = unparser__clobber_input_file_copy; 
    7618             :   // Copy non-constructor parameter data member (access function): outputFileName_copy
    7619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for outputFileName
    7620             :   // case: toBeCopied == COPY_DATA for outputFileName
    7621           0 :      std::string outputFileName_copy = p_outputFileName; 
    7622           0 :      result->p_outputFileName = outputFileName_copy; 
    7623             :   // Copy non-constructor parameter data member (list access function): result->get_sourceFileNameList()
    7624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sourceFileNameList
    7625             :   // case: toBeCopied == COPY_DATA for sourceFileNameList
    7626           0 :      SgStringList sourceFileNameList_copy = p_sourceFileNameList; 
    7627           0 :      result->p_sourceFileNameList = sourceFileNameList_copy; 
    7628             :   // Copy non-constructor parameter data member (list access function): result->get_objectFileNameList()
    7629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for objectFileNameList
    7630             :   // case: toBeCopied == COPY_DATA for objectFileNameList
    7631           0 :      SgStringList objectFileNameList_copy = p_objectFileNameList; 
    7632           0 :      result->p_objectFileNameList = objectFileNameList_copy; 
    7633             :   // Copy non-constructor parameter data member (list access function): result->get_libraryFileList()
    7634             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for libraryFileList
    7635             :   // case: toBeCopied == COPY_DATA for libraryFileList
    7636           0 :      SgStringList libraryFileList_copy = p_libraryFileList; 
    7637           0 :      result->p_libraryFileList = libraryFileList_copy; 
    7638             :   // Copy non-constructor parameter data member (list access function): result->get_librarySpecifierList()
    7639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for librarySpecifierList
    7640             :   // case: toBeCopied == COPY_DATA for librarySpecifierList
    7641           0 :      SgStringList librarySpecifierList_copy = p_librarySpecifierList; 
    7642           0 :      result->p_librarySpecifierList = librarySpecifierList_copy; 
    7643             :   // Copy non-constructor parameter data member (list access function): result->get_libraryDirectorySpecifierList()
    7644             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for libraryDirectorySpecifierList
    7645             :   // case: toBeCopied == COPY_DATA for libraryDirectorySpecifierList
    7646           0 :      SgStringList libraryDirectorySpecifierList_copy = p_libraryDirectorySpecifierList; 
    7647           0 :      result->p_libraryDirectorySpecifierList = libraryDirectorySpecifierList_copy; 
    7648             :   // Copy non-constructor parameter data member (list access function): result->get_includeDirectorySpecifierList()
    7649             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for includeDirectorySpecifierList
    7650             :   // case: toBeCopied == COPY_DATA for includeDirectorySpecifierList
    7651           0 :      SgStringList includeDirectorySpecifierList_copy = p_includeDirectorySpecifierList; 
    7652           0 :      result->p_includeDirectorySpecifierList = includeDirectorySpecifierList_copy; 
    7653             :   // Copy non-constructor parameter data member (list access function): result->get_macroSpecifierList()
    7654             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for macroSpecifierList
    7655             :   // case: toBeCopied == COPY_DATA for macroSpecifierList
    7656           0 :      SgStringList macroSpecifierList_copy = p_macroSpecifierList; 
    7657           0 :      result->p_macroSpecifierList = macroSpecifierList_copy; 
    7658             :   // Copy non-constructor parameter data member (list access function): result->get_preincludeFileList()
    7659             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preincludeFileList
    7660             :   // case: toBeCopied == COPY_DATA for preincludeFileList
    7661           0 :      SgStringList preincludeFileList_copy = p_preincludeFileList; 
    7662           0 :      result->p_preincludeFileList = preincludeFileList_copy; 
    7663             :   // Copy non-constructor parameter data member (list access function): result->get_preincludeDirectoryList()
    7664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preincludeDirectoryList
    7665             :   // case: toBeCopied == COPY_DATA for preincludeDirectoryList
    7666           0 :      SgStringList preincludeDirectoryList_copy = p_preincludeDirectoryList; 
    7667           0 :      result->p_preincludeDirectoryList = preincludeDirectoryList_copy; 
    7668             :   // Copy non-constructor parameter data member (access function): compileOnly_copy
    7669             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for compileOnly
    7670             :   // case: toBeCopied == COPY_DATA for compileOnly
    7671           0 :      bool compileOnly_copy = p_compileOnly; 
    7672           0 :      result->p_compileOnly = compileOnly_copy; 
    7673             :   // Copy non-constructor parameter data member (access function): wave_copy
    7674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for wave
    7675             :   // case: toBeCopied == COPY_DATA for wave
    7676           0 :      bool wave_copy = p_wave; 
    7677           0 :      result->p_wave = wave_copy; 
    7678             :   // Copy non-constructor parameter data member (access function): prelink_copy
    7679             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prelink
    7680             :   // case: toBeCopied == COPY_DATA for prelink
    7681           0 :      bool prelink_copy = p_prelink; 
    7682           0 :      result->p_prelink = prelink_copy; 
    7683             :   // Copy non-constructor parameter data member (access function): template_instantiation_mode_copy
    7684             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for template_instantiation_mode
    7685             :   // case: toBeCopied == COPY_DATA for template_instantiation_mode
    7686           0 :      SgProject::template_instantiation_enum template_instantiation_mode_copy = p_template_instantiation_mode; 
    7687           0 :      result->p_template_instantiation_mode = template_instantiation_mode_copy; 
    7688             :   // Copy non-constructor parameter data member (access function): ast_merge_copy
    7689             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ast_merge
    7690             :   // case: toBeCopied == COPY_DATA for ast_merge
    7691           0 :      bool ast_merge_copy = p_ast_merge; 
    7692           0 :      result->p_ast_merge = ast_merge_copy; 
    7693             :   // Copy non-constructor parameter data member (access function): projectSpecificDatabaseFile_copy
    7694             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for projectSpecificDatabaseFile
    7695             :   // case: toBeCopied == COPY_DATA for projectSpecificDatabaseFile
    7696           0 :      std::string projectSpecificDatabaseFile_copy = p_projectSpecificDatabaseFile; 
    7697           0 :      result->p_projectSpecificDatabaseFile = projectSpecificDatabaseFile_copy; 
    7698             :   // Copy non-constructor parameter data member (access function): C_PreprocessorOnly_copy
    7699             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for C_PreprocessorOnly
    7700             :   // case: toBeCopied == COPY_DATA for C_PreprocessorOnly
    7701           0 :      bool C_PreprocessorOnly_copy = p_C_PreprocessorOnly; 
    7702           0 :      result->p_C_PreprocessorOnly = C_PreprocessorOnly_copy; 
    7703             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
    7704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
    7705             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
    7706           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
    7707           0 :      if ( p_attributeMechanism != NULL ) 
    7708             :         { 
    7709           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
    7710             :         } 
    7711             :        else 
    7712             :         { 
    7713             :           attributeMechanism_copy = NULL; 
    7714             :         } 
    7715             :   /* check for a valid pointer and delete if present */ 
    7716           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
    7717             :   /* add assignment to result here */ 
    7718           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
    7719             :   // Copy non-constructor parameter data member (access function): compilationPerformanceFile_copy
    7720             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for compilationPerformanceFile
    7721             :   // case: toBeCopied == COPY_DATA for compilationPerformanceFile
    7722           0 :      std::string compilationPerformanceFile_copy = p_compilationPerformanceFile; 
    7723           0 :      result->p_compilationPerformanceFile = compilationPerformanceFile_copy; 
    7724             :   // Copy non-constructor parameter data member (no access function): result->p_includePathList
    7725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for includePathList
    7726             :   // case: toBeCopied == COPY_DATA for includePathList
    7727           0 :      SgStringList includePathList_copy = p_includePathList; 
    7728           0 :      result->p_includePathList = includePathList_copy; 
    7729             :   // Copy non-constructor parameter data member (no access function): result->p_excludePathList
    7730             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for excludePathList
    7731             :   // case: toBeCopied == COPY_DATA for excludePathList
    7732           0 :      SgStringList excludePathList_copy = p_excludePathList; 
    7733           0 :      result->p_excludePathList = excludePathList_copy; 
    7734             :   // Copy non-constructor parameter data member (no access function): result->p_includeFileList
    7735             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for includeFileList
    7736             :   // case: toBeCopied == COPY_DATA for includeFileList
    7737           0 :      SgStringList includeFileList_copy = p_includeFileList; 
    7738           0 :      result->p_includeFileList = includeFileList_copy; 
    7739             :   // Copy non-constructor parameter data member (no access function): result->p_excludeFileList
    7740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for excludeFileList
    7741             :   // case: toBeCopied == COPY_DATA for excludeFileList
    7742           0 :      SgStringList excludeFileList_copy = p_excludeFileList; 
    7743           0 :      result->p_excludeFileList = excludeFileList_copy; 
    7744             :   // Copy non-constructor parameter data member (access function): binary_only_copy
    7745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binary_only
    7746             :   // case: toBeCopied == COPY_DATA for binary_only
    7747           0 :      bool binary_only_copy = p_binary_only; 
    7748           0 :      result->p_binary_only = binary_only_copy; 
    7749             :   // Copy non-constructor parameter data member (access function): directoryList_copy
    7750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directoryList
    7751             :   // case: toBeCopied == COPY_DATA for directoryList
    7752           0 :      SgDirectoryList* directoryList_copy = p_directoryList; 
    7753           0 :      result->p_directoryList = directoryList_copy; 
    7754             :   // Copy non-constructor parameter data member (no access function): result->p_C_only
    7755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for C_only
    7756             :   // case: toBeCopied == COPY_DATA for C_only
    7757           0 :      bool C_only_copy = p_C_only; 
    7758           0 :      result->p_C_only = C_only_copy; 
    7759             :   // Copy non-constructor parameter data member (no access function): result->p_Cxx_only
    7760             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cxx_only
    7761             :   // case: toBeCopied == COPY_DATA for Cxx_only
    7762           0 :      bool Cxx_only_copy = p_Cxx_only; 
    7763           0 :      result->p_Cxx_only = Cxx_only_copy; 
    7764             :   // Copy non-constructor parameter data member (no access function): result->p_C11_only
    7765             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for C11_only
    7766             :   // case: toBeCopied == COPY_DATA for C11_only
    7767           0 :      bool C11_only_copy = p_C11_only; 
    7768           0 :      result->p_C11_only = C11_only_copy; 
    7769             :   // Copy non-constructor parameter data member (no access function): result->p_Cxx0x_only
    7770             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cxx0x_only
    7771             :   // case: toBeCopied == COPY_DATA for Cxx0x_only
    7772           0 :      bool Cxx0x_only_copy = p_Cxx0x_only; 
    7773           0 :      result->p_Cxx0x_only = Cxx0x_only_copy; 
    7774             :   // Copy non-constructor parameter data member (no access function): result->p_Cxx11_only
    7775             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cxx11_only
    7776             :   // case: toBeCopied == COPY_DATA for Cxx11_only
    7777           0 :      bool Cxx11_only_copy = p_Cxx11_only; 
    7778           0 :      result->p_Cxx11_only = Cxx11_only_copy; 
    7779             :   // Copy non-constructor parameter data member (no access function): result->p_C14_only
    7780             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for C14_only
    7781             :   // case: toBeCopied == COPY_DATA for C14_only
    7782           0 :      bool C14_only_copy = p_C14_only; 
    7783           0 :      result->p_C14_only = C14_only_copy; 
    7784             :   // Copy non-constructor parameter data member (no access function): result->p_Cxx14_only
    7785             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Cxx14_only
    7786             :   // case: toBeCopied == COPY_DATA for Cxx14_only
    7787           0 :      bool Cxx14_only_copy = p_Cxx14_only; 
    7788           0 :      result->p_Cxx14_only = Cxx14_only_copy; 
    7789             :   // Copy non-constructor parameter data member (no access function): result->p_Fortran_only
    7790             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Fortran_only
    7791             :   // case: toBeCopied == COPY_DATA for Fortran_only
    7792           0 :      bool Fortran_only_copy = p_Fortran_only; 
    7793           0 :      result->p_Fortran_only = Fortran_only_copy; 
    7794             :   // Copy non-constructor parameter data member (access function): Fortran_ofp_jvm_options_copy
    7795             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Fortran_ofp_jvm_options
    7796             :   // case: toBeCopied == COPY_DATA for Fortran_ofp_jvm_options
    7797           0 :      std::list<std::string> Fortran_ofp_jvm_options_copy = p_Fortran_ofp_jvm_options; 
    7798           0 :      result->p_Fortran_ofp_jvm_options = Fortran_ofp_jvm_options_copy; 
    7799             :   // Copy non-constructor parameter data member (access function): openmp_linking_copy
    7800             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for openmp_linking
    7801             :   // case: toBeCopied == COPY_DATA for openmp_linking
    7802           0 :      bool openmp_linking_copy = p_openmp_linking; 
    7803           0 :      result->p_openmp_linking = openmp_linking_copy; 
    7804             :   // Copy non-constructor parameter data member (access function): Java_ecj_jvm_options_copy
    7805             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Java_ecj_jvm_options
    7806             :   // case: toBeCopied == COPY_DATA for Java_ecj_jvm_options
    7807           0 :      std::list<std::string> Java_ecj_jvm_options_copy = p_Java_ecj_jvm_options; 
    7808           0 :      result->p_Java_ecj_jvm_options = Java_ecj_jvm_options_copy; 
    7809             :   // Copy non-constructor parameter data member (access function): Java_batch_mode_copy
    7810             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Java_batch_mode
    7811             :   // case: toBeCopied == COPY_DATA for Java_batch_mode
    7812           0 :      bool Java_batch_mode_copy = p_Java_batch_mode; 
    7813           0 :      result->p_Java_batch_mode = Java_batch_mode_copy; 
    7814             :   // Copy non-constructor parameter data member (no access function): result->p_Java_classpath
    7815             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Java_classpath
    7816             :   // case: toBeCopied == COPY_DATA for Java_classpath
    7817           0 :      std::list<std::string> Java_classpath_copy = p_Java_classpath; 
    7818           0 :      result->p_Java_classpath = Java_classpath_copy; 
    7819             :   // Copy non-constructor parameter data member (no access function): result->p_Java_sourcepath
    7820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Java_sourcepath
    7821             :   // case: toBeCopied == COPY_DATA for Java_sourcepath
    7822           0 :      std::list<std::string> Java_sourcepath_copy = p_Java_sourcepath; 
    7823           0 :      result->p_Java_sourcepath = Java_sourcepath_copy; 
    7824             :   // Copy non-constructor parameter data member (no access function): result->p_Java_destdir
    7825             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Java_destdir
    7826             :   // case: toBeCopied == COPY_DATA for Java_destdir
    7827           0 :      std::string Java_destdir_copy = p_Java_destdir; 
    7828           0 :      result->p_Java_destdir = Java_destdir_copy; 
    7829             :   // Copy non-constructor parameter data member (no access function): result->p_Java_source_destdir
    7830             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for Java_source_destdir
    7831             :   // case: toBeCopied == COPY_DATA for Java_source_destdir
    7832           0 :      std::string Java_source_destdir_copy = p_Java_source_destdir; 
    7833           0 :      result->p_Java_source_destdir = Java_source_destdir_copy; 
    7834             :   // Copy non-constructor parameter data member (access function): addCppDirectivesToAST_copy
    7835             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for addCppDirectivesToAST
    7836             :   // case: toBeCopied == COPY_DATA for addCppDirectivesToAST
    7837           0 :      bool addCppDirectivesToAST_copy = p_addCppDirectivesToAST; 
    7838           0 :      result->p_addCppDirectivesToAST = addCppDirectivesToAST_copy; 
    7839             :   // Copy non-constructor parameter data member (access function): includingPreprocessingInfosMap_copy
    7840             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for includingPreprocessingInfosMap
    7841             :   // case: toBeCopied == COPY_DATA for includingPreprocessingInfosMap
    7842           0 :      std::map<std::string, std::set<PreprocessingInfo*> > includingPreprocessingInfosMap_copy = p_includingPreprocessingInfosMap; 
    7843           0 :      result->p_includingPreprocessingInfosMap = includingPreprocessingInfosMap_copy; 
    7844             :   // Copy non-constructor parameter data member (access function): quotedIncludesSearchPaths_copy
    7845             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for quotedIncludesSearchPaths
    7846             :   // case: toBeCopied == COPY_DATA for quotedIncludesSearchPaths
    7847           0 :      std::list<std::string> quotedIncludesSearchPaths_copy = p_quotedIncludesSearchPaths; 
    7848           0 :      result->p_quotedIncludesSearchPaths = quotedIncludesSearchPaths_copy; 
    7849             :   // Copy non-constructor parameter data member (access function): bracketedIncludesSearchPaths_copy
    7850             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for bracketedIncludesSearchPaths
    7851             :   // case: toBeCopied == COPY_DATA for bracketedIncludesSearchPaths
    7852           0 :      std::list<std::string> bracketedIncludesSearchPaths_copy = p_bracketedIncludesSearchPaths; 
    7853           0 :      result->p_bracketedIncludesSearchPaths = bracketedIncludesSearchPaths_copy; 
    7854             :   // Copy non-constructor parameter data member (access function): unparseHeaderFilesRootFolder_copy
    7855             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparseHeaderFilesRootFolder
    7856             :   // case: toBeCopied == COPY_DATA for unparseHeaderFilesRootFolder
    7857           0 :      std::string unparseHeaderFilesRootFolder_copy = p_unparseHeaderFilesRootFolder; 
    7858           0 :      result->p_unparseHeaderFilesRootFolder = unparseHeaderFilesRootFolder_copy; 
    7859             :   // Copy non-constructor parameter data member (access function): frontendConstantFolding_copy
    7860             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for frontendConstantFolding
    7861             :   // case: toBeCopied == COPY_DATA for frontendConstantFolding
    7862           0 :      bool frontendConstantFolding_copy = p_frontendConstantFolding; 
    7863           0 :      result->p_frontendConstantFolding = frontendConstantFolding_copy; 
    7864             :   // Copy non-constructor parameter data member (access function): globalScopeAcrossFiles_copy
    7865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for globalScopeAcrossFiles
    7866             :   // case: toBeCopied == COPY_DATA for globalScopeAcrossFiles
    7867           0 :      SgGlobal* globalScopeAcrossFiles_copy = p_globalScopeAcrossFiles; 
    7868           0 :      result->p_globalScopeAcrossFiles = globalScopeAcrossFiles_copy; 
    7869             :   // Copy non-constructor parameter data member (access function): unparse_in_same_directory_as_input_file_copy
    7870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_in_same_directory_as_input_file
    7871             :   // case: toBeCopied == COPY_DATA for unparse_in_same_directory_as_input_file
    7872           0 :      bool unparse_in_same_directory_as_input_file_copy = p_unparse_in_same_directory_as_input_file; 
    7873           0 :      result->p_unparse_in_same_directory_as_input_file = unparse_in_same_directory_as_input_file_copy; 
    7874             :   // Copy non-constructor parameter data member (access function): stop_after_compilation_do_not_assemble_file_copy
    7875             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for stop_after_compilation_do_not_assemble_file
    7876             :   // case: toBeCopied == COPY_DATA for stop_after_compilation_do_not_assemble_file
    7877           0 :      bool stop_after_compilation_do_not_assemble_file_copy = p_stop_after_compilation_do_not_assemble_file; 
    7878           0 :      result->p_stop_after_compilation_do_not_assemble_file = stop_after_compilation_do_not_assemble_file_copy; 
    7879             :   // Copy non-constructor parameter data member (access function): gnuOptionForUndefinedSymbol_copy
    7880             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnuOptionForUndefinedSymbol
    7881             :   // case: toBeCopied == COPY_DATA for gnuOptionForUndefinedSymbol
    7882           0 :      std::string gnuOptionForUndefinedSymbol_copy = p_gnuOptionForUndefinedSymbol; 
    7883           0 :      result->p_gnuOptionForUndefinedSymbol = gnuOptionForUndefinedSymbol_copy; 
    7884             :   // Copy non-constructor parameter data member (access function): mode_32_bit_copy
    7885             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode_32_bit
    7886             :   // case: toBeCopied == COPY_DATA for mode_32_bit
    7887           0 :      bool mode_32_bit_copy = p_mode_32_bit; 
    7888           0 :      result->p_mode_32_bit = mode_32_bit_copy; 
    7889             :   // Copy non-constructor parameter data member (access function): noclobber_output_file_copy
    7890             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for noclobber_output_file
    7891             :   // case: toBeCopied == COPY_DATA for noclobber_output_file
    7892           0 :      bool noclobber_output_file_copy = p_noclobber_output_file; 
    7893           0 :      result->p_noclobber_output_file = noclobber_output_file_copy; 
    7894             :   // Copy non-constructor parameter data member (access function): noclobber_if_different_output_file_copy
    7895             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for noclobber_if_different_output_file
    7896             :   // case: toBeCopied == COPY_DATA for noclobber_if_different_output_file
    7897           0 :      bool noclobber_if_different_output_file_copy = p_noclobber_if_different_output_file; 
    7898           0 :      result->p_noclobber_if_different_output_file = noclobber_if_different_output_file_copy; 
    7899             :   // Copy non-constructor parameter data member (access function): suppressConstantFoldingPostProcessing_copy
    7900             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for suppressConstantFoldingPostProcessing
    7901             :   // case: toBeCopied == COPY_DATA for suppressConstantFoldingPostProcessing
    7902           0 :      bool suppressConstantFoldingPostProcessing_copy = p_suppressConstantFoldingPostProcessing; 
    7903           0 :      result->p_suppressConstantFoldingPostProcessing = suppressConstantFoldingPostProcessing_copy; 
    7904             :   // Copy non-constructor parameter data member (access function): appendPID_copy
    7905             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for appendPID
    7906             :   // case: toBeCopied == COPY_DATA for appendPID
    7907           0 :      bool appendPID_copy = p_appendPID; 
    7908           0 :      result->p_appendPID = appendPID_copy; 
    7909             :   // Copy non-constructor parameter data member (access function): reportOnHeaderFileUnparsing_copy
    7910             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for reportOnHeaderFileUnparsing
    7911             :   // case: toBeCopied == COPY_DATA for reportOnHeaderFileUnparsing
    7912           0 :      bool reportOnHeaderFileUnparsing_copy = p_reportOnHeaderFileUnparsing; 
    7913           0 :      result->p_reportOnHeaderFileUnparsing = reportOnHeaderFileUnparsing_copy; 
    7914             :   // Copy non-constructor parameter data member (access function): applicationRootDirectory_copy
    7915             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for applicationRootDirectory
    7916             :   // case: toBeCopied == COPY_DATA for applicationRootDirectory
    7917           0 :      std::string applicationRootDirectory_copy = p_applicationRootDirectory; 
    7918           0 :      result->p_applicationRootDirectory = applicationRootDirectory_copy; 
    7919             :   // Copy non-constructor parameter data member (access function): usingApplicationRootDirectory_copy
    7920             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for usingApplicationRootDirectory
    7921             :   // case: toBeCopied == COPY_DATA for usingApplicationRootDirectory
    7922           0 :      bool usingApplicationRootDirectory_copy = p_usingApplicationRootDirectory; 
    7923           0 :      result->p_usingApplicationRootDirectory = usingApplicationRootDirectory_copy; 
    7924             :   // Copy non-constructor parameter data member (access function): usingDeferredTransformations_copy
    7925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for usingDeferredTransformations
    7926             :   // case: toBeCopied == COPY_DATA for usingDeferredTransformations
    7927           0 :      bool usingDeferredTransformations_copy = p_usingDeferredTransformations; 
    7928           0 :      result->p_usingDeferredTransformations = usingDeferredTransformations_copy; 
    7929             :   // Copy non-constructor parameter data member (access function): astfile_out_copy
    7930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for astfile_out
    7931             :   // case: toBeCopied == COPY_DATA for astfile_out
    7932           0 :      std::string astfile_out_copy = p_astfile_out; 
    7933           0 :      result->p_astfile_out = astfile_out_copy; 
    7934             :   // Copy non-constructor parameter data member (access function): astfiles_in_copy
    7935             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for astfiles_in
    7936             :   // case: toBeCopied == COPY_DATA for astfiles_in
    7937           0 :      std::list<std::string> astfiles_in_copy = p_astfiles_in; 
    7938           0 :      result->p_astfiles_in = astfiles_in_copy; 
    7939             :   // Copy non-constructor parameter data member (list access function): result->get_extraIncludeDirectorySpecifierBeforeList()
    7940             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for extraIncludeDirectorySpecifierBeforeList
    7941             :   // case: toBeCopied == COPY_DATA for extraIncludeDirectorySpecifierBeforeList
    7942           0 :      SgStringList extraIncludeDirectorySpecifierBeforeList_copy = p_extraIncludeDirectorySpecifierBeforeList; 
    7943           0 :      result->p_extraIncludeDirectorySpecifierBeforeList = extraIncludeDirectorySpecifierBeforeList_copy; 
    7944             :   // Copy non-constructor parameter data member (list access function): result->get_extraIncludeDirectorySpecifierAfterList()
    7945             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for extraIncludeDirectorySpecifierAfterList
    7946             :   // case: toBeCopied == COPY_DATA for extraIncludeDirectorySpecifierAfterList
    7947           0 :      SgStringList extraIncludeDirectorySpecifierAfterList_copy = p_extraIncludeDirectorySpecifierAfterList; 
    7948           0 :      result->p_extraIncludeDirectorySpecifierAfterList = extraIncludeDirectorySpecifierAfterList_copy; 
    7949             : 
    7950             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    7951             : 
    7952             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    7953             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    7954             :   // fixupCopy(result,help);
    7955             : 
    7956             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    7957             :   // the Sg_File_Info objects that are built for the new IR nodes.
    7958           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    7959           0 :      if (locatedNode != NULL)
    7960             :         {
    7961             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    7962           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    7963           0 :           ROSE_ASSERT(start != NULL);
    7964             : #if 0
    7965             :        // Debugging information
    7966             :           if (start->get_parent() == NULL)
    7967             :              {
    7968             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    7969             :              }
    7970             : #endif
    7971           0 :           start->set_parent(locatedNode);
    7972           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    7973             : 
    7974           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    7975             : 
    7976             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    7977             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    7978             :        // ROSE_ASSERT(end != NULL);
    7979           0 :           if (end == NULL)
    7980             :              {
    7981           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    7982             :              }
    7983             :             else
    7984             :              {
    7985             : #if 0
    7986             :             // Debugging information
    7987             :                if (end->get_parent() == NULL)
    7988             :                   {
    7989             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    7990             :                   }
    7991             : #endif
    7992           0 :                end->set_parent(locatedNode);
    7993           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    7994             :              }
    7995             : 
    7996           0 :           SgExpression* expression = isSgExpression(result);
    7997           0 :           if (isSgExpression(this) != NULL)
    7998             :              {
    7999           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    8000             : 
    8001             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    8002           0 :                if (operatorPosition != NULL)
    8003             :                   {
    8004             : #if 0
    8005             :                  // Debugging information
    8006             :                     if (operatorPosition->get_parent() == NULL)
    8007             :                        {
    8008             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8009             :                        }
    8010             : #endif
    8011           0 :                     operatorPosition->set_parent(expression);
    8012           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    8013             :                   }
    8014             :              }
    8015             :         }
    8016             : 
    8017             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    8018           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    8019           0 :      if (initializedName != NULL)
    8020             :         {
    8021             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    8022           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    8023           0 :           ROSE_ASSERT(start != NULL);
    8024             : #if 0
    8025             :        // Debugging information
    8026             :           if (start->get_parent() == NULL)
    8027             :              {
    8028             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8029             :              }
    8030             : #endif
    8031           0 :           start->set_parent(initializedName);
    8032           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    8033             : 
    8034             : #if 0
    8035             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    8036             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    8037             : 
    8038             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    8039             :        // ROSE_ASSERT(end != NULL);
    8040             :           if (end == NULL)
    8041             :              {
    8042             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    8043             :              }
    8044             :             else
    8045             :              {
    8046             :                if (end->get_parent() == NULL)
    8047             :                   {
    8048             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8049             :                   }
    8050             :                end->set_parent(initializedName);
    8051             :                ROSE_ASSERT(end->get_parent() != NULL);
    8052             :              }
    8053             : #endif
    8054             :         }
    8055             : 
    8056             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    8057           0 :      help.insertCopiedNodePair(this,result);
    8058             : 
    8059             :   // printf ("End of copy SgProject = %p = %s \n",this,SageInterface::get_name(this).c_str());
    8060             : 
    8061             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    8062             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    8063           0 :      help.decrementDepth();
    8064             : 
    8065             :   // Test if this is the root of the copy!
    8066           0 :      if (help.get_depth() == 0)
    8067             :         {
    8068             :        // This is the original calling node.
    8069             : 
    8070             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    8071             :        // printf ("Calling SgProject::fixupCopy() (from root of AST being copied) \n");
    8072             : #if ALT_FIXUP_COPY
    8073             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    8074           0 :           fixupCopy_scopes (result,help);
    8075           0 :           fixupCopy_symbols (result,help);
    8076           0 :           fixupCopy_references (result,help);
    8077             : #else
    8078             :           fixupCopy(result,help);
    8079             : #endif
    8080             :        // Allow this to be called recursively, so accumulate the state.
    8081             :        // Also, clear the state in the SgCopyHelp object.
    8082             :        // help.clearState();
    8083             :         }
    8084             : 
    8085           0 :      return result;
    8086             :    }
    8087             : 
    8088             : 
    8089             : /* #line 8090 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    8090             : 
    8091             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8092             : 
    8093           0 : SgNode* SgOptions::copy ( SgCopyHelp& help) const
    8094             :    {
    8095           0 :      SgOptions* result = NULL;
    8096             : 
    8097             :   // printf ("Copy SgOptions = %p = %s \n",this,SageInterface::get_name(this).c_str());
    8098             : 
    8099             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    8100             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    8101             :   // The default value of the depth is 0, so after this call the depth is 1!
    8102           0 :      help.incrementDepth();
    8103             : 
    8104             : #if 0
    8105             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    8106             :   // but it is not generally true that things can only be copied once!
    8107             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    8108             :   // AstAttribute* existingAttribute = const_cast<SgOptions*>(this)->attribute["copied"];
    8109             :      bool previouslyCopied = const_cast<SgOptions*>(this)->attribute.exists("copied");
    8110             :      if (previouslyCopied == true)
    8111             :         {
    8112             :           this->get_file_info()->display("Called from copy SgOptions: debug");
    8113             :         }
    8114             :      ROSE_ASSERT(previouslyCopied == false);
    8115             : 
    8116             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    8117             :      AstAttribute* newAttribute = new AstAttribute();
    8118             :      ROSE_ASSERT(newAttribute != NULL);
    8119             : 
    8120             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    8121             :      const_cast<SgOptions*>(this)->attribute.add("copied",newAttribute);
    8122             : #endif
    8123             : 
    8124             :   // Copy data members from base classes
    8125             :  
    8126             : 
    8127             :   // Build an empty copy of this object (will be filled in, but 
    8128             :   // the parent can't be set and must be set by the caller)
    8129           0 :      result = new SgOptions(  );
    8130           0 :      ROSE_ASSERT(result != NULL);
    8131             : 
    8132             :   // Copy data members of "this" class
    8133             :   // Copy non-constructor parameter data member (no access function): result->p_default_output
    8134             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for default_output
    8135             :   // case: toBeCopied == COPY_DATA for default_output
    8136           0 :      std::ostream* default_output_copy = p_default_output; 
    8137           0 :      result->p_default_output = default_output_copy; 
    8138             :   // Copy non-constructor parameter data member (no access function): result->p_debug_output
    8139             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for debug_output
    8140             :   // case: toBeCopied == COPY_DATA for debug_output
    8141           0 :      std::ostream* debug_output_copy = p_debug_output; 
    8142           0 :      result->p_debug_output = debug_output_copy; 
    8143             :   // Copy non-constructor parameter data member (no access function): result->p_error_output
    8144             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for error_output
    8145             :   // case: toBeCopied == COPY_DATA for error_output
    8146           0 :      std::ostream* error_output_copy = p_error_output; 
    8147           0 :      result->p_error_output = error_output_copy; 
    8148             :   // Copy non-constructor parameter data member (no access function): result->p_logging_output
    8149             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for logging_output
    8150             :   // case: toBeCopied == COPY_DATA for logging_output
    8151           0 :      std::ostream* logging_output_copy = p_logging_output; 
    8152           0 :      result->p_logging_output = logging_output_copy; 
    8153             :   // Copy non-constructor parameter data member (no access function): result->p_debug_level
    8154             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for debug_level
    8155             :   // case: toBeCopied == COPY_DATA for debug_level
    8156           0 :      int debug_level_copy = p_debug_level; 
    8157           0 :      result->p_debug_level = debug_level_copy; 
    8158             :   // Copy non-constructor parameter data member (no access function): result->p_logging_level
    8159             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for logging_level
    8160             :   // case: toBeCopied == COPY_DATA for logging_level
    8161           0 :      int logging_level_copy = p_logging_level; 
    8162           0 :      result->p_logging_level = logging_level_copy; 
    8163             : 
    8164             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8165             : 
    8166             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    8167             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    8168             :   // fixupCopy(result,help);
    8169             : 
    8170             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    8171             :   // the Sg_File_Info objects that are built for the new IR nodes.
    8172           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    8173           0 :      if (locatedNode != NULL)
    8174             :         {
    8175             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    8176           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    8177           0 :           ROSE_ASSERT(start != NULL);
    8178             : #if 0
    8179             :        // Debugging information
    8180             :           if (start->get_parent() == NULL)
    8181             :              {
    8182             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8183             :              }
    8184             : #endif
    8185           0 :           start->set_parent(locatedNode);
    8186           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    8187             : 
    8188           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    8189             : 
    8190             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    8191             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    8192             :        // ROSE_ASSERT(end != NULL);
    8193           0 :           if (end == NULL)
    8194             :              {
    8195           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    8196             :              }
    8197             :             else
    8198             :              {
    8199             : #if 0
    8200             :             // Debugging information
    8201             :                if (end->get_parent() == NULL)
    8202             :                   {
    8203             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8204             :                   }
    8205             : #endif
    8206           0 :                end->set_parent(locatedNode);
    8207           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    8208             :              }
    8209             : 
    8210           0 :           SgExpression* expression = isSgExpression(result);
    8211           0 :           if (isSgExpression(this) != NULL)
    8212             :              {
    8213           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    8214             : 
    8215             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    8216           0 :                if (operatorPosition != NULL)
    8217             :                   {
    8218             : #if 0
    8219             :                  // Debugging information
    8220             :                     if (operatorPosition->get_parent() == NULL)
    8221             :                        {
    8222             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8223             :                        }
    8224             : #endif
    8225           0 :                     operatorPosition->set_parent(expression);
    8226           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    8227             :                   }
    8228             :              }
    8229             :         }
    8230             : 
    8231             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    8232           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    8233           0 :      if (initializedName != NULL)
    8234             :         {
    8235             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    8236           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    8237           0 :           ROSE_ASSERT(start != NULL);
    8238             : #if 0
    8239             :        // Debugging information
    8240             :           if (start->get_parent() == NULL)
    8241             :              {
    8242             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8243             :              }
    8244             : #endif
    8245           0 :           start->set_parent(initializedName);
    8246           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    8247             : 
    8248             : #if 0
    8249             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    8250             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    8251             : 
    8252             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    8253             :        // ROSE_ASSERT(end != NULL);
    8254             :           if (end == NULL)
    8255             :              {
    8256             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    8257             :              }
    8258             :             else
    8259             :              {
    8260             :                if (end->get_parent() == NULL)
    8261             :                   {
    8262             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8263             :                   }
    8264             :                end->set_parent(initializedName);
    8265             :                ROSE_ASSERT(end->get_parent() != NULL);
    8266             :              }
    8267             : #endif
    8268             :         }
    8269             : 
    8270             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    8271           0 :      help.insertCopiedNodePair(this,result);
    8272             : 
    8273             :   // printf ("End of copy SgOptions = %p = %s \n",this,SageInterface::get_name(this).c_str());
    8274             : 
    8275             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    8276             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    8277           0 :      help.decrementDepth();
    8278             : 
    8279             :   // Test if this is the root of the copy!
    8280           0 :      if (help.get_depth() == 0)
    8281             :         {
    8282             :        // This is the original calling node.
    8283             : 
    8284             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    8285             :        // printf ("Calling SgOptions::fixupCopy() (from root of AST being copied) \n");
    8286             : #if ALT_FIXUP_COPY
    8287             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    8288           0 :           fixupCopy_scopes (result,help);
    8289           0 :           fixupCopy_symbols (result,help);
    8290           0 :           fixupCopy_references (result,help);
    8291             : #else
    8292             :           fixupCopy(result,help);
    8293             : #endif
    8294             :        // Allow this to be called recursively, so accumulate the state.
    8295             :        // Also, clear the state in the SgCopyHelp object.
    8296             :        // help.clearState();
    8297             :         }
    8298             : 
    8299           0 :      return result;
    8300             :    }
    8301             : 
    8302             : 
    8303             : /* #line 8304 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    8304             : 
    8305             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8306             : 
    8307           0 : SgNode* SgUnparse_Info::copy ( SgCopyHelp& help) const
    8308             :    {
    8309           0 :      SgUnparse_Info* result = NULL;
    8310             : 
    8311             :   // printf ("Copy SgUnparse_Info = %p = %s \n",this,SageInterface::get_name(this).c_str());
    8312             : 
    8313             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    8314             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    8315             :   // The default value of the depth is 0, so after this call the depth is 1!
    8316           0 :      help.incrementDepth();
    8317             : 
    8318             : #if 0
    8319             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    8320             :   // but it is not generally true that things can only be copied once!
    8321             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    8322             :   // AstAttribute* existingAttribute = const_cast<SgUnparse_Info*>(this)->attribute["copied"];
    8323             :      bool previouslyCopied = const_cast<SgUnparse_Info*>(this)->attribute.exists("copied");
    8324             :      if (previouslyCopied == true)
    8325             :         {
    8326             :           this->get_file_info()->display("Called from copy SgUnparse_Info: debug");
    8327             :         }
    8328             :      ROSE_ASSERT(previouslyCopied == false);
    8329             : 
    8330             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    8331             :      AstAttribute* newAttribute = new AstAttribute();
    8332             :      ROSE_ASSERT(newAttribute != NULL);
    8333             : 
    8334             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    8335             :      const_cast<SgUnparse_Info*>(this)->attribute.add("copied",newAttribute);
    8336             : #endif
    8337             : 
    8338             :   // Copy data members from base classes
    8339             :  
    8340             : 
    8341             :   // Build an empty copy of this object (will be filled in, but 
    8342             :   // the parent can't be set and must be set by the caller)
    8343           0 :      result = new SgUnparse_Info(  );
    8344           0 :      ROSE_ASSERT(result != NULL);
    8345             : 
    8346             :   // Copy data members of "this" class
    8347             :   // Copy non-constructor parameter data member (no access function): result->p_unparse_attribute
    8348             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_attribute
    8349             :   // case: toBeCopied == COPY_DATA for unparse_attribute
    8350           0 :      SgBitVector unparse_attribute_copy = p_unparse_attribute; 
    8351           0 :      result->p_unparse_attribute = unparse_attribute_copy; 
    8352             :   // Copy non-constructor parameter data member (access function): access_attribute_copy
    8353             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for access_attribute
    8354             :   // case: toBeCopied == COPY_DATA for access_attribute
    8355           0 :      int access_attribute_copy = p_access_attribute; 
    8356           0 :      result->p_access_attribute = access_attribute_copy; 
    8357             :   // Copy non-constructor parameter data member (no access function): result->p_nested_expression
    8358             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nested_expression
    8359             :   // case: toBeCopied == COPY_DATA for nested_expression
    8360           0 :      int nested_expression_copy = p_nested_expression; 
    8361           0 :      result->p_nested_expression = nested_expression_copy; 
    8362             :   // Copy non-constructor parameter data member (no access function): result->p_operator_name
    8363             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operator_name
    8364             :   // case: toBeCopied == COPY_DATA for operator_name
    8365           0 :      std::string operator_name_copy = p_operator_name; 
    8366           0 :      result->p_operator_name = operator_name_copy; 
    8367             :   // Copy non-constructor parameter data member (no access function): result->p_var_name
    8368             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for var_name
    8369             :   // case: toBeCopied == COPY_DATA for var_name
    8370           0 :      SgName var_name_copy = p_var_name; 
    8371           0 :      result->p_var_name = var_name_copy; 
    8372             :   // Copy non-constructor parameter data member (access function): declstatement_ptr_copy
    8373             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declstatement_ptr
    8374             :   // case: toBeCopied == COPY_DATA for declstatement_ptr
    8375           0 :      SgDeclarationStatement* declstatement_ptr_copy = p_declstatement_ptr; 
    8376           0 :      result->p_declstatement_ptr = declstatement_ptr_copy; 
    8377             :   // Copy non-constructor parameter data member (access function): declaration_of_context_copy
    8378             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration_of_context
    8379             :   // case: toBeCopied == COPY_DATA for declaration_of_context
    8380           0 :      SgDeclarationStatement* declaration_of_context_copy = p_declaration_of_context; 
    8381           0 :      result->p_declaration_of_context = declaration_of_context_copy; 
    8382             :   // Copy non-constructor parameter data member (access function): current_context_copy
    8383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for current_context
    8384             :   // case: toBeCopied == COPY_DATA for current_context
    8385           0 :      SgNamedType* current_context_copy = p_current_context; 
    8386           0 :      result->p_current_context = current_context_copy; 
    8387             :   // Copy non-constructor parameter data member (access function): array_index_list_copy
    8388             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for array_index_list
    8389             :   // case: toBeCopied == COPY_DATA for array_index_list
    8390           0 :      SgName array_index_list_copy = p_array_index_list; 
    8391           0 :      result->p_array_index_list = array_index_list_copy; 
    8392             :   // Copy non-constructor parameter data member (no access function): result->p_structureTagProcessingList
    8393             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for structureTagProcessingList
    8394             :   // case: toBeCopied == COPY_DATA for structureTagProcessingList
    8395           0 :      static SgTypePtrList structureTagProcessingList_copy = p_structureTagProcessingList; 
    8396           0 :      result->p_structureTagProcessingList = structureTagProcessingList_copy; 
    8397             :   // Copy non-constructor parameter data member (access function): current_namespace_copy
    8398             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for current_namespace
    8399             :   // case: toBeCopied == COPY_DATA for current_namespace
    8400           0 :      SgNamespaceDeclarationStatement* current_namespace_copy = p_current_namespace; 
    8401           0 :      result->p_current_namespace = current_namespace_copy; 
    8402             :   // Copy non-constructor parameter data member (access function): outputCodeGenerationFormatDelimiters_copy
    8403             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for outputCodeGenerationFormatDelimiters
    8404             :   // case: toBeCopied == COPY_DATA for outputCodeGenerationFormatDelimiters
    8405           0 :      bool outputCodeGenerationFormatDelimiters_copy = p_outputCodeGenerationFormatDelimiters; 
    8406           0 :      result->p_outputCodeGenerationFormatDelimiters = outputCodeGenerationFormatDelimiters_copy; 
    8407             :   // Copy non-constructor parameter data member (access function): qualifiedNameList_copy
    8408             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
    8409             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
    8410           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
    8411           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
    8412             :   // Copy non-constructor parameter data member (access function): current_function_call_copy
    8413             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for current_function_call
    8414             :   // case: toBeCopied == COPY_DATA for current_function_call
    8415           0 :      SgFunctionCallExp* current_function_call_copy = p_current_function_call; 
    8416           0 :      result->p_current_function_call = current_function_call_copy; 
    8417             :   // Copy non-constructor parameter data member (access function): current_scope_copy
    8418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for current_scope
    8419             :   // case: toBeCopied == COPY_DATA for current_scope
    8420           0 :      SgScopeStatement* current_scope_copy = p_current_scope; 
    8421           0 :      result->p_current_scope = current_scope_copy; 
    8422             :   // Copy non-constructor parameter data member (access function): reference_node_for_qualification_copy
    8423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for reference_node_for_qualification
    8424             :   // case: toBeCopied == COPY_DATA for reference_node_for_qualification
    8425           0 :      SgNode* reference_node_for_qualification_copy = p_reference_node_for_qualification; 
    8426           0 :      result->p_reference_node_for_qualification = reference_node_for_qualification_copy; 
    8427             :   // Copy non-constructor parameter data member (access function): name_qualification_length_copy
    8428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
    8429             :   // case: toBeCopied == COPY_DATA for name_qualification_length
    8430           0 :      int name_qualification_length_copy = p_name_qualification_length; 
    8431           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
    8432             :   // Copy non-constructor parameter data member (access function): type_elaboration_required_copy
    8433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
    8434             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
    8435           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
    8436           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
    8437             :   // Copy non-constructor parameter data member (access function): global_qualification_required_copy
    8438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
    8439             :   // case: toBeCopied == COPY_DATA for global_qualification_required
    8440           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
    8441           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
    8442             :   // Copy non-constructor parameter data member (access function): nestingLevel_copy
    8443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nestingLevel
    8444             :   // case: toBeCopied == COPY_DATA for nestingLevel
    8445           0 :      int nestingLevel_copy = p_nestingLevel; 
    8446           0 :      result->p_nestingLevel = nestingLevel_copy; 
    8447             :   // Copy non-constructor parameter data member (access function): language_copy
    8448             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for language
    8449             :   // case: toBeCopied == COPY_DATA for language
    8450           0 :      SgFile::languageOption_enum language_copy = p_language; 
    8451           0 :      result->p_language = language_copy; 
    8452             :   // Copy non-constructor parameter data member (access function): current_source_file_copy
    8453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for current_source_file
    8454             :   // case: toBeCopied == COPY_DATA for current_source_file
    8455           0 :      SgSourceFile* current_source_file_copy = p_current_source_file; 
    8456           0 :      result->p_current_source_file = current_source_file_copy; 
    8457             :   // Copy non-constructor parameter data member (access function): use_generated_name_for_template_arguments_copy
    8458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for use_generated_name_for_template_arguments
    8459             :   // case: toBeCopied == COPY_DATA for use_generated_name_for_template_arguments
    8460           0 :      bool use_generated_name_for_template_arguments_copy = p_use_generated_name_for_template_arguments; 
    8461           0 :      result->p_use_generated_name_for_template_arguments = use_generated_name_for_template_arguments_copy; 
    8462             :   // Copy non-constructor parameter data member (access function): user_defined_literal_copy
    8463             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for user_defined_literal
    8464             :   // case: toBeCopied == COPY_DATA for user_defined_literal
    8465           0 :      bool user_defined_literal_copy = p_user_defined_literal; 
    8466           0 :      result->p_user_defined_literal = user_defined_literal_copy; 
    8467             :   // Copy non-constructor parameter data member (access function): declstatement_associated_with_type_copy
    8468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declstatement_associated_with_type
    8469             :   // case: toBeCopied == COPY_DATA for declstatement_associated_with_type
    8470           0 :      SgDeclarationStatement* declstatement_associated_with_type_copy = p_declstatement_associated_with_type; 
    8471           0 :      result->p_declstatement_associated_with_type = declstatement_associated_with_type_copy; 
    8472             :   // Copy non-constructor parameter data member (no access function): result->p_extern_C_with_braces
    8473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for extern_C_with_braces
    8474             :   // case: toBeCopied == COPY_DATA for extern_C_with_braces
    8475           0 :      static bool extern_C_with_braces_copy = p_extern_C_with_braces; 
    8476           0 :      result->p_extern_C_with_braces = extern_C_with_braces_copy; 
    8477             :   // Copy non-constructor parameter data member (access function): context_for_added_parentheses_copy
    8478             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for context_for_added_parentheses
    8479             :   // case: toBeCopied == COPY_DATA for context_for_added_parentheses
    8480           0 :      bool context_for_added_parentheses_copy = p_context_for_added_parentheses; 
    8481           0 :      result->p_context_for_added_parentheses = context_for_added_parentheses_copy; 
    8482             : 
    8483             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8484             : 
    8485             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    8486             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    8487             :   // fixupCopy(result,help);
    8488             : 
    8489             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    8490             :   // the Sg_File_Info objects that are built for the new IR nodes.
    8491           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    8492           0 :      if (locatedNode != NULL)
    8493             :         {
    8494             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    8495           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    8496           0 :           ROSE_ASSERT(start != NULL);
    8497             : #if 0
    8498             :        // Debugging information
    8499             :           if (start->get_parent() == NULL)
    8500             :              {
    8501             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8502             :              }
    8503             : #endif
    8504           0 :           start->set_parent(locatedNode);
    8505           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    8506             : 
    8507           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    8508             : 
    8509             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    8510             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    8511             :        // ROSE_ASSERT(end != NULL);
    8512           0 :           if (end == NULL)
    8513             :              {
    8514           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    8515             :              }
    8516             :             else
    8517             :              {
    8518             : #if 0
    8519             :             // Debugging information
    8520             :                if (end->get_parent() == NULL)
    8521             :                   {
    8522             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8523             :                   }
    8524             : #endif
    8525           0 :                end->set_parent(locatedNode);
    8526           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    8527             :              }
    8528             : 
    8529           0 :           SgExpression* expression = isSgExpression(result);
    8530           0 :           if (isSgExpression(this) != NULL)
    8531             :              {
    8532           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    8533             : 
    8534             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    8535           0 :                if (operatorPosition != NULL)
    8536             :                   {
    8537             : #if 0
    8538             :                  // Debugging information
    8539             :                     if (operatorPosition->get_parent() == NULL)
    8540             :                        {
    8541             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8542             :                        }
    8543             : #endif
    8544           0 :                     operatorPosition->set_parent(expression);
    8545           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    8546             :                   }
    8547             :              }
    8548             :         }
    8549             : 
    8550             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    8551           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    8552           0 :      if (initializedName != NULL)
    8553             :         {
    8554             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    8555           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    8556           0 :           ROSE_ASSERT(start != NULL);
    8557             : #if 0
    8558             :        // Debugging information
    8559             :           if (start->get_parent() == NULL)
    8560             :              {
    8561             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8562             :              }
    8563             : #endif
    8564           0 :           start->set_parent(initializedName);
    8565           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    8566             : 
    8567             : #if 0
    8568             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    8569             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    8570             : 
    8571             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    8572             :        // ROSE_ASSERT(end != NULL);
    8573             :           if (end == NULL)
    8574             :              {
    8575             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    8576             :              }
    8577             :             else
    8578             :              {
    8579             :                if (end->get_parent() == NULL)
    8580             :                   {
    8581             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8582             :                   }
    8583             :                end->set_parent(initializedName);
    8584             :                ROSE_ASSERT(end->get_parent() != NULL);
    8585             :              }
    8586             : #endif
    8587             :         }
    8588             : 
    8589             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    8590           0 :      help.insertCopiedNodePair(this,result);
    8591             : 
    8592             :   // printf ("End of copy SgUnparse_Info = %p = %s \n",this,SageInterface::get_name(this).c_str());
    8593             : 
    8594             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    8595             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    8596           0 :      help.decrementDepth();
    8597             : 
    8598             :   // Test if this is the root of the copy!
    8599           0 :      if (help.get_depth() == 0)
    8600             :         {
    8601             :        // This is the original calling node.
    8602             : 
    8603             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    8604             :        // printf ("Calling SgUnparse_Info::fixupCopy() (from root of AST being copied) \n");
    8605             : #if ALT_FIXUP_COPY
    8606             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    8607           0 :           fixupCopy_scopes (result,help);
    8608           0 :           fixupCopy_symbols (result,help);
    8609           0 :           fixupCopy_references (result,help);
    8610             : #else
    8611             :           fixupCopy(result,help);
    8612             : #endif
    8613             :        // Allow this to be called recursively, so accumulate the state.
    8614             :        // Also, clear the state in the SgCopyHelp object.
    8615             :        // help.clearState();
    8616             :         }
    8617             : 
    8618           0 :      return result;
    8619             :    }
    8620             : 
    8621             : 
    8622             : /* #line 8623 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    8623             : 
    8624             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8625             : 
    8626           0 : SgNode* SgBaseClass::copy ( SgCopyHelp& help) const
    8627             :    {
    8628           0 :      SgBaseClass* result = NULL;
    8629             : 
    8630             :   // printf ("Copy SgBaseClass = %p = %s \n",this,SageInterface::get_name(this).c_str());
    8631             : 
    8632             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    8633             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    8634             :   // The default value of the depth is 0, so after this call the depth is 1!
    8635           0 :      help.incrementDepth();
    8636             : 
    8637             : #if 0
    8638             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    8639             :   // but it is not generally true that things can only be copied once!
    8640             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    8641             :   // AstAttribute* existingAttribute = const_cast<SgBaseClass*>(this)->attribute["copied"];
    8642             :      bool previouslyCopied = const_cast<SgBaseClass*>(this)->attribute.exists("copied");
    8643             :      if (previouslyCopied == true)
    8644             :         {
    8645             :           this->get_file_info()->display("Called from copy SgBaseClass: debug");
    8646             :         }
    8647             :      ROSE_ASSERT(previouslyCopied == false);
    8648             : 
    8649             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    8650             :      AstAttribute* newAttribute = new AstAttribute();
    8651             :      ROSE_ASSERT(newAttribute != NULL);
    8652             : 
    8653             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    8654             :      const_cast<SgBaseClass*>(this)->attribute.add("copied",newAttribute);
    8655             : #endif
    8656             : 
    8657             :   // Copy data members from base classes
    8658             :   // Copy constructor parameter data member: base_class_copy
    8659           0 :      SgClassDeclaration* base_class_copy; 
    8660             :   // case: not a listType for (using conditionalToCopyVariable)base_class
    8661           0 :           if (get_base_class() != NULL) 
    8662             :              { 
    8663           0 :                base_class_copy = static_cast<SgClassDeclaration*>(help.copyAst(get_base_class())); 
    8664             :              } 
    8665             :             else 
    8666             :              { 
    8667             :                base_class_copy = NULL; 
    8668             :              } 
    8669             :   // Copy constructor parameter data member: isDirectBaseClass_copy
    8670             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isDirectBaseClass
    8671             :   // case: toBeCopied == COPY_DATA for isDirectBaseClass
    8672           0 :      bool isDirectBaseClass_copy = p_isDirectBaseClass; 
    8673             :  
    8674             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8675             : 
    8676             :   // Build an empty copy of this object (will be filled in, but 
    8677             :   // the parent can't be set and must be set by the caller)
    8678           0 :      result = new SgBaseClass(  base_class_copy, isDirectBaseClass_copy );
    8679           0 :      ROSE_ASSERT(result != NULL);
    8680             : 
    8681             :   // Copy data members of "this" class
    8682             :   // Copy non-constructor parameter data member (access function): baseClassModifier_copy
    8683             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for baseClassModifier
    8684             :   // case: toBeCopied == CLONE_PTR for baseClassModifier
    8685           0 :      SgBaseClassModifier* baseClassModifier_copy = NULL; 
    8686           0 :      if ( p_baseClassModifier != NULL ) 
    8687             :         { 
    8688           0 :           baseClassModifier_copy = new SgBaseClassModifier( *p_baseClassModifier); 
    8689             :         } 
    8690             :        else 
    8691             :         { 
    8692             :           baseClassModifier_copy = NULL; 
    8693             :         } 
    8694             :   /* check for a valid pointer and delete if present */ 
    8695           0 :      if (result->p_baseClassModifier != NULL) delete result->p_baseClassModifier; 
    8696             :   /* add assignment to result here */ 
    8697           0 :      result->p_baseClassModifier = baseClassModifier_copy; 
    8698             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
    8699             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
    8700             :   // case: toBeCopied == COPY_DATA for name_qualification_length
    8701           0 :      int name_qualification_length_copy = p_name_qualification_length; 
    8702           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
    8703             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
    8704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
    8705             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
    8706           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
    8707           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
    8708             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
    8709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
    8710             :   // case: toBeCopied == COPY_DATA for global_qualification_required
    8711           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
    8712           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
    8713             :   // case: not a listType for (using conditionalToSetParent)base_class
    8714           0 :           if ( (base_class_copy != NULL) && (base_class_copy->get_parent() == NULL) && (isSgType(base_class_copy) == NULL) ) 
    8715             :              { 
    8716           0 :                base_class_copy->set_parent(result); 
    8717             :              } 
    8718             : 
    8719             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8720             : 
    8721             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    8722             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    8723             :   // fixupCopy(result,help);
    8724             : 
    8725             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    8726             :   // the Sg_File_Info objects that are built for the new IR nodes.
    8727           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    8728           0 :      if (locatedNode != NULL)
    8729             :         {
    8730             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    8731           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    8732           0 :           ROSE_ASSERT(start != NULL);
    8733             : #if 0
    8734             :        // Debugging information
    8735             :           if (start->get_parent() == NULL)
    8736             :              {
    8737             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8738             :              }
    8739             : #endif
    8740           0 :           start->set_parent(locatedNode);
    8741           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    8742             : 
    8743           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    8744             : 
    8745             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    8746             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    8747             :        // ROSE_ASSERT(end != NULL);
    8748           0 :           if (end == NULL)
    8749             :              {
    8750           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    8751             :              }
    8752             :             else
    8753             :              {
    8754             : #if 0
    8755             :             // Debugging information
    8756             :                if (end->get_parent() == NULL)
    8757             :                   {
    8758             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8759             :                   }
    8760             : #endif
    8761           0 :                end->set_parent(locatedNode);
    8762           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    8763             :              }
    8764             : 
    8765           0 :           SgExpression* expression = isSgExpression(result);
    8766           0 :           if (isSgExpression(this) != NULL)
    8767             :              {
    8768           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    8769             : 
    8770             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    8771           0 :                if (operatorPosition != NULL)
    8772             :                   {
    8773             : #if 0
    8774             :                  // Debugging information
    8775             :                     if (operatorPosition->get_parent() == NULL)
    8776             :                        {
    8777             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8778             :                        }
    8779             : #endif
    8780           0 :                     operatorPosition->set_parent(expression);
    8781           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    8782             :                   }
    8783             :              }
    8784             :         }
    8785             : 
    8786             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    8787           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    8788           0 :      if (initializedName != NULL)
    8789             :         {
    8790             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    8791           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    8792           0 :           ROSE_ASSERT(start != NULL);
    8793             : #if 0
    8794             :        // Debugging information
    8795             :           if (start->get_parent() == NULL)
    8796             :              {
    8797             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8798             :              }
    8799             : #endif
    8800           0 :           start->set_parent(initializedName);
    8801           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    8802             : 
    8803             : #if 0
    8804             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    8805             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    8806             : 
    8807             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    8808             :        // ROSE_ASSERT(end != NULL);
    8809             :           if (end == NULL)
    8810             :              {
    8811             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    8812             :              }
    8813             :             else
    8814             :              {
    8815             :                if (end->get_parent() == NULL)
    8816             :                   {
    8817             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8818             :                   }
    8819             :                end->set_parent(initializedName);
    8820             :                ROSE_ASSERT(end->get_parent() != NULL);
    8821             :              }
    8822             : #endif
    8823             :         }
    8824             : 
    8825             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    8826           0 :      help.insertCopiedNodePair(this,result);
    8827             : 
    8828             :   // printf ("End of copy SgBaseClass = %p = %s \n",this,SageInterface::get_name(this).c_str());
    8829             : 
    8830             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    8831             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    8832           0 :      help.decrementDepth();
    8833             : 
    8834             :   // Test if this is the root of the copy!
    8835           0 :      if (help.get_depth() == 0)
    8836             :         {
    8837             :        // This is the original calling node.
    8838             : 
    8839             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    8840             :        // printf ("Calling SgBaseClass::fixupCopy() (from root of AST being copied) \n");
    8841             : #if ALT_FIXUP_COPY
    8842             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    8843           0 :           fixupCopy_scopes (result,help);
    8844           0 :           fixupCopy_symbols (result,help);
    8845           0 :           fixupCopy_references (result,help);
    8846             : #else
    8847             :           fixupCopy(result,help);
    8848             : #endif
    8849             :        // Allow this to be called recursively, so accumulate the state.
    8850             :        // Also, clear the state in the SgCopyHelp object.
    8851             :        // help.clearState();
    8852             :         }
    8853             : 
    8854           0 :      return result;
    8855             :    }
    8856             : 
    8857             : 
    8858             : /* #line 8859 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    8859             : 
    8860             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8861             : 
    8862           0 : SgNode* SgExpBaseClass::copy ( SgCopyHelp& help) const
    8863             :    {
    8864           0 :      SgExpBaseClass* result = NULL;
    8865             : 
    8866             :   // printf ("Copy SgExpBaseClass = %p = %s \n",this,SageInterface::get_name(this).c_str());
    8867             : 
    8868             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    8869             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    8870             :   // The default value of the depth is 0, so after this call the depth is 1!
    8871           0 :      help.incrementDepth();
    8872             : 
    8873             : #if 0
    8874             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    8875             :   // but it is not generally true that things can only be copied once!
    8876             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    8877             :   // AstAttribute* existingAttribute = const_cast<SgExpBaseClass*>(this)->attribute["copied"];
    8878             :      bool previouslyCopied = const_cast<SgExpBaseClass*>(this)->attribute.exists("copied");
    8879             :      if (previouslyCopied == true)
    8880             :         {
    8881             :           this->get_file_info()->display("Called from copy SgExpBaseClass: debug");
    8882             :         }
    8883             :      ROSE_ASSERT(previouslyCopied == false);
    8884             : 
    8885             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    8886             :      AstAttribute* newAttribute = new AstAttribute();
    8887             :      ROSE_ASSERT(newAttribute != NULL);
    8888             : 
    8889             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    8890             :      const_cast<SgExpBaseClass*>(this)->attribute.add("copied",newAttribute);
    8891             : #endif
    8892             : 
    8893             :   // Copy data members from base classes
    8894             :   // Copy constructor parameter data member: base_class_copy
    8895           0 :      SgClassDeclaration* base_class_copy; 
    8896             :   // case: not a listType for (using conditionalToCopyVariable)base_class
    8897           0 :           if (get_base_class() != NULL) 
    8898             :              { 
    8899           0 :                base_class_copy = static_cast<SgClassDeclaration*>(help.copyAst(get_base_class())); 
    8900             :              } 
    8901             :             else 
    8902             :              { 
    8903             :                base_class_copy = NULL; 
    8904             :              } 
    8905             :   // Copy constructor parameter data member: isDirectBaseClass_copy
    8906             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isDirectBaseClass
    8907             :   // case: toBeCopied == COPY_DATA for isDirectBaseClass
    8908           0 :      bool isDirectBaseClass_copy = p_isDirectBaseClass; 
    8909             :   // Copy constructor parameter data member: base_class_exp_copy
    8910           0 :      SgExpression* base_class_exp_copy; 
    8911             :   // case: not a listType for (using conditionalToCopyVariable)base_class_exp
    8912           0 :           if (get_base_class_exp() != NULL) 
    8913             :              { 
    8914           0 :                base_class_exp_copy = static_cast<SgExpression*>(help.copyAst(get_base_class_exp())); 
    8915             :              } 
    8916             :             else 
    8917             :              { 
    8918             :                base_class_exp_copy = NULL; 
    8919             :              } 
    8920             :  
    8921             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8922             : 
    8923             :   // Build an empty copy of this object (will be filled in, but 
    8924             :   // the parent can't be set and must be set by the caller)
    8925           0 :      result = new SgExpBaseClass(  base_class_copy, isDirectBaseClass_copy, base_class_exp_copy );
    8926           0 :      ROSE_ASSERT(result != NULL);
    8927             : 
    8928             :   // Copy data members of "this" class
    8929             :   // Copy non-constructor parameter data member (access function): baseClassModifier_copy
    8930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for baseClassModifier
    8931             :   // case: toBeCopied == CLONE_PTR for baseClassModifier
    8932           0 :      SgBaseClassModifier* baseClassModifier_copy = NULL; 
    8933           0 :      if ( p_baseClassModifier != NULL ) 
    8934             :         { 
    8935           0 :           baseClassModifier_copy = new SgBaseClassModifier( *p_baseClassModifier); 
    8936             :         } 
    8937             :        else 
    8938             :         { 
    8939             :           baseClassModifier_copy = NULL; 
    8940             :         } 
    8941             :   /* check for a valid pointer and delete if present */ 
    8942           0 :      if (result->p_baseClassModifier != NULL) delete result->p_baseClassModifier; 
    8943             :   /* add assignment to result here */ 
    8944           0 :      result->p_baseClassModifier = baseClassModifier_copy; 
    8945             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
    8946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
    8947             :   // case: toBeCopied == COPY_DATA for name_qualification_length
    8948           0 :      int name_qualification_length_copy = p_name_qualification_length; 
    8949           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
    8950             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
    8951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
    8952             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
    8953           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
    8954           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
    8955             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
    8956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
    8957             :   // case: toBeCopied == COPY_DATA for global_qualification_required
    8958           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
    8959           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
    8960             :   // case: not a listType for (using conditionalToSetParent)base_class_exp
    8961           0 :           if ( (base_class_exp_copy != NULL) && (base_class_exp_copy->get_parent() == NULL) && (isSgType(base_class_exp_copy) == NULL) ) 
    8962             :              { 
    8963           0 :                base_class_exp_copy->set_parent(result); 
    8964             :              } 
    8965             :   // case: not a listType for (using conditionalToSetParent)base_class
    8966           0 :           if ( (base_class_copy != NULL) && (base_class_copy->get_parent() == NULL) && (isSgType(base_class_copy) == NULL) ) 
    8967             :              { 
    8968           0 :                base_class_copy->set_parent(result); 
    8969             :              } 
    8970             : 
    8971             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    8972             : 
    8973             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    8974             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    8975             :   // fixupCopy(result,help);
    8976             : 
    8977             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    8978             :   // the Sg_File_Info objects that are built for the new IR nodes.
    8979           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    8980           0 :      if (locatedNode != NULL)
    8981             :         {
    8982             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    8983           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    8984           0 :           ROSE_ASSERT(start != NULL);
    8985             : #if 0
    8986             :        // Debugging information
    8987             :           if (start->get_parent() == NULL)
    8988             :              {
    8989             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    8990             :              }
    8991             : #endif
    8992           0 :           start->set_parent(locatedNode);
    8993           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    8994             : 
    8995           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    8996             : 
    8997             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    8998             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    8999             :        // ROSE_ASSERT(end != NULL);
    9000           0 :           if (end == NULL)
    9001             :              {
    9002           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    9003             :              }
    9004             :             else
    9005             :              {
    9006             : #if 0
    9007             :             // Debugging information
    9008             :                if (end->get_parent() == NULL)
    9009             :                   {
    9010             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9011             :                   }
    9012             : #endif
    9013           0 :                end->set_parent(locatedNode);
    9014           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    9015             :              }
    9016             : 
    9017           0 :           SgExpression* expression = isSgExpression(result);
    9018           0 :           if (isSgExpression(this) != NULL)
    9019             :              {
    9020           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    9021             : 
    9022             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    9023           0 :                if (operatorPosition != NULL)
    9024             :                   {
    9025             : #if 0
    9026             :                  // Debugging information
    9027             :                     if (operatorPosition->get_parent() == NULL)
    9028             :                        {
    9029             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9030             :                        }
    9031             : #endif
    9032           0 :                     operatorPosition->set_parent(expression);
    9033           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    9034             :                   }
    9035             :              }
    9036             :         }
    9037             : 
    9038             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    9039           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    9040           0 :      if (initializedName != NULL)
    9041             :         {
    9042             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    9043           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    9044           0 :           ROSE_ASSERT(start != NULL);
    9045             : #if 0
    9046             :        // Debugging information
    9047             :           if (start->get_parent() == NULL)
    9048             :              {
    9049             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9050             :              }
    9051             : #endif
    9052           0 :           start->set_parent(initializedName);
    9053           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    9054             : 
    9055             : #if 0
    9056             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    9057             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    9058             : 
    9059             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    9060             :        // ROSE_ASSERT(end != NULL);
    9061             :           if (end == NULL)
    9062             :              {
    9063             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    9064             :              }
    9065             :             else
    9066             :              {
    9067             :                if (end->get_parent() == NULL)
    9068             :                   {
    9069             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9070             :                   }
    9071             :                end->set_parent(initializedName);
    9072             :                ROSE_ASSERT(end->get_parent() != NULL);
    9073             :              }
    9074             : #endif
    9075             :         }
    9076             : 
    9077             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    9078           0 :      help.insertCopiedNodePair(this,result);
    9079             : 
    9080             :   // printf ("End of copy SgExpBaseClass = %p = %s \n",this,SageInterface::get_name(this).c_str());
    9081             : 
    9082             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    9083             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    9084           0 :      help.decrementDepth();
    9085             : 
    9086             :   // Test if this is the root of the copy!
    9087           0 :      if (help.get_depth() == 0)
    9088             :         {
    9089             :        // This is the original calling node.
    9090             : 
    9091             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    9092             :        // printf ("Calling SgExpBaseClass::fixupCopy() (from root of AST being copied) \n");
    9093             : #if ALT_FIXUP_COPY
    9094             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    9095           0 :           fixupCopy_scopes (result,help);
    9096           0 :           fixupCopy_symbols (result,help);
    9097           0 :           fixupCopy_references (result,help);
    9098             : #else
    9099             :           fixupCopy(result,help);
    9100             : #endif
    9101             :        // Allow this to be called recursively, so accumulate the state.
    9102             :        // Also, clear the state in the SgCopyHelp object.
    9103             :        // help.clearState();
    9104             :         }
    9105             : 
    9106           0 :      return result;
    9107             :    }
    9108             : 
    9109             : 
    9110             : /* #line 9111 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    9111             : 
    9112             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9113             : 
    9114           0 : SgNode* SgNonrealBaseClass::copy ( SgCopyHelp& help) const
    9115             :    {
    9116           0 :      SgNonrealBaseClass* result = NULL;
    9117             : 
    9118             :   // printf ("Copy SgNonrealBaseClass = %p = %s \n",this,SageInterface::get_name(this).c_str());
    9119             : 
    9120             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    9121             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    9122             :   // The default value of the depth is 0, so after this call the depth is 1!
    9123           0 :      help.incrementDepth();
    9124             : 
    9125             : #if 0
    9126             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    9127             :   // but it is not generally true that things can only be copied once!
    9128             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    9129             :   // AstAttribute* existingAttribute = const_cast<SgNonrealBaseClass*>(this)->attribute["copied"];
    9130             :      bool previouslyCopied = const_cast<SgNonrealBaseClass*>(this)->attribute.exists("copied");
    9131             :      if (previouslyCopied == true)
    9132             :         {
    9133             :           this->get_file_info()->display("Called from copy SgNonrealBaseClass: debug");
    9134             :         }
    9135             :      ROSE_ASSERT(previouslyCopied == false);
    9136             : 
    9137             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    9138             :      AstAttribute* newAttribute = new AstAttribute();
    9139             :      ROSE_ASSERT(newAttribute != NULL);
    9140             : 
    9141             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    9142             :      const_cast<SgNonrealBaseClass*>(this)->attribute.add("copied",newAttribute);
    9143             : #endif
    9144             : 
    9145             :   // Copy data members from base classes
    9146             :   // Copy constructor parameter data member: base_class_copy
    9147           0 :      SgClassDeclaration* base_class_copy; 
    9148             :   // case: not a listType for (using conditionalToCopyVariable)base_class
    9149           0 :           if (get_base_class() != NULL) 
    9150             :              { 
    9151           0 :                base_class_copy = static_cast<SgClassDeclaration*>(help.copyAst(get_base_class())); 
    9152             :              } 
    9153             :             else 
    9154             :              { 
    9155             :                base_class_copy = NULL; 
    9156             :              } 
    9157             :   // Copy constructor parameter data member: isDirectBaseClass_copy
    9158             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isDirectBaseClass
    9159             :   // case: toBeCopied == COPY_DATA for isDirectBaseClass
    9160           0 :      bool isDirectBaseClass_copy = p_isDirectBaseClass; 
    9161             :   // Copy constructor parameter data member: base_class_nonreal_copy
    9162           0 :      SgNonrealDecl* base_class_nonreal_copy; 
    9163             :   // case: not a listType for (using conditionalToCopyVariable)base_class_nonreal
    9164           0 :           if (get_base_class_nonreal() != NULL) 
    9165             :              { 
    9166           0 :                base_class_nonreal_copy = static_cast<SgNonrealDecl*>(help.copyAst(get_base_class_nonreal())); 
    9167             :              } 
    9168             :             else 
    9169             :              { 
    9170             :                base_class_nonreal_copy = NULL; 
    9171             :              } 
    9172             :  
    9173             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9174             : 
    9175             :   // Build an empty copy of this object (will be filled in, but 
    9176             :   // the parent can't be set and must be set by the caller)
    9177           0 :      result = new SgNonrealBaseClass(  base_class_copy, isDirectBaseClass_copy, base_class_nonreal_copy );
    9178           0 :      ROSE_ASSERT(result != NULL);
    9179             : 
    9180             :   // Copy data members of "this" class
    9181             :   // Copy non-constructor parameter data member (access function): baseClassModifier_copy
    9182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for baseClassModifier
    9183             :   // case: toBeCopied == CLONE_PTR for baseClassModifier
    9184           0 :      SgBaseClassModifier* baseClassModifier_copy = NULL; 
    9185           0 :      if ( p_baseClassModifier != NULL ) 
    9186             :         { 
    9187           0 :           baseClassModifier_copy = new SgBaseClassModifier( *p_baseClassModifier); 
    9188             :         } 
    9189             :        else 
    9190             :         { 
    9191             :           baseClassModifier_copy = NULL; 
    9192             :         } 
    9193             :   /* check for a valid pointer and delete if present */ 
    9194           0 :      if (result->p_baseClassModifier != NULL) delete result->p_baseClassModifier; 
    9195             :   /* add assignment to result here */ 
    9196           0 :      result->p_baseClassModifier = baseClassModifier_copy; 
    9197             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
    9198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
    9199             :   // case: toBeCopied == COPY_DATA for name_qualification_length
    9200           0 :      int name_qualification_length_copy = p_name_qualification_length; 
    9201           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
    9202             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
    9203             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
    9204             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
    9205           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
    9206           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
    9207             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
    9208             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
    9209             :   // case: toBeCopied == COPY_DATA for global_qualification_required
    9210           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
    9211           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
    9212             :   // case: not a listType for (using conditionalToSetParent)base_class_nonreal
    9213           0 :           if ( (base_class_nonreal_copy != NULL) && (base_class_nonreal_copy->get_parent() == NULL) && (isSgType(base_class_nonreal_copy) == NULL) ) 
    9214             :              { 
    9215           0 :                base_class_nonreal_copy->set_parent(result); 
    9216             :              } 
    9217             :   // case: not a listType for (using conditionalToSetParent)base_class
    9218           0 :           if ( (base_class_copy != NULL) && (base_class_copy->get_parent() == NULL) && (isSgType(base_class_copy) == NULL) ) 
    9219             :              { 
    9220           0 :                base_class_copy->set_parent(result); 
    9221             :              } 
    9222             : 
    9223             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9224             : 
    9225             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    9226             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    9227             :   // fixupCopy(result,help);
    9228             : 
    9229             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    9230             :   // the Sg_File_Info objects that are built for the new IR nodes.
    9231           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    9232           0 :      if (locatedNode != NULL)
    9233             :         {
    9234             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    9235           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    9236           0 :           ROSE_ASSERT(start != NULL);
    9237             : #if 0
    9238             :        // Debugging information
    9239             :           if (start->get_parent() == NULL)
    9240             :              {
    9241             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9242             :              }
    9243             : #endif
    9244           0 :           start->set_parent(locatedNode);
    9245           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    9246             : 
    9247           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    9248             : 
    9249             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    9250             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    9251             :        // ROSE_ASSERT(end != NULL);
    9252           0 :           if (end == NULL)
    9253             :              {
    9254           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    9255             :              }
    9256             :             else
    9257             :              {
    9258             : #if 0
    9259             :             // Debugging information
    9260             :                if (end->get_parent() == NULL)
    9261             :                   {
    9262             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9263             :                   }
    9264             : #endif
    9265           0 :                end->set_parent(locatedNode);
    9266           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    9267             :              }
    9268             : 
    9269           0 :           SgExpression* expression = isSgExpression(result);
    9270           0 :           if (isSgExpression(this) != NULL)
    9271             :              {
    9272           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    9273             : 
    9274             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    9275           0 :                if (operatorPosition != NULL)
    9276             :                   {
    9277             : #if 0
    9278             :                  // Debugging information
    9279             :                     if (operatorPosition->get_parent() == NULL)
    9280             :                        {
    9281             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9282             :                        }
    9283             : #endif
    9284           0 :                     operatorPosition->set_parent(expression);
    9285           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    9286             :                   }
    9287             :              }
    9288             :         }
    9289             : 
    9290             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    9291           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    9292           0 :      if (initializedName != NULL)
    9293             :         {
    9294             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    9295           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    9296           0 :           ROSE_ASSERT(start != NULL);
    9297             : #if 0
    9298             :        // Debugging information
    9299             :           if (start->get_parent() == NULL)
    9300             :              {
    9301             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9302             :              }
    9303             : #endif
    9304           0 :           start->set_parent(initializedName);
    9305           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    9306             : 
    9307             : #if 0
    9308             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    9309             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    9310             : 
    9311             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    9312             :        // ROSE_ASSERT(end != NULL);
    9313             :           if (end == NULL)
    9314             :              {
    9315             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    9316             :              }
    9317             :             else
    9318             :              {
    9319             :                if (end->get_parent() == NULL)
    9320             :                   {
    9321             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9322             :                   }
    9323             :                end->set_parent(initializedName);
    9324             :                ROSE_ASSERT(end->get_parent() != NULL);
    9325             :              }
    9326             : #endif
    9327             :         }
    9328             : 
    9329             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    9330           0 :      help.insertCopiedNodePair(this,result);
    9331             : 
    9332             :   // printf ("End of copy SgNonrealBaseClass = %p = %s \n",this,SageInterface::get_name(this).c_str());
    9333             : 
    9334             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    9335             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    9336           0 :      help.decrementDepth();
    9337             : 
    9338             :   // Test if this is the root of the copy!
    9339           0 :      if (help.get_depth() == 0)
    9340             :         {
    9341             :        // This is the original calling node.
    9342             : 
    9343             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    9344             :        // printf ("Calling SgNonrealBaseClass::fixupCopy() (from root of AST being copied) \n");
    9345             : #if ALT_FIXUP_COPY
    9346             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    9347           0 :           fixupCopy_scopes (result,help);
    9348           0 :           fixupCopy_symbols (result,help);
    9349           0 :           fixupCopy_references (result,help);
    9350             : #else
    9351             :           fixupCopy(result,help);
    9352             : #endif
    9353             :        // Allow this to be called recursively, so accumulate the state.
    9354             :        // Also, clear the state in the SgCopyHelp object.
    9355             :        // help.clearState();
    9356             :         }
    9357             : 
    9358           0 :      return result;
    9359             :    }
    9360             : 
    9361             : 
    9362             : /* #line 9363 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    9363             : 
    9364             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9365             : 
    9366           0 : SgNode* SgTypedefSeq::copy ( SgCopyHelp& help) const
    9367             :    {
    9368           0 :      SgTypedefSeq* result = NULL;
    9369             : 
    9370             :   // printf ("Copy SgTypedefSeq = %p = %s \n",this,SageInterface::get_name(this).c_str());
    9371             : 
    9372             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    9373             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    9374             :   // The default value of the depth is 0, so after this call the depth is 1!
    9375           0 :      help.incrementDepth();
    9376             : 
    9377             : #if 0
    9378             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    9379             :   // but it is not generally true that things can only be copied once!
    9380             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    9381             :   // AstAttribute* existingAttribute = const_cast<SgTypedefSeq*>(this)->attribute["copied"];
    9382             :      bool previouslyCopied = const_cast<SgTypedefSeq*>(this)->attribute.exists("copied");
    9383             :      if (previouslyCopied == true)
    9384             :         {
    9385             :           this->get_file_info()->display("Called from copy SgTypedefSeq: debug");
    9386             :         }
    9387             :      ROSE_ASSERT(previouslyCopied == false);
    9388             : 
    9389             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    9390             :      AstAttribute* newAttribute = new AstAttribute();
    9391             :      ROSE_ASSERT(newAttribute != NULL);
    9392             : 
    9393             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    9394             :      const_cast<SgTypedefSeq*>(this)->attribute.add("copied",newAttribute);
    9395             : #endif
    9396             : 
    9397             :   // Copy data members from base classes
    9398             :  
    9399             : 
    9400             :   // Build an empty copy of this object (will be filled in, but 
    9401             :   // the parent can't be set and must be set by the caller)
    9402           0 :      result = new SgTypedefSeq(  );
    9403           0 :      ROSE_ASSERT(result != NULL);
    9404             : 
    9405             :   // Copy data members of "this" class
    9406             :   // Copy non-constructor parameter data member (no access function): result->p_typedefs
    9407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
    9408             :   // case: toBeCopied == COPY_DATA for typedefs
    9409           0 :      SgTypePtrList typedefs_copy = p_typedefs; 
    9410           0 :      result->p_typedefs = typedefs_copy; 
    9411             : 
    9412             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9413             : 
    9414             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    9415             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    9416             :   // fixupCopy(result,help);
    9417             : 
    9418             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    9419             :   // the Sg_File_Info objects that are built for the new IR nodes.
    9420           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    9421           0 :      if (locatedNode != NULL)
    9422             :         {
    9423             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    9424           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    9425           0 :           ROSE_ASSERT(start != NULL);
    9426             : #if 0
    9427             :        // Debugging information
    9428             :           if (start->get_parent() == NULL)
    9429             :              {
    9430             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9431             :              }
    9432             : #endif
    9433           0 :           start->set_parent(locatedNode);
    9434           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    9435             : 
    9436           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    9437             : 
    9438             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    9439             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    9440             :        // ROSE_ASSERT(end != NULL);
    9441           0 :           if (end == NULL)
    9442             :              {
    9443           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    9444             :              }
    9445             :             else
    9446             :              {
    9447             : #if 0
    9448             :             // Debugging information
    9449             :                if (end->get_parent() == NULL)
    9450             :                   {
    9451             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9452             :                   }
    9453             : #endif
    9454           0 :                end->set_parent(locatedNode);
    9455           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    9456             :              }
    9457             : 
    9458           0 :           SgExpression* expression = isSgExpression(result);
    9459           0 :           if (isSgExpression(this) != NULL)
    9460             :              {
    9461           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    9462             : 
    9463             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    9464           0 :                if (operatorPosition != NULL)
    9465             :                   {
    9466             : #if 0
    9467             :                  // Debugging information
    9468             :                     if (operatorPosition->get_parent() == NULL)
    9469             :                        {
    9470             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9471             :                        }
    9472             : #endif
    9473           0 :                     operatorPosition->set_parent(expression);
    9474           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    9475             :                   }
    9476             :              }
    9477             :         }
    9478             : 
    9479             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    9480           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    9481           0 :      if (initializedName != NULL)
    9482             :         {
    9483             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    9484           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    9485           0 :           ROSE_ASSERT(start != NULL);
    9486             : #if 0
    9487             :        // Debugging information
    9488             :           if (start->get_parent() == NULL)
    9489             :              {
    9490             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9491             :              }
    9492             : #endif
    9493           0 :           start->set_parent(initializedName);
    9494           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    9495             : 
    9496             : #if 0
    9497             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    9498             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    9499             : 
    9500             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    9501             :        // ROSE_ASSERT(end != NULL);
    9502             :           if (end == NULL)
    9503             :              {
    9504             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    9505             :              }
    9506             :             else
    9507             :              {
    9508             :                if (end->get_parent() == NULL)
    9509             :                   {
    9510             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9511             :                   }
    9512             :                end->set_parent(initializedName);
    9513             :                ROSE_ASSERT(end->get_parent() != NULL);
    9514             :              }
    9515             : #endif
    9516             :         }
    9517             : 
    9518             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    9519           0 :      help.insertCopiedNodePair(this,result);
    9520             : 
    9521             :   // printf ("End of copy SgTypedefSeq = %p = %s \n",this,SageInterface::get_name(this).c_str());
    9522             : 
    9523             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    9524             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    9525           0 :      help.decrementDepth();
    9526             : 
    9527             :   // Test if this is the root of the copy!
    9528           0 :      if (help.get_depth() == 0)
    9529             :         {
    9530             :        // This is the original calling node.
    9531             : 
    9532             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    9533             :        // printf ("Calling SgTypedefSeq::fixupCopy() (from root of AST being copied) \n");
    9534             : #if ALT_FIXUP_COPY
    9535             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    9536           0 :           fixupCopy_scopes (result,help);
    9537           0 :           fixupCopy_symbols (result,help);
    9538           0 :           fixupCopy_references (result,help);
    9539             : #else
    9540             :           fixupCopy(result,help);
    9541             : #endif
    9542             :        // Allow this to be called recursively, so accumulate the state.
    9543             :        // Also, clear the state in the SgCopyHelp object.
    9544             :        // help.clearState();
    9545             :         }
    9546             : 
    9547           0 :      return result;
    9548             :    }
    9549             : 
    9550             : 
    9551             : /* #line 9552 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    9552             : 
    9553             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9554             : 
    9555           0 : SgNode* SgTemplateParameter::copy ( SgCopyHelp& help) const
    9556             :    {
    9557           0 :      SgTemplateParameter* result = NULL;
    9558             : 
    9559             :   // printf ("Copy SgTemplateParameter = %p = %s \n",this,SageInterface::get_name(this).c_str());
    9560             : 
    9561             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    9562             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    9563             :   // The default value of the depth is 0, so after this call the depth is 1!
    9564           0 :      help.incrementDepth();
    9565             : 
    9566             : #if 0
    9567             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    9568             :   // but it is not generally true that things can only be copied once!
    9569             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    9570             :   // AstAttribute* existingAttribute = const_cast<SgTemplateParameter*>(this)->attribute["copied"];
    9571             :      bool previouslyCopied = const_cast<SgTemplateParameter*>(this)->attribute.exists("copied");
    9572             :      if (previouslyCopied == true)
    9573             :         {
    9574             :           this->get_file_info()->display("Called from copy SgTemplateParameter: debug");
    9575             :         }
    9576             :      ROSE_ASSERT(previouslyCopied == false);
    9577             : 
    9578             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    9579             :      AstAttribute* newAttribute = new AstAttribute();
    9580             :      ROSE_ASSERT(newAttribute != NULL);
    9581             : 
    9582             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    9583             :      const_cast<SgTemplateParameter*>(this)->attribute.add("copied",newAttribute);
    9584             : #endif
    9585             : 
    9586             :   // Copy data members from base classes
    9587             :   // Copy constructor parameter data member: parameterType_copy
    9588             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterType
    9589             :   // case: toBeCopied == COPY_DATA for parameterType
    9590           0 :      SgTemplateParameter::template_parameter_enum parameterType_copy = p_parameterType; 
    9591             :   // Copy constructor parameter data member: type_copy
    9592             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
    9593             :   // case: toBeCopied == COPY_DATA for type
    9594           0 :      SgType* type_copy = p_type; 
    9595             :   // Copy constructor parameter data member: defaultTypeParameter_copy
    9596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for defaultTypeParameter
    9597             :   // case: toBeCopied == COPY_DATA for defaultTypeParameter
    9598           0 :      SgType* defaultTypeParameter_copy = p_defaultTypeParameter; 
    9599             :   // Copy constructor parameter data member: expression_copy
    9600           0 :      SgExpression* expression_copy; 
    9601             :   // case: not a listType for (using conditionalToCopyVariable)expression
    9602           0 :           if (get_expression() != NULL) 
    9603             :              { 
    9604           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
    9605             :              } 
    9606             :             else 
    9607             :              { 
    9608             :                expression_copy = NULL; 
    9609             :              } 
    9610             :   // Copy constructor parameter data member: defaultExpressionParameter_copy
    9611           0 :      SgExpression* defaultExpressionParameter_copy; 
    9612             :   // case: not a listType for (using conditionalToCopyVariable)defaultExpressionParameter
    9613           0 :           if (get_defaultExpressionParameter() != NULL) 
    9614             :              { 
    9615           0 :                defaultExpressionParameter_copy = static_cast<SgExpression*>(help.copyAst(get_defaultExpressionParameter())); 
    9616             :              } 
    9617             :             else 
    9618             :              { 
    9619             :                defaultExpressionParameter_copy = NULL; 
    9620             :              } 
    9621             :   // Copy constructor parameter data member: templateDeclaration_copy
    9622           0 :      SgDeclarationStatement* templateDeclaration_copy; 
    9623             :   // case: not a listType for (using conditionalToCopyVariable)templateDeclaration
    9624           0 :           if (get_templateDeclaration() != NULL) 
    9625             :              { 
    9626           0 :                templateDeclaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_templateDeclaration())); 
    9627             :              } 
    9628             :             else 
    9629             :              { 
    9630             :                templateDeclaration_copy = NULL; 
    9631             :              } 
    9632             :   // Copy constructor parameter data member: defaultTemplateDeclarationParameter_copy
    9633           0 :      SgDeclarationStatement* defaultTemplateDeclarationParameter_copy; 
    9634             :   // case: not a listType for (using conditionalToCopyVariable)defaultTemplateDeclarationParameter
    9635           0 :           if (get_defaultTemplateDeclarationParameter() != NULL) 
    9636             :              { 
    9637           0 :                defaultTemplateDeclarationParameter_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_defaultTemplateDeclarationParameter())); 
    9638             :              } 
    9639             :             else 
    9640             :              { 
    9641             :                defaultTemplateDeclarationParameter_copy = NULL; 
    9642             :              } 
    9643             :   // Copy constructor parameter data member: initializedName_copy
    9644           0 :      SgInitializedName* initializedName_copy; 
    9645             :   // case: not a listType for (using conditionalToCopyVariable)initializedName
    9646           0 :           if (get_initializedName() != NULL) 
    9647             :              { 
    9648           0 :                initializedName_copy = static_cast<SgInitializedName*>(help.copyAst(get_initializedName())); 
    9649             :              } 
    9650             :             else 
    9651             :              { 
    9652             :                initializedName_copy = NULL; 
    9653             :              } 
    9654             :  
    9655             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9656             : 
    9657             :   // Build an empty copy of this object (will be filled in, but 
    9658             :   // the parent can't be set and must be set by the caller)
    9659           0 :      result = new SgTemplateParameter(  parameterType_copy, type_copy, defaultTypeParameter_copy, expression_copy, defaultExpressionParameter_copy, templateDeclaration_copy, defaultTemplateDeclarationParameter_copy, initializedName_copy );
    9660           0 :      ROSE_ASSERT(result != NULL);
    9661             : 
    9662             :   // Copy data members of "this" class
    9663             :   // case: not a listType for (using conditionalToSetParent)expression
    9664           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
    9665             :              { 
    9666           0 :                expression_copy->set_parent(result); 
    9667             :              } 
    9668             :   // case: not a listType for (using conditionalToSetParent)defaultExpressionParameter
    9669           0 :           if ( (defaultExpressionParameter_copy != NULL) && (defaultExpressionParameter_copy->get_parent() == NULL) && (isSgType(defaultExpressionParameter_copy) == NULL) ) 
    9670             :              { 
    9671           0 :                defaultExpressionParameter_copy->set_parent(result); 
    9672             :              } 
    9673             :   // case: not a listType for (using conditionalToSetParent)templateDeclaration
    9674           0 :           if ( (templateDeclaration_copy != NULL) && (templateDeclaration_copy->get_parent() == NULL) && (isSgType(templateDeclaration_copy) == NULL) ) 
    9675             :              { 
    9676           0 :                templateDeclaration_copy->set_parent(result); 
    9677             :              } 
    9678             :   // case: not a listType for (using conditionalToSetParent)defaultTemplateDeclarationParameter
    9679           0 :           if ( (defaultTemplateDeclarationParameter_copy != NULL) && (defaultTemplateDeclarationParameter_copy->get_parent() == NULL) && (isSgType(defaultTemplateDeclarationParameter_copy) == NULL) ) 
    9680             :              { 
    9681           0 :                defaultTemplateDeclarationParameter_copy->set_parent(result); 
    9682             :              } 
    9683             :   // case: not a listType for (using conditionalToSetParent)initializedName
    9684           0 :           if ( (initializedName_copy != NULL) && (initializedName_copy->get_parent() == NULL) && (isSgType(initializedName_copy) == NULL) ) 
    9685             :              { 
    9686           0 :                initializedName_copy->set_parent(result); 
    9687             :              } 
    9688             : 
    9689             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9690             : 
    9691             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    9692             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
    9693             :   // fixupCopy(result,help);
    9694             : 
    9695             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
    9696             :   // the Sg_File_Info objects that are built for the new IR nodes.
    9697           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
    9698           0 :      if (locatedNode != NULL)
    9699             :         {
    9700             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    9701           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
    9702           0 :           ROSE_ASSERT(start != NULL);
    9703             : #if 0
    9704             :        // Debugging information
    9705             :           if (start->get_parent() == NULL)
    9706             :              {
    9707             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9708             :              }
    9709             : #endif
    9710           0 :           start->set_parent(locatedNode);
    9711           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    9712             : 
    9713           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
    9714             : 
    9715             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
    9716             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
    9717             :        // ROSE_ASSERT(end != NULL);
    9718           0 :           if (end == NULL)
    9719             :              {
    9720           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
    9721             :              }
    9722             :             else
    9723             :              {
    9724             : #if 0
    9725             :             // Debugging information
    9726             :                if (end->get_parent() == NULL)
    9727             :                   {
    9728             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9729             :                   }
    9730             : #endif
    9731           0 :                end->set_parent(locatedNode);
    9732           0 :                ROSE_ASSERT(end->get_parent() != NULL);
    9733             :              }
    9734             : 
    9735           0 :           SgExpression* expression = isSgExpression(result);
    9736           0 :           if (isSgExpression(this) != NULL)
    9737             :              {
    9738           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
    9739             : 
    9740             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
    9741           0 :                if (operatorPosition != NULL)
    9742             :                   {
    9743             : #if 0
    9744             :                  // Debugging information
    9745             :                     if (operatorPosition->get_parent() == NULL)
    9746             :                        {
    9747             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9748             :                        }
    9749             : #endif
    9750           0 :                     operatorPosition->set_parent(expression);
    9751           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
    9752             :                   }
    9753             :              }
    9754             :         }
    9755             : 
    9756             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
    9757           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
    9758           0 :      if (initializedName != NULL)
    9759             :         {
    9760             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
    9761           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
    9762           0 :           ROSE_ASSERT(start != NULL);
    9763             : #if 0
    9764             :        // Debugging information
    9765             :           if (start->get_parent() == NULL)
    9766             :              {
    9767             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9768             :              }
    9769             : #endif
    9770           0 :           start->set_parent(initializedName);
    9771           0 :           ROSE_ASSERT(start->get_parent() != NULL);
    9772             : 
    9773             : #if 0
    9774             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
    9775             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
    9776             : 
    9777             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
    9778             :        // ROSE_ASSERT(end != NULL);
    9779             :           if (end == NULL)
    9780             :              {
    9781             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
    9782             :              }
    9783             :             else
    9784             :              {
    9785             :                if (end->get_parent() == NULL)
    9786             :                   {
    9787             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
    9788             :                   }
    9789             :                end->set_parent(initializedName);
    9790             :                ROSE_ASSERT(end->get_parent() != NULL);
    9791             :              }
    9792             : #endif
    9793             :         }
    9794             : 
    9795             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
    9796           0 :      help.insertCopiedNodePair(this,result);
    9797             : 
    9798             :   // printf ("End of copy SgTemplateParameter = %p = %s \n",this,SageInterface::get_name(this).c_str());
    9799             : 
    9800             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    9801             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    9802           0 :      help.decrementDepth();
    9803             : 
    9804             :   // Test if this is the root of the copy!
    9805           0 :      if (help.get_depth() == 0)
    9806             :         {
    9807             :        // This is the original calling node.
    9808             : 
    9809             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
    9810             :        // printf ("Calling SgTemplateParameter::fixupCopy() (from root of AST being copied) \n");
    9811             : #if ALT_FIXUP_COPY
    9812             :        // DQ (11/7/2007): These need to be called separately (see documentation)
    9813           0 :           fixupCopy_scopes (result,help);
    9814           0 :           fixupCopy_symbols (result,help);
    9815           0 :           fixupCopy_references (result,help);
    9816             : #else
    9817             :           fixupCopy(result,help);
    9818             : #endif
    9819             :        // Allow this to be called recursively, so accumulate the state.
    9820             :        // Also, clear the state in the SgCopyHelp object.
    9821             :        // help.clearState();
    9822             :         }
    9823             : 
    9824           0 :      return result;
    9825             :    }
    9826             : 
    9827             : 
    9828             : /* #line 9829 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
    9829             : 
    9830             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9831             : 
    9832           0 : SgNode* SgTemplateArgument::copy ( SgCopyHelp& help) const
    9833             :    {
    9834           0 :      SgTemplateArgument* result = NULL;
    9835             : 
    9836             :   // printf ("Copy SgTemplateArgument = %p = %s \n",this,SageInterface::get_name(this).c_str());
    9837             : 
    9838             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
    9839             :   // used to associated old and new symbols in the original AST and the copy of the AST.
    9840             :   // The default value of the depth is 0, so after this call the depth is 1!
    9841           0 :      help.incrementDepth();
    9842             : 
    9843             : #if 0
    9844             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
    9845             :   // but it is not generally true that things can only be copied once!
    9846             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
    9847             :   // AstAttribute* existingAttribute = const_cast<SgTemplateArgument*>(this)->attribute["copied"];
    9848             :      bool previouslyCopied = const_cast<SgTemplateArgument*>(this)->attribute.exists("copied");
    9849             :      if (previouslyCopied == true)
    9850             :         {
    9851             :           this->get_file_info()->display("Called from copy SgTemplateArgument: debug");
    9852             :         }
    9853             :      ROSE_ASSERT(previouslyCopied == false);
    9854             : 
    9855             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
    9856             :      AstAttribute* newAttribute = new AstAttribute();
    9857             :      ROSE_ASSERT(newAttribute != NULL);
    9858             : 
    9859             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
    9860             :      const_cast<SgTemplateArgument*>(this)->attribute.add("copied",newAttribute);
    9861             : #endif
    9862             : 
    9863             :   // Copy data members from base classes
    9864             :   // Copy constructor parameter data member: argumentType_copy
    9865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for argumentType
    9866             :   // case: toBeCopied == COPY_DATA for argumentType
    9867           0 :      SgTemplateArgument::template_argument_enum argumentType_copy = p_argumentType; 
    9868             :   // Copy constructor parameter data member: isArrayBoundUnknownType_copy
    9869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isArrayBoundUnknownType
    9870             :   // case: toBeCopied == COPY_DATA for isArrayBoundUnknownType
    9871           0 :      bool isArrayBoundUnknownType_copy = p_isArrayBoundUnknownType; 
    9872             :   // Copy constructor parameter data member: type_copy
    9873             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
    9874             :   // case: toBeCopied == COPY_DATA for type
    9875           0 :      SgType* type_copy = p_type; 
    9876             :   // Copy constructor parameter data member: expression_copy
    9877           0 :      SgExpression* expression_copy; 
    9878             :   // case: not a listType for (using conditionalToCopyVariable)expression
    9879           0 :           if (get_expression() != NULL) 
    9880             :              { 
    9881           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
    9882             :              } 
    9883             :             else 
    9884             :              { 
    9885             :                expression_copy = NULL; 
    9886             :              } 
    9887             :   // Copy constructor parameter data member: templateDeclaration_copy
    9888           0 :      SgDeclarationStatement* templateDeclaration_copy; 
    9889             :   // case: not a listType for (using conditionalToCopyVariable)templateDeclaration
    9890           0 :           if (get_templateDeclaration() != NULL) 
    9891             :              { 
    9892           0 :                templateDeclaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_templateDeclaration())); 
    9893             :              } 
    9894             :             else 
    9895             :              { 
    9896             :                templateDeclaration_copy = NULL; 
    9897             :              } 
    9898             :   // Copy constructor parameter data member: explicitlySpecified_copy
    9899             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicitlySpecified
    9900             :   // case: toBeCopied == COPY_DATA for explicitlySpecified
    9901           0 :      bool explicitlySpecified_copy = p_explicitlySpecified; 
    9902             :  
    9903             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9904             : 
    9905             :   // Build an empty copy of this object (will be filled in, but 
    9906             :   // the parent can't be set and must be set by the caller)
    9907           0 :      result = new SgTemplateArgument(  argumentType_copy, isArrayBoundUnknownType_copy, type_copy, expression_copy, templateDeclaration_copy, explicitlySpecified_copy );
    9908           0 :      ROSE_ASSERT(result != NULL);
    9909             : 
    9910             :   // Copy data members of "this" class
    9911             :   // Copy non-constructor parameter data member (access function): unparsable_type_alias_copy
    9912             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparsable_type_alias
    9913             :   // case: toBeCopied == COPY_DATA for unparsable_type_alias
    9914           0 :      SgType* unparsable_type_alias_copy = p_unparsable_type_alias; 
    9915           0 :      result->p_unparsable_type_alias = unparsable_type_alias_copy; 
    9916             :   // Copy non-constructor parameter data member (access function): initializedName_copy
    9917           0 :      SgInitializedName* initializedName_copy; 
    9918             :   // case: not a listType for (using conditionalToCopyVariable)initializedName
    9919           0 :           if (get_initializedName() != NULL) 
    9920             :              { 
    9921           0 :                initializedName_copy = static_cast<SgInitializedName*>(help.copyAst(get_initializedName())); 
    9922             :              } 
    9923             :             else 
    9924             :              { 
    9925             :                initializedName_copy = NULL; 
    9926             :              } 
    9927             :   /* check for a valid pointer and delete if present */ 
    9928           0 :      if (result->p_initializedName != NULL) delete result->p_initializedName; 
    9929           0 :      result->p_initializedName = initializedName_copy; 
    9930             :   // case: not a listType for (using conditionalToSetParent)initializedName
    9931           0 :           if ( (initializedName_copy != NULL) && (initializedName_copy->get_parent() == NULL) && (isSgType(initializedName_copy) == NULL) ) 
    9932             :              { 
    9933           0 :                initializedName_copy->set_parent(result); 
    9934             :              } 
    9935             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
    9936             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
    9937             :   // case: toBeCopied == COPY_DATA for name_qualification_length
    9938           0 :      int name_qualification_length_copy = p_name_qualification_length; 
    9939           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
    9940             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
    9941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
    9942             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
    9943           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
    9944           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
    9945             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
    9946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
    9947             :   // case: toBeCopied == COPY_DATA for global_qualification_required
    9948           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
    9949           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
    9950             :   // Copy non-constructor parameter data member (no access function): result->p_requiresGlobalNameQualificationOnType
    9951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresGlobalNameQualificationOnType
    9952             :   // case: toBeCopied == COPY_DATA for requiresGlobalNameQualificationOnType
    9953           0 :      bool requiresGlobalNameQualificationOnType_copy = p_requiresGlobalNameQualificationOnType; 
    9954           0 :      result->p_requiresGlobalNameQualificationOnType = requiresGlobalNameQualificationOnType_copy; 
    9955             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_type
    9956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_type
    9957             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_type
    9958           0 :      int name_qualification_length_for_type_copy = p_name_qualification_length_for_type; 
    9959           0 :      result->p_name_qualification_length_for_type = name_qualification_length_for_type_copy; 
    9960             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_type
    9961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_type
    9962             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_type
    9963           0 :      bool type_elaboration_required_for_type_copy = p_type_elaboration_required_for_type; 
    9964           0 :      result->p_type_elaboration_required_for_type = type_elaboration_required_for_type_copy; 
    9965             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_type
    9966             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_type
    9967             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_type
    9968           0 :      bool global_qualification_required_for_type_copy = p_global_qualification_required_for_type; 
    9969           0 :      result->p_global_qualification_required_for_type = global_qualification_required_for_type_copy; 
    9970             :   // Copy non-constructor parameter data member (access function): previous_instance_copy
    9971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for previous_instance
    9972             :   // case: toBeCopied == COPY_DATA for previous_instance
    9973           0 :      SgTemplateArgument* previous_instance_copy = p_previous_instance; 
    9974           0 :      result->p_previous_instance = previous_instance_copy; 
    9975             :   // Copy non-constructor parameter data member (access function): next_instance_copy
    9976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for next_instance
    9977             :   // case: toBeCopied == COPY_DATA for next_instance
    9978           0 :      SgTemplateArgument* next_instance_copy = p_next_instance; 
    9979           0 :      result->p_next_instance = next_instance_copy; 
    9980             :   // Copy non-constructor parameter data member (access function): is_pack_element_copy
    9981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_pack_element
    9982             :   // case: toBeCopied == COPY_DATA for is_pack_element
    9983           0 :      bool is_pack_element_copy = p_is_pack_element; 
    9984           0 :      result->p_is_pack_element = is_pack_element_copy; 
    9985             :   // case: not a listType for (using conditionalToSetParent)expression
    9986           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
    9987             :              { 
    9988           0 :                expression_copy->set_parent(result); 
    9989             :              } 
    9990             :   // case: not a listType for (using conditionalToSetParent)templateDeclaration
    9991           0 :           if ( (templateDeclaration_copy != NULL) && (templateDeclaration_copy->get_parent() == NULL) && (isSgType(templateDeclaration_copy) == NULL) ) 
    9992             :              { 
    9993           0 :                templateDeclaration_copy->set_parent(result); 
    9994             :              } 
    9995             : 
    9996             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
    9997             : 
    9998             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
    9999             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   10000             :   // fixupCopy(result,help);
   10001             : 
   10002             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   10003             :   // the Sg_File_Info objects that are built for the new IR nodes.
   10004           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   10005           0 :      if (locatedNode != NULL)
   10006             :         {
   10007             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10008           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   10009           0 :           ROSE_ASSERT(start != NULL);
   10010             : #if 0
   10011             :        // Debugging information
   10012             :           if (start->get_parent() == NULL)
   10013             :              {
   10014             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10015             :              }
   10016             : #endif
   10017           0 :           start->set_parent(locatedNode);
   10018           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10019             : 
   10020           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   10021             : 
   10022             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   10023             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   10024             :        // ROSE_ASSERT(end != NULL);
   10025           0 :           if (end == NULL)
   10026             :              {
   10027           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   10028             :              }
   10029             :             else
   10030             :              {
   10031             : #if 0
   10032             :             // Debugging information
   10033             :                if (end->get_parent() == NULL)
   10034             :                   {
   10035             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10036             :                   }
   10037             : #endif
   10038           0 :                end->set_parent(locatedNode);
   10039           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   10040             :              }
   10041             : 
   10042           0 :           SgExpression* expression = isSgExpression(result);
   10043           0 :           if (isSgExpression(this) != NULL)
   10044             :              {
   10045           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   10046             : 
   10047             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   10048           0 :                if (operatorPosition != NULL)
   10049             :                   {
   10050             : #if 0
   10051             :                  // Debugging information
   10052             :                     if (operatorPosition->get_parent() == NULL)
   10053             :                        {
   10054             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10055             :                        }
   10056             : #endif
   10057           0 :                     operatorPosition->set_parent(expression);
   10058           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   10059             :                   }
   10060             :              }
   10061             :         }
   10062             : 
   10063             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   10064           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   10065           0 :      if (initializedName != NULL)
   10066             :         {
   10067             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10068           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   10069           0 :           ROSE_ASSERT(start != NULL);
   10070             : #if 0
   10071             :        // Debugging information
   10072             :           if (start->get_parent() == NULL)
   10073             :              {
   10074             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10075             :              }
   10076             : #endif
   10077           0 :           start->set_parent(initializedName);
   10078           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10079             : 
   10080             : #if 0
   10081             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   10082             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   10083             : 
   10084             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   10085             :        // ROSE_ASSERT(end != NULL);
   10086             :           if (end == NULL)
   10087             :              {
   10088             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   10089             :              }
   10090             :             else
   10091             :              {
   10092             :                if (end->get_parent() == NULL)
   10093             :                   {
   10094             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10095             :                   }
   10096             :                end->set_parent(initializedName);
   10097             :                ROSE_ASSERT(end->get_parent() != NULL);
   10098             :              }
   10099             : #endif
   10100             :         }
   10101             : 
   10102             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   10103           0 :      help.insertCopiedNodePair(this,result);
   10104             : 
   10105             :   // printf ("End of copy SgTemplateArgument = %p = %s \n",this,SageInterface::get_name(this).c_str());
   10106             : 
   10107             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   10108             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   10109           0 :      help.decrementDepth();
   10110             : 
   10111             :   // Test if this is the root of the copy!
   10112           0 :      if (help.get_depth() == 0)
   10113             :         {
   10114             :        // This is the original calling node.
   10115             : 
   10116             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   10117             :        // printf ("Calling SgTemplateArgument::fixupCopy() (from root of AST being copied) \n");
   10118             : #if ALT_FIXUP_COPY
   10119             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   10120           0 :           fixupCopy_scopes (result,help);
   10121           0 :           fixupCopy_symbols (result,help);
   10122           0 :           fixupCopy_references (result,help);
   10123             : #else
   10124             :           fixupCopy(result,help);
   10125             : #endif
   10126             :        // Allow this to be called recursively, so accumulate the state.
   10127             :        // Also, clear the state in the SgCopyHelp object.
   10128             :        // help.clearState();
   10129             :         }
   10130             : 
   10131           0 :      return result;
   10132             :    }
   10133             : 
   10134             : 
   10135             : /* #line 10136 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   10136             : 
   10137             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   10138             : 
   10139           0 : SgNode* SgDirectory::copy ( SgCopyHelp& help) const
   10140             :    {
   10141           0 :      SgDirectory* result = NULL;
   10142             : 
   10143             :   // printf ("Copy SgDirectory = %p = %s \n",this,SageInterface::get_name(this).c_str());
   10144             : 
   10145             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   10146             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   10147             :   // The default value of the depth is 0, so after this call the depth is 1!
   10148           0 :      help.incrementDepth();
   10149             : 
   10150             : #if 0
   10151             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   10152             :   // but it is not generally true that things can only be copied once!
   10153             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   10154             :   // AstAttribute* existingAttribute = const_cast<SgDirectory*>(this)->attribute["copied"];
   10155             :      bool previouslyCopied = const_cast<SgDirectory*>(this)->attribute.exists("copied");
   10156             :      if (previouslyCopied == true)
   10157             :         {
   10158             :           this->get_file_info()->display("Called from copy SgDirectory: debug");
   10159             :         }
   10160             :      ROSE_ASSERT(previouslyCopied == false);
   10161             : 
   10162             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   10163             :      AstAttribute* newAttribute = new AstAttribute();
   10164             :      ROSE_ASSERT(newAttribute != NULL);
   10165             : 
   10166             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   10167             :      const_cast<SgDirectory*>(this)->attribute.add("copied",newAttribute);
   10168             : #endif
   10169             : 
   10170             :   // Copy data members from base classes
   10171             :   // Copy constructor parameter data member: name_copy
   10172             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   10173             :   // case: toBeCopied == COPY_DATA for name
   10174           0 :      std::string name_copy = p_name; 
   10175             :  
   10176             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   10177             : 
   10178             :   // Build an empty copy of this object (will be filled in, but 
   10179             :   // the parent can't be set and must be set by the caller)
   10180           0 :      result = new SgDirectory(  name_copy );
   10181           0 :      ROSE_ASSERT(result != NULL);
   10182             : 
   10183             :   // Copy data members of "this" class
   10184             :   // Copy non-constructor parameter data member (access function): fileList_copy
   10185           0 :      SgFileList* fileList_copy; 
   10186             :   // case: not a listType for (using conditionalToCopyVariable)fileList
   10187           0 :           if (get_fileList() != NULL) 
   10188             :              { 
   10189           0 :                fileList_copy = static_cast<SgFileList*>(help.copyAst(get_fileList())); 
   10190             :              } 
   10191             :             else 
   10192             :              { 
   10193             :                fileList_copy = NULL; 
   10194             :              } 
   10195             :   /* check for a valid pointer and delete if present */ 
   10196           0 :      if (result->p_fileList != NULL) delete result->p_fileList; 
   10197           0 :      result->p_fileList = fileList_copy; 
   10198             :   // case: not a listType for (using conditionalToSetParent)fileList
   10199           0 :           if ( (fileList_copy != NULL) && (fileList_copy->get_parent() == NULL) && (isSgType(fileList_copy) == NULL) ) 
   10200             :              { 
   10201           0 :                fileList_copy->set_parent(result); 
   10202             :              } 
   10203             :   // Copy non-constructor parameter data member (access function): directoryList_copy
   10204           0 :      SgDirectoryList* directoryList_copy; 
   10205             :   // case: not a listType for (using conditionalToCopyVariable)directoryList
   10206           0 :           if (get_directoryList() != NULL) 
   10207             :              { 
   10208           0 :                directoryList_copy = static_cast<SgDirectoryList*>(help.copyAst(get_directoryList())); 
   10209             :              } 
   10210             :             else 
   10211             :              { 
   10212             :                directoryList_copy = NULL; 
   10213             :              } 
   10214             :   /* check for a valid pointer and delete if present */ 
   10215           0 :      if (result->p_directoryList != NULL) delete result->p_directoryList; 
   10216           0 :      result->p_directoryList = directoryList_copy; 
   10217             :   // case: not a listType for (using conditionalToSetParent)directoryList
   10218           0 :           if ( (directoryList_copy != NULL) && (directoryList_copy->get_parent() == NULL) && (isSgType(directoryList_copy) == NULL) ) 
   10219             :              { 
   10220           0 :                directoryList_copy->set_parent(result); 
   10221             :              } 
   10222             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   10223             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   10224             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   10225           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   10226           0 :      if ( p_attributeMechanism != NULL ) 
   10227             :         { 
   10228           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   10229             :         } 
   10230             :        else 
   10231             :         { 
   10232             :           attributeMechanism_copy = NULL; 
   10233             :         } 
   10234             :   /* check for a valid pointer and delete if present */ 
   10235           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   10236             :   /* add assignment to result here */ 
   10237           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   10238             : 
   10239             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   10240             : 
   10241             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   10242             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   10243             :   // fixupCopy(result,help);
   10244             : 
   10245             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   10246             :   // the Sg_File_Info objects that are built for the new IR nodes.
   10247           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   10248           0 :      if (locatedNode != NULL)
   10249             :         {
   10250             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10251           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   10252           0 :           ROSE_ASSERT(start != NULL);
   10253             : #if 0
   10254             :        // Debugging information
   10255             :           if (start->get_parent() == NULL)
   10256             :              {
   10257             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10258             :              }
   10259             : #endif
   10260           0 :           start->set_parent(locatedNode);
   10261           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10262             : 
   10263           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   10264             : 
   10265             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   10266             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   10267             :        // ROSE_ASSERT(end != NULL);
   10268           0 :           if (end == NULL)
   10269             :              {
   10270           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   10271             :              }
   10272             :             else
   10273             :              {
   10274             : #if 0
   10275             :             // Debugging information
   10276             :                if (end->get_parent() == NULL)
   10277             :                   {
   10278             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10279             :                   }
   10280             : #endif
   10281           0 :                end->set_parent(locatedNode);
   10282           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   10283             :              }
   10284             : 
   10285           0 :           SgExpression* expression = isSgExpression(result);
   10286           0 :           if (isSgExpression(this) != NULL)
   10287             :              {
   10288           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   10289             : 
   10290             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   10291           0 :                if (operatorPosition != NULL)
   10292             :                   {
   10293             : #if 0
   10294             :                  // Debugging information
   10295             :                     if (operatorPosition->get_parent() == NULL)
   10296             :                        {
   10297             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10298             :                        }
   10299             : #endif
   10300           0 :                     operatorPosition->set_parent(expression);
   10301           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   10302             :                   }
   10303             :              }
   10304             :         }
   10305             : 
   10306             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   10307           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   10308           0 :      if (initializedName != NULL)
   10309             :         {
   10310             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10311           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   10312           0 :           ROSE_ASSERT(start != NULL);
   10313             : #if 0
   10314             :        // Debugging information
   10315             :           if (start->get_parent() == NULL)
   10316             :              {
   10317             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10318             :              }
   10319             : #endif
   10320           0 :           start->set_parent(initializedName);
   10321           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10322             : 
   10323             : #if 0
   10324             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   10325             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   10326             : 
   10327             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   10328             :        // ROSE_ASSERT(end != NULL);
   10329             :           if (end == NULL)
   10330             :              {
   10331             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   10332             :              }
   10333             :             else
   10334             :              {
   10335             :                if (end->get_parent() == NULL)
   10336             :                   {
   10337             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10338             :                   }
   10339             :                end->set_parent(initializedName);
   10340             :                ROSE_ASSERT(end->get_parent() != NULL);
   10341             :              }
   10342             : #endif
   10343             :         }
   10344             : 
   10345             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   10346           0 :      help.insertCopiedNodePair(this,result);
   10347             : 
   10348             :   // printf ("End of copy SgDirectory = %p = %s \n",this,SageInterface::get_name(this).c_str());
   10349             : 
   10350             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   10351             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   10352           0 :      help.decrementDepth();
   10353             : 
   10354             :   // Test if this is the root of the copy!
   10355           0 :      if (help.get_depth() == 0)
   10356             :         {
   10357             :        // This is the original calling node.
   10358             : 
   10359             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   10360             :        // printf ("Calling SgDirectory::fixupCopy() (from root of AST being copied) \n");
   10361             : #if ALT_FIXUP_COPY
   10362             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   10363           0 :           fixupCopy_scopes (result,help);
   10364           0 :           fixupCopy_symbols (result,help);
   10365           0 :           fixupCopy_references (result,help);
   10366             : #else
   10367             :           fixupCopy(result,help);
   10368             : #endif
   10369             :        // Allow this to be called recursively, so accumulate the state.
   10370             :        // Also, clear the state in the SgCopyHelp object.
   10371             :        // help.clearState();
   10372             :         }
   10373             : 
   10374           0 :      return result;
   10375             :    }
   10376             : 
   10377             : 
   10378             : /* #line 10379 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   10379             : 
   10380             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   10381             : 
   10382           0 : SgNode* SgFileList::copy ( SgCopyHelp& help) const
   10383             :    {
   10384           0 :      SgFileList* result = NULL;
   10385             : 
   10386             :   // printf ("Copy SgFileList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   10387             : 
   10388             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   10389             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   10390             :   // The default value of the depth is 0, so after this call the depth is 1!
   10391           0 :      help.incrementDepth();
   10392             : 
   10393             : #if 0
   10394             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   10395             :   // but it is not generally true that things can only be copied once!
   10396             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   10397             :   // AstAttribute* existingAttribute = const_cast<SgFileList*>(this)->attribute["copied"];
   10398             :      bool previouslyCopied = const_cast<SgFileList*>(this)->attribute.exists("copied");
   10399             :      if (previouslyCopied == true)
   10400             :         {
   10401             :           this->get_file_info()->display("Called from copy SgFileList: debug");
   10402             :         }
   10403             :      ROSE_ASSERT(previouslyCopied == false);
   10404             : 
   10405             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   10406             :      AstAttribute* newAttribute = new AstAttribute();
   10407             :      ROSE_ASSERT(newAttribute != NULL);
   10408             : 
   10409             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   10410             :      const_cast<SgFileList*>(this)->attribute.add("copied",newAttribute);
   10411             : #endif
   10412             : 
   10413             :   // Copy data members from base classes
   10414             :  
   10415             : 
   10416             :   // Build an empty copy of this object (will be filled in, but 
   10417             :   // the parent can't be set and must be set by the caller)
   10418           0 :      result = new SgFileList(  );
   10419           0 :      ROSE_ASSERT(result != NULL);
   10420             : 
   10421             :   // Copy data members of "this" class
   10422             :   // Copy non-constructor parameter data member (list access function): result->get_listOfFiles()
   10423           0 :      SgFilePtrList listOfFiles_copy; 
   10424             :   // case: listType for listOfFiles
   10425             :   // case: listType (typeIsPointerToList == false) for listOfFiles
   10426           0 :      SgFilePtrList::const_iterator source_listOfFiles_iterator = get_listOfFiles().begin(); 
   10427           0 :      for ( /* empty by design */; source_listOfFiles_iterator != get_listOfFiles().end(); ++source_listOfFiles_iterator) 
   10428             :         { 
   10429           0 :           SgFile* source_list_element = *source_listOfFiles_iterator; 
   10430           0 :           SgFile* copy_list_element = NULL; 
   10431           0 :           if (source_list_element != NULL) 
   10432             :              { 
   10433           0 :                copy_list_element = static_cast<SgFile*>(help.copyAst(*source_listOfFiles_iterator)); 
   10434             :              } 
   10435             :             else 
   10436             :              { 
   10437             :                copy_list_element = NULL; 
   10438             :              } 
   10439           0 :           listOfFiles_copy.push_back(copy_list_element); 
   10440             :         } 
   10441           0 :      result->p_listOfFiles = listOfFiles_copy; 
   10442             :   // case: listType for listOfFiles
   10443             :   // case: listType (typeIsPointerToList == false) for listOfFiles
   10444           0 :      SgFilePtrList::const_iterator listOfFiles_iterator = result->get_listOfFiles().begin(); 
   10445           0 :      for ( /* empty by design */; listOfFiles_iterator != result->get_listOfFiles().end(); ++listOfFiles_iterator) 
   10446             :         { 
   10447           0 :           SgFile* list_element = *listOfFiles_iterator; 
   10448           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   10449             :              { 
   10450           0 :                list_element->set_parent(result); 
   10451             :              } 
   10452             :         } 
   10453             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   10454             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   10455             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   10456           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   10457           0 :      if ( p_attributeMechanism != NULL ) 
   10458             :         { 
   10459           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   10460             :         } 
   10461             :        else 
   10462             :         { 
   10463             :           attributeMechanism_copy = NULL; 
   10464             :         } 
   10465             :   /* check for a valid pointer and delete if present */ 
   10466           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   10467             :   /* add assignment to result here */ 
   10468           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   10469             : 
   10470             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   10471             : 
   10472             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   10473             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   10474             :   // fixupCopy(result,help);
   10475             : 
   10476             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   10477             :   // the Sg_File_Info objects that are built for the new IR nodes.
   10478           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   10479           0 :      if (locatedNode != NULL)
   10480             :         {
   10481             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10482           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   10483           0 :           ROSE_ASSERT(start != NULL);
   10484             : #if 0
   10485             :        // Debugging information
   10486             :           if (start->get_parent() == NULL)
   10487             :              {
   10488             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10489             :              }
   10490             : #endif
   10491           0 :           start->set_parent(locatedNode);
   10492           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10493             : 
   10494           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   10495             : 
   10496             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   10497             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   10498             :        // ROSE_ASSERT(end != NULL);
   10499           0 :           if (end == NULL)
   10500             :              {
   10501           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   10502             :              }
   10503             :             else
   10504             :              {
   10505             : #if 0
   10506             :             // Debugging information
   10507             :                if (end->get_parent() == NULL)
   10508             :                   {
   10509             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10510             :                   }
   10511             : #endif
   10512           0 :                end->set_parent(locatedNode);
   10513           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   10514             :              }
   10515             : 
   10516           0 :           SgExpression* expression = isSgExpression(result);
   10517           0 :           if (isSgExpression(this) != NULL)
   10518             :              {
   10519           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   10520             : 
   10521             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   10522           0 :                if (operatorPosition != NULL)
   10523             :                   {
   10524             : #if 0
   10525             :                  // Debugging information
   10526             :                     if (operatorPosition->get_parent() == NULL)
   10527             :                        {
   10528             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10529             :                        }
   10530             : #endif
   10531           0 :                     operatorPosition->set_parent(expression);
   10532           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   10533             :                   }
   10534             :              }
   10535             :         }
   10536             : 
   10537             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   10538           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   10539           0 :      if (initializedName != NULL)
   10540             :         {
   10541             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10542           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   10543           0 :           ROSE_ASSERT(start != NULL);
   10544             : #if 0
   10545             :        // Debugging information
   10546             :           if (start->get_parent() == NULL)
   10547             :              {
   10548             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10549             :              }
   10550             : #endif
   10551           0 :           start->set_parent(initializedName);
   10552           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10553             : 
   10554             : #if 0
   10555             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   10556             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   10557             : 
   10558             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   10559             :        // ROSE_ASSERT(end != NULL);
   10560             :           if (end == NULL)
   10561             :              {
   10562             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   10563             :              }
   10564             :             else
   10565             :              {
   10566             :                if (end->get_parent() == NULL)
   10567             :                   {
   10568             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10569             :                   }
   10570             :                end->set_parent(initializedName);
   10571             :                ROSE_ASSERT(end->get_parent() != NULL);
   10572             :              }
   10573             : #endif
   10574             :         }
   10575             : 
   10576             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   10577           0 :      help.insertCopiedNodePair(this,result);
   10578             : 
   10579             :   // printf ("End of copy SgFileList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   10580             : 
   10581             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   10582             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   10583           0 :      help.decrementDepth();
   10584             : 
   10585             :   // Test if this is the root of the copy!
   10586           0 :      if (help.get_depth() == 0)
   10587             :         {
   10588             :        // This is the original calling node.
   10589             : 
   10590             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   10591             :        // printf ("Calling SgFileList::fixupCopy() (from root of AST being copied) \n");
   10592             : #if ALT_FIXUP_COPY
   10593             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   10594           0 :           fixupCopy_scopes (result,help);
   10595           0 :           fixupCopy_symbols (result,help);
   10596           0 :           fixupCopy_references (result,help);
   10597             : #else
   10598             :           fixupCopy(result,help);
   10599             : #endif
   10600             :        // Allow this to be called recursively, so accumulate the state.
   10601             :        // Also, clear the state in the SgCopyHelp object.
   10602             :        // help.clearState();
   10603             :         }
   10604             : 
   10605           0 :      return result;
   10606             :    }
   10607             : 
   10608             : 
   10609             : /* #line 10610 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   10610             : 
   10611             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   10612             : 
   10613           0 : SgNode* SgDirectoryList::copy ( SgCopyHelp& help) const
   10614             :    {
   10615           0 :      SgDirectoryList* result = NULL;
   10616             : 
   10617             :   // printf ("Copy SgDirectoryList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   10618             : 
   10619             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   10620             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   10621             :   // The default value of the depth is 0, so after this call the depth is 1!
   10622           0 :      help.incrementDepth();
   10623             : 
   10624             : #if 0
   10625             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   10626             :   // but it is not generally true that things can only be copied once!
   10627             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   10628             :   // AstAttribute* existingAttribute = const_cast<SgDirectoryList*>(this)->attribute["copied"];
   10629             :      bool previouslyCopied = const_cast<SgDirectoryList*>(this)->attribute.exists("copied");
   10630             :      if (previouslyCopied == true)
   10631             :         {
   10632             :           this->get_file_info()->display("Called from copy SgDirectoryList: debug");
   10633             :         }
   10634             :      ROSE_ASSERT(previouslyCopied == false);
   10635             : 
   10636             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   10637             :      AstAttribute* newAttribute = new AstAttribute();
   10638             :      ROSE_ASSERT(newAttribute != NULL);
   10639             : 
   10640             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   10641             :      const_cast<SgDirectoryList*>(this)->attribute.add("copied",newAttribute);
   10642             : #endif
   10643             : 
   10644             :   // Copy data members from base classes
   10645             :  
   10646             : 
   10647             :   // Build an empty copy of this object (will be filled in, but 
   10648             :   // the parent can't be set and must be set by the caller)
   10649           0 :      result = new SgDirectoryList(  );
   10650           0 :      ROSE_ASSERT(result != NULL);
   10651             : 
   10652             :   // Copy data members of "this" class
   10653             :   // Copy non-constructor parameter data member (list access function): result->get_listOfDirectories()
   10654           0 :      SgDirectoryPtrList listOfDirectories_copy; 
   10655             :   // case: listType for listOfDirectories
   10656             :   // case: listType (typeIsPointerToList == false) for listOfDirectories
   10657           0 :      SgDirectoryPtrList::const_iterator source_listOfDirectories_iterator = get_listOfDirectories().begin(); 
   10658           0 :      for ( /* empty by design */; source_listOfDirectories_iterator != get_listOfDirectories().end(); ++source_listOfDirectories_iterator) 
   10659             :         { 
   10660           0 :           SgDirectory* source_list_element = *source_listOfDirectories_iterator; 
   10661           0 :           SgDirectory* copy_list_element = NULL; 
   10662           0 :           if (source_list_element != NULL) 
   10663             :              { 
   10664           0 :                copy_list_element = static_cast<SgDirectory*>(help.copyAst(*source_listOfDirectories_iterator)); 
   10665             :              } 
   10666             :             else 
   10667             :              { 
   10668             :                copy_list_element = NULL; 
   10669             :              } 
   10670           0 :           listOfDirectories_copy.push_back(copy_list_element); 
   10671             :         } 
   10672           0 :      result->p_listOfDirectories = listOfDirectories_copy; 
   10673             :   // case: listType for listOfDirectories
   10674             :   // case: listType (typeIsPointerToList == false) for listOfDirectories
   10675           0 :      SgDirectoryPtrList::const_iterator listOfDirectories_iterator = result->get_listOfDirectories().begin(); 
   10676           0 :      for ( /* empty by design */; listOfDirectories_iterator != result->get_listOfDirectories().end(); ++listOfDirectories_iterator) 
   10677             :         { 
   10678           0 :           SgDirectory* list_element = *listOfDirectories_iterator; 
   10679           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   10680             :              { 
   10681           0 :                list_element->set_parent(result); 
   10682             :              } 
   10683             :         } 
   10684             : 
   10685             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   10686             : 
   10687             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   10688             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   10689             :   // fixupCopy(result,help);
   10690             : 
   10691             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   10692             :   // the Sg_File_Info objects that are built for the new IR nodes.
   10693           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   10694           0 :      if (locatedNode != NULL)
   10695             :         {
   10696             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10697           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   10698           0 :           ROSE_ASSERT(start != NULL);
   10699             : #if 0
   10700             :        // Debugging information
   10701             :           if (start->get_parent() == NULL)
   10702             :              {
   10703             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10704             :              }
   10705             : #endif
   10706           0 :           start->set_parent(locatedNode);
   10707           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10708             : 
   10709           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   10710             : 
   10711             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   10712             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   10713             :        // ROSE_ASSERT(end != NULL);
   10714           0 :           if (end == NULL)
   10715             :              {
   10716           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   10717             :              }
   10718             :             else
   10719             :              {
   10720             : #if 0
   10721             :             // Debugging information
   10722             :                if (end->get_parent() == NULL)
   10723             :                   {
   10724             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10725             :                   }
   10726             : #endif
   10727           0 :                end->set_parent(locatedNode);
   10728           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   10729             :              }
   10730             : 
   10731           0 :           SgExpression* expression = isSgExpression(result);
   10732           0 :           if (isSgExpression(this) != NULL)
   10733             :              {
   10734           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   10735             : 
   10736             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   10737           0 :                if (operatorPosition != NULL)
   10738             :                   {
   10739             : #if 0
   10740             :                  // Debugging information
   10741             :                     if (operatorPosition->get_parent() == NULL)
   10742             :                        {
   10743             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10744             :                        }
   10745             : #endif
   10746           0 :                     operatorPosition->set_parent(expression);
   10747           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   10748             :                   }
   10749             :              }
   10750             :         }
   10751             : 
   10752             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   10753           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   10754           0 :      if (initializedName != NULL)
   10755             :         {
   10756             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10757           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   10758           0 :           ROSE_ASSERT(start != NULL);
   10759             : #if 0
   10760             :        // Debugging information
   10761             :           if (start->get_parent() == NULL)
   10762             :              {
   10763             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10764             :              }
   10765             : #endif
   10766           0 :           start->set_parent(initializedName);
   10767           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10768             : 
   10769             : #if 0
   10770             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   10771             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   10772             : 
   10773             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   10774             :        // ROSE_ASSERT(end != NULL);
   10775             :           if (end == NULL)
   10776             :              {
   10777             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   10778             :              }
   10779             :             else
   10780             :              {
   10781             :                if (end->get_parent() == NULL)
   10782             :                   {
   10783             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10784             :                   }
   10785             :                end->set_parent(initializedName);
   10786             :                ROSE_ASSERT(end->get_parent() != NULL);
   10787             :              }
   10788             : #endif
   10789             :         }
   10790             : 
   10791             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   10792           0 :      help.insertCopiedNodePair(this,result);
   10793             : 
   10794             :   // printf ("End of copy SgDirectoryList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   10795             : 
   10796             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   10797             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   10798           0 :      help.decrementDepth();
   10799             : 
   10800             :   // Test if this is the root of the copy!
   10801           0 :      if (help.get_depth() == 0)
   10802             :         {
   10803             :        // This is the original calling node.
   10804             : 
   10805             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   10806             :        // printf ("Calling SgDirectoryList::fixupCopy() (from root of AST being copied) \n");
   10807             : #if ALT_FIXUP_COPY
   10808             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   10809           0 :           fixupCopy_scopes (result,help);
   10810           0 :           fixupCopy_symbols (result,help);
   10811           0 :           fixupCopy_references (result,help);
   10812             : #else
   10813             :           fixupCopy(result,help);
   10814             : #endif
   10815             :        // Allow this to be called recursively, so accumulate the state.
   10816             :        // Also, clear the state in the SgCopyHelp object.
   10817             :        // help.clearState();
   10818             :         }
   10819             : 
   10820           0 :      return result;
   10821             :    }
   10822             : 
   10823             : 
   10824             : /* #line 10825 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   10825             : 
   10826             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   10827             : 
   10828           0 : SgNode* SgFunctionParameterTypeList::copy ( SgCopyHelp& help) const
   10829             :    {
   10830           0 :      SgFunctionParameterTypeList* result = NULL;
   10831             : 
   10832             :   // printf ("Copy SgFunctionParameterTypeList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   10833             : 
   10834             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   10835             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   10836             :   // The default value of the depth is 0, so after this call the depth is 1!
   10837           0 :      help.incrementDepth();
   10838             : 
   10839             : #if 0
   10840             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   10841             :   // but it is not generally true that things can only be copied once!
   10842             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   10843             :   // AstAttribute* existingAttribute = const_cast<SgFunctionParameterTypeList*>(this)->attribute["copied"];
   10844             :      bool previouslyCopied = const_cast<SgFunctionParameterTypeList*>(this)->attribute.exists("copied");
   10845             :      if (previouslyCopied == true)
   10846             :         {
   10847             :           this->get_file_info()->display("Called from copy SgFunctionParameterTypeList: debug");
   10848             :         }
   10849             :      ROSE_ASSERT(previouslyCopied == false);
   10850             : 
   10851             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   10852             :      AstAttribute* newAttribute = new AstAttribute();
   10853             :      ROSE_ASSERT(newAttribute != NULL);
   10854             : 
   10855             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   10856             :      const_cast<SgFunctionParameterTypeList*>(this)->attribute.add("copied",newAttribute);
   10857             : #endif
   10858             : 
   10859             :   // Copy data members from base classes
   10860             :  
   10861             : 
   10862             :   // Build an empty copy of this object (will be filled in, but 
   10863             :   // the parent can't be set and must be set by the caller)
   10864           0 :      result = new SgFunctionParameterTypeList(  );
   10865           0 :      ROSE_ASSERT(result != NULL);
   10866             : 
   10867             :   // Copy data members of "this" class
   10868             :   // Copy non-constructor parameter data member (no access function): result->p_arguments
   10869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for arguments
   10870             :   // case: toBeCopied == COPY_DATA for arguments
   10871           0 :      SgTypePtrList arguments_copy = p_arguments; 
   10872           0 :      result->p_arguments = arguments_copy; 
   10873             : 
   10874             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   10875             : 
   10876             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   10877             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   10878             :   // fixupCopy(result,help);
   10879             : 
   10880             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   10881             :   // the Sg_File_Info objects that are built for the new IR nodes.
   10882           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   10883           0 :      if (locatedNode != NULL)
   10884             :         {
   10885             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10886           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   10887           0 :           ROSE_ASSERT(start != NULL);
   10888             : #if 0
   10889             :        // Debugging information
   10890             :           if (start->get_parent() == NULL)
   10891             :              {
   10892             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10893             :              }
   10894             : #endif
   10895           0 :           start->set_parent(locatedNode);
   10896           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10897             : 
   10898           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   10899             : 
   10900             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   10901             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   10902             :        // ROSE_ASSERT(end != NULL);
   10903           0 :           if (end == NULL)
   10904             :              {
   10905           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   10906             :              }
   10907             :             else
   10908             :              {
   10909             : #if 0
   10910             :             // Debugging information
   10911             :                if (end->get_parent() == NULL)
   10912             :                   {
   10913             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10914             :                   }
   10915             : #endif
   10916           0 :                end->set_parent(locatedNode);
   10917           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   10918             :              }
   10919             : 
   10920           0 :           SgExpression* expression = isSgExpression(result);
   10921           0 :           if (isSgExpression(this) != NULL)
   10922             :              {
   10923           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   10924             : 
   10925             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   10926           0 :                if (operatorPosition != NULL)
   10927             :                   {
   10928             : #if 0
   10929             :                  // Debugging information
   10930             :                     if (operatorPosition->get_parent() == NULL)
   10931             :                        {
   10932             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10933             :                        }
   10934             : #endif
   10935           0 :                     operatorPosition->set_parent(expression);
   10936           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   10937             :                   }
   10938             :              }
   10939             :         }
   10940             : 
   10941             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   10942           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   10943           0 :      if (initializedName != NULL)
   10944             :         {
   10945             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   10946           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   10947           0 :           ROSE_ASSERT(start != NULL);
   10948             : #if 0
   10949             :        // Debugging information
   10950             :           if (start->get_parent() == NULL)
   10951             :              {
   10952             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10953             :              }
   10954             : #endif
   10955           0 :           start->set_parent(initializedName);
   10956           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   10957             : 
   10958             : #if 0
   10959             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   10960             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   10961             : 
   10962             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   10963             :        // ROSE_ASSERT(end != NULL);
   10964             :           if (end == NULL)
   10965             :              {
   10966             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   10967             :              }
   10968             :             else
   10969             :              {
   10970             :                if (end->get_parent() == NULL)
   10971             :                   {
   10972             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   10973             :                   }
   10974             :                end->set_parent(initializedName);
   10975             :                ROSE_ASSERT(end->get_parent() != NULL);
   10976             :              }
   10977             : #endif
   10978             :         }
   10979             : 
   10980             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   10981           0 :      help.insertCopiedNodePair(this,result);
   10982             : 
   10983             :   // printf ("End of copy SgFunctionParameterTypeList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   10984             : 
   10985             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   10986             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   10987           0 :      help.decrementDepth();
   10988             : 
   10989             :   // Test if this is the root of the copy!
   10990           0 :      if (help.get_depth() == 0)
   10991             :         {
   10992             :        // This is the original calling node.
   10993             : 
   10994             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   10995             :        // printf ("Calling SgFunctionParameterTypeList::fixupCopy() (from root of AST being copied) \n");
   10996             : #if ALT_FIXUP_COPY
   10997             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   10998           0 :           fixupCopy_scopes (result,help);
   10999           0 :           fixupCopy_symbols (result,help);
   11000           0 :           fixupCopy_references (result,help);
   11001             : #else
   11002             :           fixupCopy(result,help);
   11003             : #endif
   11004             :        // Allow this to be called recursively, so accumulate the state.
   11005             :        // Also, clear the state in the SgCopyHelp object.
   11006             :        // help.clearState();
   11007             :         }
   11008             : 
   11009           0 :      return result;
   11010             :    }
   11011             : 
   11012             : 
   11013             : /* #line 11014 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   11014             : 
   11015             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11016             : 
   11017           0 : SgNode* SgQualifiedName::copy ( SgCopyHelp& help) const
   11018             :    {
   11019           0 :      SgQualifiedName* result = NULL;
   11020             : 
   11021             :   // printf ("Copy SgQualifiedName = %p = %s \n",this,SageInterface::get_name(this).c_str());
   11022             : 
   11023             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   11024             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   11025             :   // The default value of the depth is 0, so after this call the depth is 1!
   11026           0 :      help.incrementDepth();
   11027             : 
   11028             : #if 0
   11029             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   11030             :   // but it is not generally true that things can only be copied once!
   11031             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   11032             :   // AstAttribute* existingAttribute = const_cast<SgQualifiedName*>(this)->attribute["copied"];
   11033             :      bool previouslyCopied = const_cast<SgQualifiedName*>(this)->attribute.exists("copied");
   11034             :      if (previouslyCopied == true)
   11035             :         {
   11036             :           this->get_file_info()->display("Called from copy SgQualifiedName: debug");
   11037             :         }
   11038             :      ROSE_ASSERT(previouslyCopied == false);
   11039             : 
   11040             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   11041             :      AstAttribute* newAttribute = new AstAttribute();
   11042             :      ROSE_ASSERT(newAttribute != NULL);
   11043             : 
   11044             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   11045             :      const_cast<SgQualifiedName*>(this)->attribute.add("copied",newAttribute);
   11046             : #endif
   11047             : 
   11048             :   // Copy data members from base classes
   11049             :   // Copy constructor parameter data member: scope_copy
   11050             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   11051             :   // case: toBeCopied == COPY_DATA for scope
   11052           0 :      SgScopeStatement* scope_copy = p_scope; 
   11053             :  
   11054             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11055             : 
   11056             :   // Build an empty copy of this object (will be filled in, but 
   11057             :   // the parent can't be set and must be set by the caller)
   11058           0 :      result = new SgQualifiedName(  scope_copy );
   11059           0 :      ROSE_ASSERT(result != NULL);
   11060             : 
   11061             :   // Copy data members of "this" class
   11062             : 
   11063             : 
   11064             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   11065             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   11066             :   // fixupCopy(result,help);
   11067             : 
   11068             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   11069             :   // the Sg_File_Info objects that are built for the new IR nodes.
   11070           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   11071           0 :      if (locatedNode != NULL)
   11072             :         {
   11073             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   11074           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   11075           0 :           ROSE_ASSERT(start != NULL);
   11076             : #if 0
   11077             :        // Debugging information
   11078             :           if (start->get_parent() == NULL)
   11079             :              {
   11080             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11081             :              }
   11082             : #endif
   11083           0 :           start->set_parent(locatedNode);
   11084           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   11085             : 
   11086           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   11087             : 
   11088             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   11089             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   11090             :        // ROSE_ASSERT(end != NULL);
   11091           0 :           if (end == NULL)
   11092             :              {
   11093           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   11094             :              }
   11095             :             else
   11096             :              {
   11097             : #if 0
   11098             :             // Debugging information
   11099             :                if (end->get_parent() == NULL)
   11100             :                   {
   11101             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11102             :                   }
   11103             : #endif
   11104           0 :                end->set_parent(locatedNode);
   11105           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   11106             :              }
   11107             : 
   11108           0 :           SgExpression* expression = isSgExpression(result);
   11109           0 :           if (isSgExpression(this) != NULL)
   11110             :              {
   11111           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   11112             : 
   11113             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   11114           0 :                if (operatorPosition != NULL)
   11115             :                   {
   11116             : #if 0
   11117             :                  // Debugging information
   11118             :                     if (operatorPosition->get_parent() == NULL)
   11119             :                        {
   11120             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11121             :                        }
   11122             : #endif
   11123           0 :                     operatorPosition->set_parent(expression);
   11124           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   11125             :                   }
   11126             :              }
   11127             :         }
   11128             : 
   11129             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   11130           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   11131           0 :      if (initializedName != NULL)
   11132             :         {
   11133             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   11134           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   11135           0 :           ROSE_ASSERT(start != NULL);
   11136             : #if 0
   11137             :        // Debugging information
   11138             :           if (start->get_parent() == NULL)
   11139             :              {
   11140             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11141             :              }
   11142             : #endif
   11143           0 :           start->set_parent(initializedName);
   11144           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   11145             : 
   11146             : #if 0
   11147             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   11148             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   11149             : 
   11150             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   11151             :        // ROSE_ASSERT(end != NULL);
   11152             :           if (end == NULL)
   11153             :              {
   11154             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   11155             :              }
   11156             :             else
   11157             :              {
   11158             :                if (end->get_parent() == NULL)
   11159             :                   {
   11160             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11161             :                   }
   11162             :                end->set_parent(initializedName);
   11163             :                ROSE_ASSERT(end->get_parent() != NULL);
   11164             :              }
   11165             : #endif
   11166             :         }
   11167             : 
   11168             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   11169           0 :      help.insertCopiedNodePair(this,result);
   11170             : 
   11171             :   // printf ("End of copy SgQualifiedName = %p = %s \n",this,SageInterface::get_name(this).c_str());
   11172             : 
   11173             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   11174             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   11175           0 :      help.decrementDepth();
   11176             : 
   11177             :   // Test if this is the root of the copy!
   11178           0 :      if (help.get_depth() == 0)
   11179             :         {
   11180             :        // This is the original calling node.
   11181             : 
   11182             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   11183             :        // printf ("Calling SgQualifiedName::fixupCopy() (from root of AST being copied) \n");
   11184             : #if ALT_FIXUP_COPY
   11185             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   11186           0 :           fixupCopy_scopes (result,help);
   11187           0 :           fixupCopy_symbols (result,help);
   11188           0 :           fixupCopy_references (result,help);
   11189             : #else
   11190             :           fixupCopy(result,help);
   11191             : #endif
   11192             :        // Allow this to be called recursively, so accumulate the state.
   11193             :        // Also, clear the state in the SgCopyHelp object.
   11194             :        // help.clearState();
   11195             :         }
   11196             : 
   11197           0 :      return result;
   11198             :    }
   11199             : 
   11200             : 
   11201             : /* #line 11202 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   11202             : 
   11203             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11204             : 
   11205           0 : SgNode* SgTemplateArgumentList::copy ( SgCopyHelp& help) const
   11206             :    {
   11207           0 :      SgTemplateArgumentList* result = NULL;
   11208             : 
   11209             :   // printf ("Copy SgTemplateArgumentList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   11210             : 
   11211             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   11212             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   11213             :   // The default value of the depth is 0, so after this call the depth is 1!
   11214           0 :      help.incrementDepth();
   11215             : 
   11216             : #if 0
   11217             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   11218             :   // but it is not generally true that things can only be copied once!
   11219             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   11220             :   // AstAttribute* existingAttribute = const_cast<SgTemplateArgumentList*>(this)->attribute["copied"];
   11221             :      bool previouslyCopied = const_cast<SgTemplateArgumentList*>(this)->attribute.exists("copied");
   11222             :      if (previouslyCopied == true)
   11223             :         {
   11224             :           this->get_file_info()->display("Called from copy SgTemplateArgumentList: debug");
   11225             :         }
   11226             :      ROSE_ASSERT(previouslyCopied == false);
   11227             : 
   11228             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   11229             :      AstAttribute* newAttribute = new AstAttribute();
   11230             :      ROSE_ASSERT(newAttribute != NULL);
   11231             : 
   11232             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   11233             :      const_cast<SgTemplateArgumentList*>(this)->attribute.add("copied",newAttribute);
   11234             : #endif
   11235             : 
   11236             :   // Copy data members from base classes
   11237             :  
   11238             : 
   11239             :   // Build an empty copy of this object (will be filled in, but 
   11240             :   // the parent can't be set and must be set by the caller)
   11241           0 :      result = new SgTemplateArgumentList(  );
   11242           0 :      ROSE_ASSERT(result != NULL);
   11243             : 
   11244             :   // Copy data members of "this" class
   11245             :   // Copy non-constructor parameter data member (access function): args_copy
   11246           0 :      SgTemplateArgumentPtrList args_copy; 
   11247             :   // case: listType for args
   11248             :   // case: listType (typeIsPointerToList == false) for args
   11249           0 :      SgTemplateArgumentPtrList::const_iterator source_args_iterator = get_args().begin(); 
   11250           0 :      for ( /* empty by design */; source_args_iterator != get_args().end(); ++source_args_iterator) 
   11251             :         { 
   11252           0 :           SgTemplateArgument* source_list_element = *source_args_iterator; 
   11253           0 :           SgTemplateArgument* copy_list_element = NULL; 
   11254           0 :           if (source_list_element != NULL) 
   11255             :              { 
   11256           0 :                copy_list_element = static_cast<SgTemplateArgument*>(help.copyAst(*source_args_iterator)); 
   11257             :              } 
   11258             :             else 
   11259             :              { 
   11260             :                copy_list_element = NULL; 
   11261             :              } 
   11262           0 :           args_copy.push_back(copy_list_element); 
   11263             :         } 
   11264           0 :      result->p_args = args_copy; 
   11265             :   // case: listType for args
   11266             :   // case: listType (typeIsPointerToList == false) for args
   11267           0 :      SgTemplateArgumentPtrList::const_iterator args_iterator = result->get_args().begin(); 
   11268           0 :      for ( /* empty by design */; args_iterator != result->get_args().end(); ++args_iterator) 
   11269             :         { 
   11270           0 :           SgTemplateArgument* list_element = *args_iterator; 
   11271           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   11272             :              { 
   11273           0 :                list_element->set_parent(result); 
   11274             :              } 
   11275             :         } 
   11276             : 
   11277             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11278             : 
   11279             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   11280             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   11281             :   // fixupCopy(result,help);
   11282             : 
   11283             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   11284             :   // the Sg_File_Info objects that are built for the new IR nodes.
   11285           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   11286           0 :      if (locatedNode != NULL)
   11287             :         {
   11288             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   11289           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   11290           0 :           ROSE_ASSERT(start != NULL);
   11291             : #if 0
   11292             :        // Debugging information
   11293             :           if (start->get_parent() == NULL)
   11294             :              {
   11295             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11296             :              }
   11297             : #endif
   11298           0 :           start->set_parent(locatedNode);
   11299           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   11300             : 
   11301           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   11302             : 
   11303             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   11304             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   11305             :        // ROSE_ASSERT(end != NULL);
   11306           0 :           if (end == NULL)
   11307             :              {
   11308           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   11309             :              }
   11310             :             else
   11311             :              {
   11312             : #if 0
   11313             :             // Debugging information
   11314             :                if (end->get_parent() == NULL)
   11315             :                   {
   11316             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11317             :                   }
   11318             : #endif
   11319           0 :                end->set_parent(locatedNode);
   11320           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   11321             :              }
   11322             : 
   11323           0 :           SgExpression* expression = isSgExpression(result);
   11324           0 :           if (isSgExpression(this) != NULL)
   11325             :              {
   11326           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   11327             : 
   11328             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   11329           0 :                if (operatorPosition != NULL)
   11330             :                   {
   11331             : #if 0
   11332             :                  // Debugging information
   11333             :                     if (operatorPosition->get_parent() == NULL)
   11334             :                        {
   11335             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11336             :                        }
   11337             : #endif
   11338           0 :                     operatorPosition->set_parent(expression);
   11339           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   11340             :                   }
   11341             :              }
   11342             :         }
   11343             : 
   11344             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   11345           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   11346           0 :      if (initializedName != NULL)
   11347             :         {
   11348             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   11349           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   11350           0 :           ROSE_ASSERT(start != NULL);
   11351             : #if 0
   11352             :        // Debugging information
   11353             :           if (start->get_parent() == NULL)
   11354             :              {
   11355             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11356             :              }
   11357             : #endif
   11358           0 :           start->set_parent(initializedName);
   11359           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   11360             : 
   11361             : #if 0
   11362             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   11363             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   11364             : 
   11365             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   11366             :        // ROSE_ASSERT(end != NULL);
   11367             :           if (end == NULL)
   11368             :              {
   11369             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   11370             :              }
   11371             :             else
   11372             :              {
   11373             :                if (end->get_parent() == NULL)
   11374             :                   {
   11375             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11376             :                   }
   11377             :                end->set_parent(initializedName);
   11378             :                ROSE_ASSERT(end->get_parent() != NULL);
   11379             :              }
   11380             : #endif
   11381             :         }
   11382             : 
   11383             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   11384           0 :      help.insertCopiedNodePair(this,result);
   11385             : 
   11386             :   // printf ("End of copy SgTemplateArgumentList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   11387             : 
   11388             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   11389             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   11390           0 :      help.decrementDepth();
   11391             : 
   11392             :   // Test if this is the root of the copy!
   11393           0 :      if (help.get_depth() == 0)
   11394             :         {
   11395             :        // This is the original calling node.
   11396             : 
   11397             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   11398             :        // printf ("Calling SgTemplateArgumentList::fixupCopy() (from root of AST being copied) \n");
   11399             : #if ALT_FIXUP_COPY
   11400             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   11401           0 :           fixupCopy_scopes (result,help);
   11402           0 :           fixupCopy_symbols (result,help);
   11403           0 :           fixupCopy_references (result,help);
   11404             : #else
   11405             :           fixupCopy(result,help);
   11406             : #endif
   11407             :        // Allow this to be called recursively, so accumulate the state.
   11408             :        // Also, clear the state in the SgCopyHelp object.
   11409             :        // help.clearState();
   11410             :         }
   11411             : 
   11412           0 :      return result;
   11413             :    }
   11414             : 
   11415             : 
   11416             : /* #line 11417 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   11417             : 
   11418             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11419             : 
   11420           0 : SgNode* SgTemplateParameterList::copy ( SgCopyHelp& help) const
   11421             :    {
   11422           0 :      SgTemplateParameterList* result = NULL;
   11423             : 
   11424             :   // printf ("Copy SgTemplateParameterList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   11425             : 
   11426             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   11427             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   11428             :   // The default value of the depth is 0, so after this call the depth is 1!
   11429           0 :      help.incrementDepth();
   11430             : 
   11431             : #if 0
   11432             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   11433             :   // but it is not generally true that things can only be copied once!
   11434             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   11435             :   // AstAttribute* existingAttribute = const_cast<SgTemplateParameterList*>(this)->attribute["copied"];
   11436             :      bool previouslyCopied = const_cast<SgTemplateParameterList*>(this)->attribute.exists("copied");
   11437             :      if (previouslyCopied == true)
   11438             :         {
   11439             :           this->get_file_info()->display("Called from copy SgTemplateParameterList: debug");
   11440             :         }
   11441             :      ROSE_ASSERT(previouslyCopied == false);
   11442             : 
   11443             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   11444             :      AstAttribute* newAttribute = new AstAttribute();
   11445             :      ROSE_ASSERT(newAttribute != NULL);
   11446             : 
   11447             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   11448             :      const_cast<SgTemplateParameterList*>(this)->attribute.add("copied",newAttribute);
   11449             : #endif
   11450             : 
   11451             :   // Copy data members from base classes
   11452             :  
   11453             : 
   11454             :   // Build an empty copy of this object (will be filled in, but 
   11455             :   // the parent can't be set and must be set by the caller)
   11456           0 :      result = new SgTemplateParameterList(  );
   11457           0 :      ROSE_ASSERT(result != NULL);
   11458             : 
   11459             :   // Copy data members of "this" class
   11460             :   // Copy non-constructor parameter data member (access function): args_copy
   11461           0 :      SgTemplateParameterPtrList args_copy; 
   11462             :   // case: listType for args
   11463             :   // case: listType (typeIsPointerToList == false) for args
   11464           0 :      SgTemplateParameterPtrList::const_iterator source_args_iterator = get_args().begin(); 
   11465           0 :      for ( /* empty by design */; source_args_iterator != get_args().end(); ++source_args_iterator) 
   11466             :         { 
   11467           0 :           SgTemplateParameter* source_list_element = *source_args_iterator; 
   11468           0 :           SgTemplateParameter* copy_list_element = NULL; 
   11469           0 :           if (source_list_element != NULL) 
   11470             :              { 
   11471           0 :                copy_list_element = static_cast<SgTemplateParameter*>(help.copyAst(*source_args_iterator)); 
   11472             :              } 
   11473             :             else 
   11474             :              { 
   11475             :                copy_list_element = NULL; 
   11476             :              } 
   11477           0 :           args_copy.push_back(copy_list_element); 
   11478             :         } 
   11479           0 :      result->p_args = args_copy; 
   11480             :   // case: listType for args
   11481             :   // case: listType (typeIsPointerToList == false) for args
   11482           0 :      SgTemplateParameterPtrList::const_iterator args_iterator = result->get_args().begin(); 
   11483           0 :      for ( /* empty by design */; args_iterator != result->get_args().end(); ++args_iterator) 
   11484             :         { 
   11485           0 :           SgTemplateParameter* list_element = *args_iterator; 
   11486           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   11487             :              { 
   11488           0 :                list_element->set_parent(result); 
   11489             :              } 
   11490             :         } 
   11491             : 
   11492             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11493             : 
   11494             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   11495             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   11496             :   // fixupCopy(result,help);
   11497             : 
   11498             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   11499             :   // the Sg_File_Info objects that are built for the new IR nodes.
   11500           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   11501           0 :      if (locatedNode != NULL)
   11502             :         {
   11503             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   11504           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   11505           0 :           ROSE_ASSERT(start != NULL);
   11506             : #if 0
   11507             :        // Debugging information
   11508             :           if (start->get_parent() == NULL)
   11509             :              {
   11510             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11511             :              }
   11512             : #endif
   11513           0 :           start->set_parent(locatedNode);
   11514           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   11515             : 
   11516           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   11517             : 
   11518             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   11519             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   11520             :        // ROSE_ASSERT(end != NULL);
   11521           0 :           if (end == NULL)
   11522             :              {
   11523           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   11524             :              }
   11525             :             else
   11526             :              {
   11527             : #if 0
   11528             :             // Debugging information
   11529             :                if (end->get_parent() == NULL)
   11530             :                   {
   11531             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11532             :                   }
   11533             : #endif
   11534           0 :                end->set_parent(locatedNode);
   11535           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   11536             :              }
   11537             : 
   11538           0 :           SgExpression* expression = isSgExpression(result);
   11539           0 :           if (isSgExpression(this) != NULL)
   11540             :              {
   11541           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   11542             : 
   11543             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   11544           0 :                if (operatorPosition != NULL)
   11545             :                   {
   11546             : #if 0
   11547             :                  // Debugging information
   11548             :                     if (operatorPosition->get_parent() == NULL)
   11549             :                        {
   11550             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11551             :                        }
   11552             : #endif
   11553           0 :                     operatorPosition->set_parent(expression);
   11554           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   11555             :                   }
   11556             :              }
   11557             :         }
   11558             : 
   11559             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   11560           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   11561           0 :      if (initializedName != NULL)
   11562             :         {
   11563             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   11564           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   11565           0 :           ROSE_ASSERT(start != NULL);
   11566             : #if 0
   11567             :        // Debugging information
   11568             :           if (start->get_parent() == NULL)
   11569             :              {
   11570             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11571             :              }
   11572             : #endif
   11573           0 :           start->set_parent(initializedName);
   11574           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   11575             : 
   11576             : #if 0
   11577             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   11578             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   11579             : 
   11580             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   11581             :        // ROSE_ASSERT(end != NULL);
   11582             :           if (end == NULL)
   11583             :              {
   11584             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   11585             :              }
   11586             :             else
   11587             :              {
   11588             :                if (end->get_parent() == NULL)
   11589             :                   {
   11590             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11591             :                   }
   11592             :                end->set_parent(initializedName);
   11593             :                ROSE_ASSERT(end->get_parent() != NULL);
   11594             :              }
   11595             : #endif
   11596             :         }
   11597             : 
   11598             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   11599           0 :      help.insertCopiedNodePair(this,result);
   11600             : 
   11601             :   // printf ("End of copy SgTemplateParameterList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   11602             : 
   11603             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   11604             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   11605           0 :      help.decrementDepth();
   11606             : 
   11607             :   // Test if this is the root of the copy!
   11608           0 :      if (help.get_depth() == 0)
   11609             :         {
   11610             :        // This is the original calling node.
   11611             : 
   11612             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   11613             :        // printf ("Calling SgTemplateParameterList::fixupCopy() (from root of AST being copied) \n");
   11614             : #if ALT_FIXUP_COPY
   11615             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   11616           0 :           fixupCopy_scopes (result,help);
   11617           0 :           fixupCopy_symbols (result,help);
   11618           0 :           fixupCopy_references (result,help);
   11619             : #else
   11620             :           fixupCopy(result,help);
   11621             : #endif
   11622             :        // Allow this to be called recursively, so accumulate the state.
   11623             :        // Also, clear the state in the SgCopyHelp object.
   11624             :        // help.clearState();
   11625             :         }
   11626             : 
   11627           0 :      return result;
   11628             :    }
   11629             : 
   11630             : 
   11631             : /* #line 11632 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   11632             : 
   11633             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11634             : 
   11635           0 : SgNode* SgGraph::copy ( SgCopyHelp& help) const
   11636             :    {
   11637           0 :      SgGraph* result = NULL;
   11638             : 
   11639             :   // printf ("Copy SgGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   11640             : 
   11641             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   11642             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   11643             :   // The default value of the depth is 0, so after this call the depth is 1!
   11644           0 :      help.incrementDepth();
   11645             : 
   11646             : #if 0
   11647             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   11648             :   // but it is not generally true that things can only be copied once!
   11649             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   11650             :   // AstAttribute* existingAttribute = const_cast<SgGraph*>(this)->attribute["copied"];
   11651             :      bool previouslyCopied = const_cast<SgGraph*>(this)->attribute.exists("copied");
   11652             :      if (previouslyCopied == true)
   11653             :         {
   11654             :           this->get_file_info()->display("Called from copy SgGraph: debug");
   11655             :         }
   11656             :      ROSE_ASSERT(previouslyCopied == false);
   11657             : 
   11658             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   11659             :      AstAttribute* newAttribute = new AstAttribute();
   11660             :      ROSE_ASSERT(newAttribute != NULL);
   11661             : 
   11662             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   11663             :      const_cast<SgGraph*>(this)->attribute.add("copied",newAttribute);
   11664             : #endif
   11665             : 
   11666             :   // Copy data members from base classes
   11667             :   // Copy constructor parameter data member: name_copy
   11668             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   11669             :   // case: toBeCopied == COPY_DATA for name
   11670           0 :      std::string name_copy = p_name; 
   11671             :  
   11672             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11673             : 
   11674             :   // Build an empty copy of this object (will be filled in, but 
   11675             :   // the parent can't be set and must be set by the caller)
   11676           0 :      result = new SgGraph(  name_copy );
   11677           0 :      ROSE_ASSERT(result != NULL);
   11678             : 
   11679             :   // Copy data members of "this" class
   11680             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_node_map()
   11681             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_node_map
   11682             :   // case: toBeCopied == COPY_DATA for node_index_to_node_map
   11683           0 :      rose_graph_integer_node_hash_map node_index_to_node_map_copy = p_node_index_to_node_map; 
   11684           0 :      result->p_node_index_to_node_map = node_index_to_node_map_copy; 
   11685             :   // Copy non-constructor parameter data member (list access function): result->get_edge_index_to_edge_map()
   11686             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for edge_index_to_edge_map
   11687             :   // case: toBeCopied == COPY_DATA for edge_index_to_edge_map
   11688           0 :      rose_graph_integer_edge_hash_map edge_index_to_edge_map_copy = p_edge_index_to_edge_map; 
   11689           0 :      result->p_edge_index_to_edge_map = edge_index_to_edge_map_copy; 
   11690             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_pair_to_edge_multimap()
   11691             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_pair_to_edge_multimap
   11692             :   // case: toBeCopied == COPY_DATA for node_index_pair_to_edge_multimap
   11693           0 :      rose_graph_integerpair_edge_hash_multimap node_index_pair_to_edge_multimap_copy = p_node_index_pair_to_edge_multimap; 
   11694           0 :      result->p_node_index_pair_to_edge_multimap = node_index_pair_to_edge_multimap_copy; 
   11695             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_node_index_multimap()
   11696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_node_index_multimap
   11697             :   // case: toBeCopied == COPY_DATA for string_to_node_index_multimap
   11698           0 :      rose_graph_string_integer_hash_multimap string_to_node_index_multimap_copy = p_string_to_node_index_multimap; 
   11699           0 :      result->p_string_to_node_index_multimap = string_to_node_index_multimap_copy; 
   11700             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_edge_index_multimap()
   11701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_edge_index_multimap
   11702             :   // case: toBeCopied == COPY_DATA for string_to_edge_index_multimap
   11703           0 :      rose_graph_string_integer_hash_multimap string_to_edge_index_multimap_copy = p_string_to_edge_index_multimap; 
   11704           0 :      result->p_string_to_edge_index_multimap = string_to_edge_index_multimap_copy; 
   11705             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap()
   11706             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap
   11707             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap
   11708           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_copy = p_node_index_to_edge_multimap; 
   11709           0 :      result->p_node_index_to_edge_multimap = node_index_to_edge_multimap_copy; 
   11710             :   // Copy non-constructor parameter data member (access function): index_copy
   11711             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   11712             :   // case: toBeCopied == COPY_DATA for index
   11713           0 :      int index_copy = p_index; 
   11714           0 :      result->p_index = index_copy; 
   11715             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   11716             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   11717             :   // case: toBeCopied == COPY_DATA for index_counter
   11718           0 :      static int index_counter_copy = p_index_counter; 
   11719           0 :      result->p_index_counter = index_counter_copy; 
   11720             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edges()
   11721             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edges
   11722             :   // case: toBeCopied == COPY_DATA for boost_edges
   11723           0 :      SgBoostEdgeList boost_edges_copy = p_boost_edges; 
   11724           0 :      result->p_boost_edges = boost_edges_copy; 
   11725             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edge_weights()
   11726             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edge_weights
   11727             :   // case: toBeCopied == COPY_DATA for boost_edge_weights
   11728           0 :      SgBoostEdgeWeightList boost_edge_weights_copy = p_boost_edge_weights; 
   11729           0 :      result->p_boost_edge_weights = boost_edge_weights_copy; 
   11730             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   11731             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   11732             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   11733           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   11734           0 :      if ( p_attributeMechanism != NULL ) 
   11735             :         { 
   11736           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   11737             :         } 
   11738             :        else 
   11739             :         { 
   11740             :           attributeMechanism_copy = NULL; 
   11741             :         } 
   11742             :   /* check for a valid pointer and delete if present */ 
   11743           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   11744             :   /* add assignment to result here */ 
   11745           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   11746             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   11747             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   11748             :   // case: toBeCopied == COPY_DATA for properties
   11749           0 :      std::map<int, std::string> properties_copy = p_properties; 
   11750           0 :      result->p_properties = properties_copy; 
   11751             : 
   11752             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11753             : 
   11754             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   11755             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   11756             :   // fixupCopy(result,help);
   11757             : 
   11758             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   11759             :   // the Sg_File_Info objects that are built for the new IR nodes.
   11760           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   11761           0 :      if (locatedNode != NULL)
   11762             :         {
   11763             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   11764           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   11765           0 :           ROSE_ASSERT(start != NULL);
   11766             : #if 0
   11767             :        // Debugging information
   11768             :           if (start->get_parent() == NULL)
   11769             :              {
   11770             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11771             :              }
   11772             : #endif
   11773           0 :           start->set_parent(locatedNode);
   11774           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   11775             : 
   11776           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   11777             : 
   11778             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   11779             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   11780             :        // ROSE_ASSERT(end != NULL);
   11781           0 :           if (end == NULL)
   11782             :              {
   11783           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   11784             :              }
   11785             :             else
   11786             :              {
   11787             : #if 0
   11788             :             // Debugging information
   11789             :                if (end->get_parent() == NULL)
   11790             :                   {
   11791             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11792             :                   }
   11793             : #endif
   11794           0 :                end->set_parent(locatedNode);
   11795           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   11796             :              }
   11797             : 
   11798           0 :           SgExpression* expression = isSgExpression(result);
   11799           0 :           if (isSgExpression(this) != NULL)
   11800             :              {
   11801           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   11802             : 
   11803             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   11804           0 :                if (operatorPosition != NULL)
   11805             :                   {
   11806             : #if 0
   11807             :                  // Debugging information
   11808             :                     if (operatorPosition->get_parent() == NULL)
   11809             :                        {
   11810             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11811             :                        }
   11812             : #endif
   11813           0 :                     operatorPosition->set_parent(expression);
   11814           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   11815             :                   }
   11816             :              }
   11817             :         }
   11818             : 
   11819             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   11820           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   11821           0 :      if (initializedName != NULL)
   11822             :         {
   11823             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   11824           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   11825           0 :           ROSE_ASSERT(start != NULL);
   11826             : #if 0
   11827             :        // Debugging information
   11828             :           if (start->get_parent() == NULL)
   11829             :              {
   11830             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11831             :              }
   11832             : #endif
   11833           0 :           start->set_parent(initializedName);
   11834           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   11835             : 
   11836             : #if 0
   11837             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   11838             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   11839             : 
   11840             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   11841             :        // ROSE_ASSERT(end != NULL);
   11842             :           if (end == NULL)
   11843             :              {
   11844             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   11845             :              }
   11846             :             else
   11847             :              {
   11848             :                if (end->get_parent() == NULL)
   11849             :                   {
   11850             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   11851             :                   }
   11852             :                end->set_parent(initializedName);
   11853             :                ROSE_ASSERT(end->get_parent() != NULL);
   11854             :              }
   11855             : #endif
   11856             :         }
   11857             : 
   11858             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   11859           0 :      help.insertCopiedNodePair(this,result);
   11860             : 
   11861             :   // printf ("End of copy SgGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   11862             : 
   11863             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   11864             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   11865           0 :      help.decrementDepth();
   11866             : 
   11867             :   // Test if this is the root of the copy!
   11868           0 :      if (help.get_depth() == 0)
   11869             :         {
   11870             :        // This is the original calling node.
   11871             : 
   11872             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   11873             :        // printf ("Calling SgGraph::fixupCopy() (from root of AST being copied) \n");
   11874             : #if ALT_FIXUP_COPY
   11875             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   11876           0 :           fixupCopy_scopes (result,help);
   11877           0 :           fixupCopy_symbols (result,help);
   11878           0 :           fixupCopy_references (result,help);
   11879             : #else
   11880             :           fixupCopy(result,help);
   11881             : #endif
   11882             :        // Allow this to be called recursively, so accumulate the state.
   11883             :        // Also, clear the state in the SgCopyHelp object.
   11884             :        // help.clearState();
   11885             :         }
   11886             : 
   11887           0 :      return result;
   11888             :    }
   11889             : 
   11890             : 
   11891             : /* #line 11892 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   11892             : 
   11893             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11894             : 
   11895           0 : SgNode* SgIncidenceDirectedGraph::copy ( SgCopyHelp& help) const
   11896             :    {
   11897           0 :      SgIncidenceDirectedGraph* result = NULL;
   11898             : 
   11899             :   // printf ("Copy SgIncidenceDirectedGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   11900             : 
   11901             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   11902             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   11903             :   // The default value of the depth is 0, so after this call the depth is 1!
   11904           0 :      help.incrementDepth();
   11905             : 
   11906             : #if 0
   11907             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   11908             :   // but it is not generally true that things can only be copied once!
   11909             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   11910             :   // AstAttribute* existingAttribute = const_cast<SgIncidenceDirectedGraph*>(this)->attribute["copied"];
   11911             :      bool previouslyCopied = const_cast<SgIncidenceDirectedGraph*>(this)->attribute.exists("copied");
   11912             :      if (previouslyCopied == true)
   11913             :         {
   11914             :           this->get_file_info()->display("Called from copy SgIncidenceDirectedGraph: debug");
   11915             :         }
   11916             :      ROSE_ASSERT(previouslyCopied == false);
   11917             : 
   11918             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   11919             :      AstAttribute* newAttribute = new AstAttribute();
   11920             :      ROSE_ASSERT(newAttribute != NULL);
   11921             : 
   11922             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   11923             :      const_cast<SgIncidenceDirectedGraph*>(this)->attribute.add("copied",newAttribute);
   11924             : #endif
   11925             : 
   11926             :   // Copy data members from base classes
   11927             :   // Copy constructor parameter data member: name_copy
   11928             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   11929             :   // case: toBeCopied == COPY_DATA for name
   11930           0 :      std::string name_copy = p_name; 
   11931             :  
   11932             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   11933             : 
   11934             :   // Build an empty copy of this object (will be filled in, but 
   11935             :   // the parent can't be set and must be set by the caller)
   11936           0 :      result = new SgIncidenceDirectedGraph(  name_copy );
   11937           0 :      ROSE_ASSERT(result != NULL);
   11938             : 
   11939             :   // Copy data members of "this" class
   11940             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_node_map()
   11941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_node_map
   11942             :   // case: toBeCopied == COPY_DATA for node_index_to_node_map
   11943           0 :      rose_graph_integer_node_hash_map node_index_to_node_map_copy = p_node_index_to_node_map; 
   11944           0 :      result->p_node_index_to_node_map = node_index_to_node_map_copy; 
   11945             :   // Copy non-constructor parameter data member (list access function): result->get_edge_index_to_edge_map()
   11946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for edge_index_to_edge_map
   11947             :   // case: toBeCopied == COPY_DATA for edge_index_to_edge_map
   11948           0 :      rose_graph_integer_edge_hash_map edge_index_to_edge_map_copy = p_edge_index_to_edge_map; 
   11949           0 :      result->p_edge_index_to_edge_map = edge_index_to_edge_map_copy; 
   11950             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_pair_to_edge_multimap()
   11951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_pair_to_edge_multimap
   11952             :   // case: toBeCopied == COPY_DATA for node_index_pair_to_edge_multimap
   11953           0 :      rose_graph_integerpair_edge_hash_multimap node_index_pair_to_edge_multimap_copy = p_node_index_pair_to_edge_multimap; 
   11954           0 :      result->p_node_index_pair_to_edge_multimap = node_index_pair_to_edge_multimap_copy; 
   11955             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_node_index_multimap()
   11956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_node_index_multimap
   11957             :   // case: toBeCopied == COPY_DATA for string_to_node_index_multimap
   11958           0 :      rose_graph_string_integer_hash_multimap string_to_node_index_multimap_copy = p_string_to_node_index_multimap; 
   11959           0 :      result->p_string_to_node_index_multimap = string_to_node_index_multimap_copy; 
   11960             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_edge_index_multimap()
   11961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_edge_index_multimap
   11962             :   // case: toBeCopied == COPY_DATA for string_to_edge_index_multimap
   11963           0 :      rose_graph_string_integer_hash_multimap string_to_edge_index_multimap_copy = p_string_to_edge_index_multimap; 
   11964           0 :      result->p_string_to_edge_index_multimap = string_to_edge_index_multimap_copy; 
   11965             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap()
   11966             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap
   11967             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap
   11968           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_copy = p_node_index_to_edge_multimap; 
   11969           0 :      result->p_node_index_to_edge_multimap = node_index_to_edge_multimap_copy; 
   11970             :   // Copy non-constructor parameter data member (access function): index_copy
   11971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   11972             :   // case: toBeCopied == COPY_DATA for index
   11973           0 :      int index_copy = p_index; 
   11974           0 :      result->p_index = index_copy; 
   11975             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   11976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   11977             :   // case: toBeCopied == COPY_DATA for index_counter
   11978           0 :      static int index_counter_copy = p_index_counter; 
   11979           0 :      result->p_index_counter = index_counter_copy; 
   11980             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edges()
   11981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edges
   11982             :   // case: toBeCopied == COPY_DATA for boost_edges
   11983           0 :      SgBoostEdgeList boost_edges_copy = p_boost_edges; 
   11984           0 :      result->p_boost_edges = boost_edges_copy; 
   11985             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edge_weights()
   11986             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edge_weights
   11987             :   // case: toBeCopied == COPY_DATA for boost_edge_weights
   11988           0 :      SgBoostEdgeWeightList boost_edge_weights_copy = p_boost_edge_weights; 
   11989           0 :      result->p_boost_edge_weights = boost_edge_weights_copy; 
   11990             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   11991             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   11992             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   11993           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   11994           0 :      if ( p_attributeMechanism != NULL ) 
   11995             :         { 
   11996           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   11997             :         } 
   11998             :        else 
   11999             :         { 
   12000             :           attributeMechanism_copy = NULL; 
   12001             :         } 
   12002             :   /* check for a valid pointer and delete if present */ 
   12003           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   12004             :   /* add assignment to result here */ 
   12005           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   12006             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   12007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   12008             :   // case: toBeCopied == COPY_DATA for properties
   12009           0 :      std::map<int, std::string> properties_copy = p_properties; 
   12010           0 :      result->p_properties = properties_copy; 
   12011             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap_edgesOut()
   12012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap_edgesOut
   12013             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap_edgesOut
   12014           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_edgesOut_copy = p_node_index_to_edge_multimap_edgesOut; 
   12015           0 :      result->p_node_index_to_edge_multimap_edgesOut = node_index_to_edge_multimap_edgesOut_copy; 
   12016             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap_edgesIn()
   12017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap_edgesIn
   12018             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap_edgesIn
   12019           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_edgesIn_copy = p_node_index_to_edge_multimap_edgesIn; 
   12020           0 :      result->p_node_index_to_edge_multimap_edgesIn = node_index_to_edge_multimap_edgesIn_copy; 
   12021             : 
   12022             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12023             : 
   12024             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   12025             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   12026             :   // fixupCopy(result,help);
   12027             : 
   12028             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   12029             :   // the Sg_File_Info objects that are built for the new IR nodes.
   12030           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   12031           0 :      if (locatedNode != NULL)
   12032             :         {
   12033             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   12034           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   12035           0 :           ROSE_ASSERT(start != NULL);
   12036             : #if 0
   12037             :        // Debugging information
   12038             :           if (start->get_parent() == NULL)
   12039             :              {
   12040             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12041             :              }
   12042             : #endif
   12043           0 :           start->set_parent(locatedNode);
   12044           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   12045             : 
   12046           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   12047             : 
   12048             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   12049             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   12050             :        // ROSE_ASSERT(end != NULL);
   12051           0 :           if (end == NULL)
   12052             :              {
   12053           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   12054             :              }
   12055             :             else
   12056             :              {
   12057             : #if 0
   12058             :             // Debugging information
   12059             :                if (end->get_parent() == NULL)
   12060             :                   {
   12061             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12062             :                   }
   12063             : #endif
   12064           0 :                end->set_parent(locatedNode);
   12065           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   12066             :              }
   12067             : 
   12068           0 :           SgExpression* expression = isSgExpression(result);
   12069           0 :           if (isSgExpression(this) != NULL)
   12070             :              {
   12071           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   12072             : 
   12073             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   12074           0 :                if (operatorPosition != NULL)
   12075             :                   {
   12076             : #if 0
   12077             :                  // Debugging information
   12078             :                     if (operatorPosition->get_parent() == NULL)
   12079             :                        {
   12080             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12081             :                        }
   12082             : #endif
   12083           0 :                     operatorPosition->set_parent(expression);
   12084           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   12085             :                   }
   12086             :              }
   12087             :         }
   12088             : 
   12089             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   12090           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   12091           0 :      if (initializedName != NULL)
   12092             :         {
   12093             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   12094           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   12095           0 :           ROSE_ASSERT(start != NULL);
   12096             : #if 0
   12097             :        // Debugging information
   12098             :           if (start->get_parent() == NULL)
   12099             :              {
   12100             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12101             :              }
   12102             : #endif
   12103           0 :           start->set_parent(initializedName);
   12104           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   12105             : 
   12106             : #if 0
   12107             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   12108             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   12109             : 
   12110             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   12111             :        // ROSE_ASSERT(end != NULL);
   12112             :           if (end == NULL)
   12113             :              {
   12114             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   12115             :              }
   12116             :             else
   12117             :              {
   12118             :                if (end->get_parent() == NULL)
   12119             :                   {
   12120             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12121             :                   }
   12122             :                end->set_parent(initializedName);
   12123             :                ROSE_ASSERT(end->get_parent() != NULL);
   12124             :              }
   12125             : #endif
   12126             :         }
   12127             : 
   12128             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   12129           0 :      help.insertCopiedNodePair(this,result);
   12130             : 
   12131             :   // printf ("End of copy SgIncidenceDirectedGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   12132             : 
   12133             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   12134             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   12135           0 :      help.decrementDepth();
   12136             : 
   12137             :   // Test if this is the root of the copy!
   12138           0 :      if (help.get_depth() == 0)
   12139             :         {
   12140             :        // This is the original calling node.
   12141             : 
   12142             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   12143             :        // printf ("Calling SgIncidenceDirectedGraph::fixupCopy() (from root of AST being copied) \n");
   12144             : #if ALT_FIXUP_COPY
   12145             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   12146           0 :           fixupCopy_scopes (result,help);
   12147           0 :           fixupCopy_symbols (result,help);
   12148           0 :           fixupCopy_references (result,help);
   12149             : #else
   12150             :           fixupCopy(result,help);
   12151             : #endif
   12152             :        // Allow this to be called recursively, so accumulate the state.
   12153             :        // Also, clear the state in the SgCopyHelp object.
   12154             :        // help.clearState();
   12155             :         }
   12156             : 
   12157           0 :      return result;
   12158             :    }
   12159             : 
   12160             : 
   12161             : /* #line 12162 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   12162             : 
   12163             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12164             : 
   12165           0 : SgNode* SgBidirectionalGraph::copy ( SgCopyHelp& help) const
   12166             :    {
   12167           0 :      SgBidirectionalGraph* result = NULL;
   12168             : 
   12169             :   // printf ("Copy SgBidirectionalGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   12170             : 
   12171             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   12172             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   12173             :   // The default value of the depth is 0, so after this call the depth is 1!
   12174           0 :      help.incrementDepth();
   12175             : 
   12176             : #if 0
   12177             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   12178             :   // but it is not generally true that things can only be copied once!
   12179             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   12180             :   // AstAttribute* existingAttribute = const_cast<SgBidirectionalGraph*>(this)->attribute["copied"];
   12181             :      bool previouslyCopied = const_cast<SgBidirectionalGraph*>(this)->attribute.exists("copied");
   12182             :      if (previouslyCopied == true)
   12183             :         {
   12184             :           this->get_file_info()->display("Called from copy SgBidirectionalGraph: debug");
   12185             :         }
   12186             :      ROSE_ASSERT(previouslyCopied == false);
   12187             : 
   12188             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   12189             :      AstAttribute* newAttribute = new AstAttribute();
   12190             :      ROSE_ASSERT(newAttribute != NULL);
   12191             : 
   12192             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   12193             :      const_cast<SgBidirectionalGraph*>(this)->attribute.add("copied",newAttribute);
   12194             : #endif
   12195             : 
   12196             :   // Copy data members from base classes
   12197             :   // Copy constructor parameter data member: name_copy
   12198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   12199             :   // case: toBeCopied == COPY_DATA for name
   12200           0 :      std::string name_copy = p_name; 
   12201             :  
   12202             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12203             : 
   12204             :   // Build an empty copy of this object (will be filled in, but 
   12205             :   // the parent can't be set and must be set by the caller)
   12206           0 :      result = new SgBidirectionalGraph(  name_copy );
   12207           0 :      ROSE_ASSERT(result != NULL);
   12208             : 
   12209             :   // Copy data members of "this" class
   12210             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_node_map()
   12211             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_node_map
   12212             :   // case: toBeCopied == COPY_DATA for node_index_to_node_map
   12213           0 :      rose_graph_integer_node_hash_map node_index_to_node_map_copy = p_node_index_to_node_map; 
   12214           0 :      result->p_node_index_to_node_map = node_index_to_node_map_copy; 
   12215             :   // Copy non-constructor parameter data member (list access function): result->get_edge_index_to_edge_map()
   12216             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for edge_index_to_edge_map
   12217             :   // case: toBeCopied == COPY_DATA for edge_index_to_edge_map
   12218           0 :      rose_graph_integer_edge_hash_map edge_index_to_edge_map_copy = p_edge_index_to_edge_map; 
   12219           0 :      result->p_edge_index_to_edge_map = edge_index_to_edge_map_copy; 
   12220             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_pair_to_edge_multimap()
   12221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_pair_to_edge_multimap
   12222             :   // case: toBeCopied == COPY_DATA for node_index_pair_to_edge_multimap
   12223           0 :      rose_graph_integerpair_edge_hash_multimap node_index_pair_to_edge_multimap_copy = p_node_index_pair_to_edge_multimap; 
   12224           0 :      result->p_node_index_pair_to_edge_multimap = node_index_pair_to_edge_multimap_copy; 
   12225             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_node_index_multimap()
   12226             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_node_index_multimap
   12227             :   // case: toBeCopied == COPY_DATA for string_to_node_index_multimap
   12228           0 :      rose_graph_string_integer_hash_multimap string_to_node_index_multimap_copy = p_string_to_node_index_multimap; 
   12229           0 :      result->p_string_to_node_index_multimap = string_to_node_index_multimap_copy; 
   12230             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_edge_index_multimap()
   12231             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_edge_index_multimap
   12232             :   // case: toBeCopied == COPY_DATA for string_to_edge_index_multimap
   12233           0 :      rose_graph_string_integer_hash_multimap string_to_edge_index_multimap_copy = p_string_to_edge_index_multimap; 
   12234           0 :      result->p_string_to_edge_index_multimap = string_to_edge_index_multimap_copy; 
   12235             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap()
   12236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap
   12237             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap
   12238           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_copy = p_node_index_to_edge_multimap; 
   12239           0 :      result->p_node_index_to_edge_multimap = node_index_to_edge_multimap_copy; 
   12240             :   // Copy non-constructor parameter data member (access function): index_copy
   12241             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   12242             :   // case: toBeCopied == COPY_DATA for index
   12243           0 :      int index_copy = p_index; 
   12244           0 :      result->p_index = index_copy; 
   12245             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   12246             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   12247             :   // case: toBeCopied == COPY_DATA for index_counter
   12248           0 :      static int index_counter_copy = p_index_counter; 
   12249           0 :      result->p_index_counter = index_counter_copy; 
   12250             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edges()
   12251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edges
   12252             :   // case: toBeCopied == COPY_DATA for boost_edges
   12253           0 :      SgBoostEdgeList boost_edges_copy = p_boost_edges; 
   12254           0 :      result->p_boost_edges = boost_edges_copy; 
   12255             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edge_weights()
   12256             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edge_weights
   12257             :   // case: toBeCopied == COPY_DATA for boost_edge_weights
   12258           0 :      SgBoostEdgeWeightList boost_edge_weights_copy = p_boost_edge_weights; 
   12259           0 :      result->p_boost_edge_weights = boost_edge_weights_copy; 
   12260             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   12261             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   12262             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   12263           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   12264           0 :      if ( p_attributeMechanism != NULL ) 
   12265             :         { 
   12266           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   12267             :         } 
   12268             :        else 
   12269             :         { 
   12270             :           attributeMechanism_copy = NULL; 
   12271             :         } 
   12272             :   /* check for a valid pointer and delete if present */ 
   12273           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   12274             :   /* add assignment to result here */ 
   12275           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   12276             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   12277             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   12278             :   // case: toBeCopied == COPY_DATA for properties
   12279           0 :      std::map<int, std::string> properties_copy = p_properties; 
   12280           0 :      result->p_properties = properties_copy; 
   12281             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap_edgesOut()
   12282             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap_edgesOut
   12283             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap_edgesOut
   12284           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_edgesOut_copy = p_node_index_to_edge_multimap_edgesOut; 
   12285           0 :      result->p_node_index_to_edge_multimap_edgesOut = node_index_to_edge_multimap_edgesOut_copy; 
   12286             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap_edgesIn()
   12287             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap_edgesIn
   12288             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap_edgesIn
   12289           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_edgesIn_copy = p_node_index_to_edge_multimap_edgesIn; 
   12290           0 :      result->p_node_index_to_edge_multimap_edgesIn = node_index_to_edge_multimap_edgesIn_copy; 
   12291             : 
   12292             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12293             : 
   12294             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   12295             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   12296             :   // fixupCopy(result,help);
   12297             : 
   12298             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   12299             :   // the Sg_File_Info objects that are built for the new IR nodes.
   12300           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   12301           0 :      if (locatedNode != NULL)
   12302             :         {
   12303             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   12304           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   12305           0 :           ROSE_ASSERT(start != NULL);
   12306             : #if 0
   12307             :        // Debugging information
   12308             :           if (start->get_parent() == NULL)
   12309             :              {
   12310             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12311             :              }
   12312             : #endif
   12313           0 :           start->set_parent(locatedNode);
   12314           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   12315             : 
   12316           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   12317             : 
   12318             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   12319             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   12320             :        // ROSE_ASSERT(end != NULL);
   12321           0 :           if (end == NULL)
   12322             :              {
   12323           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   12324             :              }
   12325             :             else
   12326             :              {
   12327             : #if 0
   12328             :             // Debugging information
   12329             :                if (end->get_parent() == NULL)
   12330             :                   {
   12331             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12332             :                   }
   12333             : #endif
   12334           0 :                end->set_parent(locatedNode);
   12335           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   12336             :              }
   12337             : 
   12338           0 :           SgExpression* expression = isSgExpression(result);
   12339           0 :           if (isSgExpression(this) != NULL)
   12340             :              {
   12341           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   12342             : 
   12343             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   12344           0 :                if (operatorPosition != NULL)
   12345             :                   {
   12346             : #if 0
   12347             :                  // Debugging information
   12348             :                     if (operatorPosition->get_parent() == NULL)
   12349             :                        {
   12350             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12351             :                        }
   12352             : #endif
   12353           0 :                     operatorPosition->set_parent(expression);
   12354           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   12355             :                   }
   12356             :              }
   12357             :         }
   12358             : 
   12359             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   12360           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   12361           0 :      if (initializedName != NULL)
   12362             :         {
   12363             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   12364           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   12365           0 :           ROSE_ASSERT(start != NULL);
   12366             : #if 0
   12367             :        // Debugging information
   12368             :           if (start->get_parent() == NULL)
   12369             :              {
   12370             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12371             :              }
   12372             : #endif
   12373           0 :           start->set_parent(initializedName);
   12374           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   12375             : 
   12376             : #if 0
   12377             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   12378             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   12379             : 
   12380             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   12381             :        // ROSE_ASSERT(end != NULL);
   12382             :           if (end == NULL)
   12383             :              {
   12384             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   12385             :              }
   12386             :             else
   12387             :              {
   12388             :                if (end->get_parent() == NULL)
   12389             :                   {
   12390             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12391             :                   }
   12392             :                end->set_parent(initializedName);
   12393             :                ROSE_ASSERT(end->get_parent() != NULL);
   12394             :              }
   12395             : #endif
   12396             :         }
   12397             : 
   12398             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   12399           0 :      help.insertCopiedNodePair(this,result);
   12400             : 
   12401             :   // printf ("End of copy SgBidirectionalGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   12402             : 
   12403             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   12404             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   12405           0 :      help.decrementDepth();
   12406             : 
   12407             :   // Test if this is the root of the copy!
   12408           0 :      if (help.get_depth() == 0)
   12409             :         {
   12410             :        // This is the original calling node.
   12411             : 
   12412             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   12413             :        // printf ("Calling SgBidirectionalGraph::fixupCopy() (from root of AST being copied) \n");
   12414             : #if ALT_FIXUP_COPY
   12415             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   12416           0 :           fixupCopy_scopes (result,help);
   12417           0 :           fixupCopy_symbols (result,help);
   12418           0 :           fixupCopy_references (result,help);
   12419             : #else
   12420             :           fixupCopy(result,help);
   12421             : #endif
   12422             :        // Allow this to be called recursively, so accumulate the state.
   12423             :        // Also, clear the state in the SgCopyHelp object.
   12424             :        // help.clearState();
   12425             :         }
   12426             : 
   12427           0 :      return result;
   12428             :    }
   12429             : 
   12430             : 
   12431             : /* #line 12432 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   12432             : 
   12433             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12434             : 
   12435           0 : SgNode* SgStringKeyedBidirectionalGraph::copy ( SgCopyHelp& help) const
   12436             :    {
   12437           0 :      SgStringKeyedBidirectionalGraph* result = NULL;
   12438             : 
   12439             :   // printf ("Copy SgStringKeyedBidirectionalGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   12440             : 
   12441             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   12442             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   12443             :   // The default value of the depth is 0, so after this call the depth is 1!
   12444           0 :      help.incrementDepth();
   12445             : 
   12446             : #if 0
   12447             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   12448             :   // but it is not generally true that things can only be copied once!
   12449             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   12450             :   // AstAttribute* existingAttribute = const_cast<SgStringKeyedBidirectionalGraph*>(this)->attribute["copied"];
   12451             :      bool previouslyCopied = const_cast<SgStringKeyedBidirectionalGraph*>(this)->attribute.exists("copied");
   12452             :      if (previouslyCopied == true)
   12453             :         {
   12454             :           this->get_file_info()->display("Called from copy SgStringKeyedBidirectionalGraph: debug");
   12455             :         }
   12456             :      ROSE_ASSERT(previouslyCopied == false);
   12457             : 
   12458             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   12459             :      AstAttribute* newAttribute = new AstAttribute();
   12460             :      ROSE_ASSERT(newAttribute != NULL);
   12461             : 
   12462             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   12463             :      const_cast<SgStringKeyedBidirectionalGraph*>(this)->attribute.add("copied",newAttribute);
   12464             : #endif
   12465             : 
   12466             :   // Copy data members from base classes
   12467             :   // Copy constructor parameter data member: name_copy
   12468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   12469             :   // case: toBeCopied == COPY_DATA for name
   12470           0 :      std::string name_copy = p_name; 
   12471             :  
   12472             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12473             : 
   12474             :   // Build an empty copy of this object (will be filled in, but 
   12475             :   // the parent can't be set and must be set by the caller)
   12476           0 :      result = new SgStringKeyedBidirectionalGraph(  name_copy );
   12477           0 :      ROSE_ASSERT(result != NULL);
   12478             : 
   12479             :   // Copy data members of "this" class
   12480             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_node_map()
   12481             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_node_map
   12482             :   // case: toBeCopied == COPY_DATA for node_index_to_node_map
   12483           0 :      rose_graph_integer_node_hash_map node_index_to_node_map_copy = p_node_index_to_node_map; 
   12484           0 :      result->p_node_index_to_node_map = node_index_to_node_map_copy; 
   12485             :   // Copy non-constructor parameter data member (list access function): result->get_edge_index_to_edge_map()
   12486             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for edge_index_to_edge_map
   12487             :   // case: toBeCopied == COPY_DATA for edge_index_to_edge_map
   12488           0 :      rose_graph_integer_edge_hash_map edge_index_to_edge_map_copy = p_edge_index_to_edge_map; 
   12489           0 :      result->p_edge_index_to_edge_map = edge_index_to_edge_map_copy; 
   12490             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_pair_to_edge_multimap()
   12491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_pair_to_edge_multimap
   12492             :   // case: toBeCopied == COPY_DATA for node_index_pair_to_edge_multimap
   12493           0 :      rose_graph_integerpair_edge_hash_multimap node_index_pair_to_edge_multimap_copy = p_node_index_pair_to_edge_multimap; 
   12494           0 :      result->p_node_index_pair_to_edge_multimap = node_index_pair_to_edge_multimap_copy; 
   12495             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_node_index_multimap()
   12496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_node_index_multimap
   12497             :   // case: toBeCopied == COPY_DATA for string_to_node_index_multimap
   12498           0 :      rose_graph_string_integer_hash_multimap string_to_node_index_multimap_copy = p_string_to_node_index_multimap; 
   12499           0 :      result->p_string_to_node_index_multimap = string_to_node_index_multimap_copy; 
   12500             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_edge_index_multimap()
   12501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_edge_index_multimap
   12502             :   // case: toBeCopied == COPY_DATA for string_to_edge_index_multimap
   12503           0 :      rose_graph_string_integer_hash_multimap string_to_edge_index_multimap_copy = p_string_to_edge_index_multimap; 
   12504           0 :      result->p_string_to_edge_index_multimap = string_to_edge_index_multimap_copy; 
   12505             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap()
   12506             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap
   12507             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap
   12508           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_copy = p_node_index_to_edge_multimap; 
   12509           0 :      result->p_node_index_to_edge_multimap = node_index_to_edge_multimap_copy; 
   12510             :   // Copy non-constructor parameter data member (access function): index_copy
   12511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   12512             :   // case: toBeCopied == COPY_DATA for index
   12513           0 :      int index_copy = p_index; 
   12514           0 :      result->p_index = index_copy; 
   12515             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   12516             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   12517             :   // case: toBeCopied == COPY_DATA for index_counter
   12518           0 :      static int index_counter_copy = p_index_counter; 
   12519           0 :      result->p_index_counter = index_counter_copy; 
   12520             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edges()
   12521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edges
   12522             :   // case: toBeCopied == COPY_DATA for boost_edges
   12523           0 :      SgBoostEdgeList boost_edges_copy = p_boost_edges; 
   12524           0 :      result->p_boost_edges = boost_edges_copy; 
   12525             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edge_weights()
   12526             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edge_weights
   12527             :   // case: toBeCopied == COPY_DATA for boost_edge_weights
   12528           0 :      SgBoostEdgeWeightList boost_edge_weights_copy = p_boost_edge_weights; 
   12529           0 :      result->p_boost_edge_weights = boost_edge_weights_copy; 
   12530             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   12531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   12532             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   12533           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   12534           0 :      if ( p_attributeMechanism != NULL ) 
   12535             :         { 
   12536           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   12537             :         } 
   12538             :        else 
   12539             :         { 
   12540             :           attributeMechanism_copy = NULL; 
   12541             :         } 
   12542             :   /* check for a valid pointer and delete if present */ 
   12543           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   12544             :   /* add assignment to result here */ 
   12545           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   12546             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   12547             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   12548             :   // case: toBeCopied == COPY_DATA for properties
   12549           0 :      std::map<int, std::string> properties_copy = p_properties; 
   12550           0 :      result->p_properties = properties_copy; 
   12551             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap_edgesOut()
   12552             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap_edgesOut
   12553             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap_edgesOut
   12554           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_edgesOut_copy = p_node_index_to_edge_multimap_edgesOut; 
   12555           0 :      result->p_node_index_to_edge_multimap_edgesOut = node_index_to_edge_multimap_edgesOut_copy; 
   12556             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap_edgesIn()
   12557             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap_edgesIn
   12558             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap_edgesIn
   12559           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_edgesIn_copy = p_node_index_to_edge_multimap_edgesIn; 
   12560           0 :      result->p_node_index_to_edge_multimap_edgesIn = node_index_to_edge_multimap_edgesIn_copy; 
   12561             : 
   12562             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12563             : 
   12564             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   12565             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   12566             :   // fixupCopy(result,help);
   12567             : 
   12568             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   12569             :   // the Sg_File_Info objects that are built for the new IR nodes.
   12570           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   12571           0 :      if (locatedNode != NULL)
   12572             :         {
   12573             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   12574           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   12575           0 :           ROSE_ASSERT(start != NULL);
   12576             : #if 0
   12577             :        // Debugging information
   12578             :           if (start->get_parent() == NULL)
   12579             :              {
   12580             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12581             :              }
   12582             : #endif
   12583           0 :           start->set_parent(locatedNode);
   12584           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   12585             : 
   12586           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   12587             : 
   12588             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   12589             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   12590             :        // ROSE_ASSERT(end != NULL);
   12591           0 :           if (end == NULL)
   12592             :              {
   12593           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   12594             :              }
   12595             :             else
   12596             :              {
   12597             : #if 0
   12598             :             // Debugging information
   12599             :                if (end->get_parent() == NULL)
   12600             :                   {
   12601             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12602             :                   }
   12603             : #endif
   12604           0 :                end->set_parent(locatedNode);
   12605           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   12606             :              }
   12607             : 
   12608           0 :           SgExpression* expression = isSgExpression(result);
   12609           0 :           if (isSgExpression(this) != NULL)
   12610             :              {
   12611           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   12612             : 
   12613             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   12614           0 :                if (operatorPosition != NULL)
   12615             :                   {
   12616             : #if 0
   12617             :                  // Debugging information
   12618             :                     if (operatorPosition->get_parent() == NULL)
   12619             :                        {
   12620             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12621             :                        }
   12622             : #endif
   12623           0 :                     operatorPosition->set_parent(expression);
   12624           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   12625             :                   }
   12626             :              }
   12627             :         }
   12628             : 
   12629             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   12630           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   12631           0 :      if (initializedName != NULL)
   12632             :         {
   12633             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   12634           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   12635           0 :           ROSE_ASSERT(start != NULL);
   12636             : #if 0
   12637             :        // Debugging information
   12638             :           if (start->get_parent() == NULL)
   12639             :              {
   12640             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12641             :              }
   12642             : #endif
   12643           0 :           start->set_parent(initializedName);
   12644           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   12645             : 
   12646             : #if 0
   12647             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   12648             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   12649             : 
   12650             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   12651             :        // ROSE_ASSERT(end != NULL);
   12652             :           if (end == NULL)
   12653             :              {
   12654             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   12655             :              }
   12656             :             else
   12657             :              {
   12658             :                if (end->get_parent() == NULL)
   12659             :                   {
   12660             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12661             :                   }
   12662             :                end->set_parent(initializedName);
   12663             :                ROSE_ASSERT(end->get_parent() != NULL);
   12664             :              }
   12665             : #endif
   12666             :         }
   12667             : 
   12668             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   12669           0 :      help.insertCopiedNodePair(this,result);
   12670             : 
   12671             :   // printf ("End of copy SgStringKeyedBidirectionalGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   12672             : 
   12673             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   12674             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   12675           0 :      help.decrementDepth();
   12676             : 
   12677             :   // Test if this is the root of the copy!
   12678           0 :      if (help.get_depth() == 0)
   12679             :         {
   12680             :        // This is the original calling node.
   12681             : 
   12682             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   12683             :        // printf ("Calling SgStringKeyedBidirectionalGraph::fixupCopy() (from root of AST being copied) \n");
   12684             : #if ALT_FIXUP_COPY
   12685             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   12686           0 :           fixupCopy_scopes (result,help);
   12687           0 :           fixupCopy_symbols (result,help);
   12688           0 :           fixupCopy_references (result,help);
   12689             : #else
   12690             :           fixupCopy(result,help);
   12691             : #endif
   12692             :        // Allow this to be called recursively, so accumulate the state.
   12693             :        // Also, clear the state in the SgCopyHelp object.
   12694             :        // help.clearState();
   12695             :         }
   12696             : 
   12697           0 :      return result;
   12698             :    }
   12699             : 
   12700             : 
   12701             : /* #line 12702 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   12702             : 
   12703             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12704             : 
   12705           0 : SgNode* SgIntKeyedBidirectionalGraph::copy ( SgCopyHelp& help) const
   12706             :    {
   12707           0 :      SgIntKeyedBidirectionalGraph* result = NULL;
   12708             : 
   12709             :   // printf ("Copy SgIntKeyedBidirectionalGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   12710             : 
   12711             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   12712             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   12713             :   // The default value of the depth is 0, so after this call the depth is 1!
   12714           0 :      help.incrementDepth();
   12715             : 
   12716             : #if 0
   12717             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   12718             :   // but it is not generally true that things can only be copied once!
   12719             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   12720             :   // AstAttribute* existingAttribute = const_cast<SgIntKeyedBidirectionalGraph*>(this)->attribute["copied"];
   12721             :      bool previouslyCopied = const_cast<SgIntKeyedBidirectionalGraph*>(this)->attribute.exists("copied");
   12722             :      if (previouslyCopied == true)
   12723             :         {
   12724             :           this->get_file_info()->display("Called from copy SgIntKeyedBidirectionalGraph: debug");
   12725             :         }
   12726             :      ROSE_ASSERT(previouslyCopied == false);
   12727             : 
   12728             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   12729             :      AstAttribute* newAttribute = new AstAttribute();
   12730             :      ROSE_ASSERT(newAttribute != NULL);
   12731             : 
   12732             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   12733             :      const_cast<SgIntKeyedBidirectionalGraph*>(this)->attribute.add("copied",newAttribute);
   12734             : #endif
   12735             : 
   12736             :   // Copy data members from base classes
   12737             :   // Copy constructor parameter data member: name_copy
   12738             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   12739             :   // case: toBeCopied == COPY_DATA for name
   12740           0 :      std::string name_copy = p_name; 
   12741             :  
   12742             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12743             : 
   12744             :   // Build an empty copy of this object (will be filled in, but 
   12745             :   // the parent can't be set and must be set by the caller)
   12746           0 :      result = new SgIntKeyedBidirectionalGraph(  name_copy );
   12747           0 :      ROSE_ASSERT(result != NULL);
   12748             : 
   12749             :   // Copy data members of "this" class
   12750             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_node_map()
   12751             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_node_map
   12752             :   // case: toBeCopied == COPY_DATA for node_index_to_node_map
   12753           0 :      rose_graph_integer_node_hash_map node_index_to_node_map_copy = p_node_index_to_node_map; 
   12754           0 :      result->p_node_index_to_node_map = node_index_to_node_map_copy; 
   12755             :   // Copy non-constructor parameter data member (list access function): result->get_edge_index_to_edge_map()
   12756             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for edge_index_to_edge_map
   12757             :   // case: toBeCopied == COPY_DATA for edge_index_to_edge_map
   12758           0 :      rose_graph_integer_edge_hash_map edge_index_to_edge_map_copy = p_edge_index_to_edge_map; 
   12759           0 :      result->p_edge_index_to_edge_map = edge_index_to_edge_map_copy; 
   12760             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_pair_to_edge_multimap()
   12761             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_pair_to_edge_multimap
   12762             :   // case: toBeCopied == COPY_DATA for node_index_pair_to_edge_multimap
   12763           0 :      rose_graph_integerpair_edge_hash_multimap node_index_pair_to_edge_multimap_copy = p_node_index_pair_to_edge_multimap; 
   12764           0 :      result->p_node_index_pair_to_edge_multimap = node_index_pair_to_edge_multimap_copy; 
   12765             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_node_index_multimap()
   12766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_node_index_multimap
   12767             :   // case: toBeCopied == COPY_DATA for string_to_node_index_multimap
   12768           0 :      rose_graph_string_integer_hash_multimap string_to_node_index_multimap_copy = p_string_to_node_index_multimap; 
   12769           0 :      result->p_string_to_node_index_multimap = string_to_node_index_multimap_copy; 
   12770             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_edge_index_multimap()
   12771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_edge_index_multimap
   12772             :   // case: toBeCopied == COPY_DATA for string_to_edge_index_multimap
   12773           0 :      rose_graph_string_integer_hash_multimap string_to_edge_index_multimap_copy = p_string_to_edge_index_multimap; 
   12774           0 :      result->p_string_to_edge_index_multimap = string_to_edge_index_multimap_copy; 
   12775             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap()
   12776             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap
   12777             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap
   12778           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_copy = p_node_index_to_edge_multimap; 
   12779           0 :      result->p_node_index_to_edge_multimap = node_index_to_edge_multimap_copy; 
   12780             :   // Copy non-constructor parameter data member (access function): index_copy
   12781             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   12782             :   // case: toBeCopied == COPY_DATA for index
   12783           0 :      int index_copy = p_index; 
   12784           0 :      result->p_index = index_copy; 
   12785             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   12786             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   12787             :   // case: toBeCopied == COPY_DATA for index_counter
   12788           0 :      static int index_counter_copy = p_index_counter; 
   12789           0 :      result->p_index_counter = index_counter_copy; 
   12790             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edges()
   12791             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edges
   12792             :   // case: toBeCopied == COPY_DATA for boost_edges
   12793           0 :      SgBoostEdgeList boost_edges_copy = p_boost_edges; 
   12794           0 :      result->p_boost_edges = boost_edges_copy; 
   12795             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edge_weights()
   12796             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edge_weights
   12797             :   // case: toBeCopied == COPY_DATA for boost_edge_weights
   12798           0 :      SgBoostEdgeWeightList boost_edge_weights_copy = p_boost_edge_weights; 
   12799           0 :      result->p_boost_edge_weights = boost_edge_weights_copy; 
   12800             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   12801             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   12802             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   12803           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   12804           0 :      if ( p_attributeMechanism != NULL ) 
   12805             :         { 
   12806           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   12807             :         } 
   12808             :        else 
   12809             :         { 
   12810             :           attributeMechanism_copy = NULL; 
   12811             :         } 
   12812             :   /* check for a valid pointer and delete if present */ 
   12813           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   12814             :   /* add assignment to result here */ 
   12815           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   12816             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   12817             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   12818             :   // case: toBeCopied == COPY_DATA for properties
   12819           0 :      std::map<int, std::string> properties_copy = p_properties; 
   12820           0 :      result->p_properties = properties_copy; 
   12821             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap_edgesOut()
   12822             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap_edgesOut
   12823             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap_edgesOut
   12824           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_edgesOut_copy = p_node_index_to_edge_multimap_edgesOut; 
   12825           0 :      result->p_node_index_to_edge_multimap_edgesOut = node_index_to_edge_multimap_edgesOut_copy; 
   12826             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap_edgesIn()
   12827             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap_edgesIn
   12828             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap_edgesIn
   12829           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_edgesIn_copy = p_node_index_to_edge_multimap_edgesIn; 
   12830           0 :      result->p_node_index_to_edge_multimap_edgesIn = node_index_to_edge_multimap_edgesIn_copy; 
   12831             : 
   12832             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12833             : 
   12834             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   12835             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   12836             :   // fixupCopy(result,help);
   12837             : 
   12838             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   12839             :   // the Sg_File_Info objects that are built for the new IR nodes.
   12840           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   12841           0 :      if (locatedNode != NULL)
   12842             :         {
   12843             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   12844           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   12845           0 :           ROSE_ASSERT(start != NULL);
   12846             : #if 0
   12847             :        // Debugging information
   12848             :           if (start->get_parent() == NULL)
   12849             :              {
   12850             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12851             :              }
   12852             : #endif
   12853           0 :           start->set_parent(locatedNode);
   12854           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   12855             : 
   12856           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   12857             : 
   12858             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   12859             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   12860             :        // ROSE_ASSERT(end != NULL);
   12861           0 :           if (end == NULL)
   12862             :              {
   12863           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   12864             :              }
   12865             :             else
   12866             :              {
   12867             : #if 0
   12868             :             // Debugging information
   12869             :                if (end->get_parent() == NULL)
   12870             :                   {
   12871             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12872             :                   }
   12873             : #endif
   12874           0 :                end->set_parent(locatedNode);
   12875           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   12876             :              }
   12877             : 
   12878           0 :           SgExpression* expression = isSgExpression(result);
   12879           0 :           if (isSgExpression(this) != NULL)
   12880             :              {
   12881           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   12882             : 
   12883             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   12884           0 :                if (operatorPosition != NULL)
   12885             :                   {
   12886             : #if 0
   12887             :                  // Debugging information
   12888             :                     if (operatorPosition->get_parent() == NULL)
   12889             :                        {
   12890             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12891             :                        }
   12892             : #endif
   12893           0 :                     operatorPosition->set_parent(expression);
   12894           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   12895             :                   }
   12896             :              }
   12897             :         }
   12898             : 
   12899             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   12900           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   12901           0 :      if (initializedName != NULL)
   12902             :         {
   12903             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   12904           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   12905           0 :           ROSE_ASSERT(start != NULL);
   12906             : #if 0
   12907             :        // Debugging information
   12908             :           if (start->get_parent() == NULL)
   12909             :              {
   12910             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12911             :              }
   12912             : #endif
   12913           0 :           start->set_parent(initializedName);
   12914           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   12915             : 
   12916             : #if 0
   12917             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   12918             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   12919             : 
   12920             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   12921             :        // ROSE_ASSERT(end != NULL);
   12922             :           if (end == NULL)
   12923             :              {
   12924             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   12925             :              }
   12926             :             else
   12927             :              {
   12928             :                if (end->get_parent() == NULL)
   12929             :                   {
   12930             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   12931             :                   }
   12932             :                end->set_parent(initializedName);
   12933             :                ROSE_ASSERT(end->get_parent() != NULL);
   12934             :              }
   12935             : #endif
   12936             :         }
   12937             : 
   12938             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   12939           0 :      help.insertCopiedNodePair(this,result);
   12940             : 
   12941             :   // printf ("End of copy SgIntKeyedBidirectionalGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   12942             : 
   12943             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   12944             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   12945           0 :      help.decrementDepth();
   12946             : 
   12947             :   // Test if this is the root of the copy!
   12948           0 :      if (help.get_depth() == 0)
   12949             :         {
   12950             :        // This is the original calling node.
   12951             : 
   12952             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   12953             :        // printf ("Calling SgIntKeyedBidirectionalGraph::fixupCopy() (from root of AST being copied) \n");
   12954             : #if ALT_FIXUP_COPY
   12955             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   12956           0 :           fixupCopy_scopes (result,help);
   12957           0 :           fixupCopy_symbols (result,help);
   12958           0 :           fixupCopy_references (result,help);
   12959             : #else
   12960             :           fixupCopy(result,help);
   12961             : #endif
   12962             :        // Allow this to be called recursively, so accumulate the state.
   12963             :        // Also, clear the state in the SgCopyHelp object.
   12964             :        // help.clearState();
   12965             :         }
   12966             : 
   12967           0 :      return result;
   12968             :    }
   12969             : 
   12970             : 
   12971             : /* #line 12972 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   12972             : 
   12973             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   12974             : 
   12975           0 : SgNode* SgIncidenceUndirectedGraph::copy ( SgCopyHelp& help) const
   12976             :    {
   12977           0 :      SgIncidenceUndirectedGraph* result = NULL;
   12978             : 
   12979             :   // printf ("Copy SgIncidenceUndirectedGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   12980             : 
   12981             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   12982             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   12983             :   // The default value of the depth is 0, so after this call the depth is 1!
   12984           0 :      help.incrementDepth();
   12985             : 
   12986             : #if 0
   12987             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   12988             :   // but it is not generally true that things can only be copied once!
   12989             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   12990             :   // AstAttribute* existingAttribute = const_cast<SgIncidenceUndirectedGraph*>(this)->attribute["copied"];
   12991             :      bool previouslyCopied = const_cast<SgIncidenceUndirectedGraph*>(this)->attribute.exists("copied");
   12992             :      if (previouslyCopied == true)
   12993             :         {
   12994             :           this->get_file_info()->display("Called from copy SgIncidenceUndirectedGraph: debug");
   12995             :         }
   12996             :      ROSE_ASSERT(previouslyCopied == false);
   12997             : 
   12998             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   12999             :      AstAttribute* newAttribute = new AstAttribute();
   13000             :      ROSE_ASSERT(newAttribute != NULL);
   13001             : 
   13002             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   13003             :      const_cast<SgIncidenceUndirectedGraph*>(this)->attribute.add("copied",newAttribute);
   13004             : #endif
   13005             : 
   13006             :   // Copy data members from base classes
   13007             :   // Copy constructor parameter data member: name_copy
   13008             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   13009             :   // case: toBeCopied == COPY_DATA for name
   13010           0 :      std::string name_copy = p_name; 
   13011             :  
   13012             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13013             : 
   13014             :   // Build an empty copy of this object (will be filled in, but 
   13015             :   // the parent can't be set and must be set by the caller)
   13016           0 :      result = new SgIncidenceUndirectedGraph(  name_copy );
   13017           0 :      ROSE_ASSERT(result != NULL);
   13018             : 
   13019             :   // Copy data members of "this" class
   13020             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_node_map()
   13021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_node_map
   13022             :   // case: toBeCopied == COPY_DATA for node_index_to_node_map
   13023           0 :      rose_graph_integer_node_hash_map node_index_to_node_map_copy = p_node_index_to_node_map; 
   13024           0 :      result->p_node_index_to_node_map = node_index_to_node_map_copy; 
   13025             :   // Copy non-constructor parameter data member (list access function): result->get_edge_index_to_edge_map()
   13026             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for edge_index_to_edge_map
   13027             :   // case: toBeCopied == COPY_DATA for edge_index_to_edge_map
   13028           0 :      rose_graph_integer_edge_hash_map edge_index_to_edge_map_copy = p_edge_index_to_edge_map; 
   13029           0 :      result->p_edge_index_to_edge_map = edge_index_to_edge_map_copy; 
   13030             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_pair_to_edge_multimap()
   13031             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_pair_to_edge_multimap
   13032             :   // case: toBeCopied == COPY_DATA for node_index_pair_to_edge_multimap
   13033           0 :      rose_graph_integerpair_edge_hash_multimap node_index_pair_to_edge_multimap_copy = p_node_index_pair_to_edge_multimap; 
   13034           0 :      result->p_node_index_pair_to_edge_multimap = node_index_pair_to_edge_multimap_copy; 
   13035             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_node_index_multimap()
   13036             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_node_index_multimap
   13037             :   // case: toBeCopied == COPY_DATA for string_to_node_index_multimap
   13038           0 :      rose_graph_string_integer_hash_multimap string_to_node_index_multimap_copy = p_string_to_node_index_multimap; 
   13039           0 :      result->p_string_to_node_index_multimap = string_to_node_index_multimap_copy; 
   13040             :   // Copy non-constructor parameter data member (list access function): result->get_string_to_edge_index_multimap()
   13041             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_to_edge_index_multimap
   13042             :   // case: toBeCopied == COPY_DATA for string_to_edge_index_multimap
   13043           0 :      rose_graph_string_integer_hash_multimap string_to_edge_index_multimap_copy = p_string_to_edge_index_multimap; 
   13044           0 :      result->p_string_to_edge_index_multimap = string_to_edge_index_multimap_copy; 
   13045             :   // Copy non-constructor parameter data member (list access function): result->get_node_index_to_edge_multimap()
   13046             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_index_to_edge_multimap
   13047             :   // case: toBeCopied == COPY_DATA for node_index_to_edge_multimap
   13048           0 :      rose_graph_integer_edge_hash_multimap node_index_to_edge_multimap_copy = p_node_index_to_edge_multimap; 
   13049           0 :      result->p_node_index_to_edge_multimap = node_index_to_edge_multimap_copy; 
   13050             :   // Copy non-constructor parameter data member (access function): index_copy
   13051             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   13052             :   // case: toBeCopied == COPY_DATA for index
   13053           0 :      int index_copy = p_index; 
   13054           0 :      result->p_index = index_copy; 
   13055             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   13056             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   13057             :   // case: toBeCopied == COPY_DATA for index_counter
   13058           0 :      static int index_counter_copy = p_index_counter; 
   13059           0 :      result->p_index_counter = index_counter_copy; 
   13060             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edges()
   13061             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edges
   13062             :   // case: toBeCopied == COPY_DATA for boost_edges
   13063           0 :      SgBoostEdgeList boost_edges_copy = p_boost_edges; 
   13064           0 :      result->p_boost_edges = boost_edges_copy; 
   13065             :   // Copy non-constructor parameter data member (list access function): result->get_boost_edge_weights()
   13066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for boost_edge_weights
   13067             :   // case: toBeCopied == COPY_DATA for boost_edge_weights
   13068           0 :      SgBoostEdgeWeightList boost_edge_weights_copy = p_boost_edge_weights; 
   13069           0 :      result->p_boost_edge_weights = boost_edge_weights_copy; 
   13070             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   13071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   13072             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   13073           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   13074           0 :      if ( p_attributeMechanism != NULL ) 
   13075             :         { 
   13076           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   13077             :         } 
   13078             :        else 
   13079             :         { 
   13080             :           attributeMechanism_copy = NULL; 
   13081             :         } 
   13082             :   /* check for a valid pointer and delete if present */ 
   13083           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   13084             :   /* add assignment to result here */ 
   13085           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   13086             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   13087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   13088             :   // case: toBeCopied == COPY_DATA for properties
   13089           0 :      std::map<int, std::string> properties_copy = p_properties; 
   13090           0 :      result->p_properties = properties_copy; 
   13091             : 
   13092             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13093             : 
   13094             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   13095             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   13096             :   // fixupCopy(result,help);
   13097             : 
   13098             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   13099             :   // the Sg_File_Info objects that are built for the new IR nodes.
   13100           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   13101           0 :      if (locatedNode != NULL)
   13102             :         {
   13103             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   13104           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   13105           0 :           ROSE_ASSERT(start != NULL);
   13106             : #if 0
   13107             :        // Debugging information
   13108             :           if (start->get_parent() == NULL)
   13109             :              {
   13110             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13111             :              }
   13112             : #endif
   13113           0 :           start->set_parent(locatedNode);
   13114           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   13115             : 
   13116           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   13117             : 
   13118             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   13119             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   13120             :        // ROSE_ASSERT(end != NULL);
   13121           0 :           if (end == NULL)
   13122             :              {
   13123           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   13124             :              }
   13125             :             else
   13126             :              {
   13127             : #if 0
   13128             :             // Debugging information
   13129             :                if (end->get_parent() == NULL)
   13130             :                   {
   13131             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13132             :                   }
   13133             : #endif
   13134           0 :                end->set_parent(locatedNode);
   13135           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   13136             :              }
   13137             : 
   13138           0 :           SgExpression* expression = isSgExpression(result);
   13139           0 :           if (isSgExpression(this) != NULL)
   13140             :              {
   13141           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   13142             : 
   13143             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   13144           0 :                if (operatorPosition != NULL)
   13145             :                   {
   13146             : #if 0
   13147             :                  // Debugging information
   13148             :                     if (operatorPosition->get_parent() == NULL)
   13149             :                        {
   13150             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13151             :                        }
   13152             : #endif
   13153           0 :                     operatorPosition->set_parent(expression);
   13154           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   13155             :                   }
   13156             :              }
   13157             :         }
   13158             : 
   13159             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   13160           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   13161           0 :      if (initializedName != NULL)
   13162             :         {
   13163             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   13164           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   13165           0 :           ROSE_ASSERT(start != NULL);
   13166             : #if 0
   13167             :        // Debugging information
   13168             :           if (start->get_parent() == NULL)
   13169             :              {
   13170             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13171             :              }
   13172             : #endif
   13173           0 :           start->set_parent(initializedName);
   13174           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   13175             : 
   13176             : #if 0
   13177             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   13178             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   13179             : 
   13180             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   13181             :        // ROSE_ASSERT(end != NULL);
   13182             :           if (end == NULL)
   13183             :              {
   13184             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   13185             :              }
   13186             :             else
   13187             :              {
   13188             :                if (end->get_parent() == NULL)
   13189             :                   {
   13190             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13191             :                   }
   13192             :                end->set_parent(initializedName);
   13193             :                ROSE_ASSERT(end->get_parent() != NULL);
   13194             :              }
   13195             : #endif
   13196             :         }
   13197             : 
   13198             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   13199           0 :      help.insertCopiedNodePair(this,result);
   13200             : 
   13201             :   // printf ("End of copy SgIncidenceUndirectedGraph = %p = %s \n",this,SageInterface::get_name(this).c_str());
   13202             : 
   13203             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   13204             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   13205           0 :      help.decrementDepth();
   13206             : 
   13207             :   // Test if this is the root of the copy!
   13208           0 :      if (help.get_depth() == 0)
   13209             :         {
   13210             :        // This is the original calling node.
   13211             : 
   13212             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   13213             :        // printf ("Calling SgIncidenceUndirectedGraph::fixupCopy() (from root of AST being copied) \n");
   13214             : #if ALT_FIXUP_COPY
   13215             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   13216           0 :           fixupCopy_scopes (result,help);
   13217           0 :           fixupCopy_symbols (result,help);
   13218           0 :           fixupCopy_references (result,help);
   13219             : #else
   13220             :           fixupCopy(result,help);
   13221             : #endif
   13222             :        // Allow this to be called recursively, so accumulate the state.
   13223             :        // Also, clear the state in the SgCopyHelp object.
   13224             :        // help.clearState();
   13225             :         }
   13226             : 
   13227           0 :      return result;
   13228             :    }
   13229             : 
   13230             : 
   13231             : /* #line 13232 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   13232             : 
   13233             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13234             : 
   13235           0 : SgNode* SgGraphNode::copy ( SgCopyHelp& help) const
   13236             :    {
   13237           0 :      SgGraphNode* result = NULL;
   13238             : 
   13239             :   // printf ("Copy SgGraphNode = %p = %s \n",this,SageInterface::get_name(this).c_str());
   13240             : 
   13241             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   13242             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   13243             :   // The default value of the depth is 0, so after this call the depth is 1!
   13244           0 :      help.incrementDepth();
   13245             : 
   13246             : #if 0
   13247             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   13248             :   // but it is not generally true that things can only be copied once!
   13249             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   13250             :   // AstAttribute* existingAttribute = const_cast<SgGraphNode*>(this)->attribute["copied"];
   13251             :      bool previouslyCopied = const_cast<SgGraphNode*>(this)->attribute.exists("copied");
   13252             :      if (previouslyCopied == true)
   13253             :         {
   13254             :           this->get_file_info()->display("Called from copy SgGraphNode: debug");
   13255             :         }
   13256             :      ROSE_ASSERT(previouslyCopied == false);
   13257             : 
   13258             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   13259             :      AstAttribute* newAttribute = new AstAttribute();
   13260             :      ROSE_ASSERT(newAttribute != NULL);
   13261             : 
   13262             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   13263             :      const_cast<SgGraphNode*>(this)->attribute.add("copied",newAttribute);
   13264             : #endif
   13265             : 
   13266             :   // Copy data members from base classes
   13267             :   // Copy constructor parameter data member: name_copy
   13268             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   13269             :   // case: toBeCopied == COPY_DATA for name
   13270           0 :      std::string name_copy = p_name; 
   13271             :  
   13272             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13273             : 
   13274             :   // Build an empty copy of this object (will be filled in, but 
   13275             :   // the parent can't be set and must be set by the caller)
   13276           0 :      result = new SgGraphNode(  name_copy );
   13277           0 :      ROSE_ASSERT(result != NULL);
   13278             : 
   13279             :   // Copy data members of "this" class
   13280             :   // Copy non-constructor parameter data member (access function): SgNode_copy
   13281             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for SgNode
   13282             :   // case: toBeCopied == COPY_DATA for SgNode
   13283           0 :      SgNode* SgNode_copy = p_SgNode; 
   13284           0 :      result->p_SgNode = SgNode_copy; 
   13285             :   // Copy non-constructor parameter data member (access function): index_copy
   13286             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   13287             :   // case: toBeCopied == COPY_DATA for index
   13288           0 :      int index_copy = p_index; 
   13289           0 :      result->p_index = index_copy; 
   13290             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   13291             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   13292             :   // case: toBeCopied == COPY_DATA for index_counter
   13293           0 :      static int index_counter_copy = p_index_counter; 
   13294           0 :      result->p_index_counter = index_counter_copy; 
   13295             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   13296             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   13297             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   13298           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   13299           0 :      if ( p_attributeMechanism != NULL ) 
   13300             :         { 
   13301           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   13302             :         } 
   13303             :        else 
   13304             :         { 
   13305             :           attributeMechanism_copy = NULL; 
   13306             :         } 
   13307             :   /* check for a valid pointer and delete if present */ 
   13308           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   13309             :   /* add assignment to result here */ 
   13310           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   13311             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   13312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   13313             :   // case: toBeCopied == COPY_DATA for properties
   13314           0 :      std::map<int, std::string> properties_copy = p_properties; 
   13315           0 :      result->p_properties = properties_copy; 
   13316             : 
   13317             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13318             : 
   13319             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   13320             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   13321             :   // fixupCopy(result,help);
   13322             : 
   13323             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   13324             :   // the Sg_File_Info objects that are built for the new IR nodes.
   13325           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   13326           0 :      if (locatedNode != NULL)
   13327             :         {
   13328             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   13329           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   13330           0 :           ROSE_ASSERT(start != NULL);
   13331             : #if 0
   13332             :        // Debugging information
   13333             :           if (start->get_parent() == NULL)
   13334             :              {
   13335             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13336             :              }
   13337             : #endif
   13338           0 :           start->set_parent(locatedNode);
   13339           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   13340             : 
   13341           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   13342             : 
   13343             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   13344             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   13345             :        // ROSE_ASSERT(end != NULL);
   13346           0 :           if (end == NULL)
   13347             :              {
   13348           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   13349             :              }
   13350             :             else
   13351             :              {
   13352             : #if 0
   13353             :             // Debugging information
   13354             :                if (end->get_parent() == NULL)
   13355             :                   {
   13356             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13357             :                   }
   13358             : #endif
   13359           0 :                end->set_parent(locatedNode);
   13360           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   13361             :              }
   13362             : 
   13363           0 :           SgExpression* expression = isSgExpression(result);
   13364           0 :           if (isSgExpression(this) != NULL)
   13365             :              {
   13366           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   13367             : 
   13368             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   13369           0 :                if (operatorPosition != NULL)
   13370             :                   {
   13371             : #if 0
   13372             :                  // Debugging information
   13373             :                     if (operatorPosition->get_parent() == NULL)
   13374             :                        {
   13375             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13376             :                        }
   13377             : #endif
   13378           0 :                     operatorPosition->set_parent(expression);
   13379           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   13380             :                   }
   13381             :              }
   13382             :         }
   13383             : 
   13384             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   13385           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   13386           0 :      if (initializedName != NULL)
   13387             :         {
   13388             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   13389           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   13390           0 :           ROSE_ASSERT(start != NULL);
   13391             : #if 0
   13392             :        // Debugging information
   13393             :           if (start->get_parent() == NULL)
   13394             :              {
   13395             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13396             :              }
   13397             : #endif
   13398           0 :           start->set_parent(initializedName);
   13399           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   13400             : 
   13401             : #if 0
   13402             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   13403             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   13404             : 
   13405             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   13406             :        // ROSE_ASSERT(end != NULL);
   13407             :           if (end == NULL)
   13408             :              {
   13409             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   13410             :              }
   13411             :             else
   13412             :              {
   13413             :                if (end->get_parent() == NULL)
   13414             :                   {
   13415             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13416             :                   }
   13417             :                end->set_parent(initializedName);
   13418             :                ROSE_ASSERT(end->get_parent() != NULL);
   13419             :              }
   13420             : #endif
   13421             :         }
   13422             : 
   13423             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   13424           0 :      help.insertCopiedNodePair(this,result);
   13425             : 
   13426             :   // printf ("End of copy SgGraphNode = %p = %s \n",this,SageInterface::get_name(this).c_str());
   13427             : 
   13428             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   13429             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   13430           0 :      help.decrementDepth();
   13431             : 
   13432             :   // Test if this is the root of the copy!
   13433           0 :      if (help.get_depth() == 0)
   13434             :         {
   13435             :        // This is the original calling node.
   13436             : 
   13437             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   13438             :        // printf ("Calling SgGraphNode::fixupCopy() (from root of AST being copied) \n");
   13439             : #if ALT_FIXUP_COPY
   13440             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   13441           0 :           fixupCopy_scopes (result,help);
   13442           0 :           fixupCopy_symbols (result,help);
   13443           0 :           fixupCopy_references (result,help);
   13444             : #else
   13445             :           fixupCopy(result,help);
   13446             : #endif
   13447             :        // Allow this to be called recursively, so accumulate the state.
   13448             :        // Also, clear the state in the SgCopyHelp object.
   13449             :        // help.clearState();
   13450             :         }
   13451             : 
   13452           0 :      return result;
   13453             :    }
   13454             : 
   13455             : 
   13456             : /* #line 13457 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   13457             : 
   13458             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13459             : 
   13460           0 : SgNode* SgGraphEdge::copy ( SgCopyHelp& help) const
   13461             :    {
   13462           0 :      SgGraphEdge* result = NULL;
   13463             : 
   13464             :   // printf ("Copy SgGraphEdge = %p = %s \n",this,SageInterface::get_name(this).c_str());
   13465             : 
   13466             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   13467             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   13468             :   // The default value of the depth is 0, so after this call the depth is 1!
   13469           0 :      help.incrementDepth();
   13470             : 
   13471             : #if 0
   13472             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   13473             :   // but it is not generally true that things can only be copied once!
   13474             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   13475             :   // AstAttribute* existingAttribute = const_cast<SgGraphEdge*>(this)->attribute["copied"];
   13476             :      bool previouslyCopied = const_cast<SgGraphEdge*>(this)->attribute.exists("copied");
   13477             :      if (previouslyCopied == true)
   13478             :         {
   13479             :           this->get_file_info()->display("Called from copy SgGraphEdge: debug");
   13480             :         }
   13481             :      ROSE_ASSERT(previouslyCopied == false);
   13482             : 
   13483             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   13484             :      AstAttribute* newAttribute = new AstAttribute();
   13485             :      ROSE_ASSERT(newAttribute != NULL);
   13486             : 
   13487             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   13488             :      const_cast<SgGraphEdge*>(this)->attribute.add("copied",newAttribute);
   13489             : #endif
   13490             : 
   13491             :   // Copy data members from base classes
   13492             :   // Copy constructor parameter data member: node_A_copy
   13493             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_A
   13494             :   // case: toBeCopied == COPY_DATA for node_A
   13495           0 :      SgGraphNode* node_A_copy = p_node_A; 
   13496             :   // Copy constructor parameter data member: node_B_copy
   13497             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_B
   13498             :   // case: toBeCopied == COPY_DATA for node_B
   13499           0 :      SgGraphNode* node_B_copy = p_node_B; 
   13500             :   // Copy constructor parameter data member: name_copy
   13501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   13502             :   // case: toBeCopied == COPY_DATA for name
   13503           0 :      std::string name_copy = p_name; 
   13504             :  
   13505             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13506             : 
   13507             :   // Build an empty copy of this object (will be filled in, but 
   13508             :   // the parent can't be set and must be set by the caller)
   13509           0 :      result = new SgGraphEdge(  node_A_copy, node_B_copy, name_copy );
   13510           0 :      ROSE_ASSERT(result != NULL);
   13511             : 
   13512             :   // Copy data members of "this" class
   13513             :   // Copy non-constructor parameter data member (access function): index_copy
   13514             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   13515             :   // case: toBeCopied == COPY_DATA for index
   13516           0 :      int index_copy = p_index; 
   13517           0 :      result->p_index = index_copy; 
   13518             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   13519             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   13520             :   // case: toBeCopied == COPY_DATA for index_counter
   13521           0 :      static int index_counter_copy = p_index_counter; 
   13522           0 :      result->p_index_counter = index_counter_copy; 
   13523             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   13524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   13525             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   13526           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   13527           0 :      if ( p_attributeMechanism != NULL ) 
   13528             :         { 
   13529           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   13530             :         } 
   13531             :        else 
   13532             :         { 
   13533             :           attributeMechanism_copy = NULL; 
   13534             :         } 
   13535             :   /* check for a valid pointer and delete if present */ 
   13536           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   13537             :   /* add assignment to result here */ 
   13538           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   13539             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   13540             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   13541             :   // case: toBeCopied == COPY_DATA for properties
   13542           0 :      std::map<int, std::string> properties_copy = p_properties; 
   13543           0 :      result->p_properties = properties_copy; 
   13544             : 
   13545             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13546             : 
   13547             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   13548             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   13549             :   // fixupCopy(result,help);
   13550             : 
   13551             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   13552             :   // the Sg_File_Info objects that are built for the new IR nodes.
   13553           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   13554           0 :      if (locatedNode != NULL)
   13555             :         {
   13556             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   13557           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   13558           0 :           ROSE_ASSERT(start != NULL);
   13559             : #if 0
   13560             :        // Debugging information
   13561             :           if (start->get_parent() == NULL)
   13562             :              {
   13563             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13564             :              }
   13565             : #endif
   13566           0 :           start->set_parent(locatedNode);
   13567           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   13568             : 
   13569           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   13570             : 
   13571             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   13572             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   13573             :        // ROSE_ASSERT(end != NULL);
   13574           0 :           if (end == NULL)
   13575             :              {
   13576           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   13577             :              }
   13578             :             else
   13579             :              {
   13580             : #if 0
   13581             :             // Debugging information
   13582             :                if (end->get_parent() == NULL)
   13583             :                   {
   13584             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13585             :                   }
   13586             : #endif
   13587           0 :                end->set_parent(locatedNode);
   13588           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   13589             :              }
   13590             : 
   13591           0 :           SgExpression* expression = isSgExpression(result);
   13592           0 :           if (isSgExpression(this) != NULL)
   13593             :              {
   13594           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   13595             : 
   13596             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   13597           0 :                if (operatorPosition != NULL)
   13598             :                   {
   13599             : #if 0
   13600             :                  // Debugging information
   13601             :                     if (operatorPosition->get_parent() == NULL)
   13602             :                        {
   13603             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13604             :                        }
   13605             : #endif
   13606           0 :                     operatorPosition->set_parent(expression);
   13607           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   13608             :                   }
   13609             :              }
   13610             :         }
   13611             : 
   13612             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   13613           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   13614           0 :      if (initializedName != NULL)
   13615             :         {
   13616             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   13617           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   13618           0 :           ROSE_ASSERT(start != NULL);
   13619             : #if 0
   13620             :        // Debugging information
   13621             :           if (start->get_parent() == NULL)
   13622             :              {
   13623             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13624             :              }
   13625             : #endif
   13626           0 :           start->set_parent(initializedName);
   13627           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   13628             : 
   13629             : #if 0
   13630             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   13631             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   13632             : 
   13633             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   13634             :        // ROSE_ASSERT(end != NULL);
   13635             :           if (end == NULL)
   13636             :              {
   13637             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   13638             :              }
   13639             :             else
   13640             :              {
   13641             :                if (end->get_parent() == NULL)
   13642             :                   {
   13643             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13644             :                   }
   13645             :                end->set_parent(initializedName);
   13646             :                ROSE_ASSERT(end->get_parent() != NULL);
   13647             :              }
   13648             : #endif
   13649             :         }
   13650             : 
   13651             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   13652           0 :      help.insertCopiedNodePair(this,result);
   13653             : 
   13654             :   // printf ("End of copy SgGraphEdge = %p = %s \n",this,SageInterface::get_name(this).c_str());
   13655             : 
   13656             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   13657             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   13658           0 :      help.decrementDepth();
   13659             : 
   13660             :   // Test if this is the root of the copy!
   13661           0 :      if (help.get_depth() == 0)
   13662             :         {
   13663             :        // This is the original calling node.
   13664             : 
   13665             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   13666             :        // printf ("Calling SgGraphEdge::fixupCopy() (from root of AST being copied) \n");
   13667             : #if ALT_FIXUP_COPY
   13668             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   13669           0 :           fixupCopy_scopes (result,help);
   13670           0 :           fixupCopy_symbols (result,help);
   13671           0 :           fixupCopy_references (result,help);
   13672             : #else
   13673             :           fixupCopy(result,help);
   13674             : #endif
   13675             :        // Allow this to be called recursively, so accumulate the state.
   13676             :        // Also, clear the state in the SgCopyHelp object.
   13677             :        // help.clearState();
   13678             :         }
   13679             : 
   13680           0 :      return result;
   13681             :    }
   13682             : 
   13683             : 
   13684             : /* #line 13685 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   13685             : 
   13686             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13687             : 
   13688           0 : SgNode* SgDirectedGraphEdge::copy ( SgCopyHelp& help) const
   13689             :    {
   13690           0 :      SgDirectedGraphEdge* result = NULL;
   13691             : 
   13692             :   // printf ("Copy SgDirectedGraphEdge = %p = %s \n",this,SageInterface::get_name(this).c_str());
   13693             : 
   13694             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   13695             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   13696             :   // The default value of the depth is 0, so after this call the depth is 1!
   13697           0 :      help.incrementDepth();
   13698             : 
   13699             : #if 0
   13700             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   13701             :   // but it is not generally true that things can only be copied once!
   13702             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   13703             :   // AstAttribute* existingAttribute = const_cast<SgDirectedGraphEdge*>(this)->attribute["copied"];
   13704             :      bool previouslyCopied = const_cast<SgDirectedGraphEdge*>(this)->attribute.exists("copied");
   13705             :      if (previouslyCopied == true)
   13706             :         {
   13707             :           this->get_file_info()->display("Called from copy SgDirectedGraphEdge: debug");
   13708             :         }
   13709             :      ROSE_ASSERT(previouslyCopied == false);
   13710             : 
   13711             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   13712             :      AstAttribute* newAttribute = new AstAttribute();
   13713             :      ROSE_ASSERT(newAttribute != NULL);
   13714             : 
   13715             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   13716             :      const_cast<SgDirectedGraphEdge*>(this)->attribute.add("copied",newAttribute);
   13717             : #endif
   13718             : 
   13719             :   // Copy data members from base classes
   13720             :   // Copy constructor parameter data member: node_A_copy
   13721             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_A
   13722             :   // case: toBeCopied == COPY_DATA for node_A
   13723           0 :      SgGraphNode* node_A_copy = p_node_A; 
   13724             :   // Copy constructor parameter data member: node_B_copy
   13725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_B
   13726             :   // case: toBeCopied == COPY_DATA for node_B
   13727           0 :      SgGraphNode* node_B_copy = p_node_B; 
   13728             :   // Copy constructor parameter data member: name_copy
   13729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   13730             :   // case: toBeCopied == COPY_DATA for name
   13731           0 :      std::string name_copy = p_name; 
   13732             :  
   13733             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13734             : 
   13735             :   // Build an empty copy of this object (will be filled in, but 
   13736             :   // the parent can't be set and must be set by the caller)
   13737           0 :      result = new SgDirectedGraphEdge(  node_A_copy, node_B_copy, name_copy );
   13738           0 :      ROSE_ASSERT(result != NULL);
   13739             : 
   13740             :   // Copy data members of "this" class
   13741             :   // Copy non-constructor parameter data member (access function): index_copy
   13742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   13743             :   // case: toBeCopied == COPY_DATA for index
   13744           0 :      int index_copy = p_index; 
   13745           0 :      result->p_index = index_copy; 
   13746             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   13747             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   13748             :   // case: toBeCopied == COPY_DATA for index_counter
   13749           0 :      static int index_counter_copy = p_index_counter; 
   13750           0 :      result->p_index_counter = index_counter_copy; 
   13751             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   13752             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   13753             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   13754           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   13755           0 :      if ( p_attributeMechanism != NULL ) 
   13756             :         { 
   13757           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   13758             :         } 
   13759             :        else 
   13760             :         { 
   13761             :           attributeMechanism_copy = NULL; 
   13762             :         } 
   13763             :   /* check for a valid pointer and delete if present */ 
   13764           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   13765             :   /* add assignment to result here */ 
   13766           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   13767             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   13768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   13769             :   // case: toBeCopied == COPY_DATA for properties
   13770           0 :      std::map<int, std::string> properties_copy = p_properties; 
   13771           0 :      result->p_properties = properties_copy; 
   13772             : 
   13773             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13774             : 
   13775             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   13776             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   13777             :   // fixupCopy(result,help);
   13778             : 
   13779             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   13780             :   // the Sg_File_Info objects that are built for the new IR nodes.
   13781           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   13782           0 :      if (locatedNode != NULL)
   13783             :         {
   13784             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   13785           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   13786           0 :           ROSE_ASSERT(start != NULL);
   13787             : #if 0
   13788             :        // Debugging information
   13789             :           if (start->get_parent() == NULL)
   13790             :              {
   13791             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13792             :              }
   13793             : #endif
   13794           0 :           start->set_parent(locatedNode);
   13795           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   13796             : 
   13797           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   13798             : 
   13799             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   13800             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   13801             :        // ROSE_ASSERT(end != NULL);
   13802           0 :           if (end == NULL)
   13803             :              {
   13804           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   13805             :              }
   13806             :             else
   13807             :              {
   13808             : #if 0
   13809             :             // Debugging information
   13810             :                if (end->get_parent() == NULL)
   13811             :                   {
   13812             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13813             :                   }
   13814             : #endif
   13815           0 :                end->set_parent(locatedNode);
   13816           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   13817             :              }
   13818             : 
   13819           0 :           SgExpression* expression = isSgExpression(result);
   13820           0 :           if (isSgExpression(this) != NULL)
   13821             :              {
   13822           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   13823             : 
   13824             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   13825           0 :                if (operatorPosition != NULL)
   13826             :                   {
   13827             : #if 0
   13828             :                  // Debugging information
   13829             :                     if (operatorPosition->get_parent() == NULL)
   13830             :                        {
   13831             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13832             :                        }
   13833             : #endif
   13834           0 :                     operatorPosition->set_parent(expression);
   13835           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   13836             :                   }
   13837             :              }
   13838             :         }
   13839             : 
   13840             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   13841           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   13842           0 :      if (initializedName != NULL)
   13843             :         {
   13844             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   13845           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   13846           0 :           ROSE_ASSERT(start != NULL);
   13847             : #if 0
   13848             :        // Debugging information
   13849             :           if (start->get_parent() == NULL)
   13850             :              {
   13851             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13852             :              }
   13853             : #endif
   13854           0 :           start->set_parent(initializedName);
   13855           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   13856             : 
   13857             : #if 0
   13858             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   13859             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   13860             : 
   13861             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   13862             :        // ROSE_ASSERT(end != NULL);
   13863             :           if (end == NULL)
   13864             :              {
   13865             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   13866             :              }
   13867             :             else
   13868             :              {
   13869             :                if (end->get_parent() == NULL)
   13870             :                   {
   13871             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   13872             :                   }
   13873             :                end->set_parent(initializedName);
   13874             :                ROSE_ASSERT(end->get_parent() != NULL);
   13875             :              }
   13876             : #endif
   13877             :         }
   13878             : 
   13879             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   13880           0 :      help.insertCopiedNodePair(this,result);
   13881             : 
   13882             :   // printf ("End of copy SgDirectedGraphEdge = %p = %s \n",this,SageInterface::get_name(this).c_str());
   13883             : 
   13884             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   13885             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   13886           0 :      help.decrementDepth();
   13887             : 
   13888             :   // Test if this is the root of the copy!
   13889           0 :      if (help.get_depth() == 0)
   13890             :         {
   13891             :        // This is the original calling node.
   13892             : 
   13893             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   13894             :        // printf ("Calling SgDirectedGraphEdge::fixupCopy() (from root of AST being copied) \n");
   13895             : #if ALT_FIXUP_COPY
   13896             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   13897           0 :           fixupCopy_scopes (result,help);
   13898           0 :           fixupCopy_symbols (result,help);
   13899           0 :           fixupCopy_references (result,help);
   13900             : #else
   13901             :           fixupCopy(result,help);
   13902             : #endif
   13903             :        // Allow this to be called recursively, so accumulate the state.
   13904             :        // Also, clear the state in the SgCopyHelp object.
   13905             :        // help.clearState();
   13906             :         }
   13907             : 
   13908           0 :      return result;
   13909             :    }
   13910             : 
   13911             : 
   13912             : /* #line 13913 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   13913             : 
   13914             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13915             : 
   13916           0 : SgNode* SgUndirectedGraphEdge::copy ( SgCopyHelp& help) const
   13917             :    {
   13918           0 :      SgUndirectedGraphEdge* result = NULL;
   13919             : 
   13920             :   // printf ("Copy SgUndirectedGraphEdge = %p = %s \n",this,SageInterface::get_name(this).c_str());
   13921             : 
   13922             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   13923             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   13924             :   // The default value of the depth is 0, so after this call the depth is 1!
   13925           0 :      help.incrementDepth();
   13926             : 
   13927             : #if 0
   13928             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   13929             :   // but it is not generally true that things can only be copied once!
   13930             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   13931             :   // AstAttribute* existingAttribute = const_cast<SgUndirectedGraphEdge*>(this)->attribute["copied"];
   13932             :      bool previouslyCopied = const_cast<SgUndirectedGraphEdge*>(this)->attribute.exists("copied");
   13933             :      if (previouslyCopied == true)
   13934             :         {
   13935             :           this->get_file_info()->display("Called from copy SgUndirectedGraphEdge: debug");
   13936             :         }
   13937             :      ROSE_ASSERT(previouslyCopied == false);
   13938             : 
   13939             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   13940             :      AstAttribute* newAttribute = new AstAttribute();
   13941             :      ROSE_ASSERT(newAttribute != NULL);
   13942             : 
   13943             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   13944             :      const_cast<SgUndirectedGraphEdge*>(this)->attribute.add("copied",newAttribute);
   13945             : #endif
   13946             : 
   13947             :   // Copy data members from base classes
   13948             :   // Copy constructor parameter data member: node_A_copy
   13949             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_A
   13950             :   // case: toBeCopied == COPY_DATA for node_A
   13951           0 :      SgGraphNode* node_A_copy = p_node_A; 
   13952             :   // Copy constructor parameter data member: node_B_copy
   13953             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for node_B
   13954             :   // case: toBeCopied == COPY_DATA for node_B
   13955           0 :      SgGraphNode* node_B_copy = p_node_B; 
   13956             :   // Copy constructor parameter data member: name_copy
   13957             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   13958             :   // case: toBeCopied == COPY_DATA for name
   13959           0 :      std::string name_copy = p_name; 
   13960             :  
   13961             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   13962             : 
   13963             :   // Build an empty copy of this object (will be filled in, but 
   13964             :   // the parent can't be set and must be set by the caller)
   13965           0 :      result = new SgUndirectedGraphEdge(  node_A_copy, node_B_copy, name_copy );
   13966           0 :      ROSE_ASSERT(result != NULL);
   13967             : 
   13968             :   // Copy data members of "this" class
   13969             :   // Copy non-constructor parameter data member (access function): index_copy
   13970             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index
   13971             :   // case: toBeCopied == COPY_DATA for index
   13972           0 :      int index_copy = p_index; 
   13973           0 :      result->p_index = index_copy; 
   13974             :   // Copy non-constructor parameter data member (no access function): result->p_index_counter
   13975             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for index_counter
   13976             :   // case: toBeCopied == COPY_DATA for index_counter
   13977           0 :      static int index_counter_copy = p_index_counter; 
   13978           0 :      result->p_index_counter = index_counter_copy; 
   13979             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   13980             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   13981             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   13982           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   13983           0 :      if ( p_attributeMechanism != NULL ) 
   13984             :         { 
   13985           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   13986             :         } 
   13987             :        else 
   13988             :         { 
   13989             :           attributeMechanism_copy = NULL; 
   13990             :         } 
   13991             :   /* check for a valid pointer and delete if present */ 
   13992           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   13993             :   /* add assignment to result here */ 
   13994           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   13995             :   // Copy non-constructor parameter data member (list access function): result->get_properties()
   13996             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for properties
   13997             :   // case: toBeCopied == COPY_DATA for properties
   13998           0 :      std::map<int, std::string> properties_copy = p_properties; 
   13999           0 :      result->p_properties = properties_copy; 
   14000             : 
   14001             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   14002             : 
   14003             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   14004             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   14005             :   // fixupCopy(result,help);
   14006             : 
   14007             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   14008             :   // the Sg_File_Info objects that are built for the new IR nodes.
   14009           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   14010           0 :      if (locatedNode != NULL)
   14011             :         {
   14012             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14013           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   14014           0 :           ROSE_ASSERT(start != NULL);
   14015             : #if 0
   14016             :        // Debugging information
   14017             :           if (start->get_parent() == NULL)
   14018             :              {
   14019             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14020             :              }
   14021             : #endif
   14022           0 :           start->set_parent(locatedNode);
   14023           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14024             : 
   14025           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   14026             : 
   14027             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   14028             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   14029             :        // ROSE_ASSERT(end != NULL);
   14030           0 :           if (end == NULL)
   14031             :              {
   14032           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   14033             :              }
   14034             :             else
   14035             :              {
   14036             : #if 0
   14037             :             // Debugging information
   14038             :                if (end->get_parent() == NULL)
   14039             :                   {
   14040             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14041             :                   }
   14042             : #endif
   14043           0 :                end->set_parent(locatedNode);
   14044           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   14045             :              }
   14046             : 
   14047           0 :           SgExpression* expression = isSgExpression(result);
   14048           0 :           if (isSgExpression(this) != NULL)
   14049             :              {
   14050           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   14051             : 
   14052             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   14053           0 :                if (operatorPosition != NULL)
   14054             :                   {
   14055             : #if 0
   14056             :                  // Debugging information
   14057             :                     if (operatorPosition->get_parent() == NULL)
   14058             :                        {
   14059             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14060             :                        }
   14061             : #endif
   14062           0 :                     operatorPosition->set_parent(expression);
   14063           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   14064             :                   }
   14065             :              }
   14066             :         }
   14067             : 
   14068             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   14069           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   14070           0 :      if (initializedName != NULL)
   14071             :         {
   14072             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14073           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   14074           0 :           ROSE_ASSERT(start != NULL);
   14075             : #if 0
   14076             :        // Debugging information
   14077             :           if (start->get_parent() == NULL)
   14078             :              {
   14079             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14080             :              }
   14081             : #endif
   14082           0 :           start->set_parent(initializedName);
   14083           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14084             : 
   14085             : #if 0
   14086             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   14087             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   14088             : 
   14089             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   14090             :        // ROSE_ASSERT(end != NULL);
   14091             :           if (end == NULL)
   14092             :              {
   14093             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   14094             :              }
   14095             :             else
   14096             :              {
   14097             :                if (end->get_parent() == NULL)
   14098             :                   {
   14099             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14100             :                   }
   14101             :                end->set_parent(initializedName);
   14102             :                ROSE_ASSERT(end->get_parent() != NULL);
   14103             :              }
   14104             : #endif
   14105             :         }
   14106             : 
   14107             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   14108           0 :      help.insertCopiedNodePair(this,result);
   14109             : 
   14110             :   // printf ("End of copy SgUndirectedGraphEdge = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14111             : 
   14112             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14113             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14114           0 :      help.decrementDepth();
   14115             : 
   14116             :   // Test if this is the root of the copy!
   14117           0 :      if (help.get_depth() == 0)
   14118             :         {
   14119             :        // This is the original calling node.
   14120             : 
   14121             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   14122             :        // printf ("Calling SgUndirectedGraphEdge::fixupCopy() (from root of AST being copied) \n");
   14123             : #if ALT_FIXUP_COPY
   14124             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   14125           0 :           fixupCopy_scopes (result,help);
   14126           0 :           fixupCopy_symbols (result,help);
   14127           0 :           fixupCopy_references (result,help);
   14128             : #else
   14129             :           fixupCopy(result,help);
   14130             : #endif
   14131             :        // Allow this to be called recursively, so accumulate the state.
   14132             :        // Also, clear the state in the SgCopyHelp object.
   14133             :        // help.clearState();
   14134             :         }
   14135             : 
   14136           0 :      return result;
   14137             :    }
   14138             : 
   14139             : 
   14140             : /* #line 14141 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   14141             : 
   14142             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   14143             : 
   14144           0 : SgNode* SgGraphNodeList::copy ( SgCopyHelp& help) const
   14145             :    {
   14146           0 :      SgGraphNodeList* result = NULL;
   14147             : 
   14148             :   // printf ("Copy SgGraphNodeList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14149             : 
   14150             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14151             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14152             :   // The default value of the depth is 0, so after this call the depth is 1!
   14153           0 :      help.incrementDepth();
   14154             : 
   14155             : #if 0
   14156             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   14157             :   // but it is not generally true that things can only be copied once!
   14158             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   14159             :   // AstAttribute* existingAttribute = const_cast<SgGraphNodeList*>(this)->attribute["copied"];
   14160             :      bool previouslyCopied = const_cast<SgGraphNodeList*>(this)->attribute.exists("copied");
   14161             :      if (previouslyCopied == true)
   14162             :         {
   14163             :           this->get_file_info()->display("Called from copy SgGraphNodeList: debug");
   14164             :         }
   14165             :      ROSE_ASSERT(previouslyCopied == false);
   14166             : 
   14167             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   14168             :      AstAttribute* newAttribute = new AstAttribute();
   14169             :      ROSE_ASSERT(newAttribute != NULL);
   14170             : 
   14171             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   14172             :      const_cast<SgGraphNodeList*>(this)->attribute.add("copied",newAttribute);
   14173             : #endif
   14174             : 
   14175             :   // Copy data members from base classes
   14176             :  
   14177             : 
   14178             :   // Build an empty copy of this object (will be filled in, but 
   14179             :   // the parent can't be set and must be set by the caller)
   14180           0 :      result = new SgGraphNodeList(  );
   14181           0 :      ROSE_ASSERT(result != NULL);
   14182             : 
   14183             :   // Copy data members of "this" class
   14184             : 
   14185             : 
   14186             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   14187             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   14188             :   // fixupCopy(result,help);
   14189             : 
   14190             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   14191             :   // the Sg_File_Info objects that are built for the new IR nodes.
   14192           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   14193           0 :      if (locatedNode != NULL)
   14194             :         {
   14195             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14196           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   14197           0 :           ROSE_ASSERT(start != NULL);
   14198             : #if 0
   14199             :        // Debugging information
   14200             :           if (start->get_parent() == NULL)
   14201             :              {
   14202             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14203             :              }
   14204             : #endif
   14205           0 :           start->set_parent(locatedNode);
   14206           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14207             : 
   14208           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   14209             : 
   14210             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   14211             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   14212             :        // ROSE_ASSERT(end != NULL);
   14213           0 :           if (end == NULL)
   14214             :              {
   14215           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   14216             :              }
   14217             :             else
   14218             :              {
   14219             : #if 0
   14220             :             // Debugging information
   14221             :                if (end->get_parent() == NULL)
   14222             :                   {
   14223             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14224             :                   }
   14225             : #endif
   14226           0 :                end->set_parent(locatedNode);
   14227           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   14228             :              }
   14229             : 
   14230           0 :           SgExpression* expression = isSgExpression(result);
   14231           0 :           if (isSgExpression(this) != NULL)
   14232             :              {
   14233           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   14234             : 
   14235             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   14236           0 :                if (operatorPosition != NULL)
   14237             :                   {
   14238             : #if 0
   14239             :                  // Debugging information
   14240             :                     if (operatorPosition->get_parent() == NULL)
   14241             :                        {
   14242             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14243             :                        }
   14244             : #endif
   14245           0 :                     operatorPosition->set_parent(expression);
   14246           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   14247             :                   }
   14248             :              }
   14249             :         }
   14250             : 
   14251             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   14252           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   14253           0 :      if (initializedName != NULL)
   14254             :         {
   14255             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14256           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   14257           0 :           ROSE_ASSERT(start != NULL);
   14258             : #if 0
   14259             :        // Debugging information
   14260             :           if (start->get_parent() == NULL)
   14261             :              {
   14262             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14263             :              }
   14264             : #endif
   14265           0 :           start->set_parent(initializedName);
   14266           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14267             : 
   14268             : #if 0
   14269             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   14270             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   14271             : 
   14272             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   14273             :        // ROSE_ASSERT(end != NULL);
   14274             :           if (end == NULL)
   14275             :              {
   14276             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   14277             :              }
   14278             :             else
   14279             :              {
   14280             :                if (end->get_parent() == NULL)
   14281             :                   {
   14282             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14283             :                   }
   14284             :                end->set_parent(initializedName);
   14285             :                ROSE_ASSERT(end->get_parent() != NULL);
   14286             :              }
   14287             : #endif
   14288             :         }
   14289             : 
   14290             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   14291           0 :      help.insertCopiedNodePair(this,result);
   14292             : 
   14293             :   // printf ("End of copy SgGraphNodeList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14294             : 
   14295             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14296             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14297           0 :      help.decrementDepth();
   14298             : 
   14299             :   // Test if this is the root of the copy!
   14300           0 :      if (help.get_depth() == 0)
   14301             :         {
   14302             :        // This is the original calling node.
   14303             : 
   14304             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   14305             :        // printf ("Calling SgGraphNodeList::fixupCopy() (from root of AST being copied) \n");
   14306             : #if ALT_FIXUP_COPY
   14307             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   14308           0 :           fixupCopy_scopes (result,help);
   14309           0 :           fixupCopy_symbols (result,help);
   14310           0 :           fixupCopy_references (result,help);
   14311             : #else
   14312             :           fixupCopy(result,help);
   14313             : #endif
   14314             :        // Allow this to be called recursively, so accumulate the state.
   14315             :        // Also, clear the state in the SgCopyHelp object.
   14316             :        // help.clearState();
   14317             :         }
   14318             : 
   14319           0 :      return result;
   14320             :    }
   14321             : 
   14322             : 
   14323             : /* #line 14324 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   14324             : 
   14325             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   14326             : 
   14327           0 : SgNode* SgGraphEdgeList::copy ( SgCopyHelp& help) const
   14328             :    {
   14329           0 :      SgGraphEdgeList* result = NULL;
   14330             : 
   14331             :   // printf ("Copy SgGraphEdgeList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14332             : 
   14333             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14334             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14335             :   // The default value of the depth is 0, so after this call the depth is 1!
   14336           0 :      help.incrementDepth();
   14337             : 
   14338             : #if 0
   14339             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   14340             :   // but it is not generally true that things can only be copied once!
   14341             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   14342             :   // AstAttribute* existingAttribute = const_cast<SgGraphEdgeList*>(this)->attribute["copied"];
   14343             :      bool previouslyCopied = const_cast<SgGraphEdgeList*>(this)->attribute.exists("copied");
   14344             :      if (previouslyCopied == true)
   14345             :         {
   14346             :           this->get_file_info()->display("Called from copy SgGraphEdgeList: debug");
   14347             :         }
   14348             :      ROSE_ASSERT(previouslyCopied == false);
   14349             : 
   14350             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   14351             :      AstAttribute* newAttribute = new AstAttribute();
   14352             :      ROSE_ASSERT(newAttribute != NULL);
   14353             : 
   14354             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   14355             :      const_cast<SgGraphEdgeList*>(this)->attribute.add("copied",newAttribute);
   14356             : #endif
   14357             : 
   14358             :   // Copy data members from base classes
   14359             :  
   14360             : 
   14361             :   // Build an empty copy of this object (will be filled in, but 
   14362             :   // the parent can't be set and must be set by the caller)
   14363           0 :      result = new SgGraphEdgeList(  );
   14364           0 :      ROSE_ASSERT(result != NULL);
   14365             : 
   14366             :   // Copy data members of "this" class
   14367             : 
   14368             : 
   14369             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   14370             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   14371             :   // fixupCopy(result,help);
   14372             : 
   14373             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   14374             :   // the Sg_File_Info objects that are built for the new IR nodes.
   14375           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   14376           0 :      if (locatedNode != NULL)
   14377             :         {
   14378             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14379           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   14380           0 :           ROSE_ASSERT(start != NULL);
   14381             : #if 0
   14382             :        // Debugging information
   14383             :           if (start->get_parent() == NULL)
   14384             :              {
   14385             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14386             :              }
   14387             : #endif
   14388           0 :           start->set_parent(locatedNode);
   14389           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14390             : 
   14391           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   14392             : 
   14393             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   14394             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   14395             :        // ROSE_ASSERT(end != NULL);
   14396           0 :           if (end == NULL)
   14397             :              {
   14398           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   14399             :              }
   14400             :             else
   14401             :              {
   14402             : #if 0
   14403             :             // Debugging information
   14404             :                if (end->get_parent() == NULL)
   14405             :                   {
   14406             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14407             :                   }
   14408             : #endif
   14409           0 :                end->set_parent(locatedNode);
   14410           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   14411             :              }
   14412             : 
   14413           0 :           SgExpression* expression = isSgExpression(result);
   14414           0 :           if (isSgExpression(this) != NULL)
   14415             :              {
   14416           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   14417             : 
   14418             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   14419           0 :                if (operatorPosition != NULL)
   14420             :                   {
   14421             : #if 0
   14422             :                  // Debugging information
   14423             :                     if (operatorPosition->get_parent() == NULL)
   14424             :                        {
   14425             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14426             :                        }
   14427             : #endif
   14428           0 :                     operatorPosition->set_parent(expression);
   14429           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   14430             :                   }
   14431             :              }
   14432             :         }
   14433             : 
   14434             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   14435           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   14436           0 :      if (initializedName != NULL)
   14437             :         {
   14438             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14439           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   14440           0 :           ROSE_ASSERT(start != NULL);
   14441             : #if 0
   14442             :        // Debugging information
   14443             :           if (start->get_parent() == NULL)
   14444             :              {
   14445             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14446             :              }
   14447             : #endif
   14448           0 :           start->set_parent(initializedName);
   14449           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14450             : 
   14451             : #if 0
   14452             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   14453             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   14454             : 
   14455             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   14456             :        // ROSE_ASSERT(end != NULL);
   14457             :           if (end == NULL)
   14458             :              {
   14459             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   14460             :              }
   14461             :             else
   14462             :              {
   14463             :                if (end->get_parent() == NULL)
   14464             :                   {
   14465             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14466             :                   }
   14467             :                end->set_parent(initializedName);
   14468             :                ROSE_ASSERT(end->get_parent() != NULL);
   14469             :              }
   14470             : #endif
   14471             :         }
   14472             : 
   14473             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   14474           0 :      help.insertCopiedNodePair(this,result);
   14475             : 
   14476             :   // printf ("End of copy SgGraphEdgeList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14477             : 
   14478             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14479             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14480           0 :      help.decrementDepth();
   14481             : 
   14482             :   // Test if this is the root of the copy!
   14483           0 :      if (help.get_depth() == 0)
   14484             :         {
   14485             :        // This is the original calling node.
   14486             : 
   14487             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   14488             :        // printf ("Calling SgGraphEdgeList::fixupCopy() (from root of AST being copied) \n");
   14489             : #if ALT_FIXUP_COPY
   14490             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   14491           0 :           fixupCopy_scopes (result,help);
   14492           0 :           fixupCopy_symbols (result,help);
   14493           0 :           fixupCopy_references (result,help);
   14494             : #else
   14495             :           fixupCopy(result,help);
   14496             : #endif
   14497             :        // Allow this to be called recursively, so accumulate the state.
   14498             :        // Also, clear the state in the SgCopyHelp object.
   14499             :        // help.clearState();
   14500             :         }
   14501             : 
   14502           0 :      return result;
   14503             :    }
   14504             : 
   14505             : 
   14506             : /* #line 14507 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   14507             : 
   14508             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   14509             : 
   14510           0 : SgNode* SgTypeTable::copy ( SgCopyHelp& help) const
   14511             :    {
   14512           0 :      SgTypeTable* result = NULL;
   14513             : 
   14514             :   // printf ("Copy SgTypeTable = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14515             : 
   14516             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14517             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14518             :   // The default value of the depth is 0, so after this call the depth is 1!
   14519           0 :      help.incrementDepth();
   14520             : 
   14521             : #if 0
   14522             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   14523             :   // but it is not generally true that things can only be copied once!
   14524             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   14525             :   // AstAttribute* existingAttribute = const_cast<SgTypeTable*>(this)->attribute["copied"];
   14526             :      bool previouslyCopied = const_cast<SgTypeTable*>(this)->attribute.exists("copied");
   14527             :      if (previouslyCopied == true)
   14528             :         {
   14529             :           this->get_file_info()->display("Called from copy SgTypeTable: debug");
   14530             :         }
   14531             :      ROSE_ASSERT(previouslyCopied == false);
   14532             : 
   14533             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   14534             :      AstAttribute* newAttribute = new AstAttribute();
   14535             :      ROSE_ASSERT(newAttribute != NULL);
   14536             : 
   14537             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   14538             :      const_cast<SgTypeTable*>(this)->attribute.add("copied",newAttribute);
   14539             : #endif
   14540             : 
   14541             :   // Copy data members from base classes
   14542             :  
   14543             : 
   14544             :   // Build an empty copy of this object (will be filled in, but 
   14545             :   // the parent can't be set and must be set by the caller)
   14546           0 :      result = new SgTypeTable(  );
   14547           0 :      ROSE_ASSERT(result != NULL);
   14548             : 
   14549             :   // Copy data members of "this" class
   14550             :   // Copy non-constructor parameter data member (access function): type_table_copy
   14551             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_table
   14552             :   // case: toBeCopied == COPY_DATA for type_table
   14553           0 :      SgSymbolTable* type_table_copy = p_type_table; 
   14554           0 :      result->p_type_table = type_table_copy; 
   14555             : 
   14556             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   14557             : 
   14558             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   14559             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   14560             :   // fixupCopy(result,help);
   14561             : 
   14562             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   14563             :   // the Sg_File_Info objects that are built for the new IR nodes.
   14564           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   14565           0 :      if (locatedNode != NULL)
   14566             :         {
   14567             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14568           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   14569           0 :           ROSE_ASSERT(start != NULL);
   14570             : #if 0
   14571             :        // Debugging information
   14572             :           if (start->get_parent() == NULL)
   14573             :              {
   14574             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14575             :              }
   14576             : #endif
   14577           0 :           start->set_parent(locatedNode);
   14578           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14579             : 
   14580           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   14581             : 
   14582             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   14583             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   14584             :        // ROSE_ASSERT(end != NULL);
   14585           0 :           if (end == NULL)
   14586             :              {
   14587           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   14588             :              }
   14589             :             else
   14590             :              {
   14591             : #if 0
   14592             :             // Debugging information
   14593             :                if (end->get_parent() == NULL)
   14594             :                   {
   14595             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14596             :                   }
   14597             : #endif
   14598           0 :                end->set_parent(locatedNode);
   14599           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   14600             :              }
   14601             : 
   14602           0 :           SgExpression* expression = isSgExpression(result);
   14603           0 :           if (isSgExpression(this) != NULL)
   14604             :              {
   14605           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   14606             : 
   14607             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   14608           0 :                if (operatorPosition != NULL)
   14609             :                   {
   14610             : #if 0
   14611             :                  // Debugging information
   14612             :                     if (operatorPosition->get_parent() == NULL)
   14613             :                        {
   14614             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14615             :                        }
   14616             : #endif
   14617           0 :                     operatorPosition->set_parent(expression);
   14618           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   14619             :                   }
   14620             :              }
   14621             :         }
   14622             : 
   14623             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   14624           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   14625           0 :      if (initializedName != NULL)
   14626             :         {
   14627             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14628           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   14629           0 :           ROSE_ASSERT(start != NULL);
   14630             : #if 0
   14631             :        // Debugging information
   14632             :           if (start->get_parent() == NULL)
   14633             :              {
   14634             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14635             :              }
   14636             : #endif
   14637           0 :           start->set_parent(initializedName);
   14638           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14639             : 
   14640             : #if 0
   14641             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   14642             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   14643             : 
   14644             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   14645             :        // ROSE_ASSERT(end != NULL);
   14646             :           if (end == NULL)
   14647             :              {
   14648             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   14649             :              }
   14650             :             else
   14651             :              {
   14652             :                if (end->get_parent() == NULL)
   14653             :                   {
   14654             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14655             :                   }
   14656             :                end->set_parent(initializedName);
   14657             :                ROSE_ASSERT(end->get_parent() != NULL);
   14658             :              }
   14659             : #endif
   14660             :         }
   14661             : 
   14662             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   14663           0 :      help.insertCopiedNodePair(this,result);
   14664             : 
   14665             :   // printf ("End of copy SgTypeTable = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14666             : 
   14667             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14668             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14669           0 :      help.decrementDepth();
   14670             : 
   14671             :   // Test if this is the root of the copy!
   14672           0 :      if (help.get_depth() == 0)
   14673             :         {
   14674             :        // This is the original calling node.
   14675             : 
   14676             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   14677             :        // printf ("Calling SgTypeTable::fixupCopy() (from root of AST being copied) \n");
   14678             : #if ALT_FIXUP_COPY
   14679             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   14680           0 :           fixupCopy_scopes (result,help);
   14681           0 :           fixupCopy_symbols (result,help);
   14682           0 :           fixupCopy_references (result,help);
   14683             : #else
   14684             :           fixupCopy(result,help);
   14685             : #endif
   14686             :        // Allow this to be called recursively, so accumulate the state.
   14687             :        // Also, clear the state in the SgCopyHelp object.
   14688             :        // help.clearState();
   14689             :         }
   14690             : 
   14691           0 :      return result;
   14692             :    }
   14693             : 
   14694             : 
   14695             : /* #line 14696 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   14696             : 
   14697             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   14698             : 
   14699           0 : SgNode* SgNameGroup::copy ( SgCopyHelp& help) const
   14700             :    {
   14701           0 :      SgNameGroup* result = NULL;
   14702             : 
   14703             :   // printf ("Copy SgNameGroup = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14704             : 
   14705             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14706             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14707             :   // The default value of the depth is 0, so after this call the depth is 1!
   14708           0 :      help.incrementDepth();
   14709             : 
   14710             : #if 0
   14711             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   14712             :   // but it is not generally true that things can only be copied once!
   14713             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   14714             :   // AstAttribute* existingAttribute = const_cast<SgNameGroup*>(this)->attribute["copied"];
   14715             :      bool previouslyCopied = const_cast<SgNameGroup*>(this)->attribute.exists("copied");
   14716             :      if (previouslyCopied == true)
   14717             :         {
   14718             :           this->get_file_info()->display("Called from copy SgNameGroup: debug");
   14719             :         }
   14720             :      ROSE_ASSERT(previouslyCopied == false);
   14721             : 
   14722             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   14723             :      AstAttribute* newAttribute = new AstAttribute();
   14724             :      ROSE_ASSERT(newAttribute != NULL);
   14725             : 
   14726             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   14727             :      const_cast<SgNameGroup*>(this)->attribute.add("copied",newAttribute);
   14728             : #endif
   14729             : 
   14730             :   // Copy data members from base classes
   14731             :  
   14732             : 
   14733             :   // Build an empty copy of this object (will be filled in, but 
   14734             :   // the parent can't be set and must be set by the caller)
   14735           0 :      result = new SgNameGroup(  );
   14736           0 :      ROSE_ASSERT(result != NULL);
   14737             : 
   14738             :   // Copy data members of "this" class
   14739             :   // Copy non-constructor parameter data member (access function): group_name_copy
   14740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for group_name
   14741             :   // case: toBeCopied == COPY_DATA for group_name
   14742           0 :      std::string group_name_copy = p_group_name; 
   14743           0 :      result->p_group_name = group_name_copy; 
   14744             :   // Copy non-constructor parameter data member (no access function): result->p_name_list
   14745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_list
   14746             :   // case: toBeCopied == COPY_DATA for name_list
   14747           0 :      SgStringList name_list_copy = p_name_list; 
   14748           0 :      result->p_name_list = name_list_copy; 
   14749             : 
   14750             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   14751             : 
   14752             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   14753             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   14754             :   // fixupCopy(result,help);
   14755             : 
   14756             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   14757             :   // the Sg_File_Info objects that are built for the new IR nodes.
   14758           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   14759           0 :      if (locatedNode != NULL)
   14760             :         {
   14761             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14762           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   14763           0 :           ROSE_ASSERT(start != NULL);
   14764             : #if 0
   14765             :        // Debugging information
   14766             :           if (start->get_parent() == NULL)
   14767             :              {
   14768             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14769             :              }
   14770             : #endif
   14771           0 :           start->set_parent(locatedNode);
   14772           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14773             : 
   14774           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   14775             : 
   14776             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   14777             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   14778             :        // ROSE_ASSERT(end != NULL);
   14779           0 :           if (end == NULL)
   14780             :              {
   14781           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   14782             :              }
   14783             :             else
   14784             :              {
   14785             : #if 0
   14786             :             // Debugging information
   14787             :                if (end->get_parent() == NULL)
   14788             :                   {
   14789             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14790             :                   }
   14791             : #endif
   14792           0 :                end->set_parent(locatedNode);
   14793           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   14794             :              }
   14795             : 
   14796           0 :           SgExpression* expression = isSgExpression(result);
   14797           0 :           if (isSgExpression(this) != NULL)
   14798             :              {
   14799           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   14800             : 
   14801             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   14802           0 :                if (operatorPosition != NULL)
   14803             :                   {
   14804             : #if 0
   14805             :                  // Debugging information
   14806             :                     if (operatorPosition->get_parent() == NULL)
   14807             :                        {
   14808             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14809             :                        }
   14810             : #endif
   14811           0 :                     operatorPosition->set_parent(expression);
   14812           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   14813             :                   }
   14814             :              }
   14815             :         }
   14816             : 
   14817             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   14818           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   14819           0 :      if (initializedName != NULL)
   14820             :         {
   14821             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14822           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   14823           0 :           ROSE_ASSERT(start != NULL);
   14824             : #if 0
   14825             :        // Debugging information
   14826             :           if (start->get_parent() == NULL)
   14827             :              {
   14828             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14829             :              }
   14830             : #endif
   14831           0 :           start->set_parent(initializedName);
   14832           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14833             : 
   14834             : #if 0
   14835             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   14836             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   14837             : 
   14838             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   14839             :        // ROSE_ASSERT(end != NULL);
   14840             :           if (end == NULL)
   14841             :              {
   14842             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   14843             :              }
   14844             :             else
   14845             :              {
   14846             :                if (end->get_parent() == NULL)
   14847             :                   {
   14848             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14849             :                   }
   14850             :                end->set_parent(initializedName);
   14851             :                ROSE_ASSERT(end->get_parent() != NULL);
   14852             :              }
   14853             : #endif
   14854             :         }
   14855             : 
   14856             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   14857           0 :      help.insertCopiedNodePair(this,result);
   14858             : 
   14859             :   // printf ("End of copy SgNameGroup = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14860             : 
   14861             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14862             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14863           0 :      help.decrementDepth();
   14864             : 
   14865             :   // Test if this is the root of the copy!
   14866           0 :      if (help.get_depth() == 0)
   14867             :         {
   14868             :        // This is the original calling node.
   14869             : 
   14870             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   14871             :        // printf ("Calling SgNameGroup::fixupCopy() (from root of AST being copied) \n");
   14872             : #if ALT_FIXUP_COPY
   14873             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   14874           0 :           fixupCopy_scopes (result,help);
   14875           0 :           fixupCopy_symbols (result,help);
   14876           0 :           fixupCopy_references (result,help);
   14877             : #else
   14878             :           fixupCopy(result,help);
   14879             : #endif
   14880             :        // Allow this to be called recursively, so accumulate the state.
   14881             :        // Also, clear the state in the SgCopyHelp object.
   14882             :        // help.clearState();
   14883             :         }
   14884             : 
   14885           0 :      return result;
   14886             :    }
   14887             : 
   14888             : 
   14889             : /* #line 14890 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   14890             : 
   14891             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   14892             : 
   14893           0 : SgNode* SgDimensionObject::copy ( SgCopyHelp& help) const
   14894             :    {
   14895           0 :      SgDimensionObject* result = NULL;
   14896             : 
   14897             :   // printf ("Copy SgDimensionObject = %p = %s \n",this,SageInterface::get_name(this).c_str());
   14898             : 
   14899             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   14900             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   14901             :   // The default value of the depth is 0, so after this call the depth is 1!
   14902           0 :      help.incrementDepth();
   14903             : 
   14904             : #if 0
   14905             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   14906             :   // but it is not generally true that things can only be copied once!
   14907             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   14908             :   // AstAttribute* existingAttribute = const_cast<SgDimensionObject*>(this)->attribute["copied"];
   14909             :      bool previouslyCopied = const_cast<SgDimensionObject*>(this)->attribute.exists("copied");
   14910             :      if (previouslyCopied == true)
   14911             :         {
   14912             :           this->get_file_info()->display("Called from copy SgDimensionObject: debug");
   14913             :         }
   14914             :      ROSE_ASSERT(previouslyCopied == false);
   14915             : 
   14916             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   14917             :      AstAttribute* newAttribute = new AstAttribute();
   14918             :      ROSE_ASSERT(newAttribute != NULL);
   14919             : 
   14920             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   14921             :      const_cast<SgDimensionObject*>(this)->attribute.add("copied",newAttribute);
   14922             : #endif
   14923             : 
   14924             :   // Copy data members from base classes
   14925             :  
   14926             : 
   14927             :   // Build an empty copy of this object (will be filled in, but 
   14928             :   // the parent can't be set and must be set by the caller)
   14929           0 :      result = new SgDimensionObject(  );
   14930           0 :      ROSE_ASSERT(result != NULL);
   14931             : 
   14932             :   // Copy data members of "this" class
   14933             :   // Copy non-constructor parameter data member (access function): array_copy
   14934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for array
   14935             :   // case: toBeCopied == COPY_DATA for array
   14936           0 :      SgInitializedName* array_copy = p_array; 
   14937           0 :      result->p_array = array_copy; 
   14938             :   // Copy non-constructor parameter data member (access function): shape_copy
   14939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for shape
   14940             :   // case: toBeCopied == COPY_DATA for shape
   14941           0 :      SgExprListExp* shape_copy = p_shape; 
   14942           0 :      result->p_shape = shape_copy; 
   14943             : 
   14944             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   14945             : 
   14946             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   14947             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   14948             :   // fixupCopy(result,help);
   14949             : 
   14950             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   14951             :   // the Sg_File_Info objects that are built for the new IR nodes.
   14952           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   14953           0 :      if (locatedNode != NULL)
   14954             :         {
   14955             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   14956           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   14957           0 :           ROSE_ASSERT(start != NULL);
   14958             : #if 0
   14959             :        // Debugging information
   14960             :           if (start->get_parent() == NULL)
   14961             :              {
   14962             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14963             :              }
   14964             : #endif
   14965           0 :           start->set_parent(locatedNode);
   14966           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   14967             : 
   14968           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   14969             : 
   14970             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   14971             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   14972             :        // ROSE_ASSERT(end != NULL);
   14973           0 :           if (end == NULL)
   14974             :              {
   14975           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   14976             :              }
   14977             :             else
   14978             :              {
   14979             : #if 0
   14980             :             // Debugging information
   14981             :                if (end->get_parent() == NULL)
   14982             :                   {
   14983             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   14984             :                   }
   14985             : #endif
   14986           0 :                end->set_parent(locatedNode);
   14987           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   14988             :              }
   14989             : 
   14990           0 :           SgExpression* expression = isSgExpression(result);
   14991           0 :           if (isSgExpression(this) != NULL)
   14992             :              {
   14993           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   14994             : 
   14995             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   14996           0 :                if (operatorPosition != NULL)
   14997             :                   {
   14998             : #if 0
   14999             :                  // Debugging information
   15000             :                     if (operatorPosition->get_parent() == NULL)
   15001             :                        {
   15002             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15003             :                        }
   15004             : #endif
   15005           0 :                     operatorPosition->set_parent(expression);
   15006           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   15007             :                   }
   15008             :              }
   15009             :         }
   15010             : 
   15011             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   15012           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   15013           0 :      if (initializedName != NULL)
   15014             :         {
   15015             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   15016           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   15017           0 :           ROSE_ASSERT(start != NULL);
   15018             : #if 0
   15019             :        // Debugging information
   15020             :           if (start->get_parent() == NULL)
   15021             :              {
   15022             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15023             :              }
   15024             : #endif
   15025           0 :           start->set_parent(initializedName);
   15026           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   15027             : 
   15028             : #if 0
   15029             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   15030             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   15031             : 
   15032             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   15033             :        // ROSE_ASSERT(end != NULL);
   15034             :           if (end == NULL)
   15035             :              {
   15036             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   15037             :              }
   15038             :             else
   15039             :              {
   15040             :                if (end->get_parent() == NULL)
   15041             :                   {
   15042             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15043             :                   }
   15044             :                end->set_parent(initializedName);
   15045             :                ROSE_ASSERT(end->get_parent() != NULL);
   15046             :              }
   15047             : #endif
   15048             :         }
   15049             : 
   15050             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   15051           0 :      help.insertCopiedNodePair(this,result);
   15052             : 
   15053             :   // printf ("End of copy SgDimensionObject = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15054             : 
   15055             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15056             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15057           0 :      help.decrementDepth();
   15058             : 
   15059             :   // Test if this is the root of the copy!
   15060           0 :      if (help.get_depth() == 0)
   15061             :         {
   15062             :        // This is the original calling node.
   15063             : 
   15064             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   15065             :        // printf ("Calling SgDimensionObject::fixupCopy() (from root of AST being copied) \n");
   15066             : #if ALT_FIXUP_COPY
   15067             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   15068           0 :           fixupCopy_scopes (result,help);
   15069           0 :           fixupCopy_symbols (result,help);
   15070           0 :           fixupCopy_references (result,help);
   15071             : #else
   15072             :           fixupCopy(result,help);
   15073             : #endif
   15074             :        // Allow this to be called recursively, so accumulate the state.
   15075             :        // Also, clear the state in the SgCopyHelp object.
   15076             :        // help.clearState();
   15077             :         }
   15078             : 
   15079           0 :      return result;
   15080             :    }
   15081             : 
   15082             : 
   15083             : /* #line 15084 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   15084             : 
   15085             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15086             : 
   15087           0 : SgNode* SgFormatItem::copy ( SgCopyHelp& help) const
   15088             :    {
   15089           0 :      SgFormatItem* result = NULL;
   15090             : 
   15091             :   // printf ("Copy SgFormatItem = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15092             : 
   15093             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15094             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15095             :   // The default value of the depth is 0, so after this call the depth is 1!
   15096           0 :      help.incrementDepth();
   15097             : 
   15098             : #if 0
   15099             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   15100             :   // but it is not generally true that things can only be copied once!
   15101             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   15102             :   // AstAttribute* existingAttribute = const_cast<SgFormatItem*>(this)->attribute["copied"];
   15103             :      bool previouslyCopied = const_cast<SgFormatItem*>(this)->attribute.exists("copied");
   15104             :      if (previouslyCopied == true)
   15105             :         {
   15106             :           this->get_file_info()->display("Called from copy SgFormatItem: debug");
   15107             :         }
   15108             :      ROSE_ASSERT(previouslyCopied == false);
   15109             : 
   15110             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   15111             :      AstAttribute* newAttribute = new AstAttribute();
   15112             :      ROSE_ASSERT(newAttribute != NULL);
   15113             : 
   15114             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   15115             :      const_cast<SgFormatItem*>(this)->attribute.add("copied",newAttribute);
   15116             : #endif
   15117             : 
   15118             :   // Copy data members from base classes
   15119             :  
   15120             : 
   15121             :   // Build an empty copy of this object (will be filled in, but 
   15122             :   // the parent can't be set and must be set by the caller)
   15123           0 :      result = new SgFormatItem(  );
   15124           0 :      ROSE_ASSERT(result != NULL);
   15125             : 
   15126             :   // Copy data members of "this" class
   15127             :   // Copy non-constructor parameter data member (access function): repeat_specification_copy
   15128             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for repeat_specification
   15129             :   // case: toBeCopied == COPY_DATA for repeat_specification
   15130           0 :      int repeat_specification_copy = p_repeat_specification; 
   15131           0 :      result->p_repeat_specification = repeat_specification_copy; 
   15132             :   // Copy non-constructor parameter data member (access function): data_copy
   15133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for data
   15134             :   // case: toBeCopied == COPY_DATA for data
   15135           0 :      SgExpression* data_copy = p_data; 
   15136           0 :      result->p_data = data_copy; 
   15137             :   // Copy non-constructor parameter data member (access function): format_item_list_copy
   15138             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for format_item_list
   15139             :   // case: toBeCopied == COPY_DATA for format_item_list
   15140           0 :      SgFormatItemList* format_item_list_copy = p_format_item_list; 
   15141           0 :      result->p_format_item_list = format_item_list_copy; 
   15142             : 
   15143             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15144             : 
   15145             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   15146             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   15147             :   // fixupCopy(result,help);
   15148             : 
   15149             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   15150             :   // the Sg_File_Info objects that are built for the new IR nodes.
   15151           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   15152           0 :      if (locatedNode != NULL)
   15153             :         {
   15154             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   15155           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   15156           0 :           ROSE_ASSERT(start != NULL);
   15157             : #if 0
   15158             :        // Debugging information
   15159             :           if (start->get_parent() == NULL)
   15160             :              {
   15161             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15162             :              }
   15163             : #endif
   15164           0 :           start->set_parent(locatedNode);
   15165           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   15166             : 
   15167           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   15168             : 
   15169             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   15170             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   15171             :        // ROSE_ASSERT(end != NULL);
   15172           0 :           if (end == NULL)
   15173             :              {
   15174           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   15175             :              }
   15176             :             else
   15177             :              {
   15178             : #if 0
   15179             :             // Debugging information
   15180             :                if (end->get_parent() == NULL)
   15181             :                   {
   15182             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15183             :                   }
   15184             : #endif
   15185           0 :                end->set_parent(locatedNode);
   15186           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   15187             :              }
   15188             : 
   15189           0 :           SgExpression* expression = isSgExpression(result);
   15190           0 :           if (isSgExpression(this) != NULL)
   15191             :              {
   15192           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   15193             : 
   15194             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   15195           0 :                if (operatorPosition != NULL)
   15196             :                   {
   15197             : #if 0
   15198             :                  // Debugging information
   15199             :                     if (operatorPosition->get_parent() == NULL)
   15200             :                        {
   15201             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15202             :                        }
   15203             : #endif
   15204           0 :                     operatorPosition->set_parent(expression);
   15205           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   15206             :                   }
   15207             :              }
   15208             :         }
   15209             : 
   15210             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   15211           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   15212           0 :      if (initializedName != NULL)
   15213             :         {
   15214             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   15215           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   15216           0 :           ROSE_ASSERT(start != NULL);
   15217             : #if 0
   15218             :        // Debugging information
   15219             :           if (start->get_parent() == NULL)
   15220             :              {
   15221             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15222             :              }
   15223             : #endif
   15224           0 :           start->set_parent(initializedName);
   15225           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   15226             : 
   15227             : #if 0
   15228             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   15229             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   15230             : 
   15231             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   15232             :        // ROSE_ASSERT(end != NULL);
   15233             :           if (end == NULL)
   15234             :              {
   15235             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   15236             :              }
   15237             :             else
   15238             :              {
   15239             :                if (end->get_parent() == NULL)
   15240             :                   {
   15241             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15242             :                   }
   15243             :                end->set_parent(initializedName);
   15244             :                ROSE_ASSERT(end->get_parent() != NULL);
   15245             :              }
   15246             : #endif
   15247             :         }
   15248             : 
   15249             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   15250           0 :      help.insertCopiedNodePair(this,result);
   15251             : 
   15252             :   // printf ("End of copy SgFormatItem = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15253             : 
   15254             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15255             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15256           0 :      help.decrementDepth();
   15257             : 
   15258             :   // Test if this is the root of the copy!
   15259           0 :      if (help.get_depth() == 0)
   15260             :         {
   15261             :        // This is the original calling node.
   15262             : 
   15263             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   15264             :        // printf ("Calling SgFormatItem::fixupCopy() (from root of AST being copied) \n");
   15265             : #if ALT_FIXUP_COPY
   15266             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   15267           0 :           fixupCopy_scopes (result,help);
   15268           0 :           fixupCopy_symbols (result,help);
   15269           0 :           fixupCopy_references (result,help);
   15270             : #else
   15271             :           fixupCopy(result,help);
   15272             : #endif
   15273             :        // Allow this to be called recursively, so accumulate the state.
   15274             :        // Also, clear the state in the SgCopyHelp object.
   15275             :        // help.clearState();
   15276             :         }
   15277             : 
   15278           0 :      return result;
   15279             :    }
   15280             : 
   15281             : 
   15282             : /* #line 15283 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   15283             : 
   15284             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15285             : 
   15286           0 : SgNode* SgFormatItemList::copy ( SgCopyHelp& help) const
   15287             :    {
   15288           0 :      SgFormatItemList* result = NULL;
   15289             : 
   15290             :   // printf ("Copy SgFormatItemList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15291             : 
   15292             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15293             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15294             :   // The default value of the depth is 0, so after this call the depth is 1!
   15295           0 :      help.incrementDepth();
   15296             : 
   15297             : #if 0
   15298             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   15299             :   // but it is not generally true that things can only be copied once!
   15300             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   15301             :   // AstAttribute* existingAttribute = const_cast<SgFormatItemList*>(this)->attribute["copied"];
   15302             :      bool previouslyCopied = const_cast<SgFormatItemList*>(this)->attribute.exists("copied");
   15303             :      if (previouslyCopied == true)
   15304             :         {
   15305             :           this->get_file_info()->display("Called from copy SgFormatItemList: debug");
   15306             :         }
   15307             :      ROSE_ASSERT(previouslyCopied == false);
   15308             : 
   15309             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   15310             :      AstAttribute* newAttribute = new AstAttribute();
   15311             :      ROSE_ASSERT(newAttribute != NULL);
   15312             : 
   15313             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   15314             :      const_cast<SgFormatItemList*>(this)->attribute.add("copied",newAttribute);
   15315             : #endif
   15316             : 
   15317             :   // Copy data members from base classes
   15318             :  
   15319             : 
   15320             :   // Build an empty copy of this object (will be filled in, but 
   15321             :   // the parent can't be set and must be set by the caller)
   15322           0 :      result = new SgFormatItemList(  );
   15323           0 :      ROSE_ASSERT(result != NULL);
   15324             : 
   15325             :   // Copy data members of "this" class
   15326             :   // Copy non-constructor parameter data member (no access function): result->p_format_item_list
   15327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for format_item_list
   15328             :   // case: toBeCopied == COPY_DATA for format_item_list
   15329           0 :      SgFormatItemPtrList format_item_list_copy = p_format_item_list; 
   15330           0 :      result->p_format_item_list = format_item_list_copy; 
   15331             : 
   15332             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15333             : 
   15334             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   15335             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   15336             :   // fixupCopy(result,help);
   15337             : 
   15338             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   15339             :   // the Sg_File_Info objects that are built for the new IR nodes.
   15340           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   15341           0 :      if (locatedNode != NULL)
   15342             :         {
   15343             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   15344           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   15345           0 :           ROSE_ASSERT(start != NULL);
   15346             : #if 0
   15347             :        // Debugging information
   15348             :           if (start->get_parent() == NULL)
   15349             :              {
   15350             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15351             :              }
   15352             : #endif
   15353           0 :           start->set_parent(locatedNode);
   15354           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   15355             : 
   15356           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   15357             : 
   15358             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   15359             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   15360             :        // ROSE_ASSERT(end != NULL);
   15361           0 :           if (end == NULL)
   15362             :              {
   15363           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   15364             :              }
   15365             :             else
   15366             :              {
   15367             : #if 0
   15368             :             // Debugging information
   15369             :                if (end->get_parent() == NULL)
   15370             :                   {
   15371             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15372             :                   }
   15373             : #endif
   15374           0 :                end->set_parent(locatedNode);
   15375           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   15376             :              }
   15377             : 
   15378           0 :           SgExpression* expression = isSgExpression(result);
   15379           0 :           if (isSgExpression(this) != NULL)
   15380             :              {
   15381           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   15382             : 
   15383             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   15384           0 :                if (operatorPosition != NULL)
   15385             :                   {
   15386             : #if 0
   15387             :                  // Debugging information
   15388             :                     if (operatorPosition->get_parent() == NULL)
   15389             :                        {
   15390             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15391             :                        }
   15392             : #endif
   15393           0 :                     operatorPosition->set_parent(expression);
   15394           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   15395             :                   }
   15396             :              }
   15397             :         }
   15398             : 
   15399             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   15400           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   15401           0 :      if (initializedName != NULL)
   15402             :         {
   15403             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   15404           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   15405           0 :           ROSE_ASSERT(start != NULL);
   15406             : #if 0
   15407             :        // Debugging information
   15408             :           if (start->get_parent() == NULL)
   15409             :              {
   15410             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15411             :              }
   15412             : #endif
   15413           0 :           start->set_parent(initializedName);
   15414           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   15415             : 
   15416             : #if 0
   15417             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   15418             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   15419             : 
   15420             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   15421             :        // ROSE_ASSERT(end != NULL);
   15422             :           if (end == NULL)
   15423             :              {
   15424             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   15425             :              }
   15426             :             else
   15427             :              {
   15428             :                if (end->get_parent() == NULL)
   15429             :                   {
   15430             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15431             :                   }
   15432             :                end->set_parent(initializedName);
   15433             :                ROSE_ASSERT(end->get_parent() != NULL);
   15434             :              }
   15435             : #endif
   15436             :         }
   15437             : 
   15438             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   15439           0 :      help.insertCopiedNodePair(this,result);
   15440             : 
   15441             :   // printf ("End of copy SgFormatItemList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15442             : 
   15443             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15444             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15445           0 :      help.decrementDepth();
   15446             : 
   15447             :   // Test if this is the root of the copy!
   15448           0 :      if (help.get_depth() == 0)
   15449             :         {
   15450             :        // This is the original calling node.
   15451             : 
   15452             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   15453             :        // printf ("Calling SgFormatItemList::fixupCopy() (from root of AST being copied) \n");
   15454             : #if ALT_FIXUP_COPY
   15455             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   15456           0 :           fixupCopy_scopes (result,help);
   15457           0 :           fixupCopy_symbols (result,help);
   15458           0 :           fixupCopy_references (result,help);
   15459             : #else
   15460             :           fixupCopy(result,help);
   15461             : #endif
   15462             :        // Allow this to be called recursively, so accumulate the state.
   15463             :        // Also, clear the state in the SgCopyHelp object.
   15464             :        // help.clearState();
   15465             :         }
   15466             : 
   15467           0 :      return result;
   15468             :    }
   15469             : 
   15470             : 
   15471             : /* #line 15472 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   15472             : 
   15473             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15474             : 
   15475           0 : SgNode* SgDataStatementGroup::copy ( SgCopyHelp& help) const
   15476             :    {
   15477           0 :      SgDataStatementGroup* result = NULL;
   15478             : 
   15479             :   // printf ("Copy SgDataStatementGroup = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15480             : 
   15481             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15482             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15483             :   // The default value of the depth is 0, so after this call the depth is 1!
   15484           0 :      help.incrementDepth();
   15485             : 
   15486             : #if 0
   15487             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   15488             :   // but it is not generally true that things can only be copied once!
   15489             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   15490             :   // AstAttribute* existingAttribute = const_cast<SgDataStatementGroup*>(this)->attribute["copied"];
   15491             :      bool previouslyCopied = const_cast<SgDataStatementGroup*>(this)->attribute.exists("copied");
   15492             :      if (previouslyCopied == true)
   15493             :         {
   15494             :           this->get_file_info()->display("Called from copy SgDataStatementGroup: debug");
   15495             :         }
   15496             :      ROSE_ASSERT(previouslyCopied == false);
   15497             : 
   15498             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   15499             :      AstAttribute* newAttribute = new AstAttribute();
   15500             :      ROSE_ASSERT(newAttribute != NULL);
   15501             : 
   15502             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   15503             :      const_cast<SgDataStatementGroup*>(this)->attribute.add("copied",newAttribute);
   15504             : #endif
   15505             : 
   15506             :   // Copy data members from base classes
   15507             :  
   15508             : 
   15509             :   // Build an empty copy of this object (will be filled in, but 
   15510             :   // the parent can't be set and must be set by the caller)
   15511           0 :      result = new SgDataStatementGroup(  );
   15512           0 :      ROSE_ASSERT(result != NULL);
   15513             : 
   15514             :   // Copy data members of "this" class
   15515             :   // Copy non-constructor parameter data member (no access function): result->p_object_list
   15516             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for object_list
   15517             :   // case: toBeCopied == COPY_DATA for object_list
   15518           0 :      SgDataStatementObjectPtrList object_list_copy = p_object_list; 
   15519           0 :      result->p_object_list = object_list_copy; 
   15520             :   // Copy non-constructor parameter data member (no access function): result->p_value_list
   15521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value_list
   15522             :   // case: toBeCopied == COPY_DATA for value_list
   15523           0 :      SgDataStatementValuePtrList value_list_copy = p_value_list; 
   15524           0 :      result->p_value_list = value_list_copy; 
   15525             : 
   15526             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15527             : 
   15528             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   15529             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   15530             :   // fixupCopy(result,help);
   15531             : 
   15532             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   15533             :   // the Sg_File_Info objects that are built for the new IR nodes.
   15534           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   15535           0 :      if (locatedNode != NULL)
   15536             :         {
   15537             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   15538           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   15539           0 :           ROSE_ASSERT(start != NULL);
   15540             : #if 0
   15541             :        // Debugging information
   15542             :           if (start->get_parent() == NULL)
   15543             :              {
   15544             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15545             :              }
   15546             : #endif
   15547           0 :           start->set_parent(locatedNode);
   15548           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   15549             : 
   15550           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   15551             : 
   15552             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   15553             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   15554             :        // ROSE_ASSERT(end != NULL);
   15555           0 :           if (end == NULL)
   15556             :              {
   15557           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   15558             :              }
   15559             :             else
   15560             :              {
   15561             : #if 0
   15562             :             // Debugging information
   15563             :                if (end->get_parent() == NULL)
   15564             :                   {
   15565             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15566             :                   }
   15567             : #endif
   15568           0 :                end->set_parent(locatedNode);
   15569           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   15570             :              }
   15571             : 
   15572           0 :           SgExpression* expression = isSgExpression(result);
   15573           0 :           if (isSgExpression(this) != NULL)
   15574             :              {
   15575           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   15576             : 
   15577             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   15578           0 :                if (operatorPosition != NULL)
   15579             :                   {
   15580             : #if 0
   15581             :                  // Debugging information
   15582             :                     if (operatorPosition->get_parent() == NULL)
   15583             :                        {
   15584             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15585             :                        }
   15586             : #endif
   15587           0 :                     operatorPosition->set_parent(expression);
   15588           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   15589             :                   }
   15590             :              }
   15591             :         }
   15592             : 
   15593             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   15594           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   15595           0 :      if (initializedName != NULL)
   15596             :         {
   15597             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   15598           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   15599           0 :           ROSE_ASSERT(start != NULL);
   15600             : #if 0
   15601             :        // Debugging information
   15602             :           if (start->get_parent() == NULL)
   15603             :              {
   15604             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15605             :              }
   15606             : #endif
   15607           0 :           start->set_parent(initializedName);
   15608           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   15609             : 
   15610             : #if 0
   15611             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   15612             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   15613             : 
   15614             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   15615             :        // ROSE_ASSERT(end != NULL);
   15616             :           if (end == NULL)
   15617             :              {
   15618             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   15619             :              }
   15620             :             else
   15621             :              {
   15622             :                if (end->get_parent() == NULL)
   15623             :                   {
   15624             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15625             :                   }
   15626             :                end->set_parent(initializedName);
   15627             :                ROSE_ASSERT(end->get_parent() != NULL);
   15628             :              }
   15629             : #endif
   15630             :         }
   15631             : 
   15632             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   15633           0 :      help.insertCopiedNodePair(this,result);
   15634             : 
   15635             :   // printf ("End of copy SgDataStatementGroup = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15636             : 
   15637             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15638             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15639           0 :      help.decrementDepth();
   15640             : 
   15641             :   // Test if this is the root of the copy!
   15642           0 :      if (help.get_depth() == 0)
   15643             :         {
   15644             :        // This is the original calling node.
   15645             : 
   15646             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   15647             :        // printf ("Calling SgDataStatementGroup::fixupCopy() (from root of AST being copied) \n");
   15648             : #if ALT_FIXUP_COPY
   15649             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   15650           0 :           fixupCopy_scopes (result,help);
   15651           0 :           fixupCopy_symbols (result,help);
   15652           0 :           fixupCopy_references (result,help);
   15653             : #else
   15654             :           fixupCopy(result,help);
   15655             : #endif
   15656             :        // Allow this to be called recursively, so accumulate the state.
   15657             :        // Also, clear the state in the SgCopyHelp object.
   15658             :        // help.clearState();
   15659             :         }
   15660             : 
   15661           0 :      return result;
   15662             :    }
   15663             : 
   15664             : 
   15665             : /* #line 15666 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   15666             : 
   15667             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15668             : 
   15669           0 : SgNode* SgDataStatementObject::copy ( SgCopyHelp& help) const
   15670             :    {
   15671           0 :      SgDataStatementObject* result = NULL;
   15672             : 
   15673             :   // printf ("Copy SgDataStatementObject = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15674             : 
   15675             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15676             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15677             :   // The default value of the depth is 0, so after this call the depth is 1!
   15678           0 :      help.incrementDepth();
   15679             : 
   15680             : #if 0
   15681             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   15682             :   // but it is not generally true that things can only be copied once!
   15683             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   15684             :   // AstAttribute* existingAttribute = const_cast<SgDataStatementObject*>(this)->attribute["copied"];
   15685             :      bool previouslyCopied = const_cast<SgDataStatementObject*>(this)->attribute.exists("copied");
   15686             :      if (previouslyCopied == true)
   15687             :         {
   15688             :           this->get_file_info()->display("Called from copy SgDataStatementObject: debug");
   15689             :         }
   15690             :      ROSE_ASSERT(previouslyCopied == false);
   15691             : 
   15692             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   15693             :      AstAttribute* newAttribute = new AstAttribute();
   15694             :      ROSE_ASSERT(newAttribute != NULL);
   15695             : 
   15696             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   15697             :      const_cast<SgDataStatementObject*>(this)->attribute.add("copied",newAttribute);
   15698             : #endif
   15699             : 
   15700             :   // Copy data members from base classes
   15701             :  
   15702             : 
   15703             :   // Build an empty copy of this object (will be filled in, but 
   15704             :   // the parent can't be set and must be set by the caller)
   15705           0 :      result = new SgDataStatementObject(  );
   15706           0 :      ROSE_ASSERT(result != NULL);
   15707             : 
   15708             :   // Copy data members of "this" class
   15709             :   // Copy non-constructor parameter data member (access function): variableReference_list_copy
   15710             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for variableReference_list
   15711             :   // case: toBeCopied == COPY_DATA for variableReference_list
   15712           0 :      SgExprListExp* variableReference_list_copy = p_variableReference_list; 
   15713           0 :      result->p_variableReference_list = variableReference_list_copy; 
   15714             : 
   15715             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15716             : 
   15717             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   15718             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   15719             :   // fixupCopy(result,help);
   15720             : 
   15721             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   15722             :   // the Sg_File_Info objects that are built for the new IR nodes.
   15723           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   15724           0 :      if (locatedNode != NULL)
   15725             :         {
   15726             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   15727           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   15728           0 :           ROSE_ASSERT(start != NULL);
   15729             : #if 0
   15730             :        // Debugging information
   15731             :           if (start->get_parent() == NULL)
   15732             :              {
   15733             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15734             :              }
   15735             : #endif
   15736           0 :           start->set_parent(locatedNode);
   15737           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   15738             : 
   15739           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   15740             : 
   15741             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   15742             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   15743             :        // ROSE_ASSERT(end != NULL);
   15744           0 :           if (end == NULL)
   15745             :              {
   15746           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   15747             :              }
   15748             :             else
   15749             :              {
   15750             : #if 0
   15751             :             // Debugging information
   15752             :                if (end->get_parent() == NULL)
   15753             :                   {
   15754             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15755             :                   }
   15756             : #endif
   15757           0 :                end->set_parent(locatedNode);
   15758           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   15759             :              }
   15760             : 
   15761           0 :           SgExpression* expression = isSgExpression(result);
   15762           0 :           if (isSgExpression(this) != NULL)
   15763             :              {
   15764           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   15765             : 
   15766             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   15767           0 :                if (operatorPosition != NULL)
   15768             :                   {
   15769             : #if 0
   15770             :                  // Debugging information
   15771             :                     if (operatorPosition->get_parent() == NULL)
   15772             :                        {
   15773             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15774             :                        }
   15775             : #endif
   15776           0 :                     operatorPosition->set_parent(expression);
   15777           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   15778             :                   }
   15779             :              }
   15780             :         }
   15781             : 
   15782             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   15783           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   15784           0 :      if (initializedName != NULL)
   15785             :         {
   15786             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   15787           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   15788           0 :           ROSE_ASSERT(start != NULL);
   15789             : #if 0
   15790             :        // Debugging information
   15791             :           if (start->get_parent() == NULL)
   15792             :              {
   15793             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15794             :              }
   15795             : #endif
   15796           0 :           start->set_parent(initializedName);
   15797           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   15798             : 
   15799             : #if 0
   15800             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   15801             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   15802             : 
   15803             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   15804             :        // ROSE_ASSERT(end != NULL);
   15805             :           if (end == NULL)
   15806             :              {
   15807             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   15808             :              }
   15809             :             else
   15810             :              {
   15811             :                if (end->get_parent() == NULL)
   15812             :                   {
   15813             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   15814             :                   }
   15815             :                end->set_parent(initializedName);
   15816             :                ROSE_ASSERT(end->get_parent() != NULL);
   15817             :              }
   15818             : #endif
   15819             :         }
   15820             : 
   15821             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   15822           0 :      help.insertCopiedNodePair(this,result);
   15823             : 
   15824             :   // printf ("End of copy SgDataStatementObject = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15825             : 
   15826             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15827             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15828           0 :      help.decrementDepth();
   15829             : 
   15830             :   // Test if this is the root of the copy!
   15831           0 :      if (help.get_depth() == 0)
   15832             :         {
   15833             :        // This is the original calling node.
   15834             : 
   15835             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   15836             :        // printf ("Calling SgDataStatementObject::fixupCopy() (from root of AST being copied) \n");
   15837             : #if ALT_FIXUP_COPY
   15838             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   15839           0 :           fixupCopy_scopes (result,help);
   15840           0 :           fixupCopy_symbols (result,help);
   15841           0 :           fixupCopy_references (result,help);
   15842             : #else
   15843             :           fixupCopy(result,help);
   15844             : #endif
   15845             :        // Allow this to be called recursively, so accumulate the state.
   15846             :        // Also, clear the state in the SgCopyHelp object.
   15847             :        // help.clearState();
   15848             :         }
   15849             : 
   15850           0 :      return result;
   15851             :    }
   15852             : 
   15853             : 
   15854             : /* #line 15855 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   15855             : 
   15856             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15857             : 
   15858           0 : SgNode* SgIncludeFile::copy ( SgCopyHelp& help) const
   15859             :    {
   15860           0 :      SgIncludeFile* result = NULL;
   15861             : 
   15862             :   // printf ("Copy SgIncludeFile = %p = %s \n",this,SageInterface::get_name(this).c_str());
   15863             : 
   15864             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   15865             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   15866             :   // The default value of the depth is 0, so after this call the depth is 1!
   15867           0 :      help.incrementDepth();
   15868             : 
   15869             : #if 0
   15870             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   15871             :   // but it is not generally true that things can only be copied once!
   15872             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   15873             :   // AstAttribute* existingAttribute = const_cast<SgIncludeFile*>(this)->attribute["copied"];
   15874             :      bool previouslyCopied = const_cast<SgIncludeFile*>(this)->attribute.exists("copied");
   15875             :      if (previouslyCopied == true)
   15876             :         {
   15877             :           this->get_file_info()->display("Called from copy SgIncludeFile: debug");
   15878             :         }
   15879             :      ROSE_ASSERT(previouslyCopied == false);
   15880             : 
   15881             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   15882             :      AstAttribute* newAttribute = new AstAttribute();
   15883             :      ROSE_ASSERT(newAttribute != NULL);
   15884             : 
   15885             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   15886             :      const_cast<SgIncludeFile*>(this)->attribute.add("copied",newAttribute);
   15887             : #endif
   15888             : 
   15889             :   // Copy data members from base classes
   15890             :   // Copy constructor parameter data member: filename_copy
   15891             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for filename
   15892             :   // case: toBeCopied == COPY_DATA for filename
   15893           0 :      SgName filename_copy = p_filename; 
   15894             :  
   15895             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15896             : 
   15897             :   // Build an empty copy of this object (will be filled in, but 
   15898             :   // the parent can't be set and must be set by the caller)
   15899           0 :      result = new SgIncludeFile(  filename_copy );
   15900           0 :      ROSE_ASSERT(result != NULL);
   15901             : 
   15902             :   // Copy data members of "this" class
   15903             :   // Copy non-constructor parameter data member (access function): isIncludedMoreThanOnce_copy
   15904             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isIncludedMoreThanOnce
   15905             :   // case: toBeCopied == COPY_DATA for isIncludedMoreThanOnce
   15906           0 :      bool isIncludedMoreThanOnce_copy = p_isIncludedMoreThanOnce; 
   15907           0 :      result->p_isIncludedMoreThanOnce = isIncludedMoreThanOnce_copy; 
   15908             :   // Copy non-constructor parameter data member (access function): isPrimaryUse_copy
   15909             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isPrimaryUse
   15910             :   // case: toBeCopied == COPY_DATA for isPrimaryUse
   15911           0 :      bool isPrimaryUse_copy = p_isPrimaryUse; 
   15912           0 :      result->p_isPrimaryUse = isPrimaryUse_copy; 
   15913             :   // Copy non-constructor parameter data member (access function): file_hash_copy
   15914             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for file_hash
   15915             :   // case: toBeCopied == COPY_DATA for file_hash
   15916           0 :      std::string file_hash_copy = p_file_hash; 
   15917           0 :      result->p_file_hash = file_hash_copy; 
   15918             :   // Copy non-constructor parameter data member (access function): name_used_in_include_directive_copy
   15919             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_used_in_include_directive
   15920             :   // case: toBeCopied == COPY_DATA for name_used_in_include_directive
   15921           0 :      SgName name_used_in_include_directive_copy = p_name_used_in_include_directive; 
   15922           0 :      result->p_name_used_in_include_directive = name_used_in_include_directive_copy; 
   15923             :   // Copy non-constructor parameter data member (access function): isSystemInclude_copy
   15924             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isSystemInclude
   15925             :   // case: toBeCopied == COPY_DATA for isSystemInclude
   15926           0 :      bool isSystemInclude_copy = p_isSystemInclude; 
   15927           0 :      result->p_isSystemInclude = isSystemInclude_copy; 
   15928             :   // Copy non-constructor parameter data member (access function): isPreinclude_copy
   15929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isPreinclude
   15930             :   // case: toBeCopied == COPY_DATA for isPreinclude
   15931           0 :      bool isPreinclude_copy = p_isPreinclude; 
   15932           0 :      result->p_isPreinclude = isPreinclude_copy; 
   15933             :   // Copy non-constructor parameter data member (access function): requires_explict_path_for_unparsed_headers_copy
   15934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requires_explict_path_for_unparsed_headers
   15935             :   // case: toBeCopied == COPY_DATA for requires_explict_path_for_unparsed_headers
   15936           0 :      bool requires_explict_path_for_unparsed_headers_copy = p_requires_explict_path_for_unparsed_headers; 
   15937           0 :      result->p_requires_explict_path_for_unparsed_headers = requires_explict_path_for_unparsed_headers_copy; 
   15938             :   // Copy non-constructor parameter data member (access function): can_be_supported_using_token_based_unparsing_copy
   15939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for can_be_supported_using_token_based_unparsing
   15940             :   // case: toBeCopied == COPY_DATA for can_be_supported_using_token_based_unparsing
   15941           0 :      bool can_be_supported_using_token_based_unparsing_copy = p_can_be_supported_using_token_based_unparsing; 
   15942           0 :      result->p_can_be_supported_using_token_based_unparsing = can_be_supported_using_token_based_unparsing_copy; 
   15943             :   // Copy non-constructor parameter data member (access function): directory_prefix_copy
   15944             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directory_prefix
   15945             :   // case: toBeCopied == COPY_DATA for directory_prefix
   15946           0 :      SgName directory_prefix_copy = p_directory_prefix; 
   15947           0 :      result->p_directory_prefix = directory_prefix_copy; 
   15948             :   // Copy non-constructor parameter data member (access function): name_without_path_copy
   15949             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_without_path
   15950             :   // case: toBeCopied == COPY_DATA for name_without_path
   15951           0 :      SgName name_without_path_copy = p_name_without_path; 
   15952           0 :      result->p_name_without_path = name_without_path_copy; 
   15953             :   // Copy non-constructor parameter data member (access function): applicationRootDirectory_copy
   15954             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for applicationRootDirectory
   15955             :   // case: toBeCopied == COPY_DATA for applicationRootDirectory
   15956           0 :      SgName applicationRootDirectory_copy = p_applicationRootDirectory; 
   15957           0 :      result->p_applicationRootDirectory = applicationRootDirectory_copy; 
   15958             :   // Copy non-constructor parameter data member (access function): will_be_unparsed_copy
   15959             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for will_be_unparsed
   15960             :   // case: toBeCopied == COPY_DATA for will_be_unparsed
   15961           0 :      bool will_be_unparsed_copy = p_will_be_unparsed; 
   15962           0 :      result->p_will_be_unparsed = will_be_unparsed_copy; 
   15963             :   // Copy non-constructor parameter data member (access function): isRoseSystemInclude_copy
   15964             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isRoseSystemInclude
   15965             :   // case: toBeCopied == COPY_DATA for isRoseSystemInclude
   15966           0 :      bool isRoseSystemInclude_copy = p_isRoseSystemInclude; 
   15967           0 :      result->p_isRoseSystemInclude = isRoseSystemInclude_copy; 
   15968             :   // Copy non-constructor parameter data member (access function): from_system_include_dir_copy
   15969             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for from_system_include_dir
   15970             :   // case: toBeCopied == COPY_DATA for from_system_include_dir
   15971           0 :      bool from_system_include_dir_copy = p_from_system_include_dir; 
   15972           0 :      result->p_from_system_include_dir = from_system_include_dir_copy; 
   15973             :   // Copy non-constructor parameter data member (access function): preinclude_macros_only_copy
   15974             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preinclude_macros_only
   15975             :   // case: toBeCopied == COPY_DATA for preinclude_macros_only
   15976           0 :      bool preinclude_macros_only_copy = p_preinclude_macros_only; 
   15977           0 :      result->p_preinclude_macros_only = preinclude_macros_only_copy; 
   15978             :   // Copy non-constructor parameter data member (access function): isApplicationFile_copy
   15979             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isApplicationFile
   15980             :   // case: toBeCopied == COPY_DATA for isApplicationFile
   15981           0 :      bool isApplicationFile_copy = p_isApplicationFile; 
   15982           0 :      result->p_isApplicationFile = isApplicationFile_copy; 
   15983             :   // Copy non-constructor parameter data member (access function): isRootSourceFile_copy
   15984             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isRootSourceFile
   15985             :   // case: toBeCopied == COPY_DATA for isRootSourceFile
   15986           0 :      bool isRootSourceFile_copy = p_isRootSourceFile; 
   15987           0 :      result->p_isRootSourceFile = isRootSourceFile_copy; 
   15988             : 
   15989             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   15990             : 
   15991             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   15992             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   15993             :   // fixupCopy(result,help);
   15994             : 
   15995             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   15996             :   // the Sg_File_Info objects that are built for the new IR nodes.
   15997           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   15998           0 :      if (locatedNode != NULL)
   15999             :         {
   16000             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16001           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   16002           0 :           ROSE_ASSERT(start != NULL);
   16003             : #if 0
   16004             :        // Debugging information
   16005             :           if (start->get_parent() == NULL)
   16006             :              {
   16007             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16008             :              }
   16009             : #endif
   16010           0 :           start->set_parent(locatedNode);
   16011           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16012             : 
   16013           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   16014             : 
   16015             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   16016             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   16017             :        // ROSE_ASSERT(end != NULL);
   16018           0 :           if (end == NULL)
   16019             :              {
   16020           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   16021             :              }
   16022             :             else
   16023             :              {
   16024             : #if 0
   16025             :             // Debugging information
   16026             :                if (end->get_parent() == NULL)
   16027             :                   {
   16028             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16029             :                   }
   16030             : #endif
   16031           0 :                end->set_parent(locatedNode);
   16032           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   16033             :              }
   16034             : 
   16035           0 :           SgExpression* expression = isSgExpression(result);
   16036           0 :           if (isSgExpression(this) != NULL)
   16037             :              {
   16038           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   16039             : 
   16040             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   16041           0 :                if (operatorPosition != NULL)
   16042             :                   {
   16043             : #if 0
   16044             :                  // Debugging information
   16045             :                     if (operatorPosition->get_parent() == NULL)
   16046             :                        {
   16047             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16048             :                        }
   16049             : #endif
   16050           0 :                     operatorPosition->set_parent(expression);
   16051           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   16052             :                   }
   16053             :              }
   16054             :         }
   16055             : 
   16056             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   16057           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   16058           0 :      if (initializedName != NULL)
   16059             :         {
   16060             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16061           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   16062           0 :           ROSE_ASSERT(start != NULL);
   16063             : #if 0
   16064             :        // Debugging information
   16065             :           if (start->get_parent() == NULL)
   16066             :              {
   16067             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16068             :              }
   16069             : #endif
   16070           0 :           start->set_parent(initializedName);
   16071           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16072             : 
   16073             : #if 0
   16074             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   16075             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   16076             : 
   16077             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   16078             :        // ROSE_ASSERT(end != NULL);
   16079             :           if (end == NULL)
   16080             :              {
   16081             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   16082             :              }
   16083             :             else
   16084             :              {
   16085             :                if (end->get_parent() == NULL)
   16086             :                   {
   16087             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16088             :                   }
   16089             :                end->set_parent(initializedName);
   16090             :                ROSE_ASSERT(end->get_parent() != NULL);
   16091             :              }
   16092             : #endif
   16093             :         }
   16094             : 
   16095             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   16096           0 :      help.insertCopiedNodePair(this,result);
   16097             : 
   16098             :   // printf ("End of copy SgIncludeFile = %p = %s \n",this,SageInterface::get_name(this).c_str());
   16099             : 
   16100             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   16101             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   16102           0 :      help.decrementDepth();
   16103             : 
   16104             :   // Test if this is the root of the copy!
   16105           0 :      if (help.get_depth() == 0)
   16106             :         {
   16107             :        // This is the original calling node.
   16108             : 
   16109             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   16110             :        // printf ("Calling SgIncludeFile::fixupCopy() (from root of AST being copied) \n");
   16111             : #if ALT_FIXUP_COPY
   16112             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   16113           0 :           fixupCopy_scopes (result,help);
   16114           0 :           fixupCopy_symbols (result,help);
   16115           0 :           fixupCopy_references (result,help);
   16116             : #else
   16117             :           fixupCopy(result,help);
   16118             : #endif
   16119             :        // Allow this to be called recursively, so accumulate the state.
   16120             :        // Also, clear the state in the SgCopyHelp object.
   16121             :        // help.clearState();
   16122             :         }
   16123             : 
   16124           0 :      return result;
   16125             :    }
   16126             : 
   16127             : 
   16128             : /* #line 16129 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   16129             : 
   16130             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   16131             : 
   16132           0 : SgNode* SgDataStatementValue::copy ( SgCopyHelp& help) const
   16133             :    {
   16134           0 :      SgDataStatementValue* result = NULL;
   16135             : 
   16136             :   // printf ("Copy SgDataStatementValue = %p = %s \n",this,SageInterface::get_name(this).c_str());
   16137             : 
   16138             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   16139             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   16140             :   // The default value of the depth is 0, so after this call the depth is 1!
   16141           0 :      help.incrementDepth();
   16142             : 
   16143             : #if 0
   16144             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   16145             :   // but it is not generally true that things can only be copied once!
   16146             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   16147             :   // AstAttribute* existingAttribute = const_cast<SgDataStatementValue*>(this)->attribute["copied"];
   16148             :      bool previouslyCopied = const_cast<SgDataStatementValue*>(this)->attribute.exists("copied");
   16149             :      if (previouslyCopied == true)
   16150             :         {
   16151             :           this->get_file_info()->display("Called from copy SgDataStatementValue: debug");
   16152             :         }
   16153             :      ROSE_ASSERT(previouslyCopied == false);
   16154             : 
   16155             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   16156             :      AstAttribute* newAttribute = new AstAttribute();
   16157             :      ROSE_ASSERT(newAttribute != NULL);
   16158             : 
   16159             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   16160             :      const_cast<SgDataStatementValue*>(this)->attribute.add("copied",newAttribute);
   16161             : #endif
   16162             : 
   16163             :   // Copy data members from base classes
   16164             :   // Copy constructor parameter data member: data_initialization_format_copy
   16165             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for data_initialization_format
   16166             :   // case: toBeCopied == COPY_DATA for data_initialization_format
   16167           0 :      SgDataStatementValue::data_statement_value_enum data_initialization_format_copy = p_data_initialization_format; 
   16168             :  
   16169             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   16170             : 
   16171             :   // Build an empty copy of this object (will be filled in, but 
   16172             :   // the parent can't be set and must be set by the caller)
   16173           0 :      result = new SgDataStatementValue(  data_initialization_format_copy );
   16174           0 :      ROSE_ASSERT(result != NULL);
   16175             : 
   16176             :   // Copy data members of "this" class
   16177             :   // Copy non-constructor parameter data member (access function): initializer_list_copy
   16178             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for initializer_list
   16179             :   // case: toBeCopied == COPY_DATA for initializer_list
   16180           0 :      SgExprListExp* initializer_list_copy = p_initializer_list; 
   16181           0 :      result->p_initializer_list = initializer_list_copy; 
   16182             :   // Copy non-constructor parameter data member (access function): repeat_expression_copy
   16183             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for repeat_expression
   16184             :   // case: toBeCopied == COPY_DATA for repeat_expression
   16185           0 :      SgExpression* repeat_expression_copy = p_repeat_expression; 
   16186           0 :      result->p_repeat_expression = repeat_expression_copy; 
   16187             :   // Copy non-constructor parameter data member (access function): constant_expression_copy
   16188             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for constant_expression
   16189             :   // case: toBeCopied == COPY_DATA for constant_expression
   16190           0 :      SgExpression* constant_expression_copy = p_constant_expression; 
   16191           0 :      result->p_constant_expression = constant_expression_copy; 
   16192             : 
   16193             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   16194             : 
   16195             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   16196             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   16197             :   // fixupCopy(result,help);
   16198             : 
   16199             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   16200             :   // the Sg_File_Info objects that are built for the new IR nodes.
   16201           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   16202           0 :      if (locatedNode != NULL)
   16203             :         {
   16204             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16205           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   16206           0 :           ROSE_ASSERT(start != NULL);
   16207             : #if 0
   16208             :        // Debugging information
   16209             :           if (start->get_parent() == NULL)
   16210             :              {
   16211             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16212             :              }
   16213             : #endif
   16214           0 :           start->set_parent(locatedNode);
   16215           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16216             : 
   16217           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   16218             : 
   16219             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   16220             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   16221             :        // ROSE_ASSERT(end != NULL);
   16222           0 :           if (end == NULL)
   16223             :              {
   16224           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   16225             :              }
   16226             :             else
   16227             :              {
   16228             : #if 0
   16229             :             // Debugging information
   16230             :                if (end->get_parent() == NULL)
   16231             :                   {
   16232             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16233             :                   }
   16234             : #endif
   16235           0 :                end->set_parent(locatedNode);
   16236           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   16237             :              }
   16238             : 
   16239           0 :           SgExpression* expression = isSgExpression(result);
   16240           0 :           if (isSgExpression(this) != NULL)
   16241             :              {
   16242           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   16243             : 
   16244             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   16245           0 :                if (operatorPosition != NULL)
   16246             :                   {
   16247             : #if 0
   16248             :                  // Debugging information
   16249             :                     if (operatorPosition->get_parent() == NULL)
   16250             :                        {
   16251             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16252             :                        }
   16253             : #endif
   16254           0 :                     operatorPosition->set_parent(expression);
   16255           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   16256             :                   }
   16257             :              }
   16258             :         }
   16259             : 
   16260             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   16261           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   16262           0 :      if (initializedName != NULL)
   16263             :         {
   16264             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16265           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   16266           0 :           ROSE_ASSERT(start != NULL);
   16267             : #if 0
   16268             :        // Debugging information
   16269             :           if (start->get_parent() == NULL)
   16270             :              {
   16271             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16272             :              }
   16273             : #endif
   16274           0 :           start->set_parent(initializedName);
   16275           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16276             : 
   16277             : #if 0
   16278             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   16279             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   16280             : 
   16281             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   16282             :        // ROSE_ASSERT(end != NULL);
   16283             :           if (end == NULL)
   16284             :              {
   16285             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   16286             :              }
   16287             :             else
   16288             :              {
   16289             :                if (end->get_parent() == NULL)
   16290             :                   {
   16291             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16292             :                   }
   16293             :                end->set_parent(initializedName);
   16294             :                ROSE_ASSERT(end->get_parent() != NULL);
   16295             :              }
   16296             : #endif
   16297             :         }
   16298             : 
   16299             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   16300           0 :      help.insertCopiedNodePair(this,result);
   16301             : 
   16302             :   // printf ("End of copy SgDataStatementValue = %p = %s \n",this,SageInterface::get_name(this).c_str());
   16303             : 
   16304             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   16305             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   16306           0 :      help.decrementDepth();
   16307             : 
   16308             :   // Test if this is the root of the copy!
   16309           0 :      if (help.get_depth() == 0)
   16310             :         {
   16311             :        // This is the original calling node.
   16312             : 
   16313             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   16314             :        // printf ("Calling SgDataStatementValue::fixupCopy() (from root of AST being copied) \n");
   16315             : #if ALT_FIXUP_COPY
   16316             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   16317           0 :           fixupCopy_scopes (result,help);
   16318           0 :           fixupCopy_symbols (result,help);
   16319           0 :           fixupCopy_references (result,help);
   16320             : #else
   16321             :           fixupCopy(result,help);
   16322             : #endif
   16323             :        // Allow this to be called recursively, so accumulate the state.
   16324             :        // Also, clear the state in the SgCopyHelp object.
   16325             :        // help.clearState();
   16326             :         }
   16327             : 
   16328           0 :      return result;
   16329             :    }
   16330             : 
   16331             : 
   16332             : /* #line 16333 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   16333             : 
   16334             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   16335             : 
   16336           0 : SgNode* SgHeaderFileReport::copy ( SgCopyHelp& help) const
   16337             :    {
   16338           0 :      SgHeaderFileReport* result = NULL;
   16339             : 
   16340             :   // printf ("Copy SgHeaderFileReport = %p = %s \n",this,SageInterface::get_name(this).c_str());
   16341             : 
   16342             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   16343             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   16344             :   // The default value of the depth is 0, so after this call the depth is 1!
   16345           0 :      help.incrementDepth();
   16346             : 
   16347             : #if 0
   16348             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   16349             :   // but it is not generally true that things can only be copied once!
   16350             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   16351             :   // AstAttribute* existingAttribute = const_cast<SgHeaderFileReport*>(this)->attribute["copied"];
   16352             :      bool previouslyCopied = const_cast<SgHeaderFileReport*>(this)->attribute.exists("copied");
   16353             :      if (previouslyCopied == true)
   16354             :         {
   16355             :           this->get_file_info()->display("Called from copy SgHeaderFileReport: debug");
   16356             :         }
   16357             :      ROSE_ASSERT(previouslyCopied == false);
   16358             : 
   16359             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   16360             :      AstAttribute* newAttribute = new AstAttribute();
   16361             :      ROSE_ASSERT(newAttribute != NULL);
   16362             : 
   16363             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   16364             :      const_cast<SgHeaderFileReport*>(this)->attribute.add("copied",newAttribute);
   16365             : #endif
   16366             : 
   16367             :   // Copy data members from base classes
   16368             :  
   16369             : 
   16370             :   // Build an empty copy of this object (will be filled in, but 
   16371             :   // the parent can't be set and must be set by the caller)
   16372           0 :      result = new SgHeaderFileReport(  );
   16373           0 :      ROSE_ASSERT(result != NULL);
   16374             : 
   16375             :   // Copy data members of "this" class
   16376             : 
   16377             : 
   16378             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   16379             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   16380             :   // fixupCopy(result,help);
   16381             : 
   16382             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   16383             :   // the Sg_File_Info objects that are built for the new IR nodes.
   16384           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   16385           0 :      if (locatedNode != NULL)
   16386             :         {
   16387             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16388           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   16389           0 :           ROSE_ASSERT(start != NULL);
   16390             : #if 0
   16391             :        // Debugging information
   16392             :           if (start->get_parent() == NULL)
   16393             :              {
   16394             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16395             :              }
   16396             : #endif
   16397           0 :           start->set_parent(locatedNode);
   16398           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16399             : 
   16400           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   16401             : 
   16402             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   16403             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   16404             :        // ROSE_ASSERT(end != NULL);
   16405           0 :           if (end == NULL)
   16406             :              {
   16407           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   16408             :              }
   16409             :             else
   16410             :              {
   16411             : #if 0
   16412             :             // Debugging information
   16413             :                if (end->get_parent() == NULL)
   16414             :                   {
   16415             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16416             :                   }
   16417             : #endif
   16418           0 :                end->set_parent(locatedNode);
   16419           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   16420             :              }
   16421             : 
   16422           0 :           SgExpression* expression = isSgExpression(result);
   16423           0 :           if (isSgExpression(this) != NULL)
   16424             :              {
   16425           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   16426             : 
   16427             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   16428           0 :                if (operatorPosition != NULL)
   16429             :                   {
   16430             : #if 0
   16431             :                  // Debugging information
   16432             :                     if (operatorPosition->get_parent() == NULL)
   16433             :                        {
   16434             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16435             :                        }
   16436             : #endif
   16437           0 :                     operatorPosition->set_parent(expression);
   16438           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   16439             :                   }
   16440             :              }
   16441             :         }
   16442             : 
   16443             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   16444           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   16445           0 :      if (initializedName != NULL)
   16446             :         {
   16447             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16448           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   16449           0 :           ROSE_ASSERT(start != NULL);
   16450             : #if 0
   16451             :        // Debugging information
   16452             :           if (start->get_parent() == NULL)
   16453             :              {
   16454             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16455             :              }
   16456             : #endif
   16457           0 :           start->set_parent(initializedName);
   16458           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16459             : 
   16460             : #if 0
   16461             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   16462             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   16463             : 
   16464             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   16465             :        // ROSE_ASSERT(end != NULL);
   16466             :           if (end == NULL)
   16467             :              {
   16468             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   16469             :              }
   16470             :             else
   16471             :              {
   16472             :                if (end->get_parent() == NULL)
   16473             :                   {
   16474             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16475             :                   }
   16476             :                end->set_parent(initializedName);
   16477             :                ROSE_ASSERT(end->get_parent() != NULL);
   16478             :              }
   16479             : #endif
   16480             :         }
   16481             : 
   16482             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   16483           0 :      help.insertCopiedNodePair(this,result);
   16484             : 
   16485             :   // printf ("End of copy SgHeaderFileReport = %p = %s \n",this,SageInterface::get_name(this).c_str());
   16486             : 
   16487             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   16488             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   16489           0 :      help.decrementDepth();
   16490             : 
   16491             :   // Test if this is the root of the copy!
   16492           0 :      if (help.get_depth() == 0)
   16493             :         {
   16494             :        // This is the original calling node.
   16495             : 
   16496             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   16497             :        // printf ("Calling SgHeaderFileReport::fixupCopy() (from root of AST being copied) \n");
   16498             : #if ALT_FIXUP_COPY
   16499             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   16500           0 :           fixupCopy_scopes (result,help);
   16501           0 :           fixupCopy_symbols (result,help);
   16502           0 :           fixupCopy_references (result,help);
   16503             : #else
   16504             :           fixupCopy(result,help);
   16505             : #endif
   16506             :        // Allow this to be called recursively, so accumulate the state.
   16507             :        // Also, clear the state in the SgCopyHelp object.
   16508             :        // help.clearState();
   16509             :         }
   16510             : 
   16511           0 :      return result;
   16512             :    }
   16513             : 
   16514             : 
   16515             : /* #line 16516 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   16516             : 
   16517             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   16518             : 
   16519           0 : SgNode* SgType::copy ( SgCopyHelp& help) const
   16520             :    {
   16521           0 :      SgType* result = NULL;
   16522             : 
   16523             :   // printf ("Copy SgType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   16524             : 
   16525             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   16526             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   16527             :   // The default value of the depth is 0, so after this call the depth is 1!
   16528           0 :      help.incrementDepth();
   16529             : 
   16530             : #if 0
   16531             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   16532             :   // but it is not generally true that things can only be copied once!
   16533             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   16534             :   // AstAttribute* existingAttribute = const_cast<SgType*>(this)->attribute["copied"];
   16535             :      bool previouslyCopied = const_cast<SgType*>(this)->attribute.exists("copied");
   16536             :      if (previouslyCopied == true)
   16537             :         {
   16538             :           this->get_file_info()->display("Called from copy SgType: debug");
   16539             :         }
   16540             :      ROSE_ASSERT(previouslyCopied == false);
   16541             : 
   16542             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   16543             :      AstAttribute* newAttribute = new AstAttribute();
   16544             :      ROSE_ASSERT(newAttribute != NULL);
   16545             : 
   16546             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   16547             :      const_cast<SgType*>(this)->attribute.add("copied",newAttribute);
   16548             : #endif
   16549             : 
   16550             :   // Copy data members from base classes
   16551             :  
   16552             : 
   16553             :   // Build an empty copy of this object (will be filled in, but 
   16554             :   // the parent can't be set and must be set by the caller)
   16555           0 :      result = new SgType(  );
   16556           0 :      ROSE_ASSERT(result != NULL);
   16557             : 
   16558             :   // Copy data members of "this" class
   16559             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   16560             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   16561             :   // case: toBeCopied == COPY_DATA for isCoArray
   16562           0 :      bool isCoArray_copy = p_isCoArray; 
   16563           0 :      result->p_isCoArray = isCoArray_copy; 
   16564             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   16565             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   16566             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   16567           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   16568           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   16569             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   16570             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   16571             :   // case: toBeCopied == COPY_DATA for ref_to
   16572           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   16573           0 :      result->p_ref_to = ref_to_copy; 
   16574             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   16575             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   16576             :   // case: toBeCopied == COPY_DATA for ptr_to
   16577           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   16578           0 :      result->p_ptr_to = ptr_to_copy; 
   16579             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   16580             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   16581             :   // case: toBeCopied == COPY_DATA for modifiers
   16582           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   16583           0 :      result->p_modifiers = modifiers_copy; 
   16584             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   16585             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   16586             :   // case: toBeCopied == COPY_DATA for typedefs
   16587           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   16588           0 :      result->p_typedefs = typedefs_copy; 
   16589             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   16590             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   16591             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   16592           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   16593           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   16594             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   16595             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   16596             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   16597           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   16598           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   16599             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   16600             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   16601             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   16602           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   16603           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   16604             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   16605           0 :      SgExpression* type_kind_copy; 
   16606             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   16607           0 :           if (get_type_kind() != NULL) 
   16608             :              { 
   16609           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   16610             :              } 
   16611             :             else 
   16612             :              { 
   16613             :                type_kind_copy = NULL; 
   16614             :              } 
   16615             :   /* check for a valid pointer and delete if present */ 
   16616           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   16617           0 :      result->p_type_kind = type_kind_copy; 
   16618             :   // case: not a listType for (using conditionalToSetParent)type_kind
   16619           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   16620             :              { 
   16621           0 :                type_kind_copy->set_parent(result); 
   16622             :              } 
   16623             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   16624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   16625             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   16626           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   16627           0 :      if ( p_attributeMechanism != NULL ) 
   16628             :         { 
   16629           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   16630             :         } 
   16631             :        else 
   16632             :         { 
   16633             :           attributeMechanism_copy = NULL; 
   16634             :         } 
   16635             :   /* check for a valid pointer and delete if present */ 
   16636           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   16637             :   /* add assignment to result here */ 
   16638           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   16639             : 
   16640             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   16641             : 
   16642             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   16643             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   16644             :   // fixupCopy(result,help);
   16645             : 
   16646             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   16647             :   // the Sg_File_Info objects that are built for the new IR nodes.
   16648           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   16649           0 :      if (locatedNode != NULL)
   16650             :         {
   16651             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16652           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   16653           0 :           ROSE_ASSERT(start != NULL);
   16654             : #if 0
   16655             :        // Debugging information
   16656             :           if (start->get_parent() == NULL)
   16657             :              {
   16658             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16659             :              }
   16660             : #endif
   16661           0 :           start->set_parent(locatedNode);
   16662           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16663             : 
   16664           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   16665             : 
   16666             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   16667             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   16668             :        // ROSE_ASSERT(end != NULL);
   16669           0 :           if (end == NULL)
   16670             :              {
   16671           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   16672             :              }
   16673             :             else
   16674             :              {
   16675             : #if 0
   16676             :             // Debugging information
   16677             :                if (end->get_parent() == NULL)
   16678             :                   {
   16679             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16680             :                   }
   16681             : #endif
   16682           0 :                end->set_parent(locatedNode);
   16683           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   16684             :              }
   16685             : 
   16686           0 :           SgExpression* expression = isSgExpression(result);
   16687           0 :           if (isSgExpression(this) != NULL)
   16688             :              {
   16689           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   16690             : 
   16691             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   16692           0 :                if (operatorPosition != NULL)
   16693             :                   {
   16694             : #if 0
   16695             :                  // Debugging information
   16696             :                     if (operatorPosition->get_parent() == NULL)
   16697             :                        {
   16698             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16699             :                        }
   16700             : #endif
   16701           0 :                     operatorPosition->set_parent(expression);
   16702           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   16703             :                   }
   16704             :              }
   16705             :         }
   16706             : 
   16707             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   16708           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   16709           0 :      if (initializedName != NULL)
   16710             :         {
   16711             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16712           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   16713           0 :           ROSE_ASSERT(start != NULL);
   16714             : #if 0
   16715             :        // Debugging information
   16716             :           if (start->get_parent() == NULL)
   16717             :              {
   16718             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16719             :              }
   16720             : #endif
   16721           0 :           start->set_parent(initializedName);
   16722           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16723             : 
   16724             : #if 0
   16725             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   16726             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   16727             : 
   16728             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   16729             :        // ROSE_ASSERT(end != NULL);
   16730             :           if (end == NULL)
   16731             :              {
   16732             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   16733             :              }
   16734             :             else
   16735             :              {
   16736             :                if (end->get_parent() == NULL)
   16737             :                   {
   16738             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16739             :                   }
   16740             :                end->set_parent(initializedName);
   16741             :                ROSE_ASSERT(end->get_parent() != NULL);
   16742             :              }
   16743             : #endif
   16744             :         }
   16745             : 
   16746             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   16747           0 :      help.insertCopiedNodePair(this,result);
   16748             : 
   16749             :   // printf ("End of copy SgType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   16750             : 
   16751             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   16752             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   16753           0 :      help.decrementDepth();
   16754             : 
   16755             :   // Test if this is the root of the copy!
   16756           0 :      if (help.get_depth() == 0)
   16757             :         {
   16758             :        // This is the original calling node.
   16759             : 
   16760             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   16761             :        // printf ("Calling SgType::fixupCopy() (from root of AST being copied) \n");
   16762             : #if ALT_FIXUP_COPY
   16763             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   16764           0 :           fixupCopy_scopes (result,help);
   16765           0 :           fixupCopy_symbols (result,help);
   16766           0 :           fixupCopy_references (result,help);
   16767             : #else
   16768             :           fixupCopy(result,help);
   16769             : #endif
   16770             :        // Allow this to be called recursively, so accumulate the state.
   16771             :        // Also, clear the state in the SgCopyHelp object.
   16772             :        // help.clearState();
   16773             :         }
   16774             : 
   16775           0 :      return result;
   16776             :    }
   16777             : 
   16778             : 
   16779             : /* #line 16780 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   16780             : 
   16781             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   16782             : 
   16783           0 : SgNode* SgTypeUnknown::copy ( SgCopyHelp& help) const
   16784             :    {
   16785           0 :      SgTypeUnknown* result = NULL;
   16786             : 
   16787             :   // printf ("Copy SgTypeUnknown = %p = %s \n",this,SageInterface::get_name(this).c_str());
   16788             : 
   16789             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   16790             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   16791             :   // The default value of the depth is 0, so after this call the depth is 1!
   16792           0 :      help.incrementDepth();
   16793             : 
   16794             : #if 0
   16795             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   16796             :   // but it is not generally true that things can only be copied once!
   16797             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   16798             :   // AstAttribute* existingAttribute = const_cast<SgTypeUnknown*>(this)->attribute["copied"];
   16799             :      bool previouslyCopied = const_cast<SgTypeUnknown*>(this)->attribute.exists("copied");
   16800             :      if (previouslyCopied == true)
   16801             :         {
   16802             :           this->get_file_info()->display("Called from copy SgTypeUnknown: debug");
   16803             :         }
   16804             :      ROSE_ASSERT(previouslyCopied == false);
   16805             : 
   16806             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   16807             :      AstAttribute* newAttribute = new AstAttribute();
   16808             :      ROSE_ASSERT(newAttribute != NULL);
   16809             : 
   16810             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   16811             :      const_cast<SgTypeUnknown*>(this)->attribute.add("copied",newAttribute);
   16812             : #endif
   16813             : 
   16814             :   // Copy data members from base classes
   16815             :  
   16816             : 
   16817             :   // Build an empty copy of this object (will be filled in, but 
   16818             :   // the parent can't be set and must be set by the caller)
   16819           0 :      result = new SgTypeUnknown(  );
   16820           0 :      ROSE_ASSERT(result != NULL);
   16821             : 
   16822             :   // Copy data members of "this" class
   16823             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   16824             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   16825             :   // case: toBeCopied == COPY_DATA for isCoArray
   16826           0 :      bool isCoArray_copy = p_isCoArray; 
   16827           0 :      result->p_isCoArray = isCoArray_copy; 
   16828             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   16829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   16830             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   16831           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   16832           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   16833             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   16834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   16835             :   // case: toBeCopied == COPY_DATA for ref_to
   16836           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   16837           0 :      result->p_ref_to = ref_to_copy; 
   16838             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   16839             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   16840             :   // case: toBeCopied == COPY_DATA for ptr_to
   16841           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   16842           0 :      result->p_ptr_to = ptr_to_copy; 
   16843             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   16844             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   16845             :   // case: toBeCopied == COPY_DATA for modifiers
   16846           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   16847           0 :      result->p_modifiers = modifiers_copy; 
   16848             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   16849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   16850             :   // case: toBeCopied == COPY_DATA for typedefs
   16851           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   16852           0 :      result->p_typedefs = typedefs_copy; 
   16853             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   16854             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   16855             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   16856           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   16857           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   16858             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   16859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   16860             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   16861           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   16862           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   16863             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   16864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   16865             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   16866           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   16867           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   16868             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   16869           0 :      SgExpression* type_kind_copy; 
   16870             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   16871           0 :           if (get_type_kind() != NULL) 
   16872             :              { 
   16873           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   16874             :              } 
   16875             :             else 
   16876             :              { 
   16877             :                type_kind_copy = NULL; 
   16878             :              } 
   16879             :   /* check for a valid pointer and delete if present */ 
   16880           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   16881           0 :      result->p_type_kind = type_kind_copy; 
   16882             :   // case: not a listType for (using conditionalToSetParent)type_kind
   16883           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   16884             :              { 
   16885           0 :                type_kind_copy->set_parent(result); 
   16886             :              } 
   16887             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   16888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   16889             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   16890           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   16891           0 :      if ( p_attributeMechanism != NULL ) 
   16892             :         { 
   16893           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   16894             :         } 
   16895             :        else 
   16896             :         { 
   16897             :           attributeMechanism_copy = NULL; 
   16898             :         } 
   16899             :   /* check for a valid pointer and delete if present */ 
   16900           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   16901             :   /* add assignment to result here */ 
   16902           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   16903             :   // Copy non-constructor parameter data member (access function): type_name_copy
   16904             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_name
   16905             :   // case: toBeCopied == COPY_DATA for type_name
   16906           0 :      std::string type_name_copy = p_type_name; 
   16907           0 :      result->p_type_name = type_name_copy; 
   16908             :   // Copy non-constructor parameter data member (access function): has_type_name_copy
   16909             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_type_name
   16910             :   // case: toBeCopied == COPY_DATA for has_type_name
   16911           0 :      bool has_type_name_copy = p_has_type_name; 
   16912           0 :      result->p_has_type_name = has_type_name_copy; 
   16913             : 
   16914             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   16915             : 
   16916             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   16917             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   16918             :   // fixupCopy(result,help);
   16919             : 
   16920             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   16921             :   // the Sg_File_Info objects that are built for the new IR nodes.
   16922           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   16923           0 :      if (locatedNode != NULL)
   16924             :         {
   16925             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16926           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   16927           0 :           ROSE_ASSERT(start != NULL);
   16928             : #if 0
   16929             :        // Debugging information
   16930             :           if (start->get_parent() == NULL)
   16931             :              {
   16932             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16933             :              }
   16934             : #endif
   16935           0 :           start->set_parent(locatedNode);
   16936           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16937             : 
   16938           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   16939             : 
   16940             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   16941             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   16942             :        // ROSE_ASSERT(end != NULL);
   16943           0 :           if (end == NULL)
   16944             :              {
   16945           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   16946             :              }
   16947             :             else
   16948             :              {
   16949             : #if 0
   16950             :             // Debugging information
   16951             :                if (end->get_parent() == NULL)
   16952             :                   {
   16953             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16954             :                   }
   16955             : #endif
   16956           0 :                end->set_parent(locatedNode);
   16957           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   16958             :              }
   16959             : 
   16960           0 :           SgExpression* expression = isSgExpression(result);
   16961           0 :           if (isSgExpression(this) != NULL)
   16962             :              {
   16963           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   16964             : 
   16965             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   16966           0 :                if (operatorPosition != NULL)
   16967             :                   {
   16968             : #if 0
   16969             :                  // Debugging information
   16970             :                     if (operatorPosition->get_parent() == NULL)
   16971             :                        {
   16972             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16973             :                        }
   16974             : #endif
   16975           0 :                     operatorPosition->set_parent(expression);
   16976           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   16977             :                   }
   16978             :              }
   16979             :         }
   16980             : 
   16981             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   16982           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   16983           0 :      if (initializedName != NULL)
   16984             :         {
   16985             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   16986           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   16987           0 :           ROSE_ASSERT(start != NULL);
   16988             : #if 0
   16989             :        // Debugging information
   16990             :           if (start->get_parent() == NULL)
   16991             :              {
   16992             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   16993             :              }
   16994             : #endif
   16995           0 :           start->set_parent(initializedName);
   16996           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   16997             : 
   16998             : #if 0
   16999             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   17000             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   17001             : 
   17002             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   17003             :        // ROSE_ASSERT(end != NULL);
   17004             :           if (end == NULL)
   17005             :              {
   17006             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   17007             :              }
   17008             :             else
   17009             :              {
   17010             :                if (end->get_parent() == NULL)
   17011             :                   {
   17012             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17013             :                   }
   17014             :                end->set_parent(initializedName);
   17015             :                ROSE_ASSERT(end->get_parent() != NULL);
   17016             :              }
   17017             : #endif
   17018             :         }
   17019             : 
   17020             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   17021           0 :      help.insertCopiedNodePair(this,result);
   17022             : 
   17023             :   // printf ("End of copy SgTypeUnknown = %p = %s \n",this,SageInterface::get_name(this).c_str());
   17024             : 
   17025             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   17026             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   17027           0 :      help.decrementDepth();
   17028             : 
   17029             :   // Test if this is the root of the copy!
   17030           0 :      if (help.get_depth() == 0)
   17031             :         {
   17032             :        // This is the original calling node.
   17033             : 
   17034             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   17035             :        // printf ("Calling SgTypeUnknown::fixupCopy() (from root of AST being copied) \n");
   17036             : #if ALT_FIXUP_COPY
   17037             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   17038           0 :           fixupCopy_scopes (result,help);
   17039           0 :           fixupCopy_symbols (result,help);
   17040           0 :           fixupCopy_references (result,help);
   17041             : #else
   17042             :           fixupCopy(result,help);
   17043             : #endif
   17044             :        // Allow this to be called recursively, so accumulate the state.
   17045             :        // Also, clear the state in the SgCopyHelp object.
   17046             :        // help.clearState();
   17047             :         }
   17048             : 
   17049           0 :      return result;
   17050             :    }
   17051             : 
   17052             : 
   17053             : /* #line 17054 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   17054             : 
   17055             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   17056             : 
   17057           0 : SgNode* SgTypeChar::copy ( SgCopyHelp& help) const
   17058             :    {
   17059           0 :      SgTypeChar* result = NULL;
   17060             : 
   17061             :   // printf ("Copy SgTypeChar = %p = %s \n",this,SageInterface::get_name(this).c_str());
   17062             : 
   17063             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   17064             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   17065             :   // The default value of the depth is 0, so after this call the depth is 1!
   17066           0 :      help.incrementDepth();
   17067             : 
   17068             : #if 0
   17069             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   17070             :   // but it is not generally true that things can only be copied once!
   17071             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   17072             :   // AstAttribute* existingAttribute = const_cast<SgTypeChar*>(this)->attribute["copied"];
   17073             :      bool previouslyCopied = const_cast<SgTypeChar*>(this)->attribute.exists("copied");
   17074             :      if (previouslyCopied == true)
   17075             :         {
   17076             :           this->get_file_info()->display("Called from copy SgTypeChar: debug");
   17077             :         }
   17078             :      ROSE_ASSERT(previouslyCopied == false);
   17079             : 
   17080             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   17081             :      AstAttribute* newAttribute = new AstAttribute();
   17082             :      ROSE_ASSERT(newAttribute != NULL);
   17083             : 
   17084             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   17085             :      const_cast<SgTypeChar*>(this)->attribute.add("copied",newAttribute);
   17086             : #endif
   17087             : 
   17088             :   // Copy data members from base classes
   17089             :  
   17090             : 
   17091             :   // Build an empty copy of this object (will be filled in, but 
   17092             :   // the parent can't be set and must be set by the caller)
   17093           0 :      result = new SgTypeChar(  );
   17094           0 :      ROSE_ASSERT(result != NULL);
   17095             : 
   17096             :   // Copy data members of "this" class
   17097             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   17098             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   17099             :   // case: toBeCopied == COPY_DATA for isCoArray
   17100           0 :      bool isCoArray_copy = p_isCoArray; 
   17101           0 :      result->p_isCoArray = isCoArray_copy; 
   17102             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   17103             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   17104             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   17105           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   17106           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   17107             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   17108             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   17109             :   // case: toBeCopied == COPY_DATA for ref_to
   17110           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   17111           0 :      result->p_ref_to = ref_to_copy; 
   17112             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   17113             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   17114             :   // case: toBeCopied == COPY_DATA for ptr_to
   17115           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   17116           0 :      result->p_ptr_to = ptr_to_copy; 
   17117             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   17118             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   17119             :   // case: toBeCopied == COPY_DATA for modifiers
   17120           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   17121           0 :      result->p_modifiers = modifiers_copy; 
   17122             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   17123             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   17124             :   // case: toBeCopied == COPY_DATA for typedefs
   17125           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   17126           0 :      result->p_typedefs = typedefs_copy; 
   17127             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   17128             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   17129             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   17130           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   17131           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   17132             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   17133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   17134             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   17135           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   17136           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   17137             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   17138             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   17139             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   17140           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   17141           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   17142             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   17143           0 :      SgExpression* type_kind_copy; 
   17144             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   17145           0 :           if (get_type_kind() != NULL) 
   17146             :              { 
   17147           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   17148             :              } 
   17149             :             else 
   17150             :              { 
   17151             :                type_kind_copy = NULL; 
   17152             :              } 
   17153             :   /* check for a valid pointer and delete if present */ 
   17154           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   17155           0 :      result->p_type_kind = type_kind_copy; 
   17156             :   // case: not a listType for (using conditionalToSetParent)type_kind
   17157           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   17158             :              { 
   17159           0 :                type_kind_copy->set_parent(result); 
   17160             :              } 
   17161             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   17162             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   17163             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   17164           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   17165           0 :      if ( p_attributeMechanism != NULL ) 
   17166             :         { 
   17167           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   17168             :         } 
   17169             :        else 
   17170             :         { 
   17171             :           attributeMechanism_copy = NULL; 
   17172             :         } 
   17173             :   /* check for a valid pointer and delete if present */ 
   17174           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   17175             :   /* add assignment to result here */ 
   17176           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   17177             : 
   17178             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   17179             : 
   17180             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   17181             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   17182             :   // fixupCopy(result,help);
   17183             : 
   17184             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   17185             :   // the Sg_File_Info objects that are built for the new IR nodes.
   17186           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   17187           0 :      if (locatedNode != NULL)
   17188             :         {
   17189             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   17190           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   17191           0 :           ROSE_ASSERT(start != NULL);
   17192             : #if 0
   17193             :        // Debugging information
   17194             :           if (start->get_parent() == NULL)
   17195             :              {
   17196             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17197             :              }
   17198             : #endif
   17199           0 :           start->set_parent(locatedNode);
   17200           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   17201             : 
   17202           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   17203             : 
   17204             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   17205             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   17206             :        // ROSE_ASSERT(end != NULL);
   17207           0 :           if (end == NULL)
   17208             :              {
   17209           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   17210             :              }
   17211             :             else
   17212             :              {
   17213             : #if 0
   17214             :             // Debugging information
   17215             :                if (end->get_parent() == NULL)
   17216             :                   {
   17217             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17218             :                   }
   17219             : #endif
   17220           0 :                end->set_parent(locatedNode);
   17221           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   17222             :              }
   17223             : 
   17224           0 :           SgExpression* expression = isSgExpression(result);
   17225           0 :           if (isSgExpression(this) != NULL)
   17226             :              {
   17227           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   17228             : 
   17229             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   17230           0 :                if (operatorPosition != NULL)
   17231             :                   {
   17232             : #if 0
   17233             :                  // Debugging information
   17234             :                     if (operatorPosition->get_parent() == NULL)
   17235             :                        {
   17236             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17237             :                        }
   17238             : #endif
   17239           0 :                     operatorPosition->set_parent(expression);
   17240           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   17241             :                   }
   17242             :              }
   17243             :         }
   17244             : 
   17245             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   17246           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   17247           0 :      if (initializedName != NULL)
   17248             :         {
   17249             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   17250           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   17251           0 :           ROSE_ASSERT(start != NULL);
   17252             : #if 0
   17253             :        // Debugging information
   17254             :           if (start->get_parent() == NULL)
   17255             :              {
   17256             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17257             :              }
   17258             : #endif
   17259           0 :           start->set_parent(initializedName);
   17260           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   17261             : 
   17262             : #if 0
   17263             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   17264             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   17265             : 
   17266             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   17267             :        // ROSE_ASSERT(end != NULL);
   17268             :           if (end == NULL)
   17269             :              {
   17270             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   17271             :              }
   17272             :             else
   17273             :              {
   17274             :                if (end->get_parent() == NULL)
   17275             :                   {
   17276             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17277             :                   }
   17278             :                end->set_parent(initializedName);
   17279             :                ROSE_ASSERT(end->get_parent() != NULL);
   17280             :              }
   17281             : #endif
   17282             :         }
   17283             : 
   17284             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   17285           0 :      help.insertCopiedNodePair(this,result);
   17286             : 
   17287             :   // printf ("End of copy SgTypeChar = %p = %s \n",this,SageInterface::get_name(this).c_str());
   17288             : 
   17289             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   17290             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   17291           0 :      help.decrementDepth();
   17292             : 
   17293             :   // Test if this is the root of the copy!
   17294           0 :      if (help.get_depth() == 0)
   17295             :         {
   17296             :        // This is the original calling node.
   17297             : 
   17298             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   17299             :        // printf ("Calling SgTypeChar::fixupCopy() (from root of AST being copied) \n");
   17300             : #if ALT_FIXUP_COPY
   17301             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   17302           0 :           fixupCopy_scopes (result,help);
   17303           0 :           fixupCopy_symbols (result,help);
   17304           0 :           fixupCopy_references (result,help);
   17305             : #else
   17306             :           fixupCopy(result,help);
   17307             : #endif
   17308             :        // Allow this to be called recursively, so accumulate the state.
   17309             :        // Also, clear the state in the SgCopyHelp object.
   17310             :        // help.clearState();
   17311             :         }
   17312             : 
   17313           0 :      return result;
   17314             :    }
   17315             : 
   17316             : 
   17317             : /* #line 17318 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   17318             : 
   17319             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   17320             : 
   17321           0 : SgNode* SgTypeSignedChar::copy ( SgCopyHelp& help) const
   17322             :    {
   17323           0 :      SgTypeSignedChar* result = NULL;
   17324             : 
   17325             :   // printf ("Copy SgTypeSignedChar = %p = %s \n",this,SageInterface::get_name(this).c_str());
   17326             : 
   17327             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   17328             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   17329             :   // The default value of the depth is 0, so after this call the depth is 1!
   17330           0 :      help.incrementDepth();
   17331             : 
   17332             : #if 0
   17333             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   17334             :   // but it is not generally true that things can only be copied once!
   17335             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   17336             :   // AstAttribute* existingAttribute = const_cast<SgTypeSignedChar*>(this)->attribute["copied"];
   17337             :      bool previouslyCopied = const_cast<SgTypeSignedChar*>(this)->attribute.exists("copied");
   17338             :      if (previouslyCopied == true)
   17339             :         {
   17340             :           this->get_file_info()->display("Called from copy SgTypeSignedChar: debug");
   17341             :         }
   17342             :      ROSE_ASSERT(previouslyCopied == false);
   17343             : 
   17344             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   17345             :      AstAttribute* newAttribute = new AstAttribute();
   17346             :      ROSE_ASSERT(newAttribute != NULL);
   17347             : 
   17348             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   17349             :      const_cast<SgTypeSignedChar*>(this)->attribute.add("copied",newAttribute);
   17350             : #endif
   17351             : 
   17352             :   // Copy data members from base classes
   17353             :  
   17354             : 
   17355             :   // Build an empty copy of this object (will be filled in, but 
   17356             :   // the parent can't be set and must be set by the caller)
   17357           0 :      result = new SgTypeSignedChar(  );
   17358           0 :      ROSE_ASSERT(result != NULL);
   17359             : 
   17360             :   // Copy data members of "this" class
   17361             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   17362             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   17363             :   // case: toBeCopied == COPY_DATA for isCoArray
   17364           0 :      bool isCoArray_copy = p_isCoArray; 
   17365           0 :      result->p_isCoArray = isCoArray_copy; 
   17366             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   17367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   17368             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   17369           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   17370           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   17371             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   17372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   17373             :   // case: toBeCopied == COPY_DATA for ref_to
   17374           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   17375           0 :      result->p_ref_to = ref_to_copy; 
   17376             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   17377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   17378             :   // case: toBeCopied == COPY_DATA for ptr_to
   17379           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   17380           0 :      result->p_ptr_to = ptr_to_copy; 
   17381             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   17382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   17383             :   // case: toBeCopied == COPY_DATA for modifiers
   17384           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   17385           0 :      result->p_modifiers = modifiers_copy; 
   17386             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   17387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   17388             :   // case: toBeCopied == COPY_DATA for typedefs
   17389           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   17390           0 :      result->p_typedefs = typedefs_copy; 
   17391             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   17392             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   17393             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   17394           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   17395           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   17396             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   17397             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   17398             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   17399           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   17400           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   17401             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   17402             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   17403             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   17404           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   17405           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   17406             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   17407           0 :      SgExpression* type_kind_copy; 
   17408             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   17409           0 :           if (get_type_kind() != NULL) 
   17410             :              { 
   17411           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   17412             :              } 
   17413             :             else 
   17414             :              { 
   17415             :                type_kind_copy = NULL; 
   17416             :              } 
   17417             :   /* check for a valid pointer and delete if present */ 
   17418           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   17419           0 :      result->p_type_kind = type_kind_copy; 
   17420             :   // case: not a listType for (using conditionalToSetParent)type_kind
   17421           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   17422             :              { 
   17423           0 :                type_kind_copy->set_parent(result); 
   17424             :              } 
   17425             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   17426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   17427             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   17428           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   17429           0 :      if ( p_attributeMechanism != NULL ) 
   17430             :         { 
   17431           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   17432             :         } 
   17433             :        else 
   17434             :         { 
   17435             :           attributeMechanism_copy = NULL; 
   17436             :         } 
   17437             :   /* check for a valid pointer and delete if present */ 
   17438           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   17439             :   /* add assignment to result here */ 
   17440           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   17441             : 
   17442             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   17443             : 
   17444             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   17445             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   17446             :   // fixupCopy(result,help);
   17447             : 
   17448             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   17449             :   // the Sg_File_Info objects that are built for the new IR nodes.
   17450           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   17451           0 :      if (locatedNode != NULL)
   17452             :         {
   17453             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   17454           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   17455           0 :           ROSE_ASSERT(start != NULL);
   17456             : #if 0
   17457             :        // Debugging information
   17458             :           if (start->get_parent() == NULL)
   17459             :              {
   17460             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17461             :              }
   17462             : #endif
   17463           0 :           start->set_parent(locatedNode);
   17464           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   17465             : 
   17466           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   17467             : 
   17468             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   17469             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   17470             :        // ROSE_ASSERT(end != NULL);
   17471           0 :           if (end == NULL)
   17472             :              {
   17473           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   17474             :              }
   17475             :             else
   17476             :              {
   17477             : #if 0
   17478             :             // Debugging information
   17479             :                if (end->get_parent() == NULL)
   17480             :                   {
   17481             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17482             :                   }
   17483             : #endif
   17484           0 :                end->set_parent(locatedNode);
   17485           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   17486             :              }
   17487             : 
   17488           0 :           SgExpression* expression = isSgExpression(result);
   17489           0 :           if (isSgExpression(this) != NULL)
   17490             :              {
   17491           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   17492             : 
   17493             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   17494           0 :                if (operatorPosition != NULL)
   17495             :                   {
   17496             : #if 0
   17497             :                  // Debugging information
   17498             :                     if (operatorPosition->get_parent() == NULL)
   17499             :                        {
   17500             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17501             :                        }
   17502             : #endif
   17503           0 :                     operatorPosition->set_parent(expression);
   17504           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   17505             :                   }
   17506             :              }
   17507             :         }
   17508             : 
   17509             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   17510           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   17511           0 :      if (initializedName != NULL)
   17512             :         {
   17513             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   17514           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   17515           0 :           ROSE_ASSERT(start != NULL);
   17516             : #if 0
   17517             :        // Debugging information
   17518             :           if (start->get_parent() == NULL)
   17519             :              {
   17520             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17521             :              }
   17522             : #endif
   17523           0 :           start->set_parent(initializedName);
   17524           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   17525             : 
   17526             : #if 0
   17527             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   17528             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   17529             : 
   17530             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   17531             :        // ROSE_ASSERT(end != NULL);
   17532             :           if (end == NULL)
   17533             :              {
   17534             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   17535             :              }
   17536             :             else
   17537             :              {
   17538             :                if (end->get_parent() == NULL)
   17539             :                   {
   17540             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17541             :                   }
   17542             :                end->set_parent(initializedName);
   17543             :                ROSE_ASSERT(end->get_parent() != NULL);
   17544             :              }
   17545             : #endif
   17546             :         }
   17547             : 
   17548             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   17549           0 :      help.insertCopiedNodePair(this,result);
   17550             : 
   17551             :   // printf ("End of copy SgTypeSignedChar = %p = %s \n",this,SageInterface::get_name(this).c_str());
   17552             : 
   17553             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   17554             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   17555           0 :      help.decrementDepth();
   17556             : 
   17557             :   // Test if this is the root of the copy!
   17558           0 :      if (help.get_depth() == 0)
   17559             :         {
   17560             :        // This is the original calling node.
   17561             : 
   17562             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   17563             :        // printf ("Calling SgTypeSignedChar::fixupCopy() (from root of AST being copied) \n");
   17564             : #if ALT_FIXUP_COPY
   17565             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   17566           0 :           fixupCopy_scopes (result,help);
   17567           0 :           fixupCopy_symbols (result,help);
   17568           0 :           fixupCopy_references (result,help);
   17569             : #else
   17570             :           fixupCopy(result,help);
   17571             : #endif
   17572             :        // Allow this to be called recursively, so accumulate the state.
   17573             :        // Also, clear the state in the SgCopyHelp object.
   17574             :        // help.clearState();
   17575             :         }
   17576             : 
   17577           0 :      return result;
   17578             :    }
   17579             : 
   17580             : 
   17581             : /* #line 17582 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   17582             : 
   17583             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   17584             : 
   17585           0 : SgNode* SgTypeUnsignedChar::copy ( SgCopyHelp& help) const
   17586             :    {
   17587           0 :      SgTypeUnsignedChar* result = NULL;
   17588             : 
   17589             :   // printf ("Copy SgTypeUnsignedChar = %p = %s \n",this,SageInterface::get_name(this).c_str());
   17590             : 
   17591             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   17592             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   17593             :   // The default value of the depth is 0, so after this call the depth is 1!
   17594           0 :      help.incrementDepth();
   17595             : 
   17596             : #if 0
   17597             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   17598             :   // but it is not generally true that things can only be copied once!
   17599             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   17600             :   // AstAttribute* existingAttribute = const_cast<SgTypeUnsignedChar*>(this)->attribute["copied"];
   17601             :      bool previouslyCopied = const_cast<SgTypeUnsignedChar*>(this)->attribute.exists("copied");
   17602             :      if (previouslyCopied == true)
   17603             :         {
   17604             :           this->get_file_info()->display("Called from copy SgTypeUnsignedChar: debug");
   17605             :         }
   17606             :      ROSE_ASSERT(previouslyCopied == false);
   17607             : 
   17608             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   17609             :      AstAttribute* newAttribute = new AstAttribute();
   17610             :      ROSE_ASSERT(newAttribute != NULL);
   17611             : 
   17612             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   17613             :      const_cast<SgTypeUnsignedChar*>(this)->attribute.add("copied",newAttribute);
   17614             : #endif
   17615             : 
   17616             :   // Copy data members from base classes
   17617             :  
   17618             : 
   17619             :   // Build an empty copy of this object (will be filled in, but 
   17620             :   // the parent can't be set and must be set by the caller)
   17621           0 :      result = new SgTypeUnsignedChar(  );
   17622           0 :      ROSE_ASSERT(result != NULL);
   17623             : 
   17624             :   // Copy data members of "this" class
   17625             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   17626             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   17627             :   // case: toBeCopied == COPY_DATA for isCoArray
   17628           0 :      bool isCoArray_copy = p_isCoArray; 
   17629           0 :      result->p_isCoArray = isCoArray_copy; 
   17630             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   17631             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   17632             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   17633           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   17634           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   17635             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   17636             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   17637             :   // case: toBeCopied == COPY_DATA for ref_to
   17638           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   17639           0 :      result->p_ref_to = ref_to_copy; 
   17640             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   17641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   17642             :   // case: toBeCopied == COPY_DATA for ptr_to
   17643           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   17644           0 :      result->p_ptr_to = ptr_to_copy; 
   17645             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   17646             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   17647             :   // case: toBeCopied == COPY_DATA for modifiers
   17648           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   17649           0 :      result->p_modifiers = modifiers_copy; 
   17650             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   17651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   17652             :   // case: toBeCopied == COPY_DATA for typedefs
   17653           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   17654           0 :      result->p_typedefs = typedefs_copy; 
   17655             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   17656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   17657             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   17658           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   17659           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   17660             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   17661             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   17662             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   17663           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   17664           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   17665             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   17666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   17667             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   17668           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   17669           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   17670             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   17671           0 :      SgExpression* type_kind_copy; 
   17672             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   17673           0 :           if (get_type_kind() != NULL) 
   17674             :              { 
   17675           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   17676             :              } 
   17677             :             else 
   17678             :              { 
   17679             :                type_kind_copy = NULL; 
   17680             :              } 
   17681             :   /* check for a valid pointer and delete if present */ 
   17682           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   17683           0 :      result->p_type_kind = type_kind_copy; 
   17684             :   // case: not a listType for (using conditionalToSetParent)type_kind
   17685           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   17686             :              { 
   17687           0 :                type_kind_copy->set_parent(result); 
   17688             :              } 
   17689             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   17690             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   17691             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   17692           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   17693           0 :      if ( p_attributeMechanism != NULL ) 
   17694             :         { 
   17695           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   17696             :         } 
   17697             :        else 
   17698             :         { 
   17699             :           attributeMechanism_copy = NULL; 
   17700             :         } 
   17701             :   /* check for a valid pointer and delete if present */ 
   17702           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   17703             :   /* add assignment to result here */ 
   17704           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   17705             : 
   17706             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   17707             : 
   17708             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   17709             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   17710             :   // fixupCopy(result,help);
   17711             : 
   17712             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   17713             :   // the Sg_File_Info objects that are built for the new IR nodes.
   17714           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   17715           0 :      if (locatedNode != NULL)
   17716             :         {
   17717             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   17718           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   17719           0 :           ROSE_ASSERT(start != NULL);
   17720             : #if 0
   17721             :        // Debugging information
   17722             :           if (start->get_parent() == NULL)
   17723             :              {
   17724             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17725             :              }
   17726             : #endif
   17727           0 :           start->set_parent(locatedNode);
   17728           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   17729             : 
   17730           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   17731             : 
   17732             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   17733             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   17734             :        // ROSE_ASSERT(end != NULL);
   17735           0 :           if (end == NULL)
   17736             :              {
   17737           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   17738             :              }
   17739             :             else
   17740             :              {
   17741             : #if 0
   17742             :             // Debugging information
   17743             :                if (end->get_parent() == NULL)
   17744             :                   {
   17745             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17746             :                   }
   17747             : #endif
   17748           0 :                end->set_parent(locatedNode);
   17749           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   17750             :              }
   17751             : 
   17752           0 :           SgExpression* expression = isSgExpression(result);
   17753           0 :           if (isSgExpression(this) != NULL)
   17754             :              {
   17755           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   17756             : 
   17757             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   17758           0 :                if (operatorPosition != NULL)
   17759             :                   {
   17760             : #if 0
   17761             :                  // Debugging information
   17762             :                     if (operatorPosition->get_parent() == NULL)
   17763             :                        {
   17764             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17765             :                        }
   17766             : #endif
   17767           0 :                     operatorPosition->set_parent(expression);
   17768           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   17769             :                   }
   17770             :              }
   17771             :         }
   17772             : 
   17773             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   17774           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   17775           0 :      if (initializedName != NULL)
   17776             :         {
   17777             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   17778           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   17779           0 :           ROSE_ASSERT(start != NULL);
   17780             : #if 0
   17781             :        // Debugging information
   17782             :           if (start->get_parent() == NULL)
   17783             :              {
   17784             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17785             :              }
   17786             : #endif
   17787           0 :           start->set_parent(initializedName);
   17788           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   17789             : 
   17790             : #if 0
   17791             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   17792             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   17793             : 
   17794             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   17795             :        // ROSE_ASSERT(end != NULL);
   17796             :           if (end == NULL)
   17797             :              {
   17798             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   17799             :              }
   17800             :             else
   17801             :              {
   17802             :                if (end->get_parent() == NULL)
   17803             :                   {
   17804             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17805             :                   }
   17806             :                end->set_parent(initializedName);
   17807             :                ROSE_ASSERT(end->get_parent() != NULL);
   17808             :              }
   17809             : #endif
   17810             :         }
   17811             : 
   17812             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   17813           0 :      help.insertCopiedNodePair(this,result);
   17814             : 
   17815             :   // printf ("End of copy SgTypeUnsignedChar = %p = %s \n",this,SageInterface::get_name(this).c_str());
   17816             : 
   17817             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   17818             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   17819           0 :      help.decrementDepth();
   17820             : 
   17821             :   // Test if this is the root of the copy!
   17822           0 :      if (help.get_depth() == 0)
   17823             :         {
   17824             :        // This is the original calling node.
   17825             : 
   17826             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   17827             :        // printf ("Calling SgTypeUnsignedChar::fixupCopy() (from root of AST being copied) \n");
   17828             : #if ALT_FIXUP_COPY
   17829             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   17830           0 :           fixupCopy_scopes (result,help);
   17831           0 :           fixupCopy_symbols (result,help);
   17832           0 :           fixupCopy_references (result,help);
   17833             : #else
   17834             :           fixupCopy(result,help);
   17835             : #endif
   17836             :        // Allow this to be called recursively, so accumulate the state.
   17837             :        // Also, clear the state in the SgCopyHelp object.
   17838             :        // help.clearState();
   17839             :         }
   17840             : 
   17841           0 :      return result;
   17842             :    }
   17843             : 
   17844             : 
   17845             : /* #line 17846 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   17846             : 
   17847             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   17848             : 
   17849           0 : SgNode* SgTypeShort::copy ( SgCopyHelp& help) const
   17850             :    {
   17851           0 :      SgTypeShort* result = NULL;
   17852             : 
   17853             :   // printf ("Copy SgTypeShort = %p = %s \n",this,SageInterface::get_name(this).c_str());
   17854             : 
   17855             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   17856             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   17857             :   // The default value of the depth is 0, so after this call the depth is 1!
   17858           0 :      help.incrementDepth();
   17859             : 
   17860             : #if 0
   17861             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   17862             :   // but it is not generally true that things can only be copied once!
   17863             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   17864             :   // AstAttribute* existingAttribute = const_cast<SgTypeShort*>(this)->attribute["copied"];
   17865             :      bool previouslyCopied = const_cast<SgTypeShort*>(this)->attribute.exists("copied");
   17866             :      if (previouslyCopied == true)
   17867             :         {
   17868             :           this->get_file_info()->display("Called from copy SgTypeShort: debug");
   17869             :         }
   17870             :      ROSE_ASSERT(previouslyCopied == false);
   17871             : 
   17872             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   17873             :      AstAttribute* newAttribute = new AstAttribute();
   17874             :      ROSE_ASSERT(newAttribute != NULL);
   17875             : 
   17876             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   17877             :      const_cast<SgTypeShort*>(this)->attribute.add("copied",newAttribute);
   17878             : #endif
   17879             : 
   17880             :   // Copy data members from base classes
   17881             :  
   17882             : 
   17883             :   // Build an empty copy of this object (will be filled in, but 
   17884             :   // the parent can't be set and must be set by the caller)
   17885           0 :      result = new SgTypeShort(  );
   17886           0 :      ROSE_ASSERT(result != NULL);
   17887             : 
   17888             :   // Copy data members of "this" class
   17889             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   17890             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   17891             :   // case: toBeCopied == COPY_DATA for isCoArray
   17892           0 :      bool isCoArray_copy = p_isCoArray; 
   17893           0 :      result->p_isCoArray = isCoArray_copy; 
   17894             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   17895             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   17896             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   17897           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   17898           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   17899             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   17900             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   17901             :   // case: toBeCopied == COPY_DATA for ref_to
   17902           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   17903           0 :      result->p_ref_to = ref_to_copy; 
   17904             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   17905             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   17906             :   // case: toBeCopied == COPY_DATA for ptr_to
   17907           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   17908           0 :      result->p_ptr_to = ptr_to_copy; 
   17909             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   17910             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   17911             :   // case: toBeCopied == COPY_DATA for modifiers
   17912           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   17913           0 :      result->p_modifiers = modifiers_copy; 
   17914             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   17915             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   17916             :   // case: toBeCopied == COPY_DATA for typedefs
   17917           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   17918           0 :      result->p_typedefs = typedefs_copy; 
   17919             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   17920             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   17921             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   17922           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   17923           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   17924             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   17925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   17926             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   17927           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   17928           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   17929             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   17930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   17931             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   17932           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   17933           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   17934             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   17935           0 :      SgExpression* type_kind_copy; 
   17936             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   17937           0 :           if (get_type_kind() != NULL) 
   17938             :              { 
   17939           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   17940             :              } 
   17941             :             else 
   17942             :              { 
   17943             :                type_kind_copy = NULL; 
   17944             :              } 
   17945             :   /* check for a valid pointer and delete if present */ 
   17946           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   17947           0 :      result->p_type_kind = type_kind_copy; 
   17948             :   // case: not a listType for (using conditionalToSetParent)type_kind
   17949           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   17950             :              { 
   17951           0 :                type_kind_copy->set_parent(result); 
   17952             :              } 
   17953             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   17954             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   17955             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   17956           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   17957           0 :      if ( p_attributeMechanism != NULL ) 
   17958             :         { 
   17959           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   17960             :         } 
   17961             :        else 
   17962             :         { 
   17963             :           attributeMechanism_copy = NULL; 
   17964             :         } 
   17965             :   /* check for a valid pointer and delete if present */ 
   17966           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   17967             :   /* add assignment to result here */ 
   17968           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   17969             : 
   17970             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   17971             : 
   17972             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   17973             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   17974             :   // fixupCopy(result,help);
   17975             : 
   17976             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   17977             :   // the Sg_File_Info objects that are built for the new IR nodes.
   17978           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   17979           0 :      if (locatedNode != NULL)
   17980             :         {
   17981             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   17982           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   17983           0 :           ROSE_ASSERT(start != NULL);
   17984             : #if 0
   17985             :        // Debugging information
   17986             :           if (start->get_parent() == NULL)
   17987             :              {
   17988             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   17989             :              }
   17990             : #endif
   17991           0 :           start->set_parent(locatedNode);
   17992           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   17993             : 
   17994           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   17995             : 
   17996             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   17997             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   17998             :        // ROSE_ASSERT(end != NULL);
   17999           0 :           if (end == NULL)
   18000             :              {
   18001           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   18002             :              }
   18003             :             else
   18004             :              {
   18005             : #if 0
   18006             :             // Debugging information
   18007             :                if (end->get_parent() == NULL)
   18008             :                   {
   18009             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18010             :                   }
   18011             : #endif
   18012           0 :                end->set_parent(locatedNode);
   18013           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   18014             :              }
   18015             : 
   18016           0 :           SgExpression* expression = isSgExpression(result);
   18017           0 :           if (isSgExpression(this) != NULL)
   18018             :              {
   18019           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   18020             : 
   18021             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   18022           0 :                if (operatorPosition != NULL)
   18023             :                   {
   18024             : #if 0
   18025             :                  // Debugging information
   18026             :                     if (operatorPosition->get_parent() == NULL)
   18027             :                        {
   18028             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18029             :                        }
   18030             : #endif
   18031           0 :                     operatorPosition->set_parent(expression);
   18032           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   18033             :                   }
   18034             :              }
   18035             :         }
   18036             : 
   18037             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   18038           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   18039           0 :      if (initializedName != NULL)
   18040             :         {
   18041             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   18042           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   18043           0 :           ROSE_ASSERT(start != NULL);
   18044             : #if 0
   18045             :        // Debugging information
   18046             :           if (start->get_parent() == NULL)
   18047             :              {
   18048             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18049             :              }
   18050             : #endif
   18051           0 :           start->set_parent(initializedName);
   18052           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   18053             : 
   18054             : #if 0
   18055             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   18056             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   18057             : 
   18058             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   18059             :        // ROSE_ASSERT(end != NULL);
   18060             :           if (end == NULL)
   18061             :              {
   18062             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   18063             :              }
   18064             :             else
   18065             :              {
   18066             :                if (end->get_parent() == NULL)
   18067             :                   {
   18068             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18069             :                   }
   18070             :                end->set_parent(initializedName);
   18071             :                ROSE_ASSERT(end->get_parent() != NULL);
   18072             :              }
   18073             : #endif
   18074             :         }
   18075             : 
   18076             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   18077           0 :      help.insertCopiedNodePair(this,result);
   18078             : 
   18079             :   // printf ("End of copy SgTypeShort = %p = %s \n",this,SageInterface::get_name(this).c_str());
   18080             : 
   18081             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   18082             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   18083           0 :      help.decrementDepth();
   18084             : 
   18085             :   // Test if this is the root of the copy!
   18086           0 :      if (help.get_depth() == 0)
   18087             :         {
   18088             :        // This is the original calling node.
   18089             : 
   18090             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   18091             :        // printf ("Calling SgTypeShort::fixupCopy() (from root of AST being copied) \n");
   18092             : #if ALT_FIXUP_COPY
   18093             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   18094           0 :           fixupCopy_scopes (result,help);
   18095           0 :           fixupCopy_symbols (result,help);
   18096           0 :           fixupCopy_references (result,help);
   18097             : #else
   18098             :           fixupCopy(result,help);
   18099             : #endif
   18100             :        // Allow this to be called recursively, so accumulate the state.
   18101             :        // Also, clear the state in the SgCopyHelp object.
   18102             :        // help.clearState();
   18103             :         }
   18104             : 
   18105           0 :      return result;
   18106             :    }
   18107             : 
   18108             : 
   18109             : /* #line 18110 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   18110             : 
   18111             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   18112             : 
   18113           0 : SgNode* SgTypeSignedShort::copy ( SgCopyHelp& help) const
   18114             :    {
   18115           0 :      SgTypeSignedShort* result = NULL;
   18116             : 
   18117             :   // printf ("Copy SgTypeSignedShort = %p = %s \n",this,SageInterface::get_name(this).c_str());
   18118             : 
   18119             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   18120             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   18121             :   // The default value of the depth is 0, so after this call the depth is 1!
   18122           0 :      help.incrementDepth();
   18123             : 
   18124             : #if 0
   18125             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   18126             :   // but it is not generally true that things can only be copied once!
   18127             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   18128             :   // AstAttribute* existingAttribute = const_cast<SgTypeSignedShort*>(this)->attribute["copied"];
   18129             :      bool previouslyCopied = const_cast<SgTypeSignedShort*>(this)->attribute.exists("copied");
   18130             :      if (previouslyCopied == true)
   18131             :         {
   18132             :           this->get_file_info()->display("Called from copy SgTypeSignedShort: debug");
   18133             :         }
   18134             :      ROSE_ASSERT(previouslyCopied == false);
   18135             : 
   18136             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   18137             :      AstAttribute* newAttribute = new AstAttribute();
   18138             :      ROSE_ASSERT(newAttribute != NULL);
   18139             : 
   18140             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   18141             :      const_cast<SgTypeSignedShort*>(this)->attribute.add("copied",newAttribute);
   18142             : #endif
   18143             : 
   18144             :   // Copy data members from base classes
   18145             :  
   18146             : 
   18147             :   // Build an empty copy of this object (will be filled in, but 
   18148             :   // the parent can't be set and must be set by the caller)
   18149           0 :      result = new SgTypeSignedShort(  );
   18150           0 :      ROSE_ASSERT(result != NULL);
   18151             : 
   18152             :   // Copy data members of "this" class
   18153             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   18154             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   18155             :   // case: toBeCopied == COPY_DATA for isCoArray
   18156           0 :      bool isCoArray_copy = p_isCoArray; 
   18157           0 :      result->p_isCoArray = isCoArray_copy; 
   18158             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   18159             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   18160             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   18161           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   18162           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   18163             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   18164             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   18165             :   // case: toBeCopied == COPY_DATA for ref_to
   18166           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   18167           0 :      result->p_ref_to = ref_to_copy; 
   18168             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   18169             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   18170             :   // case: toBeCopied == COPY_DATA for ptr_to
   18171           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   18172           0 :      result->p_ptr_to = ptr_to_copy; 
   18173             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   18174             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   18175             :   // case: toBeCopied == COPY_DATA for modifiers
   18176           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   18177           0 :      result->p_modifiers = modifiers_copy; 
   18178             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   18179             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   18180             :   // case: toBeCopied == COPY_DATA for typedefs
   18181           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   18182           0 :      result->p_typedefs = typedefs_copy; 
   18183             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   18184             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   18185             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   18186           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   18187           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   18188             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   18189             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   18190             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   18191           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   18192           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   18193             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   18194             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   18195             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   18196           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   18197           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   18198             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   18199           0 :      SgExpression* type_kind_copy; 
   18200             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   18201           0 :           if (get_type_kind() != NULL) 
   18202             :              { 
   18203           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   18204             :              } 
   18205             :             else 
   18206             :              { 
   18207             :                type_kind_copy = NULL; 
   18208             :              } 
   18209             :   /* check for a valid pointer and delete if present */ 
   18210           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   18211           0 :      result->p_type_kind = type_kind_copy; 
   18212             :   // case: not a listType for (using conditionalToSetParent)type_kind
   18213           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   18214             :              { 
   18215           0 :                type_kind_copy->set_parent(result); 
   18216             :              } 
   18217             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   18218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   18219             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   18220           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   18221           0 :      if ( p_attributeMechanism != NULL ) 
   18222             :         { 
   18223           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   18224             :         } 
   18225             :        else 
   18226             :         { 
   18227             :           attributeMechanism_copy = NULL; 
   18228             :         } 
   18229             :   /* check for a valid pointer and delete if present */ 
   18230           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   18231             :   /* add assignment to result here */ 
   18232           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   18233             : 
   18234             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   18235             : 
   18236             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   18237             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   18238             :   // fixupCopy(result,help);
   18239             : 
   18240             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   18241             :   // the Sg_File_Info objects that are built for the new IR nodes.
   18242           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   18243           0 :      if (locatedNode != NULL)
   18244             :         {
   18245             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   18246           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   18247           0 :           ROSE_ASSERT(start != NULL);
   18248             : #if 0
   18249             :        // Debugging information
   18250             :           if (start->get_parent() == NULL)
   18251             :              {
   18252             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18253             :              }
   18254             : #endif
   18255           0 :           start->set_parent(locatedNode);
   18256           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   18257             : 
   18258           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   18259             : 
   18260             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   18261             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   18262             :        // ROSE_ASSERT(end != NULL);
   18263           0 :           if (end == NULL)
   18264             :              {
   18265           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   18266             :              }
   18267             :             else
   18268             :              {
   18269             : #if 0
   18270             :             // Debugging information
   18271             :                if (end->get_parent() == NULL)
   18272             :                   {
   18273             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18274             :                   }
   18275             : #endif
   18276           0 :                end->set_parent(locatedNode);
   18277           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   18278             :              }
   18279             : 
   18280           0 :           SgExpression* expression = isSgExpression(result);
   18281           0 :           if (isSgExpression(this) != NULL)
   18282             :              {
   18283           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   18284             : 
   18285             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   18286           0 :                if (operatorPosition != NULL)
   18287             :                   {
   18288             : #if 0
   18289             :                  // Debugging information
   18290             :                     if (operatorPosition->get_parent() == NULL)
   18291             :                        {
   18292             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18293             :                        }
   18294             : #endif
   18295           0 :                     operatorPosition->set_parent(expression);
   18296           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   18297             :                   }
   18298             :              }
   18299             :         }
   18300             : 
   18301             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   18302           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   18303           0 :      if (initializedName != NULL)
   18304             :         {
   18305             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   18306           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   18307           0 :           ROSE_ASSERT(start != NULL);
   18308             : #if 0
   18309             :        // Debugging information
   18310             :           if (start->get_parent() == NULL)
   18311             :              {
   18312             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18313             :              }
   18314             : #endif
   18315           0 :           start->set_parent(initializedName);
   18316           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   18317             : 
   18318             : #if 0
   18319             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   18320             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   18321             : 
   18322             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   18323             :        // ROSE_ASSERT(end != NULL);
   18324             :           if (end == NULL)
   18325             :              {
   18326             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   18327             :              }
   18328             :             else
   18329             :              {
   18330             :                if (end->get_parent() == NULL)
   18331             :                   {
   18332             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18333             :                   }
   18334             :                end->set_parent(initializedName);
   18335             :                ROSE_ASSERT(end->get_parent() != NULL);
   18336             :              }
   18337             : #endif
   18338             :         }
   18339             : 
   18340             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   18341           0 :      help.insertCopiedNodePair(this,result);
   18342             : 
   18343             :   // printf ("End of copy SgTypeSignedShort = %p = %s \n",this,SageInterface::get_name(this).c_str());
   18344             : 
   18345             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   18346             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   18347           0 :      help.decrementDepth();
   18348             : 
   18349             :   // Test if this is the root of the copy!
   18350           0 :      if (help.get_depth() == 0)
   18351             :         {
   18352             :        // This is the original calling node.
   18353             : 
   18354             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   18355             :        // printf ("Calling SgTypeSignedShort::fixupCopy() (from root of AST being copied) \n");
   18356             : #if ALT_FIXUP_COPY
   18357             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   18358           0 :           fixupCopy_scopes (result,help);
   18359           0 :           fixupCopy_symbols (result,help);
   18360           0 :           fixupCopy_references (result,help);
   18361             : #else
   18362             :           fixupCopy(result,help);
   18363             : #endif
   18364             :        // Allow this to be called recursively, so accumulate the state.
   18365             :        // Also, clear the state in the SgCopyHelp object.
   18366             :        // help.clearState();
   18367             :         }
   18368             : 
   18369           0 :      return result;
   18370             :    }
   18371             : 
   18372             : 
   18373             : /* #line 18374 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   18374             : 
   18375             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   18376             : 
   18377           0 : SgNode* SgTypeUnsignedShort::copy ( SgCopyHelp& help) const
   18378             :    {
   18379           0 :      SgTypeUnsignedShort* result = NULL;
   18380             : 
   18381             :   // printf ("Copy SgTypeUnsignedShort = %p = %s \n",this,SageInterface::get_name(this).c_str());
   18382             : 
   18383             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   18384             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   18385             :   // The default value of the depth is 0, so after this call the depth is 1!
   18386           0 :      help.incrementDepth();
   18387             : 
   18388             : #if 0
   18389             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   18390             :   // but it is not generally true that things can only be copied once!
   18391             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   18392             :   // AstAttribute* existingAttribute = const_cast<SgTypeUnsignedShort*>(this)->attribute["copied"];
   18393             :      bool previouslyCopied = const_cast<SgTypeUnsignedShort*>(this)->attribute.exists("copied");
   18394             :      if (previouslyCopied == true)
   18395             :         {
   18396             :           this->get_file_info()->display("Called from copy SgTypeUnsignedShort: debug");
   18397             :         }
   18398             :      ROSE_ASSERT(previouslyCopied == false);
   18399             : 
   18400             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   18401             :      AstAttribute* newAttribute = new AstAttribute();
   18402             :      ROSE_ASSERT(newAttribute != NULL);
   18403             : 
   18404             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   18405             :      const_cast<SgTypeUnsignedShort*>(this)->attribute.add("copied",newAttribute);
   18406             : #endif
   18407             : 
   18408             :   // Copy data members from base classes
   18409             :  
   18410             : 
   18411             :   // Build an empty copy of this object (will be filled in, but 
   18412             :   // the parent can't be set and must be set by the caller)
   18413           0 :      result = new SgTypeUnsignedShort(  );
   18414           0 :      ROSE_ASSERT(result != NULL);
   18415             : 
   18416             :   // Copy data members of "this" class
   18417             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   18418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   18419             :   // case: toBeCopied == COPY_DATA for isCoArray
   18420           0 :      bool isCoArray_copy = p_isCoArray; 
   18421           0 :      result->p_isCoArray = isCoArray_copy; 
   18422             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   18423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   18424             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   18425           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   18426           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   18427             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   18428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   18429             :   // case: toBeCopied == COPY_DATA for ref_to
   18430           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   18431           0 :      result->p_ref_to = ref_to_copy; 
   18432             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   18433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   18434             :   // case: toBeCopied == COPY_DATA for ptr_to
   18435           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   18436           0 :      result->p_ptr_to = ptr_to_copy; 
   18437             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   18438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   18439             :   // case: toBeCopied == COPY_DATA for modifiers
   18440           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   18441           0 :      result->p_modifiers = modifiers_copy; 
   18442             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   18443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   18444             :   // case: toBeCopied == COPY_DATA for typedefs
   18445           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   18446           0 :      result->p_typedefs = typedefs_copy; 
   18447             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   18448             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   18449             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   18450           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   18451           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   18452             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   18453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   18454             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   18455           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   18456           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   18457             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   18458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   18459             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   18460           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   18461           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   18462             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   18463           0 :      SgExpression* type_kind_copy; 
   18464             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   18465           0 :           if (get_type_kind() != NULL) 
   18466             :              { 
   18467           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   18468             :              } 
   18469             :             else 
   18470             :              { 
   18471             :                type_kind_copy = NULL; 
   18472             :              } 
   18473             :   /* check for a valid pointer and delete if present */ 
   18474           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   18475           0 :      result->p_type_kind = type_kind_copy; 
   18476             :   // case: not a listType for (using conditionalToSetParent)type_kind
   18477           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   18478             :              { 
   18479           0 :                type_kind_copy->set_parent(result); 
   18480             :              } 
   18481             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   18482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   18483             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   18484           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   18485           0 :      if ( p_attributeMechanism != NULL ) 
   18486             :         { 
   18487           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   18488             :         } 
   18489             :        else 
   18490             :         { 
   18491             :           attributeMechanism_copy = NULL; 
   18492             :         } 
   18493             :   /* check for a valid pointer and delete if present */ 
   18494           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   18495             :   /* add assignment to result here */ 
   18496           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   18497             : 
   18498             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   18499             : 
   18500             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   18501             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   18502             :   // fixupCopy(result,help);
   18503             : 
   18504             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   18505             :   // the Sg_File_Info objects that are built for the new IR nodes.
   18506           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   18507           0 :      if (locatedNode != NULL)
   18508             :         {
   18509             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   18510           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   18511           0 :           ROSE_ASSERT(start != NULL);
   18512             : #if 0
   18513             :        // Debugging information
   18514             :           if (start->get_parent() == NULL)
   18515             :              {
   18516             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18517             :              }
   18518             : #endif
   18519           0 :           start->set_parent(locatedNode);
   18520           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   18521             : 
   18522           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   18523             : 
   18524             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   18525             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   18526             :        // ROSE_ASSERT(end != NULL);
   18527           0 :           if (end == NULL)
   18528             :              {
   18529           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   18530             :              }
   18531             :             else
   18532             :              {
   18533             : #if 0
   18534             :             // Debugging information
   18535             :                if (end->get_parent() == NULL)
   18536             :                   {
   18537             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18538             :                   }
   18539             : #endif
   18540           0 :                end->set_parent(locatedNode);
   18541           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   18542             :              }
   18543             : 
   18544           0 :           SgExpression* expression = isSgExpression(result);
   18545           0 :           if (isSgExpression(this) != NULL)
   18546             :              {
   18547           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   18548             : 
   18549             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   18550           0 :                if (operatorPosition != NULL)
   18551             :                   {
   18552             : #if 0
   18553             :                  // Debugging information
   18554             :                     if (operatorPosition->get_parent() == NULL)
   18555             :                        {
   18556             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18557             :                        }
   18558             : #endif
   18559           0 :                     operatorPosition->set_parent(expression);
   18560           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   18561             :                   }
   18562             :              }
   18563             :         }
   18564             : 
   18565             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   18566           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   18567           0 :      if (initializedName != NULL)
   18568             :         {
   18569             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   18570           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   18571           0 :           ROSE_ASSERT(start != NULL);
   18572             : #if 0
   18573             :        // Debugging information
   18574             :           if (start->get_parent() == NULL)
   18575             :              {
   18576             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18577             :              }
   18578             : #endif
   18579           0 :           start->set_parent(initializedName);
   18580           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   18581             : 
   18582             : #if 0
   18583             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   18584             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   18585             : 
   18586             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   18587             :        // ROSE_ASSERT(end != NULL);
   18588             :           if (end == NULL)
   18589             :              {
   18590             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   18591             :              }
   18592             :             else
   18593             :              {
   18594             :                if (end->get_parent() == NULL)
   18595             :                   {
   18596             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18597             :                   }
   18598             :                end->set_parent(initializedName);
   18599             :                ROSE_ASSERT(end->get_parent() != NULL);
   18600             :              }
   18601             : #endif
   18602             :         }
   18603             : 
   18604             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   18605           0 :      help.insertCopiedNodePair(this,result);
   18606             : 
   18607             :   // printf ("End of copy SgTypeUnsignedShort = %p = %s \n",this,SageInterface::get_name(this).c_str());
   18608             : 
   18609             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   18610             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   18611           0 :      help.decrementDepth();
   18612             : 
   18613             :   // Test if this is the root of the copy!
   18614           0 :      if (help.get_depth() == 0)
   18615             :         {
   18616             :        // This is the original calling node.
   18617             : 
   18618             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   18619             :        // printf ("Calling SgTypeUnsignedShort::fixupCopy() (from root of AST being copied) \n");
   18620             : #if ALT_FIXUP_COPY
   18621             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   18622           0 :           fixupCopy_scopes (result,help);
   18623           0 :           fixupCopy_symbols (result,help);
   18624           0 :           fixupCopy_references (result,help);
   18625             : #else
   18626             :           fixupCopy(result,help);
   18627             : #endif
   18628             :        // Allow this to be called recursively, so accumulate the state.
   18629             :        // Also, clear the state in the SgCopyHelp object.
   18630             :        // help.clearState();
   18631             :         }
   18632             : 
   18633           0 :      return result;
   18634             :    }
   18635             : 
   18636             : 
   18637             : /* #line 18638 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   18638             : 
   18639             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   18640             : 
   18641           0 : SgNode* SgTypeInt::copy ( SgCopyHelp& help) const
   18642             :    {
   18643           0 :      SgTypeInt* result = NULL;
   18644             : 
   18645             :   // printf ("Copy SgTypeInt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   18646             : 
   18647             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   18648             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   18649             :   // The default value of the depth is 0, so after this call the depth is 1!
   18650           0 :      help.incrementDepth();
   18651             : 
   18652             : #if 0
   18653             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   18654             :   // but it is not generally true that things can only be copied once!
   18655             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   18656             :   // AstAttribute* existingAttribute = const_cast<SgTypeInt*>(this)->attribute["copied"];
   18657             :      bool previouslyCopied = const_cast<SgTypeInt*>(this)->attribute.exists("copied");
   18658             :      if (previouslyCopied == true)
   18659             :         {
   18660             :           this->get_file_info()->display("Called from copy SgTypeInt: debug");
   18661             :         }
   18662             :      ROSE_ASSERT(previouslyCopied == false);
   18663             : 
   18664             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   18665             :      AstAttribute* newAttribute = new AstAttribute();
   18666             :      ROSE_ASSERT(newAttribute != NULL);
   18667             : 
   18668             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   18669             :      const_cast<SgTypeInt*>(this)->attribute.add("copied",newAttribute);
   18670             : #endif
   18671             : 
   18672             :   // Copy data members from base classes
   18673             :   // Copy constructor parameter data member: field_size_copy
   18674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for field_size
   18675             :   // case: toBeCopied == COPY_DATA for field_size
   18676           0 :      int field_size_copy = p_field_size; 
   18677             :  
   18678             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   18679             : 
   18680             :   // Build an empty copy of this object (will be filled in, but 
   18681             :   // the parent can't be set and must be set by the caller)
   18682           0 :      result = new SgTypeInt(  field_size_copy );
   18683           0 :      ROSE_ASSERT(result != NULL);
   18684             : 
   18685             :   // Copy data members of "this" class
   18686             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   18687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   18688             :   // case: toBeCopied == COPY_DATA for isCoArray
   18689           0 :      bool isCoArray_copy = p_isCoArray; 
   18690           0 :      result->p_isCoArray = isCoArray_copy; 
   18691             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   18692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   18693             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   18694           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   18695           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   18696             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   18697             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   18698             :   // case: toBeCopied == COPY_DATA for ref_to
   18699           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   18700           0 :      result->p_ref_to = ref_to_copy; 
   18701             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   18702             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   18703             :   // case: toBeCopied == COPY_DATA for ptr_to
   18704           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   18705           0 :      result->p_ptr_to = ptr_to_copy; 
   18706             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   18707             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   18708             :   // case: toBeCopied == COPY_DATA for modifiers
   18709           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   18710           0 :      result->p_modifiers = modifiers_copy; 
   18711             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   18712             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   18713             :   // case: toBeCopied == COPY_DATA for typedefs
   18714           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   18715           0 :      result->p_typedefs = typedefs_copy; 
   18716             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   18717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   18718             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   18719           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   18720           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   18721             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   18722             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   18723             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   18724           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   18725           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   18726             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   18727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   18728             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   18729           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   18730           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   18731             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   18732           0 :      SgExpression* type_kind_copy; 
   18733             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   18734           0 :           if (get_type_kind() != NULL) 
   18735             :              { 
   18736           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   18737             :              } 
   18738             :             else 
   18739             :              { 
   18740             :                type_kind_copy = NULL; 
   18741             :              } 
   18742             :   /* check for a valid pointer and delete if present */ 
   18743           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   18744           0 :      result->p_type_kind = type_kind_copy; 
   18745             :   // case: not a listType for (using conditionalToSetParent)type_kind
   18746           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   18747             :              { 
   18748           0 :                type_kind_copy->set_parent(result); 
   18749             :              } 
   18750             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   18751             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   18752             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   18753           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   18754           0 :      if ( p_attributeMechanism != NULL ) 
   18755             :         { 
   18756           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   18757             :         } 
   18758             :        else 
   18759             :         { 
   18760             :           attributeMechanism_copy = NULL; 
   18761             :         } 
   18762             :   /* check for a valid pointer and delete if present */ 
   18763           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   18764             :   /* add assignment to result here */ 
   18765           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   18766             : 
   18767             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   18768             : 
   18769             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   18770             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   18771             :   // fixupCopy(result,help);
   18772             : 
   18773             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   18774             :   // the Sg_File_Info objects that are built for the new IR nodes.
   18775           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   18776           0 :      if (locatedNode != NULL)
   18777             :         {
   18778             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   18779           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   18780           0 :           ROSE_ASSERT(start != NULL);
   18781             : #if 0
   18782             :        // Debugging information
   18783             :           if (start->get_parent() == NULL)
   18784             :              {
   18785             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18786             :              }
   18787             : #endif
   18788           0 :           start->set_parent(locatedNode);
   18789           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   18790             : 
   18791           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   18792             : 
   18793             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   18794             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   18795             :        // ROSE_ASSERT(end != NULL);
   18796           0 :           if (end == NULL)
   18797             :              {
   18798           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   18799             :              }
   18800             :             else
   18801             :              {
   18802             : #if 0
   18803             :             // Debugging information
   18804             :                if (end->get_parent() == NULL)
   18805             :                   {
   18806             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18807             :                   }
   18808             : #endif
   18809           0 :                end->set_parent(locatedNode);
   18810           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   18811             :              }
   18812             : 
   18813           0 :           SgExpression* expression = isSgExpression(result);
   18814           0 :           if (isSgExpression(this) != NULL)
   18815             :              {
   18816           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   18817             : 
   18818             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   18819           0 :                if (operatorPosition != NULL)
   18820             :                   {
   18821             : #if 0
   18822             :                  // Debugging information
   18823             :                     if (operatorPosition->get_parent() == NULL)
   18824             :                        {
   18825             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18826             :                        }
   18827             : #endif
   18828           0 :                     operatorPosition->set_parent(expression);
   18829           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   18830             :                   }
   18831             :              }
   18832             :         }
   18833             : 
   18834             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   18835           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   18836           0 :      if (initializedName != NULL)
   18837             :         {
   18838             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   18839           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   18840           0 :           ROSE_ASSERT(start != NULL);
   18841             : #if 0
   18842             :        // Debugging information
   18843             :           if (start->get_parent() == NULL)
   18844             :              {
   18845             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18846             :              }
   18847             : #endif
   18848           0 :           start->set_parent(initializedName);
   18849           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   18850             : 
   18851             : #if 0
   18852             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   18853             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   18854             : 
   18855             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   18856             :        // ROSE_ASSERT(end != NULL);
   18857             :           if (end == NULL)
   18858             :              {
   18859             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   18860             :              }
   18861             :             else
   18862             :              {
   18863             :                if (end->get_parent() == NULL)
   18864             :                   {
   18865             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   18866             :                   }
   18867             :                end->set_parent(initializedName);
   18868             :                ROSE_ASSERT(end->get_parent() != NULL);
   18869             :              }
   18870             : #endif
   18871             :         }
   18872             : 
   18873             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   18874           0 :      help.insertCopiedNodePair(this,result);
   18875             : 
   18876             :   // printf ("End of copy SgTypeInt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   18877             : 
   18878             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   18879             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   18880           0 :      help.decrementDepth();
   18881             : 
   18882             :   // Test if this is the root of the copy!
   18883           0 :      if (help.get_depth() == 0)
   18884             :         {
   18885             :        // This is the original calling node.
   18886             : 
   18887             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   18888             :        // printf ("Calling SgTypeInt::fixupCopy() (from root of AST being copied) \n");
   18889             : #if ALT_FIXUP_COPY
   18890             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   18891           0 :           fixupCopy_scopes (result,help);
   18892           0 :           fixupCopy_symbols (result,help);
   18893           0 :           fixupCopy_references (result,help);
   18894             : #else
   18895             :           fixupCopy(result,help);
   18896             : #endif
   18897             :        // Allow this to be called recursively, so accumulate the state.
   18898             :        // Also, clear the state in the SgCopyHelp object.
   18899             :        // help.clearState();
   18900             :         }
   18901             : 
   18902           0 :      return result;
   18903             :    }
   18904             : 
   18905             : 
   18906             : /* #line 18907 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   18907             : 
   18908             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   18909             : 
   18910           0 : SgNode* SgTypeSignedInt::copy ( SgCopyHelp& help) const
   18911             :    {
   18912           0 :      SgTypeSignedInt* result = NULL;
   18913             : 
   18914             :   // printf ("Copy SgTypeSignedInt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   18915             : 
   18916             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   18917             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   18918             :   // The default value of the depth is 0, so after this call the depth is 1!
   18919           0 :      help.incrementDepth();
   18920             : 
   18921             : #if 0
   18922             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   18923             :   // but it is not generally true that things can only be copied once!
   18924             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   18925             :   // AstAttribute* existingAttribute = const_cast<SgTypeSignedInt*>(this)->attribute["copied"];
   18926             :      bool previouslyCopied = const_cast<SgTypeSignedInt*>(this)->attribute.exists("copied");
   18927             :      if (previouslyCopied == true)
   18928             :         {
   18929             :           this->get_file_info()->display("Called from copy SgTypeSignedInt: debug");
   18930             :         }
   18931             :      ROSE_ASSERT(previouslyCopied == false);
   18932             : 
   18933             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   18934             :      AstAttribute* newAttribute = new AstAttribute();
   18935             :      ROSE_ASSERT(newAttribute != NULL);
   18936             : 
   18937             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   18938             :      const_cast<SgTypeSignedInt*>(this)->attribute.add("copied",newAttribute);
   18939             : #endif
   18940             : 
   18941             :   // Copy data members from base classes
   18942             :  
   18943             : 
   18944             :   // Build an empty copy of this object (will be filled in, but 
   18945             :   // the parent can't be set and must be set by the caller)
   18946           0 :      result = new SgTypeSignedInt(  );
   18947           0 :      ROSE_ASSERT(result != NULL);
   18948             : 
   18949             :   // Copy data members of "this" class
   18950             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   18951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   18952             :   // case: toBeCopied == COPY_DATA for isCoArray
   18953           0 :      bool isCoArray_copy = p_isCoArray; 
   18954           0 :      result->p_isCoArray = isCoArray_copy; 
   18955             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   18956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   18957             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   18958           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   18959           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   18960             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   18961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   18962             :   // case: toBeCopied == COPY_DATA for ref_to
   18963           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   18964           0 :      result->p_ref_to = ref_to_copy; 
   18965             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   18966             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   18967             :   // case: toBeCopied == COPY_DATA for ptr_to
   18968           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   18969           0 :      result->p_ptr_to = ptr_to_copy; 
   18970             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   18971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   18972             :   // case: toBeCopied == COPY_DATA for modifiers
   18973           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   18974           0 :      result->p_modifiers = modifiers_copy; 
   18975             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   18976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   18977             :   // case: toBeCopied == COPY_DATA for typedefs
   18978           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   18979           0 :      result->p_typedefs = typedefs_copy; 
   18980             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   18981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   18982             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   18983           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   18984           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   18985             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   18986             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   18987             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   18988           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   18989           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   18990             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   18991             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   18992             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   18993           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   18994           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   18995             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   18996           0 :      SgExpression* type_kind_copy; 
   18997             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   18998           0 :           if (get_type_kind() != NULL) 
   18999             :              { 
   19000           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   19001             :              } 
   19002             :             else 
   19003             :              { 
   19004             :                type_kind_copy = NULL; 
   19005             :              } 
   19006             :   /* check for a valid pointer and delete if present */ 
   19007           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   19008           0 :      result->p_type_kind = type_kind_copy; 
   19009             :   // case: not a listType for (using conditionalToSetParent)type_kind
   19010           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   19011             :              { 
   19012           0 :                type_kind_copy->set_parent(result); 
   19013             :              } 
   19014             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   19015             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   19016             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   19017           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   19018           0 :      if ( p_attributeMechanism != NULL ) 
   19019             :         { 
   19020           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   19021             :         } 
   19022             :        else 
   19023             :         { 
   19024             :           attributeMechanism_copy = NULL; 
   19025             :         } 
   19026             :   /* check for a valid pointer and delete if present */ 
   19027           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   19028             :   /* add assignment to result here */ 
   19029           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   19030             : 
   19031             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   19032             : 
   19033             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   19034             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   19035             :   // fixupCopy(result,help);
   19036             : 
   19037             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   19038             :   // the Sg_File_Info objects that are built for the new IR nodes.
   19039           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   19040           0 :      if (locatedNode != NULL)
   19041             :         {
   19042             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   19043           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   19044           0 :           ROSE_ASSERT(start != NULL);
   19045             : #if 0
   19046             :        // Debugging information
   19047             :           if (start->get_parent() == NULL)
   19048             :              {
   19049             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19050             :              }
   19051             : #endif
   19052           0 :           start->set_parent(locatedNode);
   19053           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   19054             : 
   19055           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   19056             : 
   19057             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   19058             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   19059             :        // ROSE_ASSERT(end != NULL);
   19060           0 :           if (end == NULL)
   19061             :              {
   19062           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   19063             :              }
   19064             :             else
   19065             :              {
   19066             : #if 0
   19067             :             // Debugging information
   19068             :                if (end->get_parent() == NULL)
   19069             :                   {
   19070             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19071             :                   }
   19072             : #endif
   19073           0 :                end->set_parent(locatedNode);
   19074           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   19075             :              }
   19076             : 
   19077           0 :           SgExpression* expression = isSgExpression(result);
   19078           0 :           if (isSgExpression(this) != NULL)
   19079             :              {
   19080           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   19081             : 
   19082             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   19083           0 :                if (operatorPosition != NULL)
   19084             :                   {
   19085             : #if 0
   19086             :                  // Debugging information
   19087             :                     if (operatorPosition->get_parent() == NULL)
   19088             :                        {
   19089             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19090             :                        }
   19091             : #endif
   19092           0 :                     operatorPosition->set_parent(expression);
   19093           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   19094             :                   }
   19095             :              }
   19096             :         }
   19097             : 
   19098             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   19099           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   19100           0 :      if (initializedName != NULL)
   19101             :         {
   19102             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   19103           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   19104           0 :           ROSE_ASSERT(start != NULL);
   19105             : #if 0
   19106             :        // Debugging information
   19107             :           if (start->get_parent() == NULL)
   19108             :              {
   19109             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19110             :              }
   19111             : #endif
   19112           0 :           start->set_parent(initializedName);
   19113           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   19114             : 
   19115             : #if 0
   19116             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   19117             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   19118             : 
   19119             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   19120             :        // ROSE_ASSERT(end != NULL);
   19121             :           if (end == NULL)
   19122             :              {
   19123             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   19124             :              }
   19125             :             else
   19126             :              {
   19127             :                if (end->get_parent() == NULL)
   19128             :                   {
   19129             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19130             :                   }
   19131             :                end->set_parent(initializedName);
   19132             :                ROSE_ASSERT(end->get_parent() != NULL);
   19133             :              }
   19134             : #endif
   19135             :         }
   19136             : 
   19137             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   19138           0 :      help.insertCopiedNodePair(this,result);
   19139             : 
   19140             :   // printf ("End of copy SgTypeSignedInt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   19141             : 
   19142             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   19143             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   19144           0 :      help.decrementDepth();
   19145             : 
   19146             :   // Test if this is the root of the copy!
   19147           0 :      if (help.get_depth() == 0)
   19148             :         {
   19149             :        // This is the original calling node.
   19150             : 
   19151             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   19152             :        // printf ("Calling SgTypeSignedInt::fixupCopy() (from root of AST being copied) \n");
   19153             : #if ALT_FIXUP_COPY
   19154             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   19155           0 :           fixupCopy_scopes (result,help);
   19156           0 :           fixupCopy_symbols (result,help);
   19157           0 :           fixupCopy_references (result,help);
   19158             : #else
   19159             :           fixupCopy(result,help);
   19160             : #endif
   19161             :        // Allow this to be called recursively, so accumulate the state.
   19162             :        // Also, clear the state in the SgCopyHelp object.
   19163             :        // help.clearState();
   19164             :         }
   19165             : 
   19166           0 :      return result;
   19167             :    }
   19168             : 
   19169             : 
   19170             : /* #line 19171 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   19171             : 
   19172             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   19173             : 
   19174           0 : SgNode* SgTypeUnsignedInt::copy ( SgCopyHelp& help) const
   19175             :    {
   19176           0 :      SgTypeUnsignedInt* result = NULL;
   19177             : 
   19178             :   // printf ("Copy SgTypeUnsignedInt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   19179             : 
   19180             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   19181             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   19182             :   // The default value of the depth is 0, so after this call the depth is 1!
   19183           0 :      help.incrementDepth();
   19184             : 
   19185             : #if 0
   19186             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   19187             :   // but it is not generally true that things can only be copied once!
   19188             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   19189             :   // AstAttribute* existingAttribute = const_cast<SgTypeUnsignedInt*>(this)->attribute["copied"];
   19190             :      bool previouslyCopied = const_cast<SgTypeUnsignedInt*>(this)->attribute.exists("copied");
   19191             :      if (previouslyCopied == true)
   19192             :         {
   19193             :           this->get_file_info()->display("Called from copy SgTypeUnsignedInt: debug");
   19194             :         }
   19195             :      ROSE_ASSERT(previouslyCopied == false);
   19196             : 
   19197             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   19198             :      AstAttribute* newAttribute = new AstAttribute();
   19199             :      ROSE_ASSERT(newAttribute != NULL);
   19200             : 
   19201             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   19202             :      const_cast<SgTypeUnsignedInt*>(this)->attribute.add("copied",newAttribute);
   19203             : #endif
   19204             : 
   19205             :   // Copy data members from base classes
   19206             :  
   19207             : 
   19208             :   // Build an empty copy of this object (will be filled in, but 
   19209             :   // the parent can't be set and must be set by the caller)
   19210           0 :      result = new SgTypeUnsignedInt(  );
   19211           0 :      ROSE_ASSERT(result != NULL);
   19212             : 
   19213             :   // Copy data members of "this" class
   19214             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   19215             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   19216             :   // case: toBeCopied == COPY_DATA for isCoArray
   19217           0 :      bool isCoArray_copy = p_isCoArray; 
   19218           0 :      result->p_isCoArray = isCoArray_copy; 
   19219             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   19220             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   19221             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   19222           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   19223           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   19224             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   19225             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   19226             :   // case: toBeCopied == COPY_DATA for ref_to
   19227           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   19228           0 :      result->p_ref_to = ref_to_copy; 
   19229             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   19230             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   19231             :   // case: toBeCopied == COPY_DATA for ptr_to
   19232           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   19233           0 :      result->p_ptr_to = ptr_to_copy; 
   19234             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   19235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   19236             :   // case: toBeCopied == COPY_DATA for modifiers
   19237           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   19238           0 :      result->p_modifiers = modifiers_copy; 
   19239             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   19240             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   19241             :   // case: toBeCopied == COPY_DATA for typedefs
   19242           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   19243           0 :      result->p_typedefs = typedefs_copy; 
   19244             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   19245             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   19246             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   19247           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   19248           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   19249             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   19250             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   19251             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   19252           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   19253           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   19254             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   19255             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   19256             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   19257           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   19258           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   19259             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   19260           0 :      SgExpression* type_kind_copy; 
   19261             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   19262           0 :           if (get_type_kind() != NULL) 
   19263             :              { 
   19264           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   19265             :              } 
   19266             :             else 
   19267             :              { 
   19268             :                type_kind_copy = NULL; 
   19269             :              } 
   19270             :   /* check for a valid pointer and delete if present */ 
   19271           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   19272           0 :      result->p_type_kind = type_kind_copy; 
   19273             :   // case: not a listType for (using conditionalToSetParent)type_kind
   19274           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   19275             :              { 
   19276           0 :                type_kind_copy->set_parent(result); 
   19277             :              } 
   19278             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   19279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   19280             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   19281           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   19282           0 :      if ( p_attributeMechanism != NULL ) 
   19283             :         { 
   19284           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   19285             :         } 
   19286             :        else 
   19287             :         { 
   19288             :           attributeMechanism_copy = NULL; 
   19289             :         } 
   19290             :   /* check for a valid pointer and delete if present */ 
   19291           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   19292             :   /* add assignment to result here */ 
   19293           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   19294             : 
   19295             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   19296             : 
   19297             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   19298             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   19299             :   // fixupCopy(result,help);
   19300             : 
   19301             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   19302             :   // the Sg_File_Info objects that are built for the new IR nodes.
   19303           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   19304           0 :      if (locatedNode != NULL)
   19305             :         {
   19306             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   19307           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   19308           0 :           ROSE_ASSERT(start != NULL);
   19309             : #if 0
   19310             :        // Debugging information
   19311             :           if (start->get_parent() == NULL)
   19312             :              {
   19313             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19314             :              }
   19315             : #endif
   19316           0 :           start->set_parent(locatedNode);
   19317           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   19318             : 
   19319           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   19320             : 
   19321             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   19322             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   19323             :        // ROSE_ASSERT(end != NULL);
   19324           0 :           if (end == NULL)
   19325             :              {
   19326           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   19327             :              }
   19328             :             else
   19329             :              {
   19330             : #if 0
   19331             :             // Debugging information
   19332             :                if (end->get_parent() == NULL)
   19333             :                   {
   19334             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19335             :                   }
   19336             : #endif
   19337           0 :                end->set_parent(locatedNode);
   19338           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   19339             :              }
   19340             : 
   19341           0 :           SgExpression* expression = isSgExpression(result);
   19342           0 :           if (isSgExpression(this) != NULL)
   19343             :              {
   19344           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   19345             : 
   19346             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   19347           0 :                if (operatorPosition != NULL)
   19348             :                   {
   19349             : #if 0
   19350             :                  // Debugging information
   19351             :                     if (operatorPosition->get_parent() == NULL)
   19352             :                        {
   19353             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19354             :                        }
   19355             : #endif
   19356           0 :                     operatorPosition->set_parent(expression);
   19357           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   19358             :                   }
   19359             :              }
   19360             :         }
   19361             : 
   19362             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   19363           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   19364           0 :      if (initializedName != NULL)
   19365             :         {
   19366             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   19367           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   19368           0 :           ROSE_ASSERT(start != NULL);
   19369             : #if 0
   19370             :        // Debugging information
   19371             :           if (start->get_parent() == NULL)
   19372             :              {
   19373             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19374             :              }
   19375             : #endif
   19376           0 :           start->set_parent(initializedName);
   19377           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   19378             : 
   19379             : #if 0
   19380             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   19381             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   19382             : 
   19383             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   19384             :        // ROSE_ASSERT(end != NULL);
   19385             :           if (end == NULL)
   19386             :              {
   19387             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   19388             :              }
   19389             :             else
   19390             :              {
   19391             :                if (end->get_parent() == NULL)
   19392             :                   {
   19393             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19394             :                   }
   19395             :                end->set_parent(initializedName);
   19396             :                ROSE_ASSERT(end->get_parent() != NULL);
   19397             :              }
   19398             : #endif
   19399             :         }
   19400             : 
   19401             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   19402           0 :      help.insertCopiedNodePair(this,result);
   19403             : 
   19404             :   // printf ("End of copy SgTypeUnsignedInt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   19405             : 
   19406             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   19407             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   19408           0 :      help.decrementDepth();
   19409             : 
   19410             :   // Test if this is the root of the copy!
   19411           0 :      if (help.get_depth() == 0)
   19412             :         {
   19413             :        // This is the original calling node.
   19414             : 
   19415             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   19416             :        // printf ("Calling SgTypeUnsignedInt::fixupCopy() (from root of AST being copied) \n");
   19417             : #if ALT_FIXUP_COPY
   19418             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   19419           0 :           fixupCopy_scopes (result,help);
   19420           0 :           fixupCopy_symbols (result,help);
   19421           0 :           fixupCopy_references (result,help);
   19422             : #else
   19423             :           fixupCopy(result,help);
   19424             : #endif
   19425             :        // Allow this to be called recursively, so accumulate the state.
   19426             :        // Also, clear the state in the SgCopyHelp object.
   19427             :        // help.clearState();
   19428             :         }
   19429             : 
   19430           0 :      return result;
   19431             :    }
   19432             : 
   19433             : 
   19434             : /* #line 19435 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   19435             : 
   19436             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   19437             : 
   19438           0 : SgNode* SgTypeLong::copy ( SgCopyHelp& help) const
   19439             :    {
   19440           0 :      SgTypeLong* result = NULL;
   19441             : 
   19442             :   // printf ("Copy SgTypeLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   19443             : 
   19444             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   19445             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   19446             :   // The default value of the depth is 0, so after this call the depth is 1!
   19447           0 :      help.incrementDepth();
   19448             : 
   19449             : #if 0
   19450             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   19451             :   // but it is not generally true that things can only be copied once!
   19452             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   19453             :   // AstAttribute* existingAttribute = const_cast<SgTypeLong*>(this)->attribute["copied"];
   19454             :      bool previouslyCopied = const_cast<SgTypeLong*>(this)->attribute.exists("copied");
   19455             :      if (previouslyCopied == true)
   19456             :         {
   19457             :           this->get_file_info()->display("Called from copy SgTypeLong: debug");
   19458             :         }
   19459             :      ROSE_ASSERT(previouslyCopied == false);
   19460             : 
   19461             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   19462             :      AstAttribute* newAttribute = new AstAttribute();
   19463             :      ROSE_ASSERT(newAttribute != NULL);
   19464             : 
   19465             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   19466             :      const_cast<SgTypeLong*>(this)->attribute.add("copied",newAttribute);
   19467             : #endif
   19468             : 
   19469             :   // Copy data members from base classes
   19470             :  
   19471             : 
   19472             :   // Build an empty copy of this object (will be filled in, but 
   19473             :   // the parent can't be set and must be set by the caller)
   19474           0 :      result = new SgTypeLong(  );
   19475           0 :      ROSE_ASSERT(result != NULL);
   19476             : 
   19477             :   // Copy data members of "this" class
   19478             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   19479             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   19480             :   // case: toBeCopied == COPY_DATA for isCoArray
   19481           0 :      bool isCoArray_copy = p_isCoArray; 
   19482           0 :      result->p_isCoArray = isCoArray_copy; 
   19483             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   19484             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   19485             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   19486           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   19487           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   19488             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   19489             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   19490             :   // case: toBeCopied == COPY_DATA for ref_to
   19491           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   19492           0 :      result->p_ref_to = ref_to_copy; 
   19493             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   19494             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   19495             :   // case: toBeCopied == COPY_DATA for ptr_to
   19496           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   19497           0 :      result->p_ptr_to = ptr_to_copy; 
   19498             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   19499             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   19500             :   // case: toBeCopied == COPY_DATA for modifiers
   19501           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   19502           0 :      result->p_modifiers = modifiers_copy; 
   19503             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   19504             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   19505             :   // case: toBeCopied == COPY_DATA for typedefs
   19506           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   19507           0 :      result->p_typedefs = typedefs_copy; 
   19508             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   19509             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   19510             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   19511           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   19512           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   19513             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   19514             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   19515             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   19516           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   19517           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   19518             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   19519             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   19520             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   19521           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   19522           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   19523             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   19524           0 :      SgExpression* type_kind_copy; 
   19525             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   19526           0 :           if (get_type_kind() != NULL) 
   19527             :              { 
   19528           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   19529             :              } 
   19530             :             else 
   19531             :              { 
   19532             :                type_kind_copy = NULL; 
   19533             :              } 
   19534             :   /* check for a valid pointer and delete if present */ 
   19535           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   19536           0 :      result->p_type_kind = type_kind_copy; 
   19537             :   // case: not a listType for (using conditionalToSetParent)type_kind
   19538           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   19539             :              { 
   19540           0 :                type_kind_copy->set_parent(result); 
   19541             :              } 
   19542             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   19543             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   19544             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   19545           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   19546           0 :      if ( p_attributeMechanism != NULL ) 
   19547             :         { 
   19548           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   19549             :         } 
   19550             :        else 
   19551             :         { 
   19552             :           attributeMechanism_copy = NULL; 
   19553             :         } 
   19554             :   /* check for a valid pointer and delete if present */ 
   19555           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   19556             :   /* add assignment to result here */ 
   19557           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   19558             : 
   19559             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   19560             : 
   19561             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   19562             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   19563             :   // fixupCopy(result,help);
   19564             : 
   19565             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   19566             :   // the Sg_File_Info objects that are built for the new IR nodes.
   19567           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   19568           0 :      if (locatedNode != NULL)
   19569             :         {
   19570             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   19571           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   19572           0 :           ROSE_ASSERT(start != NULL);
   19573             : #if 0
   19574             :        // Debugging information
   19575             :           if (start->get_parent() == NULL)
   19576             :              {
   19577             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19578             :              }
   19579             : #endif
   19580           0 :           start->set_parent(locatedNode);
   19581           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   19582             : 
   19583           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   19584             : 
   19585             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   19586             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   19587             :        // ROSE_ASSERT(end != NULL);
   19588           0 :           if (end == NULL)
   19589             :              {
   19590           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   19591             :              }
   19592             :             else
   19593             :              {
   19594             : #if 0
   19595             :             // Debugging information
   19596             :                if (end->get_parent() == NULL)
   19597             :                   {
   19598             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19599             :                   }
   19600             : #endif
   19601           0 :                end->set_parent(locatedNode);
   19602           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   19603             :              }
   19604             : 
   19605           0 :           SgExpression* expression = isSgExpression(result);
   19606           0 :           if (isSgExpression(this) != NULL)
   19607             :              {
   19608           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   19609             : 
   19610             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   19611           0 :                if (operatorPosition != NULL)
   19612             :                   {
   19613             : #if 0
   19614             :                  // Debugging information
   19615             :                     if (operatorPosition->get_parent() == NULL)
   19616             :                        {
   19617             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19618             :                        }
   19619             : #endif
   19620           0 :                     operatorPosition->set_parent(expression);
   19621           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   19622             :                   }
   19623             :              }
   19624             :         }
   19625             : 
   19626             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   19627           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   19628           0 :      if (initializedName != NULL)
   19629             :         {
   19630             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   19631           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   19632           0 :           ROSE_ASSERT(start != NULL);
   19633             : #if 0
   19634             :        // Debugging information
   19635             :           if (start->get_parent() == NULL)
   19636             :              {
   19637             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19638             :              }
   19639             : #endif
   19640           0 :           start->set_parent(initializedName);
   19641           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   19642             : 
   19643             : #if 0
   19644             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   19645             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   19646             : 
   19647             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   19648             :        // ROSE_ASSERT(end != NULL);
   19649             :           if (end == NULL)
   19650             :              {
   19651             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   19652             :              }
   19653             :             else
   19654             :              {
   19655             :                if (end->get_parent() == NULL)
   19656             :                   {
   19657             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19658             :                   }
   19659             :                end->set_parent(initializedName);
   19660             :                ROSE_ASSERT(end->get_parent() != NULL);
   19661             :              }
   19662             : #endif
   19663             :         }
   19664             : 
   19665             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   19666           0 :      help.insertCopiedNodePair(this,result);
   19667             : 
   19668             :   // printf ("End of copy SgTypeLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   19669             : 
   19670             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   19671             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   19672           0 :      help.decrementDepth();
   19673             : 
   19674             :   // Test if this is the root of the copy!
   19675           0 :      if (help.get_depth() == 0)
   19676             :         {
   19677             :        // This is the original calling node.
   19678             : 
   19679             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   19680             :        // printf ("Calling SgTypeLong::fixupCopy() (from root of AST being copied) \n");
   19681             : #if ALT_FIXUP_COPY
   19682             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   19683           0 :           fixupCopy_scopes (result,help);
   19684           0 :           fixupCopy_symbols (result,help);
   19685           0 :           fixupCopy_references (result,help);
   19686             : #else
   19687             :           fixupCopy(result,help);
   19688             : #endif
   19689             :        // Allow this to be called recursively, so accumulate the state.
   19690             :        // Also, clear the state in the SgCopyHelp object.
   19691             :        // help.clearState();
   19692             :         }
   19693             : 
   19694           0 :      return result;
   19695             :    }
   19696             : 
   19697             : 
   19698             : /* #line 19699 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   19699             : 
   19700             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   19701             : 
   19702           0 : SgNode* SgTypeSignedLong::copy ( SgCopyHelp& help) const
   19703             :    {
   19704           0 :      SgTypeSignedLong* result = NULL;
   19705             : 
   19706             :   // printf ("Copy SgTypeSignedLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   19707             : 
   19708             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   19709             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   19710             :   // The default value of the depth is 0, so after this call the depth is 1!
   19711           0 :      help.incrementDepth();
   19712             : 
   19713             : #if 0
   19714             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   19715             :   // but it is not generally true that things can only be copied once!
   19716             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   19717             :   // AstAttribute* existingAttribute = const_cast<SgTypeSignedLong*>(this)->attribute["copied"];
   19718             :      bool previouslyCopied = const_cast<SgTypeSignedLong*>(this)->attribute.exists("copied");
   19719             :      if (previouslyCopied == true)
   19720             :         {
   19721             :           this->get_file_info()->display("Called from copy SgTypeSignedLong: debug");
   19722             :         }
   19723             :      ROSE_ASSERT(previouslyCopied == false);
   19724             : 
   19725             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   19726             :      AstAttribute* newAttribute = new AstAttribute();
   19727             :      ROSE_ASSERT(newAttribute != NULL);
   19728             : 
   19729             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   19730             :      const_cast<SgTypeSignedLong*>(this)->attribute.add("copied",newAttribute);
   19731             : #endif
   19732             : 
   19733             :   // Copy data members from base classes
   19734             :  
   19735             : 
   19736             :   // Build an empty copy of this object (will be filled in, but 
   19737             :   // the parent can't be set and must be set by the caller)
   19738           0 :      result = new SgTypeSignedLong(  );
   19739           0 :      ROSE_ASSERT(result != NULL);
   19740             : 
   19741             :   // Copy data members of "this" class
   19742             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   19743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   19744             :   // case: toBeCopied == COPY_DATA for isCoArray
   19745           0 :      bool isCoArray_copy = p_isCoArray; 
   19746           0 :      result->p_isCoArray = isCoArray_copy; 
   19747             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   19748             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   19749             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   19750           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   19751           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   19752             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   19753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   19754             :   // case: toBeCopied == COPY_DATA for ref_to
   19755           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   19756           0 :      result->p_ref_to = ref_to_copy; 
   19757             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   19758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   19759             :   // case: toBeCopied == COPY_DATA for ptr_to
   19760           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   19761           0 :      result->p_ptr_to = ptr_to_copy; 
   19762             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   19763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   19764             :   // case: toBeCopied == COPY_DATA for modifiers
   19765           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   19766           0 :      result->p_modifiers = modifiers_copy; 
   19767             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   19768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   19769             :   // case: toBeCopied == COPY_DATA for typedefs
   19770           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   19771           0 :      result->p_typedefs = typedefs_copy; 
   19772             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   19773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   19774             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   19775           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   19776           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   19777             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   19778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   19779             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   19780           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   19781           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   19782             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   19783             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   19784             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   19785           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   19786           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   19787             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   19788           0 :      SgExpression* type_kind_copy; 
   19789             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   19790           0 :           if (get_type_kind() != NULL) 
   19791             :              { 
   19792           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   19793             :              } 
   19794             :             else 
   19795             :              { 
   19796             :                type_kind_copy = NULL; 
   19797             :              } 
   19798             :   /* check for a valid pointer and delete if present */ 
   19799           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   19800           0 :      result->p_type_kind = type_kind_copy; 
   19801             :   // case: not a listType for (using conditionalToSetParent)type_kind
   19802           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   19803             :              { 
   19804           0 :                type_kind_copy->set_parent(result); 
   19805             :              } 
   19806             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   19807             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   19808             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   19809           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   19810           0 :      if ( p_attributeMechanism != NULL ) 
   19811             :         { 
   19812           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   19813             :         } 
   19814             :        else 
   19815             :         { 
   19816             :           attributeMechanism_copy = NULL; 
   19817             :         } 
   19818             :   /* check for a valid pointer and delete if present */ 
   19819           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   19820             :   /* add assignment to result here */ 
   19821           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   19822             : 
   19823             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   19824             : 
   19825             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   19826             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   19827             :   // fixupCopy(result,help);
   19828             : 
   19829             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   19830             :   // the Sg_File_Info objects that are built for the new IR nodes.
   19831           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   19832           0 :      if (locatedNode != NULL)
   19833             :         {
   19834             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   19835           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   19836           0 :           ROSE_ASSERT(start != NULL);
   19837             : #if 0
   19838             :        // Debugging information
   19839             :           if (start->get_parent() == NULL)
   19840             :              {
   19841             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19842             :              }
   19843             : #endif
   19844           0 :           start->set_parent(locatedNode);
   19845           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   19846             : 
   19847           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   19848             : 
   19849             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   19850             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   19851             :        // ROSE_ASSERT(end != NULL);
   19852           0 :           if (end == NULL)
   19853             :              {
   19854           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   19855             :              }
   19856             :             else
   19857             :              {
   19858             : #if 0
   19859             :             // Debugging information
   19860             :                if (end->get_parent() == NULL)
   19861             :                   {
   19862             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19863             :                   }
   19864             : #endif
   19865           0 :                end->set_parent(locatedNode);
   19866           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   19867             :              }
   19868             : 
   19869           0 :           SgExpression* expression = isSgExpression(result);
   19870           0 :           if (isSgExpression(this) != NULL)
   19871             :              {
   19872           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   19873             : 
   19874             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   19875           0 :                if (operatorPosition != NULL)
   19876             :                   {
   19877             : #if 0
   19878             :                  // Debugging information
   19879             :                     if (operatorPosition->get_parent() == NULL)
   19880             :                        {
   19881             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19882             :                        }
   19883             : #endif
   19884           0 :                     operatorPosition->set_parent(expression);
   19885           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   19886             :                   }
   19887             :              }
   19888             :         }
   19889             : 
   19890             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   19891           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   19892           0 :      if (initializedName != NULL)
   19893             :         {
   19894             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   19895           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   19896           0 :           ROSE_ASSERT(start != NULL);
   19897             : #if 0
   19898             :        // Debugging information
   19899             :           if (start->get_parent() == NULL)
   19900             :              {
   19901             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19902             :              }
   19903             : #endif
   19904           0 :           start->set_parent(initializedName);
   19905           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   19906             : 
   19907             : #if 0
   19908             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   19909             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   19910             : 
   19911             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   19912             :        // ROSE_ASSERT(end != NULL);
   19913             :           if (end == NULL)
   19914             :              {
   19915             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   19916             :              }
   19917             :             else
   19918             :              {
   19919             :                if (end->get_parent() == NULL)
   19920             :                   {
   19921             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   19922             :                   }
   19923             :                end->set_parent(initializedName);
   19924             :                ROSE_ASSERT(end->get_parent() != NULL);
   19925             :              }
   19926             : #endif
   19927             :         }
   19928             : 
   19929             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   19930           0 :      help.insertCopiedNodePair(this,result);
   19931             : 
   19932             :   // printf ("End of copy SgTypeSignedLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   19933             : 
   19934             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   19935             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   19936           0 :      help.decrementDepth();
   19937             : 
   19938             :   // Test if this is the root of the copy!
   19939           0 :      if (help.get_depth() == 0)
   19940             :         {
   19941             :        // This is the original calling node.
   19942             : 
   19943             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   19944             :        // printf ("Calling SgTypeSignedLong::fixupCopy() (from root of AST being copied) \n");
   19945             : #if ALT_FIXUP_COPY
   19946             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   19947           0 :           fixupCopy_scopes (result,help);
   19948           0 :           fixupCopy_symbols (result,help);
   19949           0 :           fixupCopy_references (result,help);
   19950             : #else
   19951             :           fixupCopy(result,help);
   19952             : #endif
   19953             :        // Allow this to be called recursively, so accumulate the state.
   19954             :        // Also, clear the state in the SgCopyHelp object.
   19955             :        // help.clearState();
   19956             :         }
   19957             : 
   19958           0 :      return result;
   19959             :    }
   19960             : 
   19961             : 
   19962             : /* #line 19963 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   19963             : 
   19964             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   19965             : 
   19966           0 : SgNode* SgTypeUnsignedLong::copy ( SgCopyHelp& help) const
   19967             :    {
   19968           0 :      SgTypeUnsignedLong* result = NULL;
   19969             : 
   19970             :   // printf ("Copy SgTypeUnsignedLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   19971             : 
   19972             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   19973             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   19974             :   // The default value of the depth is 0, so after this call the depth is 1!
   19975           0 :      help.incrementDepth();
   19976             : 
   19977             : #if 0
   19978             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   19979             :   // but it is not generally true that things can only be copied once!
   19980             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   19981             :   // AstAttribute* existingAttribute = const_cast<SgTypeUnsignedLong*>(this)->attribute["copied"];
   19982             :      bool previouslyCopied = const_cast<SgTypeUnsignedLong*>(this)->attribute.exists("copied");
   19983             :      if (previouslyCopied == true)
   19984             :         {
   19985             :           this->get_file_info()->display("Called from copy SgTypeUnsignedLong: debug");
   19986             :         }
   19987             :      ROSE_ASSERT(previouslyCopied == false);
   19988             : 
   19989             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   19990             :      AstAttribute* newAttribute = new AstAttribute();
   19991             :      ROSE_ASSERT(newAttribute != NULL);
   19992             : 
   19993             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   19994             :      const_cast<SgTypeUnsignedLong*>(this)->attribute.add("copied",newAttribute);
   19995             : #endif
   19996             : 
   19997             :   // Copy data members from base classes
   19998             :  
   19999             : 
   20000             :   // Build an empty copy of this object (will be filled in, but 
   20001             :   // the parent can't be set and must be set by the caller)
   20002           0 :      result = new SgTypeUnsignedLong(  );
   20003           0 :      ROSE_ASSERT(result != NULL);
   20004             : 
   20005             :   // Copy data members of "this" class
   20006             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   20007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   20008             :   // case: toBeCopied == COPY_DATA for isCoArray
   20009           0 :      bool isCoArray_copy = p_isCoArray; 
   20010           0 :      result->p_isCoArray = isCoArray_copy; 
   20011             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   20012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   20013             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   20014           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   20015           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   20016             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   20017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   20018             :   // case: toBeCopied == COPY_DATA for ref_to
   20019           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   20020           0 :      result->p_ref_to = ref_to_copy; 
   20021             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   20022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   20023             :   // case: toBeCopied == COPY_DATA for ptr_to
   20024           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   20025           0 :      result->p_ptr_to = ptr_to_copy; 
   20026             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   20027             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   20028             :   // case: toBeCopied == COPY_DATA for modifiers
   20029           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   20030           0 :      result->p_modifiers = modifiers_copy; 
   20031             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   20032             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   20033             :   // case: toBeCopied == COPY_DATA for typedefs
   20034           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   20035           0 :      result->p_typedefs = typedefs_copy; 
   20036             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   20037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   20038             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   20039           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   20040           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   20041             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   20042             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   20043             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   20044           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   20045           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   20046             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   20047             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   20048             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   20049           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   20050           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   20051             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   20052           0 :      SgExpression* type_kind_copy; 
   20053             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   20054           0 :           if (get_type_kind() != NULL) 
   20055             :              { 
   20056           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   20057             :              } 
   20058             :             else 
   20059             :              { 
   20060             :                type_kind_copy = NULL; 
   20061             :              } 
   20062             :   /* check for a valid pointer and delete if present */ 
   20063           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   20064           0 :      result->p_type_kind = type_kind_copy; 
   20065             :   // case: not a listType for (using conditionalToSetParent)type_kind
   20066           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   20067             :              { 
   20068           0 :                type_kind_copy->set_parent(result); 
   20069             :              } 
   20070             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   20071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   20072             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   20073           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   20074           0 :      if ( p_attributeMechanism != NULL ) 
   20075             :         { 
   20076           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   20077             :         } 
   20078             :        else 
   20079             :         { 
   20080             :           attributeMechanism_copy = NULL; 
   20081             :         } 
   20082             :   /* check for a valid pointer and delete if present */ 
   20083           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   20084             :   /* add assignment to result here */ 
   20085           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   20086             : 
   20087             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   20088             : 
   20089             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   20090             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   20091             :   // fixupCopy(result,help);
   20092             : 
   20093             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   20094             :   // the Sg_File_Info objects that are built for the new IR nodes.
   20095           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   20096           0 :      if (locatedNode != NULL)
   20097             :         {
   20098             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   20099           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   20100           0 :           ROSE_ASSERT(start != NULL);
   20101             : #if 0
   20102             :        // Debugging information
   20103             :           if (start->get_parent() == NULL)
   20104             :              {
   20105             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20106             :              }
   20107             : #endif
   20108           0 :           start->set_parent(locatedNode);
   20109           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   20110             : 
   20111           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   20112             : 
   20113             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   20114             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   20115             :        // ROSE_ASSERT(end != NULL);
   20116           0 :           if (end == NULL)
   20117             :              {
   20118           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   20119             :              }
   20120             :             else
   20121             :              {
   20122             : #if 0
   20123             :             // Debugging information
   20124             :                if (end->get_parent() == NULL)
   20125             :                   {
   20126             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20127             :                   }
   20128             : #endif
   20129           0 :                end->set_parent(locatedNode);
   20130           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   20131             :              }
   20132             : 
   20133           0 :           SgExpression* expression = isSgExpression(result);
   20134           0 :           if (isSgExpression(this) != NULL)
   20135             :              {
   20136           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   20137             : 
   20138             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   20139           0 :                if (operatorPosition != NULL)
   20140             :                   {
   20141             : #if 0
   20142             :                  // Debugging information
   20143             :                     if (operatorPosition->get_parent() == NULL)
   20144             :                        {
   20145             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20146             :                        }
   20147             : #endif
   20148           0 :                     operatorPosition->set_parent(expression);
   20149           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   20150             :                   }
   20151             :              }
   20152             :         }
   20153             : 
   20154             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   20155           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   20156           0 :      if (initializedName != NULL)
   20157             :         {
   20158             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   20159           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   20160           0 :           ROSE_ASSERT(start != NULL);
   20161             : #if 0
   20162             :        // Debugging information
   20163             :           if (start->get_parent() == NULL)
   20164             :              {
   20165             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20166             :              }
   20167             : #endif
   20168           0 :           start->set_parent(initializedName);
   20169           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   20170             : 
   20171             : #if 0
   20172             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   20173             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   20174             : 
   20175             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   20176             :        // ROSE_ASSERT(end != NULL);
   20177             :           if (end == NULL)
   20178             :              {
   20179             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   20180             :              }
   20181             :             else
   20182             :              {
   20183             :                if (end->get_parent() == NULL)
   20184             :                   {
   20185             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20186             :                   }
   20187             :                end->set_parent(initializedName);
   20188             :                ROSE_ASSERT(end->get_parent() != NULL);
   20189             :              }
   20190             : #endif
   20191             :         }
   20192             : 
   20193             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   20194           0 :      help.insertCopiedNodePair(this,result);
   20195             : 
   20196             :   // printf ("End of copy SgTypeUnsignedLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   20197             : 
   20198             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   20199             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   20200           0 :      help.decrementDepth();
   20201             : 
   20202             :   // Test if this is the root of the copy!
   20203           0 :      if (help.get_depth() == 0)
   20204             :         {
   20205             :        // This is the original calling node.
   20206             : 
   20207             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   20208             :        // printf ("Calling SgTypeUnsignedLong::fixupCopy() (from root of AST being copied) \n");
   20209             : #if ALT_FIXUP_COPY
   20210             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   20211           0 :           fixupCopy_scopes (result,help);
   20212           0 :           fixupCopy_symbols (result,help);
   20213           0 :           fixupCopy_references (result,help);
   20214             : #else
   20215             :           fixupCopy(result,help);
   20216             : #endif
   20217             :        // Allow this to be called recursively, so accumulate the state.
   20218             :        // Also, clear the state in the SgCopyHelp object.
   20219             :        // help.clearState();
   20220             :         }
   20221             : 
   20222           0 :      return result;
   20223             :    }
   20224             : 
   20225             : 
   20226             : /* #line 20227 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   20227             : 
   20228             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   20229             : 
   20230           0 : SgNode* SgTypeVoid::copy ( SgCopyHelp& help) const
   20231             :    {
   20232           0 :      SgTypeVoid* result = NULL;
   20233             : 
   20234             :   // printf ("Copy SgTypeVoid = %p = %s \n",this,SageInterface::get_name(this).c_str());
   20235             : 
   20236             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   20237             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   20238             :   // The default value of the depth is 0, so after this call the depth is 1!
   20239           0 :      help.incrementDepth();
   20240             : 
   20241             : #if 0
   20242             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   20243             :   // but it is not generally true that things can only be copied once!
   20244             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   20245             :   // AstAttribute* existingAttribute = const_cast<SgTypeVoid*>(this)->attribute["copied"];
   20246             :      bool previouslyCopied = const_cast<SgTypeVoid*>(this)->attribute.exists("copied");
   20247             :      if (previouslyCopied == true)
   20248             :         {
   20249             :           this->get_file_info()->display("Called from copy SgTypeVoid: debug");
   20250             :         }
   20251             :      ROSE_ASSERT(previouslyCopied == false);
   20252             : 
   20253             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   20254             :      AstAttribute* newAttribute = new AstAttribute();
   20255             :      ROSE_ASSERT(newAttribute != NULL);
   20256             : 
   20257             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   20258             :      const_cast<SgTypeVoid*>(this)->attribute.add("copied",newAttribute);
   20259             : #endif
   20260             : 
   20261             :   // Copy data members from base classes
   20262             :  
   20263             : 
   20264             :   // Build an empty copy of this object (will be filled in, but 
   20265             :   // the parent can't be set and must be set by the caller)
   20266           0 :      result = new SgTypeVoid(  );
   20267           0 :      ROSE_ASSERT(result != NULL);
   20268             : 
   20269             :   // Copy data members of "this" class
   20270             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   20271             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   20272             :   // case: toBeCopied == COPY_DATA for isCoArray
   20273           0 :      bool isCoArray_copy = p_isCoArray; 
   20274           0 :      result->p_isCoArray = isCoArray_copy; 
   20275             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   20276             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   20277             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   20278           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   20279           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   20280             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   20281             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   20282             :   // case: toBeCopied == COPY_DATA for ref_to
   20283           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   20284           0 :      result->p_ref_to = ref_to_copy; 
   20285             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   20286             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   20287             :   // case: toBeCopied == COPY_DATA for ptr_to
   20288           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   20289           0 :      result->p_ptr_to = ptr_to_copy; 
   20290             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   20291             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   20292             :   // case: toBeCopied == COPY_DATA for modifiers
   20293           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   20294           0 :      result->p_modifiers = modifiers_copy; 
   20295             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   20296             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   20297             :   // case: toBeCopied == COPY_DATA for typedefs
   20298           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   20299           0 :      result->p_typedefs = typedefs_copy; 
   20300             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   20301             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   20302             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   20303           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   20304           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   20305             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   20306             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   20307             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   20308           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   20309           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   20310             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   20311             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   20312             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   20313           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   20314           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   20315             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   20316           0 :      SgExpression* type_kind_copy; 
   20317             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   20318           0 :           if (get_type_kind() != NULL) 
   20319             :              { 
   20320           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   20321             :              } 
   20322             :             else 
   20323             :              { 
   20324             :                type_kind_copy = NULL; 
   20325             :              } 
   20326             :   /* check for a valid pointer and delete if present */ 
   20327           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   20328           0 :      result->p_type_kind = type_kind_copy; 
   20329             :   // case: not a listType for (using conditionalToSetParent)type_kind
   20330           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   20331             :              { 
   20332           0 :                type_kind_copy->set_parent(result); 
   20333             :              } 
   20334             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   20335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   20336             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   20337           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   20338           0 :      if ( p_attributeMechanism != NULL ) 
   20339             :         { 
   20340           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   20341             :         } 
   20342             :        else 
   20343             :         { 
   20344             :           attributeMechanism_copy = NULL; 
   20345             :         } 
   20346             :   /* check for a valid pointer and delete if present */ 
   20347           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   20348             :   /* add assignment to result here */ 
   20349           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   20350             : 
   20351             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   20352             : 
   20353             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   20354             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   20355             :   // fixupCopy(result,help);
   20356             : 
   20357             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   20358             :   // the Sg_File_Info objects that are built for the new IR nodes.
   20359           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   20360           0 :      if (locatedNode != NULL)
   20361             :         {
   20362             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   20363           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   20364           0 :           ROSE_ASSERT(start != NULL);
   20365             : #if 0
   20366             :        // Debugging information
   20367             :           if (start->get_parent() == NULL)
   20368             :              {
   20369             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20370             :              }
   20371             : #endif
   20372           0 :           start->set_parent(locatedNode);
   20373           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   20374             : 
   20375           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   20376             : 
   20377             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   20378             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   20379             :        // ROSE_ASSERT(end != NULL);
   20380           0 :           if (end == NULL)
   20381             :              {
   20382           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   20383             :              }
   20384             :             else
   20385             :              {
   20386             : #if 0
   20387             :             // Debugging information
   20388             :                if (end->get_parent() == NULL)
   20389             :                   {
   20390             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20391             :                   }
   20392             : #endif
   20393           0 :                end->set_parent(locatedNode);
   20394           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   20395             :              }
   20396             : 
   20397           0 :           SgExpression* expression = isSgExpression(result);
   20398           0 :           if (isSgExpression(this) != NULL)
   20399             :              {
   20400           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   20401             : 
   20402             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   20403           0 :                if (operatorPosition != NULL)
   20404             :                   {
   20405             : #if 0
   20406             :                  // Debugging information
   20407             :                     if (operatorPosition->get_parent() == NULL)
   20408             :                        {
   20409             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20410             :                        }
   20411             : #endif
   20412           0 :                     operatorPosition->set_parent(expression);
   20413           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   20414             :                   }
   20415             :              }
   20416             :         }
   20417             : 
   20418             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   20419           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   20420           0 :      if (initializedName != NULL)
   20421             :         {
   20422             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   20423           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   20424           0 :           ROSE_ASSERT(start != NULL);
   20425             : #if 0
   20426             :        // Debugging information
   20427             :           if (start->get_parent() == NULL)
   20428             :              {
   20429             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20430             :              }
   20431             : #endif
   20432           0 :           start->set_parent(initializedName);
   20433           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   20434             : 
   20435             : #if 0
   20436             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   20437             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   20438             : 
   20439             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   20440             :        // ROSE_ASSERT(end != NULL);
   20441             :           if (end == NULL)
   20442             :              {
   20443             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   20444             :              }
   20445             :             else
   20446             :              {
   20447             :                if (end->get_parent() == NULL)
   20448             :                   {
   20449             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20450             :                   }
   20451             :                end->set_parent(initializedName);
   20452             :                ROSE_ASSERT(end->get_parent() != NULL);
   20453             :              }
   20454             : #endif
   20455             :         }
   20456             : 
   20457             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   20458           0 :      help.insertCopiedNodePair(this,result);
   20459             : 
   20460             :   // printf ("End of copy SgTypeVoid = %p = %s \n",this,SageInterface::get_name(this).c_str());
   20461             : 
   20462             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   20463             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   20464           0 :      help.decrementDepth();
   20465             : 
   20466             :   // Test if this is the root of the copy!
   20467           0 :      if (help.get_depth() == 0)
   20468             :         {
   20469             :        // This is the original calling node.
   20470             : 
   20471             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   20472             :        // printf ("Calling SgTypeVoid::fixupCopy() (from root of AST being copied) \n");
   20473             : #if ALT_FIXUP_COPY
   20474             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   20475           0 :           fixupCopy_scopes (result,help);
   20476           0 :           fixupCopy_symbols (result,help);
   20477           0 :           fixupCopy_references (result,help);
   20478             : #else
   20479             :           fixupCopy(result,help);
   20480             : #endif
   20481             :        // Allow this to be called recursively, so accumulate the state.
   20482             :        // Also, clear the state in the SgCopyHelp object.
   20483             :        // help.clearState();
   20484             :         }
   20485             : 
   20486           0 :      return result;
   20487             :    }
   20488             : 
   20489             : 
   20490             : /* #line 20491 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   20491             : 
   20492             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   20493             : 
   20494           0 : SgNode* SgTypeGlobalVoid::copy ( SgCopyHelp& help) const
   20495             :    {
   20496           0 :      SgTypeGlobalVoid* result = NULL;
   20497             : 
   20498             :   // printf ("Copy SgTypeGlobalVoid = %p = %s \n",this,SageInterface::get_name(this).c_str());
   20499             : 
   20500             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   20501             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   20502             :   // The default value of the depth is 0, so after this call the depth is 1!
   20503           0 :      help.incrementDepth();
   20504             : 
   20505             : #if 0
   20506             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   20507             :   // but it is not generally true that things can only be copied once!
   20508             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   20509             :   // AstAttribute* existingAttribute = const_cast<SgTypeGlobalVoid*>(this)->attribute["copied"];
   20510             :      bool previouslyCopied = const_cast<SgTypeGlobalVoid*>(this)->attribute.exists("copied");
   20511             :      if (previouslyCopied == true)
   20512             :         {
   20513             :           this->get_file_info()->display("Called from copy SgTypeGlobalVoid: debug");
   20514             :         }
   20515             :      ROSE_ASSERT(previouslyCopied == false);
   20516             : 
   20517             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   20518             :      AstAttribute* newAttribute = new AstAttribute();
   20519             :      ROSE_ASSERT(newAttribute != NULL);
   20520             : 
   20521             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   20522             :      const_cast<SgTypeGlobalVoid*>(this)->attribute.add("copied",newAttribute);
   20523             : #endif
   20524             : 
   20525             :   // Copy data members from base classes
   20526             :  
   20527             : 
   20528             :   // Build an empty copy of this object (will be filled in, but 
   20529             :   // the parent can't be set and must be set by the caller)
   20530           0 :      result = new SgTypeGlobalVoid(  );
   20531           0 :      ROSE_ASSERT(result != NULL);
   20532             : 
   20533             :   // Copy data members of "this" class
   20534             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   20535             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   20536             :   // case: toBeCopied == COPY_DATA for isCoArray
   20537           0 :      bool isCoArray_copy = p_isCoArray; 
   20538           0 :      result->p_isCoArray = isCoArray_copy; 
   20539             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   20540             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   20541             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   20542           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   20543           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   20544             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   20545             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   20546             :   // case: toBeCopied == COPY_DATA for ref_to
   20547           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   20548           0 :      result->p_ref_to = ref_to_copy; 
   20549             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   20550             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   20551             :   // case: toBeCopied == COPY_DATA for ptr_to
   20552           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   20553           0 :      result->p_ptr_to = ptr_to_copy; 
   20554             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   20555             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   20556             :   // case: toBeCopied == COPY_DATA for modifiers
   20557           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   20558           0 :      result->p_modifiers = modifiers_copy; 
   20559             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   20560             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   20561             :   // case: toBeCopied == COPY_DATA for typedefs
   20562           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   20563           0 :      result->p_typedefs = typedefs_copy; 
   20564             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   20565             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   20566             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   20567           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   20568           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   20569             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   20570             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   20571             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   20572           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   20573           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   20574             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   20575             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   20576             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   20577           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   20578           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   20579             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   20580           0 :      SgExpression* type_kind_copy; 
   20581             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   20582           0 :           if (get_type_kind() != NULL) 
   20583             :              { 
   20584           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   20585             :              } 
   20586             :             else 
   20587             :              { 
   20588             :                type_kind_copy = NULL; 
   20589             :              } 
   20590             :   /* check for a valid pointer and delete if present */ 
   20591           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   20592           0 :      result->p_type_kind = type_kind_copy; 
   20593             :   // case: not a listType for (using conditionalToSetParent)type_kind
   20594           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   20595             :              { 
   20596           0 :                type_kind_copy->set_parent(result); 
   20597             :              } 
   20598             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   20599             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   20600             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   20601           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   20602           0 :      if ( p_attributeMechanism != NULL ) 
   20603             :         { 
   20604           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   20605             :         } 
   20606             :        else 
   20607             :         { 
   20608             :           attributeMechanism_copy = NULL; 
   20609             :         } 
   20610             :   /* check for a valid pointer and delete if present */ 
   20611           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   20612             :   /* add assignment to result here */ 
   20613           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   20614             : 
   20615             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   20616             : 
   20617             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   20618             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   20619             :   // fixupCopy(result,help);
   20620             : 
   20621             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   20622             :   // the Sg_File_Info objects that are built for the new IR nodes.
   20623           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   20624           0 :      if (locatedNode != NULL)
   20625             :         {
   20626             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   20627           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   20628           0 :           ROSE_ASSERT(start != NULL);
   20629             : #if 0
   20630             :        // Debugging information
   20631             :           if (start->get_parent() == NULL)
   20632             :              {
   20633             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20634             :              }
   20635             : #endif
   20636           0 :           start->set_parent(locatedNode);
   20637           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   20638             : 
   20639           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   20640             : 
   20641             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   20642             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   20643             :        // ROSE_ASSERT(end != NULL);
   20644           0 :           if (end == NULL)
   20645             :              {
   20646           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   20647             :              }
   20648             :             else
   20649             :              {
   20650             : #if 0
   20651             :             // Debugging information
   20652             :                if (end->get_parent() == NULL)
   20653             :                   {
   20654             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20655             :                   }
   20656             : #endif
   20657           0 :                end->set_parent(locatedNode);
   20658           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   20659             :              }
   20660             : 
   20661           0 :           SgExpression* expression = isSgExpression(result);
   20662           0 :           if (isSgExpression(this) != NULL)
   20663             :              {
   20664           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   20665             : 
   20666             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   20667           0 :                if (operatorPosition != NULL)
   20668             :                   {
   20669             : #if 0
   20670             :                  // Debugging information
   20671             :                     if (operatorPosition->get_parent() == NULL)
   20672             :                        {
   20673             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20674             :                        }
   20675             : #endif
   20676           0 :                     operatorPosition->set_parent(expression);
   20677           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   20678             :                   }
   20679             :              }
   20680             :         }
   20681             : 
   20682             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   20683           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   20684           0 :      if (initializedName != NULL)
   20685             :         {
   20686             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   20687           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   20688           0 :           ROSE_ASSERT(start != NULL);
   20689             : #if 0
   20690             :        // Debugging information
   20691             :           if (start->get_parent() == NULL)
   20692             :              {
   20693             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20694             :              }
   20695             : #endif
   20696           0 :           start->set_parent(initializedName);
   20697           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   20698             : 
   20699             : #if 0
   20700             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   20701             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   20702             : 
   20703             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   20704             :        // ROSE_ASSERT(end != NULL);
   20705             :           if (end == NULL)
   20706             :              {
   20707             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   20708             :              }
   20709             :             else
   20710             :              {
   20711             :                if (end->get_parent() == NULL)
   20712             :                   {
   20713             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20714             :                   }
   20715             :                end->set_parent(initializedName);
   20716             :                ROSE_ASSERT(end->get_parent() != NULL);
   20717             :              }
   20718             : #endif
   20719             :         }
   20720             : 
   20721             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   20722           0 :      help.insertCopiedNodePair(this,result);
   20723             : 
   20724             :   // printf ("End of copy SgTypeGlobalVoid = %p = %s \n",this,SageInterface::get_name(this).c_str());
   20725             : 
   20726             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   20727             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   20728           0 :      help.decrementDepth();
   20729             : 
   20730             :   // Test if this is the root of the copy!
   20731           0 :      if (help.get_depth() == 0)
   20732             :         {
   20733             :        // This is the original calling node.
   20734             : 
   20735             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   20736             :        // printf ("Calling SgTypeGlobalVoid::fixupCopy() (from root of AST being copied) \n");
   20737             : #if ALT_FIXUP_COPY
   20738             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   20739           0 :           fixupCopy_scopes (result,help);
   20740           0 :           fixupCopy_symbols (result,help);
   20741           0 :           fixupCopy_references (result,help);
   20742             : #else
   20743             :           fixupCopy(result,help);
   20744             : #endif
   20745             :        // Allow this to be called recursively, so accumulate the state.
   20746             :        // Also, clear the state in the SgCopyHelp object.
   20747             :        // help.clearState();
   20748             :         }
   20749             : 
   20750           0 :      return result;
   20751             :    }
   20752             : 
   20753             : 
   20754             : /* #line 20755 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   20755             : 
   20756             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   20757             : 
   20758           0 : SgNode* SgTypeWchar::copy ( SgCopyHelp& help) const
   20759             :    {
   20760           0 :      SgTypeWchar* result = NULL;
   20761             : 
   20762             :   // printf ("Copy SgTypeWchar = %p = %s \n",this,SageInterface::get_name(this).c_str());
   20763             : 
   20764             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   20765             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   20766             :   // The default value of the depth is 0, so after this call the depth is 1!
   20767           0 :      help.incrementDepth();
   20768             : 
   20769             : #if 0
   20770             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   20771             :   // but it is not generally true that things can only be copied once!
   20772             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   20773             :   // AstAttribute* existingAttribute = const_cast<SgTypeWchar*>(this)->attribute["copied"];
   20774             :      bool previouslyCopied = const_cast<SgTypeWchar*>(this)->attribute.exists("copied");
   20775             :      if (previouslyCopied == true)
   20776             :         {
   20777             :           this->get_file_info()->display("Called from copy SgTypeWchar: debug");
   20778             :         }
   20779             :      ROSE_ASSERT(previouslyCopied == false);
   20780             : 
   20781             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   20782             :      AstAttribute* newAttribute = new AstAttribute();
   20783             :      ROSE_ASSERT(newAttribute != NULL);
   20784             : 
   20785             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   20786             :      const_cast<SgTypeWchar*>(this)->attribute.add("copied",newAttribute);
   20787             : #endif
   20788             : 
   20789             :   // Copy data members from base classes
   20790             :  
   20791             : 
   20792             :   // Build an empty copy of this object (will be filled in, but 
   20793             :   // the parent can't be set and must be set by the caller)
   20794           0 :      result = new SgTypeWchar(  );
   20795           0 :      ROSE_ASSERT(result != NULL);
   20796             : 
   20797             :   // Copy data members of "this" class
   20798             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   20799             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   20800             :   // case: toBeCopied == COPY_DATA for isCoArray
   20801           0 :      bool isCoArray_copy = p_isCoArray; 
   20802           0 :      result->p_isCoArray = isCoArray_copy; 
   20803             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   20804             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   20805             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   20806           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   20807           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   20808             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   20809             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   20810             :   // case: toBeCopied == COPY_DATA for ref_to
   20811           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   20812           0 :      result->p_ref_to = ref_to_copy; 
   20813             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   20814             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   20815             :   // case: toBeCopied == COPY_DATA for ptr_to
   20816           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   20817           0 :      result->p_ptr_to = ptr_to_copy; 
   20818             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   20819             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   20820             :   // case: toBeCopied == COPY_DATA for modifiers
   20821           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   20822           0 :      result->p_modifiers = modifiers_copy; 
   20823             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   20824             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   20825             :   // case: toBeCopied == COPY_DATA for typedefs
   20826           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   20827           0 :      result->p_typedefs = typedefs_copy; 
   20828             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   20829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   20830             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   20831           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   20832           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   20833             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   20834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   20835             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   20836           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   20837           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   20838             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   20839             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   20840             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   20841           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   20842           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   20843             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   20844           0 :      SgExpression* type_kind_copy; 
   20845             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   20846           0 :           if (get_type_kind() != NULL) 
   20847             :              { 
   20848           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   20849             :              } 
   20850             :             else 
   20851             :              { 
   20852             :                type_kind_copy = NULL; 
   20853             :              } 
   20854             :   /* check for a valid pointer and delete if present */ 
   20855           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   20856           0 :      result->p_type_kind = type_kind_copy; 
   20857             :   // case: not a listType for (using conditionalToSetParent)type_kind
   20858           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   20859             :              { 
   20860           0 :                type_kind_copy->set_parent(result); 
   20861             :              } 
   20862             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   20863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   20864             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   20865           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   20866           0 :      if ( p_attributeMechanism != NULL ) 
   20867             :         { 
   20868           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   20869             :         } 
   20870             :        else 
   20871             :         { 
   20872             :           attributeMechanism_copy = NULL; 
   20873             :         } 
   20874             :   /* check for a valid pointer and delete if present */ 
   20875           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   20876             :   /* add assignment to result here */ 
   20877           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   20878             : 
   20879             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   20880             : 
   20881             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   20882             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   20883             :   // fixupCopy(result,help);
   20884             : 
   20885             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   20886             :   // the Sg_File_Info objects that are built for the new IR nodes.
   20887           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   20888           0 :      if (locatedNode != NULL)
   20889             :         {
   20890             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   20891           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   20892           0 :           ROSE_ASSERT(start != NULL);
   20893             : #if 0
   20894             :        // Debugging information
   20895             :           if (start->get_parent() == NULL)
   20896             :              {
   20897             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20898             :              }
   20899             : #endif
   20900           0 :           start->set_parent(locatedNode);
   20901           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   20902             : 
   20903           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   20904             : 
   20905             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   20906             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   20907             :        // ROSE_ASSERT(end != NULL);
   20908           0 :           if (end == NULL)
   20909             :              {
   20910           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   20911             :              }
   20912             :             else
   20913             :              {
   20914             : #if 0
   20915             :             // Debugging information
   20916             :                if (end->get_parent() == NULL)
   20917             :                   {
   20918             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20919             :                   }
   20920             : #endif
   20921           0 :                end->set_parent(locatedNode);
   20922           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   20923             :              }
   20924             : 
   20925           0 :           SgExpression* expression = isSgExpression(result);
   20926           0 :           if (isSgExpression(this) != NULL)
   20927             :              {
   20928           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   20929             : 
   20930             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   20931           0 :                if (operatorPosition != NULL)
   20932             :                   {
   20933             : #if 0
   20934             :                  // Debugging information
   20935             :                     if (operatorPosition->get_parent() == NULL)
   20936             :                        {
   20937             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20938             :                        }
   20939             : #endif
   20940           0 :                     operatorPosition->set_parent(expression);
   20941           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   20942             :                   }
   20943             :              }
   20944             :         }
   20945             : 
   20946             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   20947           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   20948           0 :      if (initializedName != NULL)
   20949             :         {
   20950             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   20951           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   20952           0 :           ROSE_ASSERT(start != NULL);
   20953             : #if 0
   20954             :        // Debugging information
   20955             :           if (start->get_parent() == NULL)
   20956             :              {
   20957             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20958             :              }
   20959             : #endif
   20960           0 :           start->set_parent(initializedName);
   20961           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   20962             : 
   20963             : #if 0
   20964             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   20965             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   20966             : 
   20967             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   20968             :        // ROSE_ASSERT(end != NULL);
   20969             :           if (end == NULL)
   20970             :              {
   20971             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   20972             :              }
   20973             :             else
   20974             :              {
   20975             :                if (end->get_parent() == NULL)
   20976             :                   {
   20977             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   20978             :                   }
   20979             :                end->set_parent(initializedName);
   20980             :                ROSE_ASSERT(end->get_parent() != NULL);
   20981             :              }
   20982             : #endif
   20983             :         }
   20984             : 
   20985             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   20986           0 :      help.insertCopiedNodePair(this,result);
   20987             : 
   20988             :   // printf ("End of copy SgTypeWchar = %p = %s \n",this,SageInterface::get_name(this).c_str());
   20989             : 
   20990             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   20991             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   20992           0 :      help.decrementDepth();
   20993             : 
   20994             :   // Test if this is the root of the copy!
   20995           0 :      if (help.get_depth() == 0)
   20996             :         {
   20997             :        // This is the original calling node.
   20998             : 
   20999             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   21000             :        // printf ("Calling SgTypeWchar::fixupCopy() (from root of AST being copied) \n");
   21001             : #if ALT_FIXUP_COPY
   21002             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   21003           0 :           fixupCopy_scopes (result,help);
   21004           0 :           fixupCopy_symbols (result,help);
   21005           0 :           fixupCopy_references (result,help);
   21006             : #else
   21007             :           fixupCopy(result,help);
   21008             : #endif
   21009             :        // Allow this to be called recursively, so accumulate the state.
   21010             :        // Also, clear the state in the SgCopyHelp object.
   21011             :        // help.clearState();
   21012             :         }
   21013             : 
   21014           0 :      return result;
   21015             :    }
   21016             : 
   21017             : 
   21018             : /* #line 21019 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   21019             : 
   21020             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   21021             : 
   21022           0 : SgNode* SgTypeFloat::copy ( SgCopyHelp& help) const
   21023             :    {
   21024           0 :      SgTypeFloat* result = NULL;
   21025             : 
   21026             :   // printf ("Copy SgTypeFloat = %p = %s \n",this,SageInterface::get_name(this).c_str());
   21027             : 
   21028             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   21029             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   21030             :   // The default value of the depth is 0, so after this call the depth is 1!
   21031           0 :      help.incrementDepth();
   21032             : 
   21033             : #if 0
   21034             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   21035             :   // but it is not generally true that things can only be copied once!
   21036             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   21037             :   // AstAttribute* existingAttribute = const_cast<SgTypeFloat*>(this)->attribute["copied"];
   21038             :      bool previouslyCopied = const_cast<SgTypeFloat*>(this)->attribute.exists("copied");
   21039             :      if (previouslyCopied == true)
   21040             :         {
   21041             :           this->get_file_info()->display("Called from copy SgTypeFloat: debug");
   21042             :         }
   21043             :      ROSE_ASSERT(previouslyCopied == false);
   21044             : 
   21045             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   21046             :      AstAttribute* newAttribute = new AstAttribute();
   21047             :      ROSE_ASSERT(newAttribute != NULL);
   21048             : 
   21049             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   21050             :      const_cast<SgTypeFloat*>(this)->attribute.add("copied",newAttribute);
   21051             : #endif
   21052             : 
   21053             :   // Copy data members from base classes
   21054             :  
   21055             : 
   21056             :   // Build an empty copy of this object (will be filled in, but 
   21057             :   // the parent can't be set and must be set by the caller)
   21058           0 :      result = new SgTypeFloat(  );
   21059           0 :      ROSE_ASSERT(result != NULL);
   21060             : 
   21061             :   // Copy data members of "this" class
   21062             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   21063             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   21064             :   // case: toBeCopied == COPY_DATA for isCoArray
   21065           0 :      bool isCoArray_copy = p_isCoArray; 
   21066           0 :      result->p_isCoArray = isCoArray_copy; 
   21067             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   21068             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   21069             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   21070           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   21071           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   21072             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   21073             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   21074             :   // case: toBeCopied == COPY_DATA for ref_to
   21075           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   21076           0 :      result->p_ref_to = ref_to_copy; 
   21077             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   21078             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   21079             :   // case: toBeCopied == COPY_DATA for ptr_to
   21080           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   21081           0 :      result->p_ptr_to = ptr_to_copy; 
   21082             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   21083             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   21084             :   // case: toBeCopied == COPY_DATA for modifiers
   21085           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   21086           0 :      result->p_modifiers = modifiers_copy; 
   21087             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   21088             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   21089             :   // case: toBeCopied == COPY_DATA for typedefs
   21090           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   21091           0 :      result->p_typedefs = typedefs_copy; 
   21092             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   21093             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   21094             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   21095           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   21096           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   21097             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   21098             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   21099             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   21100           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   21101           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   21102             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   21103             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   21104             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   21105           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   21106           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   21107             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   21108           0 :      SgExpression* type_kind_copy; 
   21109             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   21110           0 :           if (get_type_kind() != NULL) 
   21111             :              { 
   21112           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   21113             :              } 
   21114             :             else 
   21115             :              { 
   21116             :                type_kind_copy = NULL; 
   21117             :              } 
   21118             :   /* check for a valid pointer and delete if present */ 
   21119           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   21120           0 :      result->p_type_kind = type_kind_copy; 
   21121             :   // case: not a listType for (using conditionalToSetParent)type_kind
   21122           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   21123             :              { 
   21124           0 :                type_kind_copy->set_parent(result); 
   21125             :              } 
   21126             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   21127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   21128             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   21129           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   21130           0 :      if ( p_attributeMechanism != NULL ) 
   21131             :         { 
   21132           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   21133             :         } 
   21134             :        else 
   21135             :         { 
   21136             :           attributeMechanism_copy = NULL; 
   21137             :         } 
   21138             :   /* check for a valid pointer and delete if present */ 
   21139           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   21140             :   /* add assignment to result here */ 
   21141           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   21142             : 
   21143             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   21144             : 
   21145             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   21146             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   21147             :   // fixupCopy(result,help);
   21148             : 
   21149             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   21150             :   // the Sg_File_Info objects that are built for the new IR nodes.
   21151           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   21152           0 :      if (locatedNode != NULL)
   21153             :         {
   21154             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   21155           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   21156           0 :           ROSE_ASSERT(start != NULL);
   21157             : #if 0
   21158             :        // Debugging information
   21159             :           if (start->get_parent() == NULL)
   21160             :              {
   21161             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21162             :              }
   21163             : #endif
   21164           0 :           start->set_parent(locatedNode);
   21165           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   21166             : 
   21167           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   21168             : 
   21169             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   21170             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   21171             :        // ROSE_ASSERT(end != NULL);
   21172           0 :           if (end == NULL)
   21173             :              {
   21174           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   21175             :              }
   21176             :             else
   21177             :              {
   21178             : #if 0
   21179             :             // Debugging information
   21180             :                if (end->get_parent() == NULL)
   21181             :                   {
   21182             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21183             :                   }
   21184             : #endif
   21185           0 :                end->set_parent(locatedNode);
   21186           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   21187             :              }
   21188             : 
   21189           0 :           SgExpression* expression = isSgExpression(result);
   21190           0 :           if (isSgExpression(this) != NULL)
   21191             :              {
   21192           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   21193             : 
   21194             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   21195           0 :                if (operatorPosition != NULL)
   21196             :                   {
   21197             : #if 0
   21198             :                  // Debugging information
   21199             :                     if (operatorPosition->get_parent() == NULL)
   21200             :                        {
   21201             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21202             :                        }
   21203             : #endif
   21204           0 :                     operatorPosition->set_parent(expression);
   21205           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   21206             :                   }
   21207             :              }
   21208             :         }
   21209             : 
   21210             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   21211           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   21212           0 :      if (initializedName != NULL)
   21213             :         {
   21214             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   21215           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   21216           0 :           ROSE_ASSERT(start != NULL);
   21217             : #if 0
   21218             :        // Debugging information
   21219             :           if (start->get_parent() == NULL)
   21220             :              {
   21221             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21222             :              }
   21223             : #endif
   21224           0 :           start->set_parent(initializedName);
   21225           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   21226             : 
   21227             : #if 0
   21228             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   21229             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   21230             : 
   21231             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   21232             :        // ROSE_ASSERT(end != NULL);
   21233             :           if (end == NULL)
   21234             :              {
   21235             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   21236             :              }
   21237             :             else
   21238             :              {
   21239             :                if (end->get_parent() == NULL)
   21240             :                   {
   21241             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21242             :                   }
   21243             :                end->set_parent(initializedName);
   21244             :                ROSE_ASSERT(end->get_parent() != NULL);
   21245             :              }
   21246             : #endif
   21247             :         }
   21248             : 
   21249             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   21250           0 :      help.insertCopiedNodePair(this,result);
   21251             : 
   21252             :   // printf ("End of copy SgTypeFloat = %p = %s \n",this,SageInterface::get_name(this).c_str());
   21253             : 
   21254             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   21255             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   21256           0 :      help.decrementDepth();
   21257             : 
   21258             :   // Test if this is the root of the copy!
   21259           0 :      if (help.get_depth() == 0)
   21260             :         {
   21261             :        // This is the original calling node.
   21262             : 
   21263             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   21264             :        // printf ("Calling SgTypeFloat::fixupCopy() (from root of AST being copied) \n");
   21265             : #if ALT_FIXUP_COPY
   21266             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   21267           0 :           fixupCopy_scopes (result,help);
   21268           0 :           fixupCopy_symbols (result,help);
   21269           0 :           fixupCopy_references (result,help);
   21270             : #else
   21271             :           fixupCopy(result,help);
   21272             : #endif
   21273             :        // Allow this to be called recursively, so accumulate the state.
   21274             :        // Also, clear the state in the SgCopyHelp object.
   21275             :        // help.clearState();
   21276             :         }
   21277             : 
   21278           0 :      return result;
   21279             :    }
   21280             : 
   21281             : 
   21282             : /* #line 21283 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   21283             : 
   21284             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   21285             : 
   21286           0 : SgNode* SgTypeDouble::copy ( SgCopyHelp& help) const
   21287             :    {
   21288           0 :      SgTypeDouble* result = NULL;
   21289             : 
   21290             :   // printf ("Copy SgTypeDouble = %p = %s \n",this,SageInterface::get_name(this).c_str());
   21291             : 
   21292             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   21293             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   21294             :   // The default value of the depth is 0, so after this call the depth is 1!
   21295           0 :      help.incrementDepth();
   21296             : 
   21297             : #if 0
   21298             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   21299             :   // but it is not generally true that things can only be copied once!
   21300             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   21301             :   // AstAttribute* existingAttribute = const_cast<SgTypeDouble*>(this)->attribute["copied"];
   21302             :      bool previouslyCopied = const_cast<SgTypeDouble*>(this)->attribute.exists("copied");
   21303             :      if (previouslyCopied == true)
   21304             :         {
   21305             :           this->get_file_info()->display("Called from copy SgTypeDouble: debug");
   21306             :         }
   21307             :      ROSE_ASSERT(previouslyCopied == false);
   21308             : 
   21309             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   21310             :      AstAttribute* newAttribute = new AstAttribute();
   21311             :      ROSE_ASSERT(newAttribute != NULL);
   21312             : 
   21313             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   21314             :      const_cast<SgTypeDouble*>(this)->attribute.add("copied",newAttribute);
   21315             : #endif
   21316             : 
   21317             :   // Copy data members from base classes
   21318             :  
   21319             : 
   21320             :   // Build an empty copy of this object (will be filled in, but 
   21321             :   // the parent can't be set and must be set by the caller)
   21322           0 :      result = new SgTypeDouble(  );
   21323           0 :      ROSE_ASSERT(result != NULL);
   21324             : 
   21325             :   // Copy data members of "this" class
   21326             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   21327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   21328             :   // case: toBeCopied == COPY_DATA for isCoArray
   21329           0 :      bool isCoArray_copy = p_isCoArray; 
   21330           0 :      result->p_isCoArray = isCoArray_copy; 
   21331             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   21332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   21333             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   21334           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   21335           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   21336             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   21337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   21338             :   // case: toBeCopied == COPY_DATA for ref_to
   21339           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   21340           0 :      result->p_ref_to = ref_to_copy; 
   21341             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   21342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   21343             :   // case: toBeCopied == COPY_DATA for ptr_to
   21344           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   21345           0 :      result->p_ptr_to = ptr_to_copy; 
   21346             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   21347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   21348             :   // case: toBeCopied == COPY_DATA for modifiers
   21349           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   21350           0 :      result->p_modifiers = modifiers_copy; 
   21351             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   21352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   21353             :   // case: toBeCopied == COPY_DATA for typedefs
   21354           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   21355           0 :      result->p_typedefs = typedefs_copy; 
   21356             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   21357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   21358             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   21359           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   21360           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   21361             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   21362             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   21363             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   21364           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   21365           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   21366             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   21367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   21368             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   21369           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   21370           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   21371             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   21372           0 :      SgExpression* type_kind_copy; 
   21373             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   21374           0 :           if (get_type_kind() != NULL) 
   21375             :              { 
   21376           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   21377             :              } 
   21378             :             else 
   21379             :              { 
   21380             :                type_kind_copy = NULL; 
   21381             :              } 
   21382             :   /* check for a valid pointer and delete if present */ 
   21383           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   21384           0 :      result->p_type_kind = type_kind_copy; 
   21385             :   // case: not a listType for (using conditionalToSetParent)type_kind
   21386           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   21387             :              { 
   21388           0 :                type_kind_copy->set_parent(result); 
   21389             :              } 
   21390             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   21391             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   21392             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   21393           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   21394           0 :      if ( p_attributeMechanism != NULL ) 
   21395             :         { 
   21396           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   21397             :         } 
   21398             :        else 
   21399             :         { 
   21400             :           attributeMechanism_copy = NULL; 
   21401             :         } 
   21402             :   /* check for a valid pointer and delete if present */ 
   21403           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   21404             :   /* add assignment to result here */ 
   21405           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   21406             : 
   21407             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   21408             : 
   21409             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   21410             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   21411             :   // fixupCopy(result,help);
   21412             : 
   21413             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   21414             :   // the Sg_File_Info objects that are built for the new IR nodes.
   21415           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   21416           0 :      if (locatedNode != NULL)
   21417             :         {
   21418             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   21419           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   21420           0 :           ROSE_ASSERT(start != NULL);
   21421             : #if 0
   21422             :        // Debugging information
   21423             :           if (start->get_parent() == NULL)
   21424             :              {
   21425             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21426             :              }
   21427             : #endif
   21428           0 :           start->set_parent(locatedNode);
   21429           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   21430             : 
   21431           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   21432             : 
   21433             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   21434             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   21435             :        // ROSE_ASSERT(end != NULL);
   21436           0 :           if (end == NULL)
   21437             :              {
   21438           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   21439             :              }
   21440             :             else
   21441             :              {
   21442             : #if 0
   21443             :             // Debugging information
   21444             :                if (end->get_parent() == NULL)
   21445             :                   {
   21446             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21447             :                   }
   21448             : #endif
   21449           0 :                end->set_parent(locatedNode);
   21450           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   21451             :              }
   21452             : 
   21453           0 :           SgExpression* expression = isSgExpression(result);
   21454           0 :           if (isSgExpression(this) != NULL)
   21455             :              {
   21456           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   21457             : 
   21458             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   21459           0 :                if (operatorPosition != NULL)
   21460             :                   {
   21461             : #if 0
   21462             :                  // Debugging information
   21463             :                     if (operatorPosition->get_parent() == NULL)
   21464             :                        {
   21465             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21466             :                        }
   21467             : #endif
   21468           0 :                     operatorPosition->set_parent(expression);
   21469           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   21470             :                   }
   21471             :              }
   21472             :         }
   21473             : 
   21474             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   21475           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   21476           0 :      if (initializedName != NULL)
   21477             :         {
   21478             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   21479           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   21480           0 :           ROSE_ASSERT(start != NULL);
   21481             : #if 0
   21482             :        // Debugging information
   21483             :           if (start->get_parent() == NULL)
   21484             :              {
   21485             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21486             :              }
   21487             : #endif
   21488           0 :           start->set_parent(initializedName);
   21489           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   21490             : 
   21491             : #if 0
   21492             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   21493             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   21494             : 
   21495             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   21496             :        // ROSE_ASSERT(end != NULL);
   21497             :           if (end == NULL)
   21498             :              {
   21499             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   21500             :              }
   21501             :             else
   21502             :              {
   21503             :                if (end->get_parent() == NULL)
   21504             :                   {
   21505             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21506             :                   }
   21507             :                end->set_parent(initializedName);
   21508             :                ROSE_ASSERT(end->get_parent() != NULL);
   21509             :              }
   21510             : #endif
   21511             :         }
   21512             : 
   21513             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   21514           0 :      help.insertCopiedNodePair(this,result);
   21515             : 
   21516             :   // printf ("End of copy SgTypeDouble = %p = %s \n",this,SageInterface::get_name(this).c_str());
   21517             : 
   21518             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   21519             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   21520           0 :      help.decrementDepth();
   21521             : 
   21522             :   // Test if this is the root of the copy!
   21523           0 :      if (help.get_depth() == 0)
   21524             :         {
   21525             :        // This is the original calling node.
   21526             : 
   21527             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   21528             :        // printf ("Calling SgTypeDouble::fixupCopy() (from root of AST being copied) \n");
   21529             : #if ALT_FIXUP_COPY
   21530             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   21531           0 :           fixupCopy_scopes (result,help);
   21532           0 :           fixupCopy_symbols (result,help);
   21533           0 :           fixupCopy_references (result,help);
   21534             : #else
   21535             :           fixupCopy(result,help);
   21536             : #endif
   21537             :        // Allow this to be called recursively, so accumulate the state.
   21538             :        // Also, clear the state in the SgCopyHelp object.
   21539             :        // help.clearState();
   21540             :         }
   21541             : 
   21542           0 :      return result;
   21543             :    }
   21544             : 
   21545             : 
   21546             : /* #line 21547 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   21547             : 
   21548             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   21549             : 
   21550           0 : SgNode* SgTypeLongLong::copy ( SgCopyHelp& help) const
   21551             :    {
   21552           0 :      SgTypeLongLong* result = NULL;
   21553             : 
   21554             :   // printf ("Copy SgTypeLongLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   21555             : 
   21556             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   21557             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   21558             :   // The default value of the depth is 0, so after this call the depth is 1!
   21559           0 :      help.incrementDepth();
   21560             : 
   21561             : #if 0
   21562             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   21563             :   // but it is not generally true that things can only be copied once!
   21564             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   21565             :   // AstAttribute* existingAttribute = const_cast<SgTypeLongLong*>(this)->attribute["copied"];
   21566             :      bool previouslyCopied = const_cast<SgTypeLongLong*>(this)->attribute.exists("copied");
   21567             :      if (previouslyCopied == true)
   21568             :         {
   21569             :           this->get_file_info()->display("Called from copy SgTypeLongLong: debug");
   21570             :         }
   21571             :      ROSE_ASSERT(previouslyCopied == false);
   21572             : 
   21573             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   21574             :      AstAttribute* newAttribute = new AstAttribute();
   21575             :      ROSE_ASSERT(newAttribute != NULL);
   21576             : 
   21577             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   21578             :      const_cast<SgTypeLongLong*>(this)->attribute.add("copied",newAttribute);
   21579             : #endif
   21580             : 
   21581             :   // Copy data members from base classes
   21582             :  
   21583             : 
   21584             :   // Build an empty copy of this object (will be filled in, but 
   21585             :   // the parent can't be set and must be set by the caller)
   21586           0 :      result = new SgTypeLongLong(  );
   21587           0 :      ROSE_ASSERT(result != NULL);
   21588             : 
   21589             :   // Copy data members of "this" class
   21590             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   21591             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   21592             :   // case: toBeCopied == COPY_DATA for isCoArray
   21593           0 :      bool isCoArray_copy = p_isCoArray; 
   21594           0 :      result->p_isCoArray = isCoArray_copy; 
   21595             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   21596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   21597             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   21598           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   21599           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   21600             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   21601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   21602             :   // case: toBeCopied == COPY_DATA for ref_to
   21603           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   21604           0 :      result->p_ref_to = ref_to_copy; 
   21605             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   21606             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   21607             :   // case: toBeCopied == COPY_DATA for ptr_to
   21608           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   21609           0 :      result->p_ptr_to = ptr_to_copy; 
   21610             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   21611             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   21612             :   // case: toBeCopied == COPY_DATA for modifiers
   21613           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   21614           0 :      result->p_modifiers = modifiers_copy; 
   21615             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   21616             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   21617             :   // case: toBeCopied == COPY_DATA for typedefs
   21618           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   21619           0 :      result->p_typedefs = typedefs_copy; 
   21620             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   21621             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   21622             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   21623           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   21624           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   21625             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   21626             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   21627             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   21628           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   21629           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   21630             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   21631             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   21632             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   21633           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   21634           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   21635             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   21636           0 :      SgExpression* type_kind_copy; 
   21637             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   21638           0 :           if (get_type_kind() != NULL) 
   21639             :              { 
   21640           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   21641             :              } 
   21642             :             else 
   21643             :              { 
   21644             :                type_kind_copy = NULL; 
   21645             :              } 
   21646             :   /* check for a valid pointer and delete if present */ 
   21647           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   21648           0 :      result->p_type_kind = type_kind_copy; 
   21649             :   // case: not a listType for (using conditionalToSetParent)type_kind
   21650           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   21651             :              { 
   21652           0 :                type_kind_copy->set_parent(result); 
   21653             :              } 
   21654             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   21655             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   21656             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   21657           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   21658           0 :      if ( p_attributeMechanism != NULL ) 
   21659             :         { 
   21660           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   21661             :         } 
   21662             :        else 
   21663             :         { 
   21664             :           attributeMechanism_copy = NULL; 
   21665             :         } 
   21666             :   /* check for a valid pointer and delete if present */ 
   21667           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   21668             :   /* add assignment to result here */ 
   21669           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   21670             : 
   21671             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   21672             : 
   21673             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   21674             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   21675             :   // fixupCopy(result,help);
   21676             : 
   21677             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   21678             :   // the Sg_File_Info objects that are built for the new IR nodes.
   21679           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   21680           0 :      if (locatedNode != NULL)
   21681             :         {
   21682             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   21683           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   21684           0 :           ROSE_ASSERT(start != NULL);
   21685             : #if 0
   21686             :        // Debugging information
   21687             :           if (start->get_parent() == NULL)
   21688             :              {
   21689             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21690             :              }
   21691             : #endif
   21692           0 :           start->set_parent(locatedNode);
   21693           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   21694             : 
   21695           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   21696             : 
   21697             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   21698             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   21699             :        // ROSE_ASSERT(end != NULL);
   21700           0 :           if (end == NULL)
   21701             :              {
   21702           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   21703             :              }
   21704             :             else
   21705             :              {
   21706             : #if 0
   21707             :             // Debugging information
   21708             :                if (end->get_parent() == NULL)
   21709             :                   {
   21710             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21711             :                   }
   21712             : #endif
   21713           0 :                end->set_parent(locatedNode);
   21714           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   21715             :              }
   21716             : 
   21717           0 :           SgExpression* expression = isSgExpression(result);
   21718           0 :           if (isSgExpression(this) != NULL)
   21719             :              {
   21720           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   21721             : 
   21722             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   21723           0 :                if (operatorPosition != NULL)
   21724             :                   {
   21725             : #if 0
   21726             :                  // Debugging information
   21727             :                     if (operatorPosition->get_parent() == NULL)
   21728             :                        {
   21729             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21730             :                        }
   21731             : #endif
   21732           0 :                     operatorPosition->set_parent(expression);
   21733           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   21734             :                   }
   21735             :              }
   21736             :         }
   21737             : 
   21738             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   21739           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   21740           0 :      if (initializedName != NULL)
   21741             :         {
   21742             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   21743           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   21744           0 :           ROSE_ASSERT(start != NULL);
   21745             : #if 0
   21746             :        // Debugging information
   21747             :           if (start->get_parent() == NULL)
   21748             :              {
   21749             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21750             :              }
   21751             : #endif
   21752           0 :           start->set_parent(initializedName);
   21753           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   21754             : 
   21755             : #if 0
   21756             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   21757             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   21758             : 
   21759             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   21760             :        // ROSE_ASSERT(end != NULL);
   21761             :           if (end == NULL)
   21762             :              {
   21763             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   21764             :              }
   21765             :             else
   21766             :              {
   21767             :                if (end->get_parent() == NULL)
   21768             :                   {
   21769             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21770             :                   }
   21771             :                end->set_parent(initializedName);
   21772             :                ROSE_ASSERT(end->get_parent() != NULL);
   21773             :              }
   21774             : #endif
   21775             :         }
   21776             : 
   21777             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   21778           0 :      help.insertCopiedNodePair(this,result);
   21779             : 
   21780             :   // printf ("End of copy SgTypeLongLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   21781             : 
   21782             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   21783             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   21784           0 :      help.decrementDepth();
   21785             : 
   21786             :   // Test if this is the root of the copy!
   21787           0 :      if (help.get_depth() == 0)
   21788             :         {
   21789             :        // This is the original calling node.
   21790             : 
   21791             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   21792             :        // printf ("Calling SgTypeLongLong::fixupCopy() (from root of AST being copied) \n");
   21793             : #if ALT_FIXUP_COPY
   21794             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   21795           0 :           fixupCopy_scopes (result,help);
   21796           0 :           fixupCopy_symbols (result,help);
   21797           0 :           fixupCopy_references (result,help);
   21798             : #else
   21799             :           fixupCopy(result,help);
   21800             : #endif
   21801             :        // Allow this to be called recursively, so accumulate the state.
   21802             :        // Also, clear the state in the SgCopyHelp object.
   21803             :        // help.clearState();
   21804             :         }
   21805             : 
   21806           0 :      return result;
   21807             :    }
   21808             : 
   21809             : 
   21810             : /* #line 21811 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   21811             : 
   21812             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   21813             : 
   21814           0 : SgNode* SgTypeSignedLongLong::copy ( SgCopyHelp& help) const
   21815             :    {
   21816           0 :      SgTypeSignedLongLong* result = NULL;
   21817             : 
   21818             :   // printf ("Copy SgTypeSignedLongLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   21819             : 
   21820             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   21821             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   21822             :   // The default value of the depth is 0, so after this call the depth is 1!
   21823           0 :      help.incrementDepth();
   21824             : 
   21825             : #if 0
   21826             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   21827             :   // but it is not generally true that things can only be copied once!
   21828             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   21829             :   // AstAttribute* existingAttribute = const_cast<SgTypeSignedLongLong*>(this)->attribute["copied"];
   21830             :      bool previouslyCopied = const_cast<SgTypeSignedLongLong*>(this)->attribute.exists("copied");
   21831             :      if (previouslyCopied == true)
   21832             :         {
   21833             :           this->get_file_info()->display("Called from copy SgTypeSignedLongLong: debug");
   21834             :         }
   21835             :      ROSE_ASSERT(previouslyCopied == false);
   21836             : 
   21837             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   21838             :      AstAttribute* newAttribute = new AstAttribute();
   21839             :      ROSE_ASSERT(newAttribute != NULL);
   21840             : 
   21841             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   21842             :      const_cast<SgTypeSignedLongLong*>(this)->attribute.add("copied",newAttribute);
   21843             : #endif
   21844             : 
   21845             :   // Copy data members from base classes
   21846             :  
   21847             : 
   21848             :   // Build an empty copy of this object (will be filled in, but 
   21849             :   // the parent can't be set and must be set by the caller)
   21850           0 :      result = new SgTypeSignedLongLong(  );
   21851           0 :      ROSE_ASSERT(result != NULL);
   21852             : 
   21853             :   // Copy data members of "this" class
   21854             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   21855             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   21856             :   // case: toBeCopied == COPY_DATA for isCoArray
   21857           0 :      bool isCoArray_copy = p_isCoArray; 
   21858           0 :      result->p_isCoArray = isCoArray_copy; 
   21859             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   21860             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   21861             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   21862           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   21863           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   21864             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   21865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   21866             :   // case: toBeCopied == COPY_DATA for ref_to
   21867           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   21868           0 :      result->p_ref_to = ref_to_copy; 
   21869             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   21870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   21871             :   // case: toBeCopied == COPY_DATA for ptr_to
   21872           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   21873           0 :      result->p_ptr_to = ptr_to_copy; 
   21874             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   21875             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   21876             :   // case: toBeCopied == COPY_DATA for modifiers
   21877           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   21878           0 :      result->p_modifiers = modifiers_copy; 
   21879             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   21880             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   21881             :   // case: toBeCopied == COPY_DATA for typedefs
   21882           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   21883           0 :      result->p_typedefs = typedefs_copy; 
   21884             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   21885             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   21886             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   21887           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   21888           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   21889             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   21890             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   21891             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   21892           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   21893           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   21894             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   21895             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   21896             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   21897           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   21898           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   21899             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   21900           0 :      SgExpression* type_kind_copy; 
   21901             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   21902           0 :           if (get_type_kind() != NULL) 
   21903             :              { 
   21904           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   21905             :              } 
   21906             :             else 
   21907             :              { 
   21908             :                type_kind_copy = NULL; 
   21909             :              } 
   21910             :   /* check for a valid pointer and delete if present */ 
   21911           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   21912           0 :      result->p_type_kind = type_kind_copy; 
   21913             :   // case: not a listType for (using conditionalToSetParent)type_kind
   21914           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   21915             :              { 
   21916           0 :                type_kind_copy->set_parent(result); 
   21917             :              } 
   21918             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   21919             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   21920             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   21921           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   21922           0 :      if ( p_attributeMechanism != NULL ) 
   21923             :         { 
   21924           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   21925             :         } 
   21926             :        else 
   21927             :         { 
   21928             :           attributeMechanism_copy = NULL; 
   21929             :         } 
   21930             :   /* check for a valid pointer and delete if present */ 
   21931           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   21932             :   /* add assignment to result here */ 
   21933           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   21934             : 
   21935             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   21936             : 
   21937             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   21938             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   21939             :   // fixupCopy(result,help);
   21940             : 
   21941             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   21942             :   // the Sg_File_Info objects that are built for the new IR nodes.
   21943           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   21944           0 :      if (locatedNode != NULL)
   21945             :         {
   21946             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   21947           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   21948           0 :           ROSE_ASSERT(start != NULL);
   21949             : #if 0
   21950             :        // Debugging information
   21951             :           if (start->get_parent() == NULL)
   21952             :              {
   21953             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21954             :              }
   21955             : #endif
   21956           0 :           start->set_parent(locatedNode);
   21957           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   21958             : 
   21959           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   21960             : 
   21961             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   21962             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   21963             :        // ROSE_ASSERT(end != NULL);
   21964           0 :           if (end == NULL)
   21965             :              {
   21966           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   21967             :              }
   21968             :             else
   21969             :              {
   21970             : #if 0
   21971             :             // Debugging information
   21972             :                if (end->get_parent() == NULL)
   21973             :                   {
   21974             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21975             :                   }
   21976             : #endif
   21977           0 :                end->set_parent(locatedNode);
   21978           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   21979             :              }
   21980             : 
   21981           0 :           SgExpression* expression = isSgExpression(result);
   21982           0 :           if (isSgExpression(this) != NULL)
   21983             :              {
   21984           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   21985             : 
   21986             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   21987           0 :                if (operatorPosition != NULL)
   21988             :                   {
   21989             : #if 0
   21990             :                  // Debugging information
   21991             :                     if (operatorPosition->get_parent() == NULL)
   21992             :                        {
   21993             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   21994             :                        }
   21995             : #endif
   21996           0 :                     operatorPosition->set_parent(expression);
   21997           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   21998             :                   }
   21999             :              }
   22000             :         }
   22001             : 
   22002             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   22003           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   22004           0 :      if (initializedName != NULL)
   22005             :         {
   22006             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   22007           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   22008           0 :           ROSE_ASSERT(start != NULL);
   22009             : #if 0
   22010             :        // Debugging information
   22011             :           if (start->get_parent() == NULL)
   22012             :              {
   22013             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22014             :              }
   22015             : #endif
   22016           0 :           start->set_parent(initializedName);
   22017           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   22018             : 
   22019             : #if 0
   22020             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   22021             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   22022             : 
   22023             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   22024             :        // ROSE_ASSERT(end != NULL);
   22025             :           if (end == NULL)
   22026             :              {
   22027             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   22028             :              }
   22029             :             else
   22030             :              {
   22031             :                if (end->get_parent() == NULL)
   22032             :                   {
   22033             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22034             :                   }
   22035             :                end->set_parent(initializedName);
   22036             :                ROSE_ASSERT(end->get_parent() != NULL);
   22037             :              }
   22038             : #endif
   22039             :         }
   22040             : 
   22041             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   22042           0 :      help.insertCopiedNodePair(this,result);
   22043             : 
   22044             :   // printf ("End of copy SgTypeSignedLongLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   22045             : 
   22046             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   22047             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   22048           0 :      help.decrementDepth();
   22049             : 
   22050             :   // Test if this is the root of the copy!
   22051           0 :      if (help.get_depth() == 0)
   22052             :         {
   22053             :        // This is the original calling node.
   22054             : 
   22055             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   22056             :        // printf ("Calling SgTypeSignedLongLong::fixupCopy() (from root of AST being copied) \n");
   22057             : #if ALT_FIXUP_COPY
   22058             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   22059           0 :           fixupCopy_scopes (result,help);
   22060           0 :           fixupCopy_symbols (result,help);
   22061           0 :           fixupCopy_references (result,help);
   22062             : #else
   22063             :           fixupCopy(result,help);
   22064             : #endif
   22065             :        // Allow this to be called recursively, so accumulate the state.
   22066             :        // Also, clear the state in the SgCopyHelp object.
   22067             :        // help.clearState();
   22068             :         }
   22069             : 
   22070           0 :      return result;
   22071             :    }
   22072             : 
   22073             : 
   22074             : /* #line 22075 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   22075             : 
   22076             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   22077             : 
   22078           0 : SgNode* SgTypeUnsignedLongLong::copy ( SgCopyHelp& help) const
   22079             :    {
   22080           0 :      SgTypeUnsignedLongLong* result = NULL;
   22081             : 
   22082             :   // printf ("Copy SgTypeUnsignedLongLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   22083             : 
   22084             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   22085             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   22086             :   // The default value of the depth is 0, so after this call the depth is 1!
   22087           0 :      help.incrementDepth();
   22088             : 
   22089             : #if 0
   22090             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   22091             :   // but it is not generally true that things can only be copied once!
   22092             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   22093             :   // AstAttribute* existingAttribute = const_cast<SgTypeUnsignedLongLong*>(this)->attribute["copied"];
   22094             :      bool previouslyCopied = const_cast<SgTypeUnsignedLongLong*>(this)->attribute.exists("copied");
   22095             :      if (previouslyCopied == true)
   22096             :         {
   22097             :           this->get_file_info()->display("Called from copy SgTypeUnsignedLongLong: debug");
   22098             :         }
   22099             :      ROSE_ASSERT(previouslyCopied == false);
   22100             : 
   22101             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   22102             :      AstAttribute* newAttribute = new AstAttribute();
   22103             :      ROSE_ASSERT(newAttribute != NULL);
   22104             : 
   22105             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   22106             :      const_cast<SgTypeUnsignedLongLong*>(this)->attribute.add("copied",newAttribute);
   22107             : #endif
   22108             : 
   22109             :   // Copy data members from base classes
   22110             :  
   22111             : 
   22112             :   // Build an empty copy of this object (will be filled in, but 
   22113             :   // the parent can't be set and must be set by the caller)
   22114           0 :      result = new SgTypeUnsignedLongLong(  );
   22115           0 :      ROSE_ASSERT(result != NULL);
   22116             : 
   22117             :   // Copy data members of "this" class
   22118             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   22119             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   22120             :   // case: toBeCopied == COPY_DATA for isCoArray
   22121           0 :      bool isCoArray_copy = p_isCoArray; 
   22122           0 :      result->p_isCoArray = isCoArray_copy; 
   22123             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   22124             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   22125             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   22126           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   22127           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   22128             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   22129             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   22130             :   // case: toBeCopied == COPY_DATA for ref_to
   22131           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   22132           0 :      result->p_ref_to = ref_to_copy; 
   22133             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   22134             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   22135             :   // case: toBeCopied == COPY_DATA for ptr_to
   22136           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   22137           0 :      result->p_ptr_to = ptr_to_copy; 
   22138             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   22139             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   22140             :   // case: toBeCopied == COPY_DATA for modifiers
   22141           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   22142           0 :      result->p_modifiers = modifiers_copy; 
   22143             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   22144             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   22145             :   // case: toBeCopied == COPY_DATA for typedefs
   22146           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   22147           0 :      result->p_typedefs = typedefs_copy; 
   22148             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   22149             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   22150             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   22151           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   22152           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   22153             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   22154             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   22155             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   22156           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   22157           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   22158             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   22159             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   22160             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   22161           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   22162           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   22163             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   22164           0 :      SgExpression* type_kind_copy; 
   22165             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   22166           0 :           if (get_type_kind() != NULL) 
   22167             :              { 
   22168           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   22169             :              } 
   22170             :             else 
   22171             :              { 
   22172             :                type_kind_copy = NULL; 
   22173             :              } 
   22174             :   /* check for a valid pointer and delete if present */ 
   22175           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   22176           0 :      result->p_type_kind = type_kind_copy; 
   22177             :   // case: not a listType for (using conditionalToSetParent)type_kind
   22178           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   22179             :              { 
   22180           0 :                type_kind_copy->set_parent(result); 
   22181             :              } 
   22182             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   22183             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   22184             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   22185           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   22186           0 :      if ( p_attributeMechanism != NULL ) 
   22187             :         { 
   22188           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   22189             :         } 
   22190             :        else 
   22191             :         { 
   22192             :           attributeMechanism_copy = NULL; 
   22193             :         } 
   22194             :   /* check for a valid pointer and delete if present */ 
   22195           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   22196             :   /* add assignment to result here */ 
   22197           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   22198             : 
   22199             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   22200             : 
   22201             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   22202             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   22203             :   // fixupCopy(result,help);
   22204             : 
   22205             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   22206             :   // the Sg_File_Info objects that are built for the new IR nodes.
   22207           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   22208           0 :      if (locatedNode != NULL)
   22209             :         {
   22210             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   22211           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   22212           0 :           ROSE_ASSERT(start != NULL);
   22213             : #if 0
   22214             :        // Debugging information
   22215             :           if (start->get_parent() == NULL)
   22216             :              {
   22217             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22218             :              }
   22219             : #endif
   22220           0 :           start->set_parent(locatedNode);
   22221           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   22222             : 
   22223           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   22224             : 
   22225             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   22226             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   22227             :        // ROSE_ASSERT(end != NULL);
   22228           0 :           if (end == NULL)
   22229             :              {
   22230           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   22231             :              }
   22232             :             else
   22233             :              {
   22234             : #if 0
   22235             :             // Debugging information
   22236             :                if (end->get_parent() == NULL)
   22237             :                   {
   22238             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22239             :                   }
   22240             : #endif
   22241           0 :                end->set_parent(locatedNode);
   22242           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   22243             :              }
   22244             : 
   22245           0 :           SgExpression* expression = isSgExpression(result);
   22246           0 :           if (isSgExpression(this) != NULL)
   22247             :              {
   22248           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   22249             : 
   22250             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   22251           0 :                if (operatorPosition != NULL)
   22252             :                   {
   22253             : #if 0
   22254             :                  // Debugging information
   22255             :                     if (operatorPosition->get_parent() == NULL)
   22256             :                        {
   22257             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22258             :                        }
   22259             : #endif
   22260           0 :                     operatorPosition->set_parent(expression);
   22261           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   22262             :                   }
   22263             :              }
   22264             :         }
   22265             : 
   22266             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   22267           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   22268           0 :      if (initializedName != NULL)
   22269             :         {
   22270             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   22271           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   22272           0 :           ROSE_ASSERT(start != NULL);
   22273             : #if 0
   22274             :        // Debugging information
   22275             :           if (start->get_parent() == NULL)
   22276             :              {
   22277             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22278             :              }
   22279             : #endif
   22280           0 :           start->set_parent(initializedName);
   22281           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   22282             : 
   22283             : #if 0
   22284             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   22285             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   22286             : 
   22287             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   22288             :        // ROSE_ASSERT(end != NULL);
   22289             :           if (end == NULL)
   22290             :              {
   22291             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   22292             :              }
   22293             :             else
   22294             :              {
   22295             :                if (end->get_parent() == NULL)
   22296             :                   {
   22297             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22298             :                   }
   22299             :                end->set_parent(initializedName);
   22300             :                ROSE_ASSERT(end->get_parent() != NULL);
   22301             :              }
   22302             : #endif
   22303             :         }
   22304             : 
   22305             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   22306           0 :      help.insertCopiedNodePair(this,result);
   22307             : 
   22308             :   // printf ("End of copy SgTypeUnsignedLongLong = %p = %s \n",this,SageInterface::get_name(this).c_str());
   22309             : 
   22310             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   22311             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   22312           0 :      help.decrementDepth();
   22313             : 
   22314             :   // Test if this is the root of the copy!
   22315           0 :      if (help.get_depth() == 0)
   22316             :         {
   22317             :        // This is the original calling node.
   22318             : 
   22319             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   22320             :        // printf ("Calling SgTypeUnsignedLongLong::fixupCopy() (from root of AST being copied) \n");
   22321             : #if ALT_FIXUP_COPY
   22322             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   22323           0 :           fixupCopy_scopes (result,help);
   22324           0 :           fixupCopy_symbols (result,help);
   22325           0 :           fixupCopy_references (result,help);
   22326             : #else
   22327             :           fixupCopy(result,help);
   22328             : #endif
   22329             :        // Allow this to be called recursively, so accumulate the state.
   22330             :        // Also, clear the state in the SgCopyHelp object.
   22331             :        // help.clearState();
   22332             :         }
   22333             : 
   22334           0 :      return result;
   22335             :    }
   22336             : 
   22337             : 
   22338             : /* #line 22339 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   22339             : 
   22340             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   22341             : 
   22342           0 : SgNode* SgTypeSigned128bitInteger::copy ( SgCopyHelp& help) const
   22343             :    {
   22344           0 :      SgTypeSigned128bitInteger* result = NULL;
   22345             : 
   22346             :   // printf ("Copy SgTypeSigned128bitInteger = %p = %s \n",this,SageInterface::get_name(this).c_str());
   22347             : 
   22348             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   22349             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   22350             :   // The default value of the depth is 0, so after this call the depth is 1!
   22351           0 :      help.incrementDepth();
   22352             : 
   22353             : #if 0
   22354             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   22355             :   // but it is not generally true that things can only be copied once!
   22356             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   22357             :   // AstAttribute* existingAttribute = const_cast<SgTypeSigned128bitInteger*>(this)->attribute["copied"];
   22358             :      bool previouslyCopied = const_cast<SgTypeSigned128bitInteger*>(this)->attribute.exists("copied");
   22359             :      if (previouslyCopied == true)
   22360             :         {
   22361             :           this->get_file_info()->display("Called from copy SgTypeSigned128bitInteger: debug");
   22362             :         }
   22363             :      ROSE_ASSERT(previouslyCopied == false);
   22364             : 
   22365             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   22366             :      AstAttribute* newAttribute = new AstAttribute();
   22367             :      ROSE_ASSERT(newAttribute != NULL);
   22368             : 
   22369             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   22370             :      const_cast<SgTypeSigned128bitInteger*>(this)->attribute.add("copied",newAttribute);
   22371             : #endif
   22372             : 
   22373             :   // Copy data members from base classes
   22374             :  
   22375             : 
   22376             :   // Build an empty copy of this object (will be filled in, but 
   22377             :   // the parent can't be set and must be set by the caller)
   22378           0 :      result = new SgTypeSigned128bitInteger(  );
   22379           0 :      ROSE_ASSERT(result != NULL);
   22380             : 
   22381             :   // Copy data members of "this" class
   22382             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   22383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   22384             :   // case: toBeCopied == COPY_DATA for isCoArray
   22385           0 :      bool isCoArray_copy = p_isCoArray; 
   22386           0 :      result->p_isCoArray = isCoArray_copy; 
   22387             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   22388             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   22389             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   22390           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   22391           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   22392             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   22393             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   22394             :   // case: toBeCopied == COPY_DATA for ref_to
   22395           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   22396           0 :      result->p_ref_to = ref_to_copy; 
   22397             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   22398             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   22399             :   // case: toBeCopied == COPY_DATA for ptr_to
   22400           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   22401           0 :      result->p_ptr_to = ptr_to_copy; 
   22402             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   22403             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   22404             :   // case: toBeCopied == COPY_DATA for modifiers
   22405           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   22406           0 :      result->p_modifiers = modifiers_copy; 
   22407             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   22408             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   22409             :   // case: toBeCopied == COPY_DATA for typedefs
   22410           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   22411           0 :      result->p_typedefs = typedefs_copy; 
   22412             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   22413             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   22414             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   22415           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   22416           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   22417             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   22418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   22419             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   22420           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   22421           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   22422             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   22423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   22424             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   22425           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   22426           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   22427             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   22428           0 :      SgExpression* type_kind_copy; 
   22429             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   22430           0 :           if (get_type_kind() != NULL) 
   22431             :              { 
   22432           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   22433             :              } 
   22434             :             else 
   22435             :              { 
   22436             :                type_kind_copy = NULL; 
   22437             :              } 
   22438             :   /* check for a valid pointer and delete if present */ 
   22439           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   22440           0 :      result->p_type_kind = type_kind_copy; 
   22441             :   // case: not a listType for (using conditionalToSetParent)type_kind
   22442           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   22443             :              { 
   22444           0 :                type_kind_copy->set_parent(result); 
   22445             :              } 
   22446             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   22447             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   22448             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   22449           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   22450           0 :      if ( p_attributeMechanism != NULL ) 
   22451             :         { 
   22452           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   22453             :         } 
   22454             :        else 
   22455             :         { 
   22456             :           attributeMechanism_copy = NULL; 
   22457             :         } 
   22458             :   /* check for a valid pointer and delete if present */ 
   22459           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   22460             :   /* add assignment to result here */ 
   22461           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   22462             : 
   22463             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   22464             : 
   22465             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   22466             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   22467             :   // fixupCopy(result,help);
   22468             : 
   22469             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   22470             :   // the Sg_File_Info objects that are built for the new IR nodes.
   22471           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   22472           0 :      if (locatedNode != NULL)
   22473             :         {
   22474             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   22475           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   22476           0 :           ROSE_ASSERT(start != NULL);
   22477             : #if 0
   22478             :        // Debugging information
   22479             :           if (start->get_parent() == NULL)
   22480             :              {
   22481             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22482             :              }
   22483             : #endif
   22484           0 :           start->set_parent(locatedNode);
   22485           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   22486             : 
   22487           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   22488             : 
   22489             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   22490             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   22491             :        // ROSE_ASSERT(end != NULL);
   22492           0 :           if (end == NULL)
   22493             :              {
   22494           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   22495             :              }
   22496             :             else
   22497             :              {
   22498             : #if 0
   22499             :             // Debugging information
   22500             :                if (end->get_parent() == NULL)
   22501             :                   {
   22502             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22503             :                   }
   22504             : #endif
   22505           0 :                end->set_parent(locatedNode);
   22506           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   22507             :              }
   22508             : 
   22509           0 :           SgExpression* expression = isSgExpression(result);
   22510           0 :           if (isSgExpression(this) != NULL)
   22511             :              {
   22512           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   22513             : 
   22514             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   22515           0 :                if (operatorPosition != NULL)
   22516             :                   {
   22517             : #if 0
   22518             :                  // Debugging information
   22519             :                     if (operatorPosition->get_parent() == NULL)
   22520             :                        {
   22521             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22522             :                        }
   22523             : #endif
   22524           0 :                     operatorPosition->set_parent(expression);
   22525           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   22526             :                   }
   22527             :              }
   22528             :         }
   22529             : 
   22530             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   22531           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   22532           0 :      if (initializedName != NULL)
   22533             :         {
   22534             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   22535           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   22536           0 :           ROSE_ASSERT(start != NULL);
   22537             : #if 0
   22538             :        // Debugging information
   22539             :           if (start->get_parent() == NULL)
   22540             :              {
   22541             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22542             :              }
   22543             : #endif
   22544           0 :           start->set_parent(initializedName);
   22545           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   22546             : 
   22547             : #if 0
   22548             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   22549             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   22550             : 
   22551             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   22552             :        // ROSE_ASSERT(end != NULL);
   22553             :           if (end == NULL)
   22554             :              {
   22555             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   22556             :              }
   22557             :             else
   22558             :              {
   22559             :                if (end->get_parent() == NULL)
   22560             :                   {
   22561             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22562             :                   }
   22563             :                end->set_parent(initializedName);
   22564             :                ROSE_ASSERT(end->get_parent() != NULL);
   22565             :              }
   22566             : #endif
   22567             :         }
   22568             : 
   22569             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   22570           0 :      help.insertCopiedNodePair(this,result);
   22571             : 
   22572             :   // printf ("End of copy SgTypeSigned128bitInteger = %p = %s \n",this,SageInterface::get_name(this).c_str());
   22573             : 
   22574             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   22575             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   22576           0 :      help.decrementDepth();
   22577             : 
   22578             :   // Test if this is the root of the copy!
   22579           0 :      if (help.get_depth() == 0)
   22580             :         {
   22581             :        // This is the original calling node.
   22582             : 
   22583             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   22584             :        // printf ("Calling SgTypeSigned128bitInteger::fixupCopy() (from root of AST being copied) \n");
   22585             : #if ALT_FIXUP_COPY
   22586             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   22587           0 :           fixupCopy_scopes (result,help);
   22588           0 :           fixupCopy_symbols (result,help);
   22589           0 :           fixupCopy_references (result,help);
   22590             : #else
   22591             :           fixupCopy(result,help);
   22592             : #endif
   22593             :        // Allow this to be called recursively, so accumulate the state.
   22594             :        // Also, clear the state in the SgCopyHelp object.
   22595             :        // help.clearState();
   22596             :         }
   22597             : 
   22598           0 :      return result;
   22599             :    }
   22600             : 
   22601             : 
   22602             : /* #line 22603 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   22603             : 
   22604             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   22605             : 
   22606           0 : SgNode* SgTypeUnsigned128bitInteger::copy ( SgCopyHelp& help) const
   22607             :    {
   22608           0 :      SgTypeUnsigned128bitInteger* result = NULL;
   22609             : 
   22610             :   // printf ("Copy SgTypeUnsigned128bitInteger = %p = %s \n",this,SageInterface::get_name(this).c_str());
   22611             : 
   22612             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   22613             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   22614             :   // The default value of the depth is 0, so after this call the depth is 1!
   22615           0 :      help.incrementDepth();
   22616             : 
   22617             : #if 0
   22618             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   22619             :   // but it is not generally true that things can only be copied once!
   22620             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   22621             :   // AstAttribute* existingAttribute = const_cast<SgTypeUnsigned128bitInteger*>(this)->attribute["copied"];
   22622             :      bool previouslyCopied = const_cast<SgTypeUnsigned128bitInteger*>(this)->attribute.exists("copied");
   22623             :      if (previouslyCopied == true)
   22624             :         {
   22625             :           this->get_file_info()->display("Called from copy SgTypeUnsigned128bitInteger: debug");
   22626             :         }
   22627             :      ROSE_ASSERT(previouslyCopied == false);
   22628             : 
   22629             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   22630             :      AstAttribute* newAttribute = new AstAttribute();
   22631             :      ROSE_ASSERT(newAttribute != NULL);
   22632             : 
   22633             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   22634             :      const_cast<SgTypeUnsigned128bitInteger*>(this)->attribute.add("copied",newAttribute);
   22635             : #endif
   22636             : 
   22637             :   // Copy data members from base classes
   22638             :  
   22639             : 
   22640             :   // Build an empty copy of this object (will be filled in, but 
   22641             :   // the parent can't be set and must be set by the caller)
   22642           0 :      result = new SgTypeUnsigned128bitInteger(  );
   22643           0 :      ROSE_ASSERT(result != NULL);
   22644             : 
   22645             :   // Copy data members of "this" class
   22646             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   22647             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   22648             :   // case: toBeCopied == COPY_DATA for isCoArray
   22649           0 :      bool isCoArray_copy = p_isCoArray; 
   22650           0 :      result->p_isCoArray = isCoArray_copy; 
   22651             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   22652             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   22653             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   22654           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   22655           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   22656             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   22657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   22658             :   // case: toBeCopied == COPY_DATA for ref_to
   22659           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   22660           0 :      result->p_ref_to = ref_to_copy; 
   22661             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   22662             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   22663             :   // case: toBeCopied == COPY_DATA for ptr_to
   22664           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   22665           0 :      result->p_ptr_to = ptr_to_copy; 
   22666             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   22667             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   22668             :   // case: toBeCopied == COPY_DATA for modifiers
   22669           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   22670           0 :      result->p_modifiers = modifiers_copy; 
   22671             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   22672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   22673             :   // case: toBeCopied == COPY_DATA for typedefs
   22674           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   22675           0 :      result->p_typedefs = typedefs_copy; 
   22676             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   22677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   22678             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   22679           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   22680           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   22681             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   22682             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   22683             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   22684           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   22685           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   22686             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   22687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   22688             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   22689           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   22690           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   22691             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   22692           0 :      SgExpression* type_kind_copy; 
   22693             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   22694           0 :           if (get_type_kind() != NULL) 
   22695             :              { 
   22696           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   22697             :              } 
   22698             :             else 
   22699             :              { 
   22700             :                type_kind_copy = NULL; 
   22701             :              } 
   22702             :   /* check for a valid pointer and delete if present */ 
   22703           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   22704           0 :      result->p_type_kind = type_kind_copy; 
   22705             :   // case: not a listType for (using conditionalToSetParent)type_kind
   22706           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   22707             :              { 
   22708           0 :                type_kind_copy->set_parent(result); 
   22709             :              } 
   22710             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   22711             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   22712             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   22713           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   22714           0 :      if ( p_attributeMechanism != NULL ) 
   22715             :         { 
   22716           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   22717             :         } 
   22718             :        else 
   22719             :         { 
   22720             :           attributeMechanism_copy = NULL; 
   22721             :         } 
   22722             :   /* check for a valid pointer and delete if present */ 
   22723           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   22724             :   /* add assignment to result here */ 
   22725           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   22726             : 
   22727             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   22728             : 
   22729             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   22730             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   22731             :   // fixupCopy(result,help);
   22732             : 
   22733             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   22734             :   // the Sg_File_Info objects that are built for the new IR nodes.
   22735           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   22736           0 :      if (locatedNode != NULL)
   22737             :         {
   22738             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   22739           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   22740           0 :           ROSE_ASSERT(start != NULL);
   22741             : #if 0
   22742             :        // Debugging information
   22743             :           if (start->get_parent() == NULL)
   22744             :              {
   22745             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22746             :              }
   22747             : #endif
   22748           0 :           start->set_parent(locatedNode);
   22749           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   22750             : 
   22751           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   22752             : 
   22753             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   22754             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   22755             :        // ROSE_ASSERT(end != NULL);
   22756           0 :           if (end == NULL)
   22757             :              {
   22758           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   22759             :              }
   22760             :             else
   22761             :              {
   22762             : #if 0
   22763             :             // Debugging information
   22764             :                if (end->get_parent() == NULL)
   22765             :                   {
   22766             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22767             :                   }
   22768             : #endif
   22769           0 :                end->set_parent(locatedNode);
   22770           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   22771             :              }
   22772             : 
   22773           0 :           SgExpression* expression = isSgExpression(result);
   22774           0 :           if (isSgExpression(this) != NULL)
   22775             :              {
   22776           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   22777             : 
   22778             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   22779           0 :                if (operatorPosition != NULL)
   22780             :                   {
   22781             : #if 0
   22782             :                  // Debugging information
   22783             :                     if (operatorPosition->get_parent() == NULL)
   22784             :                        {
   22785             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22786             :                        }
   22787             : #endif
   22788           0 :                     operatorPosition->set_parent(expression);
   22789           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   22790             :                   }
   22791             :              }
   22792             :         }
   22793             : 
   22794             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   22795           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   22796           0 :      if (initializedName != NULL)
   22797             :         {
   22798             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   22799           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   22800           0 :           ROSE_ASSERT(start != NULL);
   22801             : #if 0
   22802             :        // Debugging information
   22803             :           if (start->get_parent() == NULL)
   22804             :              {
   22805             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22806             :              }
   22807             : #endif
   22808           0 :           start->set_parent(initializedName);
   22809           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   22810             : 
   22811             : #if 0
   22812             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   22813             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   22814             : 
   22815             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   22816             :        // ROSE_ASSERT(end != NULL);
   22817             :           if (end == NULL)
   22818             :              {
   22819             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   22820             :              }
   22821             :             else
   22822             :              {
   22823             :                if (end->get_parent() == NULL)
   22824             :                   {
   22825             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   22826             :                   }
   22827             :                end->set_parent(initializedName);
   22828             :                ROSE_ASSERT(end->get_parent() != NULL);
   22829             :              }
   22830             : #endif
   22831             :         }
   22832             : 
   22833             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   22834           0 :      help.insertCopiedNodePair(this,result);
   22835             : 
   22836             :   // printf ("End of copy SgTypeUnsigned128bitInteger = %p = %s \n",this,SageInterface::get_name(this).c_str());
   22837             : 
   22838             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   22839             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   22840           0 :      help.decrementDepth();
   22841             : 
   22842             :   // Test if this is the root of the copy!
   22843           0 :      if (help.get_depth() == 0)
   22844             :         {
   22845             :        // This is the original calling node.
   22846             : 
   22847             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   22848             :        // printf ("Calling SgTypeUnsigned128bitInteger::fixupCopy() (from root of AST being copied) \n");
   22849             : #if ALT_FIXUP_COPY
   22850             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   22851           0 :           fixupCopy_scopes (result,help);
   22852           0 :           fixupCopy_symbols (result,help);
   22853           0 :           fixupCopy_references (result,help);
   22854             : #else
   22855             :           fixupCopy(result,help);
   22856             : #endif
   22857             :        // Allow this to be called recursively, so accumulate the state.
   22858             :        // Also, clear the state in the SgCopyHelp object.
   22859             :        // help.clearState();
   22860             :         }
   22861             : 
   22862           0 :      return result;
   22863             :    }
   22864             : 
   22865             : 
   22866             : /* #line 22867 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   22867             : 
   22868             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   22869             : 
   22870           0 : SgNode* SgTypeFloat80::copy ( SgCopyHelp& help) const
   22871             :    {
   22872           0 :      SgTypeFloat80* result = NULL;
   22873             : 
   22874             :   // printf ("Copy SgTypeFloat80 = %p = %s \n",this,SageInterface::get_name(this).c_str());
   22875             : 
   22876             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   22877             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   22878             :   // The default value of the depth is 0, so after this call the depth is 1!
   22879           0 :      help.incrementDepth();
   22880             : 
   22881             : #if 0
   22882             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   22883             :   // but it is not generally true that things can only be copied once!
   22884             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   22885             :   // AstAttribute* existingAttribute = const_cast<SgTypeFloat80*>(this)->attribute["copied"];
   22886             :      bool previouslyCopied = const_cast<SgTypeFloat80*>(this)->attribute.exists("copied");
   22887             :      if (previouslyCopied == true)
   22888             :         {
   22889             :           this->get_file_info()->display("Called from copy SgTypeFloat80: debug");
   22890             :         }
   22891             :      ROSE_ASSERT(previouslyCopied == false);
   22892             : 
   22893             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   22894             :      AstAttribute* newAttribute = new AstAttribute();
   22895             :      ROSE_ASSERT(newAttribute != NULL);
   22896             : 
   22897             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   22898             :      const_cast<SgTypeFloat80*>(this)->attribute.add("copied",newAttribute);
   22899             : #endif
   22900             : 
   22901             :   // Copy data members from base classes
   22902             :  
   22903             : 
   22904             :   // Build an empty copy of this object (will be filled in, but 
   22905             :   // the parent can't be set and must be set by the caller)
   22906           0 :      result = new SgTypeFloat80(  );
   22907           0 :      ROSE_ASSERT(result != NULL);
   22908             : 
   22909             :   // Copy data members of "this" class
   22910             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   22911             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   22912             :   // case: toBeCopied == COPY_DATA for isCoArray
   22913           0 :      bool isCoArray_copy = p_isCoArray; 
   22914           0 :      result->p_isCoArray = isCoArray_copy; 
   22915             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   22916             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   22917             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   22918           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   22919           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   22920             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   22921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   22922             :   // case: toBeCopied == COPY_DATA for ref_to
   22923           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   22924           0 :      result->p_ref_to = ref_to_copy; 
   22925             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   22926             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   22927             :   // case: toBeCopied == COPY_DATA for ptr_to
   22928           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   22929           0 :      result->p_ptr_to = ptr_to_copy; 
   22930             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   22931             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   22932             :   // case: toBeCopied == COPY_DATA for modifiers
   22933           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   22934           0 :      result->p_modifiers = modifiers_copy; 
   22935             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   22936             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   22937             :   // case: toBeCopied == COPY_DATA for typedefs
   22938           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   22939           0 :      result->p_typedefs = typedefs_copy; 
   22940             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   22941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   22942             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   22943           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   22944           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   22945             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   22946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   22947             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   22948           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   22949           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   22950             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   22951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   22952             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   22953           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   22954           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   22955             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   22956           0 :      SgExpression* type_kind_copy; 
   22957             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   22958           0 :           if (get_type_kind() != NULL) 
   22959             :              { 
   22960           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   22961             :              } 
   22962             :             else 
   22963             :              { 
   22964             :                type_kind_copy = NULL; 
   22965             :              } 
   22966             :   /* check for a valid pointer and delete if present */ 
   22967           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   22968           0 :      result->p_type_kind = type_kind_copy; 
   22969             :   // case: not a listType for (using conditionalToSetParent)type_kind
   22970           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   22971             :              { 
   22972           0 :                type_kind_copy->set_parent(result); 
   22973             :              } 
   22974             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   22975             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   22976             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   22977           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   22978           0 :      if ( p_attributeMechanism != NULL ) 
   22979             :         { 
   22980           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   22981             :         } 
   22982             :        else 
   22983             :         { 
   22984             :           attributeMechanism_copy = NULL; 
   22985             :         } 
   22986             :   /* check for a valid pointer and delete if present */ 
   22987           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   22988             :   /* add assignment to result here */ 
   22989           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   22990             : 
   22991             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   22992             : 
   22993             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   22994             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   22995             :   // fixupCopy(result,help);
   22996             : 
   22997             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   22998             :   // the Sg_File_Info objects that are built for the new IR nodes.
   22999           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   23000           0 :      if (locatedNode != NULL)
   23001             :         {
   23002             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   23003           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   23004           0 :           ROSE_ASSERT(start != NULL);
   23005             : #if 0
   23006             :        // Debugging information
   23007             :           if (start->get_parent() == NULL)
   23008             :              {
   23009             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23010             :              }
   23011             : #endif
   23012           0 :           start->set_parent(locatedNode);
   23013           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   23014             : 
   23015           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   23016             : 
   23017             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   23018             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   23019             :        // ROSE_ASSERT(end != NULL);
   23020           0 :           if (end == NULL)
   23021             :              {
   23022           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   23023             :              }
   23024             :             else
   23025             :              {
   23026             : #if 0
   23027             :             // Debugging information
   23028             :                if (end->get_parent() == NULL)
   23029             :                   {
   23030             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23031             :                   }
   23032             : #endif
   23033           0 :                end->set_parent(locatedNode);
   23034           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   23035             :              }
   23036             : 
   23037           0 :           SgExpression* expression = isSgExpression(result);
   23038           0 :           if (isSgExpression(this) != NULL)
   23039             :              {
   23040           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   23041             : 
   23042             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   23043           0 :                if (operatorPosition != NULL)
   23044             :                   {
   23045             : #if 0
   23046             :                  // Debugging information
   23047             :                     if (operatorPosition->get_parent() == NULL)
   23048             :                        {
   23049             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23050             :                        }
   23051             : #endif
   23052           0 :                     operatorPosition->set_parent(expression);
   23053           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   23054             :                   }
   23055             :              }
   23056             :         }
   23057             : 
   23058             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   23059           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   23060           0 :      if (initializedName != NULL)
   23061             :         {
   23062             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   23063           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   23064           0 :           ROSE_ASSERT(start != NULL);
   23065             : #if 0
   23066             :        // Debugging information
   23067             :           if (start->get_parent() == NULL)
   23068             :              {
   23069             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23070             :              }
   23071             : #endif
   23072           0 :           start->set_parent(initializedName);
   23073           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   23074             : 
   23075             : #if 0
   23076             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   23077             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   23078             : 
   23079             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   23080             :        // ROSE_ASSERT(end != NULL);
   23081             :           if (end == NULL)
   23082             :              {
   23083             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   23084             :              }
   23085             :             else
   23086             :              {
   23087             :                if (end->get_parent() == NULL)
   23088             :                   {
   23089             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23090             :                   }
   23091             :                end->set_parent(initializedName);
   23092             :                ROSE_ASSERT(end->get_parent() != NULL);
   23093             :              }
   23094             : #endif
   23095             :         }
   23096             : 
   23097             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   23098           0 :      help.insertCopiedNodePair(this,result);
   23099             : 
   23100             :   // printf ("End of copy SgTypeFloat80 = %p = %s \n",this,SageInterface::get_name(this).c_str());
   23101             : 
   23102             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   23103             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   23104           0 :      help.decrementDepth();
   23105             : 
   23106             :   // Test if this is the root of the copy!
   23107           0 :      if (help.get_depth() == 0)
   23108             :         {
   23109             :        // This is the original calling node.
   23110             : 
   23111             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   23112             :        // printf ("Calling SgTypeFloat80::fixupCopy() (from root of AST being copied) \n");
   23113             : #if ALT_FIXUP_COPY
   23114             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   23115           0 :           fixupCopy_scopes (result,help);
   23116           0 :           fixupCopy_symbols (result,help);
   23117           0 :           fixupCopy_references (result,help);
   23118             : #else
   23119             :           fixupCopy(result,help);
   23120             : #endif
   23121             :        // Allow this to be called recursively, so accumulate the state.
   23122             :        // Also, clear the state in the SgCopyHelp object.
   23123             :        // help.clearState();
   23124             :         }
   23125             : 
   23126           0 :      return result;
   23127             :    }
   23128             : 
   23129             : 
   23130             : /* #line 23131 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   23131             : 
   23132             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   23133             : 
   23134           0 : SgNode* SgTypeLongDouble::copy ( SgCopyHelp& help) const
   23135             :    {
   23136           0 :      SgTypeLongDouble* result = NULL;
   23137             : 
   23138             :   // printf ("Copy SgTypeLongDouble = %p = %s \n",this,SageInterface::get_name(this).c_str());
   23139             : 
   23140             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   23141             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   23142             :   // The default value of the depth is 0, so after this call the depth is 1!
   23143           0 :      help.incrementDepth();
   23144             : 
   23145             : #if 0
   23146             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   23147             :   // but it is not generally true that things can only be copied once!
   23148             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   23149             :   // AstAttribute* existingAttribute = const_cast<SgTypeLongDouble*>(this)->attribute["copied"];
   23150             :      bool previouslyCopied = const_cast<SgTypeLongDouble*>(this)->attribute.exists("copied");
   23151             :      if (previouslyCopied == true)
   23152             :         {
   23153             :           this->get_file_info()->display("Called from copy SgTypeLongDouble: debug");
   23154             :         }
   23155             :      ROSE_ASSERT(previouslyCopied == false);
   23156             : 
   23157             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   23158             :      AstAttribute* newAttribute = new AstAttribute();
   23159             :      ROSE_ASSERT(newAttribute != NULL);
   23160             : 
   23161             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   23162             :      const_cast<SgTypeLongDouble*>(this)->attribute.add("copied",newAttribute);
   23163             : #endif
   23164             : 
   23165             :   // Copy data members from base classes
   23166             :  
   23167             : 
   23168             :   // Build an empty copy of this object (will be filled in, but 
   23169             :   // the parent can't be set and must be set by the caller)
   23170           0 :      result = new SgTypeLongDouble(  );
   23171           0 :      ROSE_ASSERT(result != NULL);
   23172             : 
   23173             :   // Copy data members of "this" class
   23174             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   23175             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   23176             :   // case: toBeCopied == COPY_DATA for isCoArray
   23177           0 :      bool isCoArray_copy = p_isCoArray; 
   23178           0 :      result->p_isCoArray = isCoArray_copy; 
   23179             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   23180             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   23181             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   23182           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   23183           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   23184             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   23185             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   23186             :   // case: toBeCopied == COPY_DATA for ref_to
   23187           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   23188           0 :      result->p_ref_to = ref_to_copy; 
   23189             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   23190             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   23191             :   // case: toBeCopied == COPY_DATA for ptr_to
   23192           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   23193           0 :      result->p_ptr_to = ptr_to_copy; 
   23194             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   23195             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   23196             :   // case: toBeCopied == COPY_DATA for modifiers
   23197           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   23198           0 :      result->p_modifiers = modifiers_copy; 
   23199             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   23200             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   23201             :   // case: toBeCopied == COPY_DATA for typedefs
   23202           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   23203           0 :      result->p_typedefs = typedefs_copy; 
   23204             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   23205             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   23206             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   23207           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   23208           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   23209             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   23210             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   23211             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   23212           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   23213           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   23214             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   23215             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   23216             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   23217           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   23218           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   23219             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   23220           0 :      SgExpression* type_kind_copy; 
   23221             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   23222           0 :           if (get_type_kind() != NULL) 
   23223             :              { 
   23224           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   23225             :              } 
   23226             :             else 
   23227             :              { 
   23228             :                type_kind_copy = NULL; 
   23229             :              } 
   23230             :   /* check for a valid pointer and delete if present */ 
   23231           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   23232           0 :      result->p_type_kind = type_kind_copy; 
   23233             :   // case: not a listType for (using conditionalToSetParent)type_kind
   23234           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   23235             :              { 
   23236           0 :                type_kind_copy->set_parent(result); 
   23237             :              } 
   23238             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   23239             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   23240             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   23241           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   23242           0 :      if ( p_attributeMechanism != NULL ) 
   23243             :         { 
   23244           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   23245             :         } 
   23246             :        else 
   23247             :         { 
   23248             :           attributeMechanism_copy = NULL; 
   23249             :         } 
   23250             :   /* check for a valid pointer and delete if present */ 
   23251           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   23252             :   /* add assignment to result here */ 
   23253           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   23254             : 
   23255             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   23256             : 
   23257             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   23258             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   23259             :   // fixupCopy(result,help);
   23260             : 
   23261             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   23262             :   // the Sg_File_Info objects that are built for the new IR nodes.
   23263           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   23264           0 :      if (locatedNode != NULL)
   23265             :         {
   23266             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   23267           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   23268           0 :           ROSE_ASSERT(start != NULL);
   23269             : #if 0
   23270             :        // Debugging information
   23271             :           if (start->get_parent() == NULL)
   23272             :              {
   23273             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23274             :              }
   23275             : #endif
   23276           0 :           start->set_parent(locatedNode);
   23277           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   23278             : 
   23279           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   23280             : 
   23281             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   23282             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   23283             :        // ROSE_ASSERT(end != NULL);
   23284           0 :           if (end == NULL)
   23285             :              {
   23286           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   23287             :              }
   23288             :             else
   23289             :              {
   23290             : #if 0
   23291             :             // Debugging information
   23292             :                if (end->get_parent() == NULL)
   23293             :                   {
   23294             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23295             :                   }
   23296             : #endif
   23297           0 :                end->set_parent(locatedNode);
   23298           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   23299             :              }
   23300             : 
   23301           0 :           SgExpression* expression = isSgExpression(result);
   23302           0 :           if (isSgExpression(this) != NULL)
   23303             :              {
   23304           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   23305             : 
   23306             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   23307           0 :                if (operatorPosition != NULL)
   23308             :                   {
   23309             : #if 0
   23310             :                  // Debugging information
   23311             :                     if (operatorPosition->get_parent() == NULL)
   23312             :                        {
   23313             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23314             :                        }
   23315             : #endif
   23316           0 :                     operatorPosition->set_parent(expression);
   23317           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   23318             :                   }
   23319             :              }
   23320             :         }
   23321             : 
   23322             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   23323           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   23324           0 :      if (initializedName != NULL)
   23325             :         {
   23326             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   23327           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   23328           0 :           ROSE_ASSERT(start != NULL);
   23329             : #if 0
   23330             :        // Debugging information
   23331             :           if (start->get_parent() == NULL)
   23332             :              {
   23333             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23334             :              }
   23335             : #endif
   23336           0 :           start->set_parent(initializedName);
   23337           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   23338             : 
   23339             : #if 0
   23340             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   23341             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   23342             : 
   23343             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   23344             :        // ROSE_ASSERT(end != NULL);
   23345             :           if (end == NULL)
   23346             :              {
   23347             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   23348             :              }
   23349             :             else
   23350             :              {
   23351             :                if (end->get_parent() == NULL)
   23352             :                   {
   23353             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23354             :                   }
   23355             :                end->set_parent(initializedName);
   23356             :                ROSE_ASSERT(end->get_parent() != NULL);
   23357             :              }
   23358             : #endif
   23359             :         }
   23360             : 
   23361             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   23362           0 :      help.insertCopiedNodePair(this,result);
   23363             : 
   23364             :   // printf ("End of copy SgTypeLongDouble = %p = %s \n",this,SageInterface::get_name(this).c_str());
   23365             : 
   23366             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   23367             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   23368           0 :      help.decrementDepth();
   23369             : 
   23370             :   // Test if this is the root of the copy!
   23371           0 :      if (help.get_depth() == 0)
   23372             :         {
   23373             :        // This is the original calling node.
   23374             : 
   23375             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   23376             :        // printf ("Calling SgTypeLongDouble::fixupCopy() (from root of AST being copied) \n");
   23377             : #if ALT_FIXUP_COPY
   23378             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   23379           0 :           fixupCopy_scopes (result,help);
   23380           0 :           fixupCopy_symbols (result,help);
   23381           0 :           fixupCopy_references (result,help);
   23382             : #else
   23383             :           fixupCopy(result,help);
   23384             : #endif
   23385             :        // Allow this to be called recursively, so accumulate the state.
   23386             :        // Also, clear the state in the SgCopyHelp object.
   23387             :        // help.clearState();
   23388             :         }
   23389             : 
   23390           0 :      return result;
   23391             :    }
   23392             : 
   23393             : 
   23394             : /* #line 23395 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   23395             : 
   23396             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   23397             : 
   23398           0 : SgNode* SgTypeString::copy ( SgCopyHelp& help) const
   23399             :    {
   23400           0 :      SgTypeString* result = NULL;
   23401             : 
   23402             :   // printf ("Copy SgTypeString = %p = %s \n",this,SageInterface::get_name(this).c_str());
   23403             : 
   23404             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   23405             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   23406             :   // The default value of the depth is 0, so after this call the depth is 1!
   23407           0 :      help.incrementDepth();
   23408             : 
   23409             : #if 0
   23410             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   23411             :   // but it is not generally true that things can only be copied once!
   23412             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   23413             :   // AstAttribute* existingAttribute = const_cast<SgTypeString*>(this)->attribute["copied"];
   23414             :      bool previouslyCopied = const_cast<SgTypeString*>(this)->attribute.exists("copied");
   23415             :      if (previouslyCopied == true)
   23416             :         {
   23417             :           this->get_file_info()->display("Called from copy SgTypeString: debug");
   23418             :         }
   23419             :      ROSE_ASSERT(previouslyCopied == false);
   23420             : 
   23421             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   23422             :      AstAttribute* newAttribute = new AstAttribute();
   23423             :      ROSE_ASSERT(newAttribute != NULL);
   23424             : 
   23425             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   23426             :      const_cast<SgTypeString*>(this)->attribute.add("copied",newAttribute);
   23427             : #endif
   23428             : 
   23429             :   // Copy data members from base classes
   23430             :   // Copy constructor parameter data member: lengthExpression_copy
   23431           0 :      SgExpression* lengthExpression_copy; 
   23432             :   // case: not a listType for (using conditionalToCopyVariable)lengthExpression
   23433           0 :           if (get_lengthExpression() != NULL) 
   23434             :              { 
   23435           0 :                lengthExpression_copy = static_cast<SgExpression*>(help.copyAst(get_lengthExpression())); 
   23436             :              } 
   23437             :             else 
   23438             :              { 
   23439             :                lengthExpression_copy = NULL; 
   23440             :              } 
   23441             :  
   23442             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   23443             : 
   23444             :   // Build an empty copy of this object (will be filled in, but 
   23445             :   // the parent can't be set and must be set by the caller)
   23446           0 :      result = new SgTypeString(  lengthExpression_copy );
   23447           0 :      ROSE_ASSERT(result != NULL);
   23448             : 
   23449             :   // Copy data members of "this" class
   23450             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   23451             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   23452             :   // case: toBeCopied == COPY_DATA for isCoArray
   23453           0 :      bool isCoArray_copy = p_isCoArray; 
   23454           0 :      result->p_isCoArray = isCoArray_copy; 
   23455             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   23456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   23457             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   23458           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   23459           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   23460             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   23461             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   23462             :   // case: toBeCopied == COPY_DATA for ref_to
   23463           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   23464           0 :      result->p_ref_to = ref_to_copy; 
   23465             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   23466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   23467             :   // case: toBeCopied == COPY_DATA for ptr_to
   23468           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   23469           0 :      result->p_ptr_to = ptr_to_copy; 
   23470             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   23471             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   23472             :   // case: toBeCopied == COPY_DATA for modifiers
   23473           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   23474           0 :      result->p_modifiers = modifiers_copy; 
   23475             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   23476             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   23477             :   // case: toBeCopied == COPY_DATA for typedefs
   23478           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   23479           0 :      result->p_typedefs = typedefs_copy; 
   23480             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   23481             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   23482             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   23483           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   23484           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   23485             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   23486             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   23487             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   23488           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   23489           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   23490             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   23491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   23492             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   23493           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   23494           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   23495             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   23496           0 :      SgExpression* type_kind_copy; 
   23497             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   23498           0 :           if (get_type_kind() != NULL) 
   23499             :              { 
   23500           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   23501             :              } 
   23502             :             else 
   23503             :              { 
   23504             :                type_kind_copy = NULL; 
   23505             :              } 
   23506             :   /* check for a valid pointer and delete if present */ 
   23507           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   23508           0 :      result->p_type_kind = type_kind_copy; 
   23509             :   // case: not a listType for (using conditionalToSetParent)type_kind
   23510           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   23511             :              { 
   23512           0 :                type_kind_copy->set_parent(result); 
   23513             :              } 
   23514             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   23515             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   23516             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   23517           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   23518           0 :      if ( p_attributeMechanism != NULL ) 
   23519             :         { 
   23520           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   23521             :         } 
   23522             :        else 
   23523             :         { 
   23524             :           attributeMechanism_copy = NULL; 
   23525             :         } 
   23526             :   /* check for a valid pointer and delete if present */ 
   23527           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   23528             :   /* add assignment to result here */ 
   23529           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   23530             :   // case: not a listType for (using conditionalToSetParent)lengthExpression
   23531           0 :           if ( (lengthExpression_copy != NULL) && (lengthExpression_copy->get_parent() == NULL) && (isSgType(lengthExpression_copy) == NULL) ) 
   23532             :              { 
   23533           0 :                lengthExpression_copy->set_parent(result); 
   23534             :              } 
   23535             : 
   23536             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   23537             : 
   23538             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   23539             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   23540             :   // fixupCopy(result,help);
   23541             : 
   23542             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   23543             :   // the Sg_File_Info objects that are built for the new IR nodes.
   23544           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   23545           0 :      if (locatedNode != NULL)
   23546             :         {
   23547             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   23548           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   23549           0 :           ROSE_ASSERT(start != NULL);
   23550             : #if 0
   23551             :        // Debugging information
   23552             :           if (start->get_parent() == NULL)
   23553             :              {
   23554             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23555             :              }
   23556             : #endif
   23557           0 :           start->set_parent(locatedNode);
   23558           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   23559             : 
   23560           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   23561             : 
   23562             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   23563             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   23564             :        // ROSE_ASSERT(end != NULL);
   23565           0 :           if (end == NULL)
   23566             :              {
   23567           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   23568             :              }
   23569             :             else
   23570             :              {
   23571             : #if 0
   23572             :             // Debugging information
   23573             :                if (end->get_parent() == NULL)
   23574             :                   {
   23575             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23576             :                   }
   23577             : #endif
   23578           0 :                end->set_parent(locatedNode);
   23579           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   23580             :              }
   23581             : 
   23582           0 :           SgExpression* expression = isSgExpression(result);
   23583           0 :           if (isSgExpression(this) != NULL)
   23584             :              {
   23585           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   23586             : 
   23587             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   23588           0 :                if (operatorPosition != NULL)
   23589             :                   {
   23590             : #if 0
   23591             :                  // Debugging information
   23592             :                     if (operatorPosition->get_parent() == NULL)
   23593             :                        {
   23594             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23595             :                        }
   23596             : #endif
   23597           0 :                     operatorPosition->set_parent(expression);
   23598           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   23599             :                   }
   23600             :              }
   23601             :         }
   23602             : 
   23603             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   23604           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   23605           0 :      if (initializedName != NULL)
   23606             :         {
   23607             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   23608           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   23609           0 :           ROSE_ASSERT(start != NULL);
   23610             : #if 0
   23611             :        // Debugging information
   23612             :           if (start->get_parent() == NULL)
   23613             :              {
   23614             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23615             :              }
   23616             : #endif
   23617           0 :           start->set_parent(initializedName);
   23618           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   23619             : 
   23620             : #if 0
   23621             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   23622             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   23623             : 
   23624             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   23625             :        // ROSE_ASSERT(end != NULL);
   23626             :           if (end == NULL)
   23627             :              {
   23628             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   23629             :              }
   23630             :             else
   23631             :              {
   23632             :                if (end->get_parent() == NULL)
   23633             :                   {
   23634             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23635             :                   }
   23636             :                end->set_parent(initializedName);
   23637             :                ROSE_ASSERT(end->get_parent() != NULL);
   23638             :              }
   23639             : #endif
   23640             :         }
   23641             : 
   23642             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   23643           0 :      help.insertCopiedNodePair(this,result);
   23644             : 
   23645             :   // printf ("End of copy SgTypeString = %p = %s \n",this,SageInterface::get_name(this).c_str());
   23646             : 
   23647             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   23648             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   23649           0 :      help.decrementDepth();
   23650             : 
   23651             :   // Test if this is the root of the copy!
   23652           0 :      if (help.get_depth() == 0)
   23653             :         {
   23654             :        // This is the original calling node.
   23655             : 
   23656             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   23657             :        // printf ("Calling SgTypeString::fixupCopy() (from root of AST being copied) \n");
   23658             : #if ALT_FIXUP_COPY
   23659             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   23660           0 :           fixupCopy_scopes (result,help);
   23661           0 :           fixupCopy_symbols (result,help);
   23662           0 :           fixupCopy_references (result,help);
   23663             : #else
   23664             :           fixupCopy(result,help);
   23665             : #endif
   23666             :        // Allow this to be called recursively, so accumulate the state.
   23667             :        // Also, clear the state in the SgCopyHelp object.
   23668             :        // help.clearState();
   23669             :         }
   23670             : 
   23671           0 :      return result;
   23672             :    }
   23673             : 
   23674             : 
   23675             : /* #line 23676 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   23676             : 
   23677             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   23678             : 
   23679           0 : SgNode* SgTypeBool::copy ( SgCopyHelp& help) const
   23680             :    {
   23681           0 :      SgTypeBool* result = NULL;
   23682             : 
   23683             :   // printf ("Copy SgTypeBool = %p = %s \n",this,SageInterface::get_name(this).c_str());
   23684             : 
   23685             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   23686             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   23687             :   // The default value of the depth is 0, so after this call the depth is 1!
   23688           0 :      help.incrementDepth();
   23689             : 
   23690             : #if 0
   23691             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   23692             :   // but it is not generally true that things can only be copied once!
   23693             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   23694             :   // AstAttribute* existingAttribute = const_cast<SgTypeBool*>(this)->attribute["copied"];
   23695             :      bool previouslyCopied = const_cast<SgTypeBool*>(this)->attribute.exists("copied");
   23696             :      if (previouslyCopied == true)
   23697             :         {
   23698             :           this->get_file_info()->display("Called from copy SgTypeBool: debug");
   23699             :         }
   23700             :      ROSE_ASSERT(previouslyCopied == false);
   23701             : 
   23702             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   23703             :      AstAttribute* newAttribute = new AstAttribute();
   23704             :      ROSE_ASSERT(newAttribute != NULL);
   23705             : 
   23706             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   23707             :      const_cast<SgTypeBool*>(this)->attribute.add("copied",newAttribute);
   23708             : #endif
   23709             : 
   23710             :   // Copy data members from base classes
   23711             :  
   23712             : 
   23713             :   // Build an empty copy of this object (will be filled in, but 
   23714             :   // the parent can't be set and must be set by the caller)
   23715           0 :      result = new SgTypeBool(  );
   23716           0 :      ROSE_ASSERT(result != NULL);
   23717             : 
   23718             :   // Copy data members of "this" class
   23719             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   23720             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   23721             :   // case: toBeCopied == COPY_DATA for isCoArray
   23722           0 :      bool isCoArray_copy = p_isCoArray; 
   23723           0 :      result->p_isCoArray = isCoArray_copy; 
   23724             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   23725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   23726             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   23727           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   23728           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   23729             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   23730             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   23731             :   // case: toBeCopied == COPY_DATA for ref_to
   23732           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   23733           0 :      result->p_ref_to = ref_to_copy; 
   23734             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   23735             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   23736             :   // case: toBeCopied == COPY_DATA for ptr_to
   23737           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   23738           0 :      result->p_ptr_to = ptr_to_copy; 
   23739             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   23740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   23741             :   // case: toBeCopied == COPY_DATA for modifiers
   23742           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   23743           0 :      result->p_modifiers = modifiers_copy; 
   23744             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   23745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   23746             :   // case: toBeCopied == COPY_DATA for typedefs
   23747           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   23748           0 :      result->p_typedefs = typedefs_copy; 
   23749             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   23750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   23751             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   23752           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   23753           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   23754             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   23755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   23756             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   23757           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   23758           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   23759             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   23760             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   23761             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   23762           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   23763           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   23764             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   23765           0 :      SgExpression* type_kind_copy; 
   23766             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   23767           0 :           if (get_type_kind() != NULL) 
   23768             :              { 
   23769           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   23770             :              } 
   23771             :             else 
   23772             :              { 
   23773             :                type_kind_copy = NULL; 
   23774             :              } 
   23775             :   /* check for a valid pointer and delete if present */ 
   23776           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   23777           0 :      result->p_type_kind = type_kind_copy; 
   23778             :   // case: not a listType for (using conditionalToSetParent)type_kind
   23779           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   23780             :              { 
   23781           0 :                type_kind_copy->set_parent(result); 
   23782             :              } 
   23783             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   23784             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   23785             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   23786           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   23787           0 :      if ( p_attributeMechanism != NULL ) 
   23788             :         { 
   23789           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   23790             :         } 
   23791             :        else 
   23792             :         { 
   23793             :           attributeMechanism_copy = NULL; 
   23794             :         } 
   23795             :   /* check for a valid pointer and delete if present */ 
   23796           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   23797             :   /* add assignment to result here */ 
   23798           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   23799             : 
   23800             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   23801             : 
   23802             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   23803             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   23804             :   // fixupCopy(result,help);
   23805             : 
   23806             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   23807             :   // the Sg_File_Info objects that are built for the new IR nodes.
   23808           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   23809           0 :      if (locatedNode != NULL)
   23810             :         {
   23811             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   23812           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   23813           0 :           ROSE_ASSERT(start != NULL);
   23814             : #if 0
   23815             :        // Debugging information
   23816             :           if (start->get_parent() == NULL)
   23817             :              {
   23818             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23819             :              }
   23820             : #endif
   23821           0 :           start->set_parent(locatedNode);
   23822           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   23823             : 
   23824           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   23825             : 
   23826             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   23827             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   23828             :        // ROSE_ASSERT(end != NULL);
   23829           0 :           if (end == NULL)
   23830             :              {
   23831           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   23832             :              }
   23833             :             else
   23834             :              {
   23835             : #if 0
   23836             :             // Debugging information
   23837             :                if (end->get_parent() == NULL)
   23838             :                   {
   23839             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23840             :                   }
   23841             : #endif
   23842           0 :                end->set_parent(locatedNode);
   23843           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   23844             :              }
   23845             : 
   23846           0 :           SgExpression* expression = isSgExpression(result);
   23847           0 :           if (isSgExpression(this) != NULL)
   23848             :              {
   23849           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   23850             : 
   23851             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   23852           0 :                if (operatorPosition != NULL)
   23853             :                   {
   23854             : #if 0
   23855             :                  // Debugging information
   23856             :                     if (operatorPosition->get_parent() == NULL)
   23857             :                        {
   23858             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23859             :                        }
   23860             : #endif
   23861           0 :                     operatorPosition->set_parent(expression);
   23862           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   23863             :                   }
   23864             :              }
   23865             :         }
   23866             : 
   23867             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   23868           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   23869           0 :      if (initializedName != NULL)
   23870             :         {
   23871             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   23872           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   23873           0 :           ROSE_ASSERT(start != NULL);
   23874             : #if 0
   23875             :        // Debugging information
   23876             :           if (start->get_parent() == NULL)
   23877             :              {
   23878             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23879             :              }
   23880             : #endif
   23881           0 :           start->set_parent(initializedName);
   23882           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   23883             : 
   23884             : #if 0
   23885             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   23886             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   23887             : 
   23888             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   23889             :        // ROSE_ASSERT(end != NULL);
   23890             :           if (end == NULL)
   23891             :              {
   23892             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   23893             :              }
   23894             :             else
   23895             :              {
   23896             :                if (end->get_parent() == NULL)
   23897             :                   {
   23898             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   23899             :                   }
   23900             :                end->set_parent(initializedName);
   23901             :                ROSE_ASSERT(end->get_parent() != NULL);
   23902             :              }
   23903             : #endif
   23904             :         }
   23905             : 
   23906             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   23907           0 :      help.insertCopiedNodePair(this,result);
   23908             : 
   23909             :   // printf ("End of copy SgTypeBool = %p = %s \n",this,SageInterface::get_name(this).c_str());
   23910             : 
   23911             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   23912             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   23913           0 :      help.decrementDepth();
   23914             : 
   23915             :   // Test if this is the root of the copy!
   23916           0 :      if (help.get_depth() == 0)
   23917             :         {
   23918             :        // This is the original calling node.
   23919             : 
   23920             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   23921             :        // printf ("Calling SgTypeBool::fixupCopy() (from root of AST being copied) \n");
   23922             : #if ALT_FIXUP_COPY
   23923             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   23924           0 :           fixupCopy_scopes (result,help);
   23925           0 :           fixupCopy_symbols (result,help);
   23926           0 :           fixupCopy_references (result,help);
   23927             : #else
   23928             :           fixupCopy(result,help);
   23929             : #endif
   23930             :        // Allow this to be called recursively, so accumulate the state.
   23931             :        // Also, clear the state in the SgCopyHelp object.
   23932             :        // help.clearState();
   23933             :         }
   23934             : 
   23935           0 :      return result;
   23936             :    }
   23937             : 
   23938             : 
   23939             : /* #line 23940 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   23940             : 
   23941             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   23942             : 
   23943           0 : SgNode* SgPointerType::copy ( SgCopyHelp& help) const
   23944             :    {
   23945           0 :      SgPointerType* result = NULL;
   23946             : 
   23947             :   // printf ("Copy SgPointerType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   23948             : 
   23949             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   23950             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   23951             :   // The default value of the depth is 0, so after this call the depth is 1!
   23952           0 :      help.incrementDepth();
   23953             : 
   23954             : #if 0
   23955             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   23956             :   // but it is not generally true that things can only be copied once!
   23957             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   23958             :   // AstAttribute* existingAttribute = const_cast<SgPointerType*>(this)->attribute["copied"];
   23959             :      bool previouslyCopied = const_cast<SgPointerType*>(this)->attribute.exists("copied");
   23960             :      if (previouslyCopied == true)
   23961             :         {
   23962             :           this->get_file_info()->display("Called from copy SgPointerType: debug");
   23963             :         }
   23964             :      ROSE_ASSERT(previouslyCopied == false);
   23965             : 
   23966             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   23967             :      AstAttribute* newAttribute = new AstAttribute();
   23968             :      ROSE_ASSERT(newAttribute != NULL);
   23969             : 
   23970             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   23971             :      const_cast<SgPointerType*>(this)->attribute.add("copied",newAttribute);
   23972             : #endif
   23973             : 
   23974             :   // Copy data members from base classes
   23975             :   // Copy constructor parameter data member: base_type_copy
   23976           0 :      SgType* base_type_copy; 
   23977             :   // case: not a listType for (using conditionalToCopyVariable)base_type
   23978           0 :           if (get_base_type() != NULL) 
   23979             :              { 
   23980           0 :                base_type_copy = static_cast<SgType*>(help.copyAst(get_base_type())); 
   23981             :              } 
   23982             :             else 
   23983             :              { 
   23984             :                base_type_copy = NULL; 
   23985             :              } 
   23986             :  
   23987             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   23988             : 
   23989             :   // Build an empty copy of this object (will be filled in, but 
   23990             :   // the parent can't be set and must be set by the caller)
   23991           0 :      result = new SgPointerType(  base_type_copy );
   23992           0 :      ROSE_ASSERT(result != NULL);
   23993             : 
   23994             :   // Copy data members of "this" class
   23995             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   23996             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   23997             :   // case: toBeCopied == COPY_DATA for isCoArray
   23998           0 :      bool isCoArray_copy = p_isCoArray; 
   23999           0 :      result->p_isCoArray = isCoArray_copy; 
   24000             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   24001             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   24002             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   24003           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   24004           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   24005             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   24006             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   24007             :   // case: toBeCopied == COPY_DATA for ref_to
   24008           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   24009           0 :      result->p_ref_to = ref_to_copy; 
   24010             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   24011             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   24012             :   // case: toBeCopied == COPY_DATA for ptr_to
   24013           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   24014           0 :      result->p_ptr_to = ptr_to_copy; 
   24015             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   24016             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   24017             :   // case: toBeCopied == COPY_DATA for modifiers
   24018           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   24019           0 :      result->p_modifiers = modifiers_copy; 
   24020             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   24021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   24022             :   // case: toBeCopied == COPY_DATA for typedefs
   24023           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   24024           0 :      result->p_typedefs = typedefs_copy; 
   24025             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   24026             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   24027             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   24028           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   24029           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   24030             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   24031             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   24032             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   24033           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   24034           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   24035             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   24036             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   24037             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   24038           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   24039           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   24040             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   24041           0 :      SgExpression* type_kind_copy; 
   24042             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   24043           0 :           if (get_type_kind() != NULL) 
   24044             :              { 
   24045           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   24046             :              } 
   24047             :             else 
   24048             :              { 
   24049             :                type_kind_copy = NULL; 
   24050             :              } 
   24051             :   /* check for a valid pointer and delete if present */ 
   24052           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   24053           0 :      result->p_type_kind = type_kind_copy; 
   24054             :   // case: not a listType for (using conditionalToSetParent)type_kind
   24055           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   24056             :              { 
   24057           0 :                type_kind_copy->set_parent(result); 
   24058             :              } 
   24059             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   24060             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   24061             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   24062           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   24063           0 :      if ( p_attributeMechanism != NULL ) 
   24064             :         { 
   24065           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   24066             :         } 
   24067             :        else 
   24068             :         { 
   24069             :           attributeMechanism_copy = NULL; 
   24070             :         } 
   24071             :   /* check for a valid pointer and delete if present */ 
   24072           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   24073             :   /* add assignment to result here */ 
   24074           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   24075             :   // case: not a listType for (using conditionalToSetParent)base_type
   24076           0 :           if ( (base_type_copy != NULL) && (base_type_copy->get_parent() == NULL) && (isSgType(base_type_copy) == NULL) ) 
   24077             :              { 
   24078           0 :                base_type_copy->set_parent(result); 
   24079             :              } 
   24080             : 
   24081             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24082             : 
   24083             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   24084             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   24085             :   // fixupCopy(result,help);
   24086             : 
   24087             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   24088             :   // the Sg_File_Info objects that are built for the new IR nodes.
   24089           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   24090           0 :      if (locatedNode != NULL)
   24091             :         {
   24092             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   24093           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   24094           0 :           ROSE_ASSERT(start != NULL);
   24095             : #if 0
   24096             :        // Debugging information
   24097             :           if (start->get_parent() == NULL)
   24098             :              {
   24099             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24100             :              }
   24101             : #endif
   24102           0 :           start->set_parent(locatedNode);
   24103           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   24104             : 
   24105           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   24106             : 
   24107             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   24108             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   24109             :        // ROSE_ASSERT(end != NULL);
   24110           0 :           if (end == NULL)
   24111             :              {
   24112           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   24113             :              }
   24114             :             else
   24115             :              {
   24116             : #if 0
   24117             :             // Debugging information
   24118             :                if (end->get_parent() == NULL)
   24119             :                   {
   24120             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24121             :                   }
   24122             : #endif
   24123           0 :                end->set_parent(locatedNode);
   24124           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   24125             :              }
   24126             : 
   24127           0 :           SgExpression* expression = isSgExpression(result);
   24128           0 :           if (isSgExpression(this) != NULL)
   24129             :              {
   24130           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   24131             : 
   24132             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   24133           0 :                if (operatorPosition != NULL)
   24134             :                   {
   24135             : #if 0
   24136             :                  // Debugging information
   24137             :                     if (operatorPosition->get_parent() == NULL)
   24138             :                        {
   24139             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24140             :                        }
   24141             : #endif
   24142           0 :                     operatorPosition->set_parent(expression);
   24143           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   24144             :                   }
   24145             :              }
   24146             :         }
   24147             : 
   24148             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   24149           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   24150           0 :      if (initializedName != NULL)
   24151             :         {
   24152             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   24153           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   24154           0 :           ROSE_ASSERT(start != NULL);
   24155             : #if 0
   24156             :        // Debugging information
   24157             :           if (start->get_parent() == NULL)
   24158             :              {
   24159             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24160             :              }
   24161             : #endif
   24162           0 :           start->set_parent(initializedName);
   24163           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   24164             : 
   24165             : #if 0
   24166             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   24167             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   24168             : 
   24169             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   24170             :        // ROSE_ASSERT(end != NULL);
   24171             :           if (end == NULL)
   24172             :              {
   24173             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   24174             :              }
   24175             :             else
   24176             :              {
   24177             :                if (end->get_parent() == NULL)
   24178             :                   {
   24179             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24180             :                   }
   24181             :                end->set_parent(initializedName);
   24182             :                ROSE_ASSERT(end->get_parent() != NULL);
   24183             :              }
   24184             : #endif
   24185             :         }
   24186             : 
   24187             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   24188           0 :      help.insertCopiedNodePair(this,result);
   24189             : 
   24190             :   // printf ("End of copy SgPointerType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   24191             : 
   24192             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   24193             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   24194           0 :      help.decrementDepth();
   24195             : 
   24196             :   // Test if this is the root of the copy!
   24197           0 :      if (help.get_depth() == 0)
   24198             :         {
   24199             :        // This is the original calling node.
   24200             : 
   24201             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   24202             :        // printf ("Calling SgPointerType::fixupCopy() (from root of AST being copied) \n");
   24203             : #if ALT_FIXUP_COPY
   24204             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   24205           0 :           fixupCopy_scopes (result,help);
   24206           0 :           fixupCopy_symbols (result,help);
   24207           0 :           fixupCopy_references (result,help);
   24208             : #else
   24209             :           fixupCopy(result,help);
   24210             : #endif
   24211             :        // Allow this to be called recursively, so accumulate the state.
   24212             :        // Also, clear the state in the SgCopyHelp object.
   24213             :        // help.clearState();
   24214             :         }
   24215             : 
   24216           0 :      return result;
   24217             :    }
   24218             : 
   24219             : 
   24220             : /* #line 24221 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   24221             : 
   24222             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24223             : 
   24224           0 : SgNode* SgPointerMemberType::copy ( SgCopyHelp& help) const
   24225             :    {
   24226           0 :      SgPointerMemberType* result = NULL;
   24227             : 
   24228             :   // printf ("Copy SgPointerMemberType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   24229             : 
   24230             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   24231             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   24232             :   // The default value of the depth is 0, so after this call the depth is 1!
   24233           0 :      help.incrementDepth();
   24234             : 
   24235             : #if 0
   24236             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   24237             :   // but it is not generally true that things can only be copied once!
   24238             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   24239             :   // AstAttribute* existingAttribute = const_cast<SgPointerMemberType*>(this)->attribute["copied"];
   24240             :      bool previouslyCopied = const_cast<SgPointerMemberType*>(this)->attribute.exists("copied");
   24241             :      if (previouslyCopied == true)
   24242             :         {
   24243             :           this->get_file_info()->display("Called from copy SgPointerMemberType: debug");
   24244             :         }
   24245             :      ROSE_ASSERT(previouslyCopied == false);
   24246             : 
   24247             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   24248             :      AstAttribute* newAttribute = new AstAttribute();
   24249             :      ROSE_ASSERT(newAttribute != NULL);
   24250             : 
   24251             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   24252             :      const_cast<SgPointerMemberType*>(this)->attribute.add("copied",newAttribute);
   24253             : #endif
   24254             : 
   24255             :   // Copy data members from base classes
   24256             :   // Copy constructor parameter data member: base_type_copy
   24257           0 :      SgType* base_type_copy; 
   24258             :   // case: not a listType for (using conditionalToCopyVariable)base_type
   24259           0 :           if (get_base_type() != NULL) 
   24260             :              { 
   24261           0 :                base_type_copy = static_cast<SgType*>(help.copyAst(get_base_type())); 
   24262             :              } 
   24263             :             else 
   24264             :              { 
   24265             :                base_type_copy = NULL; 
   24266             :              } 
   24267             :   // Copy constructor parameter data member: class_type_copy
   24268             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_type
   24269             :   // case: toBeCopied == COPY_DATA for class_type
   24270           0 :      SgType* class_type_copy = p_class_type; 
   24271             :  
   24272             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24273             : 
   24274             :   // Build an empty copy of this object (will be filled in, but 
   24275             :   // the parent can't be set and must be set by the caller)
   24276           0 :      result = new SgPointerMemberType(  base_type_copy, class_type_copy );
   24277           0 :      ROSE_ASSERT(result != NULL);
   24278             : 
   24279             :   // Copy data members of "this" class
   24280             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   24281             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   24282             :   // case: toBeCopied == COPY_DATA for isCoArray
   24283           0 :      bool isCoArray_copy = p_isCoArray; 
   24284           0 :      result->p_isCoArray = isCoArray_copy; 
   24285             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   24286             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   24287             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   24288           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   24289           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   24290             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   24291             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   24292             :   // case: toBeCopied == COPY_DATA for ref_to
   24293           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   24294           0 :      result->p_ref_to = ref_to_copy; 
   24295             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   24296             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   24297             :   // case: toBeCopied == COPY_DATA for ptr_to
   24298           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   24299           0 :      result->p_ptr_to = ptr_to_copy; 
   24300             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   24301             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   24302             :   // case: toBeCopied == COPY_DATA for modifiers
   24303           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   24304           0 :      result->p_modifiers = modifiers_copy; 
   24305             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   24306             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   24307             :   // case: toBeCopied == COPY_DATA for typedefs
   24308           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   24309           0 :      result->p_typedefs = typedefs_copy; 
   24310             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   24311             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   24312             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   24313           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   24314           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   24315             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   24316             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   24317             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   24318           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   24319           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   24320             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   24321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   24322             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   24323           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   24324           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   24325             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   24326           0 :      SgExpression* type_kind_copy; 
   24327             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   24328           0 :           if (get_type_kind() != NULL) 
   24329             :              { 
   24330           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   24331             :              } 
   24332             :             else 
   24333             :              { 
   24334             :                type_kind_copy = NULL; 
   24335             :              } 
   24336             :   /* check for a valid pointer and delete if present */ 
   24337           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   24338           0 :      result->p_type_kind = type_kind_copy; 
   24339             :   // case: not a listType for (using conditionalToSetParent)type_kind
   24340           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   24341             :              { 
   24342           0 :                type_kind_copy->set_parent(result); 
   24343             :              } 
   24344             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   24345             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   24346             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   24347           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   24348           0 :      if ( p_attributeMechanism != NULL ) 
   24349             :         { 
   24350           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   24351             :         } 
   24352             :        else 
   24353             :         { 
   24354             :           attributeMechanism_copy = NULL; 
   24355             :         } 
   24356             :   /* check for a valid pointer and delete if present */ 
   24357           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   24358             :   /* add assignment to result here */ 
   24359           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   24360             :   // case: not a listType for (using conditionalToSetParent)base_type
   24361           0 :           if ( (base_type_copy != NULL) && (base_type_copy->get_parent() == NULL) && (isSgType(base_type_copy) == NULL) ) 
   24362             :              { 
   24363           0 :                base_type_copy->set_parent(result); 
   24364             :              } 
   24365             : 
   24366             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24367             : 
   24368             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   24369             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   24370             :   // fixupCopy(result,help);
   24371             : 
   24372             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   24373             :   // the Sg_File_Info objects that are built for the new IR nodes.
   24374           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   24375           0 :      if (locatedNode != NULL)
   24376             :         {
   24377             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   24378           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   24379           0 :           ROSE_ASSERT(start != NULL);
   24380             : #if 0
   24381             :        // Debugging information
   24382             :           if (start->get_parent() == NULL)
   24383             :              {
   24384             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24385             :              }
   24386             : #endif
   24387           0 :           start->set_parent(locatedNode);
   24388           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   24389             : 
   24390           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   24391             : 
   24392             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   24393             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   24394             :        // ROSE_ASSERT(end != NULL);
   24395           0 :           if (end == NULL)
   24396             :              {
   24397           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   24398             :              }
   24399             :             else
   24400             :              {
   24401             : #if 0
   24402             :             // Debugging information
   24403             :                if (end->get_parent() == NULL)
   24404             :                   {
   24405             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24406             :                   }
   24407             : #endif
   24408           0 :                end->set_parent(locatedNode);
   24409           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   24410             :              }
   24411             : 
   24412           0 :           SgExpression* expression = isSgExpression(result);
   24413           0 :           if (isSgExpression(this) != NULL)
   24414             :              {
   24415           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   24416             : 
   24417             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   24418           0 :                if (operatorPosition != NULL)
   24419             :                   {
   24420             : #if 0
   24421             :                  // Debugging information
   24422             :                     if (operatorPosition->get_parent() == NULL)
   24423             :                        {
   24424             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24425             :                        }
   24426             : #endif
   24427           0 :                     operatorPosition->set_parent(expression);
   24428           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   24429             :                   }
   24430             :              }
   24431             :         }
   24432             : 
   24433             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   24434           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   24435           0 :      if (initializedName != NULL)
   24436             :         {
   24437             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   24438           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   24439           0 :           ROSE_ASSERT(start != NULL);
   24440             : #if 0
   24441             :        // Debugging information
   24442             :           if (start->get_parent() == NULL)
   24443             :              {
   24444             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24445             :              }
   24446             : #endif
   24447           0 :           start->set_parent(initializedName);
   24448           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   24449             : 
   24450             : #if 0
   24451             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   24452             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   24453             : 
   24454             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   24455             :        // ROSE_ASSERT(end != NULL);
   24456             :           if (end == NULL)
   24457             :              {
   24458             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   24459             :              }
   24460             :             else
   24461             :              {
   24462             :                if (end->get_parent() == NULL)
   24463             :                   {
   24464             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24465             :                   }
   24466             :                end->set_parent(initializedName);
   24467             :                ROSE_ASSERT(end->get_parent() != NULL);
   24468             :              }
   24469             : #endif
   24470             :         }
   24471             : 
   24472             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   24473           0 :      help.insertCopiedNodePair(this,result);
   24474             : 
   24475             :   // printf ("End of copy SgPointerMemberType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   24476             : 
   24477             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   24478             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   24479           0 :      help.decrementDepth();
   24480             : 
   24481             :   // Test if this is the root of the copy!
   24482           0 :      if (help.get_depth() == 0)
   24483             :         {
   24484             :        // This is the original calling node.
   24485             : 
   24486             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   24487             :        // printf ("Calling SgPointerMemberType::fixupCopy() (from root of AST being copied) \n");
   24488             : #if ALT_FIXUP_COPY
   24489             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   24490           0 :           fixupCopy_scopes (result,help);
   24491           0 :           fixupCopy_symbols (result,help);
   24492           0 :           fixupCopy_references (result,help);
   24493             : #else
   24494             :           fixupCopy(result,help);
   24495             : #endif
   24496             :        // Allow this to be called recursively, so accumulate the state.
   24497             :        // Also, clear the state in the SgCopyHelp object.
   24498             :        // help.clearState();
   24499             :         }
   24500             : 
   24501           0 :      return result;
   24502             :    }
   24503             : 
   24504             : 
   24505             : /* #line 24506 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   24506             : 
   24507             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24508             : 
   24509           0 : SgNode* SgReferenceType::copy ( SgCopyHelp& help) const
   24510             :    {
   24511           0 :      SgReferenceType* result = NULL;
   24512             : 
   24513             :   // printf ("Copy SgReferenceType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   24514             : 
   24515             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   24516             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   24517             :   // The default value of the depth is 0, so after this call the depth is 1!
   24518           0 :      help.incrementDepth();
   24519             : 
   24520             : #if 0
   24521             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   24522             :   // but it is not generally true that things can only be copied once!
   24523             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   24524             :   // AstAttribute* existingAttribute = const_cast<SgReferenceType*>(this)->attribute["copied"];
   24525             :      bool previouslyCopied = const_cast<SgReferenceType*>(this)->attribute.exists("copied");
   24526             :      if (previouslyCopied == true)
   24527             :         {
   24528             :           this->get_file_info()->display("Called from copy SgReferenceType: debug");
   24529             :         }
   24530             :      ROSE_ASSERT(previouslyCopied == false);
   24531             : 
   24532             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   24533             :      AstAttribute* newAttribute = new AstAttribute();
   24534             :      ROSE_ASSERT(newAttribute != NULL);
   24535             : 
   24536             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   24537             :      const_cast<SgReferenceType*>(this)->attribute.add("copied",newAttribute);
   24538             : #endif
   24539             : 
   24540             :   // Copy data members from base classes
   24541             :   // Copy constructor parameter data member: base_type_copy
   24542             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   24543             :   // case: toBeCopied == COPY_DATA for base_type
   24544           0 :      SgType* base_type_copy = p_base_type; 
   24545             :  
   24546             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24547             : 
   24548             :   // Build an empty copy of this object (will be filled in, but 
   24549             :   // the parent can't be set and must be set by the caller)
   24550           0 :      result = new SgReferenceType(  base_type_copy );
   24551           0 :      ROSE_ASSERT(result != NULL);
   24552             : 
   24553             :   // Copy data members of "this" class
   24554             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   24555             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   24556             :   // case: toBeCopied == COPY_DATA for isCoArray
   24557           0 :      bool isCoArray_copy = p_isCoArray; 
   24558           0 :      result->p_isCoArray = isCoArray_copy; 
   24559             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   24560             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   24561             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   24562           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   24563           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   24564             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   24565             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   24566             :   // case: toBeCopied == COPY_DATA for ref_to
   24567           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   24568           0 :      result->p_ref_to = ref_to_copy; 
   24569             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   24570             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   24571             :   // case: toBeCopied == COPY_DATA for ptr_to
   24572           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   24573           0 :      result->p_ptr_to = ptr_to_copy; 
   24574             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   24575             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   24576             :   // case: toBeCopied == COPY_DATA for modifiers
   24577           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   24578           0 :      result->p_modifiers = modifiers_copy; 
   24579             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   24580             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   24581             :   // case: toBeCopied == COPY_DATA for typedefs
   24582           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   24583           0 :      result->p_typedefs = typedefs_copy; 
   24584             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   24585             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   24586             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   24587           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   24588           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   24589             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   24590             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   24591             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   24592           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   24593           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   24594             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   24595             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   24596             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   24597           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   24598           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   24599             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   24600           0 :      SgExpression* type_kind_copy; 
   24601             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   24602           0 :           if (get_type_kind() != NULL) 
   24603             :              { 
   24604           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   24605             :              } 
   24606             :             else 
   24607             :              { 
   24608             :                type_kind_copy = NULL; 
   24609             :              } 
   24610             :   /* check for a valid pointer and delete if present */ 
   24611           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   24612           0 :      result->p_type_kind = type_kind_copy; 
   24613             :   // case: not a listType for (using conditionalToSetParent)type_kind
   24614           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   24615             :              { 
   24616           0 :                type_kind_copy->set_parent(result); 
   24617             :              } 
   24618             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   24619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   24620             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   24621           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   24622           0 :      if ( p_attributeMechanism != NULL ) 
   24623             :         { 
   24624           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   24625             :         } 
   24626             :        else 
   24627             :         { 
   24628             :           attributeMechanism_copy = NULL; 
   24629             :         } 
   24630             :   /* check for a valid pointer and delete if present */ 
   24631           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   24632             :   /* add assignment to result here */ 
   24633           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   24634             : 
   24635             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24636             : 
   24637             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   24638             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   24639             :   // fixupCopy(result,help);
   24640             : 
   24641             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   24642             :   // the Sg_File_Info objects that are built for the new IR nodes.
   24643           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   24644           0 :      if (locatedNode != NULL)
   24645             :         {
   24646             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   24647           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   24648           0 :           ROSE_ASSERT(start != NULL);
   24649             : #if 0
   24650             :        // Debugging information
   24651             :           if (start->get_parent() == NULL)
   24652             :              {
   24653             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24654             :              }
   24655             : #endif
   24656           0 :           start->set_parent(locatedNode);
   24657           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   24658             : 
   24659           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   24660             : 
   24661             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   24662             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   24663             :        // ROSE_ASSERT(end != NULL);
   24664           0 :           if (end == NULL)
   24665             :              {
   24666           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   24667             :              }
   24668             :             else
   24669             :              {
   24670             : #if 0
   24671             :             // Debugging information
   24672             :                if (end->get_parent() == NULL)
   24673             :                   {
   24674             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24675             :                   }
   24676             : #endif
   24677           0 :                end->set_parent(locatedNode);
   24678           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   24679             :              }
   24680             : 
   24681           0 :           SgExpression* expression = isSgExpression(result);
   24682           0 :           if (isSgExpression(this) != NULL)
   24683             :              {
   24684           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   24685             : 
   24686             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   24687           0 :                if (operatorPosition != NULL)
   24688             :                   {
   24689             : #if 0
   24690             :                  // Debugging information
   24691             :                     if (operatorPosition->get_parent() == NULL)
   24692             :                        {
   24693             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24694             :                        }
   24695             : #endif
   24696           0 :                     operatorPosition->set_parent(expression);
   24697           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   24698             :                   }
   24699             :              }
   24700             :         }
   24701             : 
   24702             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   24703           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   24704           0 :      if (initializedName != NULL)
   24705             :         {
   24706             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   24707           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   24708           0 :           ROSE_ASSERT(start != NULL);
   24709             : #if 0
   24710             :        // Debugging information
   24711             :           if (start->get_parent() == NULL)
   24712             :              {
   24713             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24714             :              }
   24715             : #endif
   24716           0 :           start->set_parent(initializedName);
   24717           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   24718             : 
   24719             : #if 0
   24720             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   24721             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   24722             : 
   24723             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   24724             :        // ROSE_ASSERT(end != NULL);
   24725             :           if (end == NULL)
   24726             :              {
   24727             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   24728             :              }
   24729             :             else
   24730             :              {
   24731             :                if (end->get_parent() == NULL)
   24732             :                   {
   24733             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24734             :                   }
   24735             :                end->set_parent(initializedName);
   24736             :                ROSE_ASSERT(end->get_parent() != NULL);
   24737             :              }
   24738             : #endif
   24739             :         }
   24740             : 
   24741             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   24742           0 :      help.insertCopiedNodePair(this,result);
   24743             : 
   24744             :   // printf ("End of copy SgReferenceType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   24745             : 
   24746             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   24747             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   24748           0 :      help.decrementDepth();
   24749             : 
   24750             :   // Test if this is the root of the copy!
   24751           0 :      if (help.get_depth() == 0)
   24752             :         {
   24753             :        // This is the original calling node.
   24754             : 
   24755             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   24756             :        // printf ("Calling SgReferenceType::fixupCopy() (from root of AST being copied) \n");
   24757             : #if ALT_FIXUP_COPY
   24758             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   24759           0 :           fixupCopy_scopes (result,help);
   24760           0 :           fixupCopy_symbols (result,help);
   24761           0 :           fixupCopy_references (result,help);
   24762             : #else
   24763             :           fixupCopy(result,help);
   24764             : #endif
   24765             :        // Allow this to be called recursively, so accumulate the state.
   24766             :        // Also, clear the state in the SgCopyHelp object.
   24767             :        // help.clearState();
   24768             :         }
   24769             : 
   24770           0 :      return result;
   24771             :    }
   24772             : 
   24773             : 
   24774             : /* #line 24775 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   24775             : 
   24776             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24777             : 
   24778           0 : SgNode* SgNamedType::copy ( SgCopyHelp& help) const
   24779             :    {
   24780           0 :      SgNamedType* result = NULL;
   24781             : 
   24782             :   // printf ("Copy SgNamedType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   24783             : 
   24784             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   24785             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   24786             :   // The default value of the depth is 0, so after this call the depth is 1!
   24787           0 :      help.incrementDepth();
   24788             : 
   24789             : #if 0
   24790             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   24791             :   // but it is not generally true that things can only be copied once!
   24792             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   24793             :   // AstAttribute* existingAttribute = const_cast<SgNamedType*>(this)->attribute["copied"];
   24794             :      bool previouslyCopied = const_cast<SgNamedType*>(this)->attribute.exists("copied");
   24795             :      if (previouslyCopied == true)
   24796             :         {
   24797             :           this->get_file_info()->display("Called from copy SgNamedType: debug");
   24798             :         }
   24799             :      ROSE_ASSERT(previouslyCopied == false);
   24800             : 
   24801             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   24802             :      AstAttribute* newAttribute = new AstAttribute();
   24803             :      ROSE_ASSERT(newAttribute != NULL);
   24804             : 
   24805             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   24806             :      const_cast<SgNamedType*>(this)->attribute.add("copied",newAttribute);
   24807             : #endif
   24808             : 
   24809             :   // Copy data members from base classes
   24810             :   // Copy constructor parameter data member: declaration_copy
   24811           0 :      SgDeclarationStatement* declaration_copy; 
   24812             :   // case: not a listType for (using conditionalToCopyVariable)declaration
   24813           0 :           if (get_declaration() != NULL) 
   24814             :              { 
   24815           0 :                declaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_declaration())); 
   24816             :              } 
   24817             :             else 
   24818             :              { 
   24819             :                declaration_copy = NULL; 
   24820             :              } 
   24821             :  
   24822             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24823             : 
   24824             :   // Build an empty copy of this object (will be filled in, but 
   24825             :   // the parent can't be set and must be set by the caller)
   24826           0 :      result = new SgNamedType(  declaration_copy );
   24827           0 :      ROSE_ASSERT(result != NULL);
   24828             : 
   24829             :   // Copy data members of "this" class
   24830             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   24831             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   24832             :   // case: toBeCopied == COPY_DATA for isCoArray
   24833           0 :      bool isCoArray_copy = p_isCoArray; 
   24834           0 :      result->p_isCoArray = isCoArray_copy; 
   24835             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   24836             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   24837             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   24838           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   24839           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   24840             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   24841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   24842             :   // case: toBeCopied == COPY_DATA for ref_to
   24843           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   24844           0 :      result->p_ref_to = ref_to_copy; 
   24845             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   24846             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   24847             :   // case: toBeCopied == COPY_DATA for ptr_to
   24848           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   24849           0 :      result->p_ptr_to = ptr_to_copy; 
   24850             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   24851             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   24852             :   // case: toBeCopied == COPY_DATA for modifiers
   24853           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   24854           0 :      result->p_modifiers = modifiers_copy; 
   24855             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   24856             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   24857             :   // case: toBeCopied == COPY_DATA for typedefs
   24858           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   24859           0 :      result->p_typedefs = typedefs_copy; 
   24860             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   24861             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   24862             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   24863           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   24864           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   24865             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   24866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   24867             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   24868           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   24869           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   24870             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   24871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   24872             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   24873           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   24874           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   24875             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   24876           0 :      SgExpression* type_kind_copy; 
   24877             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   24878           0 :           if (get_type_kind() != NULL) 
   24879             :              { 
   24880           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   24881             :              } 
   24882             :             else 
   24883             :              { 
   24884             :                type_kind_copy = NULL; 
   24885             :              } 
   24886             :   /* check for a valid pointer and delete if present */ 
   24887           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   24888           0 :      result->p_type_kind = type_kind_copy; 
   24889             :   // case: not a listType for (using conditionalToSetParent)type_kind
   24890           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   24891             :              { 
   24892           0 :                type_kind_copy->set_parent(result); 
   24893             :              } 
   24894             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   24895             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   24896             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   24897           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   24898           0 :      if ( p_attributeMechanism != NULL ) 
   24899             :         { 
   24900           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   24901             :         } 
   24902             :        else 
   24903             :         { 
   24904             :           attributeMechanism_copy = NULL; 
   24905             :         } 
   24906             :   /* check for a valid pointer and delete if present */ 
   24907           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   24908             :   /* add assignment to result here */ 
   24909           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   24910             :   // Copy non-constructor parameter data member (access function): autonomous_declaration_copy
   24911             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for autonomous_declaration
   24912             :   // case: toBeCopied == COPY_DATA for autonomous_declaration
   24913           0 :      bool autonomous_declaration_copy = p_autonomous_declaration; 
   24914           0 :      result->p_autonomous_declaration = autonomous_declaration_copy; 
   24915             :   // Copy non-constructor parameter data member (access function): is_from_template_parameter_copy
   24916             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_from_template_parameter
   24917             :   // case: toBeCopied == COPY_DATA for is_from_template_parameter
   24918           0 :      bool is_from_template_parameter_copy = p_is_from_template_parameter; 
   24919           0 :      result->p_is_from_template_parameter = is_from_template_parameter_copy; 
   24920             :   // case: not a listType for (using conditionalToSetParent)declaration
   24921           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
   24922             :              { 
   24923           0 :                declaration_copy->set_parent(result); 
   24924             :              } 
   24925             : 
   24926             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   24927             : 
   24928             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   24929             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   24930             :   // fixupCopy(result,help);
   24931             : 
   24932             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   24933             :   // the Sg_File_Info objects that are built for the new IR nodes.
   24934           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   24935           0 :      if (locatedNode != NULL)
   24936             :         {
   24937             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   24938           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   24939           0 :           ROSE_ASSERT(start != NULL);
   24940             : #if 0
   24941             :        // Debugging information
   24942             :           if (start->get_parent() == NULL)
   24943             :              {
   24944             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24945             :              }
   24946             : #endif
   24947           0 :           start->set_parent(locatedNode);
   24948           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   24949             : 
   24950           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   24951             : 
   24952             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   24953             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   24954             :        // ROSE_ASSERT(end != NULL);
   24955           0 :           if (end == NULL)
   24956             :              {
   24957           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   24958             :              }
   24959             :             else
   24960             :              {
   24961             : #if 0
   24962             :             // Debugging information
   24963             :                if (end->get_parent() == NULL)
   24964             :                   {
   24965             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24966             :                   }
   24967             : #endif
   24968           0 :                end->set_parent(locatedNode);
   24969           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   24970             :              }
   24971             : 
   24972           0 :           SgExpression* expression = isSgExpression(result);
   24973           0 :           if (isSgExpression(this) != NULL)
   24974             :              {
   24975           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   24976             : 
   24977             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   24978           0 :                if (operatorPosition != NULL)
   24979             :                   {
   24980             : #if 0
   24981             :                  // Debugging information
   24982             :                     if (operatorPosition->get_parent() == NULL)
   24983             :                        {
   24984             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   24985             :                        }
   24986             : #endif
   24987           0 :                     operatorPosition->set_parent(expression);
   24988           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   24989             :                   }
   24990             :              }
   24991             :         }
   24992             : 
   24993             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   24994           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   24995           0 :      if (initializedName != NULL)
   24996             :         {
   24997             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   24998           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   24999           0 :           ROSE_ASSERT(start != NULL);
   25000             : #if 0
   25001             :        // Debugging information
   25002             :           if (start->get_parent() == NULL)
   25003             :              {
   25004             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25005             :              }
   25006             : #endif
   25007           0 :           start->set_parent(initializedName);
   25008           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   25009             : 
   25010             : #if 0
   25011             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   25012             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   25013             : 
   25014             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   25015             :        // ROSE_ASSERT(end != NULL);
   25016             :           if (end == NULL)
   25017             :              {
   25018             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   25019             :              }
   25020             :             else
   25021             :              {
   25022             :                if (end->get_parent() == NULL)
   25023             :                   {
   25024             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25025             :                   }
   25026             :                end->set_parent(initializedName);
   25027             :                ROSE_ASSERT(end->get_parent() != NULL);
   25028             :              }
   25029             : #endif
   25030             :         }
   25031             : 
   25032             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   25033           0 :      help.insertCopiedNodePair(this,result);
   25034             : 
   25035             :   // printf ("End of copy SgNamedType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   25036             : 
   25037             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   25038             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   25039           0 :      help.decrementDepth();
   25040             : 
   25041             :   // Test if this is the root of the copy!
   25042           0 :      if (help.get_depth() == 0)
   25043             :         {
   25044             :        // This is the original calling node.
   25045             : 
   25046             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   25047             :        // printf ("Calling SgNamedType::fixupCopy() (from root of AST being copied) \n");
   25048             : #if ALT_FIXUP_COPY
   25049             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   25050           0 :           fixupCopy_scopes (result,help);
   25051           0 :           fixupCopy_symbols (result,help);
   25052           0 :           fixupCopy_references (result,help);
   25053             : #else
   25054             :           fixupCopy(result,help);
   25055             : #endif
   25056             :        // Allow this to be called recursively, so accumulate the state.
   25057             :        // Also, clear the state in the SgCopyHelp object.
   25058             :        // help.clearState();
   25059             :         }
   25060             : 
   25061           0 :      return result;
   25062             :    }
   25063             : 
   25064             : 
   25065             : /* #line 25066 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   25066             : 
   25067             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25068             : 
   25069           0 : SgNode* SgClassType::copy ( SgCopyHelp& help) const
   25070             :    {
   25071           0 :      SgClassType* result = NULL;
   25072             : 
   25073             :   // printf ("Copy SgClassType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   25074             : 
   25075             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   25076             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   25077             :   // The default value of the depth is 0, so after this call the depth is 1!
   25078           0 :      help.incrementDepth();
   25079             : 
   25080             : #if 0
   25081             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   25082             :   // but it is not generally true that things can only be copied once!
   25083             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   25084             :   // AstAttribute* existingAttribute = const_cast<SgClassType*>(this)->attribute["copied"];
   25085             :      bool previouslyCopied = const_cast<SgClassType*>(this)->attribute.exists("copied");
   25086             :      if (previouslyCopied == true)
   25087             :         {
   25088             :           this->get_file_info()->display("Called from copy SgClassType: debug");
   25089             :         }
   25090             :      ROSE_ASSERT(previouslyCopied == false);
   25091             : 
   25092             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   25093             :      AstAttribute* newAttribute = new AstAttribute();
   25094             :      ROSE_ASSERT(newAttribute != NULL);
   25095             : 
   25096             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   25097             :      const_cast<SgClassType*>(this)->attribute.add("copied",newAttribute);
   25098             : #endif
   25099             : 
   25100             :   // Copy data members from base classes
   25101             :   // Copy constructor parameter data member: declaration_copy
   25102           0 :      SgDeclarationStatement* declaration_copy; 
   25103             :   // case: not a listType for (using conditionalToCopyVariable)declaration
   25104           0 :           if (get_declaration() != NULL) 
   25105             :              { 
   25106           0 :                declaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_declaration())); 
   25107             :              } 
   25108             :             else 
   25109             :              { 
   25110             :                declaration_copy = NULL; 
   25111             :              } 
   25112             :  
   25113             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25114             : 
   25115             :   // Build an empty copy of this object (will be filled in, but 
   25116             :   // the parent can't be set and must be set by the caller)
   25117           0 :      result = new SgClassType(  declaration_copy );
   25118           0 :      ROSE_ASSERT(result != NULL);
   25119             : 
   25120             :   // Copy data members of "this" class
   25121             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   25122             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   25123             :   // case: toBeCopied == COPY_DATA for isCoArray
   25124           0 :      bool isCoArray_copy = p_isCoArray; 
   25125           0 :      result->p_isCoArray = isCoArray_copy; 
   25126             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   25127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   25128             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   25129           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   25130           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   25131             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   25132             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   25133             :   // case: toBeCopied == COPY_DATA for ref_to
   25134           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   25135           0 :      result->p_ref_to = ref_to_copy; 
   25136             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   25137             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   25138             :   // case: toBeCopied == COPY_DATA for ptr_to
   25139           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   25140           0 :      result->p_ptr_to = ptr_to_copy; 
   25141             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   25142             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   25143             :   // case: toBeCopied == COPY_DATA for modifiers
   25144           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   25145           0 :      result->p_modifiers = modifiers_copy; 
   25146             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   25147             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   25148             :   // case: toBeCopied == COPY_DATA for typedefs
   25149           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   25150           0 :      result->p_typedefs = typedefs_copy; 
   25151             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   25152             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   25153             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   25154           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   25155           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   25156             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   25157             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   25158             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   25159           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   25160           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   25161             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   25162             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   25163             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   25164           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   25165           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   25166             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   25167           0 :      SgExpression* type_kind_copy; 
   25168             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   25169           0 :           if (get_type_kind() != NULL) 
   25170             :              { 
   25171           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   25172             :              } 
   25173             :             else 
   25174             :              { 
   25175             :                type_kind_copy = NULL; 
   25176             :              } 
   25177             :   /* check for a valid pointer and delete if present */ 
   25178           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   25179           0 :      result->p_type_kind = type_kind_copy; 
   25180             :   // case: not a listType for (using conditionalToSetParent)type_kind
   25181           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   25182             :              { 
   25183           0 :                type_kind_copy->set_parent(result); 
   25184             :              } 
   25185             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   25186             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   25187             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   25188           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   25189           0 :      if ( p_attributeMechanism != NULL ) 
   25190             :         { 
   25191           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   25192             :         } 
   25193             :        else 
   25194             :         { 
   25195             :           attributeMechanism_copy = NULL; 
   25196             :         } 
   25197             :   /* check for a valid pointer and delete if present */ 
   25198           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   25199             :   /* add assignment to result here */ 
   25200           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   25201             :   // Copy non-constructor parameter data member (access function): autonomous_declaration_copy
   25202             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for autonomous_declaration
   25203             :   // case: toBeCopied == COPY_DATA for autonomous_declaration
   25204           0 :      bool autonomous_declaration_copy = p_autonomous_declaration; 
   25205           0 :      result->p_autonomous_declaration = autonomous_declaration_copy; 
   25206             :   // Copy non-constructor parameter data member (access function): is_from_template_parameter_copy
   25207             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_from_template_parameter
   25208             :   // case: toBeCopied == COPY_DATA for is_from_template_parameter
   25209           0 :      bool is_from_template_parameter_copy = p_is_from_template_parameter; 
   25210           0 :      result->p_is_from_template_parameter = is_from_template_parameter_copy; 
   25211             :   // Copy non-constructor parameter data member (access function): packed_copy
   25212             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for packed
   25213             :   // case: toBeCopied == COPY_DATA for packed
   25214           0 :      bool packed_copy = p_packed; 
   25215           0 :      result->p_packed = packed_copy; 
   25216             :   // case: not a listType for (using conditionalToSetParent)declaration
   25217           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
   25218             :              { 
   25219           0 :                declaration_copy->set_parent(result); 
   25220             :              } 
   25221             : 
   25222             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25223             : 
   25224             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   25225             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   25226             :   // fixupCopy(result,help);
   25227             : 
   25228             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   25229             :   // the Sg_File_Info objects that are built for the new IR nodes.
   25230           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   25231           0 :      if (locatedNode != NULL)
   25232             :         {
   25233             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   25234           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   25235           0 :           ROSE_ASSERT(start != NULL);
   25236             : #if 0
   25237             :        // Debugging information
   25238             :           if (start->get_parent() == NULL)
   25239             :              {
   25240             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25241             :              }
   25242             : #endif
   25243           0 :           start->set_parent(locatedNode);
   25244           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   25245             : 
   25246           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   25247             : 
   25248             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   25249             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   25250             :        // ROSE_ASSERT(end != NULL);
   25251           0 :           if (end == NULL)
   25252             :              {
   25253           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   25254             :              }
   25255             :             else
   25256             :              {
   25257             : #if 0
   25258             :             // Debugging information
   25259             :                if (end->get_parent() == NULL)
   25260             :                   {
   25261             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25262             :                   }
   25263             : #endif
   25264           0 :                end->set_parent(locatedNode);
   25265           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   25266             :              }
   25267             : 
   25268           0 :           SgExpression* expression = isSgExpression(result);
   25269           0 :           if (isSgExpression(this) != NULL)
   25270             :              {
   25271           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   25272             : 
   25273             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   25274           0 :                if (operatorPosition != NULL)
   25275             :                   {
   25276             : #if 0
   25277             :                  // Debugging information
   25278             :                     if (operatorPosition->get_parent() == NULL)
   25279             :                        {
   25280             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25281             :                        }
   25282             : #endif
   25283           0 :                     operatorPosition->set_parent(expression);
   25284           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   25285             :                   }
   25286             :              }
   25287             :         }
   25288             : 
   25289             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   25290           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   25291           0 :      if (initializedName != NULL)
   25292             :         {
   25293             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   25294           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   25295           0 :           ROSE_ASSERT(start != NULL);
   25296             : #if 0
   25297             :        // Debugging information
   25298             :           if (start->get_parent() == NULL)
   25299             :              {
   25300             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25301             :              }
   25302             : #endif
   25303           0 :           start->set_parent(initializedName);
   25304           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   25305             : 
   25306             : #if 0
   25307             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   25308             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   25309             : 
   25310             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   25311             :        // ROSE_ASSERT(end != NULL);
   25312             :           if (end == NULL)
   25313             :              {
   25314             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   25315             :              }
   25316             :             else
   25317             :              {
   25318             :                if (end->get_parent() == NULL)
   25319             :                   {
   25320             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25321             :                   }
   25322             :                end->set_parent(initializedName);
   25323             :                ROSE_ASSERT(end->get_parent() != NULL);
   25324             :              }
   25325             : #endif
   25326             :         }
   25327             : 
   25328             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   25329           0 :      help.insertCopiedNodePair(this,result);
   25330             : 
   25331             :   // printf ("End of copy SgClassType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   25332             : 
   25333             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   25334             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   25335           0 :      help.decrementDepth();
   25336             : 
   25337             :   // Test if this is the root of the copy!
   25338           0 :      if (help.get_depth() == 0)
   25339             :         {
   25340             :        // This is the original calling node.
   25341             : 
   25342             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   25343             :        // printf ("Calling SgClassType::fixupCopy() (from root of AST being copied) \n");
   25344             : #if ALT_FIXUP_COPY
   25345             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   25346           0 :           fixupCopy_scopes (result,help);
   25347           0 :           fixupCopy_symbols (result,help);
   25348           0 :           fixupCopy_references (result,help);
   25349             : #else
   25350             :           fixupCopy(result,help);
   25351             : #endif
   25352             :        // Allow this to be called recursively, so accumulate the state.
   25353             :        // Also, clear the state in the SgCopyHelp object.
   25354             :        // help.clearState();
   25355             :         }
   25356             : 
   25357           0 :      return result;
   25358             :    }
   25359             : 
   25360             : 
   25361             : /* #line 25362 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   25362             : 
   25363             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25364             : 
   25365           0 : SgNode* SgEnumType::copy ( SgCopyHelp& help) const
   25366             :    {
   25367           0 :      SgEnumType* result = NULL;
   25368             : 
   25369             :   // printf ("Copy SgEnumType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   25370             : 
   25371             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   25372             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   25373             :   // The default value of the depth is 0, so after this call the depth is 1!
   25374           0 :      help.incrementDepth();
   25375             : 
   25376             : #if 0
   25377             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   25378             :   // but it is not generally true that things can only be copied once!
   25379             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   25380             :   // AstAttribute* existingAttribute = const_cast<SgEnumType*>(this)->attribute["copied"];
   25381             :      bool previouslyCopied = const_cast<SgEnumType*>(this)->attribute.exists("copied");
   25382             :      if (previouslyCopied == true)
   25383             :         {
   25384             :           this->get_file_info()->display("Called from copy SgEnumType: debug");
   25385             :         }
   25386             :      ROSE_ASSERT(previouslyCopied == false);
   25387             : 
   25388             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   25389             :      AstAttribute* newAttribute = new AstAttribute();
   25390             :      ROSE_ASSERT(newAttribute != NULL);
   25391             : 
   25392             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   25393             :      const_cast<SgEnumType*>(this)->attribute.add("copied",newAttribute);
   25394             : #endif
   25395             : 
   25396             :   // Copy data members from base classes
   25397             :   // Copy constructor parameter data member: declaration_copy
   25398           0 :      SgDeclarationStatement* declaration_copy; 
   25399             :   // case: not a listType for (using conditionalToCopyVariable)declaration
   25400           0 :           if (get_declaration() != NULL) 
   25401             :              { 
   25402           0 :                declaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_declaration())); 
   25403             :              } 
   25404             :             else 
   25405             :              { 
   25406             :                declaration_copy = NULL; 
   25407             :              } 
   25408             :  
   25409             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25410             : 
   25411             :   // Build an empty copy of this object (will be filled in, but 
   25412             :   // the parent can't be set and must be set by the caller)
   25413           0 :      result = new SgEnumType(  declaration_copy );
   25414           0 :      ROSE_ASSERT(result != NULL);
   25415             : 
   25416             :   // Copy data members of "this" class
   25417             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   25418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   25419             :   // case: toBeCopied == COPY_DATA for isCoArray
   25420           0 :      bool isCoArray_copy = p_isCoArray; 
   25421           0 :      result->p_isCoArray = isCoArray_copy; 
   25422             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   25423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   25424             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   25425           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   25426           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   25427             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   25428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   25429             :   // case: toBeCopied == COPY_DATA for ref_to
   25430           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   25431           0 :      result->p_ref_to = ref_to_copy; 
   25432             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   25433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   25434             :   // case: toBeCopied == COPY_DATA for ptr_to
   25435           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   25436           0 :      result->p_ptr_to = ptr_to_copy; 
   25437             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   25438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   25439             :   // case: toBeCopied == COPY_DATA for modifiers
   25440           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   25441           0 :      result->p_modifiers = modifiers_copy; 
   25442             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   25443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   25444             :   // case: toBeCopied == COPY_DATA for typedefs
   25445           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   25446           0 :      result->p_typedefs = typedefs_copy; 
   25447             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   25448             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   25449             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   25450           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   25451           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   25452             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   25453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   25454             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   25455           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   25456           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   25457             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   25458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   25459             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   25460           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   25461           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   25462             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   25463           0 :      SgExpression* type_kind_copy; 
   25464             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   25465           0 :           if (get_type_kind() != NULL) 
   25466             :              { 
   25467           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   25468             :              } 
   25469             :             else 
   25470             :              { 
   25471             :                type_kind_copy = NULL; 
   25472             :              } 
   25473             :   /* check for a valid pointer and delete if present */ 
   25474           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   25475           0 :      result->p_type_kind = type_kind_copy; 
   25476             :   // case: not a listType for (using conditionalToSetParent)type_kind
   25477           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   25478             :              { 
   25479           0 :                type_kind_copy->set_parent(result); 
   25480             :              } 
   25481             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   25482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   25483             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   25484           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   25485           0 :      if ( p_attributeMechanism != NULL ) 
   25486             :         { 
   25487           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   25488             :         } 
   25489             :        else 
   25490             :         { 
   25491             :           attributeMechanism_copy = NULL; 
   25492             :         } 
   25493             :   /* check for a valid pointer and delete if present */ 
   25494           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   25495             :   /* add assignment to result here */ 
   25496           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   25497             :   // Copy non-constructor parameter data member (access function): autonomous_declaration_copy
   25498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for autonomous_declaration
   25499             :   // case: toBeCopied == COPY_DATA for autonomous_declaration
   25500           0 :      bool autonomous_declaration_copy = p_autonomous_declaration; 
   25501           0 :      result->p_autonomous_declaration = autonomous_declaration_copy; 
   25502             :   // Copy non-constructor parameter data member (access function): is_from_template_parameter_copy
   25503             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_from_template_parameter
   25504             :   // case: toBeCopied == COPY_DATA for is_from_template_parameter
   25505           0 :      bool is_from_template_parameter_copy = p_is_from_template_parameter; 
   25506           0 :      result->p_is_from_template_parameter = is_from_template_parameter_copy; 
   25507             :   // case: not a listType for (using conditionalToSetParent)declaration
   25508           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
   25509             :              { 
   25510           0 :                declaration_copy->set_parent(result); 
   25511             :              } 
   25512             : 
   25513             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25514             : 
   25515             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   25516             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   25517             :   // fixupCopy(result,help);
   25518             : 
   25519             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   25520             :   // the Sg_File_Info objects that are built for the new IR nodes.
   25521           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   25522           0 :      if (locatedNode != NULL)
   25523             :         {
   25524             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   25525           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   25526           0 :           ROSE_ASSERT(start != NULL);
   25527             : #if 0
   25528             :        // Debugging information
   25529             :           if (start->get_parent() == NULL)
   25530             :              {
   25531             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25532             :              }
   25533             : #endif
   25534           0 :           start->set_parent(locatedNode);
   25535           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   25536             : 
   25537           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   25538             : 
   25539             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   25540             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   25541             :        // ROSE_ASSERT(end != NULL);
   25542           0 :           if (end == NULL)
   25543             :              {
   25544           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   25545             :              }
   25546             :             else
   25547             :              {
   25548             : #if 0
   25549             :             // Debugging information
   25550             :                if (end->get_parent() == NULL)
   25551             :                   {
   25552             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25553             :                   }
   25554             : #endif
   25555           0 :                end->set_parent(locatedNode);
   25556           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   25557             :              }
   25558             : 
   25559           0 :           SgExpression* expression = isSgExpression(result);
   25560           0 :           if (isSgExpression(this) != NULL)
   25561             :              {
   25562           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   25563             : 
   25564             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   25565           0 :                if (operatorPosition != NULL)
   25566             :                   {
   25567             : #if 0
   25568             :                  // Debugging information
   25569             :                     if (operatorPosition->get_parent() == NULL)
   25570             :                        {
   25571             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25572             :                        }
   25573             : #endif
   25574           0 :                     operatorPosition->set_parent(expression);
   25575           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   25576             :                   }
   25577             :              }
   25578             :         }
   25579             : 
   25580             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   25581           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   25582           0 :      if (initializedName != NULL)
   25583             :         {
   25584             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   25585           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   25586           0 :           ROSE_ASSERT(start != NULL);
   25587             : #if 0
   25588             :        // Debugging information
   25589             :           if (start->get_parent() == NULL)
   25590             :              {
   25591             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25592             :              }
   25593             : #endif
   25594           0 :           start->set_parent(initializedName);
   25595           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   25596             : 
   25597             : #if 0
   25598             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   25599             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   25600             : 
   25601             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   25602             :        // ROSE_ASSERT(end != NULL);
   25603             :           if (end == NULL)
   25604             :              {
   25605             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   25606             :              }
   25607             :             else
   25608             :              {
   25609             :                if (end->get_parent() == NULL)
   25610             :                   {
   25611             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25612             :                   }
   25613             :                end->set_parent(initializedName);
   25614             :                ROSE_ASSERT(end->get_parent() != NULL);
   25615             :              }
   25616             : #endif
   25617             :         }
   25618             : 
   25619             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   25620           0 :      help.insertCopiedNodePair(this,result);
   25621             : 
   25622             :   // printf ("End of copy SgEnumType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   25623             : 
   25624             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   25625             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   25626           0 :      help.decrementDepth();
   25627             : 
   25628             :   // Test if this is the root of the copy!
   25629           0 :      if (help.get_depth() == 0)
   25630             :         {
   25631             :        // This is the original calling node.
   25632             : 
   25633             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   25634             :        // printf ("Calling SgEnumType::fixupCopy() (from root of AST being copied) \n");
   25635             : #if ALT_FIXUP_COPY
   25636             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   25637           0 :           fixupCopy_scopes (result,help);
   25638           0 :           fixupCopy_symbols (result,help);
   25639           0 :           fixupCopy_references (result,help);
   25640             : #else
   25641             :           fixupCopy(result,help);
   25642             : #endif
   25643             :        // Allow this to be called recursively, so accumulate the state.
   25644             :        // Also, clear the state in the SgCopyHelp object.
   25645             :        // help.clearState();
   25646             :         }
   25647             : 
   25648           0 :      return result;
   25649             :    }
   25650             : 
   25651             : 
   25652             : /* #line 25653 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   25653             : 
   25654             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25655             : 
   25656           0 : SgNode* SgTypedefType::copy ( SgCopyHelp& help) const
   25657             :    {
   25658           0 :      SgTypedefType* result = NULL;
   25659             : 
   25660             :   // printf ("Copy SgTypedefType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   25661             : 
   25662             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   25663             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   25664             :   // The default value of the depth is 0, so after this call the depth is 1!
   25665           0 :      help.incrementDepth();
   25666             : 
   25667             : #if 0
   25668             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   25669             :   // but it is not generally true that things can only be copied once!
   25670             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   25671             :   // AstAttribute* existingAttribute = const_cast<SgTypedefType*>(this)->attribute["copied"];
   25672             :      bool previouslyCopied = const_cast<SgTypedefType*>(this)->attribute.exists("copied");
   25673             :      if (previouslyCopied == true)
   25674             :         {
   25675             :           this->get_file_info()->display("Called from copy SgTypedefType: debug");
   25676             :         }
   25677             :      ROSE_ASSERT(previouslyCopied == false);
   25678             : 
   25679             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   25680             :      AstAttribute* newAttribute = new AstAttribute();
   25681             :      ROSE_ASSERT(newAttribute != NULL);
   25682             : 
   25683             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   25684             :      const_cast<SgTypedefType*>(this)->attribute.add("copied",newAttribute);
   25685             : #endif
   25686             : 
   25687             :   // Copy data members from base classes
   25688             :   // Copy constructor parameter data member: declaration_copy
   25689           0 :      SgDeclarationStatement* declaration_copy; 
   25690             :   // case: not a listType for (using conditionalToCopyVariable)declaration
   25691           0 :           if (get_declaration() != NULL) 
   25692             :              { 
   25693           0 :                declaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_declaration())); 
   25694             :              } 
   25695             :             else 
   25696             :              { 
   25697             :                declaration_copy = NULL; 
   25698             :              } 
   25699             :   // Copy constructor parameter data member: parent_scope_copy
   25700             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parent_scope
   25701             :   // case: toBeCopied == COPY_DATA for parent_scope
   25702           0 :      SgSymbol* parent_scope_copy = p_parent_scope; 
   25703             :  
   25704             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25705             : 
   25706             :   // Build an empty copy of this object (will be filled in, but 
   25707             :   // the parent can't be set and must be set by the caller)
   25708           0 :      result = new SgTypedefType(  declaration_copy, parent_scope_copy );
   25709           0 :      ROSE_ASSERT(result != NULL);
   25710             : 
   25711             :   // Copy data members of "this" class
   25712             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   25713             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   25714             :   // case: toBeCopied == COPY_DATA for isCoArray
   25715           0 :      bool isCoArray_copy = p_isCoArray; 
   25716           0 :      result->p_isCoArray = isCoArray_copy; 
   25717             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   25718             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   25719             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   25720           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   25721           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   25722             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   25723             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   25724             :   // case: toBeCopied == COPY_DATA for ref_to
   25725           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   25726           0 :      result->p_ref_to = ref_to_copy; 
   25727             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   25728             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   25729             :   // case: toBeCopied == COPY_DATA for ptr_to
   25730           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   25731           0 :      result->p_ptr_to = ptr_to_copy; 
   25732             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   25733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   25734             :   // case: toBeCopied == COPY_DATA for modifiers
   25735           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   25736           0 :      result->p_modifiers = modifiers_copy; 
   25737             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   25738             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   25739             :   // case: toBeCopied == COPY_DATA for typedefs
   25740           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   25741           0 :      result->p_typedefs = typedefs_copy; 
   25742             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   25743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   25744             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   25745           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   25746           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   25747             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   25748             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   25749             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   25750           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   25751           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   25752             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   25753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   25754             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   25755           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   25756           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   25757             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   25758           0 :      SgExpression* type_kind_copy; 
   25759             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   25760           0 :           if (get_type_kind() != NULL) 
   25761             :              { 
   25762           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   25763             :              } 
   25764             :             else 
   25765             :              { 
   25766             :                type_kind_copy = NULL; 
   25767             :              } 
   25768             :   /* check for a valid pointer and delete if present */ 
   25769           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   25770           0 :      result->p_type_kind = type_kind_copy; 
   25771             :   // case: not a listType for (using conditionalToSetParent)type_kind
   25772           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   25773             :              { 
   25774           0 :                type_kind_copy->set_parent(result); 
   25775             :              } 
   25776             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   25777             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   25778             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   25779           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   25780           0 :      if ( p_attributeMechanism != NULL ) 
   25781             :         { 
   25782           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   25783             :         } 
   25784             :        else 
   25785             :         { 
   25786             :           attributeMechanism_copy = NULL; 
   25787             :         } 
   25788             :   /* check for a valid pointer and delete if present */ 
   25789           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   25790             :   /* add assignment to result here */ 
   25791           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   25792             :   // Copy non-constructor parameter data member (access function): autonomous_declaration_copy
   25793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for autonomous_declaration
   25794             :   // case: toBeCopied == COPY_DATA for autonomous_declaration
   25795           0 :      bool autonomous_declaration_copy = p_autonomous_declaration; 
   25796           0 :      result->p_autonomous_declaration = autonomous_declaration_copy; 
   25797             :   // Copy non-constructor parameter data member (access function): is_from_template_parameter_copy
   25798             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_from_template_parameter
   25799             :   // case: toBeCopied == COPY_DATA for is_from_template_parameter
   25800           0 :      bool is_from_template_parameter_copy = p_is_from_template_parameter; 
   25801           0 :      result->p_is_from_template_parameter = is_from_template_parameter_copy; 
   25802             :   // case: not a listType for (using conditionalToSetParent)declaration
   25803           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
   25804             :              { 
   25805           0 :                declaration_copy->set_parent(result); 
   25806             :              } 
   25807             : 
   25808             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25809             : 
   25810             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   25811             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   25812             :   // fixupCopy(result,help);
   25813             : 
   25814             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   25815             :   // the Sg_File_Info objects that are built for the new IR nodes.
   25816           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   25817           0 :      if (locatedNode != NULL)
   25818             :         {
   25819             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   25820           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   25821           0 :           ROSE_ASSERT(start != NULL);
   25822             : #if 0
   25823             :        // Debugging information
   25824             :           if (start->get_parent() == NULL)
   25825             :              {
   25826             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25827             :              }
   25828             : #endif
   25829           0 :           start->set_parent(locatedNode);
   25830           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   25831             : 
   25832           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   25833             : 
   25834             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   25835             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   25836             :        // ROSE_ASSERT(end != NULL);
   25837           0 :           if (end == NULL)
   25838             :              {
   25839           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   25840             :              }
   25841             :             else
   25842             :              {
   25843             : #if 0
   25844             :             // Debugging information
   25845             :                if (end->get_parent() == NULL)
   25846             :                   {
   25847             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25848             :                   }
   25849             : #endif
   25850           0 :                end->set_parent(locatedNode);
   25851           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   25852             :              }
   25853             : 
   25854           0 :           SgExpression* expression = isSgExpression(result);
   25855           0 :           if (isSgExpression(this) != NULL)
   25856             :              {
   25857           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   25858             : 
   25859             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   25860           0 :                if (operatorPosition != NULL)
   25861             :                   {
   25862             : #if 0
   25863             :                  // Debugging information
   25864             :                     if (operatorPosition->get_parent() == NULL)
   25865             :                        {
   25866             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25867             :                        }
   25868             : #endif
   25869           0 :                     operatorPosition->set_parent(expression);
   25870           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   25871             :                   }
   25872             :              }
   25873             :         }
   25874             : 
   25875             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   25876           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   25877           0 :      if (initializedName != NULL)
   25878             :         {
   25879             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   25880           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   25881           0 :           ROSE_ASSERT(start != NULL);
   25882             : #if 0
   25883             :        // Debugging information
   25884             :           if (start->get_parent() == NULL)
   25885             :              {
   25886             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25887             :              }
   25888             : #endif
   25889           0 :           start->set_parent(initializedName);
   25890           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   25891             : 
   25892             : #if 0
   25893             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   25894             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   25895             : 
   25896             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   25897             :        // ROSE_ASSERT(end != NULL);
   25898             :           if (end == NULL)
   25899             :              {
   25900             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   25901             :              }
   25902             :             else
   25903             :              {
   25904             :                if (end->get_parent() == NULL)
   25905             :                   {
   25906             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   25907             :                   }
   25908             :                end->set_parent(initializedName);
   25909             :                ROSE_ASSERT(end->get_parent() != NULL);
   25910             :              }
   25911             : #endif
   25912             :         }
   25913             : 
   25914             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   25915           0 :      help.insertCopiedNodePair(this,result);
   25916             : 
   25917             :   // printf ("End of copy SgTypedefType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   25918             : 
   25919             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   25920             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   25921           0 :      help.decrementDepth();
   25922             : 
   25923             :   // Test if this is the root of the copy!
   25924           0 :      if (help.get_depth() == 0)
   25925             :         {
   25926             :        // This is the original calling node.
   25927             : 
   25928             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   25929             :        // printf ("Calling SgTypedefType::fixupCopy() (from root of AST being copied) \n");
   25930             : #if ALT_FIXUP_COPY
   25931             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   25932           0 :           fixupCopy_scopes (result,help);
   25933           0 :           fixupCopy_symbols (result,help);
   25934           0 :           fixupCopy_references (result,help);
   25935             : #else
   25936             :           fixupCopy(result,help);
   25937             : #endif
   25938             :        // Allow this to be called recursively, so accumulate the state.
   25939             :        // Also, clear the state in the SgCopyHelp object.
   25940             :        // help.clearState();
   25941             :         }
   25942             : 
   25943           0 :      return result;
   25944             :    }
   25945             : 
   25946             : 
   25947             : /* #line 25948 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   25948             : 
   25949             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25950             : 
   25951           0 : SgNode* SgNonrealType::copy ( SgCopyHelp& help) const
   25952             :    {
   25953           0 :      SgNonrealType* result = NULL;
   25954             : 
   25955             :   // printf ("Copy SgNonrealType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   25956             : 
   25957             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   25958             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   25959             :   // The default value of the depth is 0, so after this call the depth is 1!
   25960           0 :      help.incrementDepth();
   25961             : 
   25962             : #if 0
   25963             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   25964             :   // but it is not generally true that things can only be copied once!
   25965             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   25966             :   // AstAttribute* existingAttribute = const_cast<SgNonrealType*>(this)->attribute["copied"];
   25967             :      bool previouslyCopied = const_cast<SgNonrealType*>(this)->attribute.exists("copied");
   25968             :      if (previouslyCopied == true)
   25969             :         {
   25970             :           this->get_file_info()->display("Called from copy SgNonrealType: debug");
   25971             :         }
   25972             :      ROSE_ASSERT(previouslyCopied == false);
   25973             : 
   25974             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   25975             :      AstAttribute* newAttribute = new AstAttribute();
   25976             :      ROSE_ASSERT(newAttribute != NULL);
   25977             : 
   25978             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   25979             :      const_cast<SgNonrealType*>(this)->attribute.add("copied",newAttribute);
   25980             : #endif
   25981             : 
   25982             :   // Copy data members from base classes
   25983             :   // Copy constructor parameter data member: declaration_copy
   25984           0 :      SgDeclarationStatement* declaration_copy; 
   25985             :   // case: not a listType for (using conditionalToCopyVariable)declaration
   25986           0 :           if (get_declaration() != NULL) 
   25987             :              { 
   25988           0 :                declaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_declaration())); 
   25989             :              } 
   25990             :             else 
   25991             :              { 
   25992             :                declaration_copy = NULL; 
   25993             :              } 
   25994             :  
   25995             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   25996             : 
   25997             :   // Build an empty copy of this object (will be filled in, but 
   25998             :   // the parent can't be set and must be set by the caller)
   25999           0 :      result = new SgNonrealType(  declaration_copy );
   26000           0 :      ROSE_ASSERT(result != NULL);
   26001             : 
   26002             :   // Copy data members of "this" class
   26003             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   26004             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   26005             :   // case: toBeCopied == COPY_DATA for isCoArray
   26006           0 :      bool isCoArray_copy = p_isCoArray; 
   26007           0 :      result->p_isCoArray = isCoArray_copy; 
   26008             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   26009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   26010             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   26011           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   26012           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   26013             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   26014             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   26015             :   // case: toBeCopied == COPY_DATA for ref_to
   26016           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   26017           0 :      result->p_ref_to = ref_to_copy; 
   26018             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   26019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   26020             :   // case: toBeCopied == COPY_DATA for ptr_to
   26021           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   26022           0 :      result->p_ptr_to = ptr_to_copy; 
   26023             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   26024             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   26025             :   // case: toBeCopied == COPY_DATA for modifiers
   26026           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   26027           0 :      result->p_modifiers = modifiers_copy; 
   26028             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   26029             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   26030             :   // case: toBeCopied == COPY_DATA for typedefs
   26031           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   26032           0 :      result->p_typedefs = typedefs_copy; 
   26033             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   26034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   26035             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   26036           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   26037           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   26038             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   26039             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   26040             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   26041           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   26042           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   26043             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   26044             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   26045             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   26046           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   26047           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   26048             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   26049           0 :      SgExpression* type_kind_copy; 
   26050             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   26051           0 :           if (get_type_kind() != NULL) 
   26052             :              { 
   26053           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   26054             :              } 
   26055             :             else 
   26056             :              { 
   26057             :                type_kind_copy = NULL; 
   26058             :              } 
   26059             :   /* check for a valid pointer and delete if present */ 
   26060           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   26061           0 :      result->p_type_kind = type_kind_copy; 
   26062             :   // case: not a listType for (using conditionalToSetParent)type_kind
   26063           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   26064             :              { 
   26065           0 :                type_kind_copy->set_parent(result); 
   26066             :              } 
   26067             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   26068             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   26069             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   26070           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   26071           0 :      if ( p_attributeMechanism != NULL ) 
   26072             :         { 
   26073           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   26074             :         } 
   26075             :        else 
   26076             :         { 
   26077             :           attributeMechanism_copy = NULL; 
   26078             :         } 
   26079             :   /* check for a valid pointer and delete if present */ 
   26080           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   26081             :   /* add assignment to result here */ 
   26082           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   26083             :   // Copy non-constructor parameter data member (access function): autonomous_declaration_copy
   26084             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for autonomous_declaration
   26085             :   // case: toBeCopied == COPY_DATA for autonomous_declaration
   26086           0 :      bool autonomous_declaration_copy = p_autonomous_declaration; 
   26087           0 :      result->p_autonomous_declaration = autonomous_declaration_copy; 
   26088             :   // Copy non-constructor parameter data member (access function): is_from_template_parameter_copy
   26089             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_from_template_parameter
   26090             :   // case: toBeCopied == COPY_DATA for is_from_template_parameter
   26091           0 :      bool is_from_template_parameter_copy = p_is_from_template_parameter; 
   26092           0 :      result->p_is_from_template_parameter = is_from_template_parameter_copy; 
   26093             :   // case: not a listType for (using conditionalToSetParent)declaration
   26094           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
   26095             :              { 
   26096           0 :                declaration_copy->set_parent(result); 
   26097             :              } 
   26098             : 
   26099             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   26100             : 
   26101             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   26102             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   26103             :   // fixupCopy(result,help);
   26104             : 
   26105             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   26106             :   // the Sg_File_Info objects that are built for the new IR nodes.
   26107           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   26108           0 :      if (locatedNode != NULL)
   26109             :         {
   26110             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   26111           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   26112           0 :           ROSE_ASSERT(start != NULL);
   26113             : #if 0
   26114             :        // Debugging information
   26115             :           if (start->get_parent() == NULL)
   26116             :              {
   26117             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26118             :              }
   26119             : #endif
   26120           0 :           start->set_parent(locatedNode);
   26121           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   26122             : 
   26123           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   26124             : 
   26125             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   26126             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   26127             :        // ROSE_ASSERT(end != NULL);
   26128           0 :           if (end == NULL)
   26129             :              {
   26130           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   26131             :              }
   26132             :             else
   26133             :              {
   26134             : #if 0
   26135             :             // Debugging information
   26136             :                if (end->get_parent() == NULL)
   26137             :                   {
   26138             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26139             :                   }
   26140             : #endif
   26141           0 :                end->set_parent(locatedNode);
   26142           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   26143             :              }
   26144             : 
   26145           0 :           SgExpression* expression = isSgExpression(result);
   26146           0 :           if (isSgExpression(this) != NULL)
   26147             :              {
   26148           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   26149             : 
   26150             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   26151           0 :                if (operatorPosition != NULL)
   26152             :                   {
   26153             : #if 0
   26154             :                  // Debugging information
   26155             :                     if (operatorPosition->get_parent() == NULL)
   26156             :                        {
   26157             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26158             :                        }
   26159             : #endif
   26160           0 :                     operatorPosition->set_parent(expression);
   26161           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   26162             :                   }
   26163             :              }
   26164             :         }
   26165             : 
   26166             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   26167           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   26168           0 :      if (initializedName != NULL)
   26169             :         {
   26170             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   26171           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   26172           0 :           ROSE_ASSERT(start != NULL);
   26173             : #if 0
   26174             :        // Debugging information
   26175             :           if (start->get_parent() == NULL)
   26176             :              {
   26177             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26178             :              }
   26179             : #endif
   26180           0 :           start->set_parent(initializedName);
   26181           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   26182             : 
   26183             : #if 0
   26184             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   26185             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   26186             : 
   26187             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   26188             :        // ROSE_ASSERT(end != NULL);
   26189             :           if (end == NULL)
   26190             :              {
   26191             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   26192             :              }
   26193             :             else
   26194             :              {
   26195             :                if (end->get_parent() == NULL)
   26196             :                   {
   26197             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26198             :                   }
   26199             :                end->set_parent(initializedName);
   26200             :                ROSE_ASSERT(end->get_parent() != NULL);
   26201             :              }
   26202             : #endif
   26203             :         }
   26204             : 
   26205             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   26206           0 :      help.insertCopiedNodePair(this,result);
   26207             : 
   26208             :   // printf ("End of copy SgNonrealType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   26209             : 
   26210             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   26211             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   26212           0 :      help.decrementDepth();
   26213             : 
   26214             :   // Test if this is the root of the copy!
   26215           0 :      if (help.get_depth() == 0)
   26216             :         {
   26217             :        // This is the original calling node.
   26218             : 
   26219             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   26220             :        // printf ("Calling SgNonrealType::fixupCopy() (from root of AST being copied) \n");
   26221             : #if ALT_FIXUP_COPY
   26222             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   26223           0 :           fixupCopy_scopes (result,help);
   26224           0 :           fixupCopy_symbols (result,help);
   26225           0 :           fixupCopy_references (result,help);
   26226             : #else
   26227             :           fixupCopy(result,help);
   26228             : #endif
   26229             :        // Allow this to be called recursively, so accumulate the state.
   26230             :        // Also, clear the state in the SgCopyHelp object.
   26231             :        // help.clearState();
   26232             :         }
   26233             : 
   26234           0 :      return result;
   26235             :    }
   26236             : 
   26237             : 
   26238             : /* #line 26239 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   26239             : 
   26240             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   26241             : 
   26242           0 : SgNode* SgModifierType::copy ( SgCopyHelp& help) const
   26243             :    {
   26244           0 :      SgModifierType* result = NULL;
   26245             : 
   26246             :   // printf ("Copy SgModifierType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   26247             : 
   26248             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   26249             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   26250             :   // The default value of the depth is 0, so after this call the depth is 1!
   26251           0 :      help.incrementDepth();
   26252             : 
   26253             : #if 0
   26254             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   26255             :   // but it is not generally true that things can only be copied once!
   26256             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   26257             :   // AstAttribute* existingAttribute = const_cast<SgModifierType*>(this)->attribute["copied"];
   26258             :      bool previouslyCopied = const_cast<SgModifierType*>(this)->attribute.exists("copied");
   26259             :      if (previouslyCopied == true)
   26260             :         {
   26261             :           this->get_file_info()->display("Called from copy SgModifierType: debug");
   26262             :         }
   26263             :      ROSE_ASSERT(previouslyCopied == false);
   26264             : 
   26265             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   26266             :      AstAttribute* newAttribute = new AstAttribute();
   26267             :      ROSE_ASSERT(newAttribute != NULL);
   26268             : 
   26269             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   26270             :      const_cast<SgModifierType*>(this)->attribute.add("copied",newAttribute);
   26271             : #endif
   26272             : 
   26273             :   // Copy data members from base classes
   26274             :   // Copy constructor parameter data member: base_type_copy
   26275           0 :      SgType* base_type_copy; 
   26276             :   // case: not a listType for (using conditionalToCopyVariable)base_type
   26277           0 :           if (get_base_type() != NULL) 
   26278             :              { 
   26279           0 :                base_type_copy = static_cast<SgType*>(help.copyAst(get_base_type())); 
   26280             :              } 
   26281             :             else 
   26282             :              { 
   26283             :                base_type_copy = NULL; 
   26284             :              } 
   26285             :  
   26286             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   26287             : 
   26288             :   // Build an empty copy of this object (will be filled in, but 
   26289             :   // the parent can't be set and must be set by the caller)
   26290           0 :      result = new SgModifierType(  base_type_copy );
   26291           0 :      ROSE_ASSERT(result != NULL);
   26292             : 
   26293             :   // Copy data members of "this" class
   26294             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   26295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   26296             :   // case: toBeCopied == COPY_DATA for isCoArray
   26297           0 :      bool isCoArray_copy = p_isCoArray; 
   26298           0 :      result->p_isCoArray = isCoArray_copy; 
   26299             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   26300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   26301             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   26302           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   26303           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   26304             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   26305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   26306             :   // case: toBeCopied == COPY_DATA for ref_to
   26307           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   26308           0 :      result->p_ref_to = ref_to_copy; 
   26309             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   26310             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   26311             :   // case: toBeCopied == COPY_DATA for ptr_to
   26312           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   26313           0 :      result->p_ptr_to = ptr_to_copy; 
   26314             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   26315             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   26316             :   // case: toBeCopied == COPY_DATA for modifiers
   26317           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   26318           0 :      result->p_modifiers = modifiers_copy; 
   26319             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   26320             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   26321             :   // case: toBeCopied == COPY_DATA for typedefs
   26322           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   26323           0 :      result->p_typedefs = typedefs_copy; 
   26324             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   26325             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   26326             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   26327           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   26328           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   26329             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   26330             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   26331             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   26332           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   26333           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   26334             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   26335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   26336             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   26337           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   26338           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   26339             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   26340           0 :      SgExpression* type_kind_copy; 
   26341             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   26342           0 :           if (get_type_kind() != NULL) 
   26343             :              { 
   26344           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   26345             :              } 
   26346             :             else 
   26347             :              { 
   26348             :                type_kind_copy = NULL; 
   26349             :              } 
   26350             :   /* check for a valid pointer and delete if present */ 
   26351           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   26352           0 :      result->p_type_kind = type_kind_copy; 
   26353             :   // case: not a listType for (using conditionalToSetParent)type_kind
   26354           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   26355             :              { 
   26356           0 :                type_kind_copy->set_parent(result); 
   26357             :              } 
   26358             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   26359             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   26360             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   26361           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   26362           0 :      if ( p_attributeMechanism != NULL ) 
   26363             :         { 
   26364           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   26365             :         } 
   26366             :        else 
   26367             :         { 
   26368             :           attributeMechanism_copy = NULL; 
   26369             :         } 
   26370             :   /* check for a valid pointer and delete if present */ 
   26371           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   26372             :   /* add assignment to result here */ 
   26373           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   26374             :   // Copy non-constructor parameter data member (no access function): result->p_typeModifier
   26375             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeModifier
   26376             :   // case: toBeCopied == COPY_DATA for typeModifier
   26377           0 :      SgTypeModifier typeModifier_copy = p_typeModifier; 
   26378           0 :      result->p_typeModifier = typeModifier_copy; 
   26379             :   // Copy non-constructor parameter data member (access function): frontend_type_reference_copy
   26380           0 :      char* frontend_type_reference_copy; 
   26381             :   // case: typeName == char* or char** for frontend_type_reference
   26382           0 :      if (p_frontend_type_reference != NULL) 
   26383           0 :           frontend_type_reference_copy = strdup(p_frontend_type_reference); 
   26384           0 :      frontend_type_reference_copy = p_frontend_type_reference; 
   26385           0 :      result->p_frontend_type_reference = frontend_type_reference_copy;
   26386             :   // case: typeName == char* or char** for frontend_type_reference
   26387             :   // case: not a listType for (using conditionalToSetParent)base_type
   26388           0 :           if ( (base_type_copy != NULL) && (base_type_copy->get_parent() == NULL) && (isSgType(base_type_copy) == NULL) ) 
   26389             :              { 
   26390           0 :                base_type_copy->set_parent(result); 
   26391             :              } 
   26392             : 
   26393             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   26394             : 
   26395             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   26396             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   26397             :   // fixupCopy(result,help);
   26398             : 
   26399             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   26400             :   // the Sg_File_Info objects that are built for the new IR nodes.
   26401           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   26402           0 :      if (locatedNode != NULL)
   26403             :         {
   26404             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   26405           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   26406           0 :           ROSE_ASSERT(start != NULL);
   26407             : #if 0
   26408             :        // Debugging information
   26409             :           if (start->get_parent() == NULL)
   26410             :              {
   26411             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26412             :              }
   26413             : #endif
   26414           0 :           start->set_parent(locatedNode);
   26415           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   26416             : 
   26417           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   26418             : 
   26419             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   26420             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   26421             :        // ROSE_ASSERT(end != NULL);
   26422           0 :           if (end == NULL)
   26423             :              {
   26424           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   26425             :              }
   26426             :             else
   26427             :              {
   26428             : #if 0
   26429             :             // Debugging information
   26430             :                if (end->get_parent() == NULL)
   26431             :                   {
   26432             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26433             :                   }
   26434             : #endif
   26435           0 :                end->set_parent(locatedNode);
   26436           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   26437             :              }
   26438             : 
   26439           0 :           SgExpression* expression = isSgExpression(result);
   26440           0 :           if (isSgExpression(this) != NULL)
   26441             :              {
   26442           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   26443             : 
   26444             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   26445           0 :                if (operatorPosition != NULL)
   26446             :                   {
   26447             : #if 0
   26448             :                  // Debugging information
   26449             :                     if (operatorPosition->get_parent() == NULL)
   26450             :                        {
   26451             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26452             :                        }
   26453             : #endif
   26454           0 :                     operatorPosition->set_parent(expression);
   26455           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   26456             :                   }
   26457             :              }
   26458             :         }
   26459             : 
   26460             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   26461           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   26462           0 :      if (initializedName != NULL)
   26463             :         {
   26464             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   26465           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   26466           0 :           ROSE_ASSERT(start != NULL);
   26467             : #if 0
   26468             :        // Debugging information
   26469             :           if (start->get_parent() == NULL)
   26470             :              {
   26471             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26472             :              }
   26473             : #endif
   26474           0 :           start->set_parent(initializedName);
   26475           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   26476             : 
   26477             : #if 0
   26478             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   26479             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   26480             : 
   26481             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   26482             :        // ROSE_ASSERT(end != NULL);
   26483             :           if (end == NULL)
   26484             :              {
   26485             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   26486             :              }
   26487             :             else
   26488             :              {
   26489             :                if (end->get_parent() == NULL)
   26490             :                   {
   26491             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26492             :                   }
   26493             :                end->set_parent(initializedName);
   26494             :                ROSE_ASSERT(end->get_parent() != NULL);
   26495             :              }
   26496             : #endif
   26497             :         }
   26498             : 
   26499             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   26500           0 :      help.insertCopiedNodePair(this,result);
   26501             : 
   26502             :   // printf ("End of copy SgModifierType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   26503             : 
   26504             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   26505             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   26506           0 :      help.decrementDepth();
   26507             : 
   26508             :   // Test if this is the root of the copy!
   26509           0 :      if (help.get_depth() == 0)
   26510             :         {
   26511             :        // This is the original calling node.
   26512             : 
   26513             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   26514             :        // printf ("Calling SgModifierType::fixupCopy() (from root of AST being copied) \n");
   26515             : #if ALT_FIXUP_COPY
   26516             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   26517           0 :           fixupCopy_scopes (result,help);
   26518           0 :           fixupCopy_symbols (result,help);
   26519           0 :           fixupCopy_references (result,help);
   26520             : #else
   26521             :           fixupCopy(result,help);
   26522             : #endif
   26523             :        // Allow this to be called recursively, so accumulate the state.
   26524             :        // Also, clear the state in the SgCopyHelp object.
   26525             :        // help.clearState();
   26526             :         }
   26527             : 
   26528           0 :      return result;
   26529             :    }
   26530             : 
   26531             : 
   26532             : /* #line 26533 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   26533             : 
   26534             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   26535             : 
   26536           0 : SgNode* SgFunctionType::copy ( SgCopyHelp& help) const
   26537             :    {
   26538           0 :      SgFunctionType* result = NULL;
   26539             : 
   26540             :   // printf ("Copy SgFunctionType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   26541             : 
   26542             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   26543             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   26544             :   // The default value of the depth is 0, so after this call the depth is 1!
   26545           0 :      help.incrementDepth();
   26546             : 
   26547             : #if 0
   26548             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   26549             :   // but it is not generally true that things can only be copied once!
   26550             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   26551             :   // AstAttribute* existingAttribute = const_cast<SgFunctionType*>(this)->attribute["copied"];
   26552             :      bool previouslyCopied = const_cast<SgFunctionType*>(this)->attribute.exists("copied");
   26553             :      if (previouslyCopied == true)
   26554             :         {
   26555             :           this->get_file_info()->display("Called from copy SgFunctionType: debug");
   26556             :         }
   26557             :      ROSE_ASSERT(previouslyCopied == false);
   26558             : 
   26559             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   26560             :      AstAttribute* newAttribute = new AstAttribute();
   26561             :      ROSE_ASSERT(newAttribute != NULL);
   26562             : 
   26563             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   26564             :      const_cast<SgFunctionType*>(this)->attribute.add("copied",newAttribute);
   26565             : #endif
   26566             : 
   26567             :   // Copy data members from base classes
   26568             :   // Copy constructor parameter data member: return_type_copy
   26569           0 :      SgType* return_type_copy; 
   26570             :   // case: not a listType for (using conditionalToCopyVariable)return_type
   26571           0 :           if (get_return_type() != NULL) 
   26572             :              { 
   26573           0 :                return_type_copy = static_cast<SgType*>(help.copyAst(get_return_type())); 
   26574             :              } 
   26575             :             else 
   26576             :              { 
   26577             :                return_type_copy = NULL; 
   26578             :              } 
   26579             :   // Copy constructor parameter data member: has_ellipses_copy
   26580             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_ellipses
   26581             :   // case: toBeCopied == COPY_DATA for has_ellipses
   26582           0 :      bool has_ellipses_copy = p_has_ellipses; 
   26583             :  
   26584             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   26585             : 
   26586             :   // Build an empty copy of this object (will be filled in, but 
   26587             :   // the parent can't be set and must be set by the caller)
   26588           0 :      result = new SgFunctionType(  return_type_copy, has_ellipses_copy );
   26589           0 :      ROSE_ASSERT(result != NULL);
   26590             : 
   26591             :   // Copy data members of "this" class
   26592             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   26593             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   26594             :   // case: toBeCopied == COPY_DATA for isCoArray
   26595           0 :      bool isCoArray_copy = p_isCoArray; 
   26596           0 :      result->p_isCoArray = isCoArray_copy; 
   26597             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   26598             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   26599             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   26600           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   26601           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   26602             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   26603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   26604             :   // case: toBeCopied == COPY_DATA for ref_to
   26605           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   26606           0 :      result->p_ref_to = ref_to_copy; 
   26607             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   26608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   26609             :   // case: toBeCopied == COPY_DATA for ptr_to
   26610           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   26611           0 :      result->p_ptr_to = ptr_to_copy; 
   26612             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   26613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   26614             :   // case: toBeCopied == COPY_DATA for modifiers
   26615           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   26616           0 :      result->p_modifiers = modifiers_copy; 
   26617             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   26618             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   26619             :   // case: toBeCopied == COPY_DATA for typedefs
   26620           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   26621           0 :      result->p_typedefs = typedefs_copy; 
   26622             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   26623             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   26624             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   26625           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   26626           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   26627             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   26628             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   26629             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   26630           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   26631           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   26632             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   26633             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   26634             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   26635           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   26636           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   26637             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   26638           0 :      SgExpression* type_kind_copy; 
   26639             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   26640           0 :           if (get_type_kind() != NULL) 
   26641             :              { 
   26642           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   26643             :              } 
   26644             :             else 
   26645             :              { 
   26646             :                type_kind_copy = NULL; 
   26647             :              } 
   26648             :   /* check for a valid pointer and delete if present */ 
   26649           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   26650           0 :      result->p_type_kind = type_kind_copy; 
   26651             :   // case: not a listType for (using conditionalToSetParent)type_kind
   26652           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   26653             :              { 
   26654           0 :                type_kind_copy->set_parent(result); 
   26655             :              } 
   26656             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   26657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   26658             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   26659           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   26660           0 :      if ( p_attributeMechanism != NULL ) 
   26661             :         { 
   26662           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   26663             :         } 
   26664             :        else 
   26665             :         { 
   26666             :           attributeMechanism_copy = NULL; 
   26667             :         } 
   26668             :   /* check for a valid pointer and delete if present */ 
   26669           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   26670             :   /* add assignment to result here */ 
   26671           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   26672             :   // Copy non-constructor parameter data member (access function): orig_return_type_copy
   26673           0 :      SgType* orig_return_type_copy; 
   26674             :   // case: not a listType for (using conditionalToCopyVariable)orig_return_type
   26675           0 :           if (get_orig_return_type() != NULL) 
   26676             :              { 
   26677           0 :                orig_return_type_copy = static_cast<SgType*>(help.copyAst(get_orig_return_type())); 
   26678             :              } 
   26679             :             else 
   26680             :              { 
   26681             :                orig_return_type_copy = NULL; 
   26682             :              } 
   26683             :   /* check for a valid pointer and delete if present */ 
   26684           0 :      if (result->p_orig_return_type != NULL) delete result->p_orig_return_type; 
   26685           0 :      result->p_orig_return_type = orig_return_type_copy; 
   26686             :   // case: not a listType for (using conditionalToSetParent)orig_return_type
   26687           0 :           if ( (orig_return_type_copy != NULL) && (orig_return_type_copy->get_parent() == NULL) && (isSgType(orig_return_type_copy) == NULL) ) 
   26688             :              { 
   26689           0 :                orig_return_type_copy->set_parent(result); 
   26690             :              } 
   26691             :   // Copy non-constructor parameter data member (access function): argument_list_copy
   26692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for argument_list
   26693             :   // case: toBeCopied == COPY_DATA for argument_list
   26694           0 :      SgFunctionParameterTypeList* argument_list_copy = p_argument_list; 
   26695           0 :      result->p_argument_list = argument_list_copy; 
   26696             :   // case: not a listType for (using conditionalToSetParent)return_type
   26697           0 :           if ( (return_type_copy != NULL) && (return_type_copy->get_parent() == NULL) && (isSgType(return_type_copy) == NULL) ) 
   26698             :              { 
   26699           0 :                return_type_copy->set_parent(result); 
   26700             :              } 
   26701             : 
   26702             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   26703             : 
   26704             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   26705             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   26706             :   // fixupCopy(result,help);
   26707             : 
   26708             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   26709             :   // the Sg_File_Info objects that are built for the new IR nodes.
   26710           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   26711           0 :      if (locatedNode != NULL)
   26712             :         {
   26713             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   26714           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   26715           0 :           ROSE_ASSERT(start != NULL);
   26716             : #if 0
   26717             :        // Debugging information
   26718             :           if (start->get_parent() == NULL)
   26719             :              {
   26720             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26721             :              }
   26722             : #endif
   26723           0 :           start->set_parent(locatedNode);
   26724           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   26725             : 
   26726           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   26727             : 
   26728             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   26729             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   26730             :        // ROSE_ASSERT(end != NULL);
   26731           0 :           if (end == NULL)
   26732             :              {
   26733           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   26734             :              }
   26735             :             else
   26736             :              {
   26737             : #if 0
   26738             :             // Debugging information
   26739             :                if (end->get_parent() == NULL)
   26740             :                   {
   26741             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26742             :                   }
   26743             : #endif
   26744           0 :                end->set_parent(locatedNode);
   26745           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   26746             :              }
   26747             : 
   26748           0 :           SgExpression* expression = isSgExpression(result);
   26749           0 :           if (isSgExpression(this) != NULL)
   26750             :              {
   26751           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   26752             : 
   26753             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   26754           0 :                if (operatorPosition != NULL)
   26755             :                   {
   26756             : #if 0
   26757             :                  // Debugging information
   26758             :                     if (operatorPosition->get_parent() == NULL)
   26759             :                        {
   26760             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26761             :                        }
   26762             : #endif
   26763           0 :                     operatorPosition->set_parent(expression);
   26764           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   26765             :                   }
   26766             :              }
   26767             :         }
   26768             : 
   26769             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   26770           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   26771           0 :      if (initializedName != NULL)
   26772             :         {
   26773             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   26774           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   26775           0 :           ROSE_ASSERT(start != NULL);
   26776             : #if 0
   26777             :        // Debugging information
   26778             :           if (start->get_parent() == NULL)
   26779             :              {
   26780             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26781             :              }
   26782             : #endif
   26783           0 :           start->set_parent(initializedName);
   26784           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   26785             : 
   26786             : #if 0
   26787             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   26788             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   26789             : 
   26790             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   26791             :        // ROSE_ASSERT(end != NULL);
   26792             :           if (end == NULL)
   26793             :              {
   26794             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   26795             :              }
   26796             :             else
   26797             :              {
   26798             :                if (end->get_parent() == NULL)
   26799             :                   {
   26800             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   26801             :                   }
   26802             :                end->set_parent(initializedName);
   26803             :                ROSE_ASSERT(end->get_parent() != NULL);
   26804             :              }
   26805             : #endif
   26806             :         }
   26807             : 
   26808             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   26809           0 :      help.insertCopiedNodePair(this,result);
   26810             : 
   26811             :   // printf ("End of copy SgFunctionType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   26812             : 
   26813             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   26814             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   26815           0 :      help.decrementDepth();
   26816             : 
   26817             :   // Test if this is the root of the copy!
   26818           0 :      if (help.get_depth() == 0)
   26819             :         {
   26820             :        // This is the original calling node.
   26821             : 
   26822             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   26823             :        // printf ("Calling SgFunctionType::fixupCopy() (from root of AST being copied) \n");
   26824             : #if ALT_FIXUP_COPY
   26825             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   26826           0 :           fixupCopy_scopes (result,help);
   26827           0 :           fixupCopy_symbols (result,help);
   26828           0 :           fixupCopy_references (result,help);
   26829             : #else
   26830             :           fixupCopy(result,help);
   26831             : #endif
   26832             :        // Allow this to be called recursively, so accumulate the state.
   26833             :        // Also, clear the state in the SgCopyHelp object.
   26834             :        // help.clearState();
   26835             :         }
   26836             : 
   26837           0 :      return result;
   26838             :    }
   26839             : 
   26840             : 
   26841             : /* #line 26842 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   26842             : 
   26843             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   26844             : 
   26845           0 : SgNode* SgMemberFunctionType::copy ( SgCopyHelp& help) const
   26846             :    {
   26847           0 :      SgMemberFunctionType* result = NULL;
   26848             : 
   26849             :   // printf ("Copy SgMemberFunctionType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   26850             : 
   26851             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   26852             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   26853             :   // The default value of the depth is 0, so after this call the depth is 1!
   26854           0 :      help.incrementDepth();
   26855             : 
   26856             : #if 0
   26857             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   26858             :   // but it is not generally true that things can only be copied once!
   26859             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   26860             :   // AstAttribute* existingAttribute = const_cast<SgMemberFunctionType*>(this)->attribute["copied"];
   26861             :      bool previouslyCopied = const_cast<SgMemberFunctionType*>(this)->attribute.exists("copied");
   26862             :      if (previouslyCopied == true)
   26863             :         {
   26864             :           this->get_file_info()->display("Called from copy SgMemberFunctionType: debug");
   26865             :         }
   26866             :      ROSE_ASSERT(previouslyCopied == false);
   26867             : 
   26868             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   26869             :      AstAttribute* newAttribute = new AstAttribute();
   26870             :      ROSE_ASSERT(newAttribute != NULL);
   26871             : 
   26872             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   26873             :      const_cast<SgMemberFunctionType*>(this)->attribute.add("copied",newAttribute);
   26874             : #endif
   26875             : 
   26876             :   // Copy data members from base classes
   26877             :   // Copy constructor parameter data member: return_type_copy
   26878           0 :      SgType* return_type_copy; 
   26879             :   // case: not a listType for (using conditionalToCopyVariable)return_type
   26880           0 :           if (get_return_type() != NULL) 
   26881             :              { 
   26882           0 :                return_type_copy = static_cast<SgType*>(help.copyAst(get_return_type())); 
   26883             :              } 
   26884             :             else 
   26885             :              { 
   26886             :                return_type_copy = NULL; 
   26887             :              } 
   26888             :   // Copy constructor parameter data member: has_ellipses_copy
   26889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_ellipses
   26890             :   // case: toBeCopied == COPY_DATA for has_ellipses
   26891           0 :      bool has_ellipses_copy = p_has_ellipses; 
   26892             :   // Copy constructor parameter data member: class_type_copy
   26893             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_type
   26894             :   // case: toBeCopied == COPY_DATA for class_type
   26895           0 :      SgType* class_type_copy = p_class_type; 
   26896             :   // Copy constructor parameter data member: mfunc_specifier_copy
   26897             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mfunc_specifier
   26898             :   // case: toBeCopied == COPY_DATA for mfunc_specifier
   26899           0 :      unsigned int mfunc_specifier_copy = p_mfunc_specifier; 
   26900             :   // Copy constructor parameter data member: ref_qualifiers_copy
   26901             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_qualifiers
   26902             :   // case: toBeCopied == COPY_DATA for ref_qualifiers
   26903           0 :      unsigned int ref_qualifiers_copy = p_ref_qualifiers; 
   26904             :  
   26905             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   26906             : 
   26907             :   // Build an empty copy of this object (will be filled in, but 
   26908             :   // the parent can't be set and must be set by the caller)
   26909           0 :      result = new SgMemberFunctionType(  return_type_copy, has_ellipses_copy, class_type_copy, mfunc_specifier_copy, ref_qualifiers_copy );
   26910           0 :      ROSE_ASSERT(result != NULL);
   26911             : 
   26912             :   // Copy data members of "this" class
   26913             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   26914             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   26915             :   // case: toBeCopied == COPY_DATA for isCoArray
   26916           0 :      bool isCoArray_copy = p_isCoArray; 
   26917           0 :      result->p_isCoArray = isCoArray_copy; 
   26918             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   26919             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   26920             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   26921           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   26922           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   26923             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   26924             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   26925             :   // case: toBeCopied == COPY_DATA for ref_to
   26926           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   26927           0 :      result->p_ref_to = ref_to_copy; 
   26928             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   26929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   26930             :   // case: toBeCopied == COPY_DATA for ptr_to
   26931           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   26932           0 :      result->p_ptr_to = ptr_to_copy; 
   26933             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   26934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   26935             :   // case: toBeCopied == COPY_DATA for modifiers
   26936           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   26937           0 :      result->p_modifiers = modifiers_copy; 
   26938             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   26939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   26940             :   // case: toBeCopied == COPY_DATA for typedefs
   26941           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   26942           0 :      result->p_typedefs = typedefs_copy; 
   26943             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   26944             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   26945             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   26946           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   26947           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   26948             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   26949             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   26950             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   26951           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   26952           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   26953             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   26954             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   26955             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   26956           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   26957           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   26958             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   26959           0 :      SgExpression* type_kind_copy; 
   26960             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   26961           0 :           if (get_type_kind() != NULL) 
   26962             :              { 
   26963           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   26964             :              } 
   26965             :             else 
   26966             :              { 
   26967             :                type_kind_copy = NULL; 
   26968             :              } 
   26969             :   /* check for a valid pointer and delete if present */ 
   26970           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   26971           0 :      result->p_type_kind = type_kind_copy; 
   26972             :   // case: not a listType for (using conditionalToSetParent)type_kind
   26973           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   26974             :              { 
   26975           0 :                type_kind_copy->set_parent(result); 
   26976             :              } 
   26977             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   26978             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   26979             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   26980           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   26981           0 :      if ( p_attributeMechanism != NULL ) 
   26982             :         { 
   26983           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   26984             :         } 
   26985             :        else 
   26986             :         { 
   26987             :           attributeMechanism_copy = NULL; 
   26988             :         } 
   26989             :   /* check for a valid pointer and delete if present */ 
   26990           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   26991             :   /* add assignment to result here */ 
   26992           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   26993             :   // Copy non-constructor parameter data member (access function): orig_return_type_copy
   26994           0 :      SgType* orig_return_type_copy; 
   26995             :   // case: not a listType for (using conditionalToCopyVariable)orig_return_type
   26996           0 :           if (get_orig_return_type() != NULL) 
   26997             :              { 
   26998           0 :                orig_return_type_copy = static_cast<SgType*>(help.copyAst(get_orig_return_type())); 
   26999             :              } 
   27000             :             else 
   27001             :              { 
   27002             :                orig_return_type_copy = NULL; 
   27003             :              } 
   27004             :   /* check for a valid pointer and delete if present */ 
   27005           0 :      if (result->p_orig_return_type != NULL) delete result->p_orig_return_type; 
   27006           0 :      result->p_orig_return_type = orig_return_type_copy; 
   27007             :   // case: not a listType for (using conditionalToSetParent)orig_return_type
   27008           0 :           if ( (orig_return_type_copy != NULL) && (orig_return_type_copy->get_parent() == NULL) && (isSgType(orig_return_type_copy) == NULL) ) 
   27009             :              { 
   27010           0 :                orig_return_type_copy->set_parent(result); 
   27011             :              } 
   27012             :   // Copy non-constructor parameter data member (access function): argument_list_copy
   27013             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for argument_list
   27014             :   // case: toBeCopied == COPY_DATA for argument_list
   27015           0 :      SgFunctionParameterTypeList* argument_list_copy = p_argument_list; 
   27016           0 :      result->p_argument_list = argument_list_copy; 
   27017             :   // case: not a listType for (using conditionalToSetParent)return_type
   27018           0 :           if ( (return_type_copy != NULL) && (return_type_copy->get_parent() == NULL) && (isSgType(return_type_copy) == NULL) ) 
   27019             :              { 
   27020           0 :                return_type_copy->set_parent(result); 
   27021             :              } 
   27022             : 
   27023             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27024             : 
   27025             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   27026             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   27027             :   // fixupCopy(result,help);
   27028             : 
   27029             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   27030             :   // the Sg_File_Info objects that are built for the new IR nodes.
   27031           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   27032           0 :      if (locatedNode != NULL)
   27033             :         {
   27034             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   27035           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   27036           0 :           ROSE_ASSERT(start != NULL);
   27037             : #if 0
   27038             :        // Debugging information
   27039             :           if (start->get_parent() == NULL)
   27040             :              {
   27041             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27042             :              }
   27043             : #endif
   27044           0 :           start->set_parent(locatedNode);
   27045           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   27046             : 
   27047           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   27048             : 
   27049             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   27050             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   27051             :        // ROSE_ASSERT(end != NULL);
   27052           0 :           if (end == NULL)
   27053             :              {
   27054           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   27055             :              }
   27056             :             else
   27057             :              {
   27058             : #if 0
   27059             :             // Debugging information
   27060             :                if (end->get_parent() == NULL)
   27061             :                   {
   27062             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27063             :                   }
   27064             : #endif
   27065           0 :                end->set_parent(locatedNode);
   27066           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   27067             :              }
   27068             : 
   27069           0 :           SgExpression* expression = isSgExpression(result);
   27070           0 :           if (isSgExpression(this) != NULL)
   27071             :              {
   27072           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   27073             : 
   27074             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   27075           0 :                if (operatorPosition != NULL)
   27076             :                   {
   27077             : #if 0
   27078             :                  // Debugging information
   27079             :                     if (operatorPosition->get_parent() == NULL)
   27080             :                        {
   27081             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27082             :                        }
   27083             : #endif
   27084           0 :                     operatorPosition->set_parent(expression);
   27085           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   27086             :                   }
   27087             :              }
   27088             :         }
   27089             : 
   27090             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   27091           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   27092           0 :      if (initializedName != NULL)
   27093             :         {
   27094             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   27095           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   27096           0 :           ROSE_ASSERT(start != NULL);
   27097             : #if 0
   27098             :        // Debugging information
   27099             :           if (start->get_parent() == NULL)
   27100             :              {
   27101             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27102             :              }
   27103             : #endif
   27104           0 :           start->set_parent(initializedName);
   27105           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   27106             : 
   27107             : #if 0
   27108             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   27109             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   27110             : 
   27111             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   27112             :        // ROSE_ASSERT(end != NULL);
   27113             :           if (end == NULL)
   27114             :              {
   27115             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   27116             :              }
   27117             :             else
   27118             :              {
   27119             :                if (end->get_parent() == NULL)
   27120             :                   {
   27121             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27122             :                   }
   27123             :                end->set_parent(initializedName);
   27124             :                ROSE_ASSERT(end->get_parent() != NULL);
   27125             :              }
   27126             : #endif
   27127             :         }
   27128             : 
   27129             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   27130           0 :      help.insertCopiedNodePair(this,result);
   27131             : 
   27132             :   // printf ("End of copy SgMemberFunctionType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   27133             : 
   27134             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   27135             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   27136           0 :      help.decrementDepth();
   27137             : 
   27138             :   // Test if this is the root of the copy!
   27139           0 :      if (help.get_depth() == 0)
   27140             :         {
   27141             :        // This is the original calling node.
   27142             : 
   27143             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   27144             :        // printf ("Calling SgMemberFunctionType::fixupCopy() (from root of AST being copied) \n");
   27145             : #if ALT_FIXUP_COPY
   27146             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   27147           0 :           fixupCopy_scopes (result,help);
   27148           0 :           fixupCopy_symbols (result,help);
   27149           0 :           fixupCopy_references (result,help);
   27150             : #else
   27151             :           fixupCopy(result,help);
   27152             : #endif
   27153             :        // Allow this to be called recursively, so accumulate the state.
   27154             :        // Also, clear the state in the SgCopyHelp object.
   27155             :        // help.clearState();
   27156             :         }
   27157             : 
   27158           0 :      return result;
   27159             :    }
   27160             : 
   27161             : 
   27162             : /* #line 27163 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   27163             : 
   27164             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27165             : 
   27166           0 : SgNode* SgPartialFunctionType::copy ( SgCopyHelp& help) const
   27167             :    {
   27168           0 :      SgPartialFunctionType* result = NULL;
   27169             : 
   27170             :   // printf ("Copy SgPartialFunctionType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   27171             : 
   27172             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   27173             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   27174             :   // The default value of the depth is 0, so after this call the depth is 1!
   27175           0 :      help.incrementDepth();
   27176             : 
   27177             : #if 0
   27178             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   27179             :   // but it is not generally true that things can only be copied once!
   27180             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   27181             :   // AstAttribute* existingAttribute = const_cast<SgPartialFunctionType*>(this)->attribute["copied"];
   27182             :      bool previouslyCopied = const_cast<SgPartialFunctionType*>(this)->attribute.exists("copied");
   27183             :      if (previouslyCopied == true)
   27184             :         {
   27185             :           this->get_file_info()->display("Called from copy SgPartialFunctionType: debug");
   27186             :         }
   27187             :      ROSE_ASSERT(previouslyCopied == false);
   27188             : 
   27189             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   27190             :      AstAttribute* newAttribute = new AstAttribute();
   27191             :      ROSE_ASSERT(newAttribute != NULL);
   27192             : 
   27193             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   27194             :      const_cast<SgPartialFunctionType*>(this)->attribute.add("copied",newAttribute);
   27195             : #endif
   27196             : 
   27197             :   // Copy data members from base classes
   27198             :   // Copy constructor parameter data member: return_type_copy
   27199           0 :      SgType* return_type_copy; 
   27200             :   // case: not a listType for (using conditionalToCopyVariable)return_type
   27201           0 :           if (get_return_type() != NULL) 
   27202             :              { 
   27203           0 :                return_type_copy = static_cast<SgType*>(help.copyAst(get_return_type())); 
   27204             :              } 
   27205             :             else 
   27206             :              { 
   27207             :                return_type_copy = NULL; 
   27208             :              } 
   27209             :   // Copy constructor parameter data member: has_ellipses_copy
   27210             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_ellipses
   27211             :   // case: toBeCopied == COPY_DATA for has_ellipses
   27212           0 :      bool has_ellipses_copy = p_has_ellipses; 
   27213             :   // Copy constructor parameter data member: class_type_copy
   27214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_type
   27215             :   // case: toBeCopied == COPY_DATA for class_type
   27216           0 :      SgType* class_type_copy = p_class_type; 
   27217             :   // Copy constructor parameter data member: mfunc_specifier_copy
   27218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mfunc_specifier
   27219             :   // case: toBeCopied == COPY_DATA for mfunc_specifier
   27220           0 :      unsigned int mfunc_specifier_copy = p_mfunc_specifier; 
   27221             :   // Copy constructor parameter data member: ref_qualifiers_copy
   27222             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_qualifiers
   27223             :   // case: toBeCopied == COPY_DATA for ref_qualifiers
   27224           0 :      unsigned int ref_qualifiers_copy = p_ref_qualifiers; 
   27225             :  
   27226             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27227             : 
   27228             :   // Build an empty copy of this object (will be filled in, but 
   27229             :   // the parent can't be set and must be set by the caller)
   27230           0 :      result = new SgPartialFunctionType(  return_type_copy, has_ellipses_copy, class_type_copy, mfunc_specifier_copy, ref_qualifiers_copy );
   27231           0 :      ROSE_ASSERT(result != NULL);
   27232             : 
   27233             :   // Copy data members of "this" class
   27234             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   27235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   27236             :   // case: toBeCopied == COPY_DATA for isCoArray
   27237           0 :      bool isCoArray_copy = p_isCoArray; 
   27238           0 :      result->p_isCoArray = isCoArray_copy; 
   27239             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   27240             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   27241             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   27242           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   27243           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   27244             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   27245             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   27246             :   // case: toBeCopied == COPY_DATA for ref_to
   27247           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   27248           0 :      result->p_ref_to = ref_to_copy; 
   27249             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   27250             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   27251             :   // case: toBeCopied == COPY_DATA for ptr_to
   27252           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   27253           0 :      result->p_ptr_to = ptr_to_copy; 
   27254             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   27255             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   27256             :   // case: toBeCopied == COPY_DATA for modifiers
   27257           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   27258           0 :      result->p_modifiers = modifiers_copy; 
   27259             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   27260             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   27261             :   // case: toBeCopied == COPY_DATA for typedefs
   27262           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   27263           0 :      result->p_typedefs = typedefs_copy; 
   27264             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   27265             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   27266             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   27267           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   27268           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   27269             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   27270             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   27271             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   27272           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   27273           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   27274             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   27275             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   27276             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   27277           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   27278           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   27279             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   27280           0 :      SgExpression* type_kind_copy; 
   27281             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   27282           0 :           if (get_type_kind() != NULL) 
   27283             :              { 
   27284           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   27285             :              } 
   27286             :             else 
   27287             :              { 
   27288             :                type_kind_copy = NULL; 
   27289             :              } 
   27290             :   /* check for a valid pointer and delete if present */ 
   27291           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   27292           0 :      result->p_type_kind = type_kind_copy; 
   27293             :   // case: not a listType for (using conditionalToSetParent)type_kind
   27294           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   27295             :              { 
   27296           0 :                type_kind_copy->set_parent(result); 
   27297             :              } 
   27298             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   27299             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   27300             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   27301           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   27302           0 :      if ( p_attributeMechanism != NULL ) 
   27303             :         { 
   27304           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   27305             :         } 
   27306             :        else 
   27307             :         { 
   27308             :           attributeMechanism_copy = NULL; 
   27309             :         } 
   27310             :   /* check for a valid pointer and delete if present */ 
   27311           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   27312             :   /* add assignment to result here */ 
   27313           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   27314             :   // Copy non-constructor parameter data member (access function): orig_return_type_copy
   27315           0 :      SgType* orig_return_type_copy; 
   27316             :   // case: not a listType for (using conditionalToCopyVariable)orig_return_type
   27317           0 :           if (get_orig_return_type() != NULL) 
   27318             :              { 
   27319           0 :                orig_return_type_copy = static_cast<SgType*>(help.copyAst(get_orig_return_type())); 
   27320             :              } 
   27321             :             else 
   27322             :              { 
   27323             :                orig_return_type_copy = NULL; 
   27324             :              } 
   27325             :   /* check for a valid pointer and delete if present */ 
   27326           0 :      if (result->p_orig_return_type != NULL) delete result->p_orig_return_type; 
   27327           0 :      result->p_orig_return_type = orig_return_type_copy; 
   27328             :   // case: not a listType for (using conditionalToSetParent)orig_return_type
   27329           0 :           if ( (orig_return_type_copy != NULL) && (orig_return_type_copy->get_parent() == NULL) && (isSgType(orig_return_type_copy) == NULL) ) 
   27330             :              { 
   27331           0 :                orig_return_type_copy->set_parent(result); 
   27332             :              } 
   27333             :   // Copy non-constructor parameter data member (access function): argument_list_copy
   27334             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for argument_list
   27335             :   // case: toBeCopied == COPY_DATA for argument_list
   27336           0 :      SgFunctionParameterTypeList* argument_list_copy = p_argument_list; 
   27337           0 :      result->p_argument_list = argument_list_copy; 
   27338             :   // case: not a listType for (using conditionalToSetParent)return_type
   27339           0 :           if ( (return_type_copy != NULL) && (return_type_copy->get_parent() == NULL) && (isSgType(return_type_copy) == NULL) ) 
   27340             :              { 
   27341           0 :                return_type_copy->set_parent(result); 
   27342             :              } 
   27343             : 
   27344             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27345             : 
   27346             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   27347             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   27348             :   // fixupCopy(result,help);
   27349             : 
   27350             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   27351             :   // the Sg_File_Info objects that are built for the new IR nodes.
   27352           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   27353           0 :      if (locatedNode != NULL)
   27354             :         {
   27355             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   27356           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   27357           0 :           ROSE_ASSERT(start != NULL);
   27358             : #if 0
   27359             :        // Debugging information
   27360             :           if (start->get_parent() == NULL)
   27361             :              {
   27362             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27363             :              }
   27364             : #endif
   27365           0 :           start->set_parent(locatedNode);
   27366           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   27367             : 
   27368           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   27369             : 
   27370             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   27371             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   27372             :        // ROSE_ASSERT(end != NULL);
   27373           0 :           if (end == NULL)
   27374             :              {
   27375           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   27376             :              }
   27377             :             else
   27378             :              {
   27379             : #if 0
   27380             :             // Debugging information
   27381             :                if (end->get_parent() == NULL)
   27382             :                   {
   27383             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27384             :                   }
   27385             : #endif
   27386           0 :                end->set_parent(locatedNode);
   27387           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   27388             :              }
   27389             : 
   27390           0 :           SgExpression* expression = isSgExpression(result);
   27391           0 :           if (isSgExpression(this) != NULL)
   27392             :              {
   27393           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   27394             : 
   27395             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   27396           0 :                if (operatorPosition != NULL)
   27397             :                   {
   27398             : #if 0
   27399             :                  // Debugging information
   27400             :                     if (operatorPosition->get_parent() == NULL)
   27401             :                        {
   27402             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27403             :                        }
   27404             : #endif
   27405           0 :                     operatorPosition->set_parent(expression);
   27406           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   27407             :                   }
   27408             :              }
   27409             :         }
   27410             : 
   27411             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   27412           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   27413           0 :      if (initializedName != NULL)
   27414             :         {
   27415             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   27416           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   27417           0 :           ROSE_ASSERT(start != NULL);
   27418             : #if 0
   27419             :        // Debugging information
   27420             :           if (start->get_parent() == NULL)
   27421             :              {
   27422             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27423             :              }
   27424             : #endif
   27425           0 :           start->set_parent(initializedName);
   27426           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   27427             : 
   27428             : #if 0
   27429             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   27430             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   27431             : 
   27432             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   27433             :        // ROSE_ASSERT(end != NULL);
   27434             :           if (end == NULL)
   27435             :              {
   27436             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   27437             :              }
   27438             :             else
   27439             :              {
   27440             :                if (end->get_parent() == NULL)
   27441             :                   {
   27442             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27443             :                   }
   27444             :                end->set_parent(initializedName);
   27445             :                ROSE_ASSERT(end->get_parent() != NULL);
   27446             :              }
   27447             : #endif
   27448             :         }
   27449             : 
   27450             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   27451           0 :      help.insertCopiedNodePair(this,result);
   27452             : 
   27453             :   // printf ("End of copy SgPartialFunctionType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   27454             : 
   27455             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   27456             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   27457           0 :      help.decrementDepth();
   27458             : 
   27459             :   // Test if this is the root of the copy!
   27460           0 :      if (help.get_depth() == 0)
   27461             :         {
   27462             :        // This is the original calling node.
   27463             : 
   27464             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   27465             :        // printf ("Calling SgPartialFunctionType::fixupCopy() (from root of AST being copied) \n");
   27466             : #if ALT_FIXUP_COPY
   27467             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   27468           0 :           fixupCopy_scopes (result,help);
   27469           0 :           fixupCopy_symbols (result,help);
   27470           0 :           fixupCopy_references (result,help);
   27471             : #else
   27472             :           fixupCopy(result,help);
   27473             : #endif
   27474             :        // Allow this to be called recursively, so accumulate the state.
   27475             :        // Also, clear the state in the SgCopyHelp object.
   27476             :        // help.clearState();
   27477             :         }
   27478             : 
   27479           0 :      return result;
   27480             :    }
   27481             : 
   27482             : 
   27483             : /* #line 27484 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   27484             : 
   27485             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27486             : 
   27487           0 : SgNode* SgPartialFunctionModifierType::copy ( SgCopyHelp& help) const
   27488             :    {
   27489           0 :      SgPartialFunctionModifierType* result = NULL;
   27490             : 
   27491             :   // printf ("Copy SgPartialFunctionModifierType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   27492             : 
   27493             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   27494             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   27495             :   // The default value of the depth is 0, so after this call the depth is 1!
   27496           0 :      help.incrementDepth();
   27497             : 
   27498             : #if 0
   27499             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   27500             :   // but it is not generally true that things can only be copied once!
   27501             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   27502             :   // AstAttribute* existingAttribute = const_cast<SgPartialFunctionModifierType*>(this)->attribute["copied"];
   27503             :      bool previouslyCopied = const_cast<SgPartialFunctionModifierType*>(this)->attribute.exists("copied");
   27504             :      if (previouslyCopied == true)
   27505             :         {
   27506             :           this->get_file_info()->display("Called from copy SgPartialFunctionModifierType: debug");
   27507             :         }
   27508             :      ROSE_ASSERT(previouslyCopied == false);
   27509             : 
   27510             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   27511             :      AstAttribute* newAttribute = new AstAttribute();
   27512             :      ROSE_ASSERT(newAttribute != NULL);
   27513             : 
   27514             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   27515             :      const_cast<SgPartialFunctionModifierType*>(this)->attribute.add("copied",newAttribute);
   27516             : #endif
   27517             : 
   27518             :   // Copy data members from base classes
   27519             :   // Copy constructor parameter data member: return_type_copy
   27520           0 :      SgType* return_type_copy; 
   27521             :   // case: not a listType for (using conditionalToCopyVariable)return_type
   27522           0 :           if (get_return_type() != NULL) 
   27523             :              { 
   27524           0 :                return_type_copy = static_cast<SgType*>(help.copyAst(get_return_type())); 
   27525             :              } 
   27526             :             else 
   27527             :              { 
   27528             :                return_type_copy = NULL; 
   27529             :              } 
   27530             :   // Copy constructor parameter data member: has_ellipses_copy
   27531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_ellipses
   27532             :   // case: toBeCopied == COPY_DATA for has_ellipses
   27533           0 :      bool has_ellipses_copy = p_has_ellipses; 
   27534             :   // Copy constructor parameter data member: class_type_copy
   27535             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_type
   27536             :   // case: toBeCopied == COPY_DATA for class_type
   27537           0 :      SgType* class_type_copy = p_class_type; 
   27538             :   // Copy constructor parameter data member: mfunc_specifier_copy
   27539             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mfunc_specifier
   27540             :   // case: toBeCopied == COPY_DATA for mfunc_specifier
   27541           0 :      unsigned int mfunc_specifier_copy = p_mfunc_specifier; 
   27542             :   // Copy constructor parameter data member: ref_qualifiers_copy
   27543             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_qualifiers
   27544             :   // case: toBeCopied == COPY_DATA for ref_qualifiers
   27545           0 :      unsigned int ref_qualifiers_copy = p_ref_qualifiers; 
   27546             :  
   27547             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27548             : 
   27549             :   // Build an empty copy of this object (will be filled in, but 
   27550             :   // the parent can't be set and must be set by the caller)
   27551           0 :      result = new SgPartialFunctionModifierType(  return_type_copy, has_ellipses_copy, class_type_copy, mfunc_specifier_copy, ref_qualifiers_copy );
   27552           0 :      ROSE_ASSERT(result != NULL);
   27553             : 
   27554             :   // Copy data members of "this" class
   27555             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   27556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   27557             :   // case: toBeCopied == COPY_DATA for isCoArray
   27558           0 :      bool isCoArray_copy = p_isCoArray; 
   27559           0 :      result->p_isCoArray = isCoArray_copy; 
   27560             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   27561             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   27562             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   27563           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   27564           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   27565             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   27566             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   27567             :   // case: toBeCopied == COPY_DATA for ref_to
   27568           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   27569           0 :      result->p_ref_to = ref_to_copy; 
   27570             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   27571             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   27572             :   // case: toBeCopied == COPY_DATA for ptr_to
   27573           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   27574           0 :      result->p_ptr_to = ptr_to_copy; 
   27575             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   27576             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   27577             :   // case: toBeCopied == COPY_DATA for modifiers
   27578           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   27579           0 :      result->p_modifiers = modifiers_copy; 
   27580             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   27581             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   27582             :   // case: toBeCopied == COPY_DATA for typedefs
   27583           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   27584           0 :      result->p_typedefs = typedefs_copy; 
   27585             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   27586             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   27587             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   27588           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   27589           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   27590             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   27591             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   27592             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   27593           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   27594           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   27595             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   27596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   27597             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   27598           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   27599           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   27600             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   27601           0 :      SgExpression* type_kind_copy; 
   27602             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   27603           0 :           if (get_type_kind() != NULL) 
   27604             :              { 
   27605           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   27606             :              } 
   27607             :             else 
   27608             :              { 
   27609             :                type_kind_copy = NULL; 
   27610             :              } 
   27611             :   /* check for a valid pointer and delete if present */ 
   27612           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   27613           0 :      result->p_type_kind = type_kind_copy; 
   27614             :   // case: not a listType for (using conditionalToSetParent)type_kind
   27615           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   27616             :              { 
   27617           0 :                type_kind_copy->set_parent(result); 
   27618             :              } 
   27619             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   27620             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   27621             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   27622           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   27623           0 :      if ( p_attributeMechanism != NULL ) 
   27624             :         { 
   27625           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   27626             :         } 
   27627             :        else 
   27628             :         { 
   27629             :           attributeMechanism_copy = NULL; 
   27630             :         } 
   27631             :   /* check for a valid pointer and delete if present */ 
   27632           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   27633             :   /* add assignment to result here */ 
   27634           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   27635             :   // Copy non-constructor parameter data member (access function): orig_return_type_copy
   27636           0 :      SgType* orig_return_type_copy; 
   27637             :   // case: not a listType for (using conditionalToCopyVariable)orig_return_type
   27638           0 :           if (get_orig_return_type() != NULL) 
   27639             :              { 
   27640           0 :                orig_return_type_copy = static_cast<SgType*>(help.copyAst(get_orig_return_type())); 
   27641             :              } 
   27642             :             else 
   27643             :              { 
   27644             :                orig_return_type_copy = NULL; 
   27645             :              } 
   27646             :   /* check for a valid pointer and delete if present */ 
   27647           0 :      if (result->p_orig_return_type != NULL) delete result->p_orig_return_type; 
   27648           0 :      result->p_orig_return_type = orig_return_type_copy; 
   27649             :   // case: not a listType for (using conditionalToSetParent)orig_return_type
   27650           0 :           if ( (orig_return_type_copy != NULL) && (orig_return_type_copy->get_parent() == NULL) && (isSgType(orig_return_type_copy) == NULL) ) 
   27651             :              { 
   27652           0 :                orig_return_type_copy->set_parent(result); 
   27653             :              } 
   27654             :   // Copy non-constructor parameter data member (access function): argument_list_copy
   27655             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for argument_list
   27656             :   // case: toBeCopied == COPY_DATA for argument_list
   27657           0 :      SgFunctionParameterTypeList* argument_list_copy = p_argument_list; 
   27658           0 :      result->p_argument_list = argument_list_copy; 
   27659             :   // case: not a listType for (using conditionalToSetParent)return_type
   27660           0 :           if ( (return_type_copy != NULL) && (return_type_copy->get_parent() == NULL) && (isSgType(return_type_copy) == NULL) ) 
   27661             :              { 
   27662           0 :                return_type_copy->set_parent(result); 
   27663             :              } 
   27664             : 
   27665             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27666             : 
   27667             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   27668             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   27669             :   // fixupCopy(result,help);
   27670             : 
   27671             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   27672             :   // the Sg_File_Info objects that are built for the new IR nodes.
   27673           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   27674           0 :      if (locatedNode != NULL)
   27675             :         {
   27676             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   27677           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   27678           0 :           ROSE_ASSERT(start != NULL);
   27679             : #if 0
   27680             :        // Debugging information
   27681             :           if (start->get_parent() == NULL)
   27682             :              {
   27683             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27684             :              }
   27685             : #endif
   27686           0 :           start->set_parent(locatedNode);
   27687           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   27688             : 
   27689           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   27690             : 
   27691             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   27692             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   27693             :        // ROSE_ASSERT(end != NULL);
   27694           0 :           if (end == NULL)
   27695             :              {
   27696           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   27697             :              }
   27698             :             else
   27699             :              {
   27700             : #if 0
   27701             :             // Debugging information
   27702             :                if (end->get_parent() == NULL)
   27703             :                   {
   27704             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27705             :                   }
   27706             : #endif
   27707           0 :                end->set_parent(locatedNode);
   27708           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   27709             :              }
   27710             : 
   27711           0 :           SgExpression* expression = isSgExpression(result);
   27712           0 :           if (isSgExpression(this) != NULL)
   27713             :              {
   27714           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   27715             : 
   27716             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   27717           0 :                if (operatorPosition != NULL)
   27718             :                   {
   27719             : #if 0
   27720             :                  // Debugging information
   27721             :                     if (operatorPosition->get_parent() == NULL)
   27722             :                        {
   27723             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27724             :                        }
   27725             : #endif
   27726           0 :                     operatorPosition->set_parent(expression);
   27727           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   27728             :                   }
   27729             :              }
   27730             :         }
   27731             : 
   27732             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   27733           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   27734           0 :      if (initializedName != NULL)
   27735             :         {
   27736             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   27737           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   27738           0 :           ROSE_ASSERT(start != NULL);
   27739             : #if 0
   27740             :        // Debugging information
   27741             :           if (start->get_parent() == NULL)
   27742             :              {
   27743             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27744             :              }
   27745             : #endif
   27746           0 :           start->set_parent(initializedName);
   27747           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   27748             : 
   27749             : #if 0
   27750             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   27751             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   27752             : 
   27753             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   27754             :        // ROSE_ASSERT(end != NULL);
   27755             :           if (end == NULL)
   27756             :              {
   27757             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   27758             :              }
   27759             :             else
   27760             :              {
   27761             :                if (end->get_parent() == NULL)
   27762             :                   {
   27763             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   27764             :                   }
   27765             :                end->set_parent(initializedName);
   27766             :                ROSE_ASSERT(end->get_parent() != NULL);
   27767             :              }
   27768             : #endif
   27769             :         }
   27770             : 
   27771             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   27772           0 :      help.insertCopiedNodePair(this,result);
   27773             : 
   27774             :   // printf ("End of copy SgPartialFunctionModifierType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   27775             : 
   27776             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   27777             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   27778           0 :      help.decrementDepth();
   27779             : 
   27780             :   // Test if this is the root of the copy!
   27781           0 :      if (help.get_depth() == 0)
   27782             :         {
   27783             :        // This is the original calling node.
   27784             : 
   27785             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   27786             :        // printf ("Calling SgPartialFunctionModifierType::fixupCopy() (from root of AST being copied) \n");
   27787             : #if ALT_FIXUP_COPY
   27788             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   27789           0 :           fixupCopy_scopes (result,help);
   27790           0 :           fixupCopy_symbols (result,help);
   27791           0 :           fixupCopy_references (result,help);
   27792             : #else
   27793             :           fixupCopy(result,help);
   27794             : #endif
   27795             :        // Allow this to be called recursively, so accumulate the state.
   27796             :        // Also, clear the state in the SgCopyHelp object.
   27797             :        // help.clearState();
   27798             :         }
   27799             : 
   27800           0 :      return result;
   27801             :    }
   27802             : 
   27803             : 
   27804             : /* #line 27805 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   27805             : 
   27806             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27807             : 
   27808           0 : SgNode* SgArrayType::copy ( SgCopyHelp& help) const
   27809             :    {
   27810           0 :      SgArrayType* result = NULL;
   27811             : 
   27812             :   // printf ("Copy SgArrayType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   27813             : 
   27814             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   27815             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   27816             :   // The default value of the depth is 0, so after this call the depth is 1!
   27817           0 :      help.incrementDepth();
   27818             : 
   27819             : #if 0
   27820             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   27821             :   // but it is not generally true that things can only be copied once!
   27822             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   27823             :   // AstAttribute* existingAttribute = const_cast<SgArrayType*>(this)->attribute["copied"];
   27824             :      bool previouslyCopied = const_cast<SgArrayType*>(this)->attribute.exists("copied");
   27825             :      if (previouslyCopied == true)
   27826             :         {
   27827             :           this->get_file_info()->display("Called from copy SgArrayType: debug");
   27828             :         }
   27829             :      ROSE_ASSERT(previouslyCopied == false);
   27830             : 
   27831             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   27832             :      AstAttribute* newAttribute = new AstAttribute();
   27833             :      ROSE_ASSERT(newAttribute != NULL);
   27834             : 
   27835             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   27836             :      const_cast<SgArrayType*>(this)->attribute.add("copied",newAttribute);
   27837             : #endif
   27838             : 
   27839             :   // Copy data members from base classes
   27840             :   // Copy constructor parameter data member: base_type_copy
   27841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   27842             :   // case: toBeCopied == COPY_DATA for base_type
   27843           0 :      SgType* base_type_copy = p_base_type; 
   27844             :   // Copy constructor parameter data member: index_copy
   27845           0 :      SgExpression* index_copy; 
   27846             :   // case: not a listType for (using conditionalToCopyVariable)index
   27847           0 :           if (get_index() != NULL) 
   27848             :              { 
   27849           0 :                index_copy = static_cast<SgExpression*>(help.copyAst(get_index())); 
   27850             :              } 
   27851             :             else 
   27852             :              { 
   27853             :                index_copy = NULL; 
   27854             :              } 
   27855             :  
   27856             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27857             : 
   27858             :   // Build an empty copy of this object (will be filled in, but 
   27859             :   // the parent can't be set and must be set by the caller)
   27860           0 :      result = new SgArrayType(  base_type_copy, index_copy );
   27861           0 :      ROSE_ASSERT(result != NULL);
   27862             : 
   27863             :   // Copy data members of "this" class
   27864             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   27865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   27866             :   // case: toBeCopied == COPY_DATA for isCoArray
   27867           0 :      bool isCoArray_copy = p_isCoArray; 
   27868           0 :      result->p_isCoArray = isCoArray_copy; 
   27869             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   27870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   27871             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   27872           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   27873           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   27874             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   27875             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   27876             :   // case: toBeCopied == COPY_DATA for ref_to
   27877           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   27878           0 :      result->p_ref_to = ref_to_copy; 
   27879             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   27880             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   27881             :   // case: toBeCopied == COPY_DATA for ptr_to
   27882           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   27883           0 :      result->p_ptr_to = ptr_to_copy; 
   27884             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   27885             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   27886             :   // case: toBeCopied == COPY_DATA for modifiers
   27887           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   27888           0 :      result->p_modifiers = modifiers_copy; 
   27889             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   27890             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   27891             :   // case: toBeCopied == COPY_DATA for typedefs
   27892           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   27893           0 :      result->p_typedefs = typedefs_copy; 
   27894             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   27895             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   27896             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   27897           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   27898           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   27899             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   27900             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   27901             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   27902           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   27903           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   27904             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   27905             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   27906             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   27907           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   27908           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   27909             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   27910           0 :      SgExpression* type_kind_copy; 
   27911             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   27912           0 :           if (get_type_kind() != NULL) 
   27913             :              { 
   27914           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   27915             :              } 
   27916             :             else 
   27917             :              { 
   27918             :                type_kind_copy = NULL; 
   27919             :              } 
   27920             :   /* check for a valid pointer and delete if present */ 
   27921           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   27922           0 :      result->p_type_kind = type_kind_copy; 
   27923             :   // case: not a listType for (using conditionalToSetParent)type_kind
   27924           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   27925             :              { 
   27926           0 :                type_kind_copy->set_parent(result); 
   27927             :              } 
   27928             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   27929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   27930             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   27931           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   27932           0 :      if ( p_attributeMechanism != NULL ) 
   27933             :         { 
   27934           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   27935             :         } 
   27936             :        else 
   27937             :         { 
   27938             :           attributeMechanism_copy = NULL; 
   27939             :         } 
   27940             :   /* check for a valid pointer and delete if present */ 
   27941           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   27942             :   /* add assignment to result here */ 
   27943           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   27944             :   // Copy non-constructor parameter data member (access function): dim_info_copy
   27945           0 :      SgExprListExp* dim_info_copy; 
   27946             :   // case: not a listType for (using conditionalToCopyVariable)dim_info
   27947           0 :           if (get_dim_info() != NULL) 
   27948             :              { 
   27949           0 :                dim_info_copy = static_cast<SgExprListExp*>(help.copyAst(get_dim_info())); 
   27950             :              } 
   27951             :             else 
   27952             :              { 
   27953             :                dim_info_copy = NULL; 
   27954             :              } 
   27955             :   /* check for a valid pointer and delete if present */ 
   27956           0 :      if (result->p_dim_info != NULL) delete result->p_dim_info; 
   27957           0 :      result->p_dim_info = dim_info_copy; 
   27958             :   // case: not a listType for (using conditionalToSetParent)dim_info
   27959           0 :           if ( (dim_info_copy != NULL) && (dim_info_copy->get_parent() == NULL) && (isSgType(dim_info_copy) == NULL) ) 
   27960             :              { 
   27961           0 :                dim_info_copy->set_parent(result); 
   27962             :              } 
   27963             :   // Copy non-constructor parameter data member (access function): rank_copy
   27964             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rank
   27965             :   // case: toBeCopied == COPY_DATA for rank
   27966           0 :      int rank_copy = p_rank; 
   27967           0 :      result->p_rank = rank_copy; 
   27968             :   // Copy non-constructor parameter data member (access function): number_of_elements_copy
   27969             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for number_of_elements
   27970             :   // case: toBeCopied == COPY_DATA for number_of_elements
   27971           0 :      int number_of_elements_copy = p_number_of_elements; 
   27972           0 :      result->p_number_of_elements = number_of_elements_copy; 
   27973             :   // Copy non-constructor parameter data member (access function): is_variable_length_array_copy
   27974             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_variable_length_array
   27975             :   // case: toBeCopied == COPY_DATA for is_variable_length_array
   27976           0 :      bool is_variable_length_array_copy = p_is_variable_length_array; 
   27977           0 :      result->p_is_variable_length_array = is_variable_length_array_copy; 
   27978             :   // case: not a listType for (using conditionalToSetParent)index
   27979           0 :           if ( (index_copy != NULL) && (index_copy->get_parent() == NULL) && (isSgType(index_copy) == NULL) ) 
   27980             :              { 
   27981           0 :                index_copy->set_parent(result); 
   27982             :              } 
   27983             : 
   27984             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   27985             : 
   27986             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   27987             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   27988             :   // fixupCopy(result,help);
   27989             : 
   27990             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   27991             :   // the Sg_File_Info objects that are built for the new IR nodes.
   27992           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   27993           0 :      if (locatedNode != NULL)
   27994             :         {
   27995             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   27996           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   27997           0 :           ROSE_ASSERT(start != NULL);
   27998             : #if 0
   27999             :        // Debugging information
   28000             :           if (start->get_parent() == NULL)
   28001             :              {
   28002             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28003             :              }
   28004             : #endif
   28005           0 :           start->set_parent(locatedNode);
   28006           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   28007             : 
   28008           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   28009             : 
   28010             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   28011             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   28012             :        // ROSE_ASSERT(end != NULL);
   28013           0 :           if (end == NULL)
   28014             :              {
   28015           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   28016             :              }
   28017             :             else
   28018             :              {
   28019             : #if 0
   28020             :             // Debugging information
   28021             :                if (end->get_parent() == NULL)
   28022             :                   {
   28023             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28024             :                   }
   28025             : #endif
   28026           0 :                end->set_parent(locatedNode);
   28027           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   28028             :              }
   28029             : 
   28030           0 :           SgExpression* expression = isSgExpression(result);
   28031           0 :           if (isSgExpression(this) != NULL)
   28032             :              {
   28033           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   28034             : 
   28035             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   28036           0 :                if (operatorPosition != NULL)
   28037             :                   {
   28038             : #if 0
   28039             :                  // Debugging information
   28040             :                     if (operatorPosition->get_parent() == NULL)
   28041             :                        {
   28042             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28043             :                        }
   28044             : #endif
   28045           0 :                     operatorPosition->set_parent(expression);
   28046           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   28047             :                   }
   28048             :              }
   28049             :         }
   28050             : 
   28051             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   28052           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   28053           0 :      if (initializedName != NULL)
   28054             :         {
   28055             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   28056           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   28057           0 :           ROSE_ASSERT(start != NULL);
   28058             : #if 0
   28059             :        // Debugging information
   28060             :           if (start->get_parent() == NULL)
   28061             :              {
   28062             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28063             :              }
   28064             : #endif
   28065           0 :           start->set_parent(initializedName);
   28066           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   28067             : 
   28068             : #if 0
   28069             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   28070             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   28071             : 
   28072             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   28073             :        // ROSE_ASSERT(end != NULL);
   28074             :           if (end == NULL)
   28075             :              {
   28076             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   28077             :              }
   28078             :             else
   28079             :              {
   28080             :                if (end->get_parent() == NULL)
   28081             :                   {
   28082             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28083             :                   }
   28084             :                end->set_parent(initializedName);
   28085             :                ROSE_ASSERT(end->get_parent() != NULL);
   28086             :              }
   28087             : #endif
   28088             :         }
   28089             : 
   28090             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   28091           0 :      help.insertCopiedNodePair(this,result);
   28092             : 
   28093             :   // printf ("End of copy SgArrayType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   28094             : 
   28095             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   28096             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   28097           0 :      help.decrementDepth();
   28098             : 
   28099             :   // Test if this is the root of the copy!
   28100           0 :      if (help.get_depth() == 0)
   28101             :         {
   28102             :        // This is the original calling node.
   28103             : 
   28104             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   28105             :        // printf ("Calling SgArrayType::fixupCopy() (from root of AST being copied) \n");
   28106             : #if ALT_FIXUP_COPY
   28107             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   28108           0 :           fixupCopy_scopes (result,help);
   28109           0 :           fixupCopy_symbols (result,help);
   28110           0 :           fixupCopy_references (result,help);
   28111             : #else
   28112             :           fixupCopy(result,help);
   28113             : #endif
   28114             :        // Allow this to be called recursively, so accumulate the state.
   28115             :        // Also, clear the state in the SgCopyHelp object.
   28116             :        // help.clearState();
   28117             :         }
   28118             : 
   28119           0 :      return result;
   28120             :    }
   28121             : 
   28122             : 
   28123             : /* #line 28124 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   28124             : 
   28125             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   28126             : 
   28127           0 : SgNode* SgTypeEllipse::copy ( SgCopyHelp& help) const
   28128             :    {
   28129           0 :      SgTypeEllipse* result = NULL;
   28130             : 
   28131             :   // printf ("Copy SgTypeEllipse = %p = %s \n",this,SageInterface::get_name(this).c_str());
   28132             : 
   28133             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   28134             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   28135             :   // The default value of the depth is 0, so after this call the depth is 1!
   28136           0 :      help.incrementDepth();
   28137             : 
   28138             : #if 0
   28139             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   28140             :   // but it is not generally true that things can only be copied once!
   28141             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   28142             :   // AstAttribute* existingAttribute = const_cast<SgTypeEllipse*>(this)->attribute["copied"];
   28143             :      bool previouslyCopied = const_cast<SgTypeEllipse*>(this)->attribute.exists("copied");
   28144             :      if (previouslyCopied == true)
   28145             :         {
   28146             :           this->get_file_info()->display("Called from copy SgTypeEllipse: debug");
   28147             :         }
   28148             :      ROSE_ASSERT(previouslyCopied == false);
   28149             : 
   28150             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   28151             :      AstAttribute* newAttribute = new AstAttribute();
   28152             :      ROSE_ASSERT(newAttribute != NULL);
   28153             : 
   28154             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   28155             :      const_cast<SgTypeEllipse*>(this)->attribute.add("copied",newAttribute);
   28156             : #endif
   28157             : 
   28158             :   // Copy data members from base classes
   28159             :  
   28160             : 
   28161             :   // Build an empty copy of this object (will be filled in, but 
   28162             :   // the parent can't be set and must be set by the caller)
   28163           0 :      result = new SgTypeEllipse(  );
   28164           0 :      ROSE_ASSERT(result != NULL);
   28165             : 
   28166             :   // Copy data members of "this" class
   28167             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   28168             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   28169             :   // case: toBeCopied == COPY_DATA for isCoArray
   28170           0 :      bool isCoArray_copy = p_isCoArray; 
   28171           0 :      result->p_isCoArray = isCoArray_copy; 
   28172             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   28173             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   28174             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   28175           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   28176           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   28177             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   28178             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   28179             :   // case: toBeCopied == COPY_DATA for ref_to
   28180           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   28181           0 :      result->p_ref_to = ref_to_copy; 
   28182             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   28183             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   28184             :   // case: toBeCopied == COPY_DATA for ptr_to
   28185           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   28186           0 :      result->p_ptr_to = ptr_to_copy; 
   28187             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   28188             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   28189             :   // case: toBeCopied == COPY_DATA for modifiers
   28190           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   28191           0 :      result->p_modifiers = modifiers_copy; 
   28192             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   28193             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   28194             :   // case: toBeCopied == COPY_DATA for typedefs
   28195           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   28196           0 :      result->p_typedefs = typedefs_copy; 
   28197             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   28198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   28199             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   28200           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   28201           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   28202             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   28203             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   28204             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   28205           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   28206           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   28207             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   28208             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   28209             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   28210           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   28211           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   28212             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   28213           0 :      SgExpression* type_kind_copy; 
   28214             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   28215           0 :           if (get_type_kind() != NULL) 
   28216             :              { 
   28217           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   28218             :              } 
   28219             :             else 
   28220             :              { 
   28221             :                type_kind_copy = NULL; 
   28222             :              } 
   28223             :   /* check for a valid pointer and delete if present */ 
   28224           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   28225           0 :      result->p_type_kind = type_kind_copy; 
   28226             :   // case: not a listType for (using conditionalToSetParent)type_kind
   28227           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   28228             :              { 
   28229           0 :                type_kind_copy->set_parent(result); 
   28230             :              } 
   28231             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   28232             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   28233             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   28234           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   28235           0 :      if ( p_attributeMechanism != NULL ) 
   28236             :         { 
   28237           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   28238             :         } 
   28239             :        else 
   28240             :         { 
   28241             :           attributeMechanism_copy = NULL; 
   28242             :         } 
   28243             :   /* check for a valid pointer and delete if present */ 
   28244           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   28245             :   /* add assignment to result here */ 
   28246           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   28247             : 
   28248             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   28249             : 
   28250             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   28251             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   28252             :   // fixupCopy(result,help);
   28253             : 
   28254             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   28255             :   // the Sg_File_Info objects that are built for the new IR nodes.
   28256           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   28257           0 :      if (locatedNode != NULL)
   28258             :         {
   28259             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   28260           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   28261           0 :           ROSE_ASSERT(start != NULL);
   28262             : #if 0
   28263             :        // Debugging information
   28264             :           if (start->get_parent() == NULL)
   28265             :              {
   28266             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28267             :              }
   28268             : #endif
   28269           0 :           start->set_parent(locatedNode);
   28270           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   28271             : 
   28272           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   28273             : 
   28274             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   28275             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   28276             :        // ROSE_ASSERT(end != NULL);
   28277           0 :           if (end == NULL)
   28278             :              {
   28279           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   28280             :              }
   28281             :             else
   28282             :              {
   28283             : #if 0
   28284             :             // Debugging information
   28285             :                if (end->get_parent() == NULL)
   28286             :                   {
   28287             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28288             :                   }
   28289             : #endif
   28290           0 :                end->set_parent(locatedNode);
   28291           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   28292             :              }
   28293             : 
   28294           0 :           SgExpression* expression = isSgExpression(result);
   28295           0 :           if (isSgExpression(this) != NULL)
   28296             :              {
   28297           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   28298             : 
   28299             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   28300           0 :                if (operatorPosition != NULL)
   28301             :                   {
   28302             : #if 0
   28303             :                  // Debugging information
   28304             :                     if (operatorPosition->get_parent() == NULL)
   28305             :                        {
   28306             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28307             :                        }
   28308             : #endif
   28309           0 :                     operatorPosition->set_parent(expression);
   28310           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   28311             :                   }
   28312             :              }
   28313             :         }
   28314             : 
   28315             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   28316           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   28317           0 :      if (initializedName != NULL)
   28318             :         {
   28319             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   28320           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   28321           0 :           ROSE_ASSERT(start != NULL);
   28322             : #if 0
   28323             :        // Debugging information
   28324             :           if (start->get_parent() == NULL)
   28325             :              {
   28326             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28327             :              }
   28328             : #endif
   28329           0 :           start->set_parent(initializedName);
   28330           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   28331             : 
   28332             : #if 0
   28333             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   28334             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   28335             : 
   28336             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   28337             :        // ROSE_ASSERT(end != NULL);
   28338             :           if (end == NULL)
   28339             :              {
   28340             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   28341             :              }
   28342             :             else
   28343             :              {
   28344             :                if (end->get_parent() == NULL)
   28345             :                   {
   28346             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28347             :                   }
   28348             :                end->set_parent(initializedName);
   28349             :                ROSE_ASSERT(end->get_parent() != NULL);
   28350             :              }
   28351             : #endif
   28352             :         }
   28353             : 
   28354             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   28355           0 :      help.insertCopiedNodePair(this,result);
   28356             : 
   28357             :   // printf ("End of copy SgTypeEllipse = %p = %s \n",this,SageInterface::get_name(this).c_str());
   28358             : 
   28359             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   28360             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   28361           0 :      help.decrementDepth();
   28362             : 
   28363             :   // Test if this is the root of the copy!
   28364           0 :      if (help.get_depth() == 0)
   28365             :         {
   28366             :        // This is the original calling node.
   28367             : 
   28368             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   28369             :        // printf ("Calling SgTypeEllipse::fixupCopy() (from root of AST being copied) \n");
   28370             : #if ALT_FIXUP_COPY
   28371             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   28372           0 :           fixupCopy_scopes (result,help);
   28373           0 :           fixupCopy_symbols (result,help);
   28374           0 :           fixupCopy_references (result,help);
   28375             : #else
   28376             :           fixupCopy(result,help);
   28377             : #endif
   28378             :        // Allow this to be called recursively, so accumulate the state.
   28379             :        // Also, clear the state in the SgCopyHelp object.
   28380             :        // help.clearState();
   28381             :         }
   28382             : 
   28383           0 :      return result;
   28384             :    }
   28385             : 
   28386             : 
   28387             : /* #line 28388 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   28388             : 
   28389             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   28390             : 
   28391           0 : SgNode* SgTemplateType::copy ( SgCopyHelp& help) const
   28392             :    {
   28393           0 :      SgTemplateType* result = NULL;
   28394             : 
   28395             :   // printf ("Copy SgTemplateType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   28396             : 
   28397             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   28398             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   28399             :   // The default value of the depth is 0, so after this call the depth is 1!
   28400           0 :      help.incrementDepth();
   28401             : 
   28402             : #if 0
   28403             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   28404             :   // but it is not generally true that things can only be copied once!
   28405             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   28406             :   // AstAttribute* existingAttribute = const_cast<SgTemplateType*>(this)->attribute["copied"];
   28407             :      bool previouslyCopied = const_cast<SgTemplateType*>(this)->attribute.exists("copied");
   28408             :      if (previouslyCopied == true)
   28409             :         {
   28410             :           this->get_file_info()->display("Called from copy SgTemplateType: debug");
   28411             :         }
   28412             :      ROSE_ASSERT(previouslyCopied == false);
   28413             : 
   28414             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   28415             :      AstAttribute* newAttribute = new AstAttribute();
   28416             :      ROSE_ASSERT(newAttribute != NULL);
   28417             : 
   28418             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   28419             :      const_cast<SgTemplateType*>(this)->attribute.add("copied",newAttribute);
   28420             : #endif
   28421             : 
   28422             :   // Copy data members from base classes
   28423             :   // Copy constructor parameter data member: name_copy
   28424             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   28425             :   // case: toBeCopied == COPY_DATA for name
   28426           0 :      SgName name_copy = p_name; 
   28427             :  
   28428             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   28429             : 
   28430             :   // Build an empty copy of this object (will be filled in, but 
   28431             :   // the parent can't be set and must be set by the caller)
   28432           0 :      result = new SgTemplateType(  name_copy );
   28433           0 :      ROSE_ASSERT(result != NULL);
   28434             : 
   28435             :   // Copy data members of "this" class
   28436             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   28437             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   28438             :   // case: toBeCopied == COPY_DATA for isCoArray
   28439           0 :      bool isCoArray_copy = p_isCoArray; 
   28440           0 :      result->p_isCoArray = isCoArray_copy; 
   28441             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   28442             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   28443             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   28444           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   28445           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   28446             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   28447             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   28448             :   // case: toBeCopied == COPY_DATA for ref_to
   28449           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   28450           0 :      result->p_ref_to = ref_to_copy; 
   28451             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   28452             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   28453             :   // case: toBeCopied == COPY_DATA for ptr_to
   28454           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   28455           0 :      result->p_ptr_to = ptr_to_copy; 
   28456             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   28457             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   28458             :   // case: toBeCopied == COPY_DATA for modifiers
   28459           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   28460           0 :      result->p_modifiers = modifiers_copy; 
   28461             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   28462             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   28463             :   // case: toBeCopied == COPY_DATA for typedefs
   28464           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   28465           0 :      result->p_typedefs = typedefs_copy; 
   28466             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   28467             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   28468             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   28469           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   28470           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   28471             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   28472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   28473             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   28474           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   28475           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   28476             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   28477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   28478             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   28479           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   28480           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   28481             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   28482           0 :      SgExpression* type_kind_copy; 
   28483             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   28484           0 :           if (get_type_kind() != NULL) 
   28485             :              { 
   28486           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   28487             :              } 
   28488             :             else 
   28489             :              { 
   28490             :                type_kind_copy = NULL; 
   28491             :              } 
   28492             :   /* check for a valid pointer and delete if present */ 
   28493           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   28494           0 :      result->p_type_kind = type_kind_copy; 
   28495             :   // case: not a listType for (using conditionalToSetParent)type_kind
   28496           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   28497             :              { 
   28498           0 :                type_kind_copy->set_parent(result); 
   28499             :              } 
   28500             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   28501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   28502             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   28503           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   28504           0 :      if ( p_attributeMechanism != NULL ) 
   28505             :         { 
   28506           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   28507             :         } 
   28508             :        else 
   28509             :         { 
   28510             :           attributeMechanism_copy = NULL; 
   28511             :         } 
   28512             :   /* check for a valid pointer and delete if present */ 
   28513           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   28514             :   /* add assignment to result here */ 
   28515           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   28516             :   // Copy non-constructor parameter data member (access function): template_parameter_position_copy
   28517             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for template_parameter_position
   28518             :   // case: toBeCopied == COPY_DATA for template_parameter_position
   28519           0 :      int template_parameter_position_copy = p_template_parameter_position; 
   28520           0 :      result->p_template_parameter_position = template_parameter_position_copy; 
   28521             :   // Copy non-constructor parameter data member (access function): template_parameter_depth_copy
   28522             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for template_parameter_depth
   28523             :   // case: toBeCopied == COPY_DATA for template_parameter_depth
   28524           0 :      int template_parameter_depth_copy = p_template_parameter_depth; 
   28525           0 :      result->p_template_parameter_depth = template_parameter_depth_copy; 
   28526             :   // Copy non-constructor parameter data member (access function): class_type_copy
   28527           0 :      SgType * class_type_copy; 
   28528             :   // case: not a listType for (using conditionalToCopyVariable)class_type
   28529           0 :           if (get_class_type() != NULL) 
   28530             :              { 
   28531           0 :                class_type_copy = static_cast<SgType *>(help.copyAst(get_class_type())); 
   28532             :              } 
   28533             :             else 
   28534             :              { 
   28535             :                class_type_copy = NULL; 
   28536             :              } 
   28537             :   /* check for a valid pointer and delete if present */ 
   28538           0 :      if (result->p_class_type != NULL) delete result->p_class_type; 
   28539           0 :      result->p_class_type = class_type_copy; 
   28540             :   // case: not a listType for (using conditionalToSetParent)class_type
   28541           0 :           if ( (class_type_copy != NULL) && (class_type_copy->get_parent() == NULL) && (isSgType(class_type_copy) == NULL) ) 
   28542             :              { 
   28543           0 :                class_type_copy->set_parent(result); 
   28544             :              } 
   28545             :   // Copy non-constructor parameter data member (access function): parent_class_type_copy
   28546           0 :      SgType * parent_class_type_copy; 
   28547             :   // case: not a listType for (using conditionalToCopyVariable)parent_class_type
   28548           0 :           if (get_parent_class_type() != NULL) 
   28549             :              { 
   28550           0 :                parent_class_type_copy = static_cast<SgType *>(help.copyAst(get_parent_class_type())); 
   28551             :              } 
   28552             :             else 
   28553             :              { 
   28554             :                parent_class_type_copy = NULL; 
   28555             :              } 
   28556             :   /* check for a valid pointer and delete if present */ 
   28557           0 :      if (result->p_parent_class_type != NULL) delete result->p_parent_class_type; 
   28558           0 :      result->p_parent_class_type = parent_class_type_copy; 
   28559             :   // case: not a listType for (using conditionalToSetParent)parent_class_type
   28560           0 :           if ( (parent_class_type_copy != NULL) && (parent_class_type_copy->get_parent() == NULL) && (isSgType(parent_class_type_copy) == NULL) ) 
   28561             :              { 
   28562           0 :                parent_class_type_copy->set_parent(result); 
   28563             :              } 
   28564             :   // Copy non-constructor parameter data member (access function): template_parameter_copy
   28565           0 :      SgTemplateParameter * template_parameter_copy; 
   28566             :   // case: not a listType for (using conditionalToCopyVariable)template_parameter
   28567           0 :           if (get_template_parameter() != NULL) 
   28568             :              { 
   28569           0 :                template_parameter_copy = static_cast<SgTemplateParameter *>(help.copyAst(get_template_parameter())); 
   28570             :              } 
   28571             :             else 
   28572             :              { 
   28573             :                template_parameter_copy = NULL; 
   28574             :              } 
   28575             :   /* check for a valid pointer and delete if present */ 
   28576           0 :      if (result->p_template_parameter != NULL) delete result->p_template_parameter; 
   28577           0 :      result->p_template_parameter = template_parameter_copy; 
   28578             :   // case: not a listType for (using conditionalToSetParent)template_parameter
   28579           0 :           if ( (template_parameter_copy != NULL) && (template_parameter_copy->get_parent() == NULL) && (isSgType(template_parameter_copy) == NULL) ) 
   28580             :              { 
   28581           0 :                template_parameter_copy->set_parent(result); 
   28582             :              } 
   28583             :   // Copy non-constructor parameter data member (list access function): result->get_tpl_args()
   28584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for tpl_args
   28585             :   // case: toBeCopied == COPY_DATA for tpl_args
   28586           0 :      SgTemplateArgumentPtrList tpl_args_copy = p_tpl_args; 
   28587           0 :      result->p_tpl_args = tpl_args_copy; 
   28588             :   // Copy non-constructor parameter data member (list access function): result->get_part_spec_tpl_args()
   28589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for part_spec_tpl_args
   28590             :   // case: toBeCopied == COPY_DATA for part_spec_tpl_args
   28591           0 :      SgTemplateArgumentPtrList part_spec_tpl_args_copy = p_part_spec_tpl_args; 
   28592           0 :      result->p_part_spec_tpl_args = part_spec_tpl_args_copy; 
   28593             :   // Copy non-constructor parameter data member (access function): packed_copy
   28594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for packed
   28595             :   // case: toBeCopied == COPY_DATA for packed
   28596           0 :      bool packed_copy = p_packed; 
   28597           0 :      result->p_packed = packed_copy; 
   28598             : 
   28599             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   28600             : 
   28601             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   28602             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   28603             :   // fixupCopy(result,help);
   28604             : 
   28605             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   28606             :   // the Sg_File_Info objects that are built for the new IR nodes.
   28607           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   28608           0 :      if (locatedNode != NULL)
   28609             :         {
   28610             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   28611           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   28612           0 :           ROSE_ASSERT(start != NULL);
   28613             : #if 0
   28614             :        // Debugging information
   28615             :           if (start->get_parent() == NULL)
   28616             :              {
   28617             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28618             :              }
   28619             : #endif
   28620           0 :           start->set_parent(locatedNode);
   28621           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   28622             : 
   28623           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   28624             : 
   28625             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   28626             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   28627             :        // ROSE_ASSERT(end != NULL);
   28628           0 :           if (end == NULL)
   28629             :              {
   28630           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   28631             :              }
   28632             :             else
   28633             :              {
   28634             : #if 0
   28635             :             // Debugging information
   28636             :                if (end->get_parent() == NULL)
   28637             :                   {
   28638             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28639             :                   }
   28640             : #endif
   28641           0 :                end->set_parent(locatedNode);
   28642           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   28643             :              }
   28644             : 
   28645           0 :           SgExpression* expression = isSgExpression(result);
   28646           0 :           if (isSgExpression(this) != NULL)
   28647             :              {
   28648           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   28649             : 
   28650             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   28651           0 :                if (operatorPosition != NULL)
   28652             :                   {
   28653             : #if 0
   28654             :                  // Debugging information
   28655             :                     if (operatorPosition->get_parent() == NULL)
   28656             :                        {
   28657             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28658             :                        }
   28659             : #endif
   28660           0 :                     operatorPosition->set_parent(expression);
   28661           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   28662             :                   }
   28663             :              }
   28664             :         }
   28665             : 
   28666             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   28667           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   28668           0 :      if (initializedName != NULL)
   28669             :         {
   28670             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   28671           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   28672           0 :           ROSE_ASSERT(start != NULL);
   28673             : #if 0
   28674             :        // Debugging information
   28675             :           if (start->get_parent() == NULL)
   28676             :              {
   28677             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28678             :              }
   28679             : #endif
   28680           0 :           start->set_parent(initializedName);
   28681           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   28682             : 
   28683             : #if 0
   28684             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   28685             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   28686             : 
   28687             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   28688             :        // ROSE_ASSERT(end != NULL);
   28689             :           if (end == NULL)
   28690             :              {
   28691             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   28692             :              }
   28693             :             else
   28694             :              {
   28695             :                if (end->get_parent() == NULL)
   28696             :                   {
   28697             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28698             :                   }
   28699             :                end->set_parent(initializedName);
   28700             :                ROSE_ASSERT(end->get_parent() != NULL);
   28701             :              }
   28702             : #endif
   28703             :         }
   28704             : 
   28705             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   28706           0 :      help.insertCopiedNodePair(this,result);
   28707             : 
   28708             :   // printf ("End of copy SgTemplateType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   28709             : 
   28710             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   28711             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   28712           0 :      help.decrementDepth();
   28713             : 
   28714             :   // Test if this is the root of the copy!
   28715           0 :      if (help.get_depth() == 0)
   28716             :         {
   28717             :        // This is the original calling node.
   28718             : 
   28719             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   28720             :        // printf ("Calling SgTemplateType::fixupCopy() (from root of AST being copied) \n");
   28721             : #if ALT_FIXUP_COPY
   28722             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   28723           0 :           fixupCopy_scopes (result,help);
   28724           0 :           fixupCopy_symbols (result,help);
   28725           0 :           fixupCopy_references (result,help);
   28726             : #else
   28727             :           fixupCopy(result,help);
   28728             : #endif
   28729             :        // Allow this to be called recursively, so accumulate the state.
   28730             :        // Also, clear the state in the SgCopyHelp object.
   28731             :        // help.clearState();
   28732             :         }
   28733             : 
   28734           0 :      return result;
   28735             :    }
   28736             : 
   28737             : 
   28738             : /* #line 28739 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   28739             : 
   28740             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   28741             : 
   28742           0 : SgNode* SgQualifiedNameType::copy ( SgCopyHelp& help) const
   28743             :    {
   28744           0 :      SgQualifiedNameType* result = NULL;
   28745             : 
   28746             :   // printf ("Copy SgQualifiedNameType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   28747             : 
   28748             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   28749             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   28750             :   // The default value of the depth is 0, so after this call the depth is 1!
   28751           0 :      help.incrementDepth();
   28752             : 
   28753             : #if 0
   28754             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   28755             :   // but it is not generally true that things can only be copied once!
   28756             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   28757             :   // AstAttribute* existingAttribute = const_cast<SgQualifiedNameType*>(this)->attribute["copied"];
   28758             :      bool previouslyCopied = const_cast<SgQualifiedNameType*>(this)->attribute.exists("copied");
   28759             :      if (previouslyCopied == true)
   28760             :         {
   28761             :           this->get_file_info()->display("Called from copy SgQualifiedNameType: debug");
   28762             :         }
   28763             :      ROSE_ASSERT(previouslyCopied == false);
   28764             : 
   28765             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   28766             :      AstAttribute* newAttribute = new AstAttribute();
   28767             :      ROSE_ASSERT(newAttribute != NULL);
   28768             : 
   28769             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   28770             :      const_cast<SgQualifiedNameType*>(this)->attribute.add("copied",newAttribute);
   28771             : #endif
   28772             : 
   28773             :   // Copy data members from base classes
   28774             :   // Copy constructor parameter data member: base_type_copy
   28775             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   28776             :   // case: toBeCopied == COPY_DATA for base_type
   28777           0 :      SgType* base_type_copy = p_base_type; 
   28778             :  
   28779             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   28780             : 
   28781             :   // Build an empty copy of this object (will be filled in, but 
   28782             :   // the parent can't be set and must be set by the caller)
   28783           0 :      result = new SgQualifiedNameType(  base_type_copy );
   28784           0 :      ROSE_ASSERT(result != NULL);
   28785             : 
   28786             :   // Copy data members of "this" class
   28787             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   28788             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   28789             :   // case: toBeCopied == COPY_DATA for isCoArray
   28790           0 :      bool isCoArray_copy = p_isCoArray; 
   28791           0 :      result->p_isCoArray = isCoArray_copy; 
   28792             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   28793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   28794             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   28795           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   28796           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   28797             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   28798             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   28799             :   // case: toBeCopied == COPY_DATA for ref_to
   28800           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   28801           0 :      result->p_ref_to = ref_to_copy; 
   28802             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   28803             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   28804             :   // case: toBeCopied == COPY_DATA for ptr_to
   28805           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   28806           0 :      result->p_ptr_to = ptr_to_copy; 
   28807             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   28808             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   28809             :   // case: toBeCopied == COPY_DATA for modifiers
   28810           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   28811           0 :      result->p_modifiers = modifiers_copy; 
   28812             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   28813             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   28814             :   // case: toBeCopied == COPY_DATA for typedefs
   28815           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   28816           0 :      result->p_typedefs = typedefs_copy; 
   28817             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   28818             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   28819             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   28820           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   28821           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   28822             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   28823             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   28824             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   28825           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   28826           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   28827             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   28828             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   28829             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   28830           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   28831           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   28832             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   28833           0 :      SgExpression* type_kind_copy; 
   28834             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   28835           0 :           if (get_type_kind() != NULL) 
   28836             :              { 
   28837           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   28838             :              } 
   28839             :             else 
   28840             :              { 
   28841             :                type_kind_copy = NULL; 
   28842             :              } 
   28843             :   /* check for a valid pointer and delete if present */ 
   28844           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   28845           0 :      result->p_type_kind = type_kind_copy; 
   28846             :   // case: not a listType for (using conditionalToSetParent)type_kind
   28847           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   28848             :              { 
   28849           0 :                type_kind_copy->set_parent(result); 
   28850             :              } 
   28851             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   28852             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   28853             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   28854           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   28855           0 :      if ( p_attributeMechanism != NULL ) 
   28856             :         { 
   28857           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   28858             :         } 
   28859             :        else 
   28860             :         { 
   28861             :           attributeMechanism_copy = NULL; 
   28862             :         } 
   28863             :   /* check for a valid pointer and delete if present */ 
   28864           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   28865             :   /* add assignment to result here */ 
   28866           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   28867             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   28868             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   28869             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   28870           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   28871           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   28872             : 
   28873             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   28874             : 
   28875             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   28876             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   28877             :   // fixupCopy(result,help);
   28878             : 
   28879             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   28880             :   // the Sg_File_Info objects that are built for the new IR nodes.
   28881           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   28882           0 :      if (locatedNode != NULL)
   28883             :         {
   28884             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   28885           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   28886           0 :           ROSE_ASSERT(start != NULL);
   28887             : #if 0
   28888             :        // Debugging information
   28889             :           if (start->get_parent() == NULL)
   28890             :              {
   28891             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28892             :              }
   28893             : #endif
   28894           0 :           start->set_parent(locatedNode);
   28895           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   28896             : 
   28897           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   28898             : 
   28899             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   28900             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   28901             :        // ROSE_ASSERT(end != NULL);
   28902           0 :           if (end == NULL)
   28903             :              {
   28904           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   28905             :              }
   28906             :             else
   28907             :              {
   28908             : #if 0
   28909             :             // Debugging information
   28910             :                if (end->get_parent() == NULL)
   28911             :                   {
   28912             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28913             :                   }
   28914             : #endif
   28915           0 :                end->set_parent(locatedNode);
   28916           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   28917             :              }
   28918             : 
   28919           0 :           SgExpression* expression = isSgExpression(result);
   28920           0 :           if (isSgExpression(this) != NULL)
   28921             :              {
   28922           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   28923             : 
   28924             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   28925           0 :                if (operatorPosition != NULL)
   28926             :                   {
   28927             : #if 0
   28928             :                  // Debugging information
   28929             :                     if (operatorPosition->get_parent() == NULL)
   28930             :                        {
   28931             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28932             :                        }
   28933             : #endif
   28934           0 :                     operatorPosition->set_parent(expression);
   28935           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   28936             :                   }
   28937             :              }
   28938             :         }
   28939             : 
   28940             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   28941           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   28942           0 :      if (initializedName != NULL)
   28943             :         {
   28944             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   28945           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   28946           0 :           ROSE_ASSERT(start != NULL);
   28947             : #if 0
   28948             :        // Debugging information
   28949             :           if (start->get_parent() == NULL)
   28950             :              {
   28951             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28952             :              }
   28953             : #endif
   28954           0 :           start->set_parent(initializedName);
   28955           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   28956             : 
   28957             : #if 0
   28958             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   28959             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   28960             : 
   28961             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   28962             :        // ROSE_ASSERT(end != NULL);
   28963             :           if (end == NULL)
   28964             :              {
   28965             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   28966             :              }
   28967             :             else
   28968             :              {
   28969             :                if (end->get_parent() == NULL)
   28970             :                   {
   28971             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   28972             :                   }
   28973             :                end->set_parent(initializedName);
   28974             :                ROSE_ASSERT(end->get_parent() != NULL);
   28975             :              }
   28976             : #endif
   28977             :         }
   28978             : 
   28979             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   28980           0 :      help.insertCopiedNodePair(this,result);
   28981             : 
   28982             :   // printf ("End of copy SgQualifiedNameType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   28983             : 
   28984             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   28985             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   28986           0 :      help.decrementDepth();
   28987             : 
   28988             :   // Test if this is the root of the copy!
   28989           0 :      if (help.get_depth() == 0)
   28990             :         {
   28991             :        // This is the original calling node.
   28992             : 
   28993             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   28994             :        // printf ("Calling SgQualifiedNameType::fixupCopy() (from root of AST being copied) \n");
   28995             : #if ALT_FIXUP_COPY
   28996             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   28997           0 :           fixupCopy_scopes (result,help);
   28998           0 :           fixupCopy_symbols (result,help);
   28999           0 :           fixupCopy_references (result,help);
   29000             : #else
   29001             :           fixupCopy(result,help);
   29002             : #endif
   29003             :        // Allow this to be called recursively, so accumulate the state.
   29004             :        // Also, clear the state in the SgCopyHelp object.
   29005             :        // help.clearState();
   29006             :         }
   29007             : 
   29008           0 :      return result;
   29009             :    }
   29010             : 
   29011             : 
   29012             : /* #line 29013 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   29013             : 
   29014             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29015             : 
   29016           0 : SgNode* SgTypeComplex::copy ( SgCopyHelp& help) const
   29017             :    {
   29018           0 :      SgTypeComplex* result = NULL;
   29019             : 
   29020             :   // printf ("Copy SgTypeComplex = %p = %s \n",this,SageInterface::get_name(this).c_str());
   29021             : 
   29022             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   29023             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   29024             :   // The default value of the depth is 0, so after this call the depth is 1!
   29025           0 :      help.incrementDepth();
   29026             : 
   29027             : #if 0
   29028             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   29029             :   // but it is not generally true that things can only be copied once!
   29030             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   29031             :   // AstAttribute* existingAttribute = const_cast<SgTypeComplex*>(this)->attribute["copied"];
   29032             :      bool previouslyCopied = const_cast<SgTypeComplex*>(this)->attribute.exists("copied");
   29033             :      if (previouslyCopied == true)
   29034             :         {
   29035             :           this->get_file_info()->display("Called from copy SgTypeComplex: debug");
   29036             :         }
   29037             :      ROSE_ASSERT(previouslyCopied == false);
   29038             : 
   29039             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   29040             :      AstAttribute* newAttribute = new AstAttribute();
   29041             :      ROSE_ASSERT(newAttribute != NULL);
   29042             : 
   29043             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   29044             :      const_cast<SgTypeComplex*>(this)->attribute.add("copied",newAttribute);
   29045             : #endif
   29046             : 
   29047             :   // Copy data members from base classes
   29048             :   // Copy constructor parameter data member: base_type_copy
   29049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   29050             :   // case: toBeCopied == COPY_DATA for base_type
   29051           0 :      SgType* base_type_copy = p_base_type; 
   29052             :  
   29053             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29054             : 
   29055             :   // Build an empty copy of this object (will be filled in, but 
   29056             :   // the parent can't be set and must be set by the caller)
   29057           0 :      result = new SgTypeComplex(  base_type_copy );
   29058           0 :      ROSE_ASSERT(result != NULL);
   29059             : 
   29060             :   // Copy data members of "this" class
   29061             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   29062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   29063             :   // case: toBeCopied == COPY_DATA for isCoArray
   29064           0 :      bool isCoArray_copy = p_isCoArray; 
   29065           0 :      result->p_isCoArray = isCoArray_copy; 
   29066             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   29067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   29068             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   29069           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   29070           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   29071             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   29072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   29073             :   // case: toBeCopied == COPY_DATA for ref_to
   29074           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   29075           0 :      result->p_ref_to = ref_to_copy; 
   29076             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   29077             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   29078             :   // case: toBeCopied == COPY_DATA for ptr_to
   29079           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   29080           0 :      result->p_ptr_to = ptr_to_copy; 
   29081             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   29082             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   29083             :   // case: toBeCopied == COPY_DATA for modifiers
   29084           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   29085           0 :      result->p_modifiers = modifiers_copy; 
   29086             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   29087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   29088             :   // case: toBeCopied == COPY_DATA for typedefs
   29089           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   29090           0 :      result->p_typedefs = typedefs_copy; 
   29091             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   29092             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   29093             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   29094           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   29095           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   29096             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   29097             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   29098             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   29099           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   29100           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   29101             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   29102             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   29103             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   29104           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   29105           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   29106             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   29107           0 :      SgExpression* type_kind_copy; 
   29108             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   29109           0 :           if (get_type_kind() != NULL) 
   29110             :              { 
   29111           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   29112             :              } 
   29113             :             else 
   29114             :              { 
   29115             :                type_kind_copy = NULL; 
   29116             :              } 
   29117             :   /* check for a valid pointer and delete if present */ 
   29118           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   29119           0 :      result->p_type_kind = type_kind_copy; 
   29120             :   // case: not a listType for (using conditionalToSetParent)type_kind
   29121           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   29122             :              { 
   29123           0 :                type_kind_copy->set_parent(result); 
   29124             :              } 
   29125             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   29126             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   29127             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   29128           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   29129           0 :      if ( p_attributeMechanism != NULL ) 
   29130             :         { 
   29131           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   29132             :         } 
   29133             :        else 
   29134             :         { 
   29135             :           attributeMechanism_copy = NULL; 
   29136             :         } 
   29137             :   /* check for a valid pointer and delete if present */ 
   29138           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   29139             :   /* add assignment to result here */ 
   29140           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   29141             : 
   29142             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29143             : 
   29144             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   29145             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   29146             :   // fixupCopy(result,help);
   29147             : 
   29148             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   29149             :   // the Sg_File_Info objects that are built for the new IR nodes.
   29150           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   29151           0 :      if (locatedNode != NULL)
   29152             :         {
   29153             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   29154           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   29155           0 :           ROSE_ASSERT(start != NULL);
   29156             : #if 0
   29157             :        // Debugging information
   29158             :           if (start->get_parent() == NULL)
   29159             :              {
   29160             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29161             :              }
   29162             : #endif
   29163           0 :           start->set_parent(locatedNode);
   29164           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   29165             : 
   29166           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   29167             : 
   29168             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   29169             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   29170             :        // ROSE_ASSERT(end != NULL);
   29171           0 :           if (end == NULL)
   29172             :              {
   29173           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   29174             :              }
   29175             :             else
   29176             :              {
   29177             : #if 0
   29178             :             // Debugging information
   29179             :                if (end->get_parent() == NULL)
   29180             :                   {
   29181             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29182             :                   }
   29183             : #endif
   29184           0 :                end->set_parent(locatedNode);
   29185           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   29186             :              }
   29187             : 
   29188           0 :           SgExpression* expression = isSgExpression(result);
   29189           0 :           if (isSgExpression(this) != NULL)
   29190             :              {
   29191           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   29192             : 
   29193             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   29194           0 :                if (operatorPosition != NULL)
   29195             :                   {
   29196             : #if 0
   29197             :                  // Debugging information
   29198             :                     if (operatorPosition->get_parent() == NULL)
   29199             :                        {
   29200             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29201             :                        }
   29202             : #endif
   29203           0 :                     operatorPosition->set_parent(expression);
   29204           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   29205             :                   }
   29206             :              }
   29207             :         }
   29208             : 
   29209             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   29210           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   29211           0 :      if (initializedName != NULL)
   29212             :         {
   29213             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   29214           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   29215           0 :           ROSE_ASSERT(start != NULL);
   29216             : #if 0
   29217             :        // Debugging information
   29218             :           if (start->get_parent() == NULL)
   29219             :              {
   29220             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29221             :              }
   29222             : #endif
   29223           0 :           start->set_parent(initializedName);
   29224           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   29225             : 
   29226             : #if 0
   29227             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   29228             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   29229             : 
   29230             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   29231             :        // ROSE_ASSERT(end != NULL);
   29232             :           if (end == NULL)
   29233             :              {
   29234             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   29235             :              }
   29236             :             else
   29237             :              {
   29238             :                if (end->get_parent() == NULL)
   29239             :                   {
   29240             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29241             :                   }
   29242             :                end->set_parent(initializedName);
   29243             :                ROSE_ASSERT(end->get_parent() != NULL);
   29244             :              }
   29245             : #endif
   29246             :         }
   29247             : 
   29248             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   29249           0 :      help.insertCopiedNodePair(this,result);
   29250             : 
   29251             :   // printf ("End of copy SgTypeComplex = %p = %s \n",this,SageInterface::get_name(this).c_str());
   29252             : 
   29253             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   29254             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   29255           0 :      help.decrementDepth();
   29256             : 
   29257             :   // Test if this is the root of the copy!
   29258           0 :      if (help.get_depth() == 0)
   29259             :         {
   29260             :        // This is the original calling node.
   29261             : 
   29262             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   29263             :        // printf ("Calling SgTypeComplex::fixupCopy() (from root of AST being copied) \n");
   29264             : #if ALT_FIXUP_COPY
   29265             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   29266           0 :           fixupCopy_scopes (result,help);
   29267           0 :           fixupCopy_symbols (result,help);
   29268           0 :           fixupCopy_references (result,help);
   29269             : #else
   29270             :           fixupCopy(result,help);
   29271             : #endif
   29272             :        // Allow this to be called recursively, so accumulate the state.
   29273             :        // Also, clear the state in the SgCopyHelp object.
   29274             :        // help.clearState();
   29275             :         }
   29276             : 
   29277           0 :      return result;
   29278             :    }
   29279             : 
   29280             : 
   29281             : /* #line 29282 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   29282             : 
   29283             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29284             : 
   29285           0 : SgNode* SgTypeImaginary::copy ( SgCopyHelp& help) const
   29286             :    {
   29287           0 :      SgTypeImaginary* result = NULL;
   29288             : 
   29289             :   // printf ("Copy SgTypeImaginary = %p = %s \n",this,SageInterface::get_name(this).c_str());
   29290             : 
   29291             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   29292             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   29293             :   // The default value of the depth is 0, so after this call the depth is 1!
   29294           0 :      help.incrementDepth();
   29295             : 
   29296             : #if 0
   29297             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   29298             :   // but it is not generally true that things can only be copied once!
   29299             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   29300             :   // AstAttribute* existingAttribute = const_cast<SgTypeImaginary*>(this)->attribute["copied"];
   29301             :      bool previouslyCopied = const_cast<SgTypeImaginary*>(this)->attribute.exists("copied");
   29302             :      if (previouslyCopied == true)
   29303             :         {
   29304             :           this->get_file_info()->display("Called from copy SgTypeImaginary: debug");
   29305             :         }
   29306             :      ROSE_ASSERT(previouslyCopied == false);
   29307             : 
   29308             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   29309             :      AstAttribute* newAttribute = new AstAttribute();
   29310             :      ROSE_ASSERT(newAttribute != NULL);
   29311             : 
   29312             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   29313             :      const_cast<SgTypeImaginary*>(this)->attribute.add("copied",newAttribute);
   29314             : #endif
   29315             : 
   29316             :   // Copy data members from base classes
   29317             :   // Copy constructor parameter data member: base_type_copy
   29318             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   29319             :   // case: toBeCopied == COPY_DATA for base_type
   29320           0 :      SgType* base_type_copy = p_base_type; 
   29321             :  
   29322             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29323             : 
   29324             :   // Build an empty copy of this object (will be filled in, but 
   29325             :   // the parent can't be set and must be set by the caller)
   29326           0 :      result = new SgTypeImaginary(  base_type_copy );
   29327           0 :      ROSE_ASSERT(result != NULL);
   29328             : 
   29329             :   // Copy data members of "this" class
   29330             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   29331             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   29332             :   // case: toBeCopied == COPY_DATA for isCoArray
   29333           0 :      bool isCoArray_copy = p_isCoArray; 
   29334           0 :      result->p_isCoArray = isCoArray_copy; 
   29335             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   29336             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   29337             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   29338           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   29339           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   29340             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   29341             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   29342             :   // case: toBeCopied == COPY_DATA for ref_to
   29343           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   29344           0 :      result->p_ref_to = ref_to_copy; 
   29345             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   29346             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   29347             :   // case: toBeCopied == COPY_DATA for ptr_to
   29348           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   29349           0 :      result->p_ptr_to = ptr_to_copy; 
   29350             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   29351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   29352             :   // case: toBeCopied == COPY_DATA for modifiers
   29353           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   29354           0 :      result->p_modifiers = modifiers_copy; 
   29355             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   29356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   29357             :   // case: toBeCopied == COPY_DATA for typedefs
   29358           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   29359           0 :      result->p_typedefs = typedefs_copy; 
   29360             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   29361             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   29362             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   29363           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   29364           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   29365             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   29366             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   29367             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   29368           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   29369           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   29370             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   29371             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   29372             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   29373           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   29374           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   29375             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   29376           0 :      SgExpression* type_kind_copy; 
   29377             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   29378           0 :           if (get_type_kind() != NULL) 
   29379             :              { 
   29380           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   29381             :              } 
   29382             :             else 
   29383             :              { 
   29384             :                type_kind_copy = NULL; 
   29385             :              } 
   29386             :   /* check for a valid pointer and delete if present */ 
   29387           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   29388           0 :      result->p_type_kind = type_kind_copy; 
   29389             :   // case: not a listType for (using conditionalToSetParent)type_kind
   29390           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   29391             :              { 
   29392           0 :                type_kind_copy->set_parent(result); 
   29393             :              } 
   29394             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   29395             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   29396             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   29397           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   29398           0 :      if ( p_attributeMechanism != NULL ) 
   29399             :         { 
   29400           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   29401             :         } 
   29402             :        else 
   29403             :         { 
   29404             :           attributeMechanism_copy = NULL; 
   29405             :         } 
   29406             :   /* check for a valid pointer and delete if present */ 
   29407           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   29408             :   /* add assignment to result here */ 
   29409           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   29410             : 
   29411             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29412             : 
   29413             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   29414             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   29415             :   // fixupCopy(result,help);
   29416             : 
   29417             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   29418             :   // the Sg_File_Info objects that are built for the new IR nodes.
   29419           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   29420           0 :      if (locatedNode != NULL)
   29421             :         {
   29422             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   29423           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   29424           0 :           ROSE_ASSERT(start != NULL);
   29425             : #if 0
   29426             :        // Debugging information
   29427             :           if (start->get_parent() == NULL)
   29428             :              {
   29429             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29430             :              }
   29431             : #endif
   29432           0 :           start->set_parent(locatedNode);
   29433           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   29434             : 
   29435           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   29436             : 
   29437             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   29438             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   29439             :        // ROSE_ASSERT(end != NULL);
   29440           0 :           if (end == NULL)
   29441             :              {
   29442           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   29443             :              }
   29444             :             else
   29445             :              {
   29446             : #if 0
   29447             :             // Debugging information
   29448             :                if (end->get_parent() == NULL)
   29449             :                   {
   29450             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29451             :                   }
   29452             : #endif
   29453           0 :                end->set_parent(locatedNode);
   29454           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   29455             :              }
   29456             : 
   29457           0 :           SgExpression* expression = isSgExpression(result);
   29458           0 :           if (isSgExpression(this) != NULL)
   29459             :              {
   29460           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   29461             : 
   29462             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   29463           0 :                if (operatorPosition != NULL)
   29464             :                   {
   29465             : #if 0
   29466             :                  // Debugging information
   29467             :                     if (operatorPosition->get_parent() == NULL)
   29468             :                        {
   29469             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29470             :                        }
   29471             : #endif
   29472           0 :                     operatorPosition->set_parent(expression);
   29473           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   29474             :                   }
   29475             :              }
   29476             :         }
   29477             : 
   29478             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   29479           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   29480           0 :      if (initializedName != NULL)
   29481             :         {
   29482             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   29483           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   29484           0 :           ROSE_ASSERT(start != NULL);
   29485             : #if 0
   29486             :        // Debugging information
   29487             :           if (start->get_parent() == NULL)
   29488             :              {
   29489             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29490             :              }
   29491             : #endif
   29492           0 :           start->set_parent(initializedName);
   29493           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   29494             : 
   29495             : #if 0
   29496             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   29497             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   29498             : 
   29499             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   29500             :        // ROSE_ASSERT(end != NULL);
   29501             :           if (end == NULL)
   29502             :              {
   29503             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   29504             :              }
   29505             :             else
   29506             :              {
   29507             :                if (end->get_parent() == NULL)
   29508             :                   {
   29509             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29510             :                   }
   29511             :                end->set_parent(initializedName);
   29512             :                ROSE_ASSERT(end->get_parent() != NULL);
   29513             :              }
   29514             : #endif
   29515             :         }
   29516             : 
   29517             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   29518           0 :      help.insertCopiedNodePair(this,result);
   29519             : 
   29520             :   // printf ("End of copy SgTypeImaginary = %p = %s \n",this,SageInterface::get_name(this).c_str());
   29521             : 
   29522             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   29523             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   29524           0 :      help.decrementDepth();
   29525             : 
   29526             :   // Test if this is the root of the copy!
   29527           0 :      if (help.get_depth() == 0)
   29528             :         {
   29529             :        // This is the original calling node.
   29530             : 
   29531             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   29532             :        // printf ("Calling SgTypeImaginary::fixupCopy() (from root of AST being copied) \n");
   29533             : #if ALT_FIXUP_COPY
   29534             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   29535           0 :           fixupCopy_scopes (result,help);
   29536           0 :           fixupCopy_symbols (result,help);
   29537           0 :           fixupCopy_references (result,help);
   29538             : #else
   29539             :           fixupCopy(result,help);
   29540             : #endif
   29541             :        // Allow this to be called recursively, so accumulate the state.
   29542             :        // Also, clear the state in the SgCopyHelp object.
   29543             :        // help.clearState();
   29544             :         }
   29545             : 
   29546           0 :      return result;
   29547             :    }
   29548             : 
   29549             : 
   29550             : /* #line 29551 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   29551             : 
   29552             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29553             : 
   29554           0 : SgNode* SgTypeDefault::copy ( SgCopyHelp& help) const
   29555             :    {
   29556           0 :      SgTypeDefault* result = NULL;
   29557             : 
   29558             :   // printf ("Copy SgTypeDefault = %p = %s \n",this,SageInterface::get_name(this).c_str());
   29559             : 
   29560             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   29561             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   29562             :   // The default value of the depth is 0, so after this call the depth is 1!
   29563           0 :      help.incrementDepth();
   29564             : 
   29565             : #if 0
   29566             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   29567             :   // but it is not generally true that things can only be copied once!
   29568             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   29569             :   // AstAttribute* existingAttribute = const_cast<SgTypeDefault*>(this)->attribute["copied"];
   29570             :      bool previouslyCopied = const_cast<SgTypeDefault*>(this)->attribute.exists("copied");
   29571             :      if (previouslyCopied == true)
   29572             :         {
   29573             :           this->get_file_info()->display("Called from copy SgTypeDefault: debug");
   29574             :         }
   29575             :      ROSE_ASSERT(previouslyCopied == false);
   29576             : 
   29577             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   29578             :      AstAttribute* newAttribute = new AstAttribute();
   29579             :      ROSE_ASSERT(newAttribute != NULL);
   29580             : 
   29581             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   29582             :      const_cast<SgTypeDefault*>(this)->attribute.add("copied",newAttribute);
   29583             : #endif
   29584             : 
   29585             :   // Copy data members from base classes
   29586             :  
   29587             : 
   29588             :   // Build an empty copy of this object (will be filled in, but 
   29589             :   // the parent can't be set and must be set by the caller)
   29590           0 :      result = new SgTypeDefault(  );
   29591           0 :      ROSE_ASSERT(result != NULL);
   29592             : 
   29593             :   // Copy data members of "this" class
   29594             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   29595             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   29596             :   // case: toBeCopied == COPY_DATA for isCoArray
   29597           0 :      bool isCoArray_copy = p_isCoArray; 
   29598           0 :      result->p_isCoArray = isCoArray_copy; 
   29599             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   29600             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   29601             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   29602           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   29603           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   29604             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   29605             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   29606             :   // case: toBeCopied == COPY_DATA for ref_to
   29607           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   29608           0 :      result->p_ref_to = ref_to_copy; 
   29609             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   29610             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   29611             :   // case: toBeCopied == COPY_DATA for ptr_to
   29612           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   29613           0 :      result->p_ptr_to = ptr_to_copy; 
   29614             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   29615             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   29616             :   // case: toBeCopied == COPY_DATA for modifiers
   29617           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   29618           0 :      result->p_modifiers = modifiers_copy; 
   29619             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   29620             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   29621             :   // case: toBeCopied == COPY_DATA for typedefs
   29622           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   29623           0 :      result->p_typedefs = typedefs_copy; 
   29624             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   29625             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   29626             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   29627           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   29628           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   29629             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   29630             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   29631             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   29632           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   29633           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   29634             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   29635             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   29636             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   29637           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   29638           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   29639             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   29640           0 :      SgExpression* type_kind_copy; 
   29641             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   29642           0 :           if (get_type_kind() != NULL) 
   29643             :              { 
   29644           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   29645             :              } 
   29646             :             else 
   29647             :              { 
   29648             :                type_kind_copy = NULL; 
   29649             :              } 
   29650             :   /* check for a valid pointer and delete if present */ 
   29651           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   29652           0 :      result->p_type_kind = type_kind_copy; 
   29653             :   // case: not a listType for (using conditionalToSetParent)type_kind
   29654           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   29655             :              { 
   29656           0 :                type_kind_copy->set_parent(result); 
   29657             :              } 
   29658             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   29659             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   29660             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   29661           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   29662           0 :      if ( p_attributeMechanism != NULL ) 
   29663             :         { 
   29664           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   29665             :         } 
   29666             :        else 
   29667             :         { 
   29668             :           attributeMechanism_copy = NULL; 
   29669             :         } 
   29670             :   /* check for a valid pointer and delete if present */ 
   29671           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   29672             :   /* add assignment to result here */ 
   29673           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   29674             :   // Copy non-constructor parameter data member (access function): name_copy
   29675             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   29676             :   // case: toBeCopied == COPY_DATA for name
   29677           0 :      SgName name_copy = p_name; 
   29678           0 :      result->p_name = name_copy; 
   29679             : 
   29680             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29681             : 
   29682             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   29683             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   29684             :   // fixupCopy(result,help);
   29685             : 
   29686             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   29687             :   // the Sg_File_Info objects that are built for the new IR nodes.
   29688           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   29689           0 :      if (locatedNode != NULL)
   29690             :         {
   29691             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   29692           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   29693           0 :           ROSE_ASSERT(start != NULL);
   29694             : #if 0
   29695             :        // Debugging information
   29696             :           if (start->get_parent() == NULL)
   29697             :              {
   29698             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29699             :              }
   29700             : #endif
   29701           0 :           start->set_parent(locatedNode);
   29702           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   29703             : 
   29704           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   29705             : 
   29706             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   29707             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   29708             :        // ROSE_ASSERT(end != NULL);
   29709           0 :           if (end == NULL)
   29710             :              {
   29711           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   29712             :              }
   29713             :             else
   29714             :              {
   29715             : #if 0
   29716             :             // Debugging information
   29717             :                if (end->get_parent() == NULL)
   29718             :                   {
   29719             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29720             :                   }
   29721             : #endif
   29722           0 :                end->set_parent(locatedNode);
   29723           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   29724             :              }
   29725             : 
   29726           0 :           SgExpression* expression = isSgExpression(result);
   29727           0 :           if (isSgExpression(this) != NULL)
   29728             :              {
   29729           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   29730             : 
   29731             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   29732           0 :                if (operatorPosition != NULL)
   29733             :                   {
   29734             : #if 0
   29735             :                  // Debugging information
   29736             :                     if (operatorPosition->get_parent() == NULL)
   29737             :                        {
   29738             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29739             :                        }
   29740             : #endif
   29741           0 :                     operatorPosition->set_parent(expression);
   29742           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   29743             :                   }
   29744             :              }
   29745             :         }
   29746             : 
   29747             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   29748           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   29749           0 :      if (initializedName != NULL)
   29750             :         {
   29751             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   29752           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   29753           0 :           ROSE_ASSERT(start != NULL);
   29754             : #if 0
   29755             :        // Debugging information
   29756             :           if (start->get_parent() == NULL)
   29757             :              {
   29758             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29759             :              }
   29760             : #endif
   29761           0 :           start->set_parent(initializedName);
   29762           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   29763             : 
   29764             : #if 0
   29765             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   29766             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   29767             : 
   29768             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   29769             :        // ROSE_ASSERT(end != NULL);
   29770             :           if (end == NULL)
   29771             :              {
   29772             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   29773             :              }
   29774             :             else
   29775             :              {
   29776             :                if (end->get_parent() == NULL)
   29777             :                   {
   29778             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29779             :                   }
   29780             :                end->set_parent(initializedName);
   29781             :                ROSE_ASSERT(end->get_parent() != NULL);
   29782             :              }
   29783             : #endif
   29784             :         }
   29785             : 
   29786             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   29787           0 :      help.insertCopiedNodePair(this,result);
   29788             : 
   29789             :   // printf ("End of copy SgTypeDefault = %p = %s \n",this,SageInterface::get_name(this).c_str());
   29790             : 
   29791             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   29792             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   29793           0 :      help.decrementDepth();
   29794             : 
   29795             :   // Test if this is the root of the copy!
   29796           0 :      if (help.get_depth() == 0)
   29797             :         {
   29798             :        // This is the original calling node.
   29799             : 
   29800             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   29801             :        // printf ("Calling SgTypeDefault::fixupCopy() (from root of AST being copied) \n");
   29802             : #if ALT_FIXUP_COPY
   29803             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   29804           0 :           fixupCopy_scopes (result,help);
   29805           0 :           fixupCopy_symbols (result,help);
   29806           0 :           fixupCopy_references (result,help);
   29807             : #else
   29808             :           fixupCopy(result,help);
   29809             : #endif
   29810             :        // Allow this to be called recursively, so accumulate the state.
   29811             :        // Also, clear the state in the SgCopyHelp object.
   29812             :        // help.clearState();
   29813             :         }
   29814             : 
   29815           0 :      return result;
   29816             :    }
   29817             : 
   29818             : 
   29819             : /* #line 29820 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   29820             : 
   29821             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29822             : 
   29823           0 : SgNode* SgTypeCAFTeam::copy ( SgCopyHelp& help) const
   29824             :    {
   29825           0 :      SgTypeCAFTeam* result = NULL;
   29826             : 
   29827             :   // printf ("Copy SgTypeCAFTeam = %p = %s \n",this,SageInterface::get_name(this).c_str());
   29828             : 
   29829             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   29830             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   29831             :   // The default value of the depth is 0, so after this call the depth is 1!
   29832           0 :      help.incrementDepth();
   29833             : 
   29834             : #if 0
   29835             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   29836             :   // but it is not generally true that things can only be copied once!
   29837             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   29838             :   // AstAttribute* existingAttribute = const_cast<SgTypeCAFTeam*>(this)->attribute["copied"];
   29839             :      bool previouslyCopied = const_cast<SgTypeCAFTeam*>(this)->attribute.exists("copied");
   29840             :      if (previouslyCopied == true)
   29841             :         {
   29842             :           this->get_file_info()->display("Called from copy SgTypeCAFTeam: debug");
   29843             :         }
   29844             :      ROSE_ASSERT(previouslyCopied == false);
   29845             : 
   29846             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   29847             :      AstAttribute* newAttribute = new AstAttribute();
   29848             :      ROSE_ASSERT(newAttribute != NULL);
   29849             : 
   29850             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   29851             :      const_cast<SgTypeCAFTeam*>(this)->attribute.add("copied",newAttribute);
   29852             : #endif
   29853             : 
   29854             :   // Copy data members from base classes
   29855             :  
   29856             : 
   29857             :   // Build an empty copy of this object (will be filled in, but 
   29858             :   // the parent can't be set and must be set by the caller)
   29859           0 :      result = new SgTypeCAFTeam(  );
   29860           0 :      ROSE_ASSERT(result != NULL);
   29861             : 
   29862             :   // Copy data members of "this" class
   29863             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   29864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   29865             :   // case: toBeCopied == COPY_DATA for isCoArray
   29866           0 :      bool isCoArray_copy = p_isCoArray; 
   29867           0 :      result->p_isCoArray = isCoArray_copy; 
   29868             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   29869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   29870             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   29871           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   29872           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   29873             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   29874             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   29875             :   // case: toBeCopied == COPY_DATA for ref_to
   29876           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   29877           0 :      result->p_ref_to = ref_to_copy; 
   29878             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   29879             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   29880             :   // case: toBeCopied == COPY_DATA for ptr_to
   29881           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   29882           0 :      result->p_ptr_to = ptr_to_copy; 
   29883             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   29884             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   29885             :   // case: toBeCopied == COPY_DATA for modifiers
   29886           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   29887           0 :      result->p_modifiers = modifiers_copy; 
   29888             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   29889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   29890             :   // case: toBeCopied == COPY_DATA for typedefs
   29891           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   29892           0 :      result->p_typedefs = typedefs_copy; 
   29893             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   29894             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   29895             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   29896           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   29897           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   29898             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   29899             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   29900             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   29901           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   29902           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   29903             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   29904             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   29905             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   29906           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   29907           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   29908             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   29909           0 :      SgExpression* type_kind_copy; 
   29910             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   29911           0 :           if (get_type_kind() != NULL) 
   29912             :              { 
   29913           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   29914             :              } 
   29915             :             else 
   29916             :              { 
   29917             :                type_kind_copy = NULL; 
   29918             :              } 
   29919             :   /* check for a valid pointer and delete if present */ 
   29920           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   29921           0 :      result->p_type_kind = type_kind_copy; 
   29922             :   // case: not a listType for (using conditionalToSetParent)type_kind
   29923           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   29924             :              { 
   29925           0 :                type_kind_copy->set_parent(result); 
   29926             :              } 
   29927             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   29928             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   29929             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   29930           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   29931           0 :      if ( p_attributeMechanism != NULL ) 
   29932             :         { 
   29933           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   29934             :         } 
   29935             :        else 
   29936             :         { 
   29937             :           attributeMechanism_copy = NULL; 
   29938             :         } 
   29939             :   /* check for a valid pointer and delete if present */ 
   29940           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   29941             :   /* add assignment to result here */ 
   29942           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   29943             : 
   29944             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   29945             : 
   29946             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   29947             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   29948             :   // fixupCopy(result,help);
   29949             : 
   29950             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   29951             :   // the Sg_File_Info objects that are built for the new IR nodes.
   29952           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   29953           0 :      if (locatedNode != NULL)
   29954             :         {
   29955             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   29956           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   29957           0 :           ROSE_ASSERT(start != NULL);
   29958             : #if 0
   29959             :        // Debugging information
   29960             :           if (start->get_parent() == NULL)
   29961             :              {
   29962             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29963             :              }
   29964             : #endif
   29965           0 :           start->set_parent(locatedNode);
   29966           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   29967             : 
   29968           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   29969             : 
   29970             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   29971             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   29972             :        // ROSE_ASSERT(end != NULL);
   29973           0 :           if (end == NULL)
   29974             :              {
   29975           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   29976             :              }
   29977             :             else
   29978             :              {
   29979             : #if 0
   29980             :             // Debugging information
   29981             :                if (end->get_parent() == NULL)
   29982             :                   {
   29983             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   29984             :                   }
   29985             : #endif
   29986           0 :                end->set_parent(locatedNode);
   29987           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   29988             :              }
   29989             : 
   29990           0 :           SgExpression* expression = isSgExpression(result);
   29991           0 :           if (isSgExpression(this) != NULL)
   29992             :              {
   29993           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   29994             : 
   29995             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   29996           0 :                if (operatorPosition != NULL)
   29997             :                   {
   29998             : #if 0
   29999             :                  // Debugging information
   30000             :                     if (operatorPosition->get_parent() == NULL)
   30001             :                        {
   30002             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30003             :                        }
   30004             : #endif
   30005           0 :                     operatorPosition->set_parent(expression);
   30006           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   30007             :                   }
   30008             :              }
   30009             :         }
   30010             : 
   30011             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   30012           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   30013           0 :      if (initializedName != NULL)
   30014             :         {
   30015             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   30016           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   30017           0 :           ROSE_ASSERT(start != NULL);
   30018             : #if 0
   30019             :        // Debugging information
   30020             :           if (start->get_parent() == NULL)
   30021             :              {
   30022             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30023             :              }
   30024             : #endif
   30025           0 :           start->set_parent(initializedName);
   30026           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   30027             : 
   30028             : #if 0
   30029             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   30030             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   30031             : 
   30032             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   30033             :        // ROSE_ASSERT(end != NULL);
   30034             :           if (end == NULL)
   30035             :              {
   30036             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   30037             :              }
   30038             :             else
   30039             :              {
   30040             :                if (end->get_parent() == NULL)
   30041             :                   {
   30042             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30043             :                   }
   30044             :                end->set_parent(initializedName);
   30045             :                ROSE_ASSERT(end->get_parent() != NULL);
   30046             :              }
   30047             : #endif
   30048             :         }
   30049             : 
   30050             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   30051           0 :      help.insertCopiedNodePair(this,result);
   30052             : 
   30053             :   // printf ("End of copy SgTypeCAFTeam = %p = %s \n",this,SageInterface::get_name(this).c_str());
   30054             : 
   30055             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   30056             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   30057           0 :      help.decrementDepth();
   30058             : 
   30059             :   // Test if this is the root of the copy!
   30060           0 :      if (help.get_depth() == 0)
   30061             :         {
   30062             :        // This is the original calling node.
   30063             : 
   30064             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   30065             :        // printf ("Calling SgTypeCAFTeam::fixupCopy() (from root of AST being copied) \n");
   30066             : #if ALT_FIXUP_COPY
   30067             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   30068           0 :           fixupCopy_scopes (result,help);
   30069           0 :           fixupCopy_symbols (result,help);
   30070           0 :           fixupCopy_references (result,help);
   30071             : #else
   30072             :           fixupCopy(result,help);
   30073             : #endif
   30074             :        // Allow this to be called recursively, so accumulate the state.
   30075             :        // Also, clear the state in the SgCopyHelp object.
   30076             :        // help.clearState();
   30077             :         }
   30078             : 
   30079           0 :      return result;
   30080             :    }
   30081             : 
   30082             : 
   30083             : /* #line 30084 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   30084             : 
   30085             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   30086             : 
   30087           0 : SgNode* SgTypeCrayPointer::copy ( SgCopyHelp& help) const
   30088             :    {
   30089           0 :      SgTypeCrayPointer* result = NULL;
   30090             : 
   30091             :   // printf ("Copy SgTypeCrayPointer = %p = %s \n",this,SageInterface::get_name(this).c_str());
   30092             : 
   30093             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   30094             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   30095             :   // The default value of the depth is 0, so after this call the depth is 1!
   30096           0 :      help.incrementDepth();
   30097             : 
   30098             : #if 0
   30099             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   30100             :   // but it is not generally true that things can only be copied once!
   30101             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   30102             :   // AstAttribute* existingAttribute = const_cast<SgTypeCrayPointer*>(this)->attribute["copied"];
   30103             :      bool previouslyCopied = const_cast<SgTypeCrayPointer*>(this)->attribute.exists("copied");
   30104             :      if (previouslyCopied == true)
   30105             :         {
   30106             :           this->get_file_info()->display("Called from copy SgTypeCrayPointer: debug");
   30107             :         }
   30108             :      ROSE_ASSERT(previouslyCopied == false);
   30109             : 
   30110             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   30111             :      AstAttribute* newAttribute = new AstAttribute();
   30112             :      ROSE_ASSERT(newAttribute != NULL);
   30113             : 
   30114             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   30115             :      const_cast<SgTypeCrayPointer*>(this)->attribute.add("copied",newAttribute);
   30116             : #endif
   30117             : 
   30118             :   // Copy data members from base classes
   30119             :  
   30120             : 
   30121             :   // Build an empty copy of this object (will be filled in, but 
   30122             :   // the parent can't be set and must be set by the caller)
   30123           0 :      result = new SgTypeCrayPointer(  );
   30124           0 :      ROSE_ASSERT(result != NULL);
   30125             : 
   30126             :   // Copy data members of "this" class
   30127             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   30128             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   30129             :   // case: toBeCopied == COPY_DATA for isCoArray
   30130           0 :      bool isCoArray_copy = p_isCoArray; 
   30131           0 :      result->p_isCoArray = isCoArray_copy; 
   30132             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   30133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   30134             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   30135           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   30136           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   30137             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   30138             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   30139             :   // case: toBeCopied == COPY_DATA for ref_to
   30140           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   30141           0 :      result->p_ref_to = ref_to_copy; 
   30142             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   30143             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   30144             :   // case: toBeCopied == COPY_DATA for ptr_to
   30145           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   30146           0 :      result->p_ptr_to = ptr_to_copy; 
   30147             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   30148             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   30149             :   // case: toBeCopied == COPY_DATA for modifiers
   30150           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   30151           0 :      result->p_modifiers = modifiers_copy; 
   30152             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   30153             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   30154             :   // case: toBeCopied == COPY_DATA for typedefs
   30155           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   30156           0 :      result->p_typedefs = typedefs_copy; 
   30157             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   30158             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   30159             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   30160           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   30161           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   30162             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   30163             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   30164             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   30165           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   30166           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   30167             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   30168             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   30169             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   30170           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   30171           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   30172             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   30173           0 :      SgExpression* type_kind_copy; 
   30174             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   30175           0 :           if (get_type_kind() != NULL) 
   30176             :              { 
   30177           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   30178             :              } 
   30179             :             else 
   30180             :              { 
   30181             :                type_kind_copy = NULL; 
   30182             :              } 
   30183             :   /* check for a valid pointer and delete if present */ 
   30184           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   30185           0 :      result->p_type_kind = type_kind_copy; 
   30186             :   // case: not a listType for (using conditionalToSetParent)type_kind
   30187           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   30188             :              { 
   30189           0 :                type_kind_copy->set_parent(result); 
   30190             :              } 
   30191             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   30192             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   30193             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   30194           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   30195           0 :      if ( p_attributeMechanism != NULL ) 
   30196             :         { 
   30197           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   30198             :         } 
   30199             :        else 
   30200             :         { 
   30201             :           attributeMechanism_copy = NULL; 
   30202             :         } 
   30203             :   /* check for a valid pointer and delete if present */ 
   30204           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   30205             :   /* add assignment to result here */ 
   30206           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   30207             : 
   30208             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   30209             : 
   30210             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   30211             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   30212             :   // fixupCopy(result,help);
   30213             : 
   30214             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   30215             :   // the Sg_File_Info objects that are built for the new IR nodes.
   30216           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   30217           0 :      if (locatedNode != NULL)
   30218             :         {
   30219             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   30220           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   30221           0 :           ROSE_ASSERT(start != NULL);
   30222             : #if 0
   30223             :        // Debugging information
   30224             :           if (start->get_parent() == NULL)
   30225             :              {
   30226             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30227             :              }
   30228             : #endif
   30229           0 :           start->set_parent(locatedNode);
   30230           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   30231             : 
   30232           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   30233             : 
   30234             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   30235             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   30236             :        // ROSE_ASSERT(end != NULL);
   30237           0 :           if (end == NULL)
   30238             :              {
   30239           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   30240             :              }
   30241             :             else
   30242             :              {
   30243             : #if 0
   30244             :             // Debugging information
   30245             :                if (end->get_parent() == NULL)
   30246             :                   {
   30247             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30248             :                   }
   30249             : #endif
   30250           0 :                end->set_parent(locatedNode);
   30251           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   30252             :              }
   30253             : 
   30254           0 :           SgExpression* expression = isSgExpression(result);
   30255           0 :           if (isSgExpression(this) != NULL)
   30256             :              {
   30257           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   30258             : 
   30259             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   30260           0 :                if (operatorPosition != NULL)
   30261             :                   {
   30262             : #if 0
   30263             :                  // Debugging information
   30264             :                     if (operatorPosition->get_parent() == NULL)
   30265             :                        {
   30266             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30267             :                        }
   30268             : #endif
   30269           0 :                     operatorPosition->set_parent(expression);
   30270           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   30271             :                   }
   30272             :              }
   30273             :         }
   30274             : 
   30275             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   30276           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   30277           0 :      if (initializedName != NULL)
   30278             :         {
   30279             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   30280           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   30281           0 :           ROSE_ASSERT(start != NULL);
   30282             : #if 0
   30283             :        // Debugging information
   30284             :           if (start->get_parent() == NULL)
   30285             :              {
   30286             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30287             :              }
   30288             : #endif
   30289           0 :           start->set_parent(initializedName);
   30290           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   30291             : 
   30292             : #if 0
   30293             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   30294             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   30295             : 
   30296             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   30297             :        // ROSE_ASSERT(end != NULL);
   30298             :           if (end == NULL)
   30299             :              {
   30300             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   30301             :              }
   30302             :             else
   30303             :              {
   30304             :                if (end->get_parent() == NULL)
   30305             :                   {
   30306             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30307             :                   }
   30308             :                end->set_parent(initializedName);
   30309             :                ROSE_ASSERT(end->get_parent() != NULL);
   30310             :              }
   30311             : #endif
   30312             :         }
   30313             : 
   30314             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   30315           0 :      help.insertCopiedNodePair(this,result);
   30316             : 
   30317             :   // printf ("End of copy SgTypeCrayPointer = %p = %s \n",this,SageInterface::get_name(this).c_str());
   30318             : 
   30319             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   30320             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   30321           0 :      help.decrementDepth();
   30322             : 
   30323             :   // Test if this is the root of the copy!
   30324           0 :      if (help.get_depth() == 0)
   30325             :         {
   30326             :        // This is the original calling node.
   30327             : 
   30328             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   30329             :        // printf ("Calling SgTypeCrayPointer::fixupCopy() (from root of AST being copied) \n");
   30330             : #if ALT_FIXUP_COPY
   30331             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   30332           0 :           fixupCopy_scopes (result,help);
   30333           0 :           fixupCopy_symbols (result,help);
   30334           0 :           fixupCopy_references (result,help);
   30335             : #else
   30336             :           fixupCopy(result,help);
   30337             : #endif
   30338             :        // Allow this to be called recursively, so accumulate the state.
   30339             :        // Also, clear the state in the SgCopyHelp object.
   30340             :        // help.clearState();
   30341             :         }
   30342             : 
   30343           0 :      return result;
   30344             :    }
   30345             : 
   30346             : 
   30347             : /* #line 30348 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   30348             : 
   30349             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   30350             : 
   30351           0 : SgNode* SgTypeLabel::copy ( SgCopyHelp& help) const
   30352             :    {
   30353           0 :      SgTypeLabel* result = NULL;
   30354             : 
   30355             :   // printf ("Copy SgTypeLabel = %p = %s \n",this,SageInterface::get_name(this).c_str());
   30356             : 
   30357             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   30358             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   30359             :   // The default value of the depth is 0, so after this call the depth is 1!
   30360           0 :      help.incrementDepth();
   30361             : 
   30362             : #if 0
   30363             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   30364             :   // but it is not generally true that things can only be copied once!
   30365             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   30366             :   // AstAttribute* existingAttribute = const_cast<SgTypeLabel*>(this)->attribute["copied"];
   30367             :      bool previouslyCopied = const_cast<SgTypeLabel*>(this)->attribute.exists("copied");
   30368             :      if (previouslyCopied == true)
   30369             :         {
   30370             :           this->get_file_info()->display("Called from copy SgTypeLabel: debug");
   30371             :         }
   30372             :      ROSE_ASSERT(previouslyCopied == false);
   30373             : 
   30374             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   30375             :      AstAttribute* newAttribute = new AstAttribute();
   30376             :      ROSE_ASSERT(newAttribute != NULL);
   30377             : 
   30378             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   30379             :      const_cast<SgTypeLabel*>(this)->attribute.add("copied",newAttribute);
   30380             : #endif
   30381             : 
   30382             :   // Copy data members from base classes
   30383             :  
   30384             : 
   30385             :   // Build an empty copy of this object (will be filled in, but 
   30386             :   // the parent can't be set and must be set by the caller)
   30387           0 :      result = new SgTypeLabel(  );
   30388           0 :      ROSE_ASSERT(result != NULL);
   30389             : 
   30390             :   // Copy data members of "this" class
   30391             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   30392             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   30393             :   // case: toBeCopied == COPY_DATA for isCoArray
   30394           0 :      bool isCoArray_copy = p_isCoArray; 
   30395           0 :      result->p_isCoArray = isCoArray_copy; 
   30396             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   30397             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   30398             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   30399           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   30400           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   30401             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   30402             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   30403             :   // case: toBeCopied == COPY_DATA for ref_to
   30404           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   30405           0 :      result->p_ref_to = ref_to_copy; 
   30406             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   30407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   30408             :   // case: toBeCopied == COPY_DATA for ptr_to
   30409           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   30410           0 :      result->p_ptr_to = ptr_to_copy; 
   30411             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   30412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   30413             :   // case: toBeCopied == COPY_DATA for modifiers
   30414           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   30415           0 :      result->p_modifiers = modifiers_copy; 
   30416             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   30417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   30418             :   // case: toBeCopied == COPY_DATA for typedefs
   30419           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   30420           0 :      result->p_typedefs = typedefs_copy; 
   30421             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   30422             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   30423             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   30424           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   30425           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   30426             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   30427             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   30428             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   30429           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   30430           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   30431             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   30432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   30433             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   30434           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   30435           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   30436             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   30437           0 :      SgExpression* type_kind_copy; 
   30438             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   30439           0 :           if (get_type_kind() != NULL) 
   30440             :              { 
   30441           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   30442             :              } 
   30443             :             else 
   30444             :              { 
   30445             :                type_kind_copy = NULL; 
   30446             :              } 
   30447             :   /* check for a valid pointer and delete if present */ 
   30448           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   30449           0 :      result->p_type_kind = type_kind_copy; 
   30450             :   // case: not a listType for (using conditionalToSetParent)type_kind
   30451           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   30452             :              { 
   30453           0 :                type_kind_copy->set_parent(result); 
   30454             :              } 
   30455             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   30456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   30457             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   30458           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   30459           0 :      if ( p_attributeMechanism != NULL ) 
   30460             :         { 
   30461           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   30462             :         } 
   30463             :        else 
   30464             :         { 
   30465             :           attributeMechanism_copy = NULL; 
   30466             :         } 
   30467             :   /* check for a valid pointer and delete if present */ 
   30468           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   30469             :   /* add assignment to result here */ 
   30470           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   30471             :   // Copy non-constructor parameter data member (access function): name_copy
   30472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   30473             :   // case: toBeCopied == COPY_DATA for name
   30474           0 :      SgName name_copy = p_name; 
   30475           0 :      result->p_name = name_copy; 
   30476             : 
   30477             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   30478             : 
   30479             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   30480             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   30481             :   // fixupCopy(result,help);
   30482             : 
   30483             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   30484             :   // the Sg_File_Info objects that are built for the new IR nodes.
   30485           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   30486           0 :      if (locatedNode != NULL)
   30487             :         {
   30488             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   30489           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   30490           0 :           ROSE_ASSERT(start != NULL);
   30491             : #if 0
   30492             :        // Debugging information
   30493             :           if (start->get_parent() == NULL)
   30494             :              {
   30495             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30496             :              }
   30497             : #endif
   30498           0 :           start->set_parent(locatedNode);
   30499           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   30500             : 
   30501           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   30502             : 
   30503             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   30504             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   30505             :        // ROSE_ASSERT(end != NULL);
   30506           0 :           if (end == NULL)
   30507             :              {
   30508           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   30509             :              }
   30510             :             else
   30511             :              {
   30512             : #if 0
   30513             :             // Debugging information
   30514             :                if (end->get_parent() == NULL)
   30515             :                   {
   30516             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30517             :                   }
   30518             : #endif
   30519           0 :                end->set_parent(locatedNode);
   30520           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   30521             :              }
   30522             : 
   30523           0 :           SgExpression* expression = isSgExpression(result);
   30524           0 :           if (isSgExpression(this) != NULL)
   30525             :              {
   30526           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   30527             : 
   30528             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   30529           0 :                if (operatorPosition != NULL)
   30530             :                   {
   30531             : #if 0
   30532             :                  // Debugging information
   30533             :                     if (operatorPosition->get_parent() == NULL)
   30534             :                        {
   30535             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30536             :                        }
   30537             : #endif
   30538           0 :                     operatorPosition->set_parent(expression);
   30539           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   30540             :                   }
   30541             :              }
   30542             :         }
   30543             : 
   30544             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   30545           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   30546           0 :      if (initializedName != NULL)
   30547             :         {
   30548             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   30549           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   30550           0 :           ROSE_ASSERT(start != NULL);
   30551             : #if 0
   30552             :        // Debugging information
   30553             :           if (start->get_parent() == NULL)
   30554             :              {
   30555             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30556             :              }
   30557             : #endif
   30558           0 :           start->set_parent(initializedName);
   30559           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   30560             : 
   30561             : #if 0
   30562             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   30563             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   30564             : 
   30565             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   30566             :        // ROSE_ASSERT(end != NULL);
   30567             :           if (end == NULL)
   30568             :              {
   30569             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   30570             :              }
   30571             :             else
   30572             :              {
   30573             :                if (end->get_parent() == NULL)
   30574             :                   {
   30575             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30576             :                   }
   30577             :                end->set_parent(initializedName);
   30578             :                ROSE_ASSERT(end->get_parent() != NULL);
   30579             :              }
   30580             : #endif
   30581             :         }
   30582             : 
   30583             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   30584           0 :      help.insertCopiedNodePair(this,result);
   30585             : 
   30586             :   // printf ("End of copy SgTypeLabel = %p = %s \n",this,SageInterface::get_name(this).c_str());
   30587             : 
   30588             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   30589             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   30590           0 :      help.decrementDepth();
   30591             : 
   30592             :   // Test if this is the root of the copy!
   30593           0 :      if (help.get_depth() == 0)
   30594             :         {
   30595             :        // This is the original calling node.
   30596             : 
   30597             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   30598             :        // printf ("Calling SgTypeLabel::fixupCopy() (from root of AST being copied) \n");
   30599             : #if ALT_FIXUP_COPY
   30600             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   30601           0 :           fixupCopy_scopes (result,help);
   30602           0 :           fixupCopy_symbols (result,help);
   30603           0 :           fixupCopy_references (result,help);
   30604             : #else
   30605             :           fixupCopy(result,help);
   30606             : #endif
   30607             :        // Allow this to be called recursively, so accumulate the state.
   30608             :        // Also, clear the state in the SgCopyHelp object.
   30609             :        // help.clearState();
   30610             :         }
   30611             : 
   30612           0 :      return result;
   30613             :    }
   30614             : 
   30615             : 
   30616             : /* #line 30617 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   30617             : 
   30618             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   30619             : 
   30620           0 : SgNode* SgRvalueReferenceType::copy ( SgCopyHelp& help) const
   30621             :    {
   30622           0 :      SgRvalueReferenceType* result = NULL;
   30623             : 
   30624             :   // printf ("Copy SgRvalueReferenceType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   30625             : 
   30626             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   30627             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   30628             :   // The default value of the depth is 0, so after this call the depth is 1!
   30629           0 :      help.incrementDepth();
   30630             : 
   30631             : #if 0
   30632             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   30633             :   // but it is not generally true that things can only be copied once!
   30634             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   30635             :   // AstAttribute* existingAttribute = const_cast<SgRvalueReferenceType*>(this)->attribute["copied"];
   30636             :      bool previouslyCopied = const_cast<SgRvalueReferenceType*>(this)->attribute.exists("copied");
   30637             :      if (previouslyCopied == true)
   30638             :         {
   30639             :           this->get_file_info()->display("Called from copy SgRvalueReferenceType: debug");
   30640             :         }
   30641             :      ROSE_ASSERT(previouslyCopied == false);
   30642             : 
   30643             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   30644             :      AstAttribute* newAttribute = new AstAttribute();
   30645             :      ROSE_ASSERT(newAttribute != NULL);
   30646             : 
   30647             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   30648             :      const_cast<SgRvalueReferenceType*>(this)->attribute.add("copied",newAttribute);
   30649             : #endif
   30650             : 
   30651             :   // Copy data members from base classes
   30652             :   // Copy constructor parameter data member: base_type_copy
   30653             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   30654             :   // case: toBeCopied == COPY_DATA for base_type
   30655           0 :      SgType* base_type_copy = p_base_type; 
   30656             :  
   30657             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   30658             : 
   30659             :   // Build an empty copy of this object (will be filled in, but 
   30660             :   // the parent can't be set and must be set by the caller)
   30661           0 :      result = new SgRvalueReferenceType(  base_type_copy );
   30662           0 :      ROSE_ASSERT(result != NULL);
   30663             : 
   30664             :   // Copy data members of "this" class
   30665             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   30666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   30667             :   // case: toBeCopied == COPY_DATA for isCoArray
   30668           0 :      bool isCoArray_copy = p_isCoArray; 
   30669           0 :      result->p_isCoArray = isCoArray_copy; 
   30670             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   30671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   30672             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   30673           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   30674           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   30675             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   30676             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   30677             :   // case: toBeCopied == COPY_DATA for ref_to
   30678           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   30679           0 :      result->p_ref_to = ref_to_copy; 
   30680             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   30681             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   30682             :   // case: toBeCopied == COPY_DATA for ptr_to
   30683           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   30684           0 :      result->p_ptr_to = ptr_to_copy; 
   30685             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   30686             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   30687             :   // case: toBeCopied == COPY_DATA for modifiers
   30688           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   30689           0 :      result->p_modifiers = modifiers_copy; 
   30690             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   30691             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   30692             :   // case: toBeCopied == COPY_DATA for typedefs
   30693           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   30694           0 :      result->p_typedefs = typedefs_copy; 
   30695             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   30696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   30697             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   30698           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   30699           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   30700             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   30701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   30702             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   30703           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   30704           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   30705             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   30706             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   30707             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   30708           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   30709           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   30710             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   30711           0 :      SgExpression* type_kind_copy; 
   30712             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   30713           0 :           if (get_type_kind() != NULL) 
   30714             :              { 
   30715           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   30716             :              } 
   30717             :             else 
   30718             :              { 
   30719             :                type_kind_copy = NULL; 
   30720             :              } 
   30721             :   /* check for a valid pointer and delete if present */ 
   30722           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   30723           0 :      result->p_type_kind = type_kind_copy; 
   30724             :   // case: not a listType for (using conditionalToSetParent)type_kind
   30725           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   30726             :              { 
   30727           0 :                type_kind_copy->set_parent(result); 
   30728             :              } 
   30729             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   30730             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   30731             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   30732           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   30733           0 :      if ( p_attributeMechanism != NULL ) 
   30734             :         { 
   30735           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   30736             :         } 
   30737             :        else 
   30738             :         { 
   30739             :           attributeMechanism_copy = NULL; 
   30740             :         } 
   30741             :   /* check for a valid pointer and delete if present */ 
   30742           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   30743             :   /* add assignment to result here */ 
   30744           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   30745             : 
   30746             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   30747             : 
   30748             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   30749             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   30750             :   // fixupCopy(result,help);
   30751             : 
   30752             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   30753             :   // the Sg_File_Info objects that are built for the new IR nodes.
   30754           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   30755           0 :      if (locatedNode != NULL)
   30756             :         {
   30757             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   30758           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   30759           0 :           ROSE_ASSERT(start != NULL);
   30760             : #if 0
   30761             :        // Debugging information
   30762             :           if (start->get_parent() == NULL)
   30763             :              {
   30764             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30765             :              }
   30766             : #endif
   30767           0 :           start->set_parent(locatedNode);
   30768           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   30769             : 
   30770           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   30771             : 
   30772             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   30773             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   30774             :        // ROSE_ASSERT(end != NULL);
   30775           0 :           if (end == NULL)
   30776             :              {
   30777           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   30778             :              }
   30779             :             else
   30780             :              {
   30781             : #if 0
   30782             :             // Debugging information
   30783             :                if (end->get_parent() == NULL)
   30784             :                   {
   30785             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30786             :                   }
   30787             : #endif
   30788           0 :                end->set_parent(locatedNode);
   30789           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   30790             :              }
   30791             : 
   30792           0 :           SgExpression* expression = isSgExpression(result);
   30793           0 :           if (isSgExpression(this) != NULL)
   30794             :              {
   30795           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   30796             : 
   30797             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   30798           0 :                if (operatorPosition != NULL)
   30799             :                   {
   30800             : #if 0
   30801             :                  // Debugging information
   30802             :                     if (operatorPosition->get_parent() == NULL)
   30803             :                        {
   30804             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30805             :                        }
   30806             : #endif
   30807           0 :                     operatorPosition->set_parent(expression);
   30808           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   30809             :                   }
   30810             :              }
   30811             :         }
   30812             : 
   30813             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   30814           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   30815           0 :      if (initializedName != NULL)
   30816             :         {
   30817             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   30818           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   30819           0 :           ROSE_ASSERT(start != NULL);
   30820             : #if 0
   30821             :        // Debugging information
   30822             :           if (start->get_parent() == NULL)
   30823             :              {
   30824             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30825             :              }
   30826             : #endif
   30827           0 :           start->set_parent(initializedName);
   30828           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   30829             : 
   30830             : #if 0
   30831             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   30832             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   30833             : 
   30834             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   30835             :        // ROSE_ASSERT(end != NULL);
   30836             :           if (end == NULL)
   30837             :              {
   30838             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   30839             :              }
   30840             :             else
   30841             :              {
   30842             :                if (end->get_parent() == NULL)
   30843             :                   {
   30844             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   30845             :                   }
   30846             :                end->set_parent(initializedName);
   30847             :                ROSE_ASSERT(end->get_parent() != NULL);
   30848             :              }
   30849             : #endif
   30850             :         }
   30851             : 
   30852             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   30853           0 :      help.insertCopiedNodePair(this,result);
   30854             : 
   30855             :   // printf ("End of copy SgRvalueReferenceType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   30856             : 
   30857             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   30858             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   30859           0 :      help.decrementDepth();
   30860             : 
   30861             :   // Test if this is the root of the copy!
   30862           0 :      if (help.get_depth() == 0)
   30863             :         {
   30864             :        // This is the original calling node.
   30865             : 
   30866             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   30867             :        // printf ("Calling SgRvalueReferenceType::fixupCopy() (from root of AST being copied) \n");
   30868             : #if ALT_FIXUP_COPY
   30869             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   30870           0 :           fixupCopy_scopes (result,help);
   30871           0 :           fixupCopy_symbols (result,help);
   30872           0 :           fixupCopy_references (result,help);
   30873             : #else
   30874             :           fixupCopy(result,help);
   30875             : #endif
   30876             :        // Allow this to be called recursively, so accumulate the state.
   30877             :        // Also, clear the state in the SgCopyHelp object.
   30878             :        // help.clearState();
   30879             :         }
   30880             : 
   30881           0 :      return result;
   30882             :    }
   30883             : 
   30884             : 
   30885             : /* #line 30886 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   30886             : 
   30887             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   30888             : 
   30889           0 : SgNode* SgTypeNullptr::copy ( SgCopyHelp& help) const
   30890             :    {
   30891           0 :      SgTypeNullptr* result = NULL;
   30892             : 
   30893             :   // printf ("Copy SgTypeNullptr = %p = %s \n",this,SageInterface::get_name(this).c_str());
   30894             : 
   30895             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   30896             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   30897             :   // The default value of the depth is 0, so after this call the depth is 1!
   30898           0 :      help.incrementDepth();
   30899             : 
   30900             : #if 0
   30901             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   30902             :   // but it is not generally true that things can only be copied once!
   30903             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   30904             :   // AstAttribute* existingAttribute = const_cast<SgTypeNullptr*>(this)->attribute["copied"];
   30905             :      bool previouslyCopied = const_cast<SgTypeNullptr*>(this)->attribute.exists("copied");
   30906             :      if (previouslyCopied == true)
   30907             :         {
   30908             :           this->get_file_info()->display("Called from copy SgTypeNullptr: debug");
   30909             :         }
   30910             :      ROSE_ASSERT(previouslyCopied == false);
   30911             : 
   30912             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   30913             :      AstAttribute* newAttribute = new AstAttribute();
   30914             :      ROSE_ASSERT(newAttribute != NULL);
   30915             : 
   30916             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   30917             :      const_cast<SgTypeNullptr*>(this)->attribute.add("copied",newAttribute);
   30918             : #endif
   30919             : 
   30920             :   // Copy data members from base classes
   30921             :  
   30922             : 
   30923             :   // Build an empty copy of this object (will be filled in, but 
   30924             :   // the parent can't be set and must be set by the caller)
   30925           0 :      result = new SgTypeNullptr(  );
   30926           0 :      ROSE_ASSERT(result != NULL);
   30927             : 
   30928             :   // Copy data members of "this" class
   30929             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   30930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   30931             :   // case: toBeCopied == COPY_DATA for isCoArray
   30932           0 :      bool isCoArray_copy = p_isCoArray; 
   30933           0 :      result->p_isCoArray = isCoArray_copy; 
   30934             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   30935             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   30936             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   30937           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   30938           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   30939             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   30940             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   30941             :   // case: toBeCopied == COPY_DATA for ref_to
   30942           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   30943           0 :      result->p_ref_to = ref_to_copy; 
   30944             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   30945             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   30946             :   // case: toBeCopied == COPY_DATA for ptr_to
   30947           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   30948           0 :      result->p_ptr_to = ptr_to_copy; 
   30949             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   30950             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   30951             :   // case: toBeCopied == COPY_DATA for modifiers
   30952           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   30953           0 :      result->p_modifiers = modifiers_copy; 
   30954             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   30955             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   30956             :   // case: toBeCopied == COPY_DATA for typedefs
   30957           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   30958           0 :      result->p_typedefs = typedefs_copy; 
   30959             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   30960             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   30961             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   30962           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   30963           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   30964             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   30965             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   30966             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   30967           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   30968           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   30969             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   30970             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   30971             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   30972           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   30973           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   30974             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   30975           0 :      SgExpression* type_kind_copy; 
   30976             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   30977           0 :           if (get_type_kind() != NULL) 
   30978             :              { 
   30979           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   30980             :              } 
   30981             :             else 
   30982             :              { 
   30983             :                type_kind_copy = NULL; 
   30984             :              } 
   30985             :   /* check for a valid pointer and delete if present */ 
   30986           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   30987           0 :      result->p_type_kind = type_kind_copy; 
   30988             :   // case: not a listType for (using conditionalToSetParent)type_kind
   30989           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   30990             :              { 
   30991           0 :                type_kind_copy->set_parent(result); 
   30992             :              } 
   30993             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   30994             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   30995             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   30996           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   30997           0 :      if ( p_attributeMechanism != NULL ) 
   30998             :         { 
   30999           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   31000             :         } 
   31001             :        else 
   31002             :         { 
   31003             :           attributeMechanism_copy = NULL; 
   31004             :         } 
   31005             :   /* check for a valid pointer and delete if present */ 
   31006           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   31007             :   /* add assignment to result here */ 
   31008           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   31009             : 
   31010             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31011             : 
   31012             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   31013             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   31014             :   // fixupCopy(result,help);
   31015             : 
   31016             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   31017             :   // the Sg_File_Info objects that are built for the new IR nodes.
   31018           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   31019           0 :      if (locatedNode != NULL)
   31020             :         {
   31021             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   31022           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   31023           0 :           ROSE_ASSERT(start != NULL);
   31024             : #if 0
   31025             :        // Debugging information
   31026             :           if (start->get_parent() == NULL)
   31027             :              {
   31028             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31029             :              }
   31030             : #endif
   31031           0 :           start->set_parent(locatedNode);
   31032           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   31033             : 
   31034           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   31035             : 
   31036             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   31037             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   31038             :        // ROSE_ASSERT(end != NULL);
   31039           0 :           if (end == NULL)
   31040             :              {
   31041           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   31042             :              }
   31043             :             else
   31044             :              {
   31045             : #if 0
   31046             :             // Debugging information
   31047             :                if (end->get_parent() == NULL)
   31048             :                   {
   31049             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31050             :                   }
   31051             : #endif
   31052           0 :                end->set_parent(locatedNode);
   31053           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   31054             :              }
   31055             : 
   31056           0 :           SgExpression* expression = isSgExpression(result);
   31057           0 :           if (isSgExpression(this) != NULL)
   31058             :              {
   31059           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   31060             : 
   31061             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   31062           0 :                if (operatorPosition != NULL)
   31063             :                   {
   31064             : #if 0
   31065             :                  // Debugging information
   31066             :                     if (operatorPosition->get_parent() == NULL)
   31067             :                        {
   31068             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31069             :                        }
   31070             : #endif
   31071           0 :                     operatorPosition->set_parent(expression);
   31072           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   31073             :                   }
   31074             :              }
   31075             :         }
   31076             : 
   31077             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   31078           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   31079           0 :      if (initializedName != NULL)
   31080             :         {
   31081             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   31082           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   31083           0 :           ROSE_ASSERT(start != NULL);
   31084             : #if 0
   31085             :        // Debugging information
   31086             :           if (start->get_parent() == NULL)
   31087             :              {
   31088             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31089             :              }
   31090             : #endif
   31091           0 :           start->set_parent(initializedName);
   31092           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   31093             : 
   31094             : #if 0
   31095             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   31096             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   31097             : 
   31098             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   31099             :        // ROSE_ASSERT(end != NULL);
   31100             :           if (end == NULL)
   31101             :              {
   31102             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   31103             :              }
   31104             :             else
   31105             :              {
   31106             :                if (end->get_parent() == NULL)
   31107             :                   {
   31108             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31109             :                   }
   31110             :                end->set_parent(initializedName);
   31111             :                ROSE_ASSERT(end->get_parent() != NULL);
   31112             :              }
   31113             : #endif
   31114             :         }
   31115             : 
   31116             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   31117           0 :      help.insertCopiedNodePair(this,result);
   31118             : 
   31119             :   // printf ("End of copy SgTypeNullptr = %p = %s \n",this,SageInterface::get_name(this).c_str());
   31120             : 
   31121             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   31122             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   31123           0 :      help.decrementDepth();
   31124             : 
   31125             :   // Test if this is the root of the copy!
   31126           0 :      if (help.get_depth() == 0)
   31127             :         {
   31128             :        // This is the original calling node.
   31129             : 
   31130             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   31131             :        // printf ("Calling SgTypeNullptr::fixupCopy() (from root of AST being copied) \n");
   31132             : #if ALT_FIXUP_COPY
   31133             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   31134           0 :           fixupCopy_scopes (result,help);
   31135           0 :           fixupCopy_symbols (result,help);
   31136           0 :           fixupCopy_references (result,help);
   31137             : #else
   31138             :           fixupCopy(result,help);
   31139             : #endif
   31140             :        // Allow this to be called recursively, so accumulate the state.
   31141             :        // Also, clear the state in the SgCopyHelp object.
   31142             :        // help.clearState();
   31143             :         }
   31144             : 
   31145           0 :      return result;
   31146             :    }
   31147             : 
   31148             : 
   31149             : /* #line 31150 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   31150             : 
   31151             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31152             : 
   31153           0 : SgNode* SgDeclType::copy ( SgCopyHelp& help) const
   31154             :    {
   31155           0 :      SgDeclType* result = NULL;
   31156             : 
   31157             :   // printf ("Copy SgDeclType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   31158             : 
   31159             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   31160             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   31161             :   // The default value of the depth is 0, so after this call the depth is 1!
   31162           0 :      help.incrementDepth();
   31163             : 
   31164             : #if 0
   31165             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   31166             :   // but it is not generally true that things can only be copied once!
   31167             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   31168             :   // AstAttribute* existingAttribute = const_cast<SgDeclType*>(this)->attribute["copied"];
   31169             :      bool previouslyCopied = const_cast<SgDeclType*>(this)->attribute.exists("copied");
   31170             :      if (previouslyCopied == true)
   31171             :         {
   31172             :           this->get_file_info()->display("Called from copy SgDeclType: debug");
   31173             :         }
   31174             :      ROSE_ASSERT(previouslyCopied == false);
   31175             : 
   31176             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   31177             :      AstAttribute* newAttribute = new AstAttribute();
   31178             :      ROSE_ASSERT(newAttribute != NULL);
   31179             : 
   31180             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   31181             :      const_cast<SgDeclType*>(this)->attribute.add("copied",newAttribute);
   31182             : #endif
   31183             : 
   31184             :   // Copy data members from base classes
   31185             :   // Copy constructor parameter data member: base_expression_copy
   31186             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_expression
   31187             :   // case: toBeCopied == COPY_DATA for base_expression
   31188           0 :      SgExpression* base_expression_copy = p_base_expression; 
   31189             :   // Copy constructor parameter data member: base_type_copy
   31190             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   31191             :   // case: toBeCopied == COPY_DATA for base_type
   31192           0 :      SgType* base_type_copy = p_base_type; 
   31193             :  
   31194             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31195             : 
   31196             :   // Build an empty copy of this object (will be filled in, but 
   31197             :   // the parent can't be set and must be set by the caller)
   31198           0 :      result = new SgDeclType(  base_expression_copy, base_type_copy );
   31199           0 :      ROSE_ASSERT(result != NULL);
   31200             : 
   31201             :   // Copy data members of "this" class
   31202             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   31203             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   31204             :   // case: toBeCopied == COPY_DATA for isCoArray
   31205           0 :      bool isCoArray_copy = p_isCoArray; 
   31206           0 :      result->p_isCoArray = isCoArray_copy; 
   31207             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   31208             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   31209             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   31210           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   31211           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   31212             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   31213             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   31214             :   // case: toBeCopied == COPY_DATA for ref_to
   31215           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   31216           0 :      result->p_ref_to = ref_to_copy; 
   31217             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   31218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   31219             :   // case: toBeCopied == COPY_DATA for ptr_to
   31220           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   31221           0 :      result->p_ptr_to = ptr_to_copy; 
   31222             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   31223             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   31224             :   // case: toBeCopied == COPY_DATA for modifiers
   31225           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   31226           0 :      result->p_modifiers = modifiers_copy; 
   31227             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   31228             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   31229             :   // case: toBeCopied == COPY_DATA for typedefs
   31230           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   31231           0 :      result->p_typedefs = typedefs_copy; 
   31232             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   31233             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   31234             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   31235           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   31236           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   31237             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   31238             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   31239             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   31240           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   31241           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   31242             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   31243             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   31244             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   31245           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   31246           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   31247             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   31248           0 :      SgExpression* type_kind_copy; 
   31249             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   31250           0 :           if (get_type_kind() != NULL) 
   31251             :              { 
   31252           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   31253             :              } 
   31254             :             else 
   31255             :              { 
   31256             :                type_kind_copy = NULL; 
   31257             :              } 
   31258             :   /* check for a valid pointer and delete if present */ 
   31259           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   31260           0 :      result->p_type_kind = type_kind_copy; 
   31261             :   // case: not a listType for (using conditionalToSetParent)type_kind
   31262           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   31263             :              { 
   31264           0 :                type_kind_copy->set_parent(result); 
   31265             :              } 
   31266             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   31267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   31268             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   31269           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   31270           0 :      if ( p_attributeMechanism != NULL ) 
   31271             :         { 
   31272           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   31273             :         } 
   31274             :        else 
   31275             :         { 
   31276             :           attributeMechanism_copy = NULL; 
   31277             :         } 
   31278             :   /* check for a valid pointer and delete if present */ 
   31279           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   31280             :   /* add assignment to result here */ 
   31281           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   31282             : 
   31283             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31284             : 
   31285             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   31286             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   31287             :   // fixupCopy(result,help);
   31288             : 
   31289             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   31290             :   // the Sg_File_Info objects that are built for the new IR nodes.
   31291           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   31292           0 :      if (locatedNode != NULL)
   31293             :         {
   31294             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   31295           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   31296           0 :           ROSE_ASSERT(start != NULL);
   31297             : #if 0
   31298             :        // Debugging information
   31299             :           if (start->get_parent() == NULL)
   31300             :              {
   31301             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31302             :              }
   31303             : #endif
   31304           0 :           start->set_parent(locatedNode);
   31305           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   31306             : 
   31307           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   31308             : 
   31309             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   31310             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   31311             :        // ROSE_ASSERT(end != NULL);
   31312           0 :           if (end == NULL)
   31313             :              {
   31314           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   31315             :              }
   31316             :             else
   31317             :              {
   31318             : #if 0
   31319             :             // Debugging information
   31320             :                if (end->get_parent() == NULL)
   31321             :                   {
   31322             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31323             :                   }
   31324             : #endif
   31325           0 :                end->set_parent(locatedNode);
   31326           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   31327             :              }
   31328             : 
   31329           0 :           SgExpression* expression = isSgExpression(result);
   31330           0 :           if (isSgExpression(this) != NULL)
   31331             :              {
   31332           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   31333             : 
   31334             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   31335           0 :                if (operatorPosition != NULL)
   31336             :                   {
   31337             : #if 0
   31338             :                  // Debugging information
   31339             :                     if (operatorPosition->get_parent() == NULL)
   31340             :                        {
   31341             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31342             :                        }
   31343             : #endif
   31344           0 :                     operatorPosition->set_parent(expression);
   31345           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   31346             :                   }
   31347             :              }
   31348             :         }
   31349             : 
   31350             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   31351           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   31352           0 :      if (initializedName != NULL)
   31353             :         {
   31354             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   31355           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   31356           0 :           ROSE_ASSERT(start != NULL);
   31357             : #if 0
   31358             :        // Debugging information
   31359             :           if (start->get_parent() == NULL)
   31360             :              {
   31361             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31362             :              }
   31363             : #endif
   31364           0 :           start->set_parent(initializedName);
   31365           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   31366             : 
   31367             : #if 0
   31368             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   31369             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   31370             : 
   31371             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   31372             :        // ROSE_ASSERT(end != NULL);
   31373             :           if (end == NULL)
   31374             :              {
   31375             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   31376             :              }
   31377             :             else
   31378             :              {
   31379             :                if (end->get_parent() == NULL)
   31380             :                   {
   31381             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31382             :                   }
   31383             :                end->set_parent(initializedName);
   31384             :                ROSE_ASSERT(end->get_parent() != NULL);
   31385             :              }
   31386             : #endif
   31387             :         }
   31388             : 
   31389             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   31390           0 :      help.insertCopiedNodePair(this,result);
   31391             : 
   31392             :   // printf ("End of copy SgDeclType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   31393             : 
   31394             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   31395             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   31396           0 :      help.decrementDepth();
   31397             : 
   31398             :   // Test if this is the root of the copy!
   31399           0 :      if (help.get_depth() == 0)
   31400             :         {
   31401             :        // This is the original calling node.
   31402             : 
   31403             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   31404             :        // printf ("Calling SgDeclType::fixupCopy() (from root of AST being copied) \n");
   31405             : #if ALT_FIXUP_COPY
   31406             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   31407           0 :           fixupCopy_scopes (result,help);
   31408           0 :           fixupCopy_symbols (result,help);
   31409           0 :           fixupCopy_references (result,help);
   31410             : #else
   31411             :           fixupCopy(result,help);
   31412             : #endif
   31413             :        // Allow this to be called recursively, so accumulate the state.
   31414             :        // Also, clear the state in the SgCopyHelp object.
   31415             :        // help.clearState();
   31416             :         }
   31417             : 
   31418           0 :      return result;
   31419             :    }
   31420             : 
   31421             : 
   31422             : /* #line 31423 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   31423             : 
   31424             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31425             : 
   31426           0 : SgNode* SgTypeOfType::copy ( SgCopyHelp& help) const
   31427             :    {
   31428           0 :      SgTypeOfType* result = NULL;
   31429             : 
   31430             :   // printf ("Copy SgTypeOfType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   31431             : 
   31432             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   31433             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   31434             :   // The default value of the depth is 0, so after this call the depth is 1!
   31435           0 :      help.incrementDepth();
   31436             : 
   31437             : #if 0
   31438             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   31439             :   // but it is not generally true that things can only be copied once!
   31440             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   31441             :   // AstAttribute* existingAttribute = const_cast<SgTypeOfType*>(this)->attribute["copied"];
   31442             :      bool previouslyCopied = const_cast<SgTypeOfType*>(this)->attribute.exists("copied");
   31443             :      if (previouslyCopied == true)
   31444             :         {
   31445             :           this->get_file_info()->display("Called from copy SgTypeOfType: debug");
   31446             :         }
   31447             :      ROSE_ASSERT(previouslyCopied == false);
   31448             : 
   31449             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   31450             :      AstAttribute* newAttribute = new AstAttribute();
   31451             :      ROSE_ASSERT(newAttribute != NULL);
   31452             : 
   31453             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   31454             :      const_cast<SgTypeOfType*>(this)->attribute.add("copied",newAttribute);
   31455             : #endif
   31456             : 
   31457             :   // Copy data members from base classes
   31458             :   // Copy constructor parameter data member: base_expression_copy
   31459             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_expression
   31460             :   // case: toBeCopied == COPY_DATA for base_expression
   31461           0 :      SgExpression* base_expression_copy = p_base_expression; 
   31462             :   // Copy constructor parameter data member: base_type_copy
   31463             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   31464             :   // case: toBeCopied == COPY_DATA for base_type
   31465           0 :      SgType* base_type_copy = p_base_type; 
   31466             :  
   31467             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31468             : 
   31469             :   // Build an empty copy of this object (will be filled in, but 
   31470             :   // the parent can't be set and must be set by the caller)
   31471           0 :      result = new SgTypeOfType(  base_expression_copy, base_type_copy );
   31472           0 :      ROSE_ASSERT(result != NULL);
   31473             : 
   31474             :   // Copy data members of "this" class
   31475             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   31476             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   31477             :   // case: toBeCopied == COPY_DATA for isCoArray
   31478           0 :      bool isCoArray_copy = p_isCoArray; 
   31479           0 :      result->p_isCoArray = isCoArray_copy; 
   31480             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   31481             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   31482             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   31483           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   31484           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   31485             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   31486             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   31487             :   // case: toBeCopied == COPY_DATA for ref_to
   31488           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   31489           0 :      result->p_ref_to = ref_to_copy; 
   31490             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   31491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   31492             :   // case: toBeCopied == COPY_DATA for ptr_to
   31493           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   31494           0 :      result->p_ptr_to = ptr_to_copy; 
   31495             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   31496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   31497             :   // case: toBeCopied == COPY_DATA for modifiers
   31498           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   31499           0 :      result->p_modifiers = modifiers_copy; 
   31500             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   31501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   31502             :   // case: toBeCopied == COPY_DATA for typedefs
   31503           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   31504           0 :      result->p_typedefs = typedefs_copy; 
   31505             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   31506             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   31507             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   31508           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   31509           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   31510             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   31511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   31512             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   31513           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   31514           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   31515             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   31516             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   31517             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   31518           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   31519           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   31520             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   31521           0 :      SgExpression* type_kind_copy; 
   31522             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   31523           0 :           if (get_type_kind() != NULL) 
   31524             :              { 
   31525           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   31526             :              } 
   31527             :             else 
   31528             :              { 
   31529             :                type_kind_copy = NULL; 
   31530             :              } 
   31531             :   /* check for a valid pointer and delete if present */ 
   31532           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   31533           0 :      result->p_type_kind = type_kind_copy; 
   31534             :   // case: not a listType for (using conditionalToSetParent)type_kind
   31535           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   31536             :              { 
   31537           0 :                type_kind_copy->set_parent(result); 
   31538             :              } 
   31539             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   31540             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   31541             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   31542           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   31543           0 :      if ( p_attributeMechanism != NULL ) 
   31544             :         { 
   31545           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   31546             :         } 
   31547             :        else 
   31548             :         { 
   31549             :           attributeMechanism_copy = NULL; 
   31550             :         } 
   31551             :   /* check for a valid pointer and delete if present */ 
   31552           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   31553             :   /* add assignment to result here */ 
   31554           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   31555             : 
   31556             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31557             : 
   31558             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   31559             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   31560             :   // fixupCopy(result,help);
   31561             : 
   31562             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   31563             :   // the Sg_File_Info objects that are built for the new IR nodes.
   31564           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   31565           0 :      if (locatedNode != NULL)
   31566             :         {
   31567             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   31568           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   31569           0 :           ROSE_ASSERT(start != NULL);
   31570             : #if 0
   31571             :        // Debugging information
   31572             :           if (start->get_parent() == NULL)
   31573             :              {
   31574             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31575             :              }
   31576             : #endif
   31577           0 :           start->set_parent(locatedNode);
   31578           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   31579             : 
   31580           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   31581             : 
   31582             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   31583             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   31584             :        // ROSE_ASSERT(end != NULL);
   31585           0 :           if (end == NULL)
   31586             :              {
   31587           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   31588             :              }
   31589             :             else
   31590             :              {
   31591             : #if 0
   31592             :             // Debugging information
   31593             :                if (end->get_parent() == NULL)
   31594             :                   {
   31595             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31596             :                   }
   31597             : #endif
   31598           0 :                end->set_parent(locatedNode);
   31599           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   31600             :              }
   31601             : 
   31602           0 :           SgExpression* expression = isSgExpression(result);
   31603           0 :           if (isSgExpression(this) != NULL)
   31604             :              {
   31605           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   31606             : 
   31607             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   31608           0 :                if (operatorPosition != NULL)
   31609             :                   {
   31610             : #if 0
   31611             :                  // Debugging information
   31612             :                     if (operatorPosition->get_parent() == NULL)
   31613             :                        {
   31614             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31615             :                        }
   31616             : #endif
   31617           0 :                     operatorPosition->set_parent(expression);
   31618           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   31619             :                   }
   31620             :              }
   31621             :         }
   31622             : 
   31623             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   31624           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   31625           0 :      if (initializedName != NULL)
   31626             :         {
   31627             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   31628           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   31629           0 :           ROSE_ASSERT(start != NULL);
   31630             : #if 0
   31631             :        // Debugging information
   31632             :           if (start->get_parent() == NULL)
   31633             :              {
   31634             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31635             :              }
   31636             : #endif
   31637           0 :           start->set_parent(initializedName);
   31638           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   31639             : 
   31640             : #if 0
   31641             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   31642             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   31643             : 
   31644             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   31645             :        // ROSE_ASSERT(end != NULL);
   31646             :           if (end == NULL)
   31647             :              {
   31648             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   31649             :              }
   31650             :             else
   31651             :              {
   31652             :                if (end->get_parent() == NULL)
   31653             :                   {
   31654             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31655             :                   }
   31656             :                end->set_parent(initializedName);
   31657             :                ROSE_ASSERT(end->get_parent() != NULL);
   31658             :              }
   31659             : #endif
   31660             :         }
   31661             : 
   31662             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   31663           0 :      help.insertCopiedNodePair(this,result);
   31664             : 
   31665             :   // printf ("End of copy SgTypeOfType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   31666             : 
   31667             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   31668             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   31669           0 :      help.decrementDepth();
   31670             : 
   31671             :   // Test if this is the root of the copy!
   31672           0 :      if (help.get_depth() == 0)
   31673             :         {
   31674             :        // This is the original calling node.
   31675             : 
   31676             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   31677             :        // printf ("Calling SgTypeOfType::fixupCopy() (from root of AST being copied) \n");
   31678             : #if ALT_FIXUP_COPY
   31679             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   31680           0 :           fixupCopy_scopes (result,help);
   31681           0 :           fixupCopy_symbols (result,help);
   31682           0 :           fixupCopy_references (result,help);
   31683             : #else
   31684             :           fixupCopy(result,help);
   31685             : #endif
   31686             :        // Allow this to be called recursively, so accumulate the state.
   31687             :        // Also, clear the state in the SgCopyHelp object.
   31688             :        // help.clearState();
   31689             :         }
   31690             : 
   31691           0 :      return result;
   31692             :    }
   31693             : 
   31694             : 
   31695             : /* #line 31696 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   31696             : 
   31697             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31698             : 
   31699           0 : SgNode* SgTypeMatrix::copy ( SgCopyHelp& help) const
   31700             :    {
   31701           0 :      SgTypeMatrix* result = NULL;
   31702             : 
   31703             :   // printf ("Copy SgTypeMatrix = %p = %s \n",this,SageInterface::get_name(this).c_str());
   31704             : 
   31705             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   31706             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   31707             :   // The default value of the depth is 0, so after this call the depth is 1!
   31708           0 :      help.incrementDepth();
   31709             : 
   31710             : #if 0
   31711             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   31712             :   // but it is not generally true that things can only be copied once!
   31713             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   31714             :   // AstAttribute* existingAttribute = const_cast<SgTypeMatrix*>(this)->attribute["copied"];
   31715             :      bool previouslyCopied = const_cast<SgTypeMatrix*>(this)->attribute.exists("copied");
   31716             :      if (previouslyCopied == true)
   31717             :         {
   31718             :           this->get_file_info()->display("Called from copy SgTypeMatrix: debug");
   31719             :         }
   31720             :      ROSE_ASSERT(previouslyCopied == false);
   31721             : 
   31722             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   31723             :      AstAttribute* newAttribute = new AstAttribute();
   31724             :      ROSE_ASSERT(newAttribute != NULL);
   31725             : 
   31726             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   31727             :      const_cast<SgTypeMatrix*>(this)->attribute.add("copied",newAttribute);
   31728             : #endif
   31729             : 
   31730             :   // Copy data members from base classes
   31731             :  
   31732             : 
   31733             :   // Build an empty copy of this object (will be filled in, but 
   31734             :   // the parent can't be set and must be set by the caller)
   31735           0 :      result = new SgTypeMatrix(  );
   31736           0 :      ROSE_ASSERT(result != NULL);
   31737             : 
   31738             :   // Copy data members of "this" class
   31739             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   31740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   31741             :   // case: toBeCopied == COPY_DATA for isCoArray
   31742           0 :      bool isCoArray_copy = p_isCoArray; 
   31743           0 :      result->p_isCoArray = isCoArray_copy; 
   31744             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   31745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   31746             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   31747           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   31748           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   31749             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   31750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   31751             :   // case: toBeCopied == COPY_DATA for ref_to
   31752           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   31753           0 :      result->p_ref_to = ref_to_copy; 
   31754             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   31755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   31756             :   // case: toBeCopied == COPY_DATA for ptr_to
   31757           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   31758           0 :      result->p_ptr_to = ptr_to_copy; 
   31759             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   31760             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   31761             :   // case: toBeCopied == COPY_DATA for modifiers
   31762           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   31763           0 :      result->p_modifiers = modifiers_copy; 
   31764             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   31765             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   31766             :   // case: toBeCopied == COPY_DATA for typedefs
   31767           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   31768           0 :      result->p_typedefs = typedefs_copy; 
   31769             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   31770             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   31771             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   31772           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   31773           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   31774             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   31775             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   31776             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   31777           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   31778           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   31779             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   31780             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   31781             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   31782           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   31783           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   31784             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   31785           0 :      SgExpression* type_kind_copy; 
   31786             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   31787           0 :           if (get_type_kind() != NULL) 
   31788             :              { 
   31789           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   31790             :              } 
   31791             :             else 
   31792             :              { 
   31793             :                type_kind_copy = NULL; 
   31794             :              } 
   31795             :   /* check for a valid pointer and delete if present */ 
   31796           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   31797           0 :      result->p_type_kind = type_kind_copy; 
   31798             :   // case: not a listType for (using conditionalToSetParent)type_kind
   31799           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   31800             :              { 
   31801           0 :                type_kind_copy->set_parent(result); 
   31802             :              } 
   31803             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   31804             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   31805             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   31806           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   31807           0 :      if ( p_attributeMechanism != NULL ) 
   31808             :         { 
   31809           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   31810             :         } 
   31811             :        else 
   31812             :         { 
   31813             :           attributeMechanism_copy = NULL; 
   31814             :         } 
   31815             :   /* check for a valid pointer and delete if present */ 
   31816           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   31817             :   /* add assignment to result here */ 
   31818           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   31819             :   // Copy non-constructor parameter data member (access function): base_type_copy
   31820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   31821             :   // case: toBeCopied == COPY_DATA for base_type
   31822           0 :      SgType* base_type_copy = p_base_type; 
   31823           0 :      result->p_base_type = base_type_copy; 
   31824             : 
   31825             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31826             : 
   31827             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   31828             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   31829             :   // fixupCopy(result,help);
   31830             : 
   31831             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   31832             :   // the Sg_File_Info objects that are built for the new IR nodes.
   31833           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   31834           0 :      if (locatedNode != NULL)
   31835             :         {
   31836             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   31837           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   31838           0 :           ROSE_ASSERT(start != NULL);
   31839             : #if 0
   31840             :        // Debugging information
   31841             :           if (start->get_parent() == NULL)
   31842             :              {
   31843             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31844             :              }
   31845             : #endif
   31846           0 :           start->set_parent(locatedNode);
   31847           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   31848             : 
   31849           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   31850             : 
   31851             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   31852             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   31853             :        // ROSE_ASSERT(end != NULL);
   31854           0 :           if (end == NULL)
   31855             :              {
   31856           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   31857             :              }
   31858             :             else
   31859             :              {
   31860             : #if 0
   31861             :             // Debugging information
   31862             :                if (end->get_parent() == NULL)
   31863             :                   {
   31864             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31865             :                   }
   31866             : #endif
   31867           0 :                end->set_parent(locatedNode);
   31868           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   31869             :              }
   31870             : 
   31871           0 :           SgExpression* expression = isSgExpression(result);
   31872           0 :           if (isSgExpression(this) != NULL)
   31873             :              {
   31874           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   31875             : 
   31876             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   31877           0 :                if (operatorPosition != NULL)
   31878             :                   {
   31879             : #if 0
   31880             :                  // Debugging information
   31881             :                     if (operatorPosition->get_parent() == NULL)
   31882             :                        {
   31883             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31884             :                        }
   31885             : #endif
   31886           0 :                     operatorPosition->set_parent(expression);
   31887           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   31888             :                   }
   31889             :              }
   31890             :         }
   31891             : 
   31892             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   31893           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   31894           0 :      if (initializedName != NULL)
   31895             :         {
   31896             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   31897           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   31898           0 :           ROSE_ASSERT(start != NULL);
   31899             : #if 0
   31900             :        // Debugging information
   31901             :           if (start->get_parent() == NULL)
   31902             :              {
   31903             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31904             :              }
   31905             : #endif
   31906           0 :           start->set_parent(initializedName);
   31907           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   31908             : 
   31909             : #if 0
   31910             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   31911             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   31912             : 
   31913             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   31914             :        // ROSE_ASSERT(end != NULL);
   31915             :           if (end == NULL)
   31916             :              {
   31917             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   31918             :              }
   31919             :             else
   31920             :              {
   31921             :                if (end->get_parent() == NULL)
   31922             :                   {
   31923             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   31924             :                   }
   31925             :                end->set_parent(initializedName);
   31926             :                ROSE_ASSERT(end->get_parent() != NULL);
   31927             :              }
   31928             : #endif
   31929             :         }
   31930             : 
   31931             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   31932           0 :      help.insertCopiedNodePair(this,result);
   31933             : 
   31934             :   // printf ("End of copy SgTypeMatrix = %p = %s \n",this,SageInterface::get_name(this).c_str());
   31935             : 
   31936             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   31937             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   31938           0 :      help.decrementDepth();
   31939             : 
   31940             :   // Test if this is the root of the copy!
   31941           0 :      if (help.get_depth() == 0)
   31942             :         {
   31943             :        // This is the original calling node.
   31944             : 
   31945             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   31946             :        // printf ("Calling SgTypeMatrix::fixupCopy() (from root of AST being copied) \n");
   31947             : #if ALT_FIXUP_COPY
   31948             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   31949           0 :           fixupCopy_scopes (result,help);
   31950           0 :           fixupCopy_symbols (result,help);
   31951           0 :           fixupCopy_references (result,help);
   31952             : #else
   31953             :           fixupCopy(result,help);
   31954             : #endif
   31955             :        // Allow this to be called recursively, so accumulate the state.
   31956             :        // Also, clear the state in the SgCopyHelp object.
   31957             :        // help.clearState();
   31958             :         }
   31959             : 
   31960           0 :      return result;
   31961             :    }
   31962             : 
   31963             : 
   31964             : /* #line 31965 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   31965             : 
   31966             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   31967             : 
   31968           0 : SgNode* SgTypeTuple::copy ( SgCopyHelp& help) const
   31969             :    {
   31970           0 :      SgTypeTuple* result = NULL;
   31971             : 
   31972             :   // printf ("Copy SgTypeTuple = %p = %s \n",this,SageInterface::get_name(this).c_str());
   31973             : 
   31974             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   31975             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   31976             :   // The default value of the depth is 0, so after this call the depth is 1!
   31977           0 :      help.incrementDepth();
   31978             : 
   31979             : #if 0
   31980             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   31981             :   // but it is not generally true that things can only be copied once!
   31982             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   31983             :   // AstAttribute* existingAttribute = const_cast<SgTypeTuple*>(this)->attribute["copied"];
   31984             :      bool previouslyCopied = const_cast<SgTypeTuple*>(this)->attribute.exists("copied");
   31985             :      if (previouslyCopied == true)
   31986             :         {
   31987             :           this->get_file_info()->display("Called from copy SgTypeTuple: debug");
   31988             :         }
   31989             :      ROSE_ASSERT(previouslyCopied == false);
   31990             : 
   31991             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   31992             :      AstAttribute* newAttribute = new AstAttribute();
   31993             :      ROSE_ASSERT(newAttribute != NULL);
   31994             : 
   31995             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   31996             :      const_cast<SgTypeTuple*>(this)->attribute.add("copied",newAttribute);
   31997             : #endif
   31998             : 
   31999             :   // Copy data members from base classes
   32000             :  
   32001             : 
   32002             :   // Build an empty copy of this object (will be filled in, but 
   32003             :   // the parent can't be set and must be set by the caller)
   32004           0 :      result = new SgTypeTuple(  );
   32005           0 :      ROSE_ASSERT(result != NULL);
   32006             : 
   32007             :   // Copy data members of "this" class
   32008             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   32009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   32010             :   // case: toBeCopied == COPY_DATA for isCoArray
   32011           0 :      bool isCoArray_copy = p_isCoArray; 
   32012           0 :      result->p_isCoArray = isCoArray_copy; 
   32013             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   32014             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   32015             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   32016           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   32017           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   32018             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   32019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   32020             :   // case: toBeCopied == COPY_DATA for ref_to
   32021           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   32022           0 :      result->p_ref_to = ref_to_copy; 
   32023             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   32024             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   32025             :   // case: toBeCopied == COPY_DATA for ptr_to
   32026           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   32027           0 :      result->p_ptr_to = ptr_to_copy; 
   32028             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   32029             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   32030             :   // case: toBeCopied == COPY_DATA for modifiers
   32031           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   32032           0 :      result->p_modifiers = modifiers_copy; 
   32033             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   32034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   32035             :   // case: toBeCopied == COPY_DATA for typedefs
   32036           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   32037           0 :      result->p_typedefs = typedefs_copy; 
   32038             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   32039             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   32040             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   32041           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   32042           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   32043             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   32044             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   32045             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   32046           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   32047           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   32048             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   32049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   32050             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   32051           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   32052           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   32053             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   32054           0 :      SgExpression* type_kind_copy; 
   32055             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   32056           0 :           if (get_type_kind() != NULL) 
   32057             :              { 
   32058           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   32059             :              } 
   32060             :             else 
   32061             :              { 
   32062             :                type_kind_copy = NULL; 
   32063             :              } 
   32064             :   /* check for a valid pointer and delete if present */ 
   32065           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   32066           0 :      result->p_type_kind = type_kind_copy; 
   32067             :   // case: not a listType for (using conditionalToSetParent)type_kind
   32068           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   32069             :              { 
   32070           0 :                type_kind_copy->set_parent(result); 
   32071             :              } 
   32072             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   32073             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   32074             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   32075           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   32076           0 :      if ( p_attributeMechanism != NULL ) 
   32077             :         { 
   32078           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   32079             :         } 
   32080             :        else 
   32081             :         { 
   32082             :           attributeMechanism_copy = NULL; 
   32083             :         } 
   32084             :   /* check for a valid pointer and delete if present */ 
   32085           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   32086             :   /* add assignment to result here */ 
   32087           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   32088             :   // Copy non-constructor parameter data member (no access function): result->p_types
   32089             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for types
   32090             :   // case: toBeCopied == COPY_DATA for types
   32091           0 :      SgTypePtrList types_copy = p_types; 
   32092           0 :      result->p_types = types_copy; 
   32093             : 
   32094             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   32095             : 
   32096             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   32097             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   32098             :   // fixupCopy(result,help);
   32099             : 
   32100             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   32101             :   // the Sg_File_Info objects that are built for the new IR nodes.
   32102           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   32103           0 :      if (locatedNode != NULL)
   32104             :         {
   32105             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   32106           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   32107           0 :           ROSE_ASSERT(start != NULL);
   32108             : #if 0
   32109             :        // Debugging information
   32110             :           if (start->get_parent() == NULL)
   32111             :              {
   32112             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32113             :              }
   32114             : #endif
   32115           0 :           start->set_parent(locatedNode);
   32116           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   32117             : 
   32118           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   32119             : 
   32120             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   32121             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   32122             :        // ROSE_ASSERT(end != NULL);
   32123           0 :           if (end == NULL)
   32124             :              {
   32125           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   32126             :              }
   32127             :             else
   32128             :              {
   32129             : #if 0
   32130             :             // Debugging information
   32131             :                if (end->get_parent() == NULL)
   32132             :                   {
   32133             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32134             :                   }
   32135             : #endif
   32136           0 :                end->set_parent(locatedNode);
   32137           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   32138             :              }
   32139             : 
   32140           0 :           SgExpression* expression = isSgExpression(result);
   32141           0 :           if (isSgExpression(this) != NULL)
   32142             :              {
   32143           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   32144             : 
   32145             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   32146           0 :                if (operatorPosition != NULL)
   32147             :                   {
   32148             : #if 0
   32149             :                  // Debugging information
   32150             :                     if (operatorPosition->get_parent() == NULL)
   32151             :                        {
   32152             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32153             :                        }
   32154             : #endif
   32155           0 :                     operatorPosition->set_parent(expression);
   32156           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   32157             :                   }
   32158             :              }
   32159             :         }
   32160             : 
   32161             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   32162           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   32163           0 :      if (initializedName != NULL)
   32164             :         {
   32165             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   32166           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   32167           0 :           ROSE_ASSERT(start != NULL);
   32168             : #if 0
   32169             :        // Debugging information
   32170             :           if (start->get_parent() == NULL)
   32171             :              {
   32172             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32173             :              }
   32174             : #endif
   32175           0 :           start->set_parent(initializedName);
   32176           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   32177             : 
   32178             : #if 0
   32179             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   32180             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   32181             : 
   32182             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   32183             :        // ROSE_ASSERT(end != NULL);
   32184             :           if (end == NULL)
   32185             :              {
   32186             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   32187             :              }
   32188             :             else
   32189             :              {
   32190             :                if (end->get_parent() == NULL)
   32191             :                   {
   32192             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32193             :                   }
   32194             :                end->set_parent(initializedName);
   32195             :                ROSE_ASSERT(end->get_parent() != NULL);
   32196             :              }
   32197             : #endif
   32198             :         }
   32199             : 
   32200             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   32201           0 :      help.insertCopiedNodePair(this,result);
   32202             : 
   32203             :   // printf ("End of copy SgTypeTuple = %p = %s \n",this,SageInterface::get_name(this).c_str());
   32204             : 
   32205             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   32206             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   32207           0 :      help.decrementDepth();
   32208             : 
   32209             :   // Test if this is the root of the copy!
   32210           0 :      if (help.get_depth() == 0)
   32211             :         {
   32212             :        // This is the original calling node.
   32213             : 
   32214             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   32215             :        // printf ("Calling SgTypeTuple::fixupCopy() (from root of AST being copied) \n");
   32216             : #if ALT_FIXUP_COPY
   32217             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   32218           0 :           fixupCopy_scopes (result,help);
   32219           0 :           fixupCopy_symbols (result,help);
   32220           0 :           fixupCopy_references (result,help);
   32221             : #else
   32222             :           fixupCopy(result,help);
   32223             : #endif
   32224             :        // Allow this to be called recursively, so accumulate the state.
   32225             :        // Also, clear the state in the SgCopyHelp object.
   32226             :        // help.clearState();
   32227             :         }
   32228             : 
   32229           0 :      return result;
   32230             :    }
   32231             : 
   32232             : 
   32233             : /* #line 32234 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   32234             : 
   32235             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   32236             : 
   32237           0 : SgNode* SgTypeChar16::copy ( SgCopyHelp& help) const
   32238             :    {
   32239           0 :      SgTypeChar16* result = NULL;
   32240             : 
   32241             :   // printf ("Copy SgTypeChar16 = %p = %s \n",this,SageInterface::get_name(this).c_str());
   32242             : 
   32243             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   32244             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   32245             :   // The default value of the depth is 0, so after this call the depth is 1!
   32246           0 :      help.incrementDepth();
   32247             : 
   32248             : #if 0
   32249             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   32250             :   // but it is not generally true that things can only be copied once!
   32251             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   32252             :   // AstAttribute* existingAttribute = const_cast<SgTypeChar16*>(this)->attribute["copied"];
   32253             :      bool previouslyCopied = const_cast<SgTypeChar16*>(this)->attribute.exists("copied");
   32254             :      if (previouslyCopied == true)
   32255             :         {
   32256             :           this->get_file_info()->display("Called from copy SgTypeChar16: debug");
   32257             :         }
   32258             :      ROSE_ASSERT(previouslyCopied == false);
   32259             : 
   32260             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   32261             :      AstAttribute* newAttribute = new AstAttribute();
   32262             :      ROSE_ASSERT(newAttribute != NULL);
   32263             : 
   32264             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   32265             :      const_cast<SgTypeChar16*>(this)->attribute.add("copied",newAttribute);
   32266             : #endif
   32267             : 
   32268             :   // Copy data members from base classes
   32269             :  
   32270             : 
   32271             :   // Build an empty copy of this object (will be filled in, but 
   32272             :   // the parent can't be set and must be set by the caller)
   32273           0 :      result = new SgTypeChar16(  );
   32274           0 :      ROSE_ASSERT(result != NULL);
   32275             : 
   32276             :   // Copy data members of "this" class
   32277             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   32278             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   32279             :   // case: toBeCopied == COPY_DATA for isCoArray
   32280           0 :      bool isCoArray_copy = p_isCoArray; 
   32281           0 :      result->p_isCoArray = isCoArray_copy; 
   32282             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   32283             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   32284             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   32285           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   32286           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   32287             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   32288             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   32289             :   // case: toBeCopied == COPY_DATA for ref_to
   32290           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   32291           0 :      result->p_ref_to = ref_to_copy; 
   32292             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   32293             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   32294             :   // case: toBeCopied == COPY_DATA for ptr_to
   32295           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   32296           0 :      result->p_ptr_to = ptr_to_copy; 
   32297             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   32298             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   32299             :   // case: toBeCopied == COPY_DATA for modifiers
   32300           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   32301           0 :      result->p_modifiers = modifiers_copy; 
   32302             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   32303             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   32304             :   // case: toBeCopied == COPY_DATA for typedefs
   32305           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   32306           0 :      result->p_typedefs = typedefs_copy; 
   32307             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   32308             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   32309             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   32310           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   32311           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   32312             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   32313             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   32314             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   32315           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   32316           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   32317             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   32318             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   32319             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   32320           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   32321           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   32322             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   32323           0 :      SgExpression* type_kind_copy; 
   32324             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   32325           0 :           if (get_type_kind() != NULL) 
   32326             :              { 
   32327           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   32328             :              } 
   32329             :             else 
   32330             :              { 
   32331             :                type_kind_copy = NULL; 
   32332             :              } 
   32333             :   /* check for a valid pointer and delete if present */ 
   32334           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   32335           0 :      result->p_type_kind = type_kind_copy; 
   32336             :   // case: not a listType for (using conditionalToSetParent)type_kind
   32337           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   32338             :              { 
   32339           0 :                type_kind_copy->set_parent(result); 
   32340             :              } 
   32341             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   32342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   32343             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   32344           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   32345           0 :      if ( p_attributeMechanism != NULL ) 
   32346             :         { 
   32347           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   32348             :         } 
   32349             :        else 
   32350             :         { 
   32351             :           attributeMechanism_copy = NULL; 
   32352             :         } 
   32353             :   /* check for a valid pointer and delete if present */ 
   32354           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   32355             :   /* add assignment to result here */ 
   32356           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   32357             : 
   32358             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   32359             : 
   32360             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   32361             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   32362             :   // fixupCopy(result,help);
   32363             : 
   32364             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   32365             :   // the Sg_File_Info objects that are built for the new IR nodes.
   32366           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   32367           0 :      if (locatedNode != NULL)
   32368             :         {
   32369             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   32370           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   32371           0 :           ROSE_ASSERT(start != NULL);
   32372             : #if 0
   32373             :        // Debugging information
   32374             :           if (start->get_parent() == NULL)
   32375             :              {
   32376             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32377             :              }
   32378             : #endif
   32379           0 :           start->set_parent(locatedNode);
   32380           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   32381             : 
   32382           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   32383             : 
   32384             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   32385             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   32386             :        // ROSE_ASSERT(end != NULL);
   32387           0 :           if (end == NULL)
   32388             :              {
   32389           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   32390             :              }
   32391             :             else
   32392             :              {
   32393             : #if 0
   32394             :             // Debugging information
   32395             :                if (end->get_parent() == NULL)
   32396             :                   {
   32397             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32398             :                   }
   32399             : #endif
   32400           0 :                end->set_parent(locatedNode);
   32401           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   32402             :              }
   32403             : 
   32404           0 :           SgExpression* expression = isSgExpression(result);
   32405           0 :           if (isSgExpression(this) != NULL)
   32406             :              {
   32407           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   32408             : 
   32409             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   32410           0 :                if (operatorPosition != NULL)
   32411             :                   {
   32412             : #if 0
   32413             :                  // Debugging information
   32414             :                     if (operatorPosition->get_parent() == NULL)
   32415             :                        {
   32416             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32417             :                        }
   32418             : #endif
   32419           0 :                     operatorPosition->set_parent(expression);
   32420           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   32421             :                   }
   32422             :              }
   32423             :         }
   32424             : 
   32425             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   32426           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   32427           0 :      if (initializedName != NULL)
   32428             :         {
   32429             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   32430           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   32431           0 :           ROSE_ASSERT(start != NULL);
   32432             : #if 0
   32433             :        // Debugging information
   32434             :           if (start->get_parent() == NULL)
   32435             :              {
   32436             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32437             :              }
   32438             : #endif
   32439           0 :           start->set_parent(initializedName);
   32440           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   32441             : 
   32442             : #if 0
   32443             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   32444             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   32445             : 
   32446             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   32447             :        // ROSE_ASSERT(end != NULL);
   32448             :           if (end == NULL)
   32449             :              {
   32450             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   32451             :              }
   32452             :             else
   32453             :              {
   32454             :                if (end->get_parent() == NULL)
   32455             :                   {
   32456             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32457             :                   }
   32458             :                end->set_parent(initializedName);
   32459             :                ROSE_ASSERT(end->get_parent() != NULL);
   32460             :              }
   32461             : #endif
   32462             :         }
   32463             : 
   32464             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   32465           0 :      help.insertCopiedNodePair(this,result);
   32466             : 
   32467             :   // printf ("End of copy SgTypeChar16 = %p = %s \n",this,SageInterface::get_name(this).c_str());
   32468             : 
   32469             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   32470             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   32471           0 :      help.decrementDepth();
   32472             : 
   32473             :   // Test if this is the root of the copy!
   32474           0 :      if (help.get_depth() == 0)
   32475             :         {
   32476             :        // This is the original calling node.
   32477             : 
   32478             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   32479             :        // printf ("Calling SgTypeChar16::fixupCopy() (from root of AST being copied) \n");
   32480             : #if ALT_FIXUP_COPY
   32481             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   32482           0 :           fixupCopy_scopes (result,help);
   32483           0 :           fixupCopy_symbols (result,help);
   32484           0 :           fixupCopy_references (result,help);
   32485             : #else
   32486             :           fixupCopy(result,help);
   32487             : #endif
   32488             :        // Allow this to be called recursively, so accumulate the state.
   32489             :        // Also, clear the state in the SgCopyHelp object.
   32490             :        // help.clearState();
   32491             :         }
   32492             : 
   32493           0 :      return result;
   32494             :    }
   32495             : 
   32496             : 
   32497             : /* #line 32498 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   32498             : 
   32499             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   32500             : 
   32501           0 : SgNode* SgTypeChar32::copy ( SgCopyHelp& help) const
   32502             :    {
   32503           0 :      SgTypeChar32* result = NULL;
   32504             : 
   32505             :   // printf ("Copy SgTypeChar32 = %p = %s \n",this,SageInterface::get_name(this).c_str());
   32506             : 
   32507             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   32508             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   32509             :   // The default value of the depth is 0, so after this call the depth is 1!
   32510           0 :      help.incrementDepth();
   32511             : 
   32512             : #if 0
   32513             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   32514             :   // but it is not generally true that things can only be copied once!
   32515             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   32516             :   // AstAttribute* existingAttribute = const_cast<SgTypeChar32*>(this)->attribute["copied"];
   32517             :      bool previouslyCopied = const_cast<SgTypeChar32*>(this)->attribute.exists("copied");
   32518             :      if (previouslyCopied == true)
   32519             :         {
   32520             :           this->get_file_info()->display("Called from copy SgTypeChar32: debug");
   32521             :         }
   32522             :      ROSE_ASSERT(previouslyCopied == false);
   32523             : 
   32524             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   32525             :      AstAttribute* newAttribute = new AstAttribute();
   32526             :      ROSE_ASSERT(newAttribute != NULL);
   32527             : 
   32528             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   32529             :      const_cast<SgTypeChar32*>(this)->attribute.add("copied",newAttribute);
   32530             : #endif
   32531             : 
   32532             :   // Copy data members from base classes
   32533             :  
   32534             : 
   32535             :   // Build an empty copy of this object (will be filled in, but 
   32536             :   // the parent can't be set and must be set by the caller)
   32537           0 :      result = new SgTypeChar32(  );
   32538           0 :      ROSE_ASSERT(result != NULL);
   32539             : 
   32540             :   // Copy data members of "this" class
   32541             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   32542             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   32543             :   // case: toBeCopied == COPY_DATA for isCoArray
   32544           0 :      bool isCoArray_copy = p_isCoArray; 
   32545           0 :      result->p_isCoArray = isCoArray_copy; 
   32546             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   32547             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   32548             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   32549           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   32550           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   32551             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   32552             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   32553             :   // case: toBeCopied == COPY_DATA for ref_to
   32554           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   32555           0 :      result->p_ref_to = ref_to_copy; 
   32556             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   32557             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   32558             :   // case: toBeCopied == COPY_DATA for ptr_to
   32559           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   32560           0 :      result->p_ptr_to = ptr_to_copy; 
   32561             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   32562             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   32563             :   // case: toBeCopied == COPY_DATA for modifiers
   32564           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   32565           0 :      result->p_modifiers = modifiers_copy; 
   32566             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   32567             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   32568             :   // case: toBeCopied == COPY_DATA for typedefs
   32569           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   32570           0 :      result->p_typedefs = typedefs_copy; 
   32571             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   32572             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   32573             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   32574           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   32575           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   32576             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   32577             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   32578             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   32579           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   32580           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   32581             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   32582             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   32583             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   32584           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   32585           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   32586             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   32587           0 :      SgExpression* type_kind_copy; 
   32588             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   32589           0 :           if (get_type_kind() != NULL) 
   32590             :              { 
   32591           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   32592             :              } 
   32593             :             else 
   32594             :              { 
   32595             :                type_kind_copy = NULL; 
   32596             :              } 
   32597             :   /* check for a valid pointer and delete if present */ 
   32598           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   32599           0 :      result->p_type_kind = type_kind_copy; 
   32600             :   // case: not a listType for (using conditionalToSetParent)type_kind
   32601           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   32602             :              { 
   32603           0 :                type_kind_copy->set_parent(result); 
   32604             :              } 
   32605             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   32606             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   32607             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   32608           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   32609           0 :      if ( p_attributeMechanism != NULL ) 
   32610             :         { 
   32611           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   32612             :         } 
   32613             :        else 
   32614             :         { 
   32615             :           attributeMechanism_copy = NULL; 
   32616             :         } 
   32617             :   /* check for a valid pointer and delete if present */ 
   32618           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   32619             :   /* add assignment to result here */ 
   32620           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   32621             : 
   32622             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   32623             : 
   32624             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   32625             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   32626             :   // fixupCopy(result,help);
   32627             : 
   32628             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   32629             :   // the Sg_File_Info objects that are built for the new IR nodes.
   32630           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   32631           0 :      if (locatedNode != NULL)
   32632             :         {
   32633             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   32634           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   32635           0 :           ROSE_ASSERT(start != NULL);
   32636             : #if 0
   32637             :        // Debugging information
   32638             :           if (start->get_parent() == NULL)
   32639             :              {
   32640             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32641             :              }
   32642             : #endif
   32643           0 :           start->set_parent(locatedNode);
   32644           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   32645             : 
   32646           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   32647             : 
   32648             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   32649             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   32650             :        // ROSE_ASSERT(end != NULL);
   32651           0 :           if (end == NULL)
   32652             :              {
   32653           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   32654             :              }
   32655             :             else
   32656             :              {
   32657             : #if 0
   32658             :             // Debugging information
   32659             :                if (end->get_parent() == NULL)
   32660             :                   {
   32661             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32662             :                   }
   32663             : #endif
   32664           0 :                end->set_parent(locatedNode);
   32665           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   32666             :              }
   32667             : 
   32668           0 :           SgExpression* expression = isSgExpression(result);
   32669           0 :           if (isSgExpression(this) != NULL)
   32670             :              {
   32671           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   32672             : 
   32673             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   32674           0 :                if (operatorPosition != NULL)
   32675             :                   {
   32676             : #if 0
   32677             :                  // Debugging information
   32678             :                     if (operatorPosition->get_parent() == NULL)
   32679             :                        {
   32680             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32681             :                        }
   32682             : #endif
   32683           0 :                     operatorPosition->set_parent(expression);
   32684           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   32685             :                   }
   32686             :              }
   32687             :         }
   32688             : 
   32689             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   32690           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   32691           0 :      if (initializedName != NULL)
   32692             :         {
   32693             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   32694           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   32695           0 :           ROSE_ASSERT(start != NULL);
   32696             : #if 0
   32697             :        // Debugging information
   32698             :           if (start->get_parent() == NULL)
   32699             :              {
   32700             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32701             :              }
   32702             : #endif
   32703           0 :           start->set_parent(initializedName);
   32704           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   32705             : 
   32706             : #if 0
   32707             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   32708             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   32709             : 
   32710             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   32711             :        // ROSE_ASSERT(end != NULL);
   32712             :           if (end == NULL)
   32713             :              {
   32714             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   32715             :              }
   32716             :             else
   32717             :              {
   32718             :                if (end->get_parent() == NULL)
   32719             :                   {
   32720             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32721             :                   }
   32722             :                end->set_parent(initializedName);
   32723             :                ROSE_ASSERT(end->get_parent() != NULL);
   32724             :              }
   32725             : #endif
   32726             :         }
   32727             : 
   32728             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   32729           0 :      help.insertCopiedNodePair(this,result);
   32730             : 
   32731             :   // printf ("End of copy SgTypeChar32 = %p = %s \n",this,SageInterface::get_name(this).c_str());
   32732             : 
   32733             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   32734             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   32735           0 :      help.decrementDepth();
   32736             : 
   32737             :   // Test if this is the root of the copy!
   32738           0 :      if (help.get_depth() == 0)
   32739             :         {
   32740             :        // This is the original calling node.
   32741             : 
   32742             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   32743             :        // printf ("Calling SgTypeChar32::fixupCopy() (from root of AST being copied) \n");
   32744             : #if ALT_FIXUP_COPY
   32745             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   32746           0 :           fixupCopy_scopes (result,help);
   32747           0 :           fixupCopy_symbols (result,help);
   32748           0 :           fixupCopy_references (result,help);
   32749             : #else
   32750             :           fixupCopy(result,help);
   32751             : #endif
   32752             :        // Allow this to be called recursively, so accumulate the state.
   32753             :        // Also, clear the state in the SgCopyHelp object.
   32754             :        // help.clearState();
   32755             :         }
   32756             : 
   32757           0 :      return result;
   32758             :    }
   32759             : 
   32760             : 
   32761             : /* #line 32762 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   32762             : 
   32763             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   32764             : 
   32765           0 : SgNode* SgTypeFloat128::copy ( SgCopyHelp& help) const
   32766             :    {
   32767           0 :      SgTypeFloat128* result = NULL;
   32768             : 
   32769             :   // printf ("Copy SgTypeFloat128 = %p = %s \n",this,SageInterface::get_name(this).c_str());
   32770             : 
   32771             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   32772             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   32773             :   // The default value of the depth is 0, so after this call the depth is 1!
   32774           0 :      help.incrementDepth();
   32775             : 
   32776             : #if 0
   32777             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   32778             :   // but it is not generally true that things can only be copied once!
   32779             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   32780             :   // AstAttribute* existingAttribute = const_cast<SgTypeFloat128*>(this)->attribute["copied"];
   32781             :      bool previouslyCopied = const_cast<SgTypeFloat128*>(this)->attribute.exists("copied");
   32782             :      if (previouslyCopied == true)
   32783             :         {
   32784             :           this->get_file_info()->display("Called from copy SgTypeFloat128: debug");
   32785             :         }
   32786             :      ROSE_ASSERT(previouslyCopied == false);
   32787             : 
   32788             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   32789             :      AstAttribute* newAttribute = new AstAttribute();
   32790             :      ROSE_ASSERT(newAttribute != NULL);
   32791             : 
   32792             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   32793             :      const_cast<SgTypeFloat128*>(this)->attribute.add("copied",newAttribute);
   32794             : #endif
   32795             : 
   32796             :   // Copy data members from base classes
   32797             :  
   32798             : 
   32799             :   // Build an empty copy of this object (will be filled in, but 
   32800             :   // the parent can't be set and must be set by the caller)
   32801           0 :      result = new SgTypeFloat128(  );
   32802           0 :      ROSE_ASSERT(result != NULL);
   32803             : 
   32804             :   // Copy data members of "this" class
   32805             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   32806             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   32807             :   // case: toBeCopied == COPY_DATA for isCoArray
   32808           0 :      bool isCoArray_copy = p_isCoArray; 
   32809           0 :      result->p_isCoArray = isCoArray_copy; 
   32810             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   32811             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   32812             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   32813           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   32814           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   32815             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   32816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   32817             :   // case: toBeCopied == COPY_DATA for ref_to
   32818           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   32819           0 :      result->p_ref_to = ref_to_copy; 
   32820             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   32821             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   32822             :   // case: toBeCopied == COPY_DATA for ptr_to
   32823           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   32824           0 :      result->p_ptr_to = ptr_to_copy; 
   32825             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   32826             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   32827             :   // case: toBeCopied == COPY_DATA for modifiers
   32828           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   32829           0 :      result->p_modifiers = modifiers_copy; 
   32830             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   32831             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   32832             :   // case: toBeCopied == COPY_DATA for typedefs
   32833           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   32834           0 :      result->p_typedefs = typedefs_copy; 
   32835             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   32836             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   32837             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   32838           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   32839           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   32840             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   32841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   32842             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   32843           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   32844           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   32845             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   32846             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   32847             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   32848           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   32849           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   32850             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   32851           0 :      SgExpression* type_kind_copy; 
   32852             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   32853           0 :           if (get_type_kind() != NULL) 
   32854             :              { 
   32855           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   32856             :              } 
   32857             :             else 
   32858             :              { 
   32859             :                type_kind_copy = NULL; 
   32860             :              } 
   32861             :   /* check for a valid pointer and delete if present */ 
   32862           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   32863           0 :      result->p_type_kind = type_kind_copy; 
   32864             :   // case: not a listType for (using conditionalToSetParent)type_kind
   32865           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   32866             :              { 
   32867           0 :                type_kind_copy->set_parent(result); 
   32868             :              } 
   32869             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   32870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   32871             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   32872           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   32873           0 :      if ( p_attributeMechanism != NULL ) 
   32874             :         { 
   32875           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   32876             :         } 
   32877             :        else 
   32878             :         { 
   32879             :           attributeMechanism_copy = NULL; 
   32880             :         } 
   32881             :   /* check for a valid pointer and delete if present */ 
   32882           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   32883             :   /* add assignment to result here */ 
   32884           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   32885             : 
   32886             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   32887             : 
   32888             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   32889             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   32890             :   // fixupCopy(result,help);
   32891             : 
   32892             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   32893             :   // the Sg_File_Info objects that are built for the new IR nodes.
   32894           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   32895           0 :      if (locatedNode != NULL)
   32896             :         {
   32897             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   32898           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   32899           0 :           ROSE_ASSERT(start != NULL);
   32900             : #if 0
   32901             :        // Debugging information
   32902             :           if (start->get_parent() == NULL)
   32903             :              {
   32904             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32905             :              }
   32906             : #endif
   32907           0 :           start->set_parent(locatedNode);
   32908           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   32909             : 
   32910           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   32911             : 
   32912             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   32913             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   32914             :        // ROSE_ASSERT(end != NULL);
   32915           0 :           if (end == NULL)
   32916             :              {
   32917           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   32918             :              }
   32919             :             else
   32920             :              {
   32921             : #if 0
   32922             :             // Debugging information
   32923             :                if (end->get_parent() == NULL)
   32924             :                   {
   32925             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32926             :                   }
   32927             : #endif
   32928           0 :                end->set_parent(locatedNode);
   32929           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   32930             :              }
   32931             : 
   32932           0 :           SgExpression* expression = isSgExpression(result);
   32933           0 :           if (isSgExpression(this) != NULL)
   32934             :              {
   32935           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   32936             : 
   32937             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   32938           0 :                if (operatorPosition != NULL)
   32939             :                   {
   32940             : #if 0
   32941             :                  // Debugging information
   32942             :                     if (operatorPosition->get_parent() == NULL)
   32943             :                        {
   32944             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32945             :                        }
   32946             : #endif
   32947           0 :                     operatorPosition->set_parent(expression);
   32948           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   32949             :                   }
   32950             :              }
   32951             :         }
   32952             : 
   32953             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   32954           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   32955           0 :      if (initializedName != NULL)
   32956             :         {
   32957             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   32958           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   32959           0 :           ROSE_ASSERT(start != NULL);
   32960             : #if 0
   32961             :        // Debugging information
   32962             :           if (start->get_parent() == NULL)
   32963             :              {
   32964             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32965             :              }
   32966             : #endif
   32967           0 :           start->set_parent(initializedName);
   32968           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   32969             : 
   32970             : #if 0
   32971             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   32972             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   32973             : 
   32974             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   32975             :        // ROSE_ASSERT(end != NULL);
   32976             :           if (end == NULL)
   32977             :              {
   32978             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   32979             :              }
   32980             :             else
   32981             :              {
   32982             :                if (end->get_parent() == NULL)
   32983             :                   {
   32984             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   32985             :                   }
   32986             :                end->set_parent(initializedName);
   32987             :                ROSE_ASSERT(end->get_parent() != NULL);
   32988             :              }
   32989             : #endif
   32990             :         }
   32991             : 
   32992             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   32993           0 :      help.insertCopiedNodePair(this,result);
   32994             : 
   32995             :   // printf ("End of copy SgTypeFloat128 = %p = %s \n",this,SageInterface::get_name(this).c_str());
   32996             : 
   32997             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   32998             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   32999           0 :      help.decrementDepth();
   33000             : 
   33001             :   // Test if this is the root of the copy!
   33002           0 :      if (help.get_depth() == 0)
   33003             :         {
   33004             :        // This is the original calling node.
   33005             : 
   33006             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   33007             :        // printf ("Calling SgTypeFloat128::fixupCopy() (from root of AST being copied) \n");
   33008             : #if ALT_FIXUP_COPY
   33009             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   33010           0 :           fixupCopy_scopes (result,help);
   33011           0 :           fixupCopy_symbols (result,help);
   33012           0 :           fixupCopy_references (result,help);
   33013             : #else
   33014             :           fixupCopy(result,help);
   33015             : #endif
   33016             :        // Allow this to be called recursively, so accumulate the state.
   33017             :        // Also, clear the state in the SgCopyHelp object.
   33018             :        // help.clearState();
   33019             :         }
   33020             : 
   33021           0 :      return result;
   33022             :    }
   33023             : 
   33024             : 
   33025             : /* #line 33026 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   33026             : 
   33027             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33028             : 
   33029           0 : SgNode* SgTypeFixed::copy ( SgCopyHelp& help) const
   33030             :    {
   33031           0 :      SgTypeFixed* result = NULL;
   33032             : 
   33033             :   // printf ("Copy SgTypeFixed = %p = %s \n",this,SageInterface::get_name(this).c_str());
   33034             : 
   33035             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   33036             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   33037             :   // The default value of the depth is 0, so after this call the depth is 1!
   33038           0 :      help.incrementDepth();
   33039             : 
   33040             : #if 0
   33041             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   33042             :   // but it is not generally true that things can only be copied once!
   33043             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   33044             :   // AstAttribute* existingAttribute = const_cast<SgTypeFixed*>(this)->attribute["copied"];
   33045             :      bool previouslyCopied = const_cast<SgTypeFixed*>(this)->attribute.exists("copied");
   33046             :      if (previouslyCopied == true)
   33047             :         {
   33048             :           this->get_file_info()->display("Called from copy SgTypeFixed: debug");
   33049             :         }
   33050             :      ROSE_ASSERT(previouslyCopied == false);
   33051             : 
   33052             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   33053             :      AstAttribute* newAttribute = new AstAttribute();
   33054             :      ROSE_ASSERT(newAttribute != NULL);
   33055             : 
   33056             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   33057             :      const_cast<SgTypeFixed*>(this)->attribute.add("copied",newAttribute);
   33058             : #endif
   33059             : 
   33060             :   // Copy data members from base classes
   33061             :   // Copy constructor parameter data member: scale_copy
   33062           0 :      SgExpression* scale_copy; 
   33063             :   // case: not a listType for (using conditionalToCopyVariable)scale
   33064           0 :           if (get_scale() != NULL) 
   33065             :              { 
   33066           0 :                scale_copy = static_cast<SgExpression*>(help.copyAst(get_scale())); 
   33067             :              } 
   33068             :             else 
   33069             :              { 
   33070             :                scale_copy = NULL; 
   33071             :              } 
   33072             :   // Copy constructor parameter data member: fraction_copy
   33073           0 :      SgExpression* fraction_copy; 
   33074             :   // case: not a listType for (using conditionalToCopyVariable)fraction
   33075           0 :           if (get_fraction() != NULL) 
   33076             :              { 
   33077           0 :                fraction_copy = static_cast<SgExpression*>(help.copyAst(get_fraction())); 
   33078             :              } 
   33079             :             else 
   33080             :              { 
   33081             :                fraction_copy = NULL; 
   33082             :              } 
   33083             :  
   33084             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33085             : 
   33086             :   // Build an empty copy of this object (will be filled in, but 
   33087             :   // the parent can't be set and must be set by the caller)
   33088           0 :      result = new SgTypeFixed(  scale_copy, fraction_copy );
   33089           0 :      ROSE_ASSERT(result != NULL);
   33090             : 
   33091             :   // Copy data members of "this" class
   33092             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   33093             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   33094             :   // case: toBeCopied == COPY_DATA for isCoArray
   33095           0 :      bool isCoArray_copy = p_isCoArray; 
   33096           0 :      result->p_isCoArray = isCoArray_copy; 
   33097             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   33098             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   33099             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   33100           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   33101           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   33102             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   33103             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   33104             :   // case: toBeCopied == COPY_DATA for ref_to
   33105           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   33106           0 :      result->p_ref_to = ref_to_copy; 
   33107             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   33108             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   33109             :   // case: toBeCopied == COPY_DATA for ptr_to
   33110           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   33111           0 :      result->p_ptr_to = ptr_to_copy; 
   33112             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   33113             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   33114             :   // case: toBeCopied == COPY_DATA for modifiers
   33115           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   33116           0 :      result->p_modifiers = modifiers_copy; 
   33117             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   33118             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   33119             :   // case: toBeCopied == COPY_DATA for typedefs
   33120           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   33121           0 :      result->p_typedefs = typedefs_copy; 
   33122             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   33123             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   33124             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   33125           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   33126           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   33127             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   33128             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   33129             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   33130           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   33131           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   33132             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   33133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   33134             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   33135           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   33136           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   33137             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   33138           0 :      SgExpression* type_kind_copy; 
   33139             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   33140           0 :           if (get_type_kind() != NULL) 
   33141             :              { 
   33142           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   33143             :              } 
   33144             :             else 
   33145             :              { 
   33146             :                type_kind_copy = NULL; 
   33147             :              } 
   33148             :   /* check for a valid pointer and delete if present */ 
   33149           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   33150           0 :      result->p_type_kind = type_kind_copy; 
   33151             :   // case: not a listType for (using conditionalToSetParent)type_kind
   33152           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   33153             :              { 
   33154           0 :                type_kind_copy->set_parent(result); 
   33155             :              } 
   33156             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   33157             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   33158             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   33159           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   33160           0 :      if ( p_attributeMechanism != NULL ) 
   33161             :         { 
   33162           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   33163             :         } 
   33164             :        else 
   33165             :         { 
   33166             :           attributeMechanism_copy = NULL; 
   33167             :         } 
   33168             :   /* check for a valid pointer and delete if present */ 
   33169           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   33170             :   /* add assignment to result here */ 
   33171           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   33172             :   // case: not a listType for (using conditionalToSetParent)scale
   33173           0 :           if ( (scale_copy != NULL) && (scale_copy->get_parent() == NULL) && (isSgType(scale_copy) == NULL) ) 
   33174             :              { 
   33175           0 :                scale_copy->set_parent(result); 
   33176             :              } 
   33177             :   // case: not a listType for (using conditionalToSetParent)fraction
   33178           0 :           if ( (fraction_copy != NULL) && (fraction_copy->get_parent() == NULL) && (isSgType(fraction_copy) == NULL) ) 
   33179             :              { 
   33180           0 :                fraction_copy->set_parent(result); 
   33181             :              } 
   33182             : 
   33183             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33184             : 
   33185             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   33186             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   33187             :   // fixupCopy(result,help);
   33188             : 
   33189             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   33190             :   // the Sg_File_Info objects that are built for the new IR nodes.
   33191           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   33192           0 :      if (locatedNode != NULL)
   33193             :         {
   33194             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   33195           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   33196           0 :           ROSE_ASSERT(start != NULL);
   33197             : #if 0
   33198             :        // Debugging information
   33199             :           if (start->get_parent() == NULL)
   33200             :              {
   33201             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33202             :              }
   33203             : #endif
   33204           0 :           start->set_parent(locatedNode);
   33205           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   33206             : 
   33207           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   33208             : 
   33209             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   33210             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   33211             :        // ROSE_ASSERT(end != NULL);
   33212           0 :           if (end == NULL)
   33213             :              {
   33214           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   33215             :              }
   33216             :             else
   33217             :              {
   33218             : #if 0
   33219             :             // Debugging information
   33220             :                if (end->get_parent() == NULL)
   33221             :                   {
   33222             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33223             :                   }
   33224             : #endif
   33225           0 :                end->set_parent(locatedNode);
   33226           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   33227             :              }
   33228             : 
   33229           0 :           SgExpression* expression = isSgExpression(result);
   33230           0 :           if (isSgExpression(this) != NULL)
   33231             :              {
   33232           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   33233             : 
   33234             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   33235           0 :                if (operatorPosition != NULL)
   33236             :                   {
   33237             : #if 0
   33238             :                  // Debugging information
   33239             :                     if (operatorPosition->get_parent() == NULL)
   33240             :                        {
   33241             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33242             :                        }
   33243             : #endif
   33244           0 :                     operatorPosition->set_parent(expression);
   33245           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   33246             :                   }
   33247             :              }
   33248             :         }
   33249             : 
   33250             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   33251           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   33252           0 :      if (initializedName != NULL)
   33253             :         {
   33254             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   33255           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   33256           0 :           ROSE_ASSERT(start != NULL);
   33257             : #if 0
   33258             :        // Debugging information
   33259             :           if (start->get_parent() == NULL)
   33260             :              {
   33261             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33262             :              }
   33263             : #endif
   33264           0 :           start->set_parent(initializedName);
   33265           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   33266             : 
   33267             : #if 0
   33268             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   33269             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   33270             : 
   33271             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   33272             :        // ROSE_ASSERT(end != NULL);
   33273             :           if (end == NULL)
   33274             :              {
   33275             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   33276             :              }
   33277             :             else
   33278             :              {
   33279             :                if (end->get_parent() == NULL)
   33280             :                   {
   33281             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33282             :                   }
   33283             :                end->set_parent(initializedName);
   33284             :                ROSE_ASSERT(end->get_parent() != NULL);
   33285             :              }
   33286             : #endif
   33287             :         }
   33288             : 
   33289             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   33290           0 :      help.insertCopiedNodePair(this,result);
   33291             : 
   33292             :   // printf ("End of copy SgTypeFixed = %p = %s \n",this,SageInterface::get_name(this).c_str());
   33293             : 
   33294             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   33295             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   33296           0 :      help.decrementDepth();
   33297             : 
   33298             :   // Test if this is the root of the copy!
   33299           0 :      if (help.get_depth() == 0)
   33300             :         {
   33301             :        // This is the original calling node.
   33302             : 
   33303             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   33304             :        // printf ("Calling SgTypeFixed::fixupCopy() (from root of AST being copied) \n");
   33305             : #if ALT_FIXUP_COPY
   33306             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   33307           0 :           fixupCopy_scopes (result,help);
   33308           0 :           fixupCopy_symbols (result,help);
   33309           0 :           fixupCopy_references (result,help);
   33310             : #else
   33311             :           fixupCopy(result,help);
   33312             : #endif
   33313             :        // Allow this to be called recursively, so accumulate the state.
   33314             :        // Also, clear the state in the SgCopyHelp object.
   33315             :        // help.clearState();
   33316             :         }
   33317             : 
   33318           0 :      return result;
   33319             :    }
   33320             : 
   33321             : 
   33322             : /* #line 33323 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   33323             : 
   33324             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33325             : 
   33326           0 : SgNode* SgAutoType::copy ( SgCopyHelp& help) const
   33327             :    {
   33328           0 :      SgAutoType* result = NULL;
   33329             : 
   33330             :   // printf ("Copy SgAutoType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   33331             : 
   33332             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   33333             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   33334             :   // The default value of the depth is 0, so after this call the depth is 1!
   33335           0 :      help.incrementDepth();
   33336             : 
   33337             : #if 0
   33338             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   33339             :   // but it is not generally true that things can only be copied once!
   33340             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   33341             :   // AstAttribute* existingAttribute = const_cast<SgAutoType*>(this)->attribute["copied"];
   33342             :      bool previouslyCopied = const_cast<SgAutoType*>(this)->attribute.exists("copied");
   33343             :      if (previouslyCopied == true)
   33344             :         {
   33345             :           this->get_file_info()->display("Called from copy SgAutoType: debug");
   33346             :         }
   33347             :      ROSE_ASSERT(previouslyCopied == false);
   33348             : 
   33349             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   33350             :      AstAttribute* newAttribute = new AstAttribute();
   33351             :      ROSE_ASSERT(newAttribute != NULL);
   33352             : 
   33353             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   33354             :      const_cast<SgAutoType*>(this)->attribute.add("copied",newAttribute);
   33355             : #endif
   33356             : 
   33357             :   // Copy data members from base classes
   33358             :  
   33359             : 
   33360             :   // Build an empty copy of this object (will be filled in, but 
   33361             :   // the parent can't be set and must be set by the caller)
   33362           0 :      result = new SgAutoType(  );
   33363           0 :      ROSE_ASSERT(result != NULL);
   33364             : 
   33365             :   // Copy data members of "this" class
   33366             :   // Copy non-constructor parameter data member (access function): isCoArray_copy
   33367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isCoArray
   33368             :   // case: toBeCopied == COPY_DATA for isCoArray
   33369           0 :      bool isCoArray_copy = p_isCoArray; 
   33370           0 :      result->p_isCoArray = isCoArray_copy; 
   33371             :   // Copy non-constructor parameter data member (access function): substitutedForTemplateParam_copy
   33372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for substitutedForTemplateParam
   33373             :   // case: toBeCopied == COPY_DATA for substitutedForTemplateParam
   33374           0 :      int substitutedForTemplateParam_copy = p_substitutedForTemplateParam; 
   33375           0 :      result->p_substitutedForTemplateParam = substitutedForTemplateParam_copy; 
   33376             :   // Copy non-constructor parameter data member (access function): ref_to_copy
   33377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ref_to
   33378             :   // case: toBeCopied == COPY_DATA for ref_to
   33379           0 :      SgReferenceType* ref_to_copy = p_ref_to; 
   33380           0 :      result->p_ref_to = ref_to_copy; 
   33381             :   // Copy non-constructor parameter data member (access function): ptr_to_copy
   33382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ptr_to
   33383             :   // case: toBeCopied == COPY_DATA for ptr_to
   33384           0 :      SgPointerType* ptr_to_copy = p_ptr_to; 
   33385           0 :      result->p_ptr_to = ptr_to_copy; 
   33386             :   // Copy non-constructor parameter data member (access function): modifiers_copy
   33387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
   33388             :   // case: toBeCopied == COPY_DATA for modifiers
   33389           0 :      SgModifierNodes* modifiers_copy = p_modifiers; 
   33390           0 :      result->p_modifiers = modifiers_copy; 
   33391             :   // Copy non-constructor parameter data member (access function): typedefs_copy
   33392             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefs
   33393             :   // case: toBeCopied == COPY_DATA for typedefs
   33394           0 :      SgTypedefSeq* typedefs_copy = p_typedefs; 
   33395           0 :      result->p_typedefs = typedefs_copy; 
   33396             :   // Copy non-constructor parameter data member (access function): rvalue_ref_to_copy
   33397             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for rvalue_ref_to
   33398             :   // case: toBeCopied == COPY_DATA for rvalue_ref_to
   33399           0 :      SgRvalueReferenceType* rvalue_ref_to_copy = p_rvalue_ref_to; 
   33400           0 :      result->p_rvalue_ref_to = rvalue_ref_to_copy; 
   33401             :   // Copy non-constructor parameter data member (access function): decltype_ref_to_copy
   33402             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decltype_ref_to
   33403             :   // case: toBeCopied == COPY_DATA for decltype_ref_to
   33404           0 :      SgDeclType* decltype_ref_to_copy = p_decltype_ref_to; 
   33405           0 :      result->p_decltype_ref_to = decltype_ref_to_copy; 
   33406             :   // Copy non-constructor parameter data member (access function): typeof_ref_to_copy
   33407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeof_ref_to
   33408             :   // case: toBeCopied == COPY_DATA for typeof_ref_to
   33409           0 :      SgTypeOfType* typeof_ref_to_copy = p_typeof_ref_to; 
   33410           0 :      result->p_typeof_ref_to = typeof_ref_to_copy; 
   33411             :   // Copy non-constructor parameter data member (no access function): result->p_type_kind
   33412           0 :      SgExpression* type_kind_copy; 
   33413             :   // case: not a listType for (using conditionalToCopyVariable)type_kind
   33414           0 :           if (get_type_kind() != NULL) 
   33415             :              { 
   33416           0 :                type_kind_copy = static_cast<SgExpression*>(help.copyAst(get_type_kind())); 
   33417             :              } 
   33418             :             else 
   33419             :              { 
   33420             :                type_kind_copy = NULL; 
   33421             :              } 
   33422             :   /* check for a valid pointer and delete if present */ 
   33423           0 :      if (result->p_type_kind != NULL) delete result->p_type_kind; 
   33424           0 :      result->p_type_kind = type_kind_copy; 
   33425             :   // case: not a listType for (using conditionalToSetParent)type_kind
   33426           0 :           if ( (type_kind_copy != NULL) && (type_kind_copy->get_parent() == NULL) && (isSgType(type_kind_copy) == NULL) ) 
   33427             :              { 
   33428           0 :                type_kind_copy->set_parent(result); 
   33429             :              } 
   33430             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   33431             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   33432             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   33433           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   33434           0 :      if ( p_attributeMechanism != NULL ) 
   33435             :         { 
   33436           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   33437             :         } 
   33438             :        else 
   33439             :         { 
   33440             :           attributeMechanism_copy = NULL; 
   33441             :         } 
   33442             :   /* check for a valid pointer and delete if present */ 
   33443           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   33444             :   /* add assignment to result here */ 
   33445           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   33446             : 
   33447             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33448             : 
   33449             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   33450             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   33451             :   // fixupCopy(result,help);
   33452             : 
   33453             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   33454             :   // the Sg_File_Info objects that are built for the new IR nodes.
   33455           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   33456           0 :      if (locatedNode != NULL)
   33457             :         {
   33458             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   33459           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   33460           0 :           ROSE_ASSERT(start != NULL);
   33461             : #if 0
   33462             :        // Debugging information
   33463             :           if (start->get_parent() == NULL)
   33464             :              {
   33465             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33466             :              }
   33467             : #endif
   33468           0 :           start->set_parent(locatedNode);
   33469           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   33470             : 
   33471           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   33472             : 
   33473             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   33474             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   33475             :        // ROSE_ASSERT(end != NULL);
   33476           0 :           if (end == NULL)
   33477             :              {
   33478           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   33479             :              }
   33480             :             else
   33481             :              {
   33482             : #if 0
   33483             :             // Debugging information
   33484             :                if (end->get_parent() == NULL)
   33485             :                   {
   33486             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33487             :                   }
   33488             : #endif
   33489           0 :                end->set_parent(locatedNode);
   33490           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   33491             :              }
   33492             : 
   33493           0 :           SgExpression* expression = isSgExpression(result);
   33494           0 :           if (isSgExpression(this) != NULL)
   33495             :              {
   33496           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   33497             : 
   33498             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   33499           0 :                if (operatorPosition != NULL)
   33500             :                   {
   33501             : #if 0
   33502             :                  // Debugging information
   33503             :                     if (operatorPosition->get_parent() == NULL)
   33504             :                        {
   33505             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33506             :                        }
   33507             : #endif
   33508           0 :                     operatorPosition->set_parent(expression);
   33509           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   33510             :                   }
   33511             :              }
   33512             :         }
   33513             : 
   33514             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   33515           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   33516           0 :      if (initializedName != NULL)
   33517             :         {
   33518             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   33519           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   33520           0 :           ROSE_ASSERT(start != NULL);
   33521             : #if 0
   33522             :        // Debugging information
   33523             :           if (start->get_parent() == NULL)
   33524             :              {
   33525             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33526             :              }
   33527             : #endif
   33528           0 :           start->set_parent(initializedName);
   33529           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   33530             : 
   33531             : #if 0
   33532             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   33533             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   33534             : 
   33535             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   33536             :        // ROSE_ASSERT(end != NULL);
   33537             :           if (end == NULL)
   33538             :              {
   33539             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   33540             :              }
   33541             :             else
   33542             :              {
   33543             :                if (end->get_parent() == NULL)
   33544             :                   {
   33545             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33546             :                   }
   33547             :                end->set_parent(initializedName);
   33548             :                ROSE_ASSERT(end->get_parent() != NULL);
   33549             :              }
   33550             : #endif
   33551             :         }
   33552             : 
   33553             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   33554           0 :      help.insertCopiedNodePair(this,result);
   33555             : 
   33556             :   // printf ("End of copy SgAutoType = %p = %s \n",this,SageInterface::get_name(this).c_str());
   33557             : 
   33558             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   33559             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   33560           0 :      help.decrementDepth();
   33561             : 
   33562             :   // Test if this is the root of the copy!
   33563           0 :      if (help.get_depth() == 0)
   33564             :         {
   33565             :        // This is the original calling node.
   33566             : 
   33567             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   33568             :        // printf ("Calling SgAutoType::fixupCopy() (from root of AST being copied) \n");
   33569             : #if ALT_FIXUP_COPY
   33570             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   33571           0 :           fixupCopy_scopes (result,help);
   33572           0 :           fixupCopy_symbols (result,help);
   33573           0 :           fixupCopy_references (result,help);
   33574             : #else
   33575             :           fixupCopy(result,help);
   33576             : #endif
   33577             :        // Allow this to be called recursively, so accumulate the state.
   33578             :        // Also, clear the state in the SgCopyHelp object.
   33579             :        // help.clearState();
   33580             :         }
   33581             : 
   33582           0 :      return result;
   33583             :    }
   33584             : 
   33585             : 
   33586             : /* #line 33587 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   33587             : 
   33588             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33589             : 
   33590           0 : SgNode* SgLocatedNode::copy ( SgCopyHelp& help) const
   33591             :    {
   33592           0 :      SgLocatedNode* result = NULL;
   33593             : 
   33594             :   // printf ("Copy SgLocatedNode = %p = %s \n",this,SageInterface::get_name(this).c_str());
   33595             : 
   33596             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   33597             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   33598             :   // The default value of the depth is 0, so after this call the depth is 1!
   33599           0 :      help.incrementDepth();
   33600             : 
   33601             : #if 0
   33602             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   33603             :   // but it is not generally true that things can only be copied once!
   33604             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   33605             :   // AstAttribute* existingAttribute = const_cast<SgLocatedNode*>(this)->attribute["copied"];
   33606             :      bool previouslyCopied = const_cast<SgLocatedNode*>(this)->attribute.exists("copied");
   33607             :      if (previouslyCopied == true)
   33608             :         {
   33609             :           this->get_file_info()->display("Called from copy SgLocatedNode: debug");
   33610             :         }
   33611             :      ROSE_ASSERT(previouslyCopied == false);
   33612             : 
   33613             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   33614             :      AstAttribute* newAttribute = new AstAttribute();
   33615             :      ROSE_ASSERT(newAttribute != NULL);
   33616             : 
   33617             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   33618             :      const_cast<SgLocatedNode*>(this)->attribute.add("copied",newAttribute);
   33619             : #endif
   33620             : 
   33621             :   // Copy data members from base classes
   33622             :   // Copy constructor parameter data member: startOfConstruct_copy
   33623             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   33624             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   33625           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   33626           0 :      if ( p_startOfConstruct != NULL ) 
   33627             :         { 
   33628           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   33629             :         } 
   33630             :        else 
   33631             :         { 
   33632             :           startOfConstruct_copy = NULL; 
   33633             :         } 
   33634             :  
   33635             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33636             : 
   33637             :   // Build an empty copy of this object (will be filled in, but 
   33638             :   // the parent can't be set and must be set by the caller)
   33639           0 :      result = new SgLocatedNode(  startOfConstruct_copy );
   33640           0 :      ROSE_ASSERT(result != NULL);
   33641             : 
   33642             :   // Copy data members of "this" class
   33643             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   33644             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   33645             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   33646           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   33647           0 :      if ( p_endOfConstruct != NULL ) 
   33648             :         { 
   33649           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   33650             :         } 
   33651             :        else 
   33652             :         { 
   33653             :           endOfConstruct_copy = NULL; 
   33654             :         } 
   33655             :   /* check for a valid pointer and delete if present */ 
   33656           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   33657             :   /* add assignment to result here */ 
   33658           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   33659             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   33660             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   33661             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   33662           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   33663           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   33664             :         { 
   33665           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   33666             :         } 
   33667             :        else 
   33668             :         { 
   33669             :           attachedPreprocessingInfoPtr_copy = NULL; 
   33670             :         } 
   33671             :   /* check for a valid pointer and delete if present */ 
   33672           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   33673             :   /* add assignment to result here */ 
   33674           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   33675             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   33676             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   33677             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   33678           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   33679           0 :      if ( p_attributeMechanism != NULL ) 
   33680             :         { 
   33681           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   33682             :         } 
   33683             :        else 
   33684             :         { 
   33685             :           attributeMechanism_copy = NULL; 
   33686             :         } 
   33687             :   /* check for a valid pointer and delete if present */ 
   33688           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   33689             :   /* add assignment to result here */ 
   33690           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   33691             : 
   33692             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33693             : 
   33694             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   33695             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   33696             :   // fixupCopy(result,help);
   33697             : 
   33698             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   33699             :   // the Sg_File_Info objects that are built for the new IR nodes.
   33700           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   33701           0 :      if (locatedNode != NULL)
   33702             :         {
   33703             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   33704           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   33705           0 :           ROSE_ASSERT(start != NULL);
   33706             : #if 0
   33707             :        // Debugging information
   33708             :           if (start->get_parent() == NULL)
   33709             :              {
   33710             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33711             :              }
   33712             : #endif
   33713           0 :           start->set_parent(locatedNode);
   33714           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   33715             : 
   33716           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   33717             : 
   33718             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   33719             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   33720             :        // ROSE_ASSERT(end != NULL);
   33721           0 :           if (end == NULL)
   33722             :              {
   33723           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   33724             :              }
   33725             :             else
   33726             :              {
   33727             : #if 0
   33728             :             // Debugging information
   33729             :                if (end->get_parent() == NULL)
   33730             :                   {
   33731             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33732             :                   }
   33733             : #endif
   33734           0 :                end->set_parent(locatedNode);
   33735           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   33736             :              }
   33737             : 
   33738           0 :           SgExpression* expression = isSgExpression(result);
   33739           0 :           if (isSgExpression(this) != NULL)
   33740             :              {
   33741           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   33742             : 
   33743             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   33744           0 :                if (operatorPosition != NULL)
   33745             :                   {
   33746             : #if 0
   33747             :                  // Debugging information
   33748             :                     if (operatorPosition->get_parent() == NULL)
   33749             :                        {
   33750             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33751             :                        }
   33752             : #endif
   33753           0 :                     operatorPosition->set_parent(expression);
   33754           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   33755             :                   }
   33756             :              }
   33757             :         }
   33758             : 
   33759             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   33760           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   33761           0 :      if (initializedName != NULL)
   33762             :         {
   33763             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   33764           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   33765           0 :           ROSE_ASSERT(start != NULL);
   33766             : #if 0
   33767             :        // Debugging information
   33768             :           if (start->get_parent() == NULL)
   33769             :              {
   33770             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33771             :              }
   33772             : #endif
   33773           0 :           start->set_parent(initializedName);
   33774           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   33775             : 
   33776             : #if 0
   33777             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   33778             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   33779             : 
   33780             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   33781             :        // ROSE_ASSERT(end != NULL);
   33782             :           if (end == NULL)
   33783             :              {
   33784             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   33785             :              }
   33786             :             else
   33787             :              {
   33788             :                if (end->get_parent() == NULL)
   33789             :                   {
   33790             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33791             :                   }
   33792             :                end->set_parent(initializedName);
   33793             :                ROSE_ASSERT(end->get_parent() != NULL);
   33794             :              }
   33795             : #endif
   33796             :         }
   33797             : 
   33798             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   33799           0 :      help.insertCopiedNodePair(this,result);
   33800             : 
   33801             :   // printf ("End of copy SgLocatedNode = %p = %s \n",this,SageInterface::get_name(this).c_str());
   33802             : 
   33803             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   33804             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   33805           0 :      help.decrementDepth();
   33806             : 
   33807             :   // Test if this is the root of the copy!
   33808           0 :      if (help.get_depth() == 0)
   33809             :         {
   33810             :        // This is the original calling node.
   33811             : 
   33812             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   33813             :        // printf ("Calling SgLocatedNode::fixupCopy() (from root of AST being copied) \n");
   33814             : #if ALT_FIXUP_COPY
   33815             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   33816           0 :           fixupCopy_scopes (result,help);
   33817           0 :           fixupCopy_symbols (result,help);
   33818           0 :           fixupCopy_references (result,help);
   33819             : #else
   33820             :           fixupCopy(result,help);
   33821             : #endif
   33822             :        // Allow this to be called recursively, so accumulate the state.
   33823             :        // Also, clear the state in the SgCopyHelp object.
   33824             :        // help.clearState();
   33825             :         }
   33826             : 
   33827           0 :      return result;
   33828             :    }
   33829             : 
   33830             : 
   33831             : /* #line 33832 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   33832             : 
   33833             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33834             : 
   33835           0 : SgNode* SgToken::copy ( SgCopyHelp& help) const
   33836             :    {
   33837           0 :      SgToken* result = NULL;
   33838             : 
   33839             :   // printf ("Copy SgToken = %p = %s \n",this,SageInterface::get_name(this).c_str());
   33840             : 
   33841             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   33842             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   33843             :   // The default value of the depth is 0, so after this call the depth is 1!
   33844           0 :      help.incrementDepth();
   33845             : 
   33846             : #if 0
   33847             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   33848             :   // but it is not generally true that things can only be copied once!
   33849             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   33850             :   // AstAttribute* existingAttribute = const_cast<SgToken*>(this)->attribute["copied"];
   33851             :      bool previouslyCopied = const_cast<SgToken*>(this)->attribute.exists("copied");
   33852             :      if (previouslyCopied == true)
   33853             :         {
   33854             :           this->get_file_info()->display("Called from copy SgToken: debug");
   33855             :         }
   33856             :      ROSE_ASSERT(previouslyCopied == false);
   33857             : 
   33858             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   33859             :      AstAttribute* newAttribute = new AstAttribute();
   33860             :      ROSE_ASSERT(newAttribute != NULL);
   33861             : 
   33862             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   33863             :      const_cast<SgToken*>(this)->attribute.add("copied",newAttribute);
   33864             : #endif
   33865             : 
   33866             :   // Copy data members from base classes
   33867             :   // Copy constructor parameter data member: startOfConstruct_copy
   33868             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   33869             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   33870           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   33871           0 :      if ( p_startOfConstruct != NULL ) 
   33872             :         { 
   33873           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   33874             :         } 
   33875             :        else 
   33876             :         { 
   33877             :           startOfConstruct_copy = NULL; 
   33878             :         } 
   33879             :  
   33880             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33881             : 
   33882             :   // Build an empty copy of this object (will be filled in, but 
   33883             :   // the parent can't be set and must be set by the caller)
   33884           0 :      result = new SgToken(  startOfConstruct_copy );
   33885           0 :      ROSE_ASSERT(result != NULL);
   33886             : 
   33887             :   // Copy data members of "this" class
   33888             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   33889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   33890             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   33891           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   33892           0 :      if ( p_endOfConstruct != NULL ) 
   33893             :         { 
   33894           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   33895             :         } 
   33896             :        else 
   33897             :         { 
   33898             :           endOfConstruct_copy = NULL; 
   33899             :         } 
   33900             :   /* check for a valid pointer and delete if present */ 
   33901           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   33902             :   /* add assignment to result here */ 
   33903           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   33904             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   33905             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   33906             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   33907           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   33908           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   33909             :         { 
   33910           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   33911             :         } 
   33912             :        else 
   33913             :         { 
   33914             :           attachedPreprocessingInfoPtr_copy = NULL; 
   33915             :         } 
   33916             :   /* check for a valid pointer and delete if present */ 
   33917           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   33918             :   /* add assignment to result here */ 
   33919           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   33920             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   33921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   33922             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   33923           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   33924           0 :      if ( p_attributeMechanism != NULL ) 
   33925             :         { 
   33926           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   33927             :         } 
   33928             :        else 
   33929             :         { 
   33930             :           attributeMechanism_copy = NULL; 
   33931             :         } 
   33932             :   /* check for a valid pointer and delete if present */ 
   33933           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   33934             :   /* add assignment to result here */ 
   33935           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   33936             : 
   33937             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   33938             : 
   33939             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   33940             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   33941             :   // fixupCopy(result,help);
   33942             : 
   33943             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   33944             :   // the Sg_File_Info objects that are built for the new IR nodes.
   33945           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   33946           0 :      if (locatedNode != NULL)
   33947             :         {
   33948             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   33949           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   33950           0 :           ROSE_ASSERT(start != NULL);
   33951             : #if 0
   33952             :        // Debugging information
   33953             :           if (start->get_parent() == NULL)
   33954             :              {
   33955             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33956             :              }
   33957             : #endif
   33958           0 :           start->set_parent(locatedNode);
   33959           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   33960             : 
   33961           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   33962             : 
   33963             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   33964             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   33965             :        // ROSE_ASSERT(end != NULL);
   33966           0 :           if (end == NULL)
   33967             :              {
   33968           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   33969             :              }
   33970             :             else
   33971             :              {
   33972             : #if 0
   33973             :             // Debugging information
   33974             :                if (end->get_parent() == NULL)
   33975             :                   {
   33976             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33977             :                   }
   33978             : #endif
   33979           0 :                end->set_parent(locatedNode);
   33980           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   33981             :              }
   33982             : 
   33983           0 :           SgExpression* expression = isSgExpression(result);
   33984           0 :           if (isSgExpression(this) != NULL)
   33985             :              {
   33986           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   33987             : 
   33988             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   33989           0 :                if (operatorPosition != NULL)
   33990             :                   {
   33991             : #if 0
   33992             :                  // Debugging information
   33993             :                     if (operatorPosition->get_parent() == NULL)
   33994             :                        {
   33995             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   33996             :                        }
   33997             : #endif
   33998           0 :                     operatorPosition->set_parent(expression);
   33999           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   34000             :                   }
   34001             :              }
   34002             :         }
   34003             : 
   34004             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   34005           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   34006           0 :      if (initializedName != NULL)
   34007             :         {
   34008             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   34009           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   34010           0 :           ROSE_ASSERT(start != NULL);
   34011             : #if 0
   34012             :        // Debugging information
   34013             :           if (start->get_parent() == NULL)
   34014             :              {
   34015             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34016             :              }
   34017             : #endif
   34018           0 :           start->set_parent(initializedName);
   34019           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   34020             : 
   34021             : #if 0
   34022             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   34023             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   34024             : 
   34025             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   34026             :        // ROSE_ASSERT(end != NULL);
   34027             :           if (end == NULL)
   34028             :              {
   34029             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   34030             :              }
   34031             :             else
   34032             :              {
   34033             :                if (end->get_parent() == NULL)
   34034             :                   {
   34035             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34036             :                   }
   34037             :                end->set_parent(initializedName);
   34038             :                ROSE_ASSERT(end->get_parent() != NULL);
   34039             :              }
   34040             : #endif
   34041             :         }
   34042             : 
   34043             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   34044           0 :      help.insertCopiedNodePair(this,result);
   34045             : 
   34046             :   // printf ("End of copy SgToken = %p = %s \n",this,SageInterface::get_name(this).c_str());
   34047             : 
   34048             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   34049             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   34050           0 :      help.decrementDepth();
   34051             : 
   34052             :   // Test if this is the root of the copy!
   34053           0 :      if (help.get_depth() == 0)
   34054             :         {
   34055             :        // This is the original calling node.
   34056             : 
   34057             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   34058             :        // printf ("Calling SgToken::fixupCopy() (from root of AST being copied) \n");
   34059             : #if ALT_FIXUP_COPY
   34060             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   34061           0 :           fixupCopy_scopes (result,help);
   34062           0 :           fixupCopy_symbols (result,help);
   34063           0 :           fixupCopy_references (result,help);
   34064             : #else
   34065             :           fixupCopy(result,help);
   34066             : #endif
   34067             :        // Allow this to be called recursively, so accumulate the state.
   34068             :        // Also, clear the state in the SgCopyHelp object.
   34069             :        // help.clearState();
   34070             :         }
   34071             : 
   34072           0 :      return result;
   34073             :    }
   34074             : 
   34075             : 
   34076             : /* #line 34077 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   34077             : 
   34078             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   34079             : 
   34080           0 : SgNode* SgLocatedNodeSupport::copy ( SgCopyHelp& help) const
   34081             :    {
   34082           0 :      SgLocatedNodeSupport* result = NULL;
   34083             : 
   34084             :   // printf ("Copy SgLocatedNodeSupport = %p = %s \n",this,SageInterface::get_name(this).c_str());
   34085             : 
   34086             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   34087             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   34088             :   // The default value of the depth is 0, so after this call the depth is 1!
   34089           0 :      help.incrementDepth();
   34090             : 
   34091             : #if 0
   34092             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   34093             :   // but it is not generally true that things can only be copied once!
   34094             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   34095             :   // AstAttribute* existingAttribute = const_cast<SgLocatedNodeSupport*>(this)->attribute["copied"];
   34096             :      bool previouslyCopied = const_cast<SgLocatedNodeSupport*>(this)->attribute.exists("copied");
   34097             :      if (previouslyCopied == true)
   34098             :         {
   34099             :           this->get_file_info()->display("Called from copy SgLocatedNodeSupport: debug");
   34100             :         }
   34101             :      ROSE_ASSERT(previouslyCopied == false);
   34102             : 
   34103             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   34104             :      AstAttribute* newAttribute = new AstAttribute();
   34105             :      ROSE_ASSERT(newAttribute != NULL);
   34106             : 
   34107             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   34108             :      const_cast<SgLocatedNodeSupport*>(this)->attribute.add("copied",newAttribute);
   34109             : #endif
   34110             : 
   34111             :   // Copy data members from base classes
   34112             :   // Copy constructor parameter data member: startOfConstruct_copy
   34113             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   34114             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   34115           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   34116           0 :      if ( p_startOfConstruct != NULL ) 
   34117             :         { 
   34118           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   34119             :         } 
   34120             :        else 
   34121             :         { 
   34122             :           startOfConstruct_copy = NULL; 
   34123             :         } 
   34124             :  
   34125             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   34126             : 
   34127             :   // Build an empty copy of this object (will be filled in, but 
   34128             :   // the parent can't be set and must be set by the caller)
   34129           0 :      result = new SgLocatedNodeSupport(  startOfConstruct_copy );
   34130           0 :      ROSE_ASSERT(result != NULL);
   34131             : 
   34132             :   // Copy data members of "this" class
   34133             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   34134             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   34135             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   34136           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   34137           0 :      if ( p_endOfConstruct != NULL ) 
   34138             :         { 
   34139           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   34140             :         } 
   34141             :        else 
   34142             :         { 
   34143             :           endOfConstruct_copy = NULL; 
   34144             :         } 
   34145             :   /* check for a valid pointer and delete if present */ 
   34146           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   34147             :   /* add assignment to result here */ 
   34148           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   34149             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   34150             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   34151             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   34152           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   34153           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   34154             :         { 
   34155           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   34156             :         } 
   34157             :        else 
   34158             :         { 
   34159             :           attachedPreprocessingInfoPtr_copy = NULL; 
   34160             :         } 
   34161             :   /* check for a valid pointer and delete if present */ 
   34162           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   34163             :   /* add assignment to result here */ 
   34164           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   34165             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   34166             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   34167             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   34168           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   34169           0 :      if ( p_attributeMechanism != NULL ) 
   34170             :         { 
   34171           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   34172             :         } 
   34173             :        else 
   34174             :         { 
   34175             :           attributeMechanism_copy = NULL; 
   34176             :         } 
   34177             :   /* check for a valid pointer and delete if present */ 
   34178           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   34179             :   /* add assignment to result here */ 
   34180           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   34181             : 
   34182             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   34183             : 
   34184             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   34185             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   34186             :   // fixupCopy(result,help);
   34187             : 
   34188             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   34189             :   // the Sg_File_Info objects that are built for the new IR nodes.
   34190           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   34191           0 :      if (locatedNode != NULL)
   34192             :         {
   34193             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   34194           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   34195           0 :           ROSE_ASSERT(start != NULL);
   34196             : #if 0
   34197             :        // Debugging information
   34198             :           if (start->get_parent() == NULL)
   34199             :              {
   34200             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34201             :              }
   34202             : #endif
   34203           0 :           start->set_parent(locatedNode);
   34204           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   34205             : 
   34206           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   34207             : 
   34208             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   34209             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   34210             :        // ROSE_ASSERT(end != NULL);
   34211           0 :           if (end == NULL)
   34212             :              {
   34213           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   34214             :              }
   34215             :             else
   34216             :              {
   34217             : #if 0
   34218             :             // Debugging information
   34219             :                if (end->get_parent() == NULL)
   34220             :                   {
   34221             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34222             :                   }
   34223             : #endif
   34224           0 :                end->set_parent(locatedNode);
   34225           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   34226             :              }
   34227             : 
   34228           0 :           SgExpression* expression = isSgExpression(result);
   34229           0 :           if (isSgExpression(this) != NULL)
   34230             :              {
   34231           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   34232             : 
   34233             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   34234           0 :                if (operatorPosition != NULL)
   34235             :                   {
   34236             : #if 0
   34237             :                  // Debugging information
   34238             :                     if (operatorPosition->get_parent() == NULL)
   34239             :                        {
   34240             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34241             :                        }
   34242             : #endif
   34243           0 :                     operatorPosition->set_parent(expression);
   34244           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   34245             :                   }
   34246             :              }
   34247             :         }
   34248             : 
   34249             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   34250           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   34251           0 :      if (initializedName != NULL)
   34252             :         {
   34253             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   34254           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   34255           0 :           ROSE_ASSERT(start != NULL);
   34256             : #if 0
   34257             :        // Debugging information
   34258             :           if (start->get_parent() == NULL)
   34259             :              {
   34260             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34261             :              }
   34262             : #endif
   34263           0 :           start->set_parent(initializedName);
   34264           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   34265             : 
   34266             : #if 0
   34267             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   34268             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   34269             : 
   34270             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   34271             :        // ROSE_ASSERT(end != NULL);
   34272             :           if (end == NULL)
   34273             :              {
   34274             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   34275             :              }
   34276             :             else
   34277             :              {
   34278             :                if (end->get_parent() == NULL)
   34279             :                   {
   34280             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34281             :                   }
   34282             :                end->set_parent(initializedName);
   34283             :                ROSE_ASSERT(end->get_parent() != NULL);
   34284             :              }
   34285             : #endif
   34286             :         }
   34287             : 
   34288             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   34289           0 :      help.insertCopiedNodePair(this,result);
   34290             : 
   34291             :   // printf ("End of copy SgLocatedNodeSupport = %p = %s \n",this,SageInterface::get_name(this).c_str());
   34292             : 
   34293             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   34294             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   34295           0 :      help.decrementDepth();
   34296             : 
   34297             :   // Test if this is the root of the copy!
   34298           0 :      if (help.get_depth() == 0)
   34299             :         {
   34300             :        // This is the original calling node.
   34301             : 
   34302             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   34303             :        // printf ("Calling SgLocatedNodeSupport::fixupCopy() (from root of AST being copied) \n");
   34304             : #if ALT_FIXUP_COPY
   34305             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   34306           0 :           fixupCopy_scopes (result,help);
   34307           0 :           fixupCopy_symbols (result,help);
   34308           0 :           fixupCopy_references (result,help);
   34309             : #else
   34310             :           fixupCopy(result,help);
   34311             : #endif
   34312             :        // Allow this to be called recursively, so accumulate the state.
   34313             :        // Also, clear the state in the SgCopyHelp object.
   34314             :        // help.clearState();
   34315             :         }
   34316             : 
   34317           0 :      return result;
   34318             :    }
   34319             : 
   34320             : 
   34321             : /* #line 34322 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   34322             : 
   34323             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   34324             : 
   34325           0 : SgNode* SgCommonBlockObject::copy ( SgCopyHelp& help) const
   34326             :    {
   34327           0 :      SgCommonBlockObject* result = NULL;
   34328             : 
   34329             :   // printf ("Copy SgCommonBlockObject = %p = %s \n",this,SageInterface::get_name(this).c_str());
   34330             : 
   34331             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   34332             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   34333             :   // The default value of the depth is 0, so after this call the depth is 1!
   34334           0 :      help.incrementDepth();
   34335             : 
   34336             : #if 0
   34337             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   34338             :   // but it is not generally true that things can only be copied once!
   34339             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   34340             :   // AstAttribute* existingAttribute = const_cast<SgCommonBlockObject*>(this)->attribute["copied"];
   34341             :      bool previouslyCopied = const_cast<SgCommonBlockObject*>(this)->attribute.exists("copied");
   34342             :      if (previouslyCopied == true)
   34343             :         {
   34344             :           this->get_file_info()->display("Called from copy SgCommonBlockObject: debug");
   34345             :         }
   34346             :      ROSE_ASSERT(previouslyCopied == false);
   34347             : 
   34348             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   34349             :      AstAttribute* newAttribute = new AstAttribute();
   34350             :      ROSE_ASSERT(newAttribute != NULL);
   34351             : 
   34352             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   34353             :      const_cast<SgCommonBlockObject*>(this)->attribute.add("copied",newAttribute);
   34354             : #endif
   34355             : 
   34356             :   // Copy data members from base classes
   34357             :   // Copy constructor parameter data member: startOfConstruct_copy
   34358             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   34359             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   34360           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   34361           0 :      if ( p_startOfConstruct != NULL ) 
   34362             :         { 
   34363           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   34364             :         } 
   34365             :        else 
   34366             :         { 
   34367             :           startOfConstruct_copy = NULL; 
   34368             :         } 
   34369             :  
   34370             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   34371             : 
   34372             :   // Build an empty copy of this object (will be filled in, but 
   34373             :   // the parent can't be set and must be set by the caller)
   34374           0 :      result = new SgCommonBlockObject(  startOfConstruct_copy );
   34375           0 :      ROSE_ASSERT(result != NULL);
   34376             : 
   34377             :   // Copy data members of "this" class
   34378             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   34379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   34380             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   34381           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   34382           0 :      if ( p_endOfConstruct != NULL ) 
   34383             :         { 
   34384           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   34385             :         } 
   34386             :        else 
   34387             :         { 
   34388             :           endOfConstruct_copy = NULL; 
   34389             :         } 
   34390             :   /* check for a valid pointer and delete if present */ 
   34391           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   34392             :   /* add assignment to result here */ 
   34393           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   34394             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   34395             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   34396             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   34397           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   34398           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   34399             :         { 
   34400           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   34401             :         } 
   34402             :        else 
   34403             :         { 
   34404             :           attachedPreprocessingInfoPtr_copy = NULL; 
   34405             :         } 
   34406             :   /* check for a valid pointer and delete if present */ 
   34407           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   34408             :   /* add assignment to result here */ 
   34409           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   34410             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   34411             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   34412             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   34413           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   34414           0 :      if ( p_attributeMechanism != NULL ) 
   34415             :         { 
   34416           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   34417             :         } 
   34418             :        else 
   34419             :         { 
   34420             :           attributeMechanism_copy = NULL; 
   34421             :         } 
   34422             :   /* check for a valid pointer and delete if present */ 
   34423           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   34424             :   /* add assignment to result here */ 
   34425           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   34426             :   // Copy non-constructor parameter data member (access function): block_name_copy
   34427             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for block_name
   34428             :   // case: toBeCopied == COPY_DATA for block_name
   34429           0 :      std::string block_name_copy = p_block_name; 
   34430           0 :      result->p_block_name = block_name_copy; 
   34431             :   // Copy non-constructor parameter data member (access function): variable_reference_list_copy
   34432           0 :      SgExprListExp* variable_reference_list_copy; 
   34433             :   // case: not a listType for (using conditionalToCopyVariable)variable_reference_list
   34434           0 :           if (get_variable_reference_list() != NULL) 
   34435             :              { 
   34436           0 :                variable_reference_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_variable_reference_list())); 
   34437             :              } 
   34438             :             else 
   34439             :              { 
   34440             :                variable_reference_list_copy = NULL; 
   34441             :              } 
   34442             :   /* check for a valid pointer and delete if present */ 
   34443           0 :      if (result->p_variable_reference_list != NULL) delete result->p_variable_reference_list; 
   34444           0 :      result->p_variable_reference_list = variable_reference_list_copy; 
   34445             :   // case: not a listType for (using conditionalToSetParent)variable_reference_list
   34446           0 :           if ( (variable_reference_list_copy != NULL) && (variable_reference_list_copy->get_parent() == NULL) && (isSgType(variable_reference_list_copy) == NULL) ) 
   34447             :              { 
   34448           0 :                variable_reference_list_copy->set_parent(result); 
   34449             :              } 
   34450             : 
   34451             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   34452             : 
   34453             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   34454             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   34455             :   // fixupCopy(result,help);
   34456             : 
   34457             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   34458             :   // the Sg_File_Info objects that are built for the new IR nodes.
   34459           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   34460           0 :      if (locatedNode != NULL)
   34461             :         {
   34462             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   34463           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   34464           0 :           ROSE_ASSERT(start != NULL);
   34465             : #if 0
   34466             :        // Debugging information
   34467             :           if (start->get_parent() == NULL)
   34468             :              {
   34469             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34470             :              }
   34471             : #endif
   34472           0 :           start->set_parent(locatedNode);
   34473           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   34474             : 
   34475           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   34476             : 
   34477             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   34478             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   34479             :        // ROSE_ASSERT(end != NULL);
   34480           0 :           if (end == NULL)
   34481             :              {
   34482           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   34483             :              }
   34484             :             else
   34485             :              {
   34486             : #if 0
   34487             :             // Debugging information
   34488             :                if (end->get_parent() == NULL)
   34489             :                   {
   34490             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34491             :                   }
   34492             : #endif
   34493           0 :                end->set_parent(locatedNode);
   34494           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   34495             :              }
   34496             : 
   34497           0 :           SgExpression* expression = isSgExpression(result);
   34498           0 :           if (isSgExpression(this) != NULL)
   34499             :              {
   34500           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   34501             : 
   34502             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   34503           0 :                if (operatorPosition != NULL)
   34504             :                   {
   34505             : #if 0
   34506             :                  // Debugging information
   34507             :                     if (operatorPosition->get_parent() == NULL)
   34508             :                        {
   34509             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34510             :                        }
   34511             : #endif
   34512           0 :                     operatorPosition->set_parent(expression);
   34513           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   34514             :                   }
   34515             :              }
   34516             :         }
   34517             : 
   34518             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   34519           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   34520           0 :      if (initializedName != NULL)
   34521             :         {
   34522             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   34523           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   34524           0 :           ROSE_ASSERT(start != NULL);
   34525             : #if 0
   34526             :        // Debugging information
   34527             :           if (start->get_parent() == NULL)
   34528             :              {
   34529             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34530             :              }
   34531             : #endif
   34532           0 :           start->set_parent(initializedName);
   34533           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   34534             : 
   34535             : #if 0
   34536             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   34537             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   34538             : 
   34539             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   34540             :        // ROSE_ASSERT(end != NULL);
   34541             :           if (end == NULL)
   34542             :              {
   34543             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   34544             :              }
   34545             :             else
   34546             :              {
   34547             :                if (end->get_parent() == NULL)
   34548             :                   {
   34549             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34550             :                   }
   34551             :                end->set_parent(initializedName);
   34552             :                ROSE_ASSERT(end->get_parent() != NULL);
   34553             :              }
   34554             : #endif
   34555             :         }
   34556             : 
   34557             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   34558           0 :      help.insertCopiedNodePair(this,result);
   34559             : 
   34560             :   // printf ("End of copy SgCommonBlockObject = %p = %s \n",this,SageInterface::get_name(this).c_str());
   34561             : 
   34562             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   34563             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   34564           0 :      help.decrementDepth();
   34565             : 
   34566             :   // Test if this is the root of the copy!
   34567           0 :      if (help.get_depth() == 0)
   34568             :         {
   34569             :        // This is the original calling node.
   34570             : 
   34571             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   34572             :        // printf ("Calling SgCommonBlockObject::fixupCopy() (from root of AST being copied) \n");
   34573             : #if ALT_FIXUP_COPY
   34574             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   34575           0 :           fixupCopy_scopes (result,help);
   34576           0 :           fixupCopy_symbols (result,help);
   34577           0 :           fixupCopy_references (result,help);
   34578             : #else
   34579             :           fixupCopy(result,help);
   34580             : #endif
   34581             :        // Allow this to be called recursively, so accumulate the state.
   34582             :        // Also, clear the state in the SgCopyHelp object.
   34583             :        // help.clearState();
   34584             :         }
   34585             : 
   34586           0 :      return result;
   34587             :    }
   34588             : 
   34589             : 
   34590             : /* #line 34591 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   34591             : 
   34592             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   34593             : 
   34594          40 : SgNode* SgInitializedName::copy ( SgCopyHelp& help) const
   34595             :    {
   34596          40 :      SgInitializedName* result = NULL;
   34597             : 
   34598             :   // printf ("Copy SgInitializedName = %p = %s \n",this,SageInterface::get_name(this).c_str());
   34599             : 
   34600             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   34601             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   34602             :   // The default value of the depth is 0, so after this call the depth is 1!
   34603          40 :      help.incrementDepth();
   34604             : 
   34605             : #if 0
   34606             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   34607             :   // but it is not generally true that things can only be copied once!
   34608             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   34609             :   // AstAttribute* existingAttribute = const_cast<SgInitializedName*>(this)->attribute["copied"];
   34610             :      bool previouslyCopied = const_cast<SgInitializedName*>(this)->attribute.exists("copied");
   34611             :      if (previouslyCopied == true)
   34612             :         {
   34613             :           this->get_file_info()->display("Called from copy SgInitializedName: debug");
   34614             :         }
   34615             :      ROSE_ASSERT(previouslyCopied == false);
   34616             : 
   34617             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   34618             :      AstAttribute* newAttribute = new AstAttribute();
   34619             :      ROSE_ASSERT(newAttribute != NULL);
   34620             : 
   34621             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   34622             :      const_cast<SgInitializedName*>(this)->attribute.add("copied",newAttribute);
   34623             : #endif
   34624             : 
   34625             :   // Copy data members from base classes
   34626             :   // Copy constructor parameter data member: startOfConstruct_copy
   34627             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   34628             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   34629          40 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   34630          40 :      if ( p_startOfConstruct != NULL ) 
   34631             :         { 
   34632          40 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   34633             :         } 
   34634             :        else 
   34635             :         { 
   34636             :           startOfConstruct_copy = NULL; 
   34637             :         } 
   34638             :   // Copy constructor parameter data member: name_copy
   34639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   34640             :   // case: toBeCopied == COPY_DATA for name
   34641          40 :      SgName name_copy = p_name; 
   34642             :   // Copy constructor parameter data member: typeptr_copy
   34643             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typeptr
   34644             :   // case: toBeCopied == COPY_DATA for typeptr
   34645          40 :      SgType* typeptr_copy = p_typeptr; 
   34646             :  
   34647             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   34648             : 
   34649             :   // Build an empty copy of this object (will be filled in, but 
   34650             :   // the parent can't be set and must be set by the caller)
   34651          40 :      result = new SgInitializedName(  startOfConstruct_copy, name_copy, typeptr_copy );
   34652          40 :      ROSE_ASSERT(result != NULL);
   34653             : 
   34654             :   // Copy data members of "this" class
   34655             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   34656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   34657             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   34658          40 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   34659          40 :      if ( p_endOfConstruct != NULL ) 
   34660             :         { 
   34661          40 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   34662             :         } 
   34663             :        else 
   34664             :         { 
   34665             :           endOfConstruct_copy = NULL; 
   34666             :         } 
   34667             :   /* check for a valid pointer and delete if present */ 
   34668          40 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   34669             :   /* add assignment to result here */ 
   34670          40 :      result->p_endOfConstruct = endOfConstruct_copy; 
   34671             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   34672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   34673             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   34674          40 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   34675          40 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   34676             :         { 
   34677           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   34678             :         } 
   34679             :        else 
   34680             :         { 
   34681             :           attachedPreprocessingInfoPtr_copy = NULL; 
   34682             :         } 
   34683             :   /* check for a valid pointer and delete if present */ 
   34684          40 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   34685             :   /* add assignment to result here */ 
   34686          40 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   34687             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   34688             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   34689             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   34690          40 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   34691          40 :      if ( p_attributeMechanism != NULL ) 
   34692             :         { 
   34693           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   34694             :         } 
   34695             :        else 
   34696             :         { 
   34697             :           attributeMechanism_copy = NULL; 
   34698             :         } 
   34699             :   /* check for a valid pointer and delete if present */ 
   34700          40 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   34701             :   /* add assignment to result here */ 
   34702          40 :      result->p_attributeMechanism = attributeMechanism_copy; 
   34703             :   // Copy non-constructor parameter data member (access function): microsoft_uuid_string_copy
   34704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for microsoft_uuid_string
   34705             :   // case: toBeCopied == COPY_DATA for microsoft_uuid_string
   34706          80 :      std::string microsoft_uuid_string_copy = p_microsoft_uuid_string; 
   34707          40 :      result->p_microsoft_uuid_string = microsoft_uuid_string_copy; 
   34708             :   // Copy non-constructor parameter data member (access function): initptr_copy
   34709          40 :      SgInitializer* initptr_copy; 
   34710             :   // case: not a listType for (using conditionalToCopyVariable)initptr
   34711          40 :           if (get_initptr() != NULL) 
   34712             :              { 
   34713          18 :                initptr_copy = static_cast<SgInitializer*>(help.copyAst(get_initptr())); 
   34714             :              } 
   34715             :             else 
   34716             :              { 
   34717             :                initptr_copy = NULL; 
   34718             :              } 
   34719             :   /* check for a valid pointer and delete if present */ 
   34720          40 :      if (result->p_initptr != NULL) delete result->p_initptr; 
   34721          40 :      result->p_initptr = initptr_copy; 
   34722             :   // case: not a listType for (using conditionalToSetParent)initptr
   34723          40 :           if ( (initptr_copy != NULL) && (initptr_copy->get_parent() == NULL) && (isSgType(initptr_copy) == NULL) ) 
   34724             :              { 
   34725          18 :                initptr_copy->set_parent(result); 
   34726             :              } 
   34727             :   // Copy non-constructor parameter data member (access function): prev_decl_item_copy
   34728             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prev_decl_item
   34729             :   // case: toBeCopied == COPY_DATA for prev_decl_item
   34730          40 :      SgInitializedName* prev_decl_item_copy = p_prev_decl_item; 
   34731          40 :      result->p_prev_decl_item = prev_decl_item_copy; 
   34732             :   // Copy non-constructor parameter data member (no access function): result->p_is_initializer
   34733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_initializer
   34734             :   // case: toBeCopied == COPY_DATA for is_initializer
   34735          40 :      bool is_initializer_copy = p_is_initializer; 
   34736          40 :      result->p_is_initializer = is_initializer_copy; 
   34737             :   // Copy non-constructor parameter data member (access function): declptr_copy
   34738             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declptr
   34739             :   // case: toBeCopied == COPY_DATA for declptr
   34740          40 :      SgDeclarationStatement* declptr_copy = p_declptr; 
   34741          40 :      result->p_declptr = declptr_copy; 
   34742             :   // Copy non-constructor parameter data member (access function): scope_copy
   34743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   34744             :   // case: toBeCopied == COPY_DATA for scope
   34745          40 :      SgScopeStatement* scope_copy = p_scope; 
   34746          40 :      result->p_scope = scope_copy; 
   34747             :   // Copy non-constructor parameter data member (access function): preinitialization_copy
   34748             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for preinitialization
   34749             :   // case: toBeCopied == COPY_DATA for preinitialization
   34750          40 :      SgInitializedName::preinitialization_enum preinitialization_copy = p_preinitialization; 
   34751          40 :      result->p_preinitialization = preinitialization_copy; 
   34752             :   // Copy non-constructor parameter data member (access function): register_name_code_copy
   34753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for register_name_code
   34754             :   // case: toBeCopied == COPY_DATA for register_name_code
   34755          40 :      SgInitializedName::asm_register_name_enum register_name_code_copy = p_register_name_code; 
   34756          40 :      result->p_register_name_code = register_name_code_copy; 
   34757             :   // Copy non-constructor parameter data member (access function): excess_specifier_copy
   34758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for excess_specifier
   34759             :   // case: toBeCopied == COPY_DATA for excess_specifier
   34760          40 :      SgInitializedName::excess_specifier_enum excess_specifier_copy = p_excess_specifier; 
   34761          40 :      result->p_excess_specifier = excess_specifier_copy; 
   34762             :   // Copy non-constructor parameter data member (access function): register_name_string_copy
   34763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for register_name_string
   34764             :   // case: toBeCopied == COPY_DATA for register_name_string
   34765          80 :      std::string register_name_string_copy = p_register_name_string; 
   34766          40 :      result->p_register_name_string = register_name_string_copy; 
   34767             :   // Copy non-constructor parameter data member (access function): requiresGlobalNameQualificationOnType_copy
   34768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresGlobalNameQualificationOnType
   34769             :   // case: toBeCopied == COPY_DATA for requiresGlobalNameQualificationOnType
   34770          40 :      bool requiresGlobalNameQualificationOnType_copy = p_requiresGlobalNameQualificationOnType; 
   34771          40 :      result->p_requiresGlobalNameQualificationOnType = requiresGlobalNameQualificationOnType_copy; 
   34772             :   // Copy non-constructor parameter data member (access function): shapeDeferred_copy
   34773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for shapeDeferred
   34774             :   // case: toBeCopied == COPY_DATA for shapeDeferred
   34775          40 :      bool shapeDeferred_copy = p_shapeDeferred; 
   34776          40 :      result->p_shapeDeferred = shapeDeferred_copy; 
   34777             :   // Copy non-constructor parameter data member (access function): initializationDeferred_copy
   34778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for initializationDeferred
   34779             :   // case: toBeCopied == COPY_DATA for initializationDeferred
   34780          40 :      bool initializationDeferred_copy = p_initializationDeferred; 
   34781          40 :      result->p_initializationDeferred = initializationDeferred_copy; 
   34782             :   // Copy non-constructor parameter data member (access function): gnu_attribute_modifierVector_copy
   34783             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_modifierVector
   34784             :   // case: toBeCopied == COPY_DATA for gnu_attribute_modifierVector
   34785          80 :      SgBitVector gnu_attribute_modifierVector_copy = p_gnu_attribute_modifierVector; 
   34786          40 :      result->p_gnu_attribute_modifierVector = gnu_attribute_modifierVector_copy; 
   34787             :   // Copy non-constructor parameter data member (access function): gnu_attribute_initialization_priority_copy
   34788             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_initialization_priority
   34789             :   // case: toBeCopied == COPY_DATA for gnu_attribute_initialization_priority
   34790          40 :      unsigned long int gnu_attribute_initialization_priority_copy = p_gnu_attribute_initialization_priority; 
   34791          40 :      result->p_gnu_attribute_initialization_priority = gnu_attribute_initialization_priority_copy; 
   34792             :   // Copy non-constructor parameter data member (access function): gnu_attribute_named_weak_reference_copy
   34793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_named_weak_reference
   34794             :   // case: toBeCopied == COPY_DATA for gnu_attribute_named_weak_reference
   34795          80 :      std::string gnu_attribute_named_weak_reference_copy = p_gnu_attribute_named_weak_reference; 
   34796          40 :      result->p_gnu_attribute_named_weak_reference = gnu_attribute_named_weak_reference_copy; 
   34797             :   // Copy non-constructor parameter data member (access function): gnu_attribute_named_alias_copy
   34798             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_named_alias
   34799             :   // case: toBeCopied == COPY_DATA for gnu_attribute_named_alias
   34800          80 :      std::string gnu_attribute_named_alias_copy = p_gnu_attribute_named_alias; 
   34801          40 :      result->p_gnu_attribute_named_alias = gnu_attribute_named_alias_copy; 
   34802             :   // Copy non-constructor parameter data member (access function): gnu_attribute_cleanup_function_copy
   34803             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_cleanup_function
   34804             :   // case: toBeCopied == COPY_DATA for gnu_attribute_cleanup_function
   34805          80 :      std::string gnu_attribute_cleanup_function_copy = p_gnu_attribute_cleanup_function; 
   34806          40 :      result->p_gnu_attribute_cleanup_function = gnu_attribute_cleanup_function_copy; 
   34807             :   // Copy non-constructor parameter data member (access function): gnu_attribute_section_name_copy
   34808             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_section_name
   34809             :   // case: toBeCopied == COPY_DATA for gnu_attribute_section_name
   34810          80 :      std::string gnu_attribute_section_name_copy = p_gnu_attribute_section_name; 
   34811          40 :      result->p_gnu_attribute_section_name = gnu_attribute_section_name_copy; 
   34812             :   // Copy non-constructor parameter data member (access function): gnu_attribute_alignment_copy
   34813             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_alignment
   34814             :   // case: toBeCopied == COPY_DATA for gnu_attribute_alignment
   34815          40 :      int gnu_attribute_alignment_copy = p_gnu_attribute_alignment; 
   34816          40 :      result->p_gnu_attribute_alignment = gnu_attribute_alignment_copy; 
   34817             :   // Copy non-constructor parameter data member (access function): gnu_attribute_visability_copy
   34818             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_attribute_visability
   34819             :   // case: toBeCopied == COPY_DATA for gnu_attribute_visability
   34820          40 :      SgDeclarationModifier::gnu_declaration_visability_enum gnu_attribute_visability_copy = p_gnu_attribute_visability; 
   34821          40 :      result->p_gnu_attribute_visability = gnu_attribute_visability_copy; 
   34822             :   // Copy non-constructor parameter data member (access function): protected_declaration_copy
   34823             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for protected_declaration
   34824             :   // case: toBeCopied == COPY_DATA for protected_declaration
   34825          40 :      bool protected_declaration_copy = p_protected_declaration; 
   34826          40 :      result->p_protected_declaration = protected_declaration_copy; 
   34827             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   34828             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   34829             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   34830          40 :      int name_qualification_length_copy = p_name_qualification_length; 
   34831          40 :      result->p_name_qualification_length = name_qualification_length_copy; 
   34832             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   34833             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   34834             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   34835          40 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   34836          40 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   34837             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   34838             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   34839             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   34840          40 :      bool global_qualification_required_copy = p_global_qualification_required; 
   34841          40 :      result->p_global_qualification_required = global_qualification_required_copy; 
   34842             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_type
   34843             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_type
   34844             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_type
   34845          40 :      int name_qualification_length_for_type_copy = p_name_qualification_length_for_type; 
   34846          40 :      result->p_name_qualification_length_for_type = name_qualification_length_for_type_copy; 
   34847             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_type
   34848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_type
   34849             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_type
   34850          40 :      bool type_elaboration_required_for_type_copy = p_type_elaboration_required_for_type; 
   34851          40 :      result->p_type_elaboration_required_for_type = type_elaboration_required_for_type_copy; 
   34852             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_type
   34853             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_type
   34854             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_type
   34855          40 :      bool global_qualification_required_for_type_copy = p_global_qualification_required_for_type; 
   34856          40 :      result->p_global_qualification_required_for_type = global_qualification_required_for_type_copy; 
   34857             :   // Copy non-constructor parameter data member (access function): hasArrayTypeWithEmptyBracketSyntax_copy
   34858             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for hasArrayTypeWithEmptyBracketSyntax
   34859             :   // case: toBeCopied == COPY_DATA for hasArrayTypeWithEmptyBracketSyntax
   34860          40 :      bool hasArrayTypeWithEmptyBracketSyntax_copy = p_hasArrayTypeWithEmptyBracketSyntax; 
   34861          40 :      result->p_hasArrayTypeWithEmptyBracketSyntax = hasArrayTypeWithEmptyBracketSyntax_copy; 
   34862             :   // Copy non-constructor parameter data member (access function): using_C11_Alignas_keyword_copy
   34863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Alignas_keyword
   34864             :   // case: toBeCopied == COPY_DATA for using_C11_Alignas_keyword
   34865          40 :      bool using_C11_Alignas_keyword_copy = p_using_C11_Alignas_keyword; 
   34866          40 :      result->p_using_C11_Alignas_keyword = using_C11_Alignas_keyword_copy; 
   34867             :   // Copy non-constructor parameter data member (access function): constant_or_type_argument_for_Alignas_keyword_copy
   34868             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for constant_or_type_argument_for_Alignas_keyword
   34869             :   // case: toBeCopied == COPY_DATA for constant_or_type_argument_for_Alignas_keyword
   34870          40 :      SgNode* constant_or_type_argument_for_Alignas_keyword_copy = p_constant_or_type_argument_for_Alignas_keyword; 
   34871          40 :      result->p_constant_or_type_argument_for_Alignas_keyword = constant_or_type_argument_for_Alignas_keyword_copy; 
   34872             :   // Copy non-constructor parameter data member (access function): using_auto_keyword_copy
   34873             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_auto_keyword
   34874             :   // case: toBeCopied == COPY_DATA for using_auto_keyword
   34875          40 :      bool using_auto_keyword_copy = p_using_auto_keyword; 
   34876          40 :      result->p_using_auto_keyword = using_auto_keyword_copy; 
   34877             :   // Copy non-constructor parameter data member (access function): auto_decltype_copy
   34878             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for auto_decltype
   34879             :   // case: toBeCopied == COPY_DATA for auto_decltype
   34880          40 :      SgType * auto_decltype_copy = p_auto_decltype; 
   34881          40 :      result->p_auto_decltype = auto_decltype_copy; 
   34882             :   // Copy non-constructor parameter data member (access function): using_device_keyword_copy
   34883             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_device_keyword
   34884             :   // case: toBeCopied == COPY_DATA for using_device_keyword
   34885          40 :      bool using_device_keyword_copy = p_using_device_keyword; 
   34886          40 :      result->p_using_device_keyword = using_device_keyword_copy; 
   34887             :   // Copy non-constructor parameter data member (access function): is_braced_initialized_copy
   34888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_braced_initialized
   34889             :   // case: toBeCopied == COPY_DATA for is_braced_initialized
   34890          40 :      bool is_braced_initialized_copy = p_is_braced_initialized; 
   34891          40 :      result->p_is_braced_initialized = is_braced_initialized_copy; 
   34892             :   // Copy non-constructor parameter data member (access function): using_assignment_copy_constructor_syntax_copy
   34893             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_assignment_copy_constructor_syntax
   34894             :   // case: toBeCopied == COPY_DATA for using_assignment_copy_constructor_syntax
   34895          40 :      bool using_assignment_copy_constructor_syntax_copy = p_using_assignment_copy_constructor_syntax; 
   34896          40 :      result->p_using_assignment_copy_constructor_syntax = using_assignment_copy_constructor_syntax_copy; 
   34897             :   // Copy non-constructor parameter data member (access function): needs_definitions_copy
   34898             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for needs_definitions
   34899             :   // case: toBeCopied == COPY_DATA for needs_definitions
   34900          40 :      bool needs_definitions_copy = p_needs_definitions; 
   34901          40 :      result->p_needs_definitions = needs_definitions_copy; 
   34902             :   // Copy non-constructor parameter data member (access function): is_parameter_pack_copy
   34903             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_parameter_pack
   34904             :   // case: toBeCopied == COPY_DATA for is_parameter_pack
   34905          40 :      bool is_parameter_pack_copy = p_is_parameter_pack; 
   34906          40 :      result->p_is_parameter_pack = is_parameter_pack_copy; 
   34907             :   // Copy non-constructor parameter data member (access function): is_pack_element_copy
   34908             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_pack_element
   34909             :   // case: toBeCopied == COPY_DATA for is_pack_element
   34910          40 :      bool is_pack_element_copy = p_is_pack_element; 
   34911          40 :      result->p_is_pack_element = is_pack_element_copy; 
   34912             : 
   34913             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   34914             : 
   34915             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   34916             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   34917             :   // fixupCopy(result,help);
   34918             : 
   34919             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   34920             :   // the Sg_File_Info objects that are built for the new IR nodes.
   34921          40 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   34922          40 :      if (locatedNode != NULL)
   34923             :         {
   34924             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   34925          40 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   34926          40 :           ROSE_ASSERT(start != NULL);
   34927             : #if 0
   34928             :        // Debugging information
   34929             :           if (start->get_parent() == NULL)
   34930             :              {
   34931             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34932             :              }
   34933             : #endif
   34934          40 :           start->set_parent(locatedNode);
   34935          40 :           ROSE_ASSERT(start->get_parent() != NULL);
   34936             : 
   34937          40 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   34938             : 
   34939             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   34940             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   34941             :        // ROSE_ASSERT(end != NULL);
   34942          40 :           if (end == NULL)
   34943             :              {
   34944           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   34945             :              }
   34946             :             else
   34947             :              {
   34948             : #if 0
   34949             :             // Debugging information
   34950             :                if (end->get_parent() == NULL)
   34951             :                   {
   34952             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34953             :                   }
   34954             : #endif
   34955          40 :                end->set_parent(locatedNode);
   34956          40 :                ROSE_ASSERT(end->get_parent() != NULL);
   34957             :              }
   34958             : 
   34959          40 :           SgExpression* expression = isSgExpression(result);
   34960          40 :           if (isSgExpression(this) != NULL)
   34961             :              {
   34962           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   34963             : 
   34964             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   34965           0 :                if (operatorPosition != NULL)
   34966             :                   {
   34967             : #if 0
   34968             :                  // Debugging information
   34969             :                     if (operatorPosition->get_parent() == NULL)
   34970             :                        {
   34971             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34972             :                        }
   34973             : #endif
   34974           0 :                     operatorPosition->set_parent(expression);
   34975           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   34976             :                   }
   34977             :              }
   34978             :         }
   34979             : 
   34980             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   34981          40 :      SgInitializedName* initializedName = isSgInitializedName(result);
   34982          40 :      if (initializedName != NULL)
   34983             :         {
   34984             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   34985          40 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   34986          40 :           ROSE_ASSERT(start != NULL);
   34987             : #if 0
   34988             :        // Debugging information
   34989             :           if (start->get_parent() == NULL)
   34990             :              {
   34991             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   34992             :              }
   34993             : #endif
   34994          40 :           start->set_parent(initializedName);
   34995          40 :           ROSE_ASSERT(start->get_parent() != NULL);
   34996             : 
   34997             : #if 0
   34998             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   34999             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   35000             : 
   35001             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   35002             :        // ROSE_ASSERT(end != NULL);
   35003             :           if (end == NULL)
   35004             :              {
   35005             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   35006             :              }
   35007             :             else
   35008             :              {
   35009             :                if (end->get_parent() == NULL)
   35010             :                   {
   35011             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35012             :                   }
   35013             :                end->set_parent(initializedName);
   35014             :                ROSE_ASSERT(end->get_parent() != NULL);
   35015             :              }
   35016             : #endif
   35017             :         }
   35018             : 
   35019             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   35020          40 :      help.insertCopiedNodePair(this,result);
   35021             : 
   35022             :   // printf ("End of copy SgInitializedName = %p = %s \n",this,SageInterface::get_name(this).c_str());
   35023             : 
   35024             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   35025             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   35026          40 :      help.decrementDepth();
   35027             : 
   35028             :   // Test if this is the root of the copy!
   35029          40 :      if (help.get_depth() == 0)
   35030             :         {
   35031             :        // This is the original calling node.
   35032             : 
   35033             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   35034             :        // printf ("Calling SgInitializedName::fixupCopy() (from root of AST being copied) \n");
   35035             : #if ALT_FIXUP_COPY
   35036             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   35037           0 :           fixupCopy_scopes (result,help);
   35038           0 :           fixupCopy_symbols (result,help);
   35039           0 :           fixupCopy_references (result,help);
   35040             : #else
   35041             :           fixupCopy(result,help);
   35042             : #endif
   35043             :        // Allow this to be called recursively, so accumulate the state.
   35044             :        // Also, clear the state in the SgCopyHelp object.
   35045             :        // help.clearState();
   35046             :         }
   35047             : 
   35048          80 :      return result;
   35049             :    }
   35050             : 
   35051             : 
   35052             : /* #line 35053 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   35053             : 
   35054             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35055             : 
   35056           0 : SgNode* SgInterfaceBody::copy ( SgCopyHelp& help) const
   35057             :    {
   35058           0 :      SgInterfaceBody* result = NULL;
   35059             : 
   35060             :   // printf ("Copy SgInterfaceBody = %p = %s \n",this,SageInterface::get_name(this).c_str());
   35061             : 
   35062             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   35063             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   35064             :   // The default value of the depth is 0, so after this call the depth is 1!
   35065           0 :      help.incrementDepth();
   35066             : 
   35067             : #if 0
   35068             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   35069             :   // but it is not generally true that things can only be copied once!
   35070             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   35071             :   // AstAttribute* existingAttribute = const_cast<SgInterfaceBody*>(this)->attribute["copied"];
   35072             :      bool previouslyCopied = const_cast<SgInterfaceBody*>(this)->attribute.exists("copied");
   35073             :      if (previouslyCopied == true)
   35074             :         {
   35075             :           this->get_file_info()->display("Called from copy SgInterfaceBody: debug");
   35076             :         }
   35077             :      ROSE_ASSERT(previouslyCopied == false);
   35078             : 
   35079             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   35080             :      AstAttribute* newAttribute = new AstAttribute();
   35081             :      ROSE_ASSERT(newAttribute != NULL);
   35082             : 
   35083             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   35084             :      const_cast<SgInterfaceBody*>(this)->attribute.add("copied",newAttribute);
   35085             : #endif
   35086             : 
   35087             :   // Copy data members from base classes
   35088             :   // Copy constructor parameter data member: startOfConstruct_copy
   35089             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   35090             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   35091           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   35092           0 :      if ( p_startOfConstruct != NULL ) 
   35093             :         { 
   35094           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   35095             :         } 
   35096             :        else 
   35097             :         { 
   35098             :           startOfConstruct_copy = NULL; 
   35099             :         } 
   35100             :   // Copy constructor parameter data member: function_name_copy
   35101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for function_name
   35102             :   // case: toBeCopied == COPY_DATA for function_name
   35103           0 :      SgName function_name_copy = p_function_name; 
   35104             :   // Copy constructor parameter data member: functionDeclaration_copy
   35105             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionDeclaration
   35106             :   // case: toBeCopied == COPY_DATA for functionDeclaration
   35107           0 :      SgFunctionDeclaration* functionDeclaration_copy = p_functionDeclaration; 
   35108             :   // Copy constructor parameter data member: use_function_name_copy
   35109             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for use_function_name
   35110             :   // case: toBeCopied == COPY_DATA for use_function_name
   35111           0 :      bool use_function_name_copy = p_use_function_name; 
   35112             :  
   35113             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35114             : 
   35115             :   // Build an empty copy of this object (will be filled in, but 
   35116             :   // the parent can't be set and must be set by the caller)
   35117           0 :      result = new SgInterfaceBody(  startOfConstruct_copy, function_name_copy, functionDeclaration_copy, use_function_name_copy );
   35118           0 :      ROSE_ASSERT(result != NULL);
   35119             : 
   35120             :   // Copy data members of "this" class
   35121             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   35122             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   35123             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   35124           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   35125           0 :      if ( p_endOfConstruct != NULL ) 
   35126             :         { 
   35127           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   35128             :         } 
   35129             :        else 
   35130             :         { 
   35131             :           endOfConstruct_copy = NULL; 
   35132             :         } 
   35133             :   /* check for a valid pointer and delete if present */ 
   35134           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   35135             :   /* add assignment to result here */ 
   35136           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   35137             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   35138             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   35139             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   35140           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   35141           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   35142             :         { 
   35143           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   35144             :         } 
   35145             :        else 
   35146             :         { 
   35147             :           attachedPreprocessingInfoPtr_copy = NULL; 
   35148             :         } 
   35149             :   /* check for a valid pointer and delete if present */ 
   35150           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   35151             :   /* add assignment to result here */ 
   35152           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   35153             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   35154             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   35155             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   35156           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   35157           0 :      if ( p_attributeMechanism != NULL ) 
   35158             :         { 
   35159           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   35160             :         } 
   35161             :        else 
   35162             :         { 
   35163             :           attributeMechanism_copy = NULL; 
   35164             :         } 
   35165             :   /* check for a valid pointer and delete if present */ 
   35166           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   35167             :   /* add assignment to result here */ 
   35168           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   35169             : 
   35170             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35171             : 
   35172             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   35173             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   35174             :   // fixupCopy(result,help);
   35175             : 
   35176             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   35177             :   // the Sg_File_Info objects that are built for the new IR nodes.
   35178           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   35179           0 :      if (locatedNode != NULL)
   35180             :         {
   35181             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   35182           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   35183           0 :           ROSE_ASSERT(start != NULL);
   35184             : #if 0
   35185             :        // Debugging information
   35186             :           if (start->get_parent() == NULL)
   35187             :              {
   35188             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35189             :              }
   35190             : #endif
   35191           0 :           start->set_parent(locatedNode);
   35192           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   35193             : 
   35194           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   35195             : 
   35196             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   35197             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   35198             :        // ROSE_ASSERT(end != NULL);
   35199           0 :           if (end == NULL)
   35200             :              {
   35201           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   35202             :              }
   35203             :             else
   35204             :              {
   35205             : #if 0
   35206             :             // Debugging information
   35207             :                if (end->get_parent() == NULL)
   35208             :                   {
   35209             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35210             :                   }
   35211             : #endif
   35212           0 :                end->set_parent(locatedNode);
   35213           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   35214             :              }
   35215             : 
   35216           0 :           SgExpression* expression = isSgExpression(result);
   35217           0 :           if (isSgExpression(this) != NULL)
   35218             :              {
   35219           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   35220             : 
   35221             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   35222           0 :                if (operatorPosition != NULL)
   35223             :                   {
   35224             : #if 0
   35225             :                  // Debugging information
   35226             :                     if (operatorPosition->get_parent() == NULL)
   35227             :                        {
   35228             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35229             :                        }
   35230             : #endif
   35231           0 :                     operatorPosition->set_parent(expression);
   35232           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   35233             :                   }
   35234             :              }
   35235             :         }
   35236             : 
   35237             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   35238           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   35239           0 :      if (initializedName != NULL)
   35240             :         {
   35241             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   35242           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   35243           0 :           ROSE_ASSERT(start != NULL);
   35244             : #if 0
   35245             :        // Debugging information
   35246             :           if (start->get_parent() == NULL)
   35247             :              {
   35248             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35249             :              }
   35250             : #endif
   35251           0 :           start->set_parent(initializedName);
   35252           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   35253             : 
   35254             : #if 0
   35255             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   35256             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   35257             : 
   35258             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   35259             :        // ROSE_ASSERT(end != NULL);
   35260             :           if (end == NULL)
   35261             :              {
   35262             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   35263             :              }
   35264             :             else
   35265             :              {
   35266             :                if (end->get_parent() == NULL)
   35267             :                   {
   35268             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35269             :                   }
   35270             :                end->set_parent(initializedName);
   35271             :                ROSE_ASSERT(end->get_parent() != NULL);
   35272             :              }
   35273             : #endif
   35274             :         }
   35275             : 
   35276             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   35277           0 :      help.insertCopiedNodePair(this,result);
   35278             : 
   35279             :   // printf ("End of copy SgInterfaceBody = %p = %s \n",this,SageInterface::get_name(this).c_str());
   35280             : 
   35281             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   35282             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   35283           0 :      help.decrementDepth();
   35284             : 
   35285             :   // Test if this is the root of the copy!
   35286           0 :      if (help.get_depth() == 0)
   35287             :         {
   35288             :        // This is the original calling node.
   35289             : 
   35290             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   35291             :        // printf ("Calling SgInterfaceBody::fixupCopy() (from root of AST being copied) \n");
   35292             : #if ALT_FIXUP_COPY
   35293             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   35294           0 :           fixupCopy_scopes (result,help);
   35295           0 :           fixupCopy_symbols (result,help);
   35296           0 :           fixupCopy_references (result,help);
   35297             : #else
   35298             :           fixupCopy(result,help);
   35299             : #endif
   35300             :        // Allow this to be called recursively, so accumulate the state.
   35301             :        // Also, clear the state in the SgCopyHelp object.
   35302             :        // help.clearState();
   35303             :         }
   35304             : 
   35305           0 :      return result;
   35306             :    }
   35307             : 
   35308             : 
   35309             : /* #line 35310 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   35310             : 
   35311             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35312             : 
   35313           0 : SgNode* SgHeaderFileBody::copy ( SgCopyHelp& help) const
   35314             :    {
   35315           0 :      SgHeaderFileBody* result = NULL;
   35316             : 
   35317             :   // printf ("Copy SgHeaderFileBody = %p = %s \n",this,SageInterface::get_name(this).c_str());
   35318             : 
   35319             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   35320             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   35321             :   // The default value of the depth is 0, so after this call the depth is 1!
   35322           0 :      help.incrementDepth();
   35323             : 
   35324             : #if 0
   35325             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   35326             :   // but it is not generally true that things can only be copied once!
   35327             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   35328             :   // AstAttribute* existingAttribute = const_cast<SgHeaderFileBody*>(this)->attribute["copied"];
   35329             :      bool previouslyCopied = const_cast<SgHeaderFileBody*>(this)->attribute.exists("copied");
   35330             :      if (previouslyCopied == true)
   35331             :         {
   35332             :           this->get_file_info()->display("Called from copy SgHeaderFileBody: debug");
   35333             :         }
   35334             :      ROSE_ASSERT(previouslyCopied == false);
   35335             : 
   35336             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   35337             :      AstAttribute* newAttribute = new AstAttribute();
   35338             :      ROSE_ASSERT(newAttribute != NULL);
   35339             : 
   35340             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   35341             :      const_cast<SgHeaderFileBody*>(this)->attribute.add("copied",newAttribute);
   35342             : #endif
   35343             : 
   35344             :   // Copy data members from base classes
   35345             :   // Copy constructor parameter data member: startOfConstruct_copy
   35346             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   35347             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   35348           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   35349           0 :      if ( p_startOfConstruct != NULL ) 
   35350             :         { 
   35351           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   35352             :         } 
   35353             :        else 
   35354             :         { 
   35355             :           startOfConstruct_copy = NULL; 
   35356             :         } 
   35357             :  
   35358             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35359             : 
   35360             :   // Build an empty copy of this object (will be filled in, but 
   35361             :   // the parent can't be set and must be set by the caller)
   35362           0 :      result = new SgHeaderFileBody(  startOfConstruct_copy );
   35363           0 :      ROSE_ASSERT(result != NULL);
   35364             : 
   35365             :   // Copy data members of "this" class
   35366             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   35367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   35368             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   35369           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   35370           0 :      if ( p_endOfConstruct != NULL ) 
   35371             :         { 
   35372           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   35373             :         } 
   35374             :        else 
   35375             :         { 
   35376             :           endOfConstruct_copy = NULL; 
   35377             :         } 
   35378             :   /* check for a valid pointer and delete if present */ 
   35379           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   35380             :   /* add assignment to result here */ 
   35381           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   35382             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   35383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   35384             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   35385           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   35386           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   35387             :         { 
   35388           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   35389             :         } 
   35390             :        else 
   35391             :         { 
   35392             :           attachedPreprocessingInfoPtr_copy = NULL; 
   35393             :         } 
   35394             :   /* check for a valid pointer and delete if present */ 
   35395           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   35396             :   /* add assignment to result here */ 
   35397           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   35398             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   35399             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   35400             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   35401           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   35402           0 :      if ( p_attributeMechanism != NULL ) 
   35403             :         { 
   35404           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   35405             :         } 
   35406             :        else 
   35407             :         { 
   35408             :           attributeMechanism_copy = NULL; 
   35409             :         } 
   35410             :   /* check for a valid pointer and delete if present */ 
   35411           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   35412             :   /* add assignment to result here */ 
   35413           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   35414             :   // Copy non-constructor parameter data member (access function): include_file_copy
   35415             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for include_file
   35416             :   // case: toBeCopied == COPY_DATA for include_file
   35417           0 :      SgSourceFile* include_file_copy = p_include_file; 
   35418           0 :      result->p_include_file = include_file_copy; 
   35419             : 
   35420             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35421             : 
   35422             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   35423             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   35424             :   // fixupCopy(result,help);
   35425             : 
   35426             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   35427             :   // the Sg_File_Info objects that are built for the new IR nodes.
   35428           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   35429           0 :      if (locatedNode != NULL)
   35430             :         {
   35431             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   35432           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   35433           0 :           ROSE_ASSERT(start != NULL);
   35434             : #if 0
   35435             :        // Debugging information
   35436             :           if (start->get_parent() == NULL)
   35437             :              {
   35438             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35439             :              }
   35440             : #endif
   35441           0 :           start->set_parent(locatedNode);
   35442           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   35443             : 
   35444           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   35445             : 
   35446             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   35447             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   35448             :        // ROSE_ASSERT(end != NULL);
   35449           0 :           if (end == NULL)
   35450             :              {
   35451           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   35452             :              }
   35453             :             else
   35454             :              {
   35455             : #if 0
   35456             :             // Debugging information
   35457             :                if (end->get_parent() == NULL)
   35458             :                   {
   35459             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35460             :                   }
   35461             : #endif
   35462           0 :                end->set_parent(locatedNode);
   35463           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   35464             :              }
   35465             : 
   35466           0 :           SgExpression* expression = isSgExpression(result);
   35467           0 :           if (isSgExpression(this) != NULL)
   35468             :              {
   35469           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   35470             : 
   35471             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   35472           0 :                if (operatorPosition != NULL)
   35473             :                   {
   35474             : #if 0
   35475             :                  // Debugging information
   35476             :                     if (operatorPosition->get_parent() == NULL)
   35477             :                        {
   35478             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35479             :                        }
   35480             : #endif
   35481           0 :                     operatorPosition->set_parent(expression);
   35482           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   35483             :                   }
   35484             :              }
   35485             :         }
   35486             : 
   35487             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   35488           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   35489           0 :      if (initializedName != NULL)
   35490             :         {
   35491             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   35492           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   35493           0 :           ROSE_ASSERT(start != NULL);
   35494             : #if 0
   35495             :        // Debugging information
   35496             :           if (start->get_parent() == NULL)
   35497             :              {
   35498             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35499             :              }
   35500             : #endif
   35501           0 :           start->set_parent(initializedName);
   35502           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   35503             : 
   35504             : #if 0
   35505             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   35506             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   35507             : 
   35508             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   35509             :        // ROSE_ASSERT(end != NULL);
   35510             :           if (end == NULL)
   35511             :              {
   35512             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   35513             :              }
   35514             :             else
   35515             :              {
   35516             :                if (end->get_parent() == NULL)
   35517             :                   {
   35518             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35519             :                   }
   35520             :                end->set_parent(initializedName);
   35521             :                ROSE_ASSERT(end->get_parent() != NULL);
   35522             :              }
   35523             : #endif
   35524             :         }
   35525             : 
   35526             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   35527           0 :      help.insertCopiedNodePair(this,result);
   35528             : 
   35529             :   // printf ("End of copy SgHeaderFileBody = %p = %s \n",this,SageInterface::get_name(this).c_str());
   35530             : 
   35531             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   35532             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   35533           0 :      help.decrementDepth();
   35534             : 
   35535             :   // Test if this is the root of the copy!
   35536           0 :      if (help.get_depth() == 0)
   35537             :         {
   35538             :        // This is the original calling node.
   35539             : 
   35540             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   35541             :        // printf ("Calling SgHeaderFileBody::fixupCopy() (from root of AST being copied) \n");
   35542             : #if ALT_FIXUP_COPY
   35543             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   35544           0 :           fixupCopy_scopes (result,help);
   35545           0 :           fixupCopy_symbols (result,help);
   35546           0 :           fixupCopy_references (result,help);
   35547             : #else
   35548             :           fixupCopy(result,help);
   35549             : #endif
   35550             :        // Allow this to be called recursively, so accumulate the state.
   35551             :        // Also, clear the state in the SgCopyHelp object.
   35552             :        // help.clearState();
   35553             :         }
   35554             : 
   35555           0 :      return result;
   35556             :    }
   35557             : 
   35558             : 
   35559             : /* #line 35560 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   35560             : 
   35561             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35562             : 
   35563           0 : SgNode* SgRenamePair::copy ( SgCopyHelp& help) const
   35564             :    {
   35565           0 :      SgRenamePair* result = NULL;
   35566             : 
   35567             :   // printf ("Copy SgRenamePair = %p = %s \n",this,SageInterface::get_name(this).c_str());
   35568             : 
   35569             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   35570             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   35571             :   // The default value of the depth is 0, so after this call the depth is 1!
   35572           0 :      help.incrementDepth();
   35573             : 
   35574             : #if 0
   35575             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   35576             :   // but it is not generally true that things can only be copied once!
   35577             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   35578             :   // AstAttribute* existingAttribute = const_cast<SgRenamePair*>(this)->attribute["copied"];
   35579             :      bool previouslyCopied = const_cast<SgRenamePair*>(this)->attribute.exists("copied");
   35580             :      if (previouslyCopied == true)
   35581             :         {
   35582             :           this->get_file_info()->display("Called from copy SgRenamePair: debug");
   35583             :         }
   35584             :      ROSE_ASSERT(previouslyCopied == false);
   35585             : 
   35586             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   35587             :      AstAttribute* newAttribute = new AstAttribute();
   35588             :      ROSE_ASSERT(newAttribute != NULL);
   35589             : 
   35590             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   35591             :      const_cast<SgRenamePair*>(this)->attribute.add("copied",newAttribute);
   35592             : #endif
   35593             : 
   35594             :   // Copy data members from base classes
   35595             :   // Copy constructor parameter data member: startOfConstruct_copy
   35596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   35597             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   35598           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   35599           0 :      if ( p_startOfConstruct != NULL ) 
   35600             :         { 
   35601           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   35602             :         } 
   35603             :        else 
   35604             :         { 
   35605             :           startOfConstruct_copy = NULL; 
   35606             :         } 
   35607             :   // Copy constructor parameter data member: local_name_copy
   35608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for local_name
   35609             :   // case: toBeCopied == COPY_DATA for local_name
   35610           0 :      SgName local_name_copy = p_local_name; 
   35611             :   // Copy constructor parameter data member: use_name_copy
   35612             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for use_name
   35613             :   // case: toBeCopied == COPY_DATA for use_name
   35614           0 :      SgName use_name_copy = p_use_name; 
   35615             :  
   35616             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35617             : 
   35618             :   // Build an empty copy of this object (will be filled in, but 
   35619             :   // the parent can't be set and must be set by the caller)
   35620           0 :      result = new SgRenamePair(  startOfConstruct_copy, local_name_copy, use_name_copy );
   35621           0 :      ROSE_ASSERT(result != NULL);
   35622             : 
   35623             :   // Copy data members of "this" class
   35624             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   35625             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   35626             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   35627           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   35628           0 :      if ( p_endOfConstruct != NULL ) 
   35629             :         { 
   35630           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   35631             :         } 
   35632             :        else 
   35633             :         { 
   35634             :           endOfConstruct_copy = NULL; 
   35635             :         } 
   35636             :   /* check for a valid pointer and delete if present */ 
   35637           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   35638             :   /* add assignment to result here */ 
   35639           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   35640             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   35641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   35642             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   35643           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   35644           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   35645             :         { 
   35646           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   35647             :         } 
   35648             :        else 
   35649             :         { 
   35650             :           attachedPreprocessingInfoPtr_copy = NULL; 
   35651             :         } 
   35652             :   /* check for a valid pointer and delete if present */ 
   35653           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   35654             :   /* add assignment to result here */ 
   35655           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   35656             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   35657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   35658             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   35659           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   35660           0 :      if ( p_attributeMechanism != NULL ) 
   35661             :         { 
   35662           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   35663             :         } 
   35664             :        else 
   35665             :         { 
   35666             :           attributeMechanism_copy = NULL; 
   35667             :         } 
   35668             :   /* check for a valid pointer and delete if present */ 
   35669           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   35670             :   /* add assignment to result here */ 
   35671           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   35672             : 
   35673             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35674             : 
   35675             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   35676             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   35677             :   // fixupCopy(result,help);
   35678             : 
   35679             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   35680             :   // the Sg_File_Info objects that are built for the new IR nodes.
   35681           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   35682           0 :      if (locatedNode != NULL)
   35683             :         {
   35684             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   35685           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   35686           0 :           ROSE_ASSERT(start != NULL);
   35687             : #if 0
   35688             :        // Debugging information
   35689             :           if (start->get_parent() == NULL)
   35690             :              {
   35691             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35692             :              }
   35693             : #endif
   35694           0 :           start->set_parent(locatedNode);
   35695           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   35696             : 
   35697           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   35698             : 
   35699             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   35700             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   35701             :        // ROSE_ASSERT(end != NULL);
   35702           0 :           if (end == NULL)
   35703             :              {
   35704           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   35705             :              }
   35706             :             else
   35707             :              {
   35708             : #if 0
   35709             :             // Debugging information
   35710             :                if (end->get_parent() == NULL)
   35711             :                   {
   35712             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35713             :                   }
   35714             : #endif
   35715           0 :                end->set_parent(locatedNode);
   35716           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   35717             :              }
   35718             : 
   35719           0 :           SgExpression* expression = isSgExpression(result);
   35720           0 :           if (isSgExpression(this) != NULL)
   35721             :              {
   35722           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   35723             : 
   35724             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   35725           0 :                if (operatorPosition != NULL)
   35726             :                   {
   35727             : #if 0
   35728             :                  // Debugging information
   35729             :                     if (operatorPosition->get_parent() == NULL)
   35730             :                        {
   35731             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35732             :                        }
   35733             : #endif
   35734           0 :                     operatorPosition->set_parent(expression);
   35735           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   35736             :                   }
   35737             :              }
   35738             :         }
   35739             : 
   35740             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   35741           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   35742           0 :      if (initializedName != NULL)
   35743             :         {
   35744             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   35745           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   35746           0 :           ROSE_ASSERT(start != NULL);
   35747             : #if 0
   35748             :        // Debugging information
   35749             :           if (start->get_parent() == NULL)
   35750             :              {
   35751             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35752             :              }
   35753             : #endif
   35754           0 :           start->set_parent(initializedName);
   35755           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   35756             : 
   35757             : #if 0
   35758             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   35759             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   35760             : 
   35761             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   35762             :        // ROSE_ASSERT(end != NULL);
   35763             :           if (end == NULL)
   35764             :              {
   35765             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   35766             :              }
   35767             :             else
   35768             :              {
   35769             :                if (end->get_parent() == NULL)
   35770             :                   {
   35771             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35772             :                   }
   35773             :                end->set_parent(initializedName);
   35774             :                ROSE_ASSERT(end->get_parent() != NULL);
   35775             :              }
   35776             : #endif
   35777             :         }
   35778             : 
   35779             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   35780           0 :      help.insertCopiedNodePair(this,result);
   35781             : 
   35782             :   // printf ("End of copy SgRenamePair = %p = %s \n",this,SageInterface::get_name(this).c_str());
   35783             : 
   35784             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   35785             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   35786           0 :      help.decrementDepth();
   35787             : 
   35788             :   // Test if this is the root of the copy!
   35789           0 :      if (help.get_depth() == 0)
   35790             :         {
   35791             :        // This is the original calling node.
   35792             : 
   35793             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   35794             :        // printf ("Calling SgRenamePair::fixupCopy() (from root of AST being copied) \n");
   35795             : #if ALT_FIXUP_COPY
   35796             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   35797           0 :           fixupCopy_scopes (result,help);
   35798           0 :           fixupCopy_symbols (result,help);
   35799           0 :           fixupCopy_references (result,help);
   35800             : #else
   35801             :           fixupCopy(result,help);
   35802             : #endif
   35803             :        // Allow this to be called recursively, so accumulate the state.
   35804             :        // Also, clear the state in the SgCopyHelp object.
   35805             :        // help.clearState();
   35806             :         }
   35807             : 
   35808           0 :      return result;
   35809             :    }
   35810             : 
   35811             : 
   35812             : /* #line 35813 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   35813             : 
   35814             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35815             : 
   35816           0 : SgNode* SgOmpClause::copy ( SgCopyHelp& help) const
   35817             :    {
   35818           0 :      SgOmpClause* result = NULL;
   35819             : 
   35820             :   // printf ("Copy SgOmpClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   35821             : 
   35822             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   35823             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   35824             :   // The default value of the depth is 0, so after this call the depth is 1!
   35825           0 :      help.incrementDepth();
   35826             : 
   35827             : #if 0
   35828             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   35829             :   // but it is not generally true that things can only be copied once!
   35830             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   35831             :   // AstAttribute* existingAttribute = const_cast<SgOmpClause*>(this)->attribute["copied"];
   35832             :      bool previouslyCopied = const_cast<SgOmpClause*>(this)->attribute.exists("copied");
   35833             :      if (previouslyCopied == true)
   35834             :         {
   35835             :           this->get_file_info()->display("Called from copy SgOmpClause: debug");
   35836             :         }
   35837             :      ROSE_ASSERT(previouslyCopied == false);
   35838             : 
   35839             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   35840             :      AstAttribute* newAttribute = new AstAttribute();
   35841             :      ROSE_ASSERT(newAttribute != NULL);
   35842             : 
   35843             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   35844             :      const_cast<SgOmpClause*>(this)->attribute.add("copied",newAttribute);
   35845             : #endif
   35846             : 
   35847             :   // Copy data members from base classes
   35848             :   // Copy constructor parameter data member: startOfConstruct_copy
   35849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   35850             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   35851           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   35852           0 :      if ( p_startOfConstruct != NULL ) 
   35853             :         { 
   35854           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   35855             :         } 
   35856             :        else 
   35857             :         { 
   35858             :           startOfConstruct_copy = NULL; 
   35859             :         } 
   35860             :  
   35861             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35862             : 
   35863             :   // Build an empty copy of this object (will be filled in, but 
   35864             :   // the parent can't be set and must be set by the caller)
   35865           0 :      result = new SgOmpClause(  startOfConstruct_copy );
   35866           0 :      ROSE_ASSERT(result != NULL);
   35867             : 
   35868             :   // Copy data members of "this" class
   35869             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   35870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   35871             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   35872           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   35873           0 :      if ( p_endOfConstruct != NULL ) 
   35874             :         { 
   35875           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   35876             :         } 
   35877             :        else 
   35878             :         { 
   35879             :           endOfConstruct_copy = NULL; 
   35880             :         } 
   35881             :   /* check for a valid pointer and delete if present */ 
   35882           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   35883             :   /* add assignment to result here */ 
   35884           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   35885             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   35886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   35887             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   35888           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   35889           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   35890             :         { 
   35891           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   35892             :         } 
   35893             :        else 
   35894             :         { 
   35895             :           attachedPreprocessingInfoPtr_copy = NULL; 
   35896             :         } 
   35897             :   /* check for a valid pointer and delete if present */ 
   35898           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   35899             :   /* add assignment to result here */ 
   35900           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   35901             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   35902             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   35903             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   35904           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   35905           0 :      if ( p_attributeMechanism != NULL ) 
   35906             :         { 
   35907           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   35908             :         } 
   35909             :        else 
   35910             :         { 
   35911             :           attributeMechanism_copy = NULL; 
   35912             :         } 
   35913             :   /* check for a valid pointer and delete if present */ 
   35914           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   35915             :   /* add assignment to result here */ 
   35916           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   35917             : 
   35918             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   35919             : 
   35920             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   35921             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   35922             :   // fixupCopy(result,help);
   35923             : 
   35924             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   35925             :   // the Sg_File_Info objects that are built for the new IR nodes.
   35926           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   35927           0 :      if (locatedNode != NULL)
   35928             :         {
   35929             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   35930           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   35931           0 :           ROSE_ASSERT(start != NULL);
   35932             : #if 0
   35933             :        // Debugging information
   35934             :           if (start->get_parent() == NULL)
   35935             :              {
   35936             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35937             :              }
   35938             : #endif
   35939           0 :           start->set_parent(locatedNode);
   35940           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   35941             : 
   35942           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   35943             : 
   35944             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   35945             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   35946             :        // ROSE_ASSERT(end != NULL);
   35947           0 :           if (end == NULL)
   35948             :              {
   35949           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   35950             :              }
   35951             :             else
   35952             :              {
   35953             : #if 0
   35954             :             // Debugging information
   35955             :                if (end->get_parent() == NULL)
   35956             :                   {
   35957             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35958             :                   }
   35959             : #endif
   35960           0 :                end->set_parent(locatedNode);
   35961           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   35962             :              }
   35963             : 
   35964           0 :           SgExpression* expression = isSgExpression(result);
   35965           0 :           if (isSgExpression(this) != NULL)
   35966             :              {
   35967           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   35968             : 
   35969             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   35970           0 :                if (operatorPosition != NULL)
   35971             :                   {
   35972             : #if 0
   35973             :                  // Debugging information
   35974             :                     if (operatorPosition->get_parent() == NULL)
   35975             :                        {
   35976             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35977             :                        }
   35978             : #endif
   35979           0 :                     operatorPosition->set_parent(expression);
   35980           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   35981             :                   }
   35982             :              }
   35983             :         }
   35984             : 
   35985             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   35986           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   35987           0 :      if (initializedName != NULL)
   35988             :         {
   35989             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   35990           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   35991           0 :           ROSE_ASSERT(start != NULL);
   35992             : #if 0
   35993             :        // Debugging information
   35994             :           if (start->get_parent() == NULL)
   35995             :              {
   35996             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   35997             :              }
   35998             : #endif
   35999           0 :           start->set_parent(initializedName);
   36000           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   36001             : 
   36002             : #if 0
   36003             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   36004             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   36005             : 
   36006             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   36007             :        // ROSE_ASSERT(end != NULL);
   36008             :           if (end == NULL)
   36009             :              {
   36010             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   36011             :              }
   36012             :             else
   36013             :              {
   36014             :                if (end->get_parent() == NULL)
   36015             :                   {
   36016             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36017             :                   }
   36018             :                end->set_parent(initializedName);
   36019             :                ROSE_ASSERT(end->get_parent() != NULL);
   36020             :              }
   36021             : #endif
   36022             :         }
   36023             : 
   36024             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   36025           0 :      help.insertCopiedNodePair(this,result);
   36026             : 
   36027             :   // printf ("End of copy SgOmpClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   36028             : 
   36029             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   36030             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   36031           0 :      help.decrementDepth();
   36032             : 
   36033             :   // Test if this is the root of the copy!
   36034           0 :      if (help.get_depth() == 0)
   36035             :         {
   36036             :        // This is the original calling node.
   36037             : 
   36038             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   36039             :        // printf ("Calling SgOmpClause::fixupCopy() (from root of AST being copied) \n");
   36040             : #if ALT_FIXUP_COPY
   36041             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   36042           0 :           fixupCopy_scopes (result,help);
   36043           0 :           fixupCopy_symbols (result,help);
   36044           0 :           fixupCopy_references (result,help);
   36045             : #else
   36046             :           fixupCopy(result,help);
   36047             : #endif
   36048             :        // Allow this to be called recursively, so accumulate the state.
   36049             :        // Also, clear the state in the SgCopyHelp object.
   36050             :        // help.clearState();
   36051             :         }
   36052             : 
   36053           0 :      return result;
   36054             :    }
   36055             : 
   36056             : 
   36057             : /* #line 36058 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   36058             : 
   36059             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36060             : 
   36061           0 : SgNode* SgOmpNowaitClause::copy ( SgCopyHelp& help) const
   36062             :    {
   36063           0 :      SgOmpNowaitClause* result = NULL;
   36064             : 
   36065             :   // printf ("Copy SgOmpNowaitClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   36066             : 
   36067             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   36068             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   36069             :   // The default value of the depth is 0, so after this call the depth is 1!
   36070           0 :      help.incrementDepth();
   36071             : 
   36072             : #if 0
   36073             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   36074             :   // but it is not generally true that things can only be copied once!
   36075             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   36076             :   // AstAttribute* existingAttribute = const_cast<SgOmpNowaitClause*>(this)->attribute["copied"];
   36077             :      bool previouslyCopied = const_cast<SgOmpNowaitClause*>(this)->attribute.exists("copied");
   36078             :      if (previouslyCopied == true)
   36079             :         {
   36080             :           this->get_file_info()->display("Called from copy SgOmpNowaitClause: debug");
   36081             :         }
   36082             :      ROSE_ASSERT(previouslyCopied == false);
   36083             : 
   36084             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   36085             :      AstAttribute* newAttribute = new AstAttribute();
   36086             :      ROSE_ASSERT(newAttribute != NULL);
   36087             : 
   36088             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   36089             :      const_cast<SgOmpNowaitClause*>(this)->attribute.add("copied",newAttribute);
   36090             : #endif
   36091             : 
   36092             :   // Copy data members from base classes
   36093             :   // Copy constructor parameter data member: startOfConstruct_copy
   36094             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   36095             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   36096           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   36097           0 :      if ( p_startOfConstruct != NULL ) 
   36098             :         { 
   36099           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   36100             :         } 
   36101             :        else 
   36102             :         { 
   36103             :           startOfConstruct_copy = NULL; 
   36104             :         } 
   36105             :  
   36106             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36107             : 
   36108             :   // Build an empty copy of this object (will be filled in, but 
   36109             :   // the parent can't be set and must be set by the caller)
   36110           0 :      result = new SgOmpNowaitClause(  startOfConstruct_copy );
   36111           0 :      ROSE_ASSERT(result != NULL);
   36112             : 
   36113             :   // Copy data members of "this" class
   36114             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   36115             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   36116             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   36117           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   36118           0 :      if ( p_endOfConstruct != NULL ) 
   36119             :         { 
   36120           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   36121             :         } 
   36122             :        else 
   36123             :         { 
   36124             :           endOfConstruct_copy = NULL; 
   36125             :         } 
   36126             :   /* check for a valid pointer and delete if present */ 
   36127           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   36128             :   /* add assignment to result here */ 
   36129           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   36130             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   36131             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   36132             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   36133           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   36134           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   36135             :         { 
   36136           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   36137             :         } 
   36138             :        else 
   36139             :         { 
   36140             :           attachedPreprocessingInfoPtr_copy = NULL; 
   36141             :         } 
   36142             :   /* check for a valid pointer and delete if present */ 
   36143           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   36144             :   /* add assignment to result here */ 
   36145           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   36146             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   36147             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   36148             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   36149           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   36150           0 :      if ( p_attributeMechanism != NULL ) 
   36151             :         { 
   36152           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   36153             :         } 
   36154             :        else 
   36155             :         { 
   36156             :           attributeMechanism_copy = NULL; 
   36157             :         } 
   36158             :   /* check for a valid pointer and delete if present */ 
   36159           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   36160             :   /* add assignment to result here */ 
   36161           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   36162             : 
   36163             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36164             : 
   36165             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   36166             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   36167             :   // fixupCopy(result,help);
   36168             : 
   36169             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   36170             :   // the Sg_File_Info objects that are built for the new IR nodes.
   36171           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   36172           0 :      if (locatedNode != NULL)
   36173             :         {
   36174             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   36175           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   36176           0 :           ROSE_ASSERT(start != NULL);
   36177             : #if 0
   36178             :        // Debugging information
   36179             :           if (start->get_parent() == NULL)
   36180             :              {
   36181             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36182             :              }
   36183             : #endif
   36184           0 :           start->set_parent(locatedNode);
   36185           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   36186             : 
   36187           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   36188             : 
   36189             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   36190             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   36191             :        // ROSE_ASSERT(end != NULL);
   36192           0 :           if (end == NULL)
   36193             :              {
   36194           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   36195             :              }
   36196             :             else
   36197             :              {
   36198             : #if 0
   36199             :             // Debugging information
   36200             :                if (end->get_parent() == NULL)
   36201             :                   {
   36202             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36203             :                   }
   36204             : #endif
   36205           0 :                end->set_parent(locatedNode);
   36206           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   36207             :              }
   36208             : 
   36209           0 :           SgExpression* expression = isSgExpression(result);
   36210           0 :           if (isSgExpression(this) != NULL)
   36211             :              {
   36212           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   36213             : 
   36214             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   36215           0 :                if (operatorPosition != NULL)
   36216             :                   {
   36217             : #if 0
   36218             :                  // Debugging information
   36219             :                     if (operatorPosition->get_parent() == NULL)
   36220             :                        {
   36221             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36222             :                        }
   36223             : #endif
   36224           0 :                     operatorPosition->set_parent(expression);
   36225           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   36226             :                   }
   36227             :              }
   36228             :         }
   36229             : 
   36230             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   36231           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   36232           0 :      if (initializedName != NULL)
   36233             :         {
   36234             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   36235           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   36236           0 :           ROSE_ASSERT(start != NULL);
   36237             : #if 0
   36238             :        // Debugging information
   36239             :           if (start->get_parent() == NULL)
   36240             :              {
   36241             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36242             :              }
   36243             : #endif
   36244           0 :           start->set_parent(initializedName);
   36245           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   36246             : 
   36247             : #if 0
   36248             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   36249             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   36250             : 
   36251             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   36252             :        // ROSE_ASSERT(end != NULL);
   36253             :           if (end == NULL)
   36254             :              {
   36255             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   36256             :              }
   36257             :             else
   36258             :              {
   36259             :                if (end->get_parent() == NULL)
   36260             :                   {
   36261             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36262             :                   }
   36263             :                end->set_parent(initializedName);
   36264             :                ROSE_ASSERT(end->get_parent() != NULL);
   36265             :              }
   36266             : #endif
   36267             :         }
   36268             : 
   36269             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   36270           0 :      help.insertCopiedNodePair(this,result);
   36271             : 
   36272             :   // printf ("End of copy SgOmpNowaitClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   36273             : 
   36274             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   36275             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   36276           0 :      help.decrementDepth();
   36277             : 
   36278             :   // Test if this is the root of the copy!
   36279           0 :      if (help.get_depth() == 0)
   36280             :         {
   36281             :        // This is the original calling node.
   36282             : 
   36283             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   36284             :        // printf ("Calling SgOmpNowaitClause::fixupCopy() (from root of AST being copied) \n");
   36285             : #if ALT_FIXUP_COPY
   36286             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   36287           0 :           fixupCopy_scopes (result,help);
   36288           0 :           fixupCopy_symbols (result,help);
   36289           0 :           fixupCopy_references (result,help);
   36290             : #else
   36291             :           fixupCopy(result,help);
   36292             : #endif
   36293             :        // Allow this to be called recursively, so accumulate the state.
   36294             :        // Also, clear the state in the SgCopyHelp object.
   36295             :        // help.clearState();
   36296             :         }
   36297             : 
   36298           0 :      return result;
   36299             :    }
   36300             : 
   36301             : 
   36302             : /* #line 36303 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   36303             : 
   36304             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36305             : 
   36306           0 : SgNode* SgOmpReadClause::copy ( SgCopyHelp& help) const
   36307             :    {
   36308           0 :      SgOmpReadClause* result = NULL;
   36309             : 
   36310             :   // printf ("Copy SgOmpReadClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   36311             : 
   36312             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   36313             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   36314             :   // The default value of the depth is 0, so after this call the depth is 1!
   36315           0 :      help.incrementDepth();
   36316             : 
   36317             : #if 0
   36318             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   36319             :   // but it is not generally true that things can only be copied once!
   36320             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   36321             :   // AstAttribute* existingAttribute = const_cast<SgOmpReadClause*>(this)->attribute["copied"];
   36322             :      bool previouslyCopied = const_cast<SgOmpReadClause*>(this)->attribute.exists("copied");
   36323             :      if (previouslyCopied == true)
   36324             :         {
   36325             :           this->get_file_info()->display("Called from copy SgOmpReadClause: debug");
   36326             :         }
   36327             :      ROSE_ASSERT(previouslyCopied == false);
   36328             : 
   36329             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   36330             :      AstAttribute* newAttribute = new AstAttribute();
   36331             :      ROSE_ASSERT(newAttribute != NULL);
   36332             : 
   36333             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   36334             :      const_cast<SgOmpReadClause*>(this)->attribute.add("copied",newAttribute);
   36335             : #endif
   36336             : 
   36337             :   // Copy data members from base classes
   36338             :   // Copy constructor parameter data member: startOfConstruct_copy
   36339             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   36340             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   36341           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   36342           0 :      if ( p_startOfConstruct != NULL ) 
   36343             :         { 
   36344           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   36345             :         } 
   36346             :        else 
   36347             :         { 
   36348             :           startOfConstruct_copy = NULL; 
   36349             :         } 
   36350             :  
   36351             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36352             : 
   36353             :   // Build an empty copy of this object (will be filled in, but 
   36354             :   // the parent can't be set and must be set by the caller)
   36355           0 :      result = new SgOmpReadClause(  startOfConstruct_copy );
   36356           0 :      ROSE_ASSERT(result != NULL);
   36357             : 
   36358             :   // Copy data members of "this" class
   36359             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   36360             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   36361             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   36362           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   36363           0 :      if ( p_endOfConstruct != NULL ) 
   36364             :         { 
   36365           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   36366             :         } 
   36367             :        else 
   36368             :         { 
   36369             :           endOfConstruct_copy = NULL; 
   36370             :         } 
   36371             :   /* check for a valid pointer and delete if present */ 
   36372           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   36373             :   /* add assignment to result here */ 
   36374           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   36375             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   36376             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   36377             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   36378           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   36379           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   36380             :         { 
   36381           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   36382             :         } 
   36383             :        else 
   36384             :         { 
   36385             :           attachedPreprocessingInfoPtr_copy = NULL; 
   36386             :         } 
   36387             :   /* check for a valid pointer and delete if present */ 
   36388           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   36389             :   /* add assignment to result here */ 
   36390           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   36391             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   36392             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   36393             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   36394           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   36395           0 :      if ( p_attributeMechanism != NULL ) 
   36396             :         { 
   36397           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   36398             :         } 
   36399             :        else 
   36400             :         { 
   36401             :           attributeMechanism_copy = NULL; 
   36402             :         } 
   36403             :   /* check for a valid pointer and delete if present */ 
   36404           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   36405             :   /* add assignment to result here */ 
   36406           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   36407             : 
   36408             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36409             : 
   36410             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   36411             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   36412             :   // fixupCopy(result,help);
   36413             : 
   36414             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   36415             :   // the Sg_File_Info objects that are built for the new IR nodes.
   36416           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   36417           0 :      if (locatedNode != NULL)
   36418             :         {
   36419             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   36420           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   36421           0 :           ROSE_ASSERT(start != NULL);
   36422             : #if 0
   36423             :        // Debugging information
   36424             :           if (start->get_parent() == NULL)
   36425             :              {
   36426             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36427             :              }
   36428             : #endif
   36429           0 :           start->set_parent(locatedNode);
   36430           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   36431             : 
   36432           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   36433             : 
   36434             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   36435             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   36436             :        // ROSE_ASSERT(end != NULL);
   36437           0 :           if (end == NULL)
   36438             :              {
   36439           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   36440             :              }
   36441             :             else
   36442             :              {
   36443             : #if 0
   36444             :             // Debugging information
   36445             :                if (end->get_parent() == NULL)
   36446             :                   {
   36447             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36448             :                   }
   36449             : #endif
   36450           0 :                end->set_parent(locatedNode);
   36451           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   36452             :              }
   36453             : 
   36454           0 :           SgExpression* expression = isSgExpression(result);
   36455           0 :           if (isSgExpression(this) != NULL)
   36456             :              {
   36457           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   36458             : 
   36459             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   36460           0 :                if (operatorPosition != NULL)
   36461             :                   {
   36462             : #if 0
   36463             :                  // Debugging information
   36464             :                     if (operatorPosition->get_parent() == NULL)
   36465             :                        {
   36466             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36467             :                        }
   36468             : #endif
   36469           0 :                     operatorPosition->set_parent(expression);
   36470           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   36471             :                   }
   36472             :              }
   36473             :         }
   36474             : 
   36475             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   36476           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   36477           0 :      if (initializedName != NULL)
   36478             :         {
   36479             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   36480           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   36481           0 :           ROSE_ASSERT(start != NULL);
   36482             : #if 0
   36483             :        // Debugging information
   36484             :           if (start->get_parent() == NULL)
   36485             :              {
   36486             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36487             :              }
   36488             : #endif
   36489           0 :           start->set_parent(initializedName);
   36490           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   36491             : 
   36492             : #if 0
   36493             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   36494             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   36495             : 
   36496             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   36497             :        // ROSE_ASSERT(end != NULL);
   36498             :           if (end == NULL)
   36499             :              {
   36500             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   36501             :              }
   36502             :             else
   36503             :              {
   36504             :                if (end->get_parent() == NULL)
   36505             :                   {
   36506             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36507             :                   }
   36508             :                end->set_parent(initializedName);
   36509             :                ROSE_ASSERT(end->get_parent() != NULL);
   36510             :              }
   36511             : #endif
   36512             :         }
   36513             : 
   36514             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   36515           0 :      help.insertCopiedNodePair(this,result);
   36516             : 
   36517             :   // printf ("End of copy SgOmpReadClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   36518             : 
   36519             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   36520             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   36521           0 :      help.decrementDepth();
   36522             : 
   36523             :   // Test if this is the root of the copy!
   36524           0 :      if (help.get_depth() == 0)
   36525             :         {
   36526             :        // This is the original calling node.
   36527             : 
   36528             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   36529             :        // printf ("Calling SgOmpReadClause::fixupCopy() (from root of AST being copied) \n");
   36530             : #if ALT_FIXUP_COPY
   36531             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   36532           0 :           fixupCopy_scopes (result,help);
   36533           0 :           fixupCopy_symbols (result,help);
   36534           0 :           fixupCopy_references (result,help);
   36535             : #else
   36536             :           fixupCopy(result,help);
   36537             : #endif
   36538             :        // Allow this to be called recursively, so accumulate the state.
   36539             :        // Also, clear the state in the SgCopyHelp object.
   36540             :        // help.clearState();
   36541             :         }
   36542             : 
   36543           0 :      return result;
   36544             :    }
   36545             : 
   36546             : 
   36547             : /* #line 36548 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   36548             : 
   36549             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36550             : 
   36551           0 : SgNode* SgOmpThreadsClause::copy ( SgCopyHelp& help) const
   36552             :    {
   36553           0 :      SgOmpThreadsClause* result = NULL;
   36554             : 
   36555             :   // printf ("Copy SgOmpThreadsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   36556             : 
   36557             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   36558             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   36559             :   // The default value of the depth is 0, so after this call the depth is 1!
   36560           0 :      help.incrementDepth();
   36561             : 
   36562             : #if 0
   36563             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   36564             :   // but it is not generally true that things can only be copied once!
   36565             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   36566             :   // AstAttribute* existingAttribute = const_cast<SgOmpThreadsClause*>(this)->attribute["copied"];
   36567             :      bool previouslyCopied = const_cast<SgOmpThreadsClause*>(this)->attribute.exists("copied");
   36568             :      if (previouslyCopied == true)
   36569             :         {
   36570             :           this->get_file_info()->display("Called from copy SgOmpThreadsClause: debug");
   36571             :         }
   36572             :      ROSE_ASSERT(previouslyCopied == false);
   36573             : 
   36574             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   36575             :      AstAttribute* newAttribute = new AstAttribute();
   36576             :      ROSE_ASSERT(newAttribute != NULL);
   36577             : 
   36578             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   36579             :      const_cast<SgOmpThreadsClause*>(this)->attribute.add("copied",newAttribute);
   36580             : #endif
   36581             : 
   36582             :   // Copy data members from base classes
   36583             :   // Copy constructor parameter data member: startOfConstruct_copy
   36584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   36585             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   36586           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   36587           0 :      if ( p_startOfConstruct != NULL ) 
   36588             :         { 
   36589           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   36590             :         } 
   36591             :        else 
   36592             :         { 
   36593             :           startOfConstruct_copy = NULL; 
   36594             :         } 
   36595             :  
   36596             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36597             : 
   36598             :   // Build an empty copy of this object (will be filled in, but 
   36599             :   // the parent can't be set and must be set by the caller)
   36600           0 :      result = new SgOmpThreadsClause(  startOfConstruct_copy );
   36601           0 :      ROSE_ASSERT(result != NULL);
   36602             : 
   36603             :   // Copy data members of "this" class
   36604             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   36605             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   36606             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   36607           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   36608           0 :      if ( p_endOfConstruct != NULL ) 
   36609             :         { 
   36610           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   36611             :         } 
   36612             :        else 
   36613             :         { 
   36614             :           endOfConstruct_copy = NULL; 
   36615             :         } 
   36616             :   /* check for a valid pointer and delete if present */ 
   36617           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   36618             :   /* add assignment to result here */ 
   36619           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   36620             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   36621             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   36622             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   36623           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   36624           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   36625             :         { 
   36626           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   36627             :         } 
   36628             :        else 
   36629             :         { 
   36630             :           attachedPreprocessingInfoPtr_copy = NULL; 
   36631             :         } 
   36632             :   /* check for a valid pointer and delete if present */ 
   36633           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   36634             :   /* add assignment to result here */ 
   36635           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   36636             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   36637             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   36638             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   36639           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   36640           0 :      if ( p_attributeMechanism != NULL ) 
   36641             :         { 
   36642           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   36643             :         } 
   36644             :        else 
   36645             :         { 
   36646             :           attributeMechanism_copy = NULL; 
   36647             :         } 
   36648             :   /* check for a valid pointer and delete if present */ 
   36649           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   36650             :   /* add assignment to result here */ 
   36651           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   36652             : 
   36653             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36654             : 
   36655             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   36656             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   36657             :   // fixupCopy(result,help);
   36658             : 
   36659             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   36660             :   // the Sg_File_Info objects that are built for the new IR nodes.
   36661           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   36662           0 :      if (locatedNode != NULL)
   36663             :         {
   36664             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   36665           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   36666           0 :           ROSE_ASSERT(start != NULL);
   36667             : #if 0
   36668             :        // Debugging information
   36669             :           if (start->get_parent() == NULL)
   36670             :              {
   36671             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36672             :              }
   36673             : #endif
   36674           0 :           start->set_parent(locatedNode);
   36675           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   36676             : 
   36677           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   36678             : 
   36679             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   36680             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   36681             :        // ROSE_ASSERT(end != NULL);
   36682           0 :           if (end == NULL)
   36683             :              {
   36684           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   36685             :              }
   36686             :             else
   36687             :              {
   36688             : #if 0
   36689             :             // Debugging information
   36690             :                if (end->get_parent() == NULL)
   36691             :                   {
   36692             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36693             :                   }
   36694             : #endif
   36695           0 :                end->set_parent(locatedNode);
   36696           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   36697             :              }
   36698             : 
   36699           0 :           SgExpression* expression = isSgExpression(result);
   36700           0 :           if (isSgExpression(this) != NULL)
   36701             :              {
   36702           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   36703             : 
   36704             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   36705           0 :                if (operatorPosition != NULL)
   36706             :                   {
   36707             : #if 0
   36708             :                  // Debugging information
   36709             :                     if (operatorPosition->get_parent() == NULL)
   36710             :                        {
   36711             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36712             :                        }
   36713             : #endif
   36714           0 :                     operatorPosition->set_parent(expression);
   36715           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   36716             :                   }
   36717             :              }
   36718             :         }
   36719             : 
   36720             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   36721           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   36722           0 :      if (initializedName != NULL)
   36723             :         {
   36724             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   36725           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   36726           0 :           ROSE_ASSERT(start != NULL);
   36727             : #if 0
   36728             :        // Debugging information
   36729             :           if (start->get_parent() == NULL)
   36730             :              {
   36731             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36732             :              }
   36733             : #endif
   36734           0 :           start->set_parent(initializedName);
   36735           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   36736             : 
   36737             : #if 0
   36738             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   36739             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   36740             : 
   36741             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   36742             :        // ROSE_ASSERT(end != NULL);
   36743             :           if (end == NULL)
   36744             :              {
   36745             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   36746             :              }
   36747             :             else
   36748             :              {
   36749             :                if (end->get_parent() == NULL)
   36750             :                   {
   36751             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36752             :                   }
   36753             :                end->set_parent(initializedName);
   36754             :                ROSE_ASSERT(end->get_parent() != NULL);
   36755             :              }
   36756             : #endif
   36757             :         }
   36758             : 
   36759             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   36760           0 :      help.insertCopiedNodePair(this,result);
   36761             : 
   36762             :   // printf ("End of copy SgOmpThreadsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   36763             : 
   36764             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   36765             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   36766           0 :      help.decrementDepth();
   36767             : 
   36768             :   // Test if this is the root of the copy!
   36769           0 :      if (help.get_depth() == 0)
   36770             :         {
   36771             :        // This is the original calling node.
   36772             : 
   36773             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   36774             :        // printf ("Calling SgOmpThreadsClause::fixupCopy() (from root of AST being copied) \n");
   36775             : #if ALT_FIXUP_COPY
   36776             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   36777           0 :           fixupCopy_scopes (result,help);
   36778           0 :           fixupCopy_symbols (result,help);
   36779           0 :           fixupCopy_references (result,help);
   36780             : #else
   36781             :           fixupCopy(result,help);
   36782             : #endif
   36783             :        // Allow this to be called recursively, so accumulate the state.
   36784             :        // Also, clear the state in the SgCopyHelp object.
   36785             :        // help.clearState();
   36786             :         }
   36787             : 
   36788           0 :      return result;
   36789             :    }
   36790             : 
   36791             : 
   36792             : /* #line 36793 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   36793             : 
   36794             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36795             : 
   36796           0 : SgNode* SgOmpSimdClause::copy ( SgCopyHelp& help) const
   36797             :    {
   36798           0 :      SgOmpSimdClause* result = NULL;
   36799             : 
   36800             :   // printf ("Copy SgOmpSimdClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   36801             : 
   36802             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   36803             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   36804             :   // The default value of the depth is 0, so after this call the depth is 1!
   36805           0 :      help.incrementDepth();
   36806             : 
   36807             : #if 0
   36808             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   36809             :   // but it is not generally true that things can only be copied once!
   36810             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   36811             :   // AstAttribute* existingAttribute = const_cast<SgOmpSimdClause*>(this)->attribute["copied"];
   36812             :      bool previouslyCopied = const_cast<SgOmpSimdClause*>(this)->attribute.exists("copied");
   36813             :      if (previouslyCopied == true)
   36814             :         {
   36815             :           this->get_file_info()->display("Called from copy SgOmpSimdClause: debug");
   36816             :         }
   36817             :      ROSE_ASSERT(previouslyCopied == false);
   36818             : 
   36819             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   36820             :      AstAttribute* newAttribute = new AstAttribute();
   36821             :      ROSE_ASSERT(newAttribute != NULL);
   36822             : 
   36823             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   36824             :      const_cast<SgOmpSimdClause*>(this)->attribute.add("copied",newAttribute);
   36825             : #endif
   36826             : 
   36827             :   // Copy data members from base classes
   36828             :   // Copy constructor parameter data member: startOfConstruct_copy
   36829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   36830             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   36831           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   36832           0 :      if ( p_startOfConstruct != NULL ) 
   36833             :         { 
   36834           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   36835             :         } 
   36836             :        else 
   36837             :         { 
   36838             :           startOfConstruct_copy = NULL; 
   36839             :         } 
   36840             :  
   36841             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36842             : 
   36843             :   // Build an empty copy of this object (will be filled in, but 
   36844             :   // the parent can't be set and must be set by the caller)
   36845           0 :      result = new SgOmpSimdClause(  startOfConstruct_copy );
   36846           0 :      ROSE_ASSERT(result != NULL);
   36847             : 
   36848             :   // Copy data members of "this" class
   36849             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   36850             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   36851             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   36852           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   36853           0 :      if ( p_endOfConstruct != NULL ) 
   36854             :         { 
   36855           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   36856             :         } 
   36857             :        else 
   36858             :         { 
   36859             :           endOfConstruct_copy = NULL; 
   36860             :         } 
   36861             :   /* check for a valid pointer and delete if present */ 
   36862           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   36863             :   /* add assignment to result here */ 
   36864           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   36865             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   36866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   36867             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   36868           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   36869           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   36870             :         { 
   36871           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   36872             :         } 
   36873             :        else 
   36874             :         { 
   36875             :           attachedPreprocessingInfoPtr_copy = NULL; 
   36876             :         } 
   36877             :   /* check for a valid pointer and delete if present */ 
   36878           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   36879             :   /* add assignment to result here */ 
   36880           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   36881             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   36882             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   36883             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   36884           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   36885           0 :      if ( p_attributeMechanism != NULL ) 
   36886             :         { 
   36887           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   36888             :         } 
   36889             :        else 
   36890             :         { 
   36891             :           attributeMechanism_copy = NULL; 
   36892             :         } 
   36893             :   /* check for a valid pointer and delete if present */ 
   36894           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   36895             :   /* add assignment to result here */ 
   36896           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   36897             : 
   36898             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   36899             : 
   36900             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   36901             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   36902             :   // fixupCopy(result,help);
   36903             : 
   36904             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   36905             :   // the Sg_File_Info objects that are built for the new IR nodes.
   36906           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   36907           0 :      if (locatedNode != NULL)
   36908             :         {
   36909             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   36910           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   36911           0 :           ROSE_ASSERT(start != NULL);
   36912             : #if 0
   36913             :        // Debugging information
   36914             :           if (start->get_parent() == NULL)
   36915             :              {
   36916             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36917             :              }
   36918             : #endif
   36919           0 :           start->set_parent(locatedNode);
   36920           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   36921             : 
   36922           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   36923             : 
   36924             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   36925             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   36926             :        // ROSE_ASSERT(end != NULL);
   36927           0 :           if (end == NULL)
   36928             :              {
   36929           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   36930             :              }
   36931             :             else
   36932             :              {
   36933             : #if 0
   36934             :             // Debugging information
   36935             :                if (end->get_parent() == NULL)
   36936             :                   {
   36937             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36938             :                   }
   36939             : #endif
   36940           0 :                end->set_parent(locatedNode);
   36941           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   36942             :              }
   36943             : 
   36944           0 :           SgExpression* expression = isSgExpression(result);
   36945           0 :           if (isSgExpression(this) != NULL)
   36946             :              {
   36947           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   36948             : 
   36949             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   36950           0 :                if (operatorPosition != NULL)
   36951             :                   {
   36952             : #if 0
   36953             :                  // Debugging information
   36954             :                     if (operatorPosition->get_parent() == NULL)
   36955             :                        {
   36956             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36957             :                        }
   36958             : #endif
   36959           0 :                     operatorPosition->set_parent(expression);
   36960           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   36961             :                   }
   36962             :              }
   36963             :         }
   36964             : 
   36965             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   36966           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   36967           0 :      if (initializedName != NULL)
   36968             :         {
   36969             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   36970           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   36971           0 :           ROSE_ASSERT(start != NULL);
   36972             : #if 0
   36973             :        // Debugging information
   36974             :           if (start->get_parent() == NULL)
   36975             :              {
   36976             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36977             :              }
   36978             : #endif
   36979           0 :           start->set_parent(initializedName);
   36980           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   36981             : 
   36982             : #if 0
   36983             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   36984             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   36985             : 
   36986             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   36987             :        // ROSE_ASSERT(end != NULL);
   36988             :           if (end == NULL)
   36989             :              {
   36990             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   36991             :              }
   36992             :             else
   36993             :              {
   36994             :                if (end->get_parent() == NULL)
   36995             :                   {
   36996             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   36997             :                   }
   36998             :                end->set_parent(initializedName);
   36999             :                ROSE_ASSERT(end->get_parent() != NULL);
   37000             :              }
   37001             : #endif
   37002             :         }
   37003             : 
   37004             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   37005           0 :      help.insertCopiedNodePair(this,result);
   37006             : 
   37007             :   // printf ("End of copy SgOmpSimdClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   37008             : 
   37009             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   37010             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   37011           0 :      help.decrementDepth();
   37012             : 
   37013             :   // Test if this is the root of the copy!
   37014           0 :      if (help.get_depth() == 0)
   37015             :         {
   37016             :        // This is the original calling node.
   37017             : 
   37018             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   37019             :        // printf ("Calling SgOmpSimdClause::fixupCopy() (from root of AST being copied) \n");
   37020             : #if ALT_FIXUP_COPY
   37021             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   37022           0 :           fixupCopy_scopes (result,help);
   37023           0 :           fixupCopy_symbols (result,help);
   37024           0 :           fixupCopy_references (result,help);
   37025             : #else
   37026             :           fixupCopy(result,help);
   37027             : #endif
   37028             :        // Allow this to be called recursively, so accumulate the state.
   37029             :        // Also, clear the state in the SgCopyHelp object.
   37030             :        // help.clearState();
   37031             :         }
   37032             : 
   37033           0 :      return result;
   37034             :    }
   37035             : 
   37036             : 
   37037             : /* #line 37038 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   37038             : 
   37039             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37040             : 
   37041           0 : SgNode* SgOmpWriteClause::copy ( SgCopyHelp& help) const
   37042             :    {
   37043           0 :      SgOmpWriteClause* result = NULL;
   37044             : 
   37045             :   // printf ("Copy SgOmpWriteClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   37046             : 
   37047             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   37048             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   37049             :   // The default value of the depth is 0, so after this call the depth is 1!
   37050           0 :      help.incrementDepth();
   37051             : 
   37052             : #if 0
   37053             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   37054             :   // but it is not generally true that things can only be copied once!
   37055             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   37056             :   // AstAttribute* existingAttribute = const_cast<SgOmpWriteClause*>(this)->attribute["copied"];
   37057             :      bool previouslyCopied = const_cast<SgOmpWriteClause*>(this)->attribute.exists("copied");
   37058             :      if (previouslyCopied == true)
   37059             :         {
   37060             :           this->get_file_info()->display("Called from copy SgOmpWriteClause: debug");
   37061             :         }
   37062             :      ROSE_ASSERT(previouslyCopied == false);
   37063             : 
   37064             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   37065             :      AstAttribute* newAttribute = new AstAttribute();
   37066             :      ROSE_ASSERT(newAttribute != NULL);
   37067             : 
   37068             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   37069             :      const_cast<SgOmpWriteClause*>(this)->attribute.add("copied",newAttribute);
   37070             : #endif
   37071             : 
   37072             :   // Copy data members from base classes
   37073             :   // Copy constructor parameter data member: startOfConstruct_copy
   37074             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   37075             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   37076           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   37077           0 :      if ( p_startOfConstruct != NULL ) 
   37078             :         { 
   37079           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   37080             :         } 
   37081             :        else 
   37082             :         { 
   37083             :           startOfConstruct_copy = NULL; 
   37084             :         } 
   37085             :  
   37086             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37087             : 
   37088             :   // Build an empty copy of this object (will be filled in, but 
   37089             :   // the parent can't be set and must be set by the caller)
   37090           0 :      result = new SgOmpWriteClause(  startOfConstruct_copy );
   37091           0 :      ROSE_ASSERT(result != NULL);
   37092             : 
   37093             :   // Copy data members of "this" class
   37094             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   37095             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   37096             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   37097           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   37098           0 :      if ( p_endOfConstruct != NULL ) 
   37099             :         { 
   37100           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   37101             :         } 
   37102             :        else 
   37103             :         { 
   37104             :           endOfConstruct_copy = NULL; 
   37105             :         } 
   37106             :   /* check for a valid pointer and delete if present */ 
   37107           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   37108             :   /* add assignment to result here */ 
   37109           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   37110             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   37111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   37112             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   37113           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   37114           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   37115             :         { 
   37116           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   37117             :         } 
   37118             :        else 
   37119             :         { 
   37120             :           attachedPreprocessingInfoPtr_copy = NULL; 
   37121             :         } 
   37122             :   /* check for a valid pointer and delete if present */ 
   37123           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   37124             :   /* add assignment to result here */ 
   37125           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   37126             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   37127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   37128             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   37129           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   37130           0 :      if ( p_attributeMechanism != NULL ) 
   37131             :         { 
   37132           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   37133             :         } 
   37134             :        else 
   37135             :         { 
   37136             :           attributeMechanism_copy = NULL; 
   37137             :         } 
   37138             :   /* check for a valid pointer and delete if present */ 
   37139           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   37140             :   /* add assignment to result here */ 
   37141           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   37142             : 
   37143             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37144             : 
   37145             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   37146             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   37147             :   // fixupCopy(result,help);
   37148             : 
   37149             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   37150             :   // the Sg_File_Info objects that are built for the new IR nodes.
   37151           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   37152           0 :      if (locatedNode != NULL)
   37153             :         {
   37154             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   37155           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   37156           0 :           ROSE_ASSERT(start != NULL);
   37157             : #if 0
   37158             :        // Debugging information
   37159             :           if (start->get_parent() == NULL)
   37160             :              {
   37161             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37162             :              }
   37163             : #endif
   37164           0 :           start->set_parent(locatedNode);
   37165           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   37166             : 
   37167           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   37168             : 
   37169             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   37170             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   37171             :        // ROSE_ASSERT(end != NULL);
   37172           0 :           if (end == NULL)
   37173             :              {
   37174           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   37175             :              }
   37176             :             else
   37177             :              {
   37178             : #if 0
   37179             :             // Debugging information
   37180             :                if (end->get_parent() == NULL)
   37181             :                   {
   37182             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37183             :                   }
   37184             : #endif
   37185           0 :                end->set_parent(locatedNode);
   37186           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   37187             :              }
   37188             : 
   37189           0 :           SgExpression* expression = isSgExpression(result);
   37190           0 :           if (isSgExpression(this) != NULL)
   37191             :              {
   37192           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   37193             : 
   37194             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   37195           0 :                if (operatorPosition != NULL)
   37196             :                   {
   37197             : #if 0
   37198             :                  // Debugging information
   37199             :                     if (operatorPosition->get_parent() == NULL)
   37200             :                        {
   37201             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37202             :                        }
   37203             : #endif
   37204           0 :                     operatorPosition->set_parent(expression);
   37205           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   37206             :                   }
   37207             :              }
   37208             :         }
   37209             : 
   37210             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   37211           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   37212           0 :      if (initializedName != NULL)
   37213             :         {
   37214             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   37215           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   37216           0 :           ROSE_ASSERT(start != NULL);
   37217             : #if 0
   37218             :        // Debugging information
   37219             :           if (start->get_parent() == NULL)
   37220             :              {
   37221             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37222             :              }
   37223             : #endif
   37224           0 :           start->set_parent(initializedName);
   37225           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   37226             : 
   37227             : #if 0
   37228             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   37229             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   37230             : 
   37231             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   37232             :        // ROSE_ASSERT(end != NULL);
   37233             :           if (end == NULL)
   37234             :              {
   37235             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   37236             :              }
   37237             :             else
   37238             :              {
   37239             :                if (end->get_parent() == NULL)
   37240             :                   {
   37241             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37242             :                   }
   37243             :                end->set_parent(initializedName);
   37244             :                ROSE_ASSERT(end->get_parent() != NULL);
   37245             :              }
   37246             : #endif
   37247             :         }
   37248             : 
   37249             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   37250           0 :      help.insertCopiedNodePair(this,result);
   37251             : 
   37252             :   // printf ("End of copy SgOmpWriteClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   37253             : 
   37254             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   37255             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   37256           0 :      help.decrementDepth();
   37257             : 
   37258             :   // Test if this is the root of the copy!
   37259           0 :      if (help.get_depth() == 0)
   37260             :         {
   37261             :        // This is the original calling node.
   37262             : 
   37263             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   37264             :        // printf ("Calling SgOmpWriteClause::fixupCopy() (from root of AST being copied) \n");
   37265             : #if ALT_FIXUP_COPY
   37266             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   37267           0 :           fixupCopy_scopes (result,help);
   37268           0 :           fixupCopy_symbols (result,help);
   37269           0 :           fixupCopy_references (result,help);
   37270             : #else
   37271             :           fixupCopy(result,help);
   37272             : #endif
   37273             :        // Allow this to be called recursively, so accumulate the state.
   37274             :        // Also, clear the state in the SgCopyHelp object.
   37275             :        // help.clearState();
   37276             :         }
   37277             : 
   37278           0 :      return result;
   37279             :    }
   37280             : 
   37281             : 
   37282             : /* #line 37283 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   37283             : 
   37284             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37285             : 
   37286           0 : SgNode* SgOmpUpdateClause::copy ( SgCopyHelp& help) const
   37287             :    {
   37288           0 :      SgOmpUpdateClause* result = NULL;
   37289             : 
   37290             :   // printf ("Copy SgOmpUpdateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   37291             : 
   37292             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   37293             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   37294             :   // The default value of the depth is 0, so after this call the depth is 1!
   37295           0 :      help.incrementDepth();
   37296             : 
   37297             : #if 0
   37298             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   37299             :   // but it is not generally true that things can only be copied once!
   37300             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   37301             :   // AstAttribute* existingAttribute = const_cast<SgOmpUpdateClause*>(this)->attribute["copied"];
   37302             :      bool previouslyCopied = const_cast<SgOmpUpdateClause*>(this)->attribute.exists("copied");
   37303             :      if (previouslyCopied == true)
   37304             :         {
   37305             :           this->get_file_info()->display("Called from copy SgOmpUpdateClause: debug");
   37306             :         }
   37307             :      ROSE_ASSERT(previouslyCopied == false);
   37308             : 
   37309             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   37310             :      AstAttribute* newAttribute = new AstAttribute();
   37311             :      ROSE_ASSERT(newAttribute != NULL);
   37312             : 
   37313             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   37314             :      const_cast<SgOmpUpdateClause*>(this)->attribute.add("copied",newAttribute);
   37315             : #endif
   37316             : 
   37317             :   // Copy data members from base classes
   37318             :   // Copy constructor parameter data member: startOfConstruct_copy
   37319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   37320             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   37321           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   37322           0 :      if ( p_startOfConstruct != NULL ) 
   37323             :         { 
   37324           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   37325             :         } 
   37326             :        else 
   37327             :         { 
   37328             :           startOfConstruct_copy = NULL; 
   37329             :         } 
   37330             :  
   37331             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37332             : 
   37333             :   // Build an empty copy of this object (will be filled in, but 
   37334             :   // the parent can't be set and must be set by the caller)
   37335           0 :      result = new SgOmpUpdateClause(  startOfConstruct_copy );
   37336           0 :      ROSE_ASSERT(result != NULL);
   37337             : 
   37338             :   // Copy data members of "this" class
   37339             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   37340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   37341             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   37342           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   37343           0 :      if ( p_endOfConstruct != NULL ) 
   37344             :         { 
   37345           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   37346             :         } 
   37347             :        else 
   37348             :         { 
   37349             :           endOfConstruct_copy = NULL; 
   37350             :         } 
   37351             :   /* check for a valid pointer and delete if present */ 
   37352           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   37353             :   /* add assignment to result here */ 
   37354           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   37355             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   37356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   37357             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   37358           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   37359           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   37360             :         { 
   37361           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   37362             :         } 
   37363             :        else 
   37364             :         { 
   37365             :           attachedPreprocessingInfoPtr_copy = NULL; 
   37366             :         } 
   37367             :   /* check for a valid pointer and delete if present */ 
   37368           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   37369             :   /* add assignment to result here */ 
   37370           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   37371             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   37372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   37373             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   37374           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   37375           0 :      if ( p_attributeMechanism != NULL ) 
   37376             :         { 
   37377           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   37378             :         } 
   37379             :        else 
   37380             :         { 
   37381             :           attributeMechanism_copy = NULL; 
   37382             :         } 
   37383             :   /* check for a valid pointer and delete if present */ 
   37384           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   37385             :   /* add assignment to result here */ 
   37386           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   37387             : 
   37388             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37389             : 
   37390             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   37391             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   37392             :   // fixupCopy(result,help);
   37393             : 
   37394             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   37395             :   // the Sg_File_Info objects that are built for the new IR nodes.
   37396           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   37397           0 :      if (locatedNode != NULL)
   37398             :         {
   37399             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   37400           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   37401           0 :           ROSE_ASSERT(start != NULL);
   37402             : #if 0
   37403             :        // Debugging information
   37404             :           if (start->get_parent() == NULL)
   37405             :              {
   37406             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37407             :              }
   37408             : #endif
   37409           0 :           start->set_parent(locatedNode);
   37410           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   37411             : 
   37412           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   37413             : 
   37414             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   37415             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   37416             :        // ROSE_ASSERT(end != NULL);
   37417           0 :           if (end == NULL)
   37418             :              {
   37419           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   37420             :              }
   37421             :             else
   37422             :              {
   37423             : #if 0
   37424             :             // Debugging information
   37425             :                if (end->get_parent() == NULL)
   37426             :                   {
   37427             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37428             :                   }
   37429             : #endif
   37430           0 :                end->set_parent(locatedNode);
   37431           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   37432             :              }
   37433             : 
   37434           0 :           SgExpression* expression = isSgExpression(result);
   37435           0 :           if (isSgExpression(this) != NULL)
   37436             :              {
   37437           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   37438             : 
   37439             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   37440           0 :                if (operatorPosition != NULL)
   37441             :                   {
   37442             : #if 0
   37443             :                  // Debugging information
   37444             :                     if (operatorPosition->get_parent() == NULL)
   37445             :                        {
   37446             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37447             :                        }
   37448             : #endif
   37449           0 :                     operatorPosition->set_parent(expression);
   37450           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   37451             :                   }
   37452             :              }
   37453             :         }
   37454             : 
   37455             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   37456           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   37457           0 :      if (initializedName != NULL)
   37458             :         {
   37459             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   37460           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   37461           0 :           ROSE_ASSERT(start != NULL);
   37462             : #if 0
   37463             :        // Debugging information
   37464             :           if (start->get_parent() == NULL)
   37465             :              {
   37466             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37467             :              }
   37468             : #endif
   37469           0 :           start->set_parent(initializedName);
   37470           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   37471             : 
   37472             : #if 0
   37473             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   37474             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   37475             : 
   37476             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   37477             :        // ROSE_ASSERT(end != NULL);
   37478             :           if (end == NULL)
   37479             :              {
   37480             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   37481             :              }
   37482             :             else
   37483             :              {
   37484             :                if (end->get_parent() == NULL)
   37485             :                   {
   37486             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37487             :                   }
   37488             :                end->set_parent(initializedName);
   37489             :                ROSE_ASSERT(end->get_parent() != NULL);
   37490             :              }
   37491             : #endif
   37492             :         }
   37493             : 
   37494             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   37495           0 :      help.insertCopiedNodePair(this,result);
   37496             : 
   37497             :   // printf ("End of copy SgOmpUpdateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   37498             : 
   37499             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   37500             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   37501           0 :      help.decrementDepth();
   37502             : 
   37503             :   // Test if this is the root of the copy!
   37504           0 :      if (help.get_depth() == 0)
   37505             :         {
   37506             :        // This is the original calling node.
   37507             : 
   37508             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   37509             :        // printf ("Calling SgOmpUpdateClause::fixupCopy() (from root of AST being copied) \n");
   37510             : #if ALT_FIXUP_COPY
   37511             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   37512           0 :           fixupCopy_scopes (result,help);
   37513           0 :           fixupCopy_symbols (result,help);
   37514           0 :           fixupCopy_references (result,help);
   37515             : #else
   37516             :           fixupCopy(result,help);
   37517             : #endif
   37518             :        // Allow this to be called recursively, so accumulate the state.
   37519             :        // Also, clear the state in the SgCopyHelp object.
   37520             :        // help.clearState();
   37521             :         }
   37522             : 
   37523           0 :      return result;
   37524             :    }
   37525             : 
   37526             : 
   37527             : /* #line 37528 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   37528             : 
   37529             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37530             : 
   37531           0 : SgNode* SgOmpDepobjUpdateClause::copy ( SgCopyHelp& help) const
   37532             :    {
   37533           0 :      SgOmpDepobjUpdateClause* result = NULL;
   37534             : 
   37535             :   // printf ("Copy SgOmpDepobjUpdateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   37536             : 
   37537             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   37538             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   37539             :   // The default value of the depth is 0, so after this call the depth is 1!
   37540           0 :      help.incrementDepth();
   37541             : 
   37542             : #if 0
   37543             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   37544             :   // but it is not generally true that things can only be copied once!
   37545             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   37546             :   // AstAttribute* existingAttribute = const_cast<SgOmpDepobjUpdateClause*>(this)->attribute["copied"];
   37547             :      bool previouslyCopied = const_cast<SgOmpDepobjUpdateClause*>(this)->attribute.exists("copied");
   37548             :      if (previouslyCopied == true)
   37549             :         {
   37550             :           this->get_file_info()->display("Called from copy SgOmpDepobjUpdateClause: debug");
   37551             :         }
   37552             :      ROSE_ASSERT(previouslyCopied == false);
   37553             : 
   37554             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   37555             :      AstAttribute* newAttribute = new AstAttribute();
   37556             :      ROSE_ASSERT(newAttribute != NULL);
   37557             : 
   37558             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   37559             :      const_cast<SgOmpDepobjUpdateClause*>(this)->attribute.add("copied",newAttribute);
   37560             : #endif
   37561             : 
   37562             :   // Copy data members from base classes
   37563             :   // Copy constructor parameter data member: startOfConstruct_copy
   37564             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   37565             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   37566           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   37567           0 :      if ( p_startOfConstruct != NULL ) 
   37568             :         { 
   37569           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   37570             :         } 
   37571             :        else 
   37572             :         { 
   37573             :           startOfConstruct_copy = NULL; 
   37574             :         } 
   37575             :   // Copy constructor parameter data member: modifier_copy
   37576             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
   37577             :   // case: toBeCopied == COPY_DATA for modifier
   37578           0 :      SgOmpClause::omp_depobj_modifier_enum modifier_copy = p_modifier; 
   37579             :  
   37580             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37581             : 
   37582             :   // Build an empty copy of this object (will be filled in, but 
   37583             :   // the parent can't be set and must be set by the caller)
   37584           0 :      result = new SgOmpDepobjUpdateClause(  startOfConstruct_copy, modifier_copy );
   37585           0 :      ROSE_ASSERT(result != NULL);
   37586             : 
   37587             :   // Copy data members of "this" class
   37588             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   37589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   37590             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   37591           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   37592           0 :      if ( p_endOfConstruct != NULL ) 
   37593             :         { 
   37594           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   37595             :         } 
   37596             :        else 
   37597             :         { 
   37598             :           endOfConstruct_copy = NULL; 
   37599             :         } 
   37600             :   /* check for a valid pointer and delete if present */ 
   37601           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   37602             :   /* add assignment to result here */ 
   37603           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   37604             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   37605             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   37606             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   37607           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   37608           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   37609             :         { 
   37610           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   37611             :         } 
   37612             :        else 
   37613             :         { 
   37614             :           attachedPreprocessingInfoPtr_copy = NULL; 
   37615             :         } 
   37616             :   /* check for a valid pointer and delete if present */ 
   37617           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   37618             :   /* add assignment to result here */ 
   37619           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   37620             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   37621             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   37622             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   37623           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   37624           0 :      if ( p_attributeMechanism != NULL ) 
   37625             :         { 
   37626           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   37627             :         } 
   37628             :        else 
   37629             :         { 
   37630             :           attributeMechanism_copy = NULL; 
   37631             :         } 
   37632             :   /* check for a valid pointer and delete if present */ 
   37633           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   37634             :   /* add assignment to result here */ 
   37635           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   37636             : 
   37637             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37638             : 
   37639             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   37640             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   37641             :   // fixupCopy(result,help);
   37642             : 
   37643             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   37644             :   // the Sg_File_Info objects that are built for the new IR nodes.
   37645           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   37646           0 :      if (locatedNode != NULL)
   37647             :         {
   37648             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   37649           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   37650           0 :           ROSE_ASSERT(start != NULL);
   37651             : #if 0
   37652             :        // Debugging information
   37653             :           if (start->get_parent() == NULL)
   37654             :              {
   37655             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37656             :              }
   37657             : #endif
   37658           0 :           start->set_parent(locatedNode);
   37659           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   37660             : 
   37661           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   37662             : 
   37663             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   37664             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   37665             :        // ROSE_ASSERT(end != NULL);
   37666           0 :           if (end == NULL)
   37667             :              {
   37668           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   37669             :              }
   37670             :             else
   37671             :              {
   37672             : #if 0
   37673             :             // Debugging information
   37674             :                if (end->get_parent() == NULL)
   37675             :                   {
   37676             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37677             :                   }
   37678             : #endif
   37679           0 :                end->set_parent(locatedNode);
   37680           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   37681             :              }
   37682             : 
   37683           0 :           SgExpression* expression = isSgExpression(result);
   37684           0 :           if (isSgExpression(this) != NULL)
   37685             :              {
   37686           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   37687             : 
   37688             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   37689           0 :                if (operatorPosition != NULL)
   37690             :                   {
   37691             : #if 0
   37692             :                  // Debugging information
   37693             :                     if (operatorPosition->get_parent() == NULL)
   37694             :                        {
   37695             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37696             :                        }
   37697             : #endif
   37698           0 :                     operatorPosition->set_parent(expression);
   37699           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   37700             :                   }
   37701             :              }
   37702             :         }
   37703             : 
   37704             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   37705           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   37706           0 :      if (initializedName != NULL)
   37707             :         {
   37708             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   37709           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   37710           0 :           ROSE_ASSERT(start != NULL);
   37711             : #if 0
   37712             :        // Debugging information
   37713             :           if (start->get_parent() == NULL)
   37714             :              {
   37715             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37716             :              }
   37717             : #endif
   37718           0 :           start->set_parent(initializedName);
   37719           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   37720             : 
   37721             : #if 0
   37722             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   37723             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   37724             : 
   37725             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   37726             :        // ROSE_ASSERT(end != NULL);
   37727             :           if (end == NULL)
   37728             :              {
   37729             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   37730             :              }
   37731             :             else
   37732             :              {
   37733             :                if (end->get_parent() == NULL)
   37734             :                   {
   37735             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37736             :                   }
   37737             :                end->set_parent(initializedName);
   37738             :                ROSE_ASSERT(end->get_parent() != NULL);
   37739             :              }
   37740             : #endif
   37741             :         }
   37742             : 
   37743             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   37744           0 :      help.insertCopiedNodePair(this,result);
   37745             : 
   37746             :   // printf ("End of copy SgOmpDepobjUpdateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   37747             : 
   37748             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   37749             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   37750           0 :      help.decrementDepth();
   37751             : 
   37752             :   // Test if this is the root of the copy!
   37753           0 :      if (help.get_depth() == 0)
   37754             :         {
   37755             :        // This is the original calling node.
   37756             : 
   37757             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   37758             :        // printf ("Calling SgOmpDepobjUpdateClause::fixupCopy() (from root of AST being copied) \n");
   37759             : #if ALT_FIXUP_COPY
   37760             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   37761           0 :           fixupCopy_scopes (result,help);
   37762           0 :           fixupCopy_symbols (result,help);
   37763           0 :           fixupCopy_references (result,help);
   37764             : #else
   37765             :           fixupCopy(result,help);
   37766             : #endif
   37767             :        // Allow this to be called recursively, so accumulate the state.
   37768             :        // Also, clear the state in the SgCopyHelp object.
   37769             :        // help.clearState();
   37770             :         }
   37771             : 
   37772           0 :      return result;
   37773             :    }
   37774             : 
   37775             : 
   37776             : /* #line 37777 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   37777             : 
   37778             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37779             : 
   37780           0 : SgNode* SgOmpDestroyClause::copy ( SgCopyHelp& help) const
   37781             :    {
   37782           0 :      SgOmpDestroyClause* result = NULL;
   37783             : 
   37784             :   // printf ("Copy SgOmpDestroyClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   37785             : 
   37786             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   37787             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   37788             :   // The default value of the depth is 0, so after this call the depth is 1!
   37789           0 :      help.incrementDepth();
   37790             : 
   37791             : #if 0
   37792             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   37793             :   // but it is not generally true that things can only be copied once!
   37794             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   37795             :   // AstAttribute* existingAttribute = const_cast<SgOmpDestroyClause*>(this)->attribute["copied"];
   37796             :      bool previouslyCopied = const_cast<SgOmpDestroyClause*>(this)->attribute.exists("copied");
   37797             :      if (previouslyCopied == true)
   37798             :         {
   37799             :           this->get_file_info()->display("Called from copy SgOmpDestroyClause: debug");
   37800             :         }
   37801             :      ROSE_ASSERT(previouslyCopied == false);
   37802             : 
   37803             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   37804             :      AstAttribute* newAttribute = new AstAttribute();
   37805             :      ROSE_ASSERT(newAttribute != NULL);
   37806             : 
   37807             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   37808             :      const_cast<SgOmpDestroyClause*>(this)->attribute.add("copied",newAttribute);
   37809             : #endif
   37810             : 
   37811             :   // Copy data members from base classes
   37812             :   // Copy constructor parameter data member: startOfConstruct_copy
   37813             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   37814             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   37815           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   37816           0 :      if ( p_startOfConstruct != NULL ) 
   37817             :         { 
   37818           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   37819             :         } 
   37820             :        else 
   37821             :         { 
   37822             :           startOfConstruct_copy = NULL; 
   37823             :         } 
   37824             :  
   37825             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37826             : 
   37827             :   // Build an empty copy of this object (will be filled in, but 
   37828             :   // the parent can't be set and must be set by the caller)
   37829           0 :      result = new SgOmpDestroyClause(  startOfConstruct_copy );
   37830           0 :      ROSE_ASSERT(result != NULL);
   37831             : 
   37832             :   // Copy data members of "this" class
   37833             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   37834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   37835             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   37836           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   37837           0 :      if ( p_endOfConstruct != NULL ) 
   37838             :         { 
   37839           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   37840             :         } 
   37841             :        else 
   37842             :         { 
   37843             :           endOfConstruct_copy = NULL; 
   37844             :         } 
   37845             :   /* check for a valid pointer and delete if present */ 
   37846           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   37847             :   /* add assignment to result here */ 
   37848           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   37849             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   37850             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   37851             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   37852           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   37853           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   37854             :         { 
   37855           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   37856             :         } 
   37857             :        else 
   37858             :         { 
   37859             :           attachedPreprocessingInfoPtr_copy = NULL; 
   37860             :         } 
   37861             :   /* check for a valid pointer and delete if present */ 
   37862           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   37863             :   /* add assignment to result here */ 
   37864           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   37865             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   37866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   37867             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   37868           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   37869           0 :      if ( p_attributeMechanism != NULL ) 
   37870             :         { 
   37871           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   37872             :         } 
   37873             :        else 
   37874             :         { 
   37875             :           attributeMechanism_copy = NULL; 
   37876             :         } 
   37877             :   /* check for a valid pointer and delete if present */ 
   37878           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   37879             :   /* add assignment to result here */ 
   37880           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   37881             : 
   37882             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   37883             : 
   37884             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   37885             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   37886             :   // fixupCopy(result,help);
   37887             : 
   37888             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   37889             :   // the Sg_File_Info objects that are built for the new IR nodes.
   37890           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   37891           0 :      if (locatedNode != NULL)
   37892             :         {
   37893             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   37894           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   37895           0 :           ROSE_ASSERT(start != NULL);
   37896             : #if 0
   37897             :        // Debugging information
   37898             :           if (start->get_parent() == NULL)
   37899             :              {
   37900             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37901             :              }
   37902             : #endif
   37903           0 :           start->set_parent(locatedNode);
   37904           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   37905             : 
   37906           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   37907             : 
   37908             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   37909             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   37910             :        // ROSE_ASSERT(end != NULL);
   37911           0 :           if (end == NULL)
   37912             :              {
   37913           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   37914             :              }
   37915             :             else
   37916             :              {
   37917             : #if 0
   37918             :             // Debugging information
   37919             :                if (end->get_parent() == NULL)
   37920             :                   {
   37921             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37922             :                   }
   37923             : #endif
   37924           0 :                end->set_parent(locatedNode);
   37925           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   37926             :              }
   37927             : 
   37928           0 :           SgExpression* expression = isSgExpression(result);
   37929           0 :           if (isSgExpression(this) != NULL)
   37930             :              {
   37931           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   37932             : 
   37933             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   37934           0 :                if (operatorPosition != NULL)
   37935             :                   {
   37936             : #if 0
   37937             :                  // Debugging information
   37938             :                     if (operatorPosition->get_parent() == NULL)
   37939             :                        {
   37940             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37941             :                        }
   37942             : #endif
   37943           0 :                     operatorPosition->set_parent(expression);
   37944           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   37945             :                   }
   37946             :              }
   37947             :         }
   37948             : 
   37949             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   37950           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   37951           0 :      if (initializedName != NULL)
   37952             :         {
   37953             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   37954           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   37955           0 :           ROSE_ASSERT(start != NULL);
   37956             : #if 0
   37957             :        // Debugging information
   37958             :           if (start->get_parent() == NULL)
   37959             :              {
   37960             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37961             :              }
   37962             : #endif
   37963           0 :           start->set_parent(initializedName);
   37964           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   37965             : 
   37966             : #if 0
   37967             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   37968             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   37969             : 
   37970             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   37971             :        // ROSE_ASSERT(end != NULL);
   37972             :           if (end == NULL)
   37973             :              {
   37974             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   37975             :              }
   37976             :             else
   37977             :              {
   37978             :                if (end->get_parent() == NULL)
   37979             :                   {
   37980             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   37981             :                   }
   37982             :                end->set_parent(initializedName);
   37983             :                ROSE_ASSERT(end->get_parent() != NULL);
   37984             :              }
   37985             : #endif
   37986             :         }
   37987             : 
   37988             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   37989           0 :      help.insertCopiedNodePair(this,result);
   37990             : 
   37991             :   // printf ("End of copy SgOmpDestroyClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   37992             : 
   37993             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   37994             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   37995           0 :      help.decrementDepth();
   37996             : 
   37997             :   // Test if this is the root of the copy!
   37998           0 :      if (help.get_depth() == 0)
   37999             :         {
   38000             :        // This is the original calling node.
   38001             : 
   38002             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   38003             :        // printf ("Calling SgOmpDestroyClause::fixupCopy() (from root of AST being copied) \n");
   38004             : #if ALT_FIXUP_COPY
   38005             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   38006           0 :           fixupCopy_scopes (result,help);
   38007           0 :           fixupCopy_symbols (result,help);
   38008           0 :           fixupCopy_references (result,help);
   38009             : #else
   38010             :           fixupCopy(result,help);
   38011             : #endif
   38012             :        // Allow this to be called recursively, so accumulate the state.
   38013             :        // Also, clear the state in the SgCopyHelp object.
   38014             :        // help.clearState();
   38015             :         }
   38016             : 
   38017           0 :      return result;
   38018             :    }
   38019             : 
   38020             : 
   38021             : /* #line 38022 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   38022             : 
   38023             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38024             : 
   38025           0 : SgNode* SgOmpCaptureClause::copy ( SgCopyHelp& help) const
   38026             :    {
   38027           0 :      SgOmpCaptureClause* result = NULL;
   38028             : 
   38029             :   // printf ("Copy SgOmpCaptureClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   38030             : 
   38031             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   38032             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   38033             :   // The default value of the depth is 0, so after this call the depth is 1!
   38034           0 :      help.incrementDepth();
   38035             : 
   38036             : #if 0
   38037             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   38038             :   // but it is not generally true that things can only be copied once!
   38039             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   38040             :   // AstAttribute* existingAttribute = const_cast<SgOmpCaptureClause*>(this)->attribute["copied"];
   38041             :      bool previouslyCopied = const_cast<SgOmpCaptureClause*>(this)->attribute.exists("copied");
   38042             :      if (previouslyCopied == true)
   38043             :         {
   38044             :           this->get_file_info()->display("Called from copy SgOmpCaptureClause: debug");
   38045             :         }
   38046             :      ROSE_ASSERT(previouslyCopied == false);
   38047             : 
   38048             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   38049             :      AstAttribute* newAttribute = new AstAttribute();
   38050             :      ROSE_ASSERT(newAttribute != NULL);
   38051             : 
   38052             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   38053             :      const_cast<SgOmpCaptureClause*>(this)->attribute.add("copied",newAttribute);
   38054             : #endif
   38055             : 
   38056             :   // Copy data members from base classes
   38057             :   // Copy constructor parameter data member: startOfConstruct_copy
   38058             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   38059             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   38060           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   38061           0 :      if ( p_startOfConstruct != NULL ) 
   38062             :         { 
   38063           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   38064             :         } 
   38065             :        else 
   38066             :         { 
   38067             :           startOfConstruct_copy = NULL; 
   38068             :         } 
   38069             :  
   38070             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38071             : 
   38072             :   // Build an empty copy of this object (will be filled in, but 
   38073             :   // the parent can't be set and must be set by the caller)
   38074           0 :      result = new SgOmpCaptureClause(  startOfConstruct_copy );
   38075           0 :      ROSE_ASSERT(result != NULL);
   38076             : 
   38077             :   // Copy data members of "this" class
   38078             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   38079             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   38080             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   38081           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   38082           0 :      if ( p_endOfConstruct != NULL ) 
   38083             :         { 
   38084           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   38085             :         } 
   38086             :        else 
   38087             :         { 
   38088             :           endOfConstruct_copy = NULL; 
   38089             :         } 
   38090             :   /* check for a valid pointer and delete if present */ 
   38091           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   38092             :   /* add assignment to result here */ 
   38093           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   38094             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   38095             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   38096             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   38097           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   38098           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   38099             :         { 
   38100           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   38101             :         } 
   38102             :        else 
   38103             :         { 
   38104             :           attachedPreprocessingInfoPtr_copy = NULL; 
   38105             :         } 
   38106             :   /* check for a valid pointer and delete if present */ 
   38107           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   38108             :   /* add assignment to result here */ 
   38109           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   38110             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   38111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   38112             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   38113           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   38114           0 :      if ( p_attributeMechanism != NULL ) 
   38115             :         { 
   38116           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   38117             :         } 
   38118             :        else 
   38119             :         { 
   38120             :           attributeMechanism_copy = NULL; 
   38121             :         } 
   38122             :   /* check for a valid pointer and delete if present */ 
   38123           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   38124             :   /* add assignment to result here */ 
   38125           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   38126             : 
   38127             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38128             : 
   38129             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   38130             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   38131             :   // fixupCopy(result,help);
   38132             : 
   38133             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   38134             :   // the Sg_File_Info objects that are built for the new IR nodes.
   38135           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   38136           0 :      if (locatedNode != NULL)
   38137             :         {
   38138             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   38139           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   38140           0 :           ROSE_ASSERT(start != NULL);
   38141             : #if 0
   38142             :        // Debugging information
   38143             :           if (start->get_parent() == NULL)
   38144             :              {
   38145             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38146             :              }
   38147             : #endif
   38148           0 :           start->set_parent(locatedNode);
   38149           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   38150             : 
   38151           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   38152             : 
   38153             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   38154             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   38155             :        // ROSE_ASSERT(end != NULL);
   38156           0 :           if (end == NULL)
   38157             :              {
   38158           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   38159             :              }
   38160             :             else
   38161             :              {
   38162             : #if 0
   38163             :             // Debugging information
   38164             :                if (end->get_parent() == NULL)
   38165             :                   {
   38166             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38167             :                   }
   38168             : #endif
   38169           0 :                end->set_parent(locatedNode);
   38170           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   38171             :              }
   38172             : 
   38173           0 :           SgExpression* expression = isSgExpression(result);
   38174           0 :           if (isSgExpression(this) != NULL)
   38175             :              {
   38176           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   38177             : 
   38178             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   38179           0 :                if (operatorPosition != NULL)
   38180             :                   {
   38181             : #if 0
   38182             :                  // Debugging information
   38183             :                     if (operatorPosition->get_parent() == NULL)
   38184             :                        {
   38185             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38186             :                        }
   38187             : #endif
   38188           0 :                     operatorPosition->set_parent(expression);
   38189           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   38190             :                   }
   38191             :              }
   38192             :         }
   38193             : 
   38194             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   38195           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   38196           0 :      if (initializedName != NULL)
   38197             :         {
   38198             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   38199           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   38200           0 :           ROSE_ASSERT(start != NULL);
   38201             : #if 0
   38202             :        // Debugging information
   38203             :           if (start->get_parent() == NULL)
   38204             :              {
   38205             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38206             :              }
   38207             : #endif
   38208           0 :           start->set_parent(initializedName);
   38209           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   38210             : 
   38211             : #if 0
   38212             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   38213             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   38214             : 
   38215             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   38216             :        // ROSE_ASSERT(end != NULL);
   38217             :           if (end == NULL)
   38218             :              {
   38219             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   38220             :              }
   38221             :             else
   38222             :              {
   38223             :                if (end->get_parent() == NULL)
   38224             :                   {
   38225             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38226             :                   }
   38227             :                end->set_parent(initializedName);
   38228             :                ROSE_ASSERT(end->get_parent() != NULL);
   38229             :              }
   38230             : #endif
   38231             :         }
   38232             : 
   38233             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   38234           0 :      help.insertCopiedNodePair(this,result);
   38235             : 
   38236             :   // printf ("End of copy SgOmpCaptureClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   38237             : 
   38238             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   38239             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   38240           0 :      help.decrementDepth();
   38241             : 
   38242             :   // Test if this is the root of the copy!
   38243           0 :      if (help.get_depth() == 0)
   38244             :         {
   38245             :        // This is the original calling node.
   38246             : 
   38247             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   38248             :        // printf ("Calling SgOmpCaptureClause::fixupCopy() (from root of AST being copied) \n");
   38249             : #if ALT_FIXUP_COPY
   38250             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   38251           0 :           fixupCopy_scopes (result,help);
   38252           0 :           fixupCopy_symbols (result,help);
   38253           0 :           fixupCopy_references (result,help);
   38254             : #else
   38255             :           fixupCopy(result,help);
   38256             : #endif
   38257             :        // Allow this to be called recursively, so accumulate the state.
   38258             :        // Also, clear the state in the SgCopyHelp object.
   38259             :        // help.clearState();
   38260             :         }
   38261             : 
   38262           0 :      return result;
   38263             :    }
   38264             : 
   38265             : 
   38266             : /* #line 38267 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   38267             : 
   38268             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38269             : 
   38270           0 : SgNode* SgOmpBeginClause::copy ( SgCopyHelp& help) const
   38271             :    {
   38272           0 :      SgOmpBeginClause* result = NULL;
   38273             : 
   38274             :   // printf ("Copy SgOmpBeginClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   38275             : 
   38276             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   38277             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   38278             :   // The default value of the depth is 0, so after this call the depth is 1!
   38279           0 :      help.incrementDepth();
   38280             : 
   38281             : #if 0
   38282             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   38283             :   // but it is not generally true that things can only be copied once!
   38284             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   38285             :   // AstAttribute* existingAttribute = const_cast<SgOmpBeginClause*>(this)->attribute["copied"];
   38286             :      bool previouslyCopied = const_cast<SgOmpBeginClause*>(this)->attribute.exists("copied");
   38287             :      if (previouslyCopied == true)
   38288             :         {
   38289             :           this->get_file_info()->display("Called from copy SgOmpBeginClause: debug");
   38290             :         }
   38291             :      ROSE_ASSERT(previouslyCopied == false);
   38292             : 
   38293             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   38294             :      AstAttribute* newAttribute = new AstAttribute();
   38295             :      ROSE_ASSERT(newAttribute != NULL);
   38296             : 
   38297             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   38298             :      const_cast<SgOmpBeginClause*>(this)->attribute.add("copied",newAttribute);
   38299             : #endif
   38300             : 
   38301             :   // Copy data members from base classes
   38302             :   // Copy constructor parameter data member: startOfConstruct_copy
   38303             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   38304             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   38305           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   38306           0 :      if ( p_startOfConstruct != NULL ) 
   38307             :         { 
   38308           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   38309             :         } 
   38310             :        else 
   38311             :         { 
   38312             :           startOfConstruct_copy = NULL; 
   38313             :         } 
   38314             :  
   38315             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38316             : 
   38317             :   // Build an empty copy of this object (will be filled in, but 
   38318             :   // the parent can't be set and must be set by the caller)
   38319           0 :      result = new SgOmpBeginClause(  startOfConstruct_copy );
   38320           0 :      ROSE_ASSERT(result != NULL);
   38321             : 
   38322             :   // Copy data members of "this" class
   38323             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   38324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   38325             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   38326           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   38327           0 :      if ( p_endOfConstruct != NULL ) 
   38328             :         { 
   38329           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   38330             :         } 
   38331             :        else 
   38332             :         { 
   38333             :           endOfConstruct_copy = NULL; 
   38334             :         } 
   38335             :   /* check for a valid pointer and delete if present */ 
   38336           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   38337             :   /* add assignment to result here */ 
   38338           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   38339             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   38340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   38341             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   38342           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   38343           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   38344             :         { 
   38345           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   38346             :         } 
   38347             :        else 
   38348             :         { 
   38349             :           attachedPreprocessingInfoPtr_copy = NULL; 
   38350             :         } 
   38351             :   /* check for a valid pointer and delete if present */ 
   38352           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   38353             :   /* add assignment to result here */ 
   38354           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   38355             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   38356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   38357             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   38358           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   38359           0 :      if ( p_attributeMechanism != NULL ) 
   38360             :         { 
   38361           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   38362             :         } 
   38363             :        else 
   38364             :         { 
   38365             :           attributeMechanism_copy = NULL; 
   38366             :         } 
   38367             :   /* check for a valid pointer and delete if present */ 
   38368           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   38369             :   /* add assignment to result here */ 
   38370           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   38371             : 
   38372             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38373             : 
   38374             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   38375             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   38376             :   // fixupCopy(result,help);
   38377             : 
   38378             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   38379             :   // the Sg_File_Info objects that are built for the new IR nodes.
   38380           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   38381           0 :      if (locatedNode != NULL)
   38382             :         {
   38383             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   38384           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   38385           0 :           ROSE_ASSERT(start != NULL);
   38386             : #if 0
   38387             :        // Debugging information
   38388             :           if (start->get_parent() == NULL)
   38389             :              {
   38390             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38391             :              }
   38392             : #endif
   38393           0 :           start->set_parent(locatedNode);
   38394           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   38395             : 
   38396           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   38397             : 
   38398             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   38399             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   38400             :        // ROSE_ASSERT(end != NULL);
   38401           0 :           if (end == NULL)
   38402             :              {
   38403           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   38404             :              }
   38405             :             else
   38406             :              {
   38407             : #if 0
   38408             :             // Debugging information
   38409             :                if (end->get_parent() == NULL)
   38410             :                   {
   38411             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38412             :                   }
   38413             : #endif
   38414           0 :                end->set_parent(locatedNode);
   38415           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   38416             :              }
   38417             : 
   38418           0 :           SgExpression* expression = isSgExpression(result);
   38419           0 :           if (isSgExpression(this) != NULL)
   38420             :              {
   38421           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   38422             : 
   38423             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   38424           0 :                if (operatorPosition != NULL)
   38425             :                   {
   38426             : #if 0
   38427             :                  // Debugging information
   38428             :                     if (operatorPosition->get_parent() == NULL)
   38429             :                        {
   38430             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38431             :                        }
   38432             : #endif
   38433           0 :                     operatorPosition->set_parent(expression);
   38434           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   38435             :                   }
   38436             :              }
   38437             :         }
   38438             : 
   38439             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   38440           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   38441           0 :      if (initializedName != NULL)
   38442             :         {
   38443             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   38444           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   38445           0 :           ROSE_ASSERT(start != NULL);
   38446             : #if 0
   38447             :        // Debugging information
   38448             :           if (start->get_parent() == NULL)
   38449             :              {
   38450             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38451             :              }
   38452             : #endif
   38453           0 :           start->set_parent(initializedName);
   38454           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   38455             : 
   38456             : #if 0
   38457             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   38458             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   38459             : 
   38460             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   38461             :        // ROSE_ASSERT(end != NULL);
   38462             :           if (end == NULL)
   38463             :              {
   38464             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   38465             :              }
   38466             :             else
   38467             :              {
   38468             :                if (end->get_parent() == NULL)
   38469             :                   {
   38470             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38471             :                   }
   38472             :                end->set_parent(initializedName);
   38473             :                ROSE_ASSERT(end->get_parent() != NULL);
   38474             :              }
   38475             : #endif
   38476             :         }
   38477             : 
   38478             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   38479           0 :      help.insertCopiedNodePair(this,result);
   38480             : 
   38481             :   // printf ("End of copy SgOmpBeginClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   38482             : 
   38483             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   38484             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   38485           0 :      help.decrementDepth();
   38486             : 
   38487             :   // Test if this is the root of the copy!
   38488           0 :      if (help.get_depth() == 0)
   38489             :         {
   38490             :        // This is the original calling node.
   38491             : 
   38492             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   38493             :        // printf ("Calling SgOmpBeginClause::fixupCopy() (from root of AST being copied) \n");
   38494             : #if ALT_FIXUP_COPY
   38495             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   38496           0 :           fixupCopy_scopes (result,help);
   38497           0 :           fixupCopy_symbols (result,help);
   38498           0 :           fixupCopy_references (result,help);
   38499             : #else
   38500             :           fixupCopy(result,help);
   38501             : #endif
   38502             :        // Allow this to be called recursively, so accumulate the state.
   38503             :        // Also, clear the state in the SgCopyHelp object.
   38504             :        // help.clearState();
   38505             :         }
   38506             : 
   38507           0 :      return result;
   38508             :    }
   38509             : 
   38510             : 
   38511             : /* #line 38512 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   38512             : 
   38513             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38514             : 
   38515           0 : SgNode* SgOmpEndClause::copy ( SgCopyHelp& help) const
   38516             :    {
   38517           0 :      SgOmpEndClause* result = NULL;
   38518             : 
   38519             :   // printf ("Copy SgOmpEndClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   38520             : 
   38521             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   38522             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   38523             :   // The default value of the depth is 0, so after this call the depth is 1!
   38524           0 :      help.incrementDepth();
   38525             : 
   38526             : #if 0
   38527             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   38528             :   // but it is not generally true that things can only be copied once!
   38529             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   38530             :   // AstAttribute* existingAttribute = const_cast<SgOmpEndClause*>(this)->attribute["copied"];
   38531             :      bool previouslyCopied = const_cast<SgOmpEndClause*>(this)->attribute.exists("copied");
   38532             :      if (previouslyCopied == true)
   38533             :         {
   38534             :           this->get_file_info()->display("Called from copy SgOmpEndClause: debug");
   38535             :         }
   38536             :      ROSE_ASSERT(previouslyCopied == false);
   38537             : 
   38538             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   38539             :      AstAttribute* newAttribute = new AstAttribute();
   38540             :      ROSE_ASSERT(newAttribute != NULL);
   38541             : 
   38542             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   38543             :      const_cast<SgOmpEndClause*>(this)->attribute.add("copied",newAttribute);
   38544             : #endif
   38545             : 
   38546             :   // Copy data members from base classes
   38547             :   // Copy constructor parameter data member: startOfConstruct_copy
   38548             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   38549             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   38550           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   38551           0 :      if ( p_startOfConstruct != NULL ) 
   38552             :         { 
   38553           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   38554             :         } 
   38555             :        else 
   38556             :         { 
   38557             :           startOfConstruct_copy = NULL; 
   38558             :         } 
   38559             :  
   38560             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38561             : 
   38562             :   // Build an empty copy of this object (will be filled in, but 
   38563             :   // the parent can't be set and must be set by the caller)
   38564           0 :      result = new SgOmpEndClause(  startOfConstruct_copy );
   38565           0 :      ROSE_ASSERT(result != NULL);
   38566             : 
   38567             :   // Copy data members of "this" class
   38568             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   38569             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   38570             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   38571           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   38572           0 :      if ( p_endOfConstruct != NULL ) 
   38573             :         { 
   38574           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   38575             :         } 
   38576             :        else 
   38577             :         { 
   38578             :           endOfConstruct_copy = NULL; 
   38579             :         } 
   38580             :   /* check for a valid pointer and delete if present */ 
   38581           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   38582             :   /* add assignment to result here */ 
   38583           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   38584             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   38585             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   38586             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   38587           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   38588           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   38589             :         { 
   38590           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   38591             :         } 
   38592             :        else 
   38593             :         { 
   38594             :           attachedPreprocessingInfoPtr_copy = NULL; 
   38595             :         } 
   38596             :   /* check for a valid pointer and delete if present */ 
   38597           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   38598             :   /* add assignment to result here */ 
   38599           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   38600             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   38601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   38602             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   38603           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   38604           0 :      if ( p_attributeMechanism != NULL ) 
   38605             :         { 
   38606           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   38607             :         } 
   38608             :        else 
   38609             :         { 
   38610             :           attributeMechanism_copy = NULL; 
   38611             :         } 
   38612             :   /* check for a valid pointer and delete if present */ 
   38613           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   38614             :   /* add assignment to result here */ 
   38615           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   38616             : 
   38617             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38618             : 
   38619             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   38620             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   38621             :   // fixupCopy(result,help);
   38622             : 
   38623             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   38624             :   // the Sg_File_Info objects that are built for the new IR nodes.
   38625           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   38626           0 :      if (locatedNode != NULL)
   38627             :         {
   38628             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   38629           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   38630           0 :           ROSE_ASSERT(start != NULL);
   38631             : #if 0
   38632             :        // Debugging information
   38633             :           if (start->get_parent() == NULL)
   38634             :              {
   38635             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38636             :              }
   38637             : #endif
   38638           0 :           start->set_parent(locatedNode);
   38639           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   38640             : 
   38641           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   38642             : 
   38643             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   38644             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   38645             :        // ROSE_ASSERT(end != NULL);
   38646           0 :           if (end == NULL)
   38647             :              {
   38648           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   38649             :              }
   38650             :             else
   38651             :              {
   38652             : #if 0
   38653             :             // Debugging information
   38654             :                if (end->get_parent() == NULL)
   38655             :                   {
   38656             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38657             :                   }
   38658             : #endif
   38659           0 :                end->set_parent(locatedNode);
   38660           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   38661             :              }
   38662             : 
   38663           0 :           SgExpression* expression = isSgExpression(result);
   38664           0 :           if (isSgExpression(this) != NULL)
   38665             :              {
   38666           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   38667             : 
   38668             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   38669           0 :                if (operatorPosition != NULL)
   38670             :                   {
   38671             : #if 0
   38672             :                  // Debugging information
   38673             :                     if (operatorPosition->get_parent() == NULL)
   38674             :                        {
   38675             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38676             :                        }
   38677             : #endif
   38678           0 :                     operatorPosition->set_parent(expression);
   38679           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   38680             :                   }
   38681             :              }
   38682             :         }
   38683             : 
   38684             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   38685           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   38686           0 :      if (initializedName != NULL)
   38687             :         {
   38688             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   38689           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   38690           0 :           ROSE_ASSERT(start != NULL);
   38691             : #if 0
   38692             :        // Debugging information
   38693             :           if (start->get_parent() == NULL)
   38694             :              {
   38695             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38696             :              }
   38697             : #endif
   38698           0 :           start->set_parent(initializedName);
   38699           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   38700             : 
   38701             : #if 0
   38702             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   38703             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   38704             : 
   38705             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   38706             :        // ROSE_ASSERT(end != NULL);
   38707             :           if (end == NULL)
   38708             :              {
   38709             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   38710             :              }
   38711             :             else
   38712             :              {
   38713             :                if (end->get_parent() == NULL)
   38714             :                   {
   38715             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38716             :                   }
   38717             :                end->set_parent(initializedName);
   38718             :                ROSE_ASSERT(end->get_parent() != NULL);
   38719             :              }
   38720             : #endif
   38721             :         }
   38722             : 
   38723             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   38724           0 :      help.insertCopiedNodePair(this,result);
   38725             : 
   38726             :   // printf ("End of copy SgOmpEndClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   38727             : 
   38728             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   38729             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   38730           0 :      help.decrementDepth();
   38731             : 
   38732             :   // Test if this is the root of the copy!
   38733           0 :      if (help.get_depth() == 0)
   38734             :         {
   38735             :        // This is the original calling node.
   38736             : 
   38737             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   38738             :        // printf ("Calling SgOmpEndClause::fixupCopy() (from root of AST being copied) \n");
   38739             : #if ALT_FIXUP_COPY
   38740             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   38741           0 :           fixupCopy_scopes (result,help);
   38742           0 :           fixupCopy_symbols (result,help);
   38743           0 :           fixupCopy_references (result,help);
   38744             : #else
   38745             :           fixupCopy(result,help);
   38746             : #endif
   38747             :        // Allow this to be called recursively, so accumulate the state.
   38748             :        // Also, clear the state in the SgCopyHelp object.
   38749             :        // help.clearState();
   38750             :         }
   38751             : 
   38752           0 :      return result;
   38753             :    }
   38754             : 
   38755             : 
   38756             : /* #line 38757 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   38757             : 
   38758             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38759             : 
   38760           0 : SgNode* SgOmpUntiedClause::copy ( SgCopyHelp& help) const
   38761             :    {
   38762           0 :      SgOmpUntiedClause* result = NULL;
   38763             : 
   38764             :   // printf ("Copy SgOmpUntiedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   38765             : 
   38766             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   38767             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   38768             :   // The default value of the depth is 0, so after this call the depth is 1!
   38769           0 :      help.incrementDepth();
   38770             : 
   38771             : #if 0
   38772             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   38773             :   // but it is not generally true that things can only be copied once!
   38774             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   38775             :   // AstAttribute* existingAttribute = const_cast<SgOmpUntiedClause*>(this)->attribute["copied"];
   38776             :      bool previouslyCopied = const_cast<SgOmpUntiedClause*>(this)->attribute.exists("copied");
   38777             :      if (previouslyCopied == true)
   38778             :         {
   38779             :           this->get_file_info()->display("Called from copy SgOmpUntiedClause: debug");
   38780             :         }
   38781             :      ROSE_ASSERT(previouslyCopied == false);
   38782             : 
   38783             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   38784             :      AstAttribute* newAttribute = new AstAttribute();
   38785             :      ROSE_ASSERT(newAttribute != NULL);
   38786             : 
   38787             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   38788             :      const_cast<SgOmpUntiedClause*>(this)->attribute.add("copied",newAttribute);
   38789             : #endif
   38790             : 
   38791             :   // Copy data members from base classes
   38792             :   // Copy constructor parameter data member: startOfConstruct_copy
   38793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   38794             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   38795           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   38796           0 :      if ( p_startOfConstruct != NULL ) 
   38797             :         { 
   38798           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   38799             :         } 
   38800             :        else 
   38801             :         { 
   38802             :           startOfConstruct_copy = NULL; 
   38803             :         } 
   38804             :  
   38805             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38806             : 
   38807             :   // Build an empty copy of this object (will be filled in, but 
   38808             :   // the parent can't be set and must be set by the caller)
   38809           0 :      result = new SgOmpUntiedClause(  startOfConstruct_copy );
   38810           0 :      ROSE_ASSERT(result != NULL);
   38811             : 
   38812             :   // Copy data members of "this" class
   38813             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   38814             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   38815             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   38816           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   38817           0 :      if ( p_endOfConstruct != NULL ) 
   38818             :         { 
   38819           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   38820             :         } 
   38821             :        else 
   38822             :         { 
   38823             :           endOfConstruct_copy = NULL; 
   38824             :         } 
   38825             :   /* check for a valid pointer and delete if present */ 
   38826           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   38827             :   /* add assignment to result here */ 
   38828           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   38829             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   38830             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   38831             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   38832           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   38833           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   38834             :         { 
   38835           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   38836             :         } 
   38837             :        else 
   38838             :         { 
   38839             :           attachedPreprocessingInfoPtr_copy = NULL; 
   38840             :         } 
   38841             :   /* check for a valid pointer and delete if present */ 
   38842           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   38843             :   /* add assignment to result here */ 
   38844           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   38845             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   38846             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   38847             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   38848           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   38849           0 :      if ( p_attributeMechanism != NULL ) 
   38850             :         { 
   38851           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   38852             :         } 
   38853             :        else 
   38854             :         { 
   38855             :           attributeMechanism_copy = NULL; 
   38856             :         } 
   38857             :   /* check for a valid pointer and delete if present */ 
   38858           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   38859             :   /* add assignment to result here */ 
   38860           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   38861             : 
   38862             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   38863             : 
   38864             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   38865             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   38866             :   // fixupCopy(result,help);
   38867             : 
   38868             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   38869             :   // the Sg_File_Info objects that are built for the new IR nodes.
   38870           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   38871           0 :      if (locatedNode != NULL)
   38872             :         {
   38873             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   38874           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   38875           0 :           ROSE_ASSERT(start != NULL);
   38876             : #if 0
   38877             :        // Debugging information
   38878             :           if (start->get_parent() == NULL)
   38879             :              {
   38880             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38881             :              }
   38882             : #endif
   38883           0 :           start->set_parent(locatedNode);
   38884           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   38885             : 
   38886           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   38887             : 
   38888             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   38889             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   38890             :        // ROSE_ASSERT(end != NULL);
   38891           0 :           if (end == NULL)
   38892             :              {
   38893           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   38894             :              }
   38895             :             else
   38896             :              {
   38897             : #if 0
   38898             :             // Debugging information
   38899             :                if (end->get_parent() == NULL)
   38900             :                   {
   38901             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38902             :                   }
   38903             : #endif
   38904           0 :                end->set_parent(locatedNode);
   38905           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   38906             :              }
   38907             : 
   38908           0 :           SgExpression* expression = isSgExpression(result);
   38909           0 :           if (isSgExpression(this) != NULL)
   38910             :              {
   38911           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   38912             : 
   38913             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   38914           0 :                if (operatorPosition != NULL)
   38915             :                   {
   38916             : #if 0
   38917             :                  // Debugging information
   38918             :                     if (operatorPosition->get_parent() == NULL)
   38919             :                        {
   38920             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38921             :                        }
   38922             : #endif
   38923           0 :                     operatorPosition->set_parent(expression);
   38924           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   38925             :                   }
   38926             :              }
   38927             :         }
   38928             : 
   38929             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   38930           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   38931           0 :      if (initializedName != NULL)
   38932             :         {
   38933             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   38934           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   38935           0 :           ROSE_ASSERT(start != NULL);
   38936             : #if 0
   38937             :        // Debugging information
   38938             :           if (start->get_parent() == NULL)
   38939             :              {
   38940             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38941             :              }
   38942             : #endif
   38943           0 :           start->set_parent(initializedName);
   38944           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   38945             : 
   38946             : #if 0
   38947             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   38948             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   38949             : 
   38950             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   38951             :        // ROSE_ASSERT(end != NULL);
   38952             :           if (end == NULL)
   38953             :              {
   38954             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   38955             :              }
   38956             :             else
   38957             :              {
   38958             :                if (end->get_parent() == NULL)
   38959             :                   {
   38960             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   38961             :                   }
   38962             :                end->set_parent(initializedName);
   38963             :                ROSE_ASSERT(end->get_parent() != NULL);
   38964             :              }
   38965             : #endif
   38966             :         }
   38967             : 
   38968             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   38969           0 :      help.insertCopiedNodePair(this,result);
   38970             : 
   38971             :   // printf ("End of copy SgOmpUntiedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   38972             : 
   38973             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   38974             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   38975           0 :      help.decrementDepth();
   38976             : 
   38977             :   // Test if this is the root of the copy!
   38978           0 :      if (help.get_depth() == 0)
   38979             :         {
   38980             :        // This is the original calling node.
   38981             : 
   38982             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   38983             :        // printf ("Calling SgOmpUntiedClause::fixupCopy() (from root of AST being copied) \n");
   38984             : #if ALT_FIXUP_COPY
   38985             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   38986           0 :           fixupCopy_scopes (result,help);
   38987           0 :           fixupCopy_symbols (result,help);
   38988           0 :           fixupCopy_references (result,help);
   38989             : #else
   38990             :           fixupCopy(result,help);
   38991             : #endif
   38992             :        // Allow this to be called recursively, so accumulate the state.
   38993             :        // Also, clear the state in the SgCopyHelp object.
   38994             :        // help.clearState();
   38995             :         }
   38996             : 
   38997           0 :      return result;
   38998             :    }
   38999             : 
   39000             : 
   39001             : /* #line 39002 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   39002             : 
   39003             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39004             : 
   39005           0 : SgNode* SgOmpSeqCstClause::copy ( SgCopyHelp& help) const
   39006             :    {
   39007           0 :      SgOmpSeqCstClause* result = NULL;
   39008             : 
   39009             :   // printf ("Copy SgOmpSeqCstClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   39010             : 
   39011             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   39012             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   39013             :   // The default value of the depth is 0, so after this call the depth is 1!
   39014           0 :      help.incrementDepth();
   39015             : 
   39016             : #if 0
   39017             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   39018             :   // but it is not generally true that things can only be copied once!
   39019             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   39020             :   // AstAttribute* existingAttribute = const_cast<SgOmpSeqCstClause*>(this)->attribute["copied"];
   39021             :      bool previouslyCopied = const_cast<SgOmpSeqCstClause*>(this)->attribute.exists("copied");
   39022             :      if (previouslyCopied == true)
   39023             :         {
   39024             :           this->get_file_info()->display("Called from copy SgOmpSeqCstClause: debug");
   39025             :         }
   39026             :      ROSE_ASSERT(previouslyCopied == false);
   39027             : 
   39028             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   39029             :      AstAttribute* newAttribute = new AstAttribute();
   39030             :      ROSE_ASSERT(newAttribute != NULL);
   39031             : 
   39032             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   39033             :      const_cast<SgOmpSeqCstClause*>(this)->attribute.add("copied",newAttribute);
   39034             : #endif
   39035             : 
   39036             :   // Copy data members from base classes
   39037             :   // Copy constructor parameter data member: startOfConstruct_copy
   39038             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   39039             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   39040           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   39041           0 :      if ( p_startOfConstruct != NULL ) 
   39042             :         { 
   39043           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   39044             :         } 
   39045             :        else 
   39046             :         { 
   39047             :           startOfConstruct_copy = NULL; 
   39048             :         } 
   39049             :  
   39050             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39051             : 
   39052             :   // Build an empty copy of this object (will be filled in, but 
   39053             :   // the parent can't be set and must be set by the caller)
   39054           0 :      result = new SgOmpSeqCstClause(  startOfConstruct_copy );
   39055           0 :      ROSE_ASSERT(result != NULL);
   39056             : 
   39057             :   // Copy data members of "this" class
   39058             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   39059             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   39060             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   39061           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   39062           0 :      if ( p_endOfConstruct != NULL ) 
   39063             :         { 
   39064           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   39065             :         } 
   39066             :        else 
   39067             :         { 
   39068             :           endOfConstruct_copy = NULL; 
   39069             :         } 
   39070             :   /* check for a valid pointer and delete if present */ 
   39071           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   39072             :   /* add assignment to result here */ 
   39073           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   39074             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   39075             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   39076             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   39077           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   39078           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   39079             :         { 
   39080           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   39081             :         } 
   39082             :        else 
   39083             :         { 
   39084             :           attachedPreprocessingInfoPtr_copy = NULL; 
   39085             :         } 
   39086             :   /* check for a valid pointer and delete if present */ 
   39087           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   39088             :   /* add assignment to result here */ 
   39089           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   39090             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   39091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   39092             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   39093           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   39094           0 :      if ( p_attributeMechanism != NULL ) 
   39095             :         { 
   39096           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   39097             :         } 
   39098             :        else 
   39099             :         { 
   39100             :           attributeMechanism_copy = NULL; 
   39101             :         } 
   39102             :   /* check for a valid pointer and delete if present */ 
   39103           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   39104             :   /* add assignment to result here */ 
   39105           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   39106             : 
   39107             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39108             : 
   39109             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   39110             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   39111             :   // fixupCopy(result,help);
   39112             : 
   39113             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   39114             :   // the Sg_File_Info objects that are built for the new IR nodes.
   39115           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   39116           0 :      if (locatedNode != NULL)
   39117             :         {
   39118             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   39119           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   39120           0 :           ROSE_ASSERT(start != NULL);
   39121             : #if 0
   39122             :        // Debugging information
   39123             :           if (start->get_parent() == NULL)
   39124             :              {
   39125             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39126             :              }
   39127             : #endif
   39128           0 :           start->set_parent(locatedNode);
   39129           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   39130             : 
   39131           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   39132             : 
   39133             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   39134             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   39135             :        // ROSE_ASSERT(end != NULL);
   39136           0 :           if (end == NULL)
   39137             :              {
   39138           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   39139             :              }
   39140             :             else
   39141             :              {
   39142             : #if 0
   39143             :             // Debugging information
   39144             :                if (end->get_parent() == NULL)
   39145             :                   {
   39146             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39147             :                   }
   39148             : #endif
   39149           0 :                end->set_parent(locatedNode);
   39150           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   39151             :              }
   39152             : 
   39153           0 :           SgExpression* expression = isSgExpression(result);
   39154           0 :           if (isSgExpression(this) != NULL)
   39155             :              {
   39156           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   39157             : 
   39158             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   39159           0 :                if (operatorPosition != NULL)
   39160             :                   {
   39161             : #if 0
   39162             :                  // Debugging information
   39163             :                     if (operatorPosition->get_parent() == NULL)
   39164             :                        {
   39165             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39166             :                        }
   39167             : #endif
   39168           0 :                     operatorPosition->set_parent(expression);
   39169           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   39170             :                   }
   39171             :              }
   39172             :         }
   39173             : 
   39174             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   39175           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   39176           0 :      if (initializedName != NULL)
   39177             :         {
   39178             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   39179           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   39180           0 :           ROSE_ASSERT(start != NULL);
   39181             : #if 0
   39182             :        // Debugging information
   39183             :           if (start->get_parent() == NULL)
   39184             :              {
   39185             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39186             :              }
   39187             : #endif
   39188           0 :           start->set_parent(initializedName);
   39189           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   39190             : 
   39191             : #if 0
   39192             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   39193             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   39194             : 
   39195             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   39196             :        // ROSE_ASSERT(end != NULL);
   39197             :           if (end == NULL)
   39198             :              {
   39199             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   39200             :              }
   39201             :             else
   39202             :              {
   39203             :                if (end->get_parent() == NULL)
   39204             :                   {
   39205             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39206             :                   }
   39207             :                end->set_parent(initializedName);
   39208             :                ROSE_ASSERT(end->get_parent() != NULL);
   39209             :              }
   39210             : #endif
   39211             :         }
   39212             : 
   39213             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   39214           0 :      help.insertCopiedNodePair(this,result);
   39215             : 
   39216             :   // printf ("End of copy SgOmpSeqCstClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   39217             : 
   39218             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   39219             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   39220           0 :      help.decrementDepth();
   39221             : 
   39222             :   // Test if this is the root of the copy!
   39223           0 :      if (help.get_depth() == 0)
   39224             :         {
   39225             :        // This is the original calling node.
   39226             : 
   39227             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   39228             :        // printf ("Calling SgOmpSeqCstClause::fixupCopy() (from root of AST being copied) \n");
   39229             : #if ALT_FIXUP_COPY
   39230             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   39231           0 :           fixupCopy_scopes (result,help);
   39232           0 :           fixupCopy_symbols (result,help);
   39233           0 :           fixupCopy_references (result,help);
   39234             : #else
   39235             :           fixupCopy(result,help);
   39236             : #endif
   39237             :        // Allow this to be called recursively, so accumulate the state.
   39238             :        // Also, clear the state in the SgCopyHelp object.
   39239             :        // help.clearState();
   39240             :         }
   39241             : 
   39242           0 :      return result;
   39243             :    }
   39244             : 
   39245             : 
   39246             : /* #line 39247 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   39247             : 
   39248             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39249             : 
   39250           0 : SgNode* SgOmpAcqRelClause::copy ( SgCopyHelp& help) const
   39251             :    {
   39252           0 :      SgOmpAcqRelClause* result = NULL;
   39253             : 
   39254             :   // printf ("Copy SgOmpAcqRelClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   39255             : 
   39256             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   39257             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   39258             :   // The default value of the depth is 0, so after this call the depth is 1!
   39259           0 :      help.incrementDepth();
   39260             : 
   39261             : #if 0
   39262             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   39263             :   // but it is not generally true that things can only be copied once!
   39264             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   39265             :   // AstAttribute* existingAttribute = const_cast<SgOmpAcqRelClause*>(this)->attribute["copied"];
   39266             :      bool previouslyCopied = const_cast<SgOmpAcqRelClause*>(this)->attribute.exists("copied");
   39267             :      if (previouslyCopied == true)
   39268             :         {
   39269             :           this->get_file_info()->display("Called from copy SgOmpAcqRelClause: debug");
   39270             :         }
   39271             :      ROSE_ASSERT(previouslyCopied == false);
   39272             : 
   39273             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   39274             :      AstAttribute* newAttribute = new AstAttribute();
   39275             :      ROSE_ASSERT(newAttribute != NULL);
   39276             : 
   39277             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   39278             :      const_cast<SgOmpAcqRelClause*>(this)->attribute.add("copied",newAttribute);
   39279             : #endif
   39280             : 
   39281             :   // Copy data members from base classes
   39282             :   // Copy constructor parameter data member: startOfConstruct_copy
   39283             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   39284             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   39285           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   39286           0 :      if ( p_startOfConstruct != NULL ) 
   39287             :         { 
   39288           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   39289             :         } 
   39290             :        else 
   39291             :         { 
   39292             :           startOfConstruct_copy = NULL; 
   39293             :         } 
   39294             :  
   39295             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39296             : 
   39297             :   // Build an empty copy of this object (will be filled in, but 
   39298             :   // the parent can't be set and must be set by the caller)
   39299           0 :      result = new SgOmpAcqRelClause(  startOfConstruct_copy );
   39300           0 :      ROSE_ASSERT(result != NULL);
   39301             : 
   39302             :   // Copy data members of "this" class
   39303             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   39304             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   39305             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   39306           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   39307           0 :      if ( p_endOfConstruct != NULL ) 
   39308             :         { 
   39309           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   39310             :         } 
   39311             :        else 
   39312             :         { 
   39313             :           endOfConstruct_copy = NULL; 
   39314             :         } 
   39315             :   /* check for a valid pointer and delete if present */ 
   39316           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   39317             :   /* add assignment to result here */ 
   39318           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   39319             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   39320             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   39321             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   39322           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   39323           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   39324             :         { 
   39325           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   39326             :         } 
   39327             :        else 
   39328             :         { 
   39329             :           attachedPreprocessingInfoPtr_copy = NULL; 
   39330             :         } 
   39331             :   /* check for a valid pointer and delete if present */ 
   39332           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   39333             :   /* add assignment to result here */ 
   39334           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   39335             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   39336             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   39337             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   39338           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   39339           0 :      if ( p_attributeMechanism != NULL ) 
   39340             :         { 
   39341           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   39342             :         } 
   39343             :        else 
   39344             :         { 
   39345             :           attributeMechanism_copy = NULL; 
   39346             :         } 
   39347             :   /* check for a valid pointer and delete if present */ 
   39348           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   39349             :   /* add assignment to result here */ 
   39350           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   39351             : 
   39352             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39353             : 
   39354             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   39355             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   39356             :   // fixupCopy(result,help);
   39357             : 
   39358             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   39359             :   // the Sg_File_Info objects that are built for the new IR nodes.
   39360           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   39361           0 :      if (locatedNode != NULL)
   39362             :         {
   39363             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   39364           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   39365           0 :           ROSE_ASSERT(start != NULL);
   39366             : #if 0
   39367             :        // Debugging information
   39368             :           if (start->get_parent() == NULL)
   39369             :              {
   39370             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39371             :              }
   39372             : #endif
   39373           0 :           start->set_parent(locatedNode);
   39374           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   39375             : 
   39376           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   39377             : 
   39378             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   39379             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   39380             :        // ROSE_ASSERT(end != NULL);
   39381           0 :           if (end == NULL)
   39382             :              {
   39383           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   39384             :              }
   39385             :             else
   39386             :              {
   39387             : #if 0
   39388             :             // Debugging information
   39389             :                if (end->get_parent() == NULL)
   39390             :                   {
   39391             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39392             :                   }
   39393             : #endif
   39394           0 :                end->set_parent(locatedNode);
   39395           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   39396             :              }
   39397             : 
   39398           0 :           SgExpression* expression = isSgExpression(result);
   39399           0 :           if (isSgExpression(this) != NULL)
   39400             :              {
   39401           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   39402             : 
   39403             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   39404           0 :                if (operatorPosition != NULL)
   39405             :                   {
   39406             : #if 0
   39407             :                  // Debugging information
   39408             :                     if (operatorPosition->get_parent() == NULL)
   39409             :                        {
   39410             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39411             :                        }
   39412             : #endif
   39413           0 :                     operatorPosition->set_parent(expression);
   39414           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   39415             :                   }
   39416             :              }
   39417             :         }
   39418             : 
   39419             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   39420           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   39421           0 :      if (initializedName != NULL)
   39422             :         {
   39423             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   39424           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   39425           0 :           ROSE_ASSERT(start != NULL);
   39426             : #if 0
   39427             :        // Debugging information
   39428             :           if (start->get_parent() == NULL)
   39429             :              {
   39430             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39431             :              }
   39432             : #endif
   39433           0 :           start->set_parent(initializedName);
   39434           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   39435             : 
   39436             : #if 0
   39437             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   39438             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   39439             : 
   39440             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   39441             :        // ROSE_ASSERT(end != NULL);
   39442             :           if (end == NULL)
   39443             :              {
   39444             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   39445             :              }
   39446             :             else
   39447             :              {
   39448             :                if (end->get_parent() == NULL)
   39449             :                   {
   39450             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39451             :                   }
   39452             :                end->set_parent(initializedName);
   39453             :                ROSE_ASSERT(end->get_parent() != NULL);
   39454             :              }
   39455             : #endif
   39456             :         }
   39457             : 
   39458             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   39459           0 :      help.insertCopiedNodePair(this,result);
   39460             : 
   39461             :   // printf ("End of copy SgOmpAcqRelClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   39462             : 
   39463             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   39464             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   39465           0 :      help.decrementDepth();
   39466             : 
   39467             :   // Test if this is the root of the copy!
   39468           0 :      if (help.get_depth() == 0)
   39469             :         {
   39470             :        // This is the original calling node.
   39471             : 
   39472             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   39473             :        // printf ("Calling SgOmpAcqRelClause::fixupCopy() (from root of AST being copied) \n");
   39474             : #if ALT_FIXUP_COPY
   39475             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   39476           0 :           fixupCopy_scopes (result,help);
   39477           0 :           fixupCopy_symbols (result,help);
   39478           0 :           fixupCopy_references (result,help);
   39479             : #else
   39480             :           fixupCopy(result,help);
   39481             : #endif
   39482             :        // Allow this to be called recursively, so accumulate the state.
   39483             :        // Also, clear the state in the SgCopyHelp object.
   39484             :        // help.clearState();
   39485             :         }
   39486             : 
   39487           0 :      return result;
   39488             :    }
   39489             : 
   39490             : 
   39491             : /* #line 39492 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   39492             : 
   39493             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39494             : 
   39495           0 : SgNode* SgOmpReleaseClause::copy ( SgCopyHelp& help) const
   39496             :    {
   39497           0 :      SgOmpReleaseClause* result = NULL;
   39498             : 
   39499             :   // printf ("Copy SgOmpReleaseClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   39500             : 
   39501             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   39502             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   39503             :   // The default value of the depth is 0, so after this call the depth is 1!
   39504           0 :      help.incrementDepth();
   39505             : 
   39506             : #if 0
   39507             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   39508             :   // but it is not generally true that things can only be copied once!
   39509             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   39510             :   // AstAttribute* existingAttribute = const_cast<SgOmpReleaseClause*>(this)->attribute["copied"];
   39511             :      bool previouslyCopied = const_cast<SgOmpReleaseClause*>(this)->attribute.exists("copied");
   39512             :      if (previouslyCopied == true)
   39513             :         {
   39514             :           this->get_file_info()->display("Called from copy SgOmpReleaseClause: debug");
   39515             :         }
   39516             :      ROSE_ASSERT(previouslyCopied == false);
   39517             : 
   39518             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   39519             :      AstAttribute* newAttribute = new AstAttribute();
   39520             :      ROSE_ASSERT(newAttribute != NULL);
   39521             : 
   39522             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   39523             :      const_cast<SgOmpReleaseClause*>(this)->attribute.add("copied",newAttribute);
   39524             : #endif
   39525             : 
   39526             :   // Copy data members from base classes
   39527             :   // Copy constructor parameter data member: startOfConstruct_copy
   39528             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   39529             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   39530           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   39531           0 :      if ( p_startOfConstruct != NULL ) 
   39532             :         { 
   39533           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   39534             :         } 
   39535             :        else 
   39536             :         { 
   39537             :           startOfConstruct_copy = NULL; 
   39538             :         } 
   39539             :  
   39540             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39541             : 
   39542             :   // Build an empty copy of this object (will be filled in, but 
   39543             :   // the parent can't be set and must be set by the caller)
   39544           0 :      result = new SgOmpReleaseClause(  startOfConstruct_copy );
   39545           0 :      ROSE_ASSERT(result != NULL);
   39546             : 
   39547             :   // Copy data members of "this" class
   39548             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   39549             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   39550             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   39551           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   39552           0 :      if ( p_endOfConstruct != NULL ) 
   39553             :         { 
   39554           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   39555             :         } 
   39556             :        else 
   39557             :         { 
   39558             :           endOfConstruct_copy = NULL; 
   39559             :         } 
   39560             :   /* check for a valid pointer and delete if present */ 
   39561           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   39562             :   /* add assignment to result here */ 
   39563           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   39564             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   39565             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   39566             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   39567           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   39568           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   39569             :         { 
   39570           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   39571             :         } 
   39572             :        else 
   39573             :         { 
   39574             :           attachedPreprocessingInfoPtr_copy = NULL; 
   39575             :         } 
   39576             :   /* check for a valid pointer and delete if present */ 
   39577           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   39578             :   /* add assignment to result here */ 
   39579           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   39580             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   39581             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   39582             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   39583           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   39584           0 :      if ( p_attributeMechanism != NULL ) 
   39585             :         { 
   39586           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   39587             :         } 
   39588             :        else 
   39589             :         { 
   39590             :           attributeMechanism_copy = NULL; 
   39591             :         } 
   39592             :   /* check for a valid pointer and delete if present */ 
   39593           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   39594             :   /* add assignment to result here */ 
   39595           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   39596             : 
   39597             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39598             : 
   39599             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   39600             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   39601             :   // fixupCopy(result,help);
   39602             : 
   39603             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   39604             :   // the Sg_File_Info objects that are built for the new IR nodes.
   39605           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   39606           0 :      if (locatedNode != NULL)
   39607             :         {
   39608             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   39609           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   39610           0 :           ROSE_ASSERT(start != NULL);
   39611             : #if 0
   39612             :        // Debugging information
   39613             :           if (start->get_parent() == NULL)
   39614             :              {
   39615             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39616             :              }
   39617             : #endif
   39618           0 :           start->set_parent(locatedNode);
   39619           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   39620             : 
   39621           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   39622             : 
   39623             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   39624             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   39625             :        // ROSE_ASSERT(end != NULL);
   39626           0 :           if (end == NULL)
   39627             :              {
   39628           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   39629             :              }
   39630             :             else
   39631             :              {
   39632             : #if 0
   39633             :             // Debugging information
   39634             :                if (end->get_parent() == NULL)
   39635             :                   {
   39636             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39637             :                   }
   39638             : #endif
   39639           0 :                end->set_parent(locatedNode);
   39640           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   39641             :              }
   39642             : 
   39643           0 :           SgExpression* expression = isSgExpression(result);
   39644           0 :           if (isSgExpression(this) != NULL)
   39645             :              {
   39646           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   39647             : 
   39648             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   39649           0 :                if (operatorPosition != NULL)
   39650             :                   {
   39651             : #if 0
   39652             :                  // Debugging information
   39653             :                     if (operatorPosition->get_parent() == NULL)
   39654             :                        {
   39655             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39656             :                        }
   39657             : #endif
   39658           0 :                     operatorPosition->set_parent(expression);
   39659           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   39660             :                   }
   39661             :              }
   39662             :         }
   39663             : 
   39664             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   39665           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   39666           0 :      if (initializedName != NULL)
   39667             :         {
   39668             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   39669           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   39670           0 :           ROSE_ASSERT(start != NULL);
   39671             : #if 0
   39672             :        // Debugging information
   39673             :           if (start->get_parent() == NULL)
   39674             :              {
   39675             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39676             :              }
   39677             : #endif
   39678           0 :           start->set_parent(initializedName);
   39679           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   39680             : 
   39681             : #if 0
   39682             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   39683             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   39684             : 
   39685             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   39686             :        // ROSE_ASSERT(end != NULL);
   39687             :           if (end == NULL)
   39688             :              {
   39689             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   39690             :              }
   39691             :             else
   39692             :              {
   39693             :                if (end->get_parent() == NULL)
   39694             :                   {
   39695             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39696             :                   }
   39697             :                end->set_parent(initializedName);
   39698             :                ROSE_ASSERT(end->get_parent() != NULL);
   39699             :              }
   39700             : #endif
   39701             :         }
   39702             : 
   39703             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   39704           0 :      help.insertCopiedNodePair(this,result);
   39705             : 
   39706             :   // printf ("End of copy SgOmpReleaseClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   39707             : 
   39708             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   39709             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   39710           0 :      help.decrementDepth();
   39711             : 
   39712             :   // Test if this is the root of the copy!
   39713           0 :      if (help.get_depth() == 0)
   39714             :         {
   39715             :        // This is the original calling node.
   39716             : 
   39717             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   39718             :        // printf ("Calling SgOmpReleaseClause::fixupCopy() (from root of AST being copied) \n");
   39719             : #if ALT_FIXUP_COPY
   39720             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   39721           0 :           fixupCopy_scopes (result,help);
   39722           0 :           fixupCopy_symbols (result,help);
   39723           0 :           fixupCopy_references (result,help);
   39724             : #else
   39725             :           fixupCopy(result,help);
   39726             : #endif
   39727             :        // Allow this to be called recursively, so accumulate the state.
   39728             :        // Also, clear the state in the SgCopyHelp object.
   39729             :        // help.clearState();
   39730             :         }
   39731             : 
   39732           0 :      return result;
   39733             :    }
   39734             : 
   39735             : 
   39736             : /* #line 39737 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   39737             : 
   39738             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39739             : 
   39740           0 : SgNode* SgOmpAcquireClause::copy ( SgCopyHelp& help) const
   39741             :    {
   39742           0 :      SgOmpAcquireClause* result = NULL;
   39743             : 
   39744             :   // printf ("Copy SgOmpAcquireClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   39745             : 
   39746             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   39747             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   39748             :   // The default value of the depth is 0, so after this call the depth is 1!
   39749           0 :      help.incrementDepth();
   39750             : 
   39751             : #if 0
   39752             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   39753             :   // but it is not generally true that things can only be copied once!
   39754             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   39755             :   // AstAttribute* existingAttribute = const_cast<SgOmpAcquireClause*>(this)->attribute["copied"];
   39756             :      bool previouslyCopied = const_cast<SgOmpAcquireClause*>(this)->attribute.exists("copied");
   39757             :      if (previouslyCopied == true)
   39758             :         {
   39759             :           this->get_file_info()->display("Called from copy SgOmpAcquireClause: debug");
   39760             :         }
   39761             :      ROSE_ASSERT(previouslyCopied == false);
   39762             : 
   39763             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   39764             :      AstAttribute* newAttribute = new AstAttribute();
   39765             :      ROSE_ASSERT(newAttribute != NULL);
   39766             : 
   39767             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   39768             :      const_cast<SgOmpAcquireClause*>(this)->attribute.add("copied",newAttribute);
   39769             : #endif
   39770             : 
   39771             :   // Copy data members from base classes
   39772             :   // Copy constructor parameter data member: startOfConstruct_copy
   39773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   39774             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   39775           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   39776           0 :      if ( p_startOfConstruct != NULL ) 
   39777             :         { 
   39778           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   39779             :         } 
   39780             :        else 
   39781             :         { 
   39782             :           startOfConstruct_copy = NULL; 
   39783             :         } 
   39784             :  
   39785             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39786             : 
   39787             :   // Build an empty copy of this object (will be filled in, but 
   39788             :   // the parent can't be set and must be set by the caller)
   39789           0 :      result = new SgOmpAcquireClause(  startOfConstruct_copy );
   39790           0 :      ROSE_ASSERT(result != NULL);
   39791             : 
   39792             :   // Copy data members of "this" class
   39793             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   39794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   39795             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   39796           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   39797           0 :      if ( p_endOfConstruct != NULL ) 
   39798             :         { 
   39799           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   39800             :         } 
   39801             :        else 
   39802             :         { 
   39803             :           endOfConstruct_copy = NULL; 
   39804             :         } 
   39805             :   /* check for a valid pointer and delete if present */ 
   39806           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   39807             :   /* add assignment to result here */ 
   39808           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   39809             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   39810             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   39811             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   39812           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   39813           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   39814             :         { 
   39815           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   39816             :         } 
   39817             :        else 
   39818             :         { 
   39819             :           attachedPreprocessingInfoPtr_copy = NULL; 
   39820             :         } 
   39821             :   /* check for a valid pointer and delete if present */ 
   39822           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   39823             :   /* add assignment to result here */ 
   39824           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   39825             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   39826             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   39827             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   39828           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   39829           0 :      if ( p_attributeMechanism != NULL ) 
   39830             :         { 
   39831           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   39832             :         } 
   39833             :        else 
   39834             :         { 
   39835             :           attributeMechanism_copy = NULL; 
   39836             :         } 
   39837             :   /* check for a valid pointer and delete if present */ 
   39838           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   39839             :   /* add assignment to result here */ 
   39840           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   39841             : 
   39842             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39843             : 
   39844             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   39845             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   39846             :   // fixupCopy(result,help);
   39847             : 
   39848             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   39849             :   // the Sg_File_Info objects that are built for the new IR nodes.
   39850           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   39851           0 :      if (locatedNode != NULL)
   39852             :         {
   39853             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   39854           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   39855           0 :           ROSE_ASSERT(start != NULL);
   39856             : #if 0
   39857             :        // Debugging information
   39858             :           if (start->get_parent() == NULL)
   39859             :              {
   39860             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39861             :              }
   39862             : #endif
   39863           0 :           start->set_parent(locatedNode);
   39864           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   39865             : 
   39866           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   39867             : 
   39868             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   39869             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   39870             :        // ROSE_ASSERT(end != NULL);
   39871           0 :           if (end == NULL)
   39872             :              {
   39873           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   39874             :              }
   39875             :             else
   39876             :              {
   39877             : #if 0
   39878             :             // Debugging information
   39879             :                if (end->get_parent() == NULL)
   39880             :                   {
   39881             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39882             :                   }
   39883             : #endif
   39884           0 :                end->set_parent(locatedNode);
   39885           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   39886             :              }
   39887             : 
   39888           0 :           SgExpression* expression = isSgExpression(result);
   39889           0 :           if (isSgExpression(this) != NULL)
   39890             :              {
   39891           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   39892             : 
   39893             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   39894           0 :                if (operatorPosition != NULL)
   39895             :                   {
   39896             : #if 0
   39897             :                  // Debugging information
   39898             :                     if (operatorPosition->get_parent() == NULL)
   39899             :                        {
   39900             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39901             :                        }
   39902             : #endif
   39903           0 :                     operatorPosition->set_parent(expression);
   39904           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   39905             :                   }
   39906             :              }
   39907             :         }
   39908             : 
   39909             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   39910           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   39911           0 :      if (initializedName != NULL)
   39912             :         {
   39913             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   39914           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   39915           0 :           ROSE_ASSERT(start != NULL);
   39916             : #if 0
   39917             :        // Debugging information
   39918             :           if (start->get_parent() == NULL)
   39919             :              {
   39920             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39921             :              }
   39922             : #endif
   39923           0 :           start->set_parent(initializedName);
   39924           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   39925             : 
   39926             : #if 0
   39927             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   39928             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   39929             : 
   39930             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   39931             :        // ROSE_ASSERT(end != NULL);
   39932             :           if (end == NULL)
   39933             :              {
   39934             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   39935             :              }
   39936             :             else
   39937             :              {
   39938             :                if (end->get_parent() == NULL)
   39939             :                   {
   39940             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   39941             :                   }
   39942             :                end->set_parent(initializedName);
   39943             :                ROSE_ASSERT(end->get_parent() != NULL);
   39944             :              }
   39945             : #endif
   39946             :         }
   39947             : 
   39948             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   39949           0 :      help.insertCopiedNodePair(this,result);
   39950             : 
   39951             :   // printf ("End of copy SgOmpAcquireClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   39952             : 
   39953             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   39954             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   39955           0 :      help.decrementDepth();
   39956             : 
   39957             :   // Test if this is the root of the copy!
   39958           0 :      if (help.get_depth() == 0)
   39959             :         {
   39960             :        // This is the original calling node.
   39961             : 
   39962             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   39963             :        // printf ("Calling SgOmpAcquireClause::fixupCopy() (from root of AST being copied) \n");
   39964             : #if ALT_FIXUP_COPY
   39965             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   39966           0 :           fixupCopy_scopes (result,help);
   39967           0 :           fixupCopy_symbols (result,help);
   39968           0 :           fixupCopy_references (result,help);
   39969             : #else
   39970             :           fixupCopy(result,help);
   39971             : #endif
   39972             :        // Allow this to be called recursively, so accumulate the state.
   39973             :        // Also, clear the state in the SgCopyHelp object.
   39974             :        // help.clearState();
   39975             :         }
   39976             : 
   39977           0 :      return result;
   39978             :    }
   39979             : 
   39980             : 
   39981             : /* #line 39982 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   39982             : 
   39983             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   39984             : 
   39985           0 : SgNode* SgOmpRelaxedClause::copy ( SgCopyHelp& help) const
   39986             :    {
   39987           0 :      SgOmpRelaxedClause* result = NULL;
   39988             : 
   39989             :   // printf ("Copy SgOmpRelaxedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   39990             : 
   39991             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   39992             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   39993             :   // The default value of the depth is 0, so after this call the depth is 1!
   39994           0 :      help.incrementDepth();
   39995             : 
   39996             : #if 0
   39997             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   39998             :   // but it is not generally true that things can only be copied once!
   39999             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   40000             :   // AstAttribute* existingAttribute = const_cast<SgOmpRelaxedClause*>(this)->attribute["copied"];
   40001             :      bool previouslyCopied = const_cast<SgOmpRelaxedClause*>(this)->attribute.exists("copied");
   40002             :      if (previouslyCopied == true)
   40003             :         {
   40004             :           this->get_file_info()->display("Called from copy SgOmpRelaxedClause: debug");
   40005             :         }
   40006             :      ROSE_ASSERT(previouslyCopied == false);
   40007             : 
   40008             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   40009             :      AstAttribute* newAttribute = new AstAttribute();
   40010             :      ROSE_ASSERT(newAttribute != NULL);
   40011             : 
   40012             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   40013             :      const_cast<SgOmpRelaxedClause*>(this)->attribute.add("copied",newAttribute);
   40014             : #endif
   40015             : 
   40016             :   // Copy data members from base classes
   40017             :   // Copy constructor parameter data member: startOfConstruct_copy
   40018             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   40019             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   40020           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   40021           0 :      if ( p_startOfConstruct != NULL ) 
   40022             :         { 
   40023           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   40024             :         } 
   40025             :        else 
   40026             :         { 
   40027             :           startOfConstruct_copy = NULL; 
   40028             :         } 
   40029             :  
   40030             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40031             : 
   40032             :   // Build an empty copy of this object (will be filled in, but 
   40033             :   // the parent can't be set and must be set by the caller)
   40034           0 :      result = new SgOmpRelaxedClause(  startOfConstruct_copy );
   40035           0 :      ROSE_ASSERT(result != NULL);
   40036             : 
   40037             :   // Copy data members of "this" class
   40038             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   40039             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   40040             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   40041           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   40042           0 :      if ( p_endOfConstruct != NULL ) 
   40043             :         { 
   40044           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   40045             :         } 
   40046             :        else 
   40047             :         { 
   40048             :           endOfConstruct_copy = NULL; 
   40049             :         } 
   40050             :   /* check for a valid pointer and delete if present */ 
   40051           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   40052             :   /* add assignment to result here */ 
   40053           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   40054             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   40055             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   40056             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   40057           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   40058           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   40059             :         { 
   40060           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   40061             :         } 
   40062             :        else 
   40063             :         { 
   40064             :           attachedPreprocessingInfoPtr_copy = NULL; 
   40065             :         } 
   40066             :   /* check for a valid pointer and delete if present */ 
   40067           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   40068             :   /* add assignment to result here */ 
   40069           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   40070             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   40071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   40072             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   40073           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   40074           0 :      if ( p_attributeMechanism != NULL ) 
   40075             :         { 
   40076           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   40077             :         } 
   40078             :        else 
   40079             :         { 
   40080             :           attributeMechanism_copy = NULL; 
   40081             :         } 
   40082             :   /* check for a valid pointer and delete if present */ 
   40083           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   40084             :   /* add assignment to result here */ 
   40085           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   40086             : 
   40087             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40088             : 
   40089             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   40090             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   40091             :   // fixupCopy(result,help);
   40092             : 
   40093             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   40094             :   // the Sg_File_Info objects that are built for the new IR nodes.
   40095           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   40096           0 :      if (locatedNode != NULL)
   40097             :         {
   40098             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   40099           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   40100           0 :           ROSE_ASSERT(start != NULL);
   40101             : #if 0
   40102             :        // Debugging information
   40103             :           if (start->get_parent() == NULL)
   40104             :              {
   40105             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40106             :              }
   40107             : #endif
   40108           0 :           start->set_parent(locatedNode);
   40109           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   40110             : 
   40111           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   40112             : 
   40113             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   40114             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   40115             :        // ROSE_ASSERT(end != NULL);
   40116           0 :           if (end == NULL)
   40117             :              {
   40118           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   40119             :              }
   40120             :             else
   40121             :              {
   40122             : #if 0
   40123             :             // Debugging information
   40124             :                if (end->get_parent() == NULL)
   40125             :                   {
   40126             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40127             :                   }
   40128             : #endif
   40129           0 :                end->set_parent(locatedNode);
   40130           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   40131             :              }
   40132             : 
   40133           0 :           SgExpression* expression = isSgExpression(result);
   40134           0 :           if (isSgExpression(this) != NULL)
   40135             :              {
   40136           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   40137             : 
   40138             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   40139           0 :                if (operatorPosition != NULL)
   40140             :                   {
   40141             : #if 0
   40142             :                  // Debugging information
   40143             :                     if (operatorPosition->get_parent() == NULL)
   40144             :                        {
   40145             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40146             :                        }
   40147             : #endif
   40148           0 :                     operatorPosition->set_parent(expression);
   40149           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   40150             :                   }
   40151             :              }
   40152             :         }
   40153             : 
   40154             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   40155           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   40156           0 :      if (initializedName != NULL)
   40157             :         {
   40158             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   40159           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   40160           0 :           ROSE_ASSERT(start != NULL);
   40161             : #if 0
   40162             :        // Debugging information
   40163             :           if (start->get_parent() == NULL)
   40164             :              {
   40165             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40166             :              }
   40167             : #endif
   40168           0 :           start->set_parent(initializedName);
   40169           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   40170             : 
   40171             : #if 0
   40172             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   40173             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   40174             : 
   40175             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   40176             :        // ROSE_ASSERT(end != NULL);
   40177             :           if (end == NULL)
   40178             :              {
   40179             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   40180             :              }
   40181             :             else
   40182             :              {
   40183             :                if (end->get_parent() == NULL)
   40184             :                   {
   40185             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40186             :                   }
   40187             :                end->set_parent(initializedName);
   40188             :                ROSE_ASSERT(end->get_parent() != NULL);
   40189             :              }
   40190             : #endif
   40191             :         }
   40192             : 
   40193             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   40194           0 :      help.insertCopiedNodePair(this,result);
   40195             : 
   40196             :   // printf ("End of copy SgOmpRelaxedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   40197             : 
   40198             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   40199             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   40200           0 :      help.decrementDepth();
   40201             : 
   40202             :   // Test if this is the root of the copy!
   40203           0 :      if (help.get_depth() == 0)
   40204             :         {
   40205             :        // This is the original calling node.
   40206             : 
   40207             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   40208             :        // printf ("Calling SgOmpRelaxedClause::fixupCopy() (from root of AST being copied) \n");
   40209             : #if ALT_FIXUP_COPY
   40210             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   40211           0 :           fixupCopy_scopes (result,help);
   40212           0 :           fixupCopy_symbols (result,help);
   40213           0 :           fixupCopy_references (result,help);
   40214             : #else
   40215             :           fixupCopy(result,help);
   40216             : #endif
   40217             :        // Allow this to be called recursively, so accumulate the state.
   40218             :        // Also, clear the state in the SgCopyHelp object.
   40219             :        // help.clearState();
   40220             :         }
   40221             : 
   40222           0 :      return result;
   40223             :    }
   40224             : 
   40225             : 
   40226             : /* #line 40227 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   40227             : 
   40228             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40229             : 
   40230           0 : SgNode* SgOmpReverseOffloadClause::copy ( SgCopyHelp& help) const
   40231             :    {
   40232           0 :      SgOmpReverseOffloadClause* result = NULL;
   40233             : 
   40234             :   // printf ("Copy SgOmpReverseOffloadClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   40235             : 
   40236             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   40237             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   40238             :   // The default value of the depth is 0, so after this call the depth is 1!
   40239           0 :      help.incrementDepth();
   40240             : 
   40241             : #if 0
   40242             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   40243             :   // but it is not generally true that things can only be copied once!
   40244             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   40245             :   // AstAttribute* existingAttribute = const_cast<SgOmpReverseOffloadClause*>(this)->attribute["copied"];
   40246             :      bool previouslyCopied = const_cast<SgOmpReverseOffloadClause*>(this)->attribute.exists("copied");
   40247             :      if (previouslyCopied == true)
   40248             :         {
   40249             :           this->get_file_info()->display("Called from copy SgOmpReverseOffloadClause: debug");
   40250             :         }
   40251             :      ROSE_ASSERT(previouslyCopied == false);
   40252             : 
   40253             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   40254             :      AstAttribute* newAttribute = new AstAttribute();
   40255             :      ROSE_ASSERT(newAttribute != NULL);
   40256             : 
   40257             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   40258             :      const_cast<SgOmpReverseOffloadClause*>(this)->attribute.add("copied",newAttribute);
   40259             : #endif
   40260             : 
   40261             :   // Copy data members from base classes
   40262             :   // Copy constructor parameter data member: startOfConstruct_copy
   40263             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   40264             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   40265           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   40266           0 :      if ( p_startOfConstruct != NULL ) 
   40267             :         { 
   40268           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   40269             :         } 
   40270             :        else 
   40271             :         { 
   40272             :           startOfConstruct_copy = NULL; 
   40273             :         } 
   40274             :  
   40275             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40276             : 
   40277             :   // Build an empty copy of this object (will be filled in, but 
   40278             :   // the parent can't be set and must be set by the caller)
   40279           0 :      result = new SgOmpReverseOffloadClause(  startOfConstruct_copy );
   40280           0 :      ROSE_ASSERT(result != NULL);
   40281             : 
   40282             :   // Copy data members of "this" class
   40283             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   40284             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   40285             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   40286           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   40287           0 :      if ( p_endOfConstruct != NULL ) 
   40288             :         { 
   40289           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   40290             :         } 
   40291             :        else 
   40292             :         { 
   40293             :           endOfConstruct_copy = NULL; 
   40294             :         } 
   40295             :   /* check for a valid pointer and delete if present */ 
   40296           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   40297             :   /* add assignment to result here */ 
   40298           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   40299             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   40300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   40301             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   40302           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   40303           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   40304             :         { 
   40305           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   40306             :         } 
   40307             :        else 
   40308             :         { 
   40309             :           attachedPreprocessingInfoPtr_copy = NULL; 
   40310             :         } 
   40311             :   /* check for a valid pointer and delete if present */ 
   40312           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   40313             :   /* add assignment to result here */ 
   40314           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   40315             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   40316             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   40317             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   40318           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   40319           0 :      if ( p_attributeMechanism != NULL ) 
   40320             :         { 
   40321           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   40322             :         } 
   40323             :        else 
   40324             :         { 
   40325             :           attributeMechanism_copy = NULL; 
   40326             :         } 
   40327             :   /* check for a valid pointer and delete if present */ 
   40328           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   40329             :   /* add assignment to result here */ 
   40330           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   40331             : 
   40332             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40333             : 
   40334             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   40335             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   40336             :   // fixupCopy(result,help);
   40337             : 
   40338             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   40339             :   // the Sg_File_Info objects that are built for the new IR nodes.
   40340           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   40341           0 :      if (locatedNode != NULL)
   40342             :         {
   40343             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   40344           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   40345           0 :           ROSE_ASSERT(start != NULL);
   40346             : #if 0
   40347             :        // Debugging information
   40348             :           if (start->get_parent() == NULL)
   40349             :              {
   40350             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40351             :              }
   40352             : #endif
   40353           0 :           start->set_parent(locatedNode);
   40354           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   40355             : 
   40356           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   40357             : 
   40358             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   40359             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   40360             :        // ROSE_ASSERT(end != NULL);
   40361           0 :           if (end == NULL)
   40362             :              {
   40363           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   40364             :              }
   40365             :             else
   40366             :              {
   40367             : #if 0
   40368             :             // Debugging information
   40369             :                if (end->get_parent() == NULL)
   40370             :                   {
   40371             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40372             :                   }
   40373             : #endif
   40374           0 :                end->set_parent(locatedNode);
   40375           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   40376             :              }
   40377             : 
   40378           0 :           SgExpression* expression = isSgExpression(result);
   40379           0 :           if (isSgExpression(this) != NULL)
   40380             :              {
   40381           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   40382             : 
   40383             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   40384           0 :                if (operatorPosition != NULL)
   40385             :                   {
   40386             : #if 0
   40387             :                  // Debugging information
   40388             :                     if (operatorPosition->get_parent() == NULL)
   40389             :                        {
   40390             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40391             :                        }
   40392             : #endif
   40393           0 :                     operatorPosition->set_parent(expression);
   40394           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   40395             :                   }
   40396             :              }
   40397             :         }
   40398             : 
   40399             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   40400           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   40401           0 :      if (initializedName != NULL)
   40402             :         {
   40403             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   40404           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   40405           0 :           ROSE_ASSERT(start != NULL);
   40406             : #if 0
   40407             :        // Debugging information
   40408             :           if (start->get_parent() == NULL)
   40409             :              {
   40410             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40411             :              }
   40412             : #endif
   40413           0 :           start->set_parent(initializedName);
   40414           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   40415             : 
   40416             : #if 0
   40417             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   40418             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   40419             : 
   40420             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   40421             :        // ROSE_ASSERT(end != NULL);
   40422             :           if (end == NULL)
   40423             :              {
   40424             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   40425             :              }
   40426             :             else
   40427             :              {
   40428             :                if (end->get_parent() == NULL)
   40429             :                   {
   40430             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40431             :                   }
   40432             :                end->set_parent(initializedName);
   40433             :                ROSE_ASSERT(end->get_parent() != NULL);
   40434             :              }
   40435             : #endif
   40436             :         }
   40437             : 
   40438             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   40439           0 :      help.insertCopiedNodePair(this,result);
   40440             : 
   40441             :   // printf ("End of copy SgOmpReverseOffloadClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   40442             : 
   40443             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   40444             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   40445           0 :      help.decrementDepth();
   40446             : 
   40447             :   // Test if this is the root of the copy!
   40448           0 :      if (help.get_depth() == 0)
   40449             :         {
   40450             :        // This is the original calling node.
   40451             : 
   40452             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   40453             :        // printf ("Calling SgOmpReverseOffloadClause::fixupCopy() (from root of AST being copied) \n");
   40454             : #if ALT_FIXUP_COPY
   40455             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   40456           0 :           fixupCopy_scopes (result,help);
   40457           0 :           fixupCopy_symbols (result,help);
   40458           0 :           fixupCopy_references (result,help);
   40459             : #else
   40460             :           fixupCopy(result,help);
   40461             : #endif
   40462             :        // Allow this to be called recursively, so accumulate the state.
   40463             :        // Also, clear the state in the SgCopyHelp object.
   40464             :        // help.clearState();
   40465             :         }
   40466             : 
   40467           0 :      return result;
   40468             :    }
   40469             : 
   40470             : 
   40471             : /* #line 40472 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   40472             : 
   40473             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40474             : 
   40475           0 : SgNode* SgOmpUnifiedAddressClause::copy ( SgCopyHelp& help) const
   40476             :    {
   40477           0 :      SgOmpUnifiedAddressClause* result = NULL;
   40478             : 
   40479             :   // printf ("Copy SgOmpUnifiedAddressClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   40480             : 
   40481             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   40482             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   40483             :   // The default value of the depth is 0, so after this call the depth is 1!
   40484           0 :      help.incrementDepth();
   40485             : 
   40486             : #if 0
   40487             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   40488             :   // but it is not generally true that things can only be copied once!
   40489             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   40490             :   // AstAttribute* existingAttribute = const_cast<SgOmpUnifiedAddressClause*>(this)->attribute["copied"];
   40491             :      bool previouslyCopied = const_cast<SgOmpUnifiedAddressClause*>(this)->attribute.exists("copied");
   40492             :      if (previouslyCopied == true)
   40493             :         {
   40494             :           this->get_file_info()->display("Called from copy SgOmpUnifiedAddressClause: debug");
   40495             :         }
   40496             :      ROSE_ASSERT(previouslyCopied == false);
   40497             : 
   40498             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   40499             :      AstAttribute* newAttribute = new AstAttribute();
   40500             :      ROSE_ASSERT(newAttribute != NULL);
   40501             : 
   40502             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   40503             :      const_cast<SgOmpUnifiedAddressClause*>(this)->attribute.add("copied",newAttribute);
   40504             : #endif
   40505             : 
   40506             :   // Copy data members from base classes
   40507             :   // Copy constructor parameter data member: startOfConstruct_copy
   40508             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   40509             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   40510           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   40511           0 :      if ( p_startOfConstruct != NULL ) 
   40512             :         { 
   40513           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   40514             :         } 
   40515             :        else 
   40516             :         { 
   40517             :           startOfConstruct_copy = NULL; 
   40518             :         } 
   40519             :  
   40520             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40521             : 
   40522             :   // Build an empty copy of this object (will be filled in, but 
   40523             :   // the parent can't be set and must be set by the caller)
   40524           0 :      result = new SgOmpUnifiedAddressClause(  startOfConstruct_copy );
   40525           0 :      ROSE_ASSERT(result != NULL);
   40526             : 
   40527             :   // Copy data members of "this" class
   40528             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   40529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   40530             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   40531           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   40532           0 :      if ( p_endOfConstruct != NULL ) 
   40533             :         { 
   40534           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   40535             :         } 
   40536             :        else 
   40537             :         { 
   40538             :           endOfConstruct_copy = NULL; 
   40539             :         } 
   40540             :   /* check for a valid pointer and delete if present */ 
   40541           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   40542             :   /* add assignment to result here */ 
   40543           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   40544             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   40545             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   40546             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   40547           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   40548           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   40549             :         { 
   40550           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   40551             :         } 
   40552             :        else 
   40553             :         { 
   40554             :           attachedPreprocessingInfoPtr_copy = NULL; 
   40555             :         } 
   40556             :   /* check for a valid pointer and delete if present */ 
   40557           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   40558             :   /* add assignment to result here */ 
   40559           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   40560             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   40561             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   40562             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   40563           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   40564           0 :      if ( p_attributeMechanism != NULL ) 
   40565             :         { 
   40566           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   40567             :         } 
   40568             :        else 
   40569             :         { 
   40570             :           attributeMechanism_copy = NULL; 
   40571             :         } 
   40572             :   /* check for a valid pointer and delete if present */ 
   40573           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   40574             :   /* add assignment to result here */ 
   40575           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   40576             : 
   40577             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40578             : 
   40579             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   40580             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   40581             :   // fixupCopy(result,help);
   40582             : 
   40583             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   40584             :   // the Sg_File_Info objects that are built for the new IR nodes.
   40585           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   40586           0 :      if (locatedNode != NULL)
   40587             :         {
   40588             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   40589           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   40590           0 :           ROSE_ASSERT(start != NULL);
   40591             : #if 0
   40592             :        // Debugging information
   40593             :           if (start->get_parent() == NULL)
   40594             :              {
   40595             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40596             :              }
   40597             : #endif
   40598           0 :           start->set_parent(locatedNode);
   40599           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   40600             : 
   40601           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   40602             : 
   40603             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   40604             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   40605             :        // ROSE_ASSERT(end != NULL);
   40606           0 :           if (end == NULL)
   40607             :              {
   40608           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   40609             :              }
   40610             :             else
   40611             :              {
   40612             : #if 0
   40613             :             // Debugging information
   40614             :                if (end->get_parent() == NULL)
   40615             :                   {
   40616             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40617             :                   }
   40618             : #endif
   40619           0 :                end->set_parent(locatedNode);
   40620           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   40621             :              }
   40622             : 
   40623           0 :           SgExpression* expression = isSgExpression(result);
   40624           0 :           if (isSgExpression(this) != NULL)
   40625             :              {
   40626           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   40627             : 
   40628             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   40629           0 :                if (operatorPosition != NULL)
   40630             :                   {
   40631             : #if 0
   40632             :                  // Debugging information
   40633             :                     if (operatorPosition->get_parent() == NULL)
   40634             :                        {
   40635             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40636             :                        }
   40637             : #endif
   40638           0 :                     operatorPosition->set_parent(expression);
   40639           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   40640             :                   }
   40641             :              }
   40642             :         }
   40643             : 
   40644             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   40645           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   40646           0 :      if (initializedName != NULL)
   40647             :         {
   40648             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   40649           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   40650           0 :           ROSE_ASSERT(start != NULL);
   40651             : #if 0
   40652             :        // Debugging information
   40653             :           if (start->get_parent() == NULL)
   40654             :              {
   40655             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40656             :              }
   40657             : #endif
   40658           0 :           start->set_parent(initializedName);
   40659           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   40660             : 
   40661             : #if 0
   40662             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   40663             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   40664             : 
   40665             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   40666             :        // ROSE_ASSERT(end != NULL);
   40667             :           if (end == NULL)
   40668             :              {
   40669             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   40670             :              }
   40671             :             else
   40672             :              {
   40673             :                if (end->get_parent() == NULL)
   40674             :                   {
   40675             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40676             :                   }
   40677             :                end->set_parent(initializedName);
   40678             :                ROSE_ASSERT(end->get_parent() != NULL);
   40679             :              }
   40680             : #endif
   40681             :         }
   40682             : 
   40683             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   40684           0 :      help.insertCopiedNodePair(this,result);
   40685             : 
   40686             :   // printf ("End of copy SgOmpUnifiedAddressClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   40687             : 
   40688             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   40689             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   40690           0 :      help.decrementDepth();
   40691             : 
   40692             :   // Test if this is the root of the copy!
   40693           0 :      if (help.get_depth() == 0)
   40694             :         {
   40695             :        // This is the original calling node.
   40696             : 
   40697             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   40698             :        // printf ("Calling SgOmpUnifiedAddressClause::fixupCopy() (from root of AST being copied) \n");
   40699             : #if ALT_FIXUP_COPY
   40700             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   40701           0 :           fixupCopy_scopes (result,help);
   40702           0 :           fixupCopy_symbols (result,help);
   40703           0 :           fixupCopy_references (result,help);
   40704             : #else
   40705             :           fixupCopy(result,help);
   40706             : #endif
   40707             :        // Allow this to be called recursively, so accumulate the state.
   40708             :        // Also, clear the state in the SgCopyHelp object.
   40709             :        // help.clearState();
   40710             :         }
   40711             : 
   40712           0 :      return result;
   40713             :    }
   40714             : 
   40715             : 
   40716             : /* #line 40717 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   40717             : 
   40718             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40719             : 
   40720           0 : SgNode* SgOmpUnifiedSharedMemoryClause::copy ( SgCopyHelp& help) const
   40721             :    {
   40722           0 :      SgOmpUnifiedSharedMemoryClause* result = NULL;
   40723             : 
   40724             :   // printf ("Copy SgOmpUnifiedSharedMemoryClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   40725             : 
   40726             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   40727             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   40728             :   // The default value of the depth is 0, so after this call the depth is 1!
   40729           0 :      help.incrementDepth();
   40730             : 
   40731             : #if 0
   40732             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   40733             :   // but it is not generally true that things can only be copied once!
   40734             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   40735             :   // AstAttribute* existingAttribute = const_cast<SgOmpUnifiedSharedMemoryClause*>(this)->attribute["copied"];
   40736             :      bool previouslyCopied = const_cast<SgOmpUnifiedSharedMemoryClause*>(this)->attribute.exists("copied");
   40737             :      if (previouslyCopied == true)
   40738             :         {
   40739             :           this->get_file_info()->display("Called from copy SgOmpUnifiedSharedMemoryClause: debug");
   40740             :         }
   40741             :      ROSE_ASSERT(previouslyCopied == false);
   40742             : 
   40743             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   40744             :      AstAttribute* newAttribute = new AstAttribute();
   40745             :      ROSE_ASSERT(newAttribute != NULL);
   40746             : 
   40747             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   40748             :      const_cast<SgOmpUnifiedSharedMemoryClause*>(this)->attribute.add("copied",newAttribute);
   40749             : #endif
   40750             : 
   40751             :   // Copy data members from base classes
   40752             :   // Copy constructor parameter data member: startOfConstruct_copy
   40753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   40754             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   40755           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   40756           0 :      if ( p_startOfConstruct != NULL ) 
   40757             :         { 
   40758           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   40759             :         } 
   40760             :        else 
   40761             :         { 
   40762             :           startOfConstruct_copy = NULL; 
   40763             :         } 
   40764             :  
   40765             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40766             : 
   40767             :   // Build an empty copy of this object (will be filled in, but 
   40768             :   // the parent can't be set and must be set by the caller)
   40769           0 :      result = new SgOmpUnifiedSharedMemoryClause(  startOfConstruct_copy );
   40770           0 :      ROSE_ASSERT(result != NULL);
   40771             : 
   40772             :   // Copy data members of "this" class
   40773             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   40774             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   40775             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   40776           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   40777           0 :      if ( p_endOfConstruct != NULL ) 
   40778             :         { 
   40779           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   40780             :         } 
   40781             :        else 
   40782             :         { 
   40783             :           endOfConstruct_copy = NULL; 
   40784             :         } 
   40785             :   /* check for a valid pointer and delete if present */ 
   40786           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   40787             :   /* add assignment to result here */ 
   40788           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   40789             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   40790             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   40791             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   40792           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   40793           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   40794             :         { 
   40795           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   40796             :         } 
   40797             :        else 
   40798             :         { 
   40799             :           attachedPreprocessingInfoPtr_copy = NULL; 
   40800             :         } 
   40801             :   /* check for a valid pointer and delete if present */ 
   40802           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   40803             :   /* add assignment to result here */ 
   40804           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   40805             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   40806             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   40807             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   40808           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   40809           0 :      if ( p_attributeMechanism != NULL ) 
   40810             :         { 
   40811           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   40812             :         } 
   40813             :        else 
   40814             :         { 
   40815             :           attributeMechanism_copy = NULL; 
   40816             :         } 
   40817             :   /* check for a valid pointer and delete if present */ 
   40818           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   40819             :   /* add assignment to result here */ 
   40820           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   40821             : 
   40822             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40823             : 
   40824             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   40825             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   40826             :   // fixupCopy(result,help);
   40827             : 
   40828             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   40829             :   // the Sg_File_Info objects that are built for the new IR nodes.
   40830           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   40831           0 :      if (locatedNode != NULL)
   40832             :         {
   40833             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   40834           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   40835           0 :           ROSE_ASSERT(start != NULL);
   40836             : #if 0
   40837             :        // Debugging information
   40838             :           if (start->get_parent() == NULL)
   40839             :              {
   40840             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40841             :              }
   40842             : #endif
   40843           0 :           start->set_parent(locatedNode);
   40844           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   40845             : 
   40846           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   40847             : 
   40848             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   40849             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   40850             :        // ROSE_ASSERT(end != NULL);
   40851           0 :           if (end == NULL)
   40852             :              {
   40853           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   40854             :              }
   40855             :             else
   40856             :              {
   40857             : #if 0
   40858             :             // Debugging information
   40859             :                if (end->get_parent() == NULL)
   40860             :                   {
   40861             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40862             :                   }
   40863             : #endif
   40864           0 :                end->set_parent(locatedNode);
   40865           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   40866             :              }
   40867             : 
   40868           0 :           SgExpression* expression = isSgExpression(result);
   40869           0 :           if (isSgExpression(this) != NULL)
   40870             :              {
   40871           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   40872             : 
   40873             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   40874           0 :                if (operatorPosition != NULL)
   40875             :                   {
   40876             : #if 0
   40877             :                  // Debugging information
   40878             :                     if (operatorPosition->get_parent() == NULL)
   40879             :                        {
   40880             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40881             :                        }
   40882             : #endif
   40883           0 :                     operatorPosition->set_parent(expression);
   40884           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   40885             :                   }
   40886             :              }
   40887             :         }
   40888             : 
   40889             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   40890           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   40891           0 :      if (initializedName != NULL)
   40892             :         {
   40893             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   40894           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   40895           0 :           ROSE_ASSERT(start != NULL);
   40896             : #if 0
   40897             :        // Debugging information
   40898             :           if (start->get_parent() == NULL)
   40899             :              {
   40900             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40901             :              }
   40902             : #endif
   40903           0 :           start->set_parent(initializedName);
   40904           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   40905             : 
   40906             : #if 0
   40907             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   40908             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   40909             : 
   40910             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   40911             :        // ROSE_ASSERT(end != NULL);
   40912             :           if (end == NULL)
   40913             :              {
   40914             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   40915             :              }
   40916             :             else
   40917             :              {
   40918             :                if (end->get_parent() == NULL)
   40919             :                   {
   40920             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   40921             :                   }
   40922             :                end->set_parent(initializedName);
   40923             :                ROSE_ASSERT(end->get_parent() != NULL);
   40924             :              }
   40925             : #endif
   40926             :         }
   40927             : 
   40928             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   40929           0 :      help.insertCopiedNodePair(this,result);
   40930             : 
   40931             :   // printf ("End of copy SgOmpUnifiedSharedMemoryClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   40932             : 
   40933             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   40934             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   40935           0 :      help.decrementDepth();
   40936             : 
   40937             :   // Test if this is the root of the copy!
   40938           0 :      if (help.get_depth() == 0)
   40939             :         {
   40940             :        // This is the original calling node.
   40941             : 
   40942             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   40943             :        // printf ("Calling SgOmpUnifiedSharedMemoryClause::fixupCopy() (from root of AST being copied) \n");
   40944             : #if ALT_FIXUP_COPY
   40945             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   40946           0 :           fixupCopy_scopes (result,help);
   40947           0 :           fixupCopy_symbols (result,help);
   40948           0 :           fixupCopy_references (result,help);
   40949             : #else
   40950             :           fixupCopy(result,help);
   40951             : #endif
   40952             :        // Allow this to be called recursively, so accumulate the state.
   40953             :        // Also, clear the state in the SgCopyHelp object.
   40954             :        // help.clearState();
   40955             :         }
   40956             : 
   40957           0 :      return result;
   40958             :    }
   40959             : 
   40960             : 
   40961             : /* #line 40962 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   40962             : 
   40963             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   40964             : 
   40965           0 : SgNode* SgOmpDynamicAllocatorsClause::copy ( SgCopyHelp& help) const
   40966             :    {
   40967           0 :      SgOmpDynamicAllocatorsClause* result = NULL;
   40968             : 
   40969             :   // printf ("Copy SgOmpDynamicAllocatorsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   40970             : 
   40971             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   40972             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   40973             :   // The default value of the depth is 0, so after this call the depth is 1!
   40974           0 :      help.incrementDepth();
   40975             : 
   40976             : #if 0
   40977             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   40978             :   // but it is not generally true that things can only be copied once!
   40979             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   40980             :   // AstAttribute* existingAttribute = const_cast<SgOmpDynamicAllocatorsClause*>(this)->attribute["copied"];
   40981             :      bool previouslyCopied = const_cast<SgOmpDynamicAllocatorsClause*>(this)->attribute.exists("copied");
   40982             :      if (previouslyCopied == true)
   40983             :         {
   40984             :           this->get_file_info()->display("Called from copy SgOmpDynamicAllocatorsClause: debug");
   40985             :         }
   40986             :      ROSE_ASSERT(previouslyCopied == false);
   40987             : 
   40988             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   40989             :      AstAttribute* newAttribute = new AstAttribute();
   40990             :      ROSE_ASSERT(newAttribute != NULL);
   40991             : 
   40992             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   40993             :      const_cast<SgOmpDynamicAllocatorsClause*>(this)->attribute.add("copied",newAttribute);
   40994             : #endif
   40995             : 
   40996             :   // Copy data members from base classes
   40997             :   // Copy constructor parameter data member: startOfConstruct_copy
   40998             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   40999             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   41000           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   41001           0 :      if ( p_startOfConstruct != NULL ) 
   41002             :         { 
   41003           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   41004             :         } 
   41005             :        else 
   41006             :         { 
   41007             :           startOfConstruct_copy = NULL; 
   41008             :         } 
   41009             :  
   41010             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41011             : 
   41012             :   // Build an empty copy of this object (will be filled in, but 
   41013             :   // the parent can't be set and must be set by the caller)
   41014           0 :      result = new SgOmpDynamicAllocatorsClause(  startOfConstruct_copy );
   41015           0 :      ROSE_ASSERT(result != NULL);
   41016             : 
   41017             :   // Copy data members of "this" class
   41018             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   41019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   41020             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   41021           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   41022           0 :      if ( p_endOfConstruct != NULL ) 
   41023             :         { 
   41024           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   41025             :         } 
   41026             :        else 
   41027             :         { 
   41028             :           endOfConstruct_copy = NULL; 
   41029             :         } 
   41030             :   /* check for a valid pointer and delete if present */ 
   41031           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   41032             :   /* add assignment to result here */ 
   41033           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   41034             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   41035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   41036             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   41037           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   41038           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   41039             :         { 
   41040           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   41041             :         } 
   41042             :        else 
   41043             :         { 
   41044             :           attachedPreprocessingInfoPtr_copy = NULL; 
   41045             :         } 
   41046             :   /* check for a valid pointer and delete if present */ 
   41047           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   41048             :   /* add assignment to result here */ 
   41049           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   41050             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   41051             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   41052             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   41053           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   41054           0 :      if ( p_attributeMechanism != NULL ) 
   41055             :         { 
   41056           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   41057             :         } 
   41058             :        else 
   41059             :         { 
   41060             :           attributeMechanism_copy = NULL; 
   41061             :         } 
   41062             :   /* check for a valid pointer and delete if present */ 
   41063           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   41064             :   /* add assignment to result here */ 
   41065           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   41066             : 
   41067             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41068             : 
   41069             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   41070             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   41071             :   // fixupCopy(result,help);
   41072             : 
   41073             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   41074             :   // the Sg_File_Info objects that are built for the new IR nodes.
   41075           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   41076           0 :      if (locatedNode != NULL)
   41077             :         {
   41078             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   41079           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   41080           0 :           ROSE_ASSERT(start != NULL);
   41081             : #if 0
   41082             :        // Debugging information
   41083             :           if (start->get_parent() == NULL)
   41084             :              {
   41085             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41086             :              }
   41087             : #endif
   41088           0 :           start->set_parent(locatedNode);
   41089           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   41090             : 
   41091           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   41092             : 
   41093             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   41094             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   41095             :        // ROSE_ASSERT(end != NULL);
   41096           0 :           if (end == NULL)
   41097             :              {
   41098           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   41099             :              }
   41100             :             else
   41101             :              {
   41102             : #if 0
   41103             :             // Debugging information
   41104             :                if (end->get_parent() == NULL)
   41105             :                   {
   41106             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41107             :                   }
   41108             : #endif
   41109           0 :                end->set_parent(locatedNode);
   41110           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   41111             :              }
   41112             : 
   41113           0 :           SgExpression* expression = isSgExpression(result);
   41114           0 :           if (isSgExpression(this) != NULL)
   41115             :              {
   41116           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   41117             : 
   41118             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   41119           0 :                if (operatorPosition != NULL)
   41120             :                   {
   41121             : #if 0
   41122             :                  // Debugging information
   41123             :                     if (operatorPosition->get_parent() == NULL)
   41124             :                        {
   41125             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41126             :                        }
   41127             : #endif
   41128           0 :                     operatorPosition->set_parent(expression);
   41129           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   41130             :                   }
   41131             :              }
   41132             :         }
   41133             : 
   41134             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   41135           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   41136           0 :      if (initializedName != NULL)
   41137             :         {
   41138             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   41139           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   41140           0 :           ROSE_ASSERT(start != NULL);
   41141             : #if 0
   41142             :        // Debugging information
   41143             :           if (start->get_parent() == NULL)
   41144             :              {
   41145             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41146             :              }
   41147             : #endif
   41148           0 :           start->set_parent(initializedName);
   41149           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   41150             : 
   41151             : #if 0
   41152             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   41153             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   41154             : 
   41155             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   41156             :        // ROSE_ASSERT(end != NULL);
   41157             :           if (end == NULL)
   41158             :              {
   41159             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   41160             :              }
   41161             :             else
   41162             :              {
   41163             :                if (end->get_parent() == NULL)
   41164             :                   {
   41165             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41166             :                   }
   41167             :                end->set_parent(initializedName);
   41168             :                ROSE_ASSERT(end->get_parent() != NULL);
   41169             :              }
   41170             : #endif
   41171             :         }
   41172             : 
   41173             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   41174           0 :      help.insertCopiedNodePair(this,result);
   41175             : 
   41176             :   // printf ("End of copy SgOmpDynamicAllocatorsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   41177             : 
   41178             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   41179             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   41180           0 :      help.decrementDepth();
   41181             : 
   41182             :   // Test if this is the root of the copy!
   41183           0 :      if (help.get_depth() == 0)
   41184             :         {
   41185             :        // This is the original calling node.
   41186             : 
   41187             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   41188             :        // printf ("Calling SgOmpDynamicAllocatorsClause::fixupCopy() (from root of AST being copied) \n");
   41189             : #if ALT_FIXUP_COPY
   41190             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   41191           0 :           fixupCopy_scopes (result,help);
   41192           0 :           fixupCopy_symbols (result,help);
   41193           0 :           fixupCopy_references (result,help);
   41194             : #else
   41195             :           fixupCopy(result,help);
   41196             : #endif
   41197             :        // Allow this to be called recursively, so accumulate the state.
   41198             :        // Also, clear the state in the SgCopyHelp object.
   41199             :        // help.clearState();
   41200             :         }
   41201             : 
   41202           0 :      return result;
   41203             :    }
   41204             : 
   41205             : 
   41206             : /* #line 41207 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   41207             : 
   41208             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41209             : 
   41210           0 : SgNode* SgOmpParallelClause::copy ( SgCopyHelp& help) const
   41211             :    {
   41212           0 :      SgOmpParallelClause* result = NULL;
   41213             : 
   41214             :   // printf ("Copy SgOmpParallelClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   41215             : 
   41216             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   41217             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   41218             :   // The default value of the depth is 0, so after this call the depth is 1!
   41219           0 :      help.incrementDepth();
   41220             : 
   41221             : #if 0
   41222             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   41223             :   // but it is not generally true that things can only be copied once!
   41224             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   41225             :   // AstAttribute* existingAttribute = const_cast<SgOmpParallelClause*>(this)->attribute["copied"];
   41226             :      bool previouslyCopied = const_cast<SgOmpParallelClause*>(this)->attribute.exists("copied");
   41227             :      if (previouslyCopied == true)
   41228             :         {
   41229             :           this->get_file_info()->display("Called from copy SgOmpParallelClause: debug");
   41230             :         }
   41231             :      ROSE_ASSERT(previouslyCopied == false);
   41232             : 
   41233             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   41234             :      AstAttribute* newAttribute = new AstAttribute();
   41235             :      ROSE_ASSERT(newAttribute != NULL);
   41236             : 
   41237             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   41238             :      const_cast<SgOmpParallelClause*>(this)->attribute.add("copied",newAttribute);
   41239             : #endif
   41240             : 
   41241             :   // Copy data members from base classes
   41242             :   // Copy constructor parameter data member: startOfConstruct_copy
   41243             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   41244             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   41245           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   41246           0 :      if ( p_startOfConstruct != NULL ) 
   41247             :         { 
   41248           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   41249             :         } 
   41250             :        else 
   41251             :         { 
   41252             :           startOfConstruct_copy = NULL; 
   41253             :         } 
   41254             :  
   41255             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41256             : 
   41257             :   // Build an empty copy of this object (will be filled in, but 
   41258             :   // the parent can't be set and must be set by the caller)
   41259           0 :      result = new SgOmpParallelClause(  startOfConstruct_copy );
   41260           0 :      ROSE_ASSERT(result != NULL);
   41261             : 
   41262             :   // Copy data members of "this" class
   41263             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   41264             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   41265             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   41266           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   41267           0 :      if ( p_endOfConstruct != NULL ) 
   41268             :         { 
   41269           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   41270             :         } 
   41271             :        else 
   41272             :         { 
   41273             :           endOfConstruct_copy = NULL; 
   41274             :         } 
   41275             :   /* check for a valid pointer and delete if present */ 
   41276           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   41277             :   /* add assignment to result here */ 
   41278           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   41279             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   41280             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   41281             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   41282           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   41283           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   41284             :         { 
   41285           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   41286             :         } 
   41287             :        else 
   41288             :         { 
   41289             :           attachedPreprocessingInfoPtr_copy = NULL; 
   41290             :         } 
   41291             :   /* check for a valid pointer and delete if present */ 
   41292           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   41293             :   /* add assignment to result here */ 
   41294           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   41295             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   41296             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   41297             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   41298           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   41299           0 :      if ( p_attributeMechanism != NULL ) 
   41300             :         { 
   41301           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   41302             :         } 
   41303             :        else 
   41304             :         { 
   41305             :           attributeMechanism_copy = NULL; 
   41306             :         } 
   41307             :   /* check for a valid pointer and delete if present */ 
   41308           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   41309             :   /* add assignment to result here */ 
   41310           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   41311             : 
   41312             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41313             : 
   41314             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   41315             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   41316             :   // fixupCopy(result,help);
   41317             : 
   41318             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   41319             :   // the Sg_File_Info objects that are built for the new IR nodes.
   41320           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   41321           0 :      if (locatedNode != NULL)
   41322             :         {
   41323             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   41324           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   41325           0 :           ROSE_ASSERT(start != NULL);
   41326             : #if 0
   41327             :        // Debugging information
   41328             :           if (start->get_parent() == NULL)
   41329             :              {
   41330             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41331             :              }
   41332             : #endif
   41333           0 :           start->set_parent(locatedNode);
   41334           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   41335             : 
   41336           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   41337             : 
   41338             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   41339             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   41340             :        // ROSE_ASSERT(end != NULL);
   41341           0 :           if (end == NULL)
   41342             :              {
   41343           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   41344             :              }
   41345             :             else
   41346             :              {
   41347             : #if 0
   41348             :             // Debugging information
   41349             :                if (end->get_parent() == NULL)
   41350             :                   {
   41351             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41352             :                   }
   41353             : #endif
   41354           0 :                end->set_parent(locatedNode);
   41355           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   41356             :              }
   41357             : 
   41358           0 :           SgExpression* expression = isSgExpression(result);
   41359           0 :           if (isSgExpression(this) != NULL)
   41360             :              {
   41361           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   41362             : 
   41363             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   41364           0 :                if (operatorPosition != NULL)
   41365             :                   {
   41366             : #if 0
   41367             :                  // Debugging information
   41368             :                     if (operatorPosition->get_parent() == NULL)
   41369             :                        {
   41370             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41371             :                        }
   41372             : #endif
   41373           0 :                     operatorPosition->set_parent(expression);
   41374           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   41375             :                   }
   41376             :              }
   41377             :         }
   41378             : 
   41379             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   41380           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   41381           0 :      if (initializedName != NULL)
   41382             :         {
   41383             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   41384           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   41385           0 :           ROSE_ASSERT(start != NULL);
   41386             : #if 0
   41387             :        // Debugging information
   41388             :           if (start->get_parent() == NULL)
   41389             :              {
   41390             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41391             :              }
   41392             : #endif
   41393           0 :           start->set_parent(initializedName);
   41394           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   41395             : 
   41396             : #if 0
   41397             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   41398             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   41399             : 
   41400             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   41401             :        // ROSE_ASSERT(end != NULL);
   41402             :           if (end == NULL)
   41403             :              {
   41404             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   41405             :              }
   41406             :             else
   41407             :              {
   41408             :                if (end->get_parent() == NULL)
   41409             :                   {
   41410             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41411             :                   }
   41412             :                end->set_parent(initializedName);
   41413             :                ROSE_ASSERT(end->get_parent() != NULL);
   41414             :              }
   41415             : #endif
   41416             :         }
   41417             : 
   41418             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   41419           0 :      help.insertCopiedNodePair(this,result);
   41420             : 
   41421             :   // printf ("End of copy SgOmpParallelClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   41422             : 
   41423             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   41424             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   41425           0 :      help.decrementDepth();
   41426             : 
   41427             :   // Test if this is the root of the copy!
   41428           0 :      if (help.get_depth() == 0)
   41429             :         {
   41430             :        // This is the original calling node.
   41431             : 
   41432             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   41433             :        // printf ("Calling SgOmpParallelClause::fixupCopy() (from root of AST being copied) \n");
   41434             : #if ALT_FIXUP_COPY
   41435             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   41436           0 :           fixupCopy_scopes (result,help);
   41437           0 :           fixupCopy_symbols (result,help);
   41438           0 :           fixupCopy_references (result,help);
   41439             : #else
   41440             :           fixupCopy(result,help);
   41441             : #endif
   41442             :        // Allow this to be called recursively, so accumulate the state.
   41443             :        // Also, clear the state in the SgCopyHelp object.
   41444             :        // help.clearState();
   41445             :         }
   41446             : 
   41447           0 :      return result;
   41448             :    }
   41449             : 
   41450             : 
   41451             : /* #line 41452 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   41452             : 
   41453             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41454             : 
   41455           0 : SgNode* SgOmpSectionsClause::copy ( SgCopyHelp& help) const
   41456             :    {
   41457           0 :      SgOmpSectionsClause* result = NULL;
   41458             : 
   41459             :   // printf ("Copy SgOmpSectionsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   41460             : 
   41461             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   41462             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   41463             :   // The default value of the depth is 0, so after this call the depth is 1!
   41464           0 :      help.incrementDepth();
   41465             : 
   41466             : #if 0
   41467             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   41468             :   // but it is not generally true that things can only be copied once!
   41469             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   41470             :   // AstAttribute* existingAttribute = const_cast<SgOmpSectionsClause*>(this)->attribute["copied"];
   41471             :      bool previouslyCopied = const_cast<SgOmpSectionsClause*>(this)->attribute.exists("copied");
   41472             :      if (previouslyCopied == true)
   41473             :         {
   41474             :           this->get_file_info()->display("Called from copy SgOmpSectionsClause: debug");
   41475             :         }
   41476             :      ROSE_ASSERT(previouslyCopied == false);
   41477             : 
   41478             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   41479             :      AstAttribute* newAttribute = new AstAttribute();
   41480             :      ROSE_ASSERT(newAttribute != NULL);
   41481             : 
   41482             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   41483             :      const_cast<SgOmpSectionsClause*>(this)->attribute.add("copied",newAttribute);
   41484             : #endif
   41485             : 
   41486             :   // Copy data members from base classes
   41487             :   // Copy constructor parameter data member: startOfConstruct_copy
   41488             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   41489             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   41490           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   41491           0 :      if ( p_startOfConstruct != NULL ) 
   41492             :         { 
   41493           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   41494             :         } 
   41495             :        else 
   41496             :         { 
   41497             :           startOfConstruct_copy = NULL; 
   41498             :         } 
   41499             :  
   41500             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41501             : 
   41502             :   // Build an empty copy of this object (will be filled in, but 
   41503             :   // the parent can't be set and must be set by the caller)
   41504           0 :      result = new SgOmpSectionsClause(  startOfConstruct_copy );
   41505           0 :      ROSE_ASSERT(result != NULL);
   41506             : 
   41507             :   // Copy data members of "this" class
   41508             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   41509             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   41510             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   41511           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   41512           0 :      if ( p_endOfConstruct != NULL ) 
   41513             :         { 
   41514           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   41515             :         } 
   41516             :        else 
   41517             :         { 
   41518             :           endOfConstruct_copy = NULL; 
   41519             :         } 
   41520             :   /* check for a valid pointer and delete if present */ 
   41521           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   41522             :   /* add assignment to result here */ 
   41523           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   41524             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   41525             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   41526             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   41527           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   41528           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   41529             :         { 
   41530           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   41531             :         } 
   41532             :        else 
   41533             :         { 
   41534             :           attachedPreprocessingInfoPtr_copy = NULL; 
   41535             :         } 
   41536             :   /* check for a valid pointer and delete if present */ 
   41537           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   41538             :   /* add assignment to result here */ 
   41539           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   41540             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   41541             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   41542             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   41543           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   41544           0 :      if ( p_attributeMechanism != NULL ) 
   41545             :         { 
   41546           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   41547             :         } 
   41548             :        else 
   41549             :         { 
   41550             :           attributeMechanism_copy = NULL; 
   41551             :         } 
   41552             :   /* check for a valid pointer and delete if present */ 
   41553           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   41554             :   /* add assignment to result here */ 
   41555           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   41556             : 
   41557             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41558             : 
   41559             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   41560             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   41561             :   // fixupCopy(result,help);
   41562             : 
   41563             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   41564             :   // the Sg_File_Info objects that are built for the new IR nodes.
   41565           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   41566           0 :      if (locatedNode != NULL)
   41567             :         {
   41568             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   41569           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   41570           0 :           ROSE_ASSERT(start != NULL);
   41571             : #if 0
   41572             :        // Debugging information
   41573             :           if (start->get_parent() == NULL)
   41574             :              {
   41575             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41576             :              }
   41577             : #endif
   41578           0 :           start->set_parent(locatedNode);
   41579           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   41580             : 
   41581           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   41582             : 
   41583             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   41584             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   41585             :        // ROSE_ASSERT(end != NULL);
   41586           0 :           if (end == NULL)
   41587             :              {
   41588           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   41589             :              }
   41590             :             else
   41591             :              {
   41592             : #if 0
   41593             :             // Debugging information
   41594             :                if (end->get_parent() == NULL)
   41595             :                   {
   41596             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41597             :                   }
   41598             : #endif
   41599           0 :                end->set_parent(locatedNode);
   41600           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   41601             :              }
   41602             : 
   41603           0 :           SgExpression* expression = isSgExpression(result);
   41604           0 :           if (isSgExpression(this) != NULL)
   41605             :              {
   41606           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   41607             : 
   41608             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   41609           0 :                if (operatorPosition != NULL)
   41610             :                   {
   41611             : #if 0
   41612             :                  // Debugging information
   41613             :                     if (operatorPosition->get_parent() == NULL)
   41614             :                        {
   41615             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41616             :                        }
   41617             : #endif
   41618           0 :                     operatorPosition->set_parent(expression);
   41619           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   41620             :                   }
   41621             :              }
   41622             :         }
   41623             : 
   41624             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   41625           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   41626           0 :      if (initializedName != NULL)
   41627             :         {
   41628             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   41629           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   41630           0 :           ROSE_ASSERT(start != NULL);
   41631             : #if 0
   41632             :        // Debugging information
   41633             :           if (start->get_parent() == NULL)
   41634             :              {
   41635             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41636             :              }
   41637             : #endif
   41638           0 :           start->set_parent(initializedName);
   41639           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   41640             : 
   41641             : #if 0
   41642             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   41643             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   41644             : 
   41645             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   41646             :        // ROSE_ASSERT(end != NULL);
   41647             :           if (end == NULL)
   41648             :              {
   41649             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   41650             :              }
   41651             :             else
   41652             :              {
   41653             :                if (end->get_parent() == NULL)
   41654             :                   {
   41655             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41656             :                   }
   41657             :                end->set_parent(initializedName);
   41658             :                ROSE_ASSERT(end->get_parent() != NULL);
   41659             :              }
   41660             : #endif
   41661             :         }
   41662             : 
   41663             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   41664           0 :      help.insertCopiedNodePair(this,result);
   41665             : 
   41666             :   // printf ("End of copy SgOmpSectionsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   41667             : 
   41668             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   41669             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   41670           0 :      help.decrementDepth();
   41671             : 
   41672             :   // Test if this is the root of the copy!
   41673           0 :      if (help.get_depth() == 0)
   41674             :         {
   41675             :        // This is the original calling node.
   41676             : 
   41677             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   41678             :        // printf ("Calling SgOmpSectionsClause::fixupCopy() (from root of AST being copied) \n");
   41679             : #if ALT_FIXUP_COPY
   41680             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   41681           0 :           fixupCopy_scopes (result,help);
   41682           0 :           fixupCopy_symbols (result,help);
   41683           0 :           fixupCopy_references (result,help);
   41684             : #else
   41685             :           fixupCopy(result,help);
   41686             : #endif
   41687             :        // Allow this to be called recursively, so accumulate the state.
   41688             :        // Also, clear the state in the SgCopyHelp object.
   41689             :        // help.clearState();
   41690             :         }
   41691             : 
   41692           0 :      return result;
   41693             :    }
   41694             : 
   41695             : 
   41696             : /* #line 41697 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   41697             : 
   41698             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41699             : 
   41700           0 : SgNode* SgOmpForClause::copy ( SgCopyHelp& help) const
   41701             :    {
   41702           0 :      SgOmpForClause* result = NULL;
   41703             : 
   41704             :   // printf ("Copy SgOmpForClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   41705             : 
   41706             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   41707             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   41708             :   // The default value of the depth is 0, so after this call the depth is 1!
   41709           0 :      help.incrementDepth();
   41710             : 
   41711             : #if 0
   41712             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   41713             :   // but it is not generally true that things can only be copied once!
   41714             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   41715             :   // AstAttribute* existingAttribute = const_cast<SgOmpForClause*>(this)->attribute["copied"];
   41716             :      bool previouslyCopied = const_cast<SgOmpForClause*>(this)->attribute.exists("copied");
   41717             :      if (previouslyCopied == true)
   41718             :         {
   41719             :           this->get_file_info()->display("Called from copy SgOmpForClause: debug");
   41720             :         }
   41721             :      ROSE_ASSERT(previouslyCopied == false);
   41722             : 
   41723             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   41724             :      AstAttribute* newAttribute = new AstAttribute();
   41725             :      ROSE_ASSERT(newAttribute != NULL);
   41726             : 
   41727             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   41728             :      const_cast<SgOmpForClause*>(this)->attribute.add("copied",newAttribute);
   41729             : #endif
   41730             : 
   41731             :   // Copy data members from base classes
   41732             :   // Copy constructor parameter data member: startOfConstruct_copy
   41733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   41734             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   41735           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   41736           0 :      if ( p_startOfConstruct != NULL ) 
   41737             :         { 
   41738           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   41739             :         } 
   41740             :        else 
   41741             :         { 
   41742             :           startOfConstruct_copy = NULL; 
   41743             :         } 
   41744             :  
   41745             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41746             : 
   41747             :   // Build an empty copy of this object (will be filled in, but 
   41748             :   // the parent can't be set and must be set by the caller)
   41749           0 :      result = new SgOmpForClause(  startOfConstruct_copy );
   41750           0 :      ROSE_ASSERT(result != NULL);
   41751             : 
   41752             :   // Copy data members of "this" class
   41753             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   41754             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   41755             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   41756           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   41757           0 :      if ( p_endOfConstruct != NULL ) 
   41758             :         { 
   41759           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   41760             :         } 
   41761             :        else 
   41762             :         { 
   41763             :           endOfConstruct_copy = NULL; 
   41764             :         } 
   41765             :   /* check for a valid pointer and delete if present */ 
   41766           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   41767             :   /* add assignment to result here */ 
   41768           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   41769             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   41770             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   41771             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   41772           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   41773           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   41774             :         { 
   41775           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   41776             :         } 
   41777             :        else 
   41778             :         { 
   41779             :           attachedPreprocessingInfoPtr_copy = NULL; 
   41780             :         } 
   41781             :   /* check for a valid pointer and delete if present */ 
   41782           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   41783             :   /* add assignment to result here */ 
   41784           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   41785             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   41786             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   41787             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   41788           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   41789           0 :      if ( p_attributeMechanism != NULL ) 
   41790             :         { 
   41791           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   41792             :         } 
   41793             :        else 
   41794             :         { 
   41795             :           attributeMechanism_copy = NULL; 
   41796             :         } 
   41797             :   /* check for a valid pointer and delete if present */ 
   41798           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   41799             :   /* add assignment to result here */ 
   41800           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   41801             : 
   41802             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41803             : 
   41804             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   41805             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   41806             :   // fixupCopy(result,help);
   41807             : 
   41808             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   41809             :   // the Sg_File_Info objects that are built for the new IR nodes.
   41810           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   41811           0 :      if (locatedNode != NULL)
   41812             :         {
   41813             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   41814           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   41815           0 :           ROSE_ASSERT(start != NULL);
   41816             : #if 0
   41817             :        // Debugging information
   41818             :           if (start->get_parent() == NULL)
   41819             :              {
   41820             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41821             :              }
   41822             : #endif
   41823           0 :           start->set_parent(locatedNode);
   41824           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   41825             : 
   41826           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   41827             : 
   41828             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   41829             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   41830             :        // ROSE_ASSERT(end != NULL);
   41831           0 :           if (end == NULL)
   41832             :              {
   41833           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   41834             :              }
   41835             :             else
   41836             :              {
   41837             : #if 0
   41838             :             // Debugging information
   41839             :                if (end->get_parent() == NULL)
   41840             :                   {
   41841             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41842             :                   }
   41843             : #endif
   41844           0 :                end->set_parent(locatedNode);
   41845           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   41846             :              }
   41847             : 
   41848           0 :           SgExpression* expression = isSgExpression(result);
   41849           0 :           if (isSgExpression(this) != NULL)
   41850             :              {
   41851           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   41852             : 
   41853             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   41854           0 :                if (operatorPosition != NULL)
   41855             :                   {
   41856             : #if 0
   41857             :                  // Debugging information
   41858             :                     if (operatorPosition->get_parent() == NULL)
   41859             :                        {
   41860             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41861             :                        }
   41862             : #endif
   41863           0 :                     operatorPosition->set_parent(expression);
   41864           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   41865             :                   }
   41866             :              }
   41867             :         }
   41868             : 
   41869             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   41870           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   41871           0 :      if (initializedName != NULL)
   41872             :         {
   41873             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   41874           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   41875           0 :           ROSE_ASSERT(start != NULL);
   41876             : #if 0
   41877             :        // Debugging information
   41878             :           if (start->get_parent() == NULL)
   41879             :              {
   41880             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41881             :              }
   41882             : #endif
   41883           0 :           start->set_parent(initializedName);
   41884           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   41885             : 
   41886             : #if 0
   41887             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   41888             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   41889             : 
   41890             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   41891             :        // ROSE_ASSERT(end != NULL);
   41892             :           if (end == NULL)
   41893             :              {
   41894             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   41895             :              }
   41896             :             else
   41897             :              {
   41898             :                if (end->get_parent() == NULL)
   41899             :                   {
   41900             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   41901             :                   }
   41902             :                end->set_parent(initializedName);
   41903             :                ROSE_ASSERT(end->get_parent() != NULL);
   41904             :              }
   41905             : #endif
   41906             :         }
   41907             : 
   41908             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   41909           0 :      help.insertCopiedNodePair(this,result);
   41910             : 
   41911             :   // printf ("End of copy SgOmpForClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   41912             : 
   41913             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   41914             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   41915           0 :      help.decrementDepth();
   41916             : 
   41917             :   // Test if this is the root of the copy!
   41918           0 :      if (help.get_depth() == 0)
   41919             :         {
   41920             :        // This is the original calling node.
   41921             : 
   41922             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   41923             :        // printf ("Calling SgOmpForClause::fixupCopy() (from root of AST being copied) \n");
   41924             : #if ALT_FIXUP_COPY
   41925             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   41926           0 :           fixupCopy_scopes (result,help);
   41927           0 :           fixupCopy_symbols (result,help);
   41928           0 :           fixupCopy_references (result,help);
   41929             : #else
   41930             :           fixupCopy(result,help);
   41931             : #endif
   41932             :        // Allow this to be called recursively, so accumulate the state.
   41933             :        // Also, clear the state in the SgCopyHelp object.
   41934             :        // help.clearState();
   41935             :         }
   41936             : 
   41937           0 :      return result;
   41938             :    }
   41939             : 
   41940             : 
   41941             : /* #line 41942 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   41942             : 
   41943             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41944             : 
   41945           0 : SgNode* SgOmpTaskgroupClause::copy ( SgCopyHelp& help) const
   41946             :    {
   41947           0 :      SgOmpTaskgroupClause* result = NULL;
   41948             : 
   41949             :   // printf ("Copy SgOmpTaskgroupClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   41950             : 
   41951             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   41952             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   41953             :   // The default value of the depth is 0, so after this call the depth is 1!
   41954           0 :      help.incrementDepth();
   41955             : 
   41956             : #if 0
   41957             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   41958             :   // but it is not generally true that things can only be copied once!
   41959             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   41960             :   // AstAttribute* existingAttribute = const_cast<SgOmpTaskgroupClause*>(this)->attribute["copied"];
   41961             :      bool previouslyCopied = const_cast<SgOmpTaskgroupClause*>(this)->attribute.exists("copied");
   41962             :      if (previouslyCopied == true)
   41963             :         {
   41964             :           this->get_file_info()->display("Called from copy SgOmpTaskgroupClause: debug");
   41965             :         }
   41966             :      ROSE_ASSERT(previouslyCopied == false);
   41967             : 
   41968             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   41969             :      AstAttribute* newAttribute = new AstAttribute();
   41970             :      ROSE_ASSERT(newAttribute != NULL);
   41971             : 
   41972             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   41973             :      const_cast<SgOmpTaskgroupClause*>(this)->attribute.add("copied",newAttribute);
   41974             : #endif
   41975             : 
   41976             :   // Copy data members from base classes
   41977             :   // Copy constructor parameter data member: startOfConstruct_copy
   41978             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   41979             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   41980           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   41981           0 :      if ( p_startOfConstruct != NULL ) 
   41982             :         { 
   41983           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   41984             :         } 
   41985             :        else 
   41986             :         { 
   41987             :           startOfConstruct_copy = NULL; 
   41988             :         } 
   41989             :  
   41990             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   41991             : 
   41992             :   // Build an empty copy of this object (will be filled in, but 
   41993             :   // the parent can't be set and must be set by the caller)
   41994           0 :      result = new SgOmpTaskgroupClause(  startOfConstruct_copy );
   41995           0 :      ROSE_ASSERT(result != NULL);
   41996             : 
   41997             :   // Copy data members of "this" class
   41998             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   41999             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   42000             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   42001           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   42002           0 :      if ( p_endOfConstruct != NULL ) 
   42003             :         { 
   42004           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   42005             :         } 
   42006             :        else 
   42007             :         { 
   42008             :           endOfConstruct_copy = NULL; 
   42009             :         } 
   42010             :   /* check for a valid pointer and delete if present */ 
   42011           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   42012             :   /* add assignment to result here */ 
   42013           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   42014             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   42015             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   42016             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   42017           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   42018           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   42019             :         { 
   42020           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   42021             :         } 
   42022             :        else 
   42023             :         { 
   42024             :           attachedPreprocessingInfoPtr_copy = NULL; 
   42025             :         } 
   42026             :   /* check for a valid pointer and delete if present */ 
   42027           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   42028             :   /* add assignment to result here */ 
   42029           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   42030             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   42031             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   42032             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   42033           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   42034           0 :      if ( p_attributeMechanism != NULL ) 
   42035             :         { 
   42036           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   42037             :         } 
   42038             :        else 
   42039             :         { 
   42040             :           attributeMechanism_copy = NULL; 
   42041             :         } 
   42042             :   /* check for a valid pointer and delete if present */ 
   42043           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   42044             :   /* add assignment to result here */ 
   42045           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   42046             : 
   42047             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42048             : 
   42049             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   42050             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   42051             :   // fixupCopy(result,help);
   42052             : 
   42053             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   42054             :   // the Sg_File_Info objects that are built for the new IR nodes.
   42055           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   42056           0 :      if (locatedNode != NULL)
   42057             :         {
   42058             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   42059           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   42060           0 :           ROSE_ASSERT(start != NULL);
   42061             : #if 0
   42062             :        // Debugging information
   42063             :           if (start->get_parent() == NULL)
   42064             :              {
   42065             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42066             :              }
   42067             : #endif
   42068           0 :           start->set_parent(locatedNode);
   42069           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   42070             : 
   42071           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   42072             : 
   42073             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   42074             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   42075             :        // ROSE_ASSERT(end != NULL);
   42076           0 :           if (end == NULL)
   42077             :              {
   42078           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   42079             :              }
   42080             :             else
   42081             :              {
   42082             : #if 0
   42083             :             // Debugging information
   42084             :                if (end->get_parent() == NULL)
   42085             :                   {
   42086             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42087             :                   }
   42088             : #endif
   42089           0 :                end->set_parent(locatedNode);
   42090           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   42091             :              }
   42092             : 
   42093           0 :           SgExpression* expression = isSgExpression(result);
   42094           0 :           if (isSgExpression(this) != NULL)
   42095             :              {
   42096           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   42097             : 
   42098             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   42099           0 :                if (operatorPosition != NULL)
   42100             :                   {
   42101             : #if 0
   42102             :                  // Debugging information
   42103             :                     if (operatorPosition->get_parent() == NULL)
   42104             :                        {
   42105             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42106             :                        }
   42107             : #endif
   42108           0 :                     operatorPosition->set_parent(expression);
   42109           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   42110             :                   }
   42111             :              }
   42112             :         }
   42113             : 
   42114             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   42115           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   42116           0 :      if (initializedName != NULL)
   42117             :         {
   42118             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   42119           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   42120           0 :           ROSE_ASSERT(start != NULL);
   42121             : #if 0
   42122             :        // Debugging information
   42123             :           if (start->get_parent() == NULL)
   42124             :              {
   42125             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42126             :              }
   42127             : #endif
   42128           0 :           start->set_parent(initializedName);
   42129           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   42130             : 
   42131             : #if 0
   42132             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   42133             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   42134             : 
   42135             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   42136             :        // ROSE_ASSERT(end != NULL);
   42137             :           if (end == NULL)
   42138             :              {
   42139             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   42140             :              }
   42141             :             else
   42142             :              {
   42143             :                if (end->get_parent() == NULL)
   42144             :                   {
   42145             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42146             :                   }
   42147             :                end->set_parent(initializedName);
   42148             :                ROSE_ASSERT(end->get_parent() != NULL);
   42149             :              }
   42150             : #endif
   42151             :         }
   42152             : 
   42153             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   42154           0 :      help.insertCopiedNodePair(this,result);
   42155             : 
   42156             :   // printf ("End of copy SgOmpTaskgroupClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   42157             : 
   42158             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   42159             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   42160           0 :      help.decrementDepth();
   42161             : 
   42162             :   // Test if this is the root of the copy!
   42163           0 :      if (help.get_depth() == 0)
   42164             :         {
   42165             :        // This is the original calling node.
   42166             : 
   42167             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   42168             :        // printf ("Calling SgOmpTaskgroupClause::fixupCopy() (from root of AST being copied) \n");
   42169             : #if ALT_FIXUP_COPY
   42170             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   42171           0 :           fixupCopy_scopes (result,help);
   42172           0 :           fixupCopy_symbols (result,help);
   42173           0 :           fixupCopy_references (result,help);
   42174             : #else
   42175             :           fixupCopy(result,help);
   42176             : #endif
   42177             :        // Allow this to be called recursively, so accumulate the state.
   42178             :        // Also, clear the state in the SgCopyHelp object.
   42179             :        // help.clearState();
   42180             :         }
   42181             : 
   42182           0 :      return result;
   42183             :    }
   42184             : 
   42185             : 
   42186             : /* #line 42187 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   42187             : 
   42188             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42189             : 
   42190           0 : SgNode* SgOmpNogroupClause::copy ( SgCopyHelp& help) const
   42191             :    {
   42192           0 :      SgOmpNogroupClause* result = NULL;
   42193             : 
   42194             :   // printf ("Copy SgOmpNogroupClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   42195             : 
   42196             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   42197             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   42198             :   // The default value of the depth is 0, so after this call the depth is 1!
   42199           0 :      help.incrementDepth();
   42200             : 
   42201             : #if 0
   42202             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   42203             :   // but it is not generally true that things can only be copied once!
   42204             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   42205             :   // AstAttribute* existingAttribute = const_cast<SgOmpNogroupClause*>(this)->attribute["copied"];
   42206             :      bool previouslyCopied = const_cast<SgOmpNogroupClause*>(this)->attribute.exists("copied");
   42207             :      if (previouslyCopied == true)
   42208             :         {
   42209             :           this->get_file_info()->display("Called from copy SgOmpNogroupClause: debug");
   42210             :         }
   42211             :      ROSE_ASSERT(previouslyCopied == false);
   42212             : 
   42213             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   42214             :      AstAttribute* newAttribute = new AstAttribute();
   42215             :      ROSE_ASSERT(newAttribute != NULL);
   42216             : 
   42217             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   42218             :      const_cast<SgOmpNogroupClause*>(this)->attribute.add("copied",newAttribute);
   42219             : #endif
   42220             : 
   42221             :   // Copy data members from base classes
   42222             :   // Copy constructor parameter data member: startOfConstruct_copy
   42223             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   42224             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   42225           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   42226           0 :      if ( p_startOfConstruct != NULL ) 
   42227             :         { 
   42228           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   42229             :         } 
   42230             :        else 
   42231             :         { 
   42232             :           startOfConstruct_copy = NULL; 
   42233             :         } 
   42234             :  
   42235             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42236             : 
   42237             :   // Build an empty copy of this object (will be filled in, but 
   42238             :   // the parent can't be set and must be set by the caller)
   42239           0 :      result = new SgOmpNogroupClause(  startOfConstruct_copy );
   42240           0 :      ROSE_ASSERT(result != NULL);
   42241             : 
   42242             :   // Copy data members of "this" class
   42243             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   42244             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   42245             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   42246           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   42247           0 :      if ( p_endOfConstruct != NULL ) 
   42248             :         { 
   42249           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   42250             :         } 
   42251             :        else 
   42252             :         { 
   42253             :           endOfConstruct_copy = NULL; 
   42254             :         } 
   42255             :   /* check for a valid pointer and delete if present */ 
   42256           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   42257             :   /* add assignment to result here */ 
   42258           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   42259             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   42260             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   42261             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   42262           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   42263           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   42264             :         { 
   42265           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   42266             :         } 
   42267             :        else 
   42268             :         { 
   42269             :           attachedPreprocessingInfoPtr_copy = NULL; 
   42270             :         } 
   42271             :   /* check for a valid pointer and delete if present */ 
   42272           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   42273             :   /* add assignment to result here */ 
   42274           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   42275             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   42276             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   42277             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   42278           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   42279           0 :      if ( p_attributeMechanism != NULL ) 
   42280             :         { 
   42281           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   42282             :         } 
   42283             :        else 
   42284             :         { 
   42285             :           attributeMechanism_copy = NULL; 
   42286             :         } 
   42287             :   /* check for a valid pointer and delete if present */ 
   42288           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   42289             :   /* add assignment to result here */ 
   42290           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   42291             : 
   42292             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42293             : 
   42294             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   42295             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   42296             :   // fixupCopy(result,help);
   42297             : 
   42298             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   42299             :   // the Sg_File_Info objects that are built for the new IR nodes.
   42300           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   42301           0 :      if (locatedNode != NULL)
   42302             :         {
   42303             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   42304           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   42305           0 :           ROSE_ASSERT(start != NULL);
   42306             : #if 0
   42307             :        // Debugging information
   42308             :           if (start->get_parent() == NULL)
   42309             :              {
   42310             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42311             :              }
   42312             : #endif
   42313           0 :           start->set_parent(locatedNode);
   42314           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   42315             : 
   42316           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   42317             : 
   42318             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   42319             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   42320             :        // ROSE_ASSERT(end != NULL);
   42321           0 :           if (end == NULL)
   42322             :              {
   42323           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   42324             :              }
   42325             :             else
   42326             :              {
   42327             : #if 0
   42328             :             // Debugging information
   42329             :                if (end->get_parent() == NULL)
   42330             :                   {
   42331             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42332             :                   }
   42333             : #endif
   42334           0 :                end->set_parent(locatedNode);
   42335           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   42336             :              }
   42337             : 
   42338           0 :           SgExpression* expression = isSgExpression(result);
   42339           0 :           if (isSgExpression(this) != NULL)
   42340             :              {
   42341           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   42342             : 
   42343             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   42344           0 :                if (operatorPosition != NULL)
   42345             :                   {
   42346             : #if 0
   42347             :                  // Debugging information
   42348             :                     if (operatorPosition->get_parent() == NULL)
   42349             :                        {
   42350             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42351             :                        }
   42352             : #endif
   42353           0 :                     operatorPosition->set_parent(expression);
   42354           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   42355             :                   }
   42356             :              }
   42357             :         }
   42358             : 
   42359             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   42360           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   42361           0 :      if (initializedName != NULL)
   42362             :         {
   42363             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   42364           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   42365           0 :           ROSE_ASSERT(start != NULL);
   42366             : #if 0
   42367             :        // Debugging information
   42368             :           if (start->get_parent() == NULL)
   42369             :              {
   42370             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42371             :              }
   42372             : #endif
   42373           0 :           start->set_parent(initializedName);
   42374           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   42375             : 
   42376             : #if 0
   42377             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   42378             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   42379             : 
   42380             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   42381             :        // ROSE_ASSERT(end != NULL);
   42382             :           if (end == NULL)
   42383             :              {
   42384             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   42385             :              }
   42386             :             else
   42387             :              {
   42388             :                if (end->get_parent() == NULL)
   42389             :                   {
   42390             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42391             :                   }
   42392             :                end->set_parent(initializedName);
   42393             :                ROSE_ASSERT(end->get_parent() != NULL);
   42394             :              }
   42395             : #endif
   42396             :         }
   42397             : 
   42398             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   42399           0 :      help.insertCopiedNodePair(this,result);
   42400             : 
   42401             :   // printf ("End of copy SgOmpNogroupClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   42402             : 
   42403             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   42404             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   42405           0 :      help.decrementDepth();
   42406             : 
   42407             :   // Test if this is the root of the copy!
   42408           0 :      if (help.get_depth() == 0)
   42409             :         {
   42410             :        // This is the original calling node.
   42411             : 
   42412             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   42413             :        // printf ("Calling SgOmpNogroupClause::fixupCopy() (from root of AST being copied) \n");
   42414             : #if ALT_FIXUP_COPY
   42415             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   42416           0 :           fixupCopy_scopes (result,help);
   42417           0 :           fixupCopy_symbols (result,help);
   42418           0 :           fixupCopy_references (result,help);
   42419             : #else
   42420             :           fixupCopy(result,help);
   42421             : #endif
   42422             :        // Allow this to be called recursively, so accumulate the state.
   42423             :        // Also, clear the state in the SgCopyHelp object.
   42424             :        // help.clearState();
   42425             :         }
   42426             : 
   42427           0 :      return result;
   42428             :    }
   42429             : 
   42430             : 
   42431             : /* #line 42432 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   42432             : 
   42433             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42434             : 
   42435           0 : SgNode* SgOmpDefaultClause::copy ( SgCopyHelp& help) const
   42436             :    {
   42437           0 :      SgOmpDefaultClause* result = NULL;
   42438             : 
   42439             :   // printf ("Copy SgOmpDefaultClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   42440             : 
   42441             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   42442             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   42443             :   // The default value of the depth is 0, so after this call the depth is 1!
   42444           0 :      help.incrementDepth();
   42445             : 
   42446             : #if 0
   42447             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   42448             :   // but it is not generally true that things can only be copied once!
   42449             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   42450             :   // AstAttribute* existingAttribute = const_cast<SgOmpDefaultClause*>(this)->attribute["copied"];
   42451             :      bool previouslyCopied = const_cast<SgOmpDefaultClause*>(this)->attribute.exists("copied");
   42452             :      if (previouslyCopied == true)
   42453             :         {
   42454             :           this->get_file_info()->display("Called from copy SgOmpDefaultClause: debug");
   42455             :         }
   42456             :      ROSE_ASSERT(previouslyCopied == false);
   42457             : 
   42458             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   42459             :      AstAttribute* newAttribute = new AstAttribute();
   42460             :      ROSE_ASSERT(newAttribute != NULL);
   42461             : 
   42462             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   42463             :      const_cast<SgOmpDefaultClause*>(this)->attribute.add("copied",newAttribute);
   42464             : #endif
   42465             : 
   42466             :   // Copy data members from base classes
   42467             :   // Copy constructor parameter data member: startOfConstruct_copy
   42468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   42469             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   42470           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   42471           0 :      if ( p_startOfConstruct != NULL ) 
   42472             :         { 
   42473           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   42474             :         } 
   42475             :        else 
   42476             :         { 
   42477             :           startOfConstruct_copy = NULL; 
   42478             :         } 
   42479             :   // Copy constructor parameter data member: data_sharing_copy
   42480             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for data_sharing
   42481             :   // case: toBeCopied == COPY_DATA for data_sharing
   42482           0 :      SgOmpClause::omp_default_option_enum data_sharing_copy = p_data_sharing; 
   42483             :   // Copy constructor parameter data member: variant_directive_copy
   42484           0 :      SgStatement* variant_directive_copy; 
   42485             :   // case: not a listType for (using conditionalToCopyVariable)variant_directive
   42486           0 :           if (get_variant_directive() != NULL) 
   42487             :              { 
   42488           0 :                variant_directive_copy = static_cast<SgStatement*>(help.copyAst(get_variant_directive())); 
   42489             :              } 
   42490             :             else 
   42491             :              { 
   42492             :                variant_directive_copy = NULL; 
   42493             :              } 
   42494             :  
   42495             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42496             : 
   42497             :   // Build an empty copy of this object (will be filled in, but 
   42498             :   // the parent can't be set and must be set by the caller)
   42499           0 :      result = new SgOmpDefaultClause(  startOfConstruct_copy, data_sharing_copy, variant_directive_copy );
   42500           0 :      ROSE_ASSERT(result != NULL);
   42501             : 
   42502             :   // Copy data members of "this" class
   42503             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   42504             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   42505             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   42506           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   42507           0 :      if ( p_endOfConstruct != NULL ) 
   42508             :         { 
   42509           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   42510             :         } 
   42511             :        else 
   42512             :         { 
   42513             :           endOfConstruct_copy = NULL; 
   42514             :         } 
   42515             :   /* check for a valid pointer and delete if present */ 
   42516           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   42517             :   /* add assignment to result here */ 
   42518           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   42519             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   42520             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   42521             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   42522           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   42523           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   42524             :         { 
   42525           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   42526             :         } 
   42527             :        else 
   42528             :         { 
   42529             :           attachedPreprocessingInfoPtr_copy = NULL; 
   42530             :         } 
   42531             :   /* check for a valid pointer and delete if present */ 
   42532           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   42533             :   /* add assignment to result here */ 
   42534           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   42535             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   42536             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   42537             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   42538           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   42539           0 :      if ( p_attributeMechanism != NULL ) 
   42540             :         { 
   42541           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   42542             :         } 
   42543             :        else 
   42544             :         { 
   42545             :           attributeMechanism_copy = NULL; 
   42546             :         } 
   42547             :   /* check for a valid pointer and delete if present */ 
   42548           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   42549             :   /* add assignment to result here */ 
   42550           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   42551             :   // case: not a listType for (using conditionalToSetParent)variant_directive
   42552           0 :           if ( (variant_directive_copy != NULL) && (variant_directive_copy->get_parent() == NULL) && (isSgType(variant_directive_copy) == NULL) ) 
   42553             :              { 
   42554           0 :                variant_directive_copy->set_parent(result); 
   42555             :              } 
   42556             : 
   42557             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42558             : 
   42559             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   42560             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   42561             :   // fixupCopy(result,help);
   42562             : 
   42563             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   42564             :   // the Sg_File_Info objects that are built for the new IR nodes.
   42565           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   42566           0 :      if (locatedNode != NULL)
   42567             :         {
   42568             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   42569           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   42570           0 :           ROSE_ASSERT(start != NULL);
   42571             : #if 0
   42572             :        // Debugging information
   42573             :           if (start->get_parent() == NULL)
   42574             :              {
   42575             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42576             :              }
   42577             : #endif
   42578           0 :           start->set_parent(locatedNode);
   42579           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   42580             : 
   42581           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   42582             : 
   42583             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   42584             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   42585             :        // ROSE_ASSERT(end != NULL);
   42586           0 :           if (end == NULL)
   42587             :              {
   42588           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   42589             :              }
   42590             :             else
   42591             :              {
   42592             : #if 0
   42593             :             // Debugging information
   42594             :                if (end->get_parent() == NULL)
   42595             :                   {
   42596             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42597             :                   }
   42598             : #endif
   42599           0 :                end->set_parent(locatedNode);
   42600           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   42601             :              }
   42602             : 
   42603           0 :           SgExpression* expression = isSgExpression(result);
   42604           0 :           if (isSgExpression(this) != NULL)
   42605             :              {
   42606           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   42607             : 
   42608             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   42609           0 :                if (operatorPosition != NULL)
   42610             :                   {
   42611             : #if 0
   42612             :                  // Debugging information
   42613             :                     if (operatorPosition->get_parent() == NULL)
   42614             :                        {
   42615             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42616             :                        }
   42617             : #endif
   42618           0 :                     operatorPosition->set_parent(expression);
   42619           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   42620             :                   }
   42621             :              }
   42622             :         }
   42623             : 
   42624             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   42625           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   42626           0 :      if (initializedName != NULL)
   42627             :         {
   42628             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   42629           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   42630           0 :           ROSE_ASSERT(start != NULL);
   42631             : #if 0
   42632             :        // Debugging information
   42633             :           if (start->get_parent() == NULL)
   42634             :              {
   42635             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42636             :              }
   42637             : #endif
   42638           0 :           start->set_parent(initializedName);
   42639           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   42640             : 
   42641             : #if 0
   42642             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   42643             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   42644             : 
   42645             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   42646             :        // ROSE_ASSERT(end != NULL);
   42647             :           if (end == NULL)
   42648             :              {
   42649             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   42650             :              }
   42651             :             else
   42652             :              {
   42653             :                if (end->get_parent() == NULL)
   42654             :                   {
   42655             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42656             :                   }
   42657             :                end->set_parent(initializedName);
   42658             :                ROSE_ASSERT(end->get_parent() != NULL);
   42659             :              }
   42660             : #endif
   42661             :         }
   42662             : 
   42663             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   42664           0 :      help.insertCopiedNodePair(this,result);
   42665             : 
   42666             :   // printf ("End of copy SgOmpDefaultClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   42667             : 
   42668             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   42669             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   42670           0 :      help.decrementDepth();
   42671             : 
   42672             :   // Test if this is the root of the copy!
   42673           0 :      if (help.get_depth() == 0)
   42674             :         {
   42675             :        // This is the original calling node.
   42676             : 
   42677             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   42678             :        // printf ("Calling SgOmpDefaultClause::fixupCopy() (from root of AST being copied) \n");
   42679             : #if ALT_FIXUP_COPY
   42680             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   42681           0 :           fixupCopy_scopes (result,help);
   42682           0 :           fixupCopy_symbols (result,help);
   42683           0 :           fixupCopy_references (result,help);
   42684             : #else
   42685             :           fixupCopy(result,help);
   42686             : #endif
   42687             :        // Allow this to be called recursively, so accumulate the state.
   42688             :        // Also, clear the state in the SgCopyHelp object.
   42689             :        // help.clearState();
   42690             :         }
   42691             : 
   42692           0 :      return result;
   42693             :    }
   42694             : 
   42695             : 
   42696             : /* #line 42697 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   42697             : 
   42698             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42699             : 
   42700           0 : SgNode* SgOmpAllocatorClause::copy ( SgCopyHelp& help) const
   42701             :    {
   42702           0 :      SgOmpAllocatorClause* result = NULL;
   42703             : 
   42704             :   // printf ("Copy SgOmpAllocatorClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   42705             : 
   42706             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   42707             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   42708             :   // The default value of the depth is 0, so after this call the depth is 1!
   42709           0 :      help.incrementDepth();
   42710             : 
   42711             : #if 0
   42712             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   42713             :   // but it is not generally true that things can only be copied once!
   42714             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   42715             :   // AstAttribute* existingAttribute = const_cast<SgOmpAllocatorClause*>(this)->attribute["copied"];
   42716             :      bool previouslyCopied = const_cast<SgOmpAllocatorClause*>(this)->attribute.exists("copied");
   42717             :      if (previouslyCopied == true)
   42718             :         {
   42719             :           this->get_file_info()->display("Called from copy SgOmpAllocatorClause: debug");
   42720             :         }
   42721             :      ROSE_ASSERT(previouslyCopied == false);
   42722             : 
   42723             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   42724             :      AstAttribute* newAttribute = new AstAttribute();
   42725             :      ROSE_ASSERT(newAttribute != NULL);
   42726             : 
   42727             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   42728             :      const_cast<SgOmpAllocatorClause*>(this)->attribute.add("copied",newAttribute);
   42729             : #endif
   42730             : 
   42731             :   // Copy data members from base classes
   42732             :   // Copy constructor parameter data member: startOfConstruct_copy
   42733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   42734             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   42735           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   42736           0 :      if ( p_startOfConstruct != NULL ) 
   42737             :         { 
   42738           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   42739             :         } 
   42740             :        else 
   42741             :         { 
   42742             :           startOfConstruct_copy = NULL; 
   42743             :         } 
   42744             :   // Copy constructor parameter data member: modifier_copy
   42745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
   42746             :   // case: toBeCopied == COPY_DATA for modifier
   42747           0 :      SgOmpClause::omp_allocator_modifier_enum modifier_copy = p_modifier; 
   42748             :   // Copy constructor parameter data member: user_defined_modifier_copy
   42749             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for user_defined_modifier
   42750             :   // case: toBeCopied == COPY_DATA for user_defined_modifier
   42751           0 :      SgExpression* user_defined_modifier_copy = p_user_defined_modifier; 
   42752             :  
   42753             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42754             : 
   42755             :   // Build an empty copy of this object (will be filled in, but 
   42756             :   // the parent can't be set and must be set by the caller)
   42757           0 :      result = new SgOmpAllocatorClause(  startOfConstruct_copy, modifier_copy, user_defined_modifier_copy );
   42758           0 :      ROSE_ASSERT(result != NULL);
   42759             : 
   42760             :   // Copy data members of "this" class
   42761             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   42762             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   42763             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   42764           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   42765           0 :      if ( p_endOfConstruct != NULL ) 
   42766             :         { 
   42767           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   42768             :         } 
   42769             :        else 
   42770             :         { 
   42771             :           endOfConstruct_copy = NULL; 
   42772             :         } 
   42773             :   /* check for a valid pointer and delete if present */ 
   42774           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   42775             :   /* add assignment to result here */ 
   42776           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   42777             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   42778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   42779             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   42780           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   42781           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   42782             :         { 
   42783           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   42784             :         } 
   42785             :        else 
   42786             :         { 
   42787             :           attachedPreprocessingInfoPtr_copy = NULL; 
   42788             :         } 
   42789             :   /* check for a valid pointer and delete if present */ 
   42790           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   42791             :   /* add assignment to result here */ 
   42792           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   42793             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   42794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   42795             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   42796           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   42797           0 :      if ( p_attributeMechanism != NULL ) 
   42798             :         { 
   42799           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   42800             :         } 
   42801             :        else 
   42802             :         { 
   42803             :           attributeMechanism_copy = NULL; 
   42804             :         } 
   42805             :   /* check for a valid pointer and delete if present */ 
   42806           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   42807             :   /* add assignment to result here */ 
   42808           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   42809             : 
   42810             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42811             : 
   42812             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   42813             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   42814             :   // fixupCopy(result,help);
   42815             : 
   42816             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   42817             :   // the Sg_File_Info objects that are built for the new IR nodes.
   42818           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   42819           0 :      if (locatedNode != NULL)
   42820             :         {
   42821             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   42822           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   42823           0 :           ROSE_ASSERT(start != NULL);
   42824             : #if 0
   42825             :        // Debugging information
   42826             :           if (start->get_parent() == NULL)
   42827             :              {
   42828             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42829             :              }
   42830             : #endif
   42831           0 :           start->set_parent(locatedNode);
   42832           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   42833             : 
   42834           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   42835             : 
   42836             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   42837             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   42838             :        // ROSE_ASSERT(end != NULL);
   42839           0 :           if (end == NULL)
   42840             :              {
   42841           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   42842             :              }
   42843             :             else
   42844             :              {
   42845             : #if 0
   42846             :             // Debugging information
   42847             :                if (end->get_parent() == NULL)
   42848             :                   {
   42849             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42850             :                   }
   42851             : #endif
   42852           0 :                end->set_parent(locatedNode);
   42853           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   42854             :              }
   42855             : 
   42856           0 :           SgExpression* expression = isSgExpression(result);
   42857           0 :           if (isSgExpression(this) != NULL)
   42858             :              {
   42859           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   42860             : 
   42861             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   42862           0 :                if (operatorPosition != NULL)
   42863             :                   {
   42864             : #if 0
   42865             :                  // Debugging information
   42866             :                     if (operatorPosition->get_parent() == NULL)
   42867             :                        {
   42868             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42869             :                        }
   42870             : #endif
   42871           0 :                     operatorPosition->set_parent(expression);
   42872           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   42873             :                   }
   42874             :              }
   42875             :         }
   42876             : 
   42877             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   42878           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   42879           0 :      if (initializedName != NULL)
   42880             :         {
   42881             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   42882           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   42883           0 :           ROSE_ASSERT(start != NULL);
   42884             : #if 0
   42885             :        // Debugging information
   42886             :           if (start->get_parent() == NULL)
   42887             :              {
   42888             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42889             :              }
   42890             : #endif
   42891           0 :           start->set_parent(initializedName);
   42892           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   42893             : 
   42894             : #if 0
   42895             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   42896             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   42897             : 
   42898             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   42899             :        // ROSE_ASSERT(end != NULL);
   42900             :           if (end == NULL)
   42901             :              {
   42902             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   42903             :              }
   42904             :             else
   42905             :              {
   42906             :                if (end->get_parent() == NULL)
   42907             :                   {
   42908             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   42909             :                   }
   42910             :                end->set_parent(initializedName);
   42911             :                ROSE_ASSERT(end->get_parent() != NULL);
   42912             :              }
   42913             : #endif
   42914             :         }
   42915             : 
   42916             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   42917           0 :      help.insertCopiedNodePair(this,result);
   42918             : 
   42919             :   // printf ("End of copy SgOmpAllocatorClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   42920             : 
   42921             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   42922             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   42923           0 :      help.decrementDepth();
   42924             : 
   42925             :   // Test if this is the root of the copy!
   42926           0 :      if (help.get_depth() == 0)
   42927             :         {
   42928             :        // This is the original calling node.
   42929             : 
   42930             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   42931             :        // printf ("Calling SgOmpAllocatorClause::fixupCopy() (from root of AST being copied) \n");
   42932             : #if ALT_FIXUP_COPY
   42933             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   42934           0 :           fixupCopy_scopes (result,help);
   42935           0 :           fixupCopy_symbols (result,help);
   42936           0 :           fixupCopy_references (result,help);
   42937             : #else
   42938             :           fixupCopy(result,help);
   42939             : #endif
   42940             :        // Allow this to be called recursively, so accumulate the state.
   42941             :        // Also, clear the state in the SgCopyHelp object.
   42942             :        // help.clearState();
   42943             :         }
   42944             : 
   42945           0 :      return result;
   42946             :    }
   42947             : 
   42948             : 
   42949             : /* #line 42950 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   42950             : 
   42951             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   42952             : 
   42953           0 : SgNode* SgOmpAtomicClause::copy ( SgCopyHelp& help) const
   42954             :    {
   42955           0 :      SgOmpAtomicClause* result = NULL;
   42956             : 
   42957             :   // printf ("Copy SgOmpAtomicClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   42958             : 
   42959             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   42960             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   42961             :   // The default value of the depth is 0, so after this call the depth is 1!
   42962           0 :      help.incrementDepth();
   42963             : 
   42964             : #if 0
   42965             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   42966             :   // but it is not generally true that things can only be copied once!
   42967             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   42968             :   // AstAttribute* existingAttribute = const_cast<SgOmpAtomicClause*>(this)->attribute["copied"];
   42969             :      bool previouslyCopied = const_cast<SgOmpAtomicClause*>(this)->attribute.exists("copied");
   42970             :      if (previouslyCopied == true)
   42971             :         {
   42972             :           this->get_file_info()->display("Called from copy SgOmpAtomicClause: debug");
   42973             :         }
   42974             :      ROSE_ASSERT(previouslyCopied == false);
   42975             : 
   42976             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   42977             :      AstAttribute* newAttribute = new AstAttribute();
   42978             :      ROSE_ASSERT(newAttribute != NULL);
   42979             : 
   42980             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   42981             :      const_cast<SgOmpAtomicClause*>(this)->attribute.add("copied",newAttribute);
   42982             : #endif
   42983             : 
   42984             :   // Copy data members from base classes
   42985             :   // Copy constructor parameter data member: startOfConstruct_copy
   42986             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   42987             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   42988           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   42989           0 :      if ( p_startOfConstruct != NULL ) 
   42990             :         { 
   42991           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   42992             :         } 
   42993             :        else 
   42994             :         { 
   42995             :           startOfConstruct_copy = NULL; 
   42996             :         } 
   42997             :   // Copy constructor parameter data member: atomicity_copy
   42998             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for atomicity
   42999             :   // case: toBeCopied == COPY_DATA for atomicity
   43000           0 :      SgOmpClause::omp_atomic_clause_enum atomicity_copy = p_atomicity; 
   43001             :  
   43002             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43003             : 
   43004             :   // Build an empty copy of this object (will be filled in, but 
   43005             :   // the parent can't be set and must be set by the caller)
   43006           0 :      result = new SgOmpAtomicClause(  startOfConstruct_copy, atomicity_copy );
   43007           0 :      ROSE_ASSERT(result != NULL);
   43008             : 
   43009             :   // Copy data members of "this" class
   43010             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   43011             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   43012             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   43013           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   43014           0 :      if ( p_endOfConstruct != NULL ) 
   43015             :         { 
   43016           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   43017             :         } 
   43018             :        else 
   43019             :         { 
   43020             :           endOfConstruct_copy = NULL; 
   43021             :         } 
   43022             :   /* check for a valid pointer and delete if present */ 
   43023           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   43024             :   /* add assignment to result here */ 
   43025           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   43026             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   43027             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   43028             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   43029           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   43030           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   43031             :         { 
   43032           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   43033             :         } 
   43034             :        else 
   43035             :         { 
   43036             :           attachedPreprocessingInfoPtr_copy = NULL; 
   43037             :         } 
   43038             :   /* check for a valid pointer and delete if present */ 
   43039           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   43040             :   /* add assignment to result here */ 
   43041           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   43042             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   43043             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   43044             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   43045           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   43046           0 :      if ( p_attributeMechanism != NULL ) 
   43047             :         { 
   43048           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   43049             :         } 
   43050             :        else 
   43051             :         { 
   43052             :           attributeMechanism_copy = NULL; 
   43053             :         } 
   43054             :   /* check for a valid pointer and delete if present */ 
   43055           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   43056             :   /* add assignment to result here */ 
   43057           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   43058             : 
   43059             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43060             : 
   43061             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   43062             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   43063             :   // fixupCopy(result,help);
   43064             : 
   43065             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   43066             :   // the Sg_File_Info objects that are built for the new IR nodes.
   43067           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   43068           0 :      if (locatedNode != NULL)
   43069             :         {
   43070             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   43071           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   43072           0 :           ROSE_ASSERT(start != NULL);
   43073             : #if 0
   43074             :        // Debugging information
   43075             :           if (start->get_parent() == NULL)
   43076             :              {
   43077             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43078             :              }
   43079             : #endif
   43080           0 :           start->set_parent(locatedNode);
   43081           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   43082             : 
   43083           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   43084             : 
   43085             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   43086             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   43087             :        // ROSE_ASSERT(end != NULL);
   43088           0 :           if (end == NULL)
   43089             :              {
   43090           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   43091             :              }
   43092             :             else
   43093             :              {
   43094             : #if 0
   43095             :             // Debugging information
   43096             :                if (end->get_parent() == NULL)
   43097             :                   {
   43098             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43099             :                   }
   43100             : #endif
   43101           0 :                end->set_parent(locatedNode);
   43102           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   43103             :              }
   43104             : 
   43105           0 :           SgExpression* expression = isSgExpression(result);
   43106           0 :           if (isSgExpression(this) != NULL)
   43107             :              {
   43108           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   43109             : 
   43110             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   43111           0 :                if (operatorPosition != NULL)
   43112             :                   {
   43113             : #if 0
   43114             :                  // Debugging information
   43115             :                     if (operatorPosition->get_parent() == NULL)
   43116             :                        {
   43117             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43118             :                        }
   43119             : #endif
   43120           0 :                     operatorPosition->set_parent(expression);
   43121           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   43122             :                   }
   43123             :              }
   43124             :         }
   43125             : 
   43126             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   43127           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   43128           0 :      if (initializedName != NULL)
   43129             :         {
   43130             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   43131           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   43132           0 :           ROSE_ASSERT(start != NULL);
   43133             : #if 0
   43134             :        // Debugging information
   43135             :           if (start->get_parent() == NULL)
   43136             :              {
   43137             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43138             :              }
   43139             : #endif
   43140           0 :           start->set_parent(initializedName);
   43141           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   43142             : 
   43143             : #if 0
   43144             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   43145             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   43146             : 
   43147             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   43148             :        // ROSE_ASSERT(end != NULL);
   43149             :           if (end == NULL)
   43150             :              {
   43151             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   43152             :              }
   43153             :             else
   43154             :              {
   43155             :                if (end->get_parent() == NULL)
   43156             :                   {
   43157             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43158             :                   }
   43159             :                end->set_parent(initializedName);
   43160             :                ROSE_ASSERT(end->get_parent() != NULL);
   43161             :              }
   43162             : #endif
   43163             :         }
   43164             : 
   43165             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   43166           0 :      help.insertCopiedNodePair(this,result);
   43167             : 
   43168             :   // printf ("End of copy SgOmpAtomicClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   43169             : 
   43170             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   43171             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   43172           0 :      help.decrementDepth();
   43173             : 
   43174             :   // Test if this is the root of the copy!
   43175           0 :      if (help.get_depth() == 0)
   43176             :         {
   43177             :        // This is the original calling node.
   43178             : 
   43179             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   43180             :        // printf ("Calling SgOmpAtomicClause::fixupCopy() (from root of AST being copied) \n");
   43181             : #if ALT_FIXUP_COPY
   43182             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   43183           0 :           fixupCopy_scopes (result,help);
   43184           0 :           fixupCopy_symbols (result,help);
   43185           0 :           fixupCopy_references (result,help);
   43186             : #else
   43187             :           fixupCopy(result,help);
   43188             : #endif
   43189             :        // Allow this to be called recursively, so accumulate the state.
   43190             :        // Also, clear the state in the SgCopyHelp object.
   43191             :        // help.clearState();
   43192             :         }
   43193             : 
   43194           0 :      return result;
   43195             :    }
   43196             : 
   43197             : 
   43198             : /* #line 43199 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   43199             : 
   43200             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43201             : 
   43202           0 : SgNode* SgOmpProcBindClause::copy ( SgCopyHelp& help) const
   43203             :    {
   43204           0 :      SgOmpProcBindClause* result = NULL;
   43205             : 
   43206             :   // printf ("Copy SgOmpProcBindClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   43207             : 
   43208             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   43209             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   43210             :   // The default value of the depth is 0, so after this call the depth is 1!
   43211           0 :      help.incrementDepth();
   43212             : 
   43213             : #if 0
   43214             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   43215             :   // but it is not generally true that things can only be copied once!
   43216             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   43217             :   // AstAttribute* existingAttribute = const_cast<SgOmpProcBindClause*>(this)->attribute["copied"];
   43218             :      bool previouslyCopied = const_cast<SgOmpProcBindClause*>(this)->attribute.exists("copied");
   43219             :      if (previouslyCopied == true)
   43220             :         {
   43221             :           this->get_file_info()->display("Called from copy SgOmpProcBindClause: debug");
   43222             :         }
   43223             :      ROSE_ASSERT(previouslyCopied == false);
   43224             : 
   43225             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   43226             :      AstAttribute* newAttribute = new AstAttribute();
   43227             :      ROSE_ASSERT(newAttribute != NULL);
   43228             : 
   43229             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   43230             :      const_cast<SgOmpProcBindClause*>(this)->attribute.add("copied",newAttribute);
   43231             : #endif
   43232             : 
   43233             :   // Copy data members from base classes
   43234             :   // Copy constructor parameter data member: startOfConstruct_copy
   43235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   43236             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   43237           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   43238           0 :      if ( p_startOfConstruct != NULL ) 
   43239             :         { 
   43240           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   43241             :         } 
   43242             :        else 
   43243             :         { 
   43244             :           startOfConstruct_copy = NULL; 
   43245             :         } 
   43246             :   // Copy constructor parameter data member: policy_copy
   43247             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for policy
   43248             :   // case: toBeCopied == COPY_DATA for policy
   43249           0 :      SgOmpClause::omp_proc_bind_policy_enum policy_copy = p_policy; 
   43250             :  
   43251             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43252             : 
   43253             :   // Build an empty copy of this object (will be filled in, but 
   43254             :   // the parent can't be set and must be set by the caller)
   43255           0 :      result = new SgOmpProcBindClause(  startOfConstruct_copy, policy_copy );
   43256           0 :      ROSE_ASSERT(result != NULL);
   43257             : 
   43258             :   // Copy data members of "this" class
   43259             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   43260             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   43261             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   43262           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   43263           0 :      if ( p_endOfConstruct != NULL ) 
   43264             :         { 
   43265           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   43266             :         } 
   43267             :        else 
   43268             :         { 
   43269             :           endOfConstruct_copy = NULL; 
   43270             :         } 
   43271             :   /* check for a valid pointer and delete if present */ 
   43272           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   43273             :   /* add assignment to result here */ 
   43274           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   43275             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   43276             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   43277             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   43278           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   43279           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   43280             :         { 
   43281           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   43282             :         } 
   43283             :        else 
   43284             :         { 
   43285             :           attachedPreprocessingInfoPtr_copy = NULL; 
   43286             :         } 
   43287             :   /* check for a valid pointer and delete if present */ 
   43288           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   43289             :   /* add assignment to result here */ 
   43290           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   43291             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   43292             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   43293             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   43294           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   43295           0 :      if ( p_attributeMechanism != NULL ) 
   43296             :         { 
   43297           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   43298             :         } 
   43299             :        else 
   43300             :         { 
   43301             :           attributeMechanism_copy = NULL; 
   43302             :         } 
   43303             :   /* check for a valid pointer and delete if present */ 
   43304           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   43305             :   /* add assignment to result here */ 
   43306           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   43307             : 
   43308             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43309             : 
   43310             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   43311             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   43312             :   // fixupCopy(result,help);
   43313             : 
   43314             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   43315             :   // the Sg_File_Info objects that are built for the new IR nodes.
   43316           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   43317           0 :      if (locatedNode != NULL)
   43318             :         {
   43319             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   43320           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   43321           0 :           ROSE_ASSERT(start != NULL);
   43322             : #if 0
   43323             :        // Debugging information
   43324             :           if (start->get_parent() == NULL)
   43325             :              {
   43326             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43327             :              }
   43328             : #endif
   43329           0 :           start->set_parent(locatedNode);
   43330           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   43331             : 
   43332           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   43333             : 
   43334             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   43335             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   43336             :        // ROSE_ASSERT(end != NULL);
   43337           0 :           if (end == NULL)
   43338             :              {
   43339           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   43340             :              }
   43341             :             else
   43342             :              {
   43343             : #if 0
   43344             :             // Debugging information
   43345             :                if (end->get_parent() == NULL)
   43346             :                   {
   43347             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43348             :                   }
   43349             : #endif
   43350           0 :                end->set_parent(locatedNode);
   43351           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   43352             :              }
   43353             : 
   43354           0 :           SgExpression* expression = isSgExpression(result);
   43355           0 :           if (isSgExpression(this) != NULL)
   43356             :              {
   43357           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   43358             : 
   43359             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   43360           0 :                if (operatorPosition != NULL)
   43361             :                   {
   43362             : #if 0
   43363             :                  // Debugging information
   43364             :                     if (operatorPosition->get_parent() == NULL)
   43365             :                        {
   43366             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43367             :                        }
   43368             : #endif
   43369           0 :                     operatorPosition->set_parent(expression);
   43370           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   43371             :                   }
   43372             :              }
   43373             :         }
   43374             : 
   43375             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   43376           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   43377           0 :      if (initializedName != NULL)
   43378             :         {
   43379             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   43380           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   43381           0 :           ROSE_ASSERT(start != NULL);
   43382             : #if 0
   43383             :        // Debugging information
   43384             :           if (start->get_parent() == NULL)
   43385             :              {
   43386             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43387             :              }
   43388             : #endif
   43389           0 :           start->set_parent(initializedName);
   43390           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   43391             : 
   43392             : #if 0
   43393             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   43394             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   43395             : 
   43396             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   43397             :        // ROSE_ASSERT(end != NULL);
   43398             :           if (end == NULL)
   43399             :              {
   43400             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   43401             :              }
   43402             :             else
   43403             :              {
   43404             :                if (end->get_parent() == NULL)
   43405             :                   {
   43406             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43407             :                   }
   43408             :                end->set_parent(initializedName);
   43409             :                ROSE_ASSERT(end->get_parent() != NULL);
   43410             :              }
   43411             : #endif
   43412             :         }
   43413             : 
   43414             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   43415           0 :      help.insertCopiedNodePair(this,result);
   43416             : 
   43417             :   // printf ("End of copy SgOmpProcBindClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   43418             : 
   43419             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   43420             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   43421           0 :      help.decrementDepth();
   43422             : 
   43423             :   // Test if this is the root of the copy!
   43424           0 :      if (help.get_depth() == 0)
   43425             :         {
   43426             :        // This is the original calling node.
   43427             : 
   43428             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   43429             :        // printf ("Calling SgOmpProcBindClause::fixupCopy() (from root of AST being copied) \n");
   43430             : #if ALT_FIXUP_COPY
   43431             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   43432           0 :           fixupCopy_scopes (result,help);
   43433           0 :           fixupCopy_symbols (result,help);
   43434           0 :           fixupCopy_references (result,help);
   43435             : #else
   43436             :           fixupCopy(result,help);
   43437             : #endif
   43438             :        // Allow this to be called recursively, so accumulate the state.
   43439             :        // Also, clear the state in the SgCopyHelp object.
   43440             :        // help.clearState();
   43441             :         }
   43442             : 
   43443           0 :      return result;
   43444             :    }
   43445             : 
   43446             : 
   43447             : /* #line 43448 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   43448             : 
   43449             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43450             : 
   43451           0 : SgNode* SgOmpBindClause::copy ( SgCopyHelp& help) const
   43452             :    {
   43453           0 :      SgOmpBindClause* result = NULL;
   43454             : 
   43455             :   // printf ("Copy SgOmpBindClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   43456             : 
   43457             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   43458             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   43459             :   // The default value of the depth is 0, so after this call the depth is 1!
   43460           0 :      help.incrementDepth();
   43461             : 
   43462             : #if 0
   43463             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   43464             :   // but it is not generally true that things can only be copied once!
   43465             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   43466             :   // AstAttribute* existingAttribute = const_cast<SgOmpBindClause*>(this)->attribute["copied"];
   43467             :      bool previouslyCopied = const_cast<SgOmpBindClause*>(this)->attribute.exists("copied");
   43468             :      if (previouslyCopied == true)
   43469             :         {
   43470             :           this->get_file_info()->display("Called from copy SgOmpBindClause: debug");
   43471             :         }
   43472             :      ROSE_ASSERT(previouslyCopied == false);
   43473             : 
   43474             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   43475             :      AstAttribute* newAttribute = new AstAttribute();
   43476             :      ROSE_ASSERT(newAttribute != NULL);
   43477             : 
   43478             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   43479             :      const_cast<SgOmpBindClause*>(this)->attribute.add("copied",newAttribute);
   43480             : #endif
   43481             : 
   43482             :   // Copy data members from base classes
   43483             :   // Copy constructor parameter data member: startOfConstruct_copy
   43484             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   43485             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   43486           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   43487           0 :      if ( p_startOfConstruct != NULL ) 
   43488             :         { 
   43489           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   43490             :         } 
   43491             :        else 
   43492             :         { 
   43493             :           startOfConstruct_copy = NULL; 
   43494             :         } 
   43495             :   // Copy constructor parameter data member: binding_copy
   43496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding
   43497             :   // case: toBeCopied == COPY_DATA for binding
   43498           0 :      SgOmpClause::omp_bind_binding_enum binding_copy = p_binding; 
   43499             :  
   43500             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43501             : 
   43502             :   // Build an empty copy of this object (will be filled in, but 
   43503             :   // the parent can't be set and must be set by the caller)
   43504           0 :      result = new SgOmpBindClause(  startOfConstruct_copy, binding_copy );
   43505           0 :      ROSE_ASSERT(result != NULL);
   43506             : 
   43507             :   // Copy data members of "this" class
   43508             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   43509             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   43510             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   43511           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   43512           0 :      if ( p_endOfConstruct != NULL ) 
   43513             :         { 
   43514           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   43515             :         } 
   43516             :        else 
   43517             :         { 
   43518             :           endOfConstruct_copy = NULL; 
   43519             :         } 
   43520             :   /* check for a valid pointer and delete if present */ 
   43521           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   43522             :   /* add assignment to result here */ 
   43523           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   43524             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   43525             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   43526             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   43527           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   43528           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   43529             :         { 
   43530           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   43531             :         } 
   43532             :        else 
   43533             :         { 
   43534             :           attachedPreprocessingInfoPtr_copy = NULL; 
   43535             :         } 
   43536             :   /* check for a valid pointer and delete if present */ 
   43537           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   43538             :   /* add assignment to result here */ 
   43539           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   43540             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   43541             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   43542             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   43543           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   43544           0 :      if ( p_attributeMechanism != NULL ) 
   43545             :         { 
   43546           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   43547             :         } 
   43548             :        else 
   43549             :         { 
   43550             :           attributeMechanism_copy = NULL; 
   43551             :         } 
   43552             :   /* check for a valid pointer and delete if present */ 
   43553           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   43554             :   /* add assignment to result here */ 
   43555           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   43556             : 
   43557             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43558             : 
   43559             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   43560             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   43561             :   // fixupCopy(result,help);
   43562             : 
   43563             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   43564             :   // the Sg_File_Info objects that are built for the new IR nodes.
   43565           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   43566           0 :      if (locatedNode != NULL)
   43567             :         {
   43568             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   43569           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   43570           0 :           ROSE_ASSERT(start != NULL);
   43571             : #if 0
   43572             :        // Debugging information
   43573             :           if (start->get_parent() == NULL)
   43574             :              {
   43575             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43576             :              }
   43577             : #endif
   43578           0 :           start->set_parent(locatedNode);
   43579           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   43580             : 
   43581           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   43582             : 
   43583             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   43584             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   43585             :        // ROSE_ASSERT(end != NULL);
   43586           0 :           if (end == NULL)
   43587             :              {
   43588           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   43589             :              }
   43590             :             else
   43591             :              {
   43592             : #if 0
   43593             :             // Debugging information
   43594             :                if (end->get_parent() == NULL)
   43595             :                   {
   43596             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43597             :                   }
   43598             : #endif
   43599           0 :                end->set_parent(locatedNode);
   43600           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   43601             :              }
   43602             : 
   43603           0 :           SgExpression* expression = isSgExpression(result);
   43604           0 :           if (isSgExpression(this) != NULL)
   43605             :              {
   43606           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   43607             : 
   43608             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   43609           0 :                if (operatorPosition != NULL)
   43610             :                   {
   43611             : #if 0
   43612             :                  // Debugging information
   43613             :                     if (operatorPosition->get_parent() == NULL)
   43614             :                        {
   43615             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43616             :                        }
   43617             : #endif
   43618           0 :                     operatorPosition->set_parent(expression);
   43619           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   43620             :                   }
   43621             :              }
   43622             :         }
   43623             : 
   43624             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   43625           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   43626           0 :      if (initializedName != NULL)
   43627             :         {
   43628             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   43629           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   43630           0 :           ROSE_ASSERT(start != NULL);
   43631             : #if 0
   43632             :        // Debugging information
   43633             :           if (start->get_parent() == NULL)
   43634             :              {
   43635             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43636             :              }
   43637             : #endif
   43638           0 :           start->set_parent(initializedName);
   43639           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   43640             : 
   43641             : #if 0
   43642             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   43643             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   43644             : 
   43645             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   43646             :        // ROSE_ASSERT(end != NULL);
   43647             :           if (end == NULL)
   43648             :              {
   43649             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   43650             :              }
   43651             :             else
   43652             :              {
   43653             :                if (end->get_parent() == NULL)
   43654             :                   {
   43655             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43656             :                   }
   43657             :                end->set_parent(initializedName);
   43658             :                ROSE_ASSERT(end->get_parent() != NULL);
   43659             :              }
   43660             : #endif
   43661             :         }
   43662             : 
   43663             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   43664           0 :      help.insertCopiedNodePair(this,result);
   43665             : 
   43666             :   // printf ("End of copy SgOmpBindClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   43667             : 
   43668             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   43669             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   43670           0 :      help.decrementDepth();
   43671             : 
   43672             :   // Test if this is the root of the copy!
   43673           0 :      if (help.get_depth() == 0)
   43674             :         {
   43675             :        // This is the original calling node.
   43676             : 
   43677             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   43678             :        // printf ("Calling SgOmpBindClause::fixupCopy() (from root of AST being copied) \n");
   43679             : #if ALT_FIXUP_COPY
   43680             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   43681           0 :           fixupCopy_scopes (result,help);
   43682           0 :           fixupCopy_symbols (result,help);
   43683           0 :           fixupCopy_references (result,help);
   43684             : #else
   43685             :           fixupCopy(result,help);
   43686             : #endif
   43687             :        // Allow this to be called recursively, so accumulate the state.
   43688             :        // Also, clear the state in the SgCopyHelp object.
   43689             :        // help.clearState();
   43690             :         }
   43691             : 
   43692           0 :      return result;
   43693             :    }
   43694             : 
   43695             : 
   43696             : /* #line 43697 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   43697             : 
   43698             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43699             : 
   43700           0 : SgNode* SgOmpOrderClause::copy ( SgCopyHelp& help) const
   43701             :    {
   43702           0 :      SgOmpOrderClause* result = NULL;
   43703             : 
   43704             :   // printf ("Copy SgOmpOrderClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   43705             : 
   43706             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   43707             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   43708             :   // The default value of the depth is 0, so after this call the depth is 1!
   43709           0 :      help.incrementDepth();
   43710             : 
   43711             : #if 0
   43712             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   43713             :   // but it is not generally true that things can only be copied once!
   43714             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   43715             :   // AstAttribute* existingAttribute = const_cast<SgOmpOrderClause*>(this)->attribute["copied"];
   43716             :      bool previouslyCopied = const_cast<SgOmpOrderClause*>(this)->attribute.exists("copied");
   43717             :      if (previouslyCopied == true)
   43718             :         {
   43719             :           this->get_file_info()->display("Called from copy SgOmpOrderClause: debug");
   43720             :         }
   43721             :      ROSE_ASSERT(previouslyCopied == false);
   43722             : 
   43723             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   43724             :      AstAttribute* newAttribute = new AstAttribute();
   43725             :      ROSE_ASSERT(newAttribute != NULL);
   43726             : 
   43727             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   43728             :      const_cast<SgOmpOrderClause*>(this)->attribute.add("copied",newAttribute);
   43729             : #endif
   43730             : 
   43731             :   // Copy data members from base classes
   43732             :   // Copy constructor parameter data member: startOfConstruct_copy
   43733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   43734             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   43735           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   43736           0 :      if ( p_startOfConstruct != NULL ) 
   43737             :         { 
   43738           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   43739             :         } 
   43740             :        else 
   43741             :         { 
   43742             :           startOfConstruct_copy = NULL; 
   43743             :         } 
   43744             :   // Copy constructor parameter data member: kind_copy
   43745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for kind
   43746             :   // case: toBeCopied == COPY_DATA for kind
   43747           0 :      SgOmpClause::omp_order_kind_enum kind_copy = p_kind; 
   43748             :  
   43749             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43750             : 
   43751             :   // Build an empty copy of this object (will be filled in, but 
   43752             :   // the parent can't be set and must be set by the caller)
   43753           0 :      result = new SgOmpOrderClause(  startOfConstruct_copy, kind_copy );
   43754           0 :      ROSE_ASSERT(result != NULL);
   43755             : 
   43756             :   // Copy data members of "this" class
   43757             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   43758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   43759             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   43760           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   43761           0 :      if ( p_endOfConstruct != NULL ) 
   43762             :         { 
   43763           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   43764             :         } 
   43765             :        else 
   43766             :         { 
   43767             :           endOfConstruct_copy = NULL; 
   43768             :         } 
   43769             :   /* check for a valid pointer and delete if present */ 
   43770           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   43771             :   /* add assignment to result here */ 
   43772           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   43773             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   43774             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   43775             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   43776           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   43777           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   43778             :         { 
   43779           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   43780             :         } 
   43781             :        else 
   43782             :         { 
   43783             :           attachedPreprocessingInfoPtr_copy = NULL; 
   43784             :         } 
   43785             :   /* check for a valid pointer and delete if present */ 
   43786           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   43787             :   /* add assignment to result here */ 
   43788           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   43789             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   43790             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   43791             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   43792           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   43793           0 :      if ( p_attributeMechanism != NULL ) 
   43794             :         { 
   43795           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   43796             :         } 
   43797             :        else 
   43798             :         { 
   43799             :           attributeMechanism_copy = NULL; 
   43800             :         } 
   43801             :   /* check for a valid pointer and delete if present */ 
   43802           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   43803             :   /* add assignment to result here */ 
   43804           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   43805             : 
   43806             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43807             : 
   43808             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   43809             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   43810             :   // fixupCopy(result,help);
   43811             : 
   43812             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   43813             :   // the Sg_File_Info objects that are built for the new IR nodes.
   43814           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   43815           0 :      if (locatedNode != NULL)
   43816             :         {
   43817             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   43818           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   43819           0 :           ROSE_ASSERT(start != NULL);
   43820             : #if 0
   43821             :        // Debugging information
   43822             :           if (start->get_parent() == NULL)
   43823             :              {
   43824             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43825             :              }
   43826             : #endif
   43827           0 :           start->set_parent(locatedNode);
   43828           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   43829             : 
   43830           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   43831             : 
   43832             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   43833             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   43834             :        // ROSE_ASSERT(end != NULL);
   43835           0 :           if (end == NULL)
   43836             :              {
   43837           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   43838             :              }
   43839             :             else
   43840             :              {
   43841             : #if 0
   43842             :             // Debugging information
   43843             :                if (end->get_parent() == NULL)
   43844             :                   {
   43845             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43846             :                   }
   43847             : #endif
   43848           0 :                end->set_parent(locatedNode);
   43849           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   43850             :              }
   43851             : 
   43852           0 :           SgExpression* expression = isSgExpression(result);
   43853           0 :           if (isSgExpression(this) != NULL)
   43854             :              {
   43855           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   43856             : 
   43857             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   43858           0 :                if (operatorPosition != NULL)
   43859             :                   {
   43860             : #if 0
   43861             :                  // Debugging information
   43862             :                     if (operatorPosition->get_parent() == NULL)
   43863             :                        {
   43864             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43865             :                        }
   43866             : #endif
   43867           0 :                     operatorPosition->set_parent(expression);
   43868           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   43869             :                   }
   43870             :              }
   43871             :         }
   43872             : 
   43873             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   43874           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   43875           0 :      if (initializedName != NULL)
   43876             :         {
   43877             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   43878           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   43879           0 :           ROSE_ASSERT(start != NULL);
   43880             : #if 0
   43881             :        // Debugging information
   43882             :           if (start->get_parent() == NULL)
   43883             :              {
   43884             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43885             :              }
   43886             : #endif
   43887           0 :           start->set_parent(initializedName);
   43888           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   43889             : 
   43890             : #if 0
   43891             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   43892             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   43893             : 
   43894             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   43895             :        // ROSE_ASSERT(end != NULL);
   43896             :           if (end == NULL)
   43897             :              {
   43898             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   43899             :              }
   43900             :             else
   43901             :              {
   43902             :                if (end->get_parent() == NULL)
   43903             :                   {
   43904             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   43905             :                   }
   43906             :                end->set_parent(initializedName);
   43907             :                ROSE_ASSERT(end->get_parent() != NULL);
   43908             :              }
   43909             : #endif
   43910             :         }
   43911             : 
   43912             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   43913           0 :      help.insertCopiedNodePair(this,result);
   43914             : 
   43915             :   // printf ("End of copy SgOmpOrderClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   43916             : 
   43917             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   43918             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   43919           0 :      help.decrementDepth();
   43920             : 
   43921             :   // Test if this is the root of the copy!
   43922           0 :      if (help.get_depth() == 0)
   43923             :         {
   43924             :        // This is the original calling node.
   43925             : 
   43926             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   43927             :        // printf ("Calling SgOmpOrderClause::fixupCopy() (from root of AST being copied) \n");
   43928             : #if ALT_FIXUP_COPY
   43929             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   43930           0 :           fixupCopy_scopes (result,help);
   43931           0 :           fixupCopy_symbols (result,help);
   43932           0 :           fixupCopy_references (result,help);
   43933             : #else
   43934             :           fixupCopy(result,help);
   43935             : #endif
   43936             :        // Allow this to be called recursively, so accumulate the state.
   43937             :        // Also, clear the state in the SgCopyHelp object.
   43938             :        // help.clearState();
   43939             :         }
   43940             : 
   43941           0 :      return result;
   43942             :    }
   43943             : 
   43944             : 
   43945             : /* #line 43946 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   43946             : 
   43947             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   43948             : 
   43949           0 : SgNode* SgOmpDistScheduleClause::copy ( SgCopyHelp& help) const
   43950             :    {
   43951           0 :      SgOmpDistScheduleClause* result = NULL;
   43952             : 
   43953             :   // printf ("Copy SgOmpDistScheduleClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   43954             : 
   43955             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   43956             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   43957             :   // The default value of the depth is 0, so after this call the depth is 1!
   43958           0 :      help.incrementDepth();
   43959             : 
   43960             : #if 0
   43961             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   43962             :   // but it is not generally true that things can only be copied once!
   43963             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   43964             :   // AstAttribute* existingAttribute = const_cast<SgOmpDistScheduleClause*>(this)->attribute["copied"];
   43965             :      bool previouslyCopied = const_cast<SgOmpDistScheduleClause*>(this)->attribute.exists("copied");
   43966             :      if (previouslyCopied == true)
   43967             :         {
   43968             :           this->get_file_info()->display("Called from copy SgOmpDistScheduleClause: debug");
   43969             :         }
   43970             :      ROSE_ASSERT(previouslyCopied == false);
   43971             : 
   43972             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   43973             :      AstAttribute* newAttribute = new AstAttribute();
   43974             :      ROSE_ASSERT(newAttribute != NULL);
   43975             : 
   43976             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   43977             :      const_cast<SgOmpDistScheduleClause*>(this)->attribute.add("copied",newAttribute);
   43978             : #endif
   43979             : 
   43980             :   // Copy data members from base classes
   43981             :   // Copy constructor parameter data member: startOfConstruct_copy
   43982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   43983             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   43984           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   43985           0 :      if ( p_startOfConstruct != NULL ) 
   43986             :         { 
   43987           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   43988             :         } 
   43989             :        else 
   43990             :         { 
   43991             :           startOfConstruct_copy = NULL; 
   43992             :         } 
   43993             :   // Copy constructor parameter data member: kind_copy
   43994             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for kind
   43995             :   // case: toBeCopied == COPY_DATA for kind
   43996           0 :      SgOmpClause::omp_dist_schedule_kind_enum kind_copy = p_kind; 
   43997             :   // Copy constructor parameter data member: chunk_size_copy
   43998           0 :      SgExpression* chunk_size_copy; 
   43999             :   // case: not a listType for (using conditionalToCopyVariable)chunk_size
   44000           0 :           if (get_chunk_size() != NULL) 
   44001             :              { 
   44002           0 :                chunk_size_copy = static_cast<SgExpression*>(help.copyAst(get_chunk_size())); 
   44003             :              } 
   44004             :             else 
   44005             :              { 
   44006             :                chunk_size_copy = NULL; 
   44007             :              } 
   44008             :  
   44009             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44010             : 
   44011             :   // Build an empty copy of this object (will be filled in, but 
   44012             :   // the parent can't be set and must be set by the caller)
   44013           0 :      result = new SgOmpDistScheduleClause(  startOfConstruct_copy, kind_copy, chunk_size_copy );
   44014           0 :      ROSE_ASSERT(result != NULL);
   44015             : 
   44016             :   // Copy data members of "this" class
   44017             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   44018             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   44019             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   44020           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   44021           0 :      if ( p_endOfConstruct != NULL ) 
   44022             :         { 
   44023           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   44024             :         } 
   44025             :        else 
   44026             :         { 
   44027             :           endOfConstruct_copy = NULL; 
   44028             :         } 
   44029             :   /* check for a valid pointer and delete if present */ 
   44030           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   44031             :   /* add assignment to result here */ 
   44032           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   44033             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   44034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   44035             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   44036           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   44037           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   44038             :         { 
   44039           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   44040             :         } 
   44041             :        else 
   44042             :         { 
   44043             :           attachedPreprocessingInfoPtr_copy = NULL; 
   44044             :         } 
   44045             :   /* check for a valid pointer and delete if present */ 
   44046           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   44047             :   /* add assignment to result here */ 
   44048           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   44049             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   44050             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   44051             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   44052           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   44053           0 :      if ( p_attributeMechanism != NULL ) 
   44054             :         { 
   44055           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   44056             :         } 
   44057             :        else 
   44058             :         { 
   44059             :           attributeMechanism_copy = NULL; 
   44060             :         } 
   44061             :   /* check for a valid pointer and delete if present */ 
   44062           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   44063             :   /* add assignment to result here */ 
   44064           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   44065             :   // case: not a listType for (using conditionalToSetParent)chunk_size
   44066           0 :           if ( (chunk_size_copy != NULL) && (chunk_size_copy->get_parent() == NULL) && (isSgType(chunk_size_copy) == NULL) ) 
   44067             :              { 
   44068           0 :                chunk_size_copy->set_parent(result); 
   44069             :              } 
   44070             : 
   44071             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44072             : 
   44073             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   44074             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   44075             :   // fixupCopy(result,help);
   44076             : 
   44077             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   44078             :   // the Sg_File_Info objects that are built for the new IR nodes.
   44079           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   44080           0 :      if (locatedNode != NULL)
   44081             :         {
   44082             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   44083           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   44084           0 :           ROSE_ASSERT(start != NULL);
   44085             : #if 0
   44086             :        // Debugging information
   44087             :           if (start->get_parent() == NULL)
   44088             :              {
   44089             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44090             :              }
   44091             : #endif
   44092           0 :           start->set_parent(locatedNode);
   44093           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   44094             : 
   44095           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   44096             : 
   44097             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   44098             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   44099             :        // ROSE_ASSERT(end != NULL);
   44100           0 :           if (end == NULL)
   44101             :              {
   44102           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   44103             :              }
   44104             :             else
   44105             :              {
   44106             : #if 0
   44107             :             // Debugging information
   44108             :                if (end->get_parent() == NULL)
   44109             :                   {
   44110             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44111             :                   }
   44112             : #endif
   44113           0 :                end->set_parent(locatedNode);
   44114           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   44115             :              }
   44116             : 
   44117           0 :           SgExpression* expression = isSgExpression(result);
   44118           0 :           if (isSgExpression(this) != NULL)
   44119             :              {
   44120           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   44121             : 
   44122             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   44123           0 :                if (operatorPosition != NULL)
   44124             :                   {
   44125             : #if 0
   44126             :                  // Debugging information
   44127             :                     if (operatorPosition->get_parent() == NULL)
   44128             :                        {
   44129             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44130             :                        }
   44131             : #endif
   44132           0 :                     operatorPosition->set_parent(expression);
   44133           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   44134             :                   }
   44135             :              }
   44136             :         }
   44137             : 
   44138             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   44139           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   44140           0 :      if (initializedName != NULL)
   44141             :         {
   44142             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   44143           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   44144           0 :           ROSE_ASSERT(start != NULL);
   44145             : #if 0
   44146             :        // Debugging information
   44147             :           if (start->get_parent() == NULL)
   44148             :              {
   44149             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44150             :              }
   44151             : #endif
   44152           0 :           start->set_parent(initializedName);
   44153           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   44154             : 
   44155             : #if 0
   44156             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   44157             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   44158             : 
   44159             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   44160             :        // ROSE_ASSERT(end != NULL);
   44161             :           if (end == NULL)
   44162             :              {
   44163             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   44164             :              }
   44165             :             else
   44166             :              {
   44167             :                if (end->get_parent() == NULL)
   44168             :                   {
   44169             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44170             :                   }
   44171             :                end->set_parent(initializedName);
   44172             :                ROSE_ASSERT(end->get_parent() != NULL);
   44173             :              }
   44174             : #endif
   44175             :         }
   44176             : 
   44177             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   44178           0 :      help.insertCopiedNodePair(this,result);
   44179             : 
   44180             :   // printf ("End of copy SgOmpDistScheduleClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   44181             : 
   44182             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   44183             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   44184           0 :      help.decrementDepth();
   44185             : 
   44186             :   // Test if this is the root of the copy!
   44187           0 :      if (help.get_depth() == 0)
   44188             :         {
   44189             :        // This is the original calling node.
   44190             : 
   44191             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   44192             :        // printf ("Calling SgOmpDistScheduleClause::fixupCopy() (from root of AST being copied) \n");
   44193             : #if ALT_FIXUP_COPY
   44194             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   44195           0 :           fixupCopy_scopes (result,help);
   44196           0 :           fixupCopy_symbols (result,help);
   44197           0 :           fixupCopy_references (result,help);
   44198             : #else
   44199             :           fixupCopy(result,help);
   44200             : #endif
   44201             :        // Allow this to be called recursively, so accumulate the state.
   44202             :        // Also, clear the state in the SgCopyHelp object.
   44203             :        // help.clearState();
   44204             :         }
   44205             : 
   44206           0 :      return result;
   44207             :    }
   44208             : 
   44209             : 
   44210             : /* #line 44211 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   44211             : 
   44212             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44213             : 
   44214           0 : SgNode* SgOmpExpressionClause::copy ( SgCopyHelp& help) const
   44215             :    {
   44216           0 :      SgOmpExpressionClause* result = NULL;
   44217             : 
   44218             :   // printf ("Copy SgOmpExpressionClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   44219             : 
   44220             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   44221             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   44222             :   // The default value of the depth is 0, so after this call the depth is 1!
   44223           0 :      help.incrementDepth();
   44224             : 
   44225             : #if 0
   44226             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   44227             :   // but it is not generally true that things can only be copied once!
   44228             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   44229             :   // AstAttribute* existingAttribute = const_cast<SgOmpExpressionClause*>(this)->attribute["copied"];
   44230             :      bool previouslyCopied = const_cast<SgOmpExpressionClause*>(this)->attribute.exists("copied");
   44231             :      if (previouslyCopied == true)
   44232             :         {
   44233             :           this->get_file_info()->display("Called from copy SgOmpExpressionClause: debug");
   44234             :         }
   44235             :      ROSE_ASSERT(previouslyCopied == false);
   44236             : 
   44237             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   44238             :      AstAttribute* newAttribute = new AstAttribute();
   44239             :      ROSE_ASSERT(newAttribute != NULL);
   44240             : 
   44241             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   44242             :      const_cast<SgOmpExpressionClause*>(this)->attribute.add("copied",newAttribute);
   44243             : #endif
   44244             : 
   44245             :   // Copy data members from base classes
   44246             :   // Copy constructor parameter data member: startOfConstruct_copy
   44247             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   44248             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   44249           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   44250           0 :      if ( p_startOfConstruct != NULL ) 
   44251             :         { 
   44252           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   44253             :         } 
   44254             :        else 
   44255             :         { 
   44256             :           startOfConstruct_copy = NULL; 
   44257             :         } 
   44258             :   // Copy constructor parameter data member: expression_copy
   44259           0 :      SgExpression* expression_copy; 
   44260             :   // case: not a listType for (using conditionalToCopyVariable)expression
   44261           0 :           if (get_expression() != NULL) 
   44262             :              { 
   44263           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   44264             :              } 
   44265             :             else 
   44266             :              { 
   44267             :                expression_copy = NULL; 
   44268             :              } 
   44269             :  
   44270             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44271             : 
   44272             :   // Build an empty copy of this object (will be filled in, but 
   44273             :   // the parent can't be set and must be set by the caller)
   44274           0 :      result = new SgOmpExpressionClause(  startOfConstruct_copy, expression_copy );
   44275           0 :      ROSE_ASSERT(result != NULL);
   44276             : 
   44277             :   // Copy data members of "this" class
   44278             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   44279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   44280             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   44281           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   44282           0 :      if ( p_endOfConstruct != NULL ) 
   44283             :         { 
   44284           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   44285             :         } 
   44286             :        else 
   44287             :         { 
   44288             :           endOfConstruct_copy = NULL; 
   44289             :         } 
   44290             :   /* check for a valid pointer and delete if present */ 
   44291           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   44292             :   /* add assignment to result here */ 
   44293           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   44294             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   44295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   44296             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   44297           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   44298           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   44299             :         { 
   44300           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   44301             :         } 
   44302             :        else 
   44303             :         { 
   44304             :           attachedPreprocessingInfoPtr_copy = NULL; 
   44305             :         } 
   44306             :   /* check for a valid pointer and delete if present */ 
   44307           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   44308             :   /* add assignment to result here */ 
   44309           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   44310             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   44311             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   44312             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   44313           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   44314           0 :      if ( p_attributeMechanism != NULL ) 
   44315             :         { 
   44316           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   44317             :         } 
   44318             :        else 
   44319             :         { 
   44320             :           attributeMechanism_copy = NULL; 
   44321             :         } 
   44322             :   /* check for a valid pointer and delete if present */ 
   44323           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   44324             :   /* add assignment to result here */ 
   44325           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   44326             :   // case: not a listType for (using conditionalToSetParent)expression
   44327           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   44328             :              { 
   44329           0 :                expression_copy->set_parent(result); 
   44330             :              } 
   44331             : 
   44332             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44333             : 
   44334             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   44335             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   44336             :   // fixupCopy(result,help);
   44337             : 
   44338             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   44339             :   // the Sg_File_Info objects that are built for the new IR nodes.
   44340           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   44341           0 :      if (locatedNode != NULL)
   44342             :         {
   44343             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   44344           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   44345           0 :           ROSE_ASSERT(start != NULL);
   44346             : #if 0
   44347             :        // Debugging information
   44348             :           if (start->get_parent() == NULL)
   44349             :              {
   44350             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44351             :              }
   44352             : #endif
   44353           0 :           start->set_parent(locatedNode);
   44354           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   44355             : 
   44356           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   44357             : 
   44358             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   44359             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   44360             :        // ROSE_ASSERT(end != NULL);
   44361           0 :           if (end == NULL)
   44362             :              {
   44363           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   44364             :              }
   44365             :             else
   44366             :              {
   44367             : #if 0
   44368             :             // Debugging information
   44369             :                if (end->get_parent() == NULL)
   44370             :                   {
   44371             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44372             :                   }
   44373             : #endif
   44374           0 :                end->set_parent(locatedNode);
   44375           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   44376             :              }
   44377             : 
   44378           0 :           SgExpression* expression = isSgExpression(result);
   44379           0 :           if (isSgExpression(this) != NULL)
   44380             :              {
   44381           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   44382             : 
   44383             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   44384           0 :                if (operatorPosition != NULL)
   44385             :                   {
   44386             : #if 0
   44387             :                  // Debugging information
   44388             :                     if (operatorPosition->get_parent() == NULL)
   44389             :                        {
   44390             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44391             :                        }
   44392             : #endif
   44393           0 :                     operatorPosition->set_parent(expression);
   44394           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   44395             :                   }
   44396             :              }
   44397             :         }
   44398             : 
   44399             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   44400           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   44401           0 :      if (initializedName != NULL)
   44402             :         {
   44403             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   44404           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   44405           0 :           ROSE_ASSERT(start != NULL);
   44406             : #if 0
   44407             :        // Debugging information
   44408             :           if (start->get_parent() == NULL)
   44409             :              {
   44410             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44411             :              }
   44412             : #endif
   44413           0 :           start->set_parent(initializedName);
   44414           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   44415             : 
   44416             : #if 0
   44417             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   44418             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   44419             : 
   44420             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   44421             :        // ROSE_ASSERT(end != NULL);
   44422             :           if (end == NULL)
   44423             :              {
   44424             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   44425             :              }
   44426             :             else
   44427             :              {
   44428             :                if (end->get_parent() == NULL)
   44429             :                   {
   44430             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44431             :                   }
   44432             :                end->set_parent(initializedName);
   44433             :                ROSE_ASSERT(end->get_parent() != NULL);
   44434             :              }
   44435             : #endif
   44436             :         }
   44437             : 
   44438             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   44439           0 :      help.insertCopiedNodePair(this,result);
   44440             : 
   44441             :   // printf ("End of copy SgOmpExpressionClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   44442             : 
   44443             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   44444             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   44445           0 :      help.decrementDepth();
   44446             : 
   44447             :   // Test if this is the root of the copy!
   44448           0 :      if (help.get_depth() == 0)
   44449             :         {
   44450             :        // This is the original calling node.
   44451             : 
   44452             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   44453             :        // printf ("Calling SgOmpExpressionClause::fixupCopy() (from root of AST being copied) \n");
   44454             : #if ALT_FIXUP_COPY
   44455             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   44456           0 :           fixupCopy_scopes (result,help);
   44457           0 :           fixupCopy_symbols (result,help);
   44458           0 :           fixupCopy_references (result,help);
   44459             : #else
   44460             :           fixupCopy(result,help);
   44461             : #endif
   44462             :        // Allow this to be called recursively, so accumulate the state.
   44463             :        // Also, clear the state in the SgCopyHelp object.
   44464             :        // help.clearState();
   44465             :         }
   44466             : 
   44467           0 :      return result;
   44468             :    }
   44469             : 
   44470             : 
   44471             : /* #line 44472 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   44472             : 
   44473             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44474             : 
   44475           0 : SgNode* SgOmpOrderedClause::copy ( SgCopyHelp& help) const
   44476             :    {
   44477           0 :      SgOmpOrderedClause* result = NULL;
   44478             : 
   44479             :   // printf ("Copy SgOmpOrderedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   44480             : 
   44481             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   44482             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   44483             :   // The default value of the depth is 0, so after this call the depth is 1!
   44484           0 :      help.incrementDepth();
   44485             : 
   44486             : #if 0
   44487             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   44488             :   // but it is not generally true that things can only be copied once!
   44489             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   44490             :   // AstAttribute* existingAttribute = const_cast<SgOmpOrderedClause*>(this)->attribute["copied"];
   44491             :      bool previouslyCopied = const_cast<SgOmpOrderedClause*>(this)->attribute.exists("copied");
   44492             :      if (previouslyCopied == true)
   44493             :         {
   44494             :           this->get_file_info()->display("Called from copy SgOmpOrderedClause: debug");
   44495             :         }
   44496             :      ROSE_ASSERT(previouslyCopied == false);
   44497             : 
   44498             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   44499             :      AstAttribute* newAttribute = new AstAttribute();
   44500             :      ROSE_ASSERT(newAttribute != NULL);
   44501             : 
   44502             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   44503             :      const_cast<SgOmpOrderedClause*>(this)->attribute.add("copied",newAttribute);
   44504             : #endif
   44505             : 
   44506             :   // Copy data members from base classes
   44507             :   // Copy constructor parameter data member: startOfConstruct_copy
   44508             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   44509             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   44510           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   44511           0 :      if ( p_startOfConstruct != NULL ) 
   44512             :         { 
   44513           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   44514             :         } 
   44515             :        else 
   44516             :         { 
   44517             :           startOfConstruct_copy = NULL; 
   44518             :         } 
   44519             :   // Copy constructor parameter data member: expression_copy
   44520           0 :      SgExpression* expression_copy; 
   44521             :   // case: not a listType for (using conditionalToCopyVariable)expression
   44522           0 :           if (get_expression() != NULL) 
   44523             :              { 
   44524           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   44525             :              } 
   44526             :             else 
   44527             :              { 
   44528             :                expression_copy = NULL; 
   44529             :              } 
   44530             :  
   44531             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44532             : 
   44533             :   // Build an empty copy of this object (will be filled in, but 
   44534             :   // the parent can't be set and must be set by the caller)
   44535           0 :      result = new SgOmpOrderedClause(  startOfConstruct_copy, expression_copy );
   44536           0 :      ROSE_ASSERT(result != NULL);
   44537             : 
   44538             :   // Copy data members of "this" class
   44539             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   44540             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   44541             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   44542           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   44543           0 :      if ( p_endOfConstruct != NULL ) 
   44544             :         { 
   44545           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   44546             :         } 
   44547             :        else 
   44548             :         { 
   44549             :           endOfConstruct_copy = NULL; 
   44550             :         } 
   44551             :   /* check for a valid pointer and delete if present */ 
   44552           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   44553             :   /* add assignment to result here */ 
   44554           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   44555             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   44556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   44557             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   44558           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   44559           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   44560             :         { 
   44561           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   44562             :         } 
   44563             :        else 
   44564             :         { 
   44565             :           attachedPreprocessingInfoPtr_copy = NULL; 
   44566             :         } 
   44567             :   /* check for a valid pointer and delete if present */ 
   44568           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   44569             :   /* add assignment to result here */ 
   44570           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   44571             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   44572             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   44573             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   44574           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   44575           0 :      if ( p_attributeMechanism != NULL ) 
   44576             :         { 
   44577           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   44578             :         } 
   44579             :        else 
   44580             :         { 
   44581             :           attributeMechanism_copy = NULL; 
   44582             :         } 
   44583             :   /* check for a valid pointer and delete if present */ 
   44584           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   44585             :   /* add assignment to result here */ 
   44586           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   44587             :   // case: not a listType for (using conditionalToSetParent)expression
   44588           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   44589             :              { 
   44590           0 :                expression_copy->set_parent(result); 
   44591             :              } 
   44592             : 
   44593             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44594             : 
   44595             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   44596             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   44597             :   // fixupCopy(result,help);
   44598             : 
   44599             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   44600             :   // the Sg_File_Info objects that are built for the new IR nodes.
   44601           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   44602           0 :      if (locatedNode != NULL)
   44603             :         {
   44604             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   44605           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   44606           0 :           ROSE_ASSERT(start != NULL);
   44607             : #if 0
   44608             :        // Debugging information
   44609             :           if (start->get_parent() == NULL)
   44610             :              {
   44611             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44612             :              }
   44613             : #endif
   44614           0 :           start->set_parent(locatedNode);
   44615           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   44616             : 
   44617           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   44618             : 
   44619             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   44620             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   44621             :        // ROSE_ASSERT(end != NULL);
   44622           0 :           if (end == NULL)
   44623             :              {
   44624           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   44625             :              }
   44626             :             else
   44627             :              {
   44628             : #if 0
   44629             :             // Debugging information
   44630             :                if (end->get_parent() == NULL)
   44631             :                   {
   44632             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44633             :                   }
   44634             : #endif
   44635           0 :                end->set_parent(locatedNode);
   44636           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   44637             :              }
   44638             : 
   44639           0 :           SgExpression* expression = isSgExpression(result);
   44640           0 :           if (isSgExpression(this) != NULL)
   44641             :              {
   44642           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   44643             : 
   44644             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   44645           0 :                if (operatorPosition != NULL)
   44646             :                   {
   44647             : #if 0
   44648             :                  // Debugging information
   44649             :                     if (operatorPosition->get_parent() == NULL)
   44650             :                        {
   44651             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44652             :                        }
   44653             : #endif
   44654           0 :                     operatorPosition->set_parent(expression);
   44655           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   44656             :                   }
   44657             :              }
   44658             :         }
   44659             : 
   44660             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   44661           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   44662           0 :      if (initializedName != NULL)
   44663             :         {
   44664             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   44665           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   44666           0 :           ROSE_ASSERT(start != NULL);
   44667             : #if 0
   44668             :        // Debugging information
   44669             :           if (start->get_parent() == NULL)
   44670             :              {
   44671             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44672             :              }
   44673             : #endif
   44674           0 :           start->set_parent(initializedName);
   44675           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   44676             : 
   44677             : #if 0
   44678             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   44679             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   44680             : 
   44681             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   44682             :        // ROSE_ASSERT(end != NULL);
   44683             :           if (end == NULL)
   44684             :              {
   44685             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   44686             :              }
   44687             :             else
   44688             :              {
   44689             :                if (end->get_parent() == NULL)
   44690             :                   {
   44691             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44692             :                   }
   44693             :                end->set_parent(initializedName);
   44694             :                ROSE_ASSERT(end->get_parent() != NULL);
   44695             :              }
   44696             : #endif
   44697             :         }
   44698             : 
   44699             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   44700           0 :      help.insertCopiedNodePair(this,result);
   44701             : 
   44702             :   // printf ("End of copy SgOmpOrderedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   44703             : 
   44704             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   44705             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   44706           0 :      help.decrementDepth();
   44707             : 
   44708             :   // Test if this is the root of the copy!
   44709           0 :      if (help.get_depth() == 0)
   44710             :         {
   44711             :        // This is the original calling node.
   44712             : 
   44713             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   44714             :        // printf ("Calling SgOmpOrderedClause::fixupCopy() (from root of AST being copied) \n");
   44715             : #if ALT_FIXUP_COPY
   44716             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   44717           0 :           fixupCopy_scopes (result,help);
   44718           0 :           fixupCopy_symbols (result,help);
   44719           0 :           fixupCopy_references (result,help);
   44720             : #else
   44721             :           fixupCopy(result,help);
   44722             : #endif
   44723             :        // Allow this to be called recursively, so accumulate the state.
   44724             :        // Also, clear the state in the SgCopyHelp object.
   44725             :        // help.clearState();
   44726             :         }
   44727             : 
   44728           0 :      return result;
   44729             :    }
   44730             : 
   44731             : 
   44732             : /* #line 44733 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   44733             : 
   44734             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44735             : 
   44736           0 : SgNode* SgOmpCollapseClause::copy ( SgCopyHelp& help) const
   44737             :    {
   44738           0 :      SgOmpCollapseClause* result = NULL;
   44739             : 
   44740             :   // printf ("Copy SgOmpCollapseClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   44741             : 
   44742             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   44743             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   44744             :   // The default value of the depth is 0, so after this call the depth is 1!
   44745           0 :      help.incrementDepth();
   44746             : 
   44747             : #if 0
   44748             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   44749             :   // but it is not generally true that things can only be copied once!
   44750             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   44751             :   // AstAttribute* existingAttribute = const_cast<SgOmpCollapseClause*>(this)->attribute["copied"];
   44752             :      bool previouslyCopied = const_cast<SgOmpCollapseClause*>(this)->attribute.exists("copied");
   44753             :      if (previouslyCopied == true)
   44754             :         {
   44755             :           this->get_file_info()->display("Called from copy SgOmpCollapseClause: debug");
   44756             :         }
   44757             :      ROSE_ASSERT(previouslyCopied == false);
   44758             : 
   44759             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   44760             :      AstAttribute* newAttribute = new AstAttribute();
   44761             :      ROSE_ASSERT(newAttribute != NULL);
   44762             : 
   44763             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   44764             :      const_cast<SgOmpCollapseClause*>(this)->attribute.add("copied",newAttribute);
   44765             : #endif
   44766             : 
   44767             :   // Copy data members from base classes
   44768             :   // Copy constructor parameter data member: startOfConstruct_copy
   44769             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   44770             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   44771           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   44772           0 :      if ( p_startOfConstruct != NULL ) 
   44773             :         { 
   44774           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   44775             :         } 
   44776             :        else 
   44777             :         { 
   44778             :           startOfConstruct_copy = NULL; 
   44779             :         } 
   44780             :   // Copy constructor parameter data member: expression_copy
   44781           0 :      SgExpression* expression_copy; 
   44782             :   // case: not a listType for (using conditionalToCopyVariable)expression
   44783           0 :           if (get_expression() != NULL) 
   44784             :              { 
   44785           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   44786             :              } 
   44787             :             else 
   44788             :              { 
   44789             :                expression_copy = NULL; 
   44790             :              } 
   44791             :  
   44792             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44793             : 
   44794             :   // Build an empty copy of this object (will be filled in, but 
   44795             :   // the parent can't be set and must be set by the caller)
   44796           0 :      result = new SgOmpCollapseClause(  startOfConstruct_copy, expression_copy );
   44797           0 :      ROSE_ASSERT(result != NULL);
   44798             : 
   44799             :   // Copy data members of "this" class
   44800             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   44801             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   44802             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   44803           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   44804           0 :      if ( p_endOfConstruct != NULL ) 
   44805             :         { 
   44806           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   44807             :         } 
   44808             :        else 
   44809             :         { 
   44810             :           endOfConstruct_copy = NULL; 
   44811             :         } 
   44812             :   /* check for a valid pointer and delete if present */ 
   44813           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   44814             :   /* add assignment to result here */ 
   44815           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   44816             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   44817             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   44818             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   44819           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   44820           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   44821             :         { 
   44822           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   44823             :         } 
   44824             :        else 
   44825             :         { 
   44826             :           attachedPreprocessingInfoPtr_copy = NULL; 
   44827             :         } 
   44828             :   /* check for a valid pointer and delete if present */ 
   44829           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   44830             :   /* add assignment to result here */ 
   44831           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   44832             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   44833             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   44834             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   44835           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   44836           0 :      if ( p_attributeMechanism != NULL ) 
   44837             :         { 
   44838           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   44839             :         } 
   44840             :        else 
   44841             :         { 
   44842             :           attributeMechanism_copy = NULL; 
   44843             :         } 
   44844             :   /* check for a valid pointer and delete if present */ 
   44845           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   44846             :   /* add assignment to result here */ 
   44847           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   44848             :   // case: not a listType for (using conditionalToSetParent)expression
   44849           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   44850             :              { 
   44851           0 :                expression_copy->set_parent(result); 
   44852             :              } 
   44853             : 
   44854             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44855             : 
   44856             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   44857             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   44858             :   // fixupCopy(result,help);
   44859             : 
   44860             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   44861             :   // the Sg_File_Info objects that are built for the new IR nodes.
   44862           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   44863           0 :      if (locatedNode != NULL)
   44864             :         {
   44865             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   44866           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   44867           0 :           ROSE_ASSERT(start != NULL);
   44868             : #if 0
   44869             :        // Debugging information
   44870             :           if (start->get_parent() == NULL)
   44871             :              {
   44872             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44873             :              }
   44874             : #endif
   44875           0 :           start->set_parent(locatedNode);
   44876           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   44877             : 
   44878           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   44879             : 
   44880             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   44881             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   44882             :        // ROSE_ASSERT(end != NULL);
   44883           0 :           if (end == NULL)
   44884             :              {
   44885           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   44886             :              }
   44887             :             else
   44888             :              {
   44889             : #if 0
   44890             :             // Debugging information
   44891             :                if (end->get_parent() == NULL)
   44892             :                   {
   44893             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44894             :                   }
   44895             : #endif
   44896           0 :                end->set_parent(locatedNode);
   44897           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   44898             :              }
   44899             : 
   44900           0 :           SgExpression* expression = isSgExpression(result);
   44901           0 :           if (isSgExpression(this) != NULL)
   44902             :              {
   44903           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   44904             : 
   44905             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   44906           0 :                if (operatorPosition != NULL)
   44907             :                   {
   44908             : #if 0
   44909             :                  // Debugging information
   44910             :                     if (operatorPosition->get_parent() == NULL)
   44911             :                        {
   44912             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44913             :                        }
   44914             : #endif
   44915           0 :                     operatorPosition->set_parent(expression);
   44916           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   44917             :                   }
   44918             :              }
   44919             :         }
   44920             : 
   44921             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   44922           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   44923           0 :      if (initializedName != NULL)
   44924             :         {
   44925             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   44926           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   44927           0 :           ROSE_ASSERT(start != NULL);
   44928             : #if 0
   44929             :        // Debugging information
   44930             :           if (start->get_parent() == NULL)
   44931             :              {
   44932             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44933             :              }
   44934             : #endif
   44935           0 :           start->set_parent(initializedName);
   44936           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   44937             : 
   44938             : #if 0
   44939             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   44940             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   44941             : 
   44942             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   44943             :        // ROSE_ASSERT(end != NULL);
   44944             :           if (end == NULL)
   44945             :              {
   44946             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   44947             :              }
   44948             :             else
   44949             :              {
   44950             :                if (end->get_parent() == NULL)
   44951             :                   {
   44952             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   44953             :                   }
   44954             :                end->set_parent(initializedName);
   44955             :                ROSE_ASSERT(end->get_parent() != NULL);
   44956             :              }
   44957             : #endif
   44958             :         }
   44959             : 
   44960             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   44961           0 :      help.insertCopiedNodePair(this,result);
   44962             : 
   44963             :   // printf ("End of copy SgOmpCollapseClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   44964             : 
   44965             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   44966             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   44967           0 :      help.decrementDepth();
   44968             : 
   44969             :   // Test if this is the root of the copy!
   44970           0 :      if (help.get_depth() == 0)
   44971             :         {
   44972             :        // This is the original calling node.
   44973             : 
   44974             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   44975             :        // printf ("Calling SgOmpCollapseClause::fixupCopy() (from root of AST being copied) \n");
   44976             : #if ALT_FIXUP_COPY
   44977             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   44978           0 :           fixupCopy_scopes (result,help);
   44979           0 :           fixupCopy_symbols (result,help);
   44980           0 :           fixupCopy_references (result,help);
   44981             : #else
   44982             :           fixupCopy(result,help);
   44983             : #endif
   44984             :        // Allow this to be called recursively, so accumulate the state.
   44985             :        // Also, clear the state in the SgCopyHelp object.
   44986             :        // help.clearState();
   44987             :         }
   44988             : 
   44989           0 :      return result;
   44990             :    }
   44991             : 
   44992             : 
   44993             : /* #line 44994 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   44994             : 
   44995             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   44996             : 
   44997           0 : SgNode* SgOmpIfClause::copy ( SgCopyHelp& help) const
   44998             :    {
   44999           0 :      SgOmpIfClause* result = NULL;
   45000             : 
   45001             :   // printf ("Copy SgOmpIfClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   45002             : 
   45003             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   45004             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   45005             :   // The default value of the depth is 0, so after this call the depth is 1!
   45006           0 :      help.incrementDepth();
   45007             : 
   45008             : #if 0
   45009             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   45010             :   // but it is not generally true that things can only be copied once!
   45011             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   45012             :   // AstAttribute* existingAttribute = const_cast<SgOmpIfClause*>(this)->attribute["copied"];
   45013             :      bool previouslyCopied = const_cast<SgOmpIfClause*>(this)->attribute.exists("copied");
   45014             :      if (previouslyCopied == true)
   45015             :         {
   45016             :           this->get_file_info()->display("Called from copy SgOmpIfClause: debug");
   45017             :         }
   45018             :      ROSE_ASSERT(previouslyCopied == false);
   45019             : 
   45020             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   45021             :      AstAttribute* newAttribute = new AstAttribute();
   45022             :      ROSE_ASSERT(newAttribute != NULL);
   45023             : 
   45024             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   45025             :      const_cast<SgOmpIfClause*>(this)->attribute.add("copied",newAttribute);
   45026             : #endif
   45027             : 
   45028             :   // Copy data members from base classes
   45029             :   // Copy constructor parameter data member: startOfConstruct_copy
   45030             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   45031             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   45032           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   45033           0 :      if ( p_startOfConstruct != NULL ) 
   45034             :         { 
   45035           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   45036             :         } 
   45037             :        else 
   45038             :         { 
   45039             :           startOfConstruct_copy = NULL; 
   45040             :         } 
   45041             :   // Copy constructor parameter data member: expression_copy
   45042           0 :      SgExpression* expression_copy; 
   45043             :   // case: not a listType for (using conditionalToCopyVariable)expression
   45044           0 :           if (get_expression() != NULL) 
   45045             :              { 
   45046           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   45047             :              } 
   45048             :             else 
   45049             :              { 
   45050             :                expression_copy = NULL; 
   45051             :              } 
   45052             :   // Copy constructor parameter data member: modifier_copy
   45053             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
   45054             :   // case: toBeCopied == COPY_DATA for modifier
   45055           0 :      SgOmpClause::omp_if_modifier_enum modifier_copy = p_modifier; 
   45056             :  
   45057             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45058             : 
   45059             :   // Build an empty copy of this object (will be filled in, but 
   45060             :   // the parent can't be set and must be set by the caller)
   45061           0 :      result = new SgOmpIfClause(  startOfConstruct_copy, expression_copy, modifier_copy );
   45062           0 :      ROSE_ASSERT(result != NULL);
   45063             : 
   45064             :   // Copy data members of "this" class
   45065             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   45066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   45067             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   45068           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   45069           0 :      if ( p_endOfConstruct != NULL ) 
   45070             :         { 
   45071           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   45072             :         } 
   45073             :        else 
   45074             :         { 
   45075             :           endOfConstruct_copy = NULL; 
   45076             :         } 
   45077             :   /* check for a valid pointer and delete if present */ 
   45078           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   45079             :   /* add assignment to result here */ 
   45080           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   45081             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   45082             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   45083             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   45084           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   45085           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   45086             :         { 
   45087           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   45088             :         } 
   45089             :        else 
   45090             :         { 
   45091             :           attachedPreprocessingInfoPtr_copy = NULL; 
   45092             :         } 
   45093             :   /* check for a valid pointer and delete if present */ 
   45094           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   45095             :   /* add assignment to result here */ 
   45096           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   45097             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   45098             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   45099             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   45100           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   45101           0 :      if ( p_attributeMechanism != NULL ) 
   45102             :         { 
   45103           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   45104             :         } 
   45105             :        else 
   45106             :         { 
   45107             :           attributeMechanism_copy = NULL; 
   45108             :         } 
   45109             :   /* check for a valid pointer and delete if present */ 
   45110           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   45111             :   /* add assignment to result here */ 
   45112           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   45113             :   // case: not a listType for (using conditionalToSetParent)expression
   45114           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   45115             :              { 
   45116           0 :                expression_copy->set_parent(result); 
   45117             :              } 
   45118             : 
   45119             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45120             : 
   45121             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   45122             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   45123             :   // fixupCopy(result,help);
   45124             : 
   45125             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   45126             :   // the Sg_File_Info objects that are built for the new IR nodes.
   45127           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   45128           0 :      if (locatedNode != NULL)
   45129             :         {
   45130             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   45131           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   45132           0 :           ROSE_ASSERT(start != NULL);
   45133             : #if 0
   45134             :        // Debugging information
   45135             :           if (start->get_parent() == NULL)
   45136             :              {
   45137             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45138             :              }
   45139             : #endif
   45140           0 :           start->set_parent(locatedNode);
   45141           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   45142             : 
   45143           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   45144             : 
   45145             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   45146             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   45147             :        // ROSE_ASSERT(end != NULL);
   45148           0 :           if (end == NULL)
   45149             :              {
   45150           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   45151             :              }
   45152             :             else
   45153             :              {
   45154             : #if 0
   45155             :             // Debugging information
   45156             :                if (end->get_parent() == NULL)
   45157             :                   {
   45158             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45159             :                   }
   45160             : #endif
   45161           0 :                end->set_parent(locatedNode);
   45162           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   45163             :              }
   45164             : 
   45165           0 :           SgExpression* expression = isSgExpression(result);
   45166           0 :           if (isSgExpression(this) != NULL)
   45167             :              {
   45168           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   45169             : 
   45170             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   45171           0 :                if (operatorPosition != NULL)
   45172             :                   {
   45173             : #if 0
   45174             :                  // Debugging information
   45175             :                     if (operatorPosition->get_parent() == NULL)
   45176             :                        {
   45177             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45178             :                        }
   45179             : #endif
   45180           0 :                     operatorPosition->set_parent(expression);
   45181           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   45182             :                   }
   45183             :              }
   45184             :         }
   45185             : 
   45186             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   45187           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   45188           0 :      if (initializedName != NULL)
   45189             :         {
   45190             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   45191           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   45192           0 :           ROSE_ASSERT(start != NULL);
   45193             : #if 0
   45194             :        // Debugging information
   45195             :           if (start->get_parent() == NULL)
   45196             :              {
   45197             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45198             :              }
   45199             : #endif
   45200           0 :           start->set_parent(initializedName);
   45201           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   45202             : 
   45203             : #if 0
   45204             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   45205             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   45206             : 
   45207             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   45208             :        // ROSE_ASSERT(end != NULL);
   45209             :           if (end == NULL)
   45210             :              {
   45211             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   45212             :              }
   45213             :             else
   45214             :              {
   45215             :                if (end->get_parent() == NULL)
   45216             :                   {
   45217             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45218             :                   }
   45219             :                end->set_parent(initializedName);
   45220             :                ROSE_ASSERT(end->get_parent() != NULL);
   45221             :              }
   45222             : #endif
   45223             :         }
   45224             : 
   45225             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   45226           0 :      help.insertCopiedNodePair(this,result);
   45227             : 
   45228             :   // printf ("End of copy SgOmpIfClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   45229             : 
   45230             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   45231             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   45232           0 :      help.decrementDepth();
   45233             : 
   45234             :   // Test if this is the root of the copy!
   45235           0 :      if (help.get_depth() == 0)
   45236             :         {
   45237             :        // This is the original calling node.
   45238             : 
   45239             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   45240             :        // printf ("Calling SgOmpIfClause::fixupCopy() (from root of AST being copied) \n");
   45241             : #if ALT_FIXUP_COPY
   45242             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   45243           0 :           fixupCopy_scopes (result,help);
   45244           0 :           fixupCopy_symbols (result,help);
   45245           0 :           fixupCopy_references (result,help);
   45246             : #else
   45247             :           fixupCopy(result,help);
   45248             : #endif
   45249             :        // Allow this to be called recursively, so accumulate the state.
   45250             :        // Also, clear the state in the SgCopyHelp object.
   45251             :        // help.clearState();
   45252             :         }
   45253             : 
   45254           0 :      return result;
   45255             :    }
   45256             : 
   45257             : 
   45258             : /* #line 45259 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   45259             : 
   45260             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45261             : 
   45262           0 : SgNode* SgUpirNumUnitsField::copy ( SgCopyHelp& help) const
   45263             :    {
   45264           0 :      SgUpirNumUnitsField* result = NULL;
   45265             : 
   45266             :   // printf ("Copy SgUpirNumUnitsField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   45267             : 
   45268             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   45269             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   45270             :   // The default value of the depth is 0, so after this call the depth is 1!
   45271           0 :      help.incrementDepth();
   45272             : 
   45273             : #if 0
   45274             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   45275             :   // but it is not generally true that things can only be copied once!
   45276             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   45277             :   // AstAttribute* existingAttribute = const_cast<SgUpirNumUnitsField*>(this)->attribute["copied"];
   45278             :      bool previouslyCopied = const_cast<SgUpirNumUnitsField*>(this)->attribute.exists("copied");
   45279             :      if (previouslyCopied == true)
   45280             :         {
   45281             :           this->get_file_info()->display("Called from copy SgUpirNumUnitsField: debug");
   45282             :         }
   45283             :      ROSE_ASSERT(previouslyCopied == false);
   45284             : 
   45285             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   45286             :      AstAttribute* newAttribute = new AstAttribute();
   45287             :      ROSE_ASSERT(newAttribute != NULL);
   45288             : 
   45289             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   45290             :      const_cast<SgUpirNumUnitsField*>(this)->attribute.add("copied",newAttribute);
   45291             : #endif
   45292             : 
   45293             :   // Copy data members from base classes
   45294             :   // Copy constructor parameter data member: startOfConstruct_copy
   45295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   45296             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   45297           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   45298           0 :      if ( p_startOfConstruct != NULL ) 
   45299             :         { 
   45300           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   45301             :         } 
   45302             :        else 
   45303             :         { 
   45304             :           startOfConstruct_copy = NULL; 
   45305             :         } 
   45306             :   // Copy constructor parameter data member: expression_copy
   45307           0 :      SgExpression* expression_copy; 
   45308             :   // case: not a listType for (using conditionalToCopyVariable)expression
   45309           0 :           if (get_expression() != NULL) 
   45310             :              { 
   45311           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   45312             :              } 
   45313             :             else 
   45314             :              { 
   45315             :                expression_copy = NULL; 
   45316             :              } 
   45317             :  
   45318             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45319             : 
   45320             :   // Build an empty copy of this object (will be filled in, but 
   45321             :   // the parent can't be set and must be set by the caller)
   45322           0 :      result = new SgUpirNumUnitsField(  startOfConstruct_copy, expression_copy );
   45323           0 :      ROSE_ASSERT(result != NULL);
   45324             : 
   45325             :   // Copy data members of "this" class
   45326             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   45327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   45328             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   45329           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   45330           0 :      if ( p_endOfConstruct != NULL ) 
   45331             :         { 
   45332           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   45333             :         } 
   45334             :        else 
   45335             :         { 
   45336             :           endOfConstruct_copy = NULL; 
   45337             :         } 
   45338             :   /* check for a valid pointer and delete if present */ 
   45339           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   45340             :   /* add assignment to result here */ 
   45341           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   45342             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   45343             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   45344             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   45345           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   45346           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   45347             :         { 
   45348           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   45349             :         } 
   45350             :        else 
   45351             :         { 
   45352             :           attachedPreprocessingInfoPtr_copy = NULL; 
   45353             :         } 
   45354             :   /* check for a valid pointer and delete if present */ 
   45355           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   45356             :   /* add assignment to result here */ 
   45357           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   45358             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   45359             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   45360             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   45361           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   45362           0 :      if ( p_attributeMechanism != NULL ) 
   45363             :         { 
   45364           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   45365             :         } 
   45366             :        else 
   45367             :         { 
   45368             :           attributeMechanism_copy = NULL; 
   45369             :         } 
   45370             :   /* check for a valid pointer and delete if present */ 
   45371           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   45372             :   /* add assignment to result here */ 
   45373           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   45374             :   // case: not a listType for (using conditionalToSetParent)expression
   45375           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   45376             :              { 
   45377           0 :                expression_copy->set_parent(result); 
   45378             :              } 
   45379             : 
   45380             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45381             : 
   45382             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   45383             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   45384             :   // fixupCopy(result,help);
   45385             : 
   45386             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   45387             :   // the Sg_File_Info objects that are built for the new IR nodes.
   45388           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   45389           0 :      if (locatedNode != NULL)
   45390             :         {
   45391             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   45392           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   45393           0 :           ROSE_ASSERT(start != NULL);
   45394             : #if 0
   45395             :        // Debugging information
   45396             :           if (start->get_parent() == NULL)
   45397             :              {
   45398             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45399             :              }
   45400             : #endif
   45401           0 :           start->set_parent(locatedNode);
   45402           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   45403             : 
   45404           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   45405             : 
   45406             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   45407             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   45408             :        // ROSE_ASSERT(end != NULL);
   45409           0 :           if (end == NULL)
   45410             :              {
   45411           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   45412             :              }
   45413             :             else
   45414             :              {
   45415             : #if 0
   45416             :             // Debugging information
   45417             :                if (end->get_parent() == NULL)
   45418             :                   {
   45419             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45420             :                   }
   45421             : #endif
   45422           0 :                end->set_parent(locatedNode);
   45423           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   45424             :              }
   45425             : 
   45426           0 :           SgExpression* expression = isSgExpression(result);
   45427           0 :           if (isSgExpression(this) != NULL)
   45428             :              {
   45429           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   45430             : 
   45431             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   45432           0 :                if (operatorPosition != NULL)
   45433             :                   {
   45434             : #if 0
   45435             :                  // Debugging information
   45436             :                     if (operatorPosition->get_parent() == NULL)
   45437             :                        {
   45438             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45439             :                        }
   45440             : #endif
   45441           0 :                     operatorPosition->set_parent(expression);
   45442           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   45443             :                   }
   45444             :              }
   45445             :         }
   45446             : 
   45447             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   45448           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   45449           0 :      if (initializedName != NULL)
   45450             :         {
   45451             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   45452           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   45453           0 :           ROSE_ASSERT(start != NULL);
   45454             : #if 0
   45455             :        // Debugging information
   45456             :           if (start->get_parent() == NULL)
   45457             :              {
   45458             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45459             :              }
   45460             : #endif
   45461           0 :           start->set_parent(initializedName);
   45462           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   45463             : 
   45464             : #if 0
   45465             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   45466             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   45467             : 
   45468             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   45469             :        // ROSE_ASSERT(end != NULL);
   45470             :           if (end == NULL)
   45471             :              {
   45472             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   45473             :              }
   45474             :             else
   45475             :              {
   45476             :                if (end->get_parent() == NULL)
   45477             :                   {
   45478             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45479             :                   }
   45480             :                end->set_parent(initializedName);
   45481             :                ROSE_ASSERT(end->get_parent() != NULL);
   45482             :              }
   45483             : #endif
   45484             :         }
   45485             : 
   45486             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   45487           0 :      help.insertCopiedNodePair(this,result);
   45488             : 
   45489             :   // printf ("End of copy SgUpirNumUnitsField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   45490             : 
   45491             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   45492             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   45493           0 :      help.decrementDepth();
   45494             : 
   45495             :   // Test if this is the root of the copy!
   45496           0 :      if (help.get_depth() == 0)
   45497             :         {
   45498             :        // This is the original calling node.
   45499             : 
   45500             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   45501             :        // printf ("Calling SgUpirNumUnitsField::fixupCopy() (from root of AST being copied) \n");
   45502             : #if ALT_FIXUP_COPY
   45503             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   45504           0 :           fixupCopy_scopes (result,help);
   45505           0 :           fixupCopy_symbols (result,help);
   45506           0 :           fixupCopy_references (result,help);
   45507             : #else
   45508             :           fixupCopy(result,help);
   45509             : #endif
   45510             :        // Allow this to be called recursively, so accumulate the state.
   45511             :        // Also, clear the state in the SgCopyHelp object.
   45512             :        // help.clearState();
   45513             :         }
   45514             : 
   45515           0 :      return result;
   45516             :    }
   45517             : 
   45518             : 
   45519             : /* #line 45520 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   45520             : 
   45521             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45522             : 
   45523           0 : SgNode* SgOmpNumTeamsClause::copy ( SgCopyHelp& help) const
   45524             :    {
   45525           0 :      SgOmpNumTeamsClause* result = NULL;
   45526             : 
   45527             :   // printf ("Copy SgOmpNumTeamsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   45528             : 
   45529             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   45530             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   45531             :   // The default value of the depth is 0, so after this call the depth is 1!
   45532           0 :      help.incrementDepth();
   45533             : 
   45534             : #if 0
   45535             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   45536             :   // but it is not generally true that things can only be copied once!
   45537             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   45538             :   // AstAttribute* existingAttribute = const_cast<SgOmpNumTeamsClause*>(this)->attribute["copied"];
   45539             :      bool previouslyCopied = const_cast<SgOmpNumTeamsClause*>(this)->attribute.exists("copied");
   45540             :      if (previouslyCopied == true)
   45541             :         {
   45542             :           this->get_file_info()->display("Called from copy SgOmpNumTeamsClause: debug");
   45543             :         }
   45544             :      ROSE_ASSERT(previouslyCopied == false);
   45545             : 
   45546             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   45547             :      AstAttribute* newAttribute = new AstAttribute();
   45548             :      ROSE_ASSERT(newAttribute != NULL);
   45549             : 
   45550             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   45551             :      const_cast<SgOmpNumTeamsClause*>(this)->attribute.add("copied",newAttribute);
   45552             : #endif
   45553             : 
   45554             :   // Copy data members from base classes
   45555             :   // Copy constructor parameter data member: startOfConstruct_copy
   45556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   45557             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   45558           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   45559           0 :      if ( p_startOfConstruct != NULL ) 
   45560             :         { 
   45561           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   45562             :         } 
   45563             :        else 
   45564             :         { 
   45565             :           startOfConstruct_copy = NULL; 
   45566             :         } 
   45567             :   // Copy constructor parameter data member: expression_copy
   45568           0 :      SgExpression* expression_copy; 
   45569             :   // case: not a listType for (using conditionalToCopyVariable)expression
   45570           0 :           if (get_expression() != NULL) 
   45571             :              { 
   45572           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   45573             :              } 
   45574             :             else 
   45575             :              { 
   45576             :                expression_copy = NULL; 
   45577             :              } 
   45578             :  
   45579             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45580             : 
   45581             :   // Build an empty copy of this object (will be filled in, but 
   45582             :   // the parent can't be set and must be set by the caller)
   45583           0 :      result = new SgOmpNumTeamsClause(  startOfConstruct_copy, expression_copy );
   45584           0 :      ROSE_ASSERT(result != NULL);
   45585             : 
   45586             :   // Copy data members of "this" class
   45587             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   45588             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   45589             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   45590           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   45591           0 :      if ( p_endOfConstruct != NULL ) 
   45592             :         { 
   45593           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   45594             :         } 
   45595             :        else 
   45596             :         { 
   45597             :           endOfConstruct_copy = NULL; 
   45598             :         } 
   45599             :   /* check for a valid pointer and delete if present */ 
   45600           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   45601             :   /* add assignment to result here */ 
   45602           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   45603             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   45604             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   45605             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   45606           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   45607           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   45608             :         { 
   45609           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   45610             :         } 
   45611             :        else 
   45612             :         { 
   45613             :           attachedPreprocessingInfoPtr_copy = NULL; 
   45614             :         } 
   45615             :   /* check for a valid pointer and delete if present */ 
   45616           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   45617             :   /* add assignment to result here */ 
   45618           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   45619             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   45620             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   45621             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   45622           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   45623           0 :      if ( p_attributeMechanism != NULL ) 
   45624             :         { 
   45625           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   45626             :         } 
   45627             :        else 
   45628             :         { 
   45629             :           attributeMechanism_copy = NULL; 
   45630             :         } 
   45631             :   /* check for a valid pointer and delete if present */ 
   45632           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   45633             :   /* add assignment to result here */ 
   45634           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   45635             :   // case: not a listType for (using conditionalToSetParent)expression
   45636           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   45637             :              { 
   45638           0 :                expression_copy->set_parent(result); 
   45639             :              } 
   45640             : 
   45641             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45642             : 
   45643             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   45644             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   45645             :   // fixupCopy(result,help);
   45646             : 
   45647             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   45648             :   // the Sg_File_Info objects that are built for the new IR nodes.
   45649           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   45650           0 :      if (locatedNode != NULL)
   45651             :         {
   45652             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   45653           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   45654           0 :           ROSE_ASSERT(start != NULL);
   45655             : #if 0
   45656             :        // Debugging information
   45657             :           if (start->get_parent() == NULL)
   45658             :              {
   45659             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45660             :              }
   45661             : #endif
   45662           0 :           start->set_parent(locatedNode);
   45663           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   45664             : 
   45665           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   45666             : 
   45667             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   45668             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   45669             :        // ROSE_ASSERT(end != NULL);
   45670           0 :           if (end == NULL)
   45671             :              {
   45672           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   45673             :              }
   45674             :             else
   45675             :              {
   45676             : #if 0
   45677             :             // Debugging information
   45678             :                if (end->get_parent() == NULL)
   45679             :                   {
   45680             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45681             :                   }
   45682             : #endif
   45683           0 :                end->set_parent(locatedNode);
   45684           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   45685             :              }
   45686             : 
   45687           0 :           SgExpression* expression = isSgExpression(result);
   45688           0 :           if (isSgExpression(this) != NULL)
   45689             :              {
   45690           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   45691             : 
   45692             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   45693           0 :                if (operatorPosition != NULL)
   45694             :                   {
   45695             : #if 0
   45696             :                  // Debugging information
   45697             :                     if (operatorPosition->get_parent() == NULL)
   45698             :                        {
   45699             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45700             :                        }
   45701             : #endif
   45702           0 :                     operatorPosition->set_parent(expression);
   45703           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   45704             :                   }
   45705             :              }
   45706             :         }
   45707             : 
   45708             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   45709           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   45710           0 :      if (initializedName != NULL)
   45711             :         {
   45712             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   45713           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   45714           0 :           ROSE_ASSERT(start != NULL);
   45715             : #if 0
   45716             :        // Debugging information
   45717             :           if (start->get_parent() == NULL)
   45718             :              {
   45719             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45720             :              }
   45721             : #endif
   45722           0 :           start->set_parent(initializedName);
   45723           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   45724             : 
   45725             : #if 0
   45726             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   45727             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   45728             : 
   45729             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   45730             :        // ROSE_ASSERT(end != NULL);
   45731             :           if (end == NULL)
   45732             :              {
   45733             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   45734             :              }
   45735             :             else
   45736             :              {
   45737             :                if (end->get_parent() == NULL)
   45738             :                   {
   45739             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45740             :                   }
   45741             :                end->set_parent(initializedName);
   45742             :                ROSE_ASSERT(end->get_parent() != NULL);
   45743             :              }
   45744             : #endif
   45745             :         }
   45746             : 
   45747             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   45748           0 :      help.insertCopiedNodePair(this,result);
   45749             : 
   45750             :   // printf ("End of copy SgOmpNumTeamsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   45751             : 
   45752             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   45753             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   45754           0 :      help.decrementDepth();
   45755             : 
   45756             :   // Test if this is the root of the copy!
   45757           0 :      if (help.get_depth() == 0)
   45758             :         {
   45759             :        // This is the original calling node.
   45760             : 
   45761             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   45762             :        // printf ("Calling SgOmpNumTeamsClause::fixupCopy() (from root of AST being copied) \n");
   45763             : #if ALT_FIXUP_COPY
   45764             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   45765           0 :           fixupCopy_scopes (result,help);
   45766           0 :           fixupCopy_symbols (result,help);
   45767           0 :           fixupCopy_references (result,help);
   45768             : #else
   45769             :           fixupCopy(result,help);
   45770             : #endif
   45771             :        // Allow this to be called recursively, so accumulate the state.
   45772             :        // Also, clear the state in the SgCopyHelp object.
   45773             :        // help.clearState();
   45774             :         }
   45775             : 
   45776           0 :      return result;
   45777             :    }
   45778             : 
   45779             : 
   45780             : /* #line 45781 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   45781             : 
   45782             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45783             : 
   45784           0 : SgNode* SgOmpThreadLimitClause::copy ( SgCopyHelp& help) const
   45785             :    {
   45786           0 :      SgOmpThreadLimitClause* result = NULL;
   45787             : 
   45788             :   // printf ("Copy SgOmpThreadLimitClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   45789             : 
   45790             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   45791             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   45792             :   // The default value of the depth is 0, so after this call the depth is 1!
   45793           0 :      help.incrementDepth();
   45794             : 
   45795             : #if 0
   45796             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   45797             :   // but it is not generally true that things can only be copied once!
   45798             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   45799             :   // AstAttribute* existingAttribute = const_cast<SgOmpThreadLimitClause*>(this)->attribute["copied"];
   45800             :      bool previouslyCopied = const_cast<SgOmpThreadLimitClause*>(this)->attribute.exists("copied");
   45801             :      if (previouslyCopied == true)
   45802             :         {
   45803             :           this->get_file_info()->display("Called from copy SgOmpThreadLimitClause: debug");
   45804             :         }
   45805             :      ROSE_ASSERT(previouslyCopied == false);
   45806             : 
   45807             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   45808             :      AstAttribute* newAttribute = new AstAttribute();
   45809             :      ROSE_ASSERT(newAttribute != NULL);
   45810             : 
   45811             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   45812             :      const_cast<SgOmpThreadLimitClause*>(this)->attribute.add("copied",newAttribute);
   45813             : #endif
   45814             : 
   45815             :   // Copy data members from base classes
   45816             :   // Copy constructor parameter data member: startOfConstruct_copy
   45817             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   45818             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   45819           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   45820           0 :      if ( p_startOfConstruct != NULL ) 
   45821             :         { 
   45822           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   45823             :         } 
   45824             :        else 
   45825             :         { 
   45826             :           startOfConstruct_copy = NULL; 
   45827             :         } 
   45828             :   // Copy constructor parameter data member: expression_copy
   45829           0 :      SgExpression* expression_copy; 
   45830             :   // case: not a listType for (using conditionalToCopyVariable)expression
   45831           0 :           if (get_expression() != NULL) 
   45832             :              { 
   45833           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   45834             :              } 
   45835             :             else 
   45836             :              { 
   45837             :                expression_copy = NULL; 
   45838             :              } 
   45839             :  
   45840             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45841             : 
   45842             :   // Build an empty copy of this object (will be filled in, but 
   45843             :   // the parent can't be set and must be set by the caller)
   45844           0 :      result = new SgOmpThreadLimitClause(  startOfConstruct_copy, expression_copy );
   45845           0 :      ROSE_ASSERT(result != NULL);
   45846             : 
   45847             :   // Copy data members of "this" class
   45848             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   45849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   45850             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   45851           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   45852           0 :      if ( p_endOfConstruct != NULL ) 
   45853             :         { 
   45854           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   45855             :         } 
   45856             :        else 
   45857             :         { 
   45858             :           endOfConstruct_copy = NULL; 
   45859             :         } 
   45860             :   /* check for a valid pointer and delete if present */ 
   45861           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   45862             :   /* add assignment to result here */ 
   45863           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   45864             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   45865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   45866             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   45867           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   45868           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   45869             :         { 
   45870           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   45871             :         } 
   45872             :        else 
   45873             :         { 
   45874             :           attachedPreprocessingInfoPtr_copy = NULL; 
   45875             :         } 
   45876             :   /* check for a valid pointer and delete if present */ 
   45877           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   45878             :   /* add assignment to result here */ 
   45879           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   45880             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   45881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   45882             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   45883           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   45884           0 :      if ( p_attributeMechanism != NULL ) 
   45885             :         { 
   45886           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   45887             :         } 
   45888             :        else 
   45889             :         { 
   45890             :           attributeMechanism_copy = NULL; 
   45891             :         } 
   45892             :   /* check for a valid pointer and delete if present */ 
   45893           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   45894             :   /* add assignment to result here */ 
   45895           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   45896             :   // case: not a listType for (using conditionalToSetParent)expression
   45897           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   45898             :              { 
   45899           0 :                expression_copy->set_parent(result); 
   45900             :              } 
   45901             : 
   45902             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   45903             : 
   45904             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   45905             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   45906             :   // fixupCopy(result,help);
   45907             : 
   45908             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   45909             :   // the Sg_File_Info objects that are built for the new IR nodes.
   45910           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   45911           0 :      if (locatedNode != NULL)
   45912             :         {
   45913             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   45914           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   45915           0 :           ROSE_ASSERT(start != NULL);
   45916             : #if 0
   45917             :        // Debugging information
   45918             :           if (start->get_parent() == NULL)
   45919             :              {
   45920             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45921             :              }
   45922             : #endif
   45923           0 :           start->set_parent(locatedNode);
   45924           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   45925             : 
   45926           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   45927             : 
   45928             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   45929             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   45930             :        // ROSE_ASSERT(end != NULL);
   45931           0 :           if (end == NULL)
   45932             :              {
   45933           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   45934             :              }
   45935             :             else
   45936             :              {
   45937             : #if 0
   45938             :             // Debugging information
   45939             :                if (end->get_parent() == NULL)
   45940             :                   {
   45941             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45942             :                   }
   45943             : #endif
   45944           0 :                end->set_parent(locatedNode);
   45945           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   45946             :              }
   45947             : 
   45948           0 :           SgExpression* expression = isSgExpression(result);
   45949           0 :           if (isSgExpression(this) != NULL)
   45950             :              {
   45951           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   45952             : 
   45953             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   45954           0 :                if (operatorPosition != NULL)
   45955             :                   {
   45956             : #if 0
   45957             :                  // Debugging information
   45958             :                     if (operatorPosition->get_parent() == NULL)
   45959             :                        {
   45960             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45961             :                        }
   45962             : #endif
   45963           0 :                     operatorPosition->set_parent(expression);
   45964           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   45965             :                   }
   45966             :              }
   45967             :         }
   45968             : 
   45969             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   45970           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   45971           0 :      if (initializedName != NULL)
   45972             :         {
   45973             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   45974           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   45975           0 :           ROSE_ASSERT(start != NULL);
   45976             : #if 0
   45977             :        // Debugging information
   45978             :           if (start->get_parent() == NULL)
   45979             :              {
   45980             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   45981             :              }
   45982             : #endif
   45983           0 :           start->set_parent(initializedName);
   45984           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   45985             : 
   45986             : #if 0
   45987             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   45988             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   45989             : 
   45990             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   45991             :        // ROSE_ASSERT(end != NULL);
   45992             :           if (end == NULL)
   45993             :              {
   45994             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   45995             :              }
   45996             :             else
   45997             :              {
   45998             :                if (end->get_parent() == NULL)
   45999             :                   {
   46000             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46001             :                   }
   46002             :                end->set_parent(initializedName);
   46003             :                ROSE_ASSERT(end->get_parent() != NULL);
   46004             :              }
   46005             : #endif
   46006             :         }
   46007             : 
   46008             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   46009           0 :      help.insertCopiedNodePair(this,result);
   46010             : 
   46011             :   // printf ("End of copy SgOmpThreadLimitClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   46012             : 
   46013             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   46014             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   46015           0 :      help.decrementDepth();
   46016             : 
   46017             :   // Test if this is the root of the copy!
   46018           0 :      if (help.get_depth() == 0)
   46019             :         {
   46020             :        // This is the original calling node.
   46021             : 
   46022             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   46023             :        // printf ("Calling SgOmpThreadLimitClause::fixupCopy() (from root of AST being copied) \n");
   46024             : #if ALT_FIXUP_COPY
   46025             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   46026           0 :           fixupCopy_scopes (result,help);
   46027           0 :           fixupCopy_symbols (result,help);
   46028           0 :           fixupCopy_references (result,help);
   46029             : #else
   46030             :           fixupCopy(result,help);
   46031             : #endif
   46032             :        // Allow this to be called recursively, so accumulate the state.
   46033             :        // Also, clear the state in the SgCopyHelp object.
   46034             :        // help.clearState();
   46035             :         }
   46036             : 
   46037           0 :      return result;
   46038             :    }
   46039             : 
   46040             : 
   46041             : /* #line 46042 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   46042             : 
   46043             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46044             : 
   46045           0 : SgNode* SgOmpDeviceClause::copy ( SgCopyHelp& help) const
   46046             :    {
   46047           0 :      SgOmpDeviceClause* result = NULL;
   46048             : 
   46049             :   // printf ("Copy SgOmpDeviceClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   46050             : 
   46051             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   46052             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   46053             :   // The default value of the depth is 0, so after this call the depth is 1!
   46054           0 :      help.incrementDepth();
   46055             : 
   46056             : #if 0
   46057             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   46058             :   // but it is not generally true that things can only be copied once!
   46059             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   46060             :   // AstAttribute* existingAttribute = const_cast<SgOmpDeviceClause*>(this)->attribute["copied"];
   46061             :      bool previouslyCopied = const_cast<SgOmpDeviceClause*>(this)->attribute.exists("copied");
   46062             :      if (previouslyCopied == true)
   46063             :         {
   46064             :           this->get_file_info()->display("Called from copy SgOmpDeviceClause: debug");
   46065             :         }
   46066             :      ROSE_ASSERT(previouslyCopied == false);
   46067             : 
   46068             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   46069             :      AstAttribute* newAttribute = new AstAttribute();
   46070             :      ROSE_ASSERT(newAttribute != NULL);
   46071             : 
   46072             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   46073             :      const_cast<SgOmpDeviceClause*>(this)->attribute.add("copied",newAttribute);
   46074             : #endif
   46075             : 
   46076             :   // Copy data members from base classes
   46077             :   // Copy constructor parameter data member: startOfConstruct_copy
   46078             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   46079             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   46080           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   46081           0 :      if ( p_startOfConstruct != NULL ) 
   46082             :         { 
   46083           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   46084             :         } 
   46085             :        else 
   46086             :         { 
   46087             :           startOfConstruct_copy = NULL; 
   46088             :         } 
   46089             :   // Copy constructor parameter data member: expression_copy
   46090           0 :      SgExpression* expression_copy; 
   46091             :   // case: not a listType for (using conditionalToCopyVariable)expression
   46092           0 :           if (get_expression() != NULL) 
   46093             :              { 
   46094           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   46095             :              } 
   46096             :             else 
   46097             :              { 
   46098             :                expression_copy = NULL; 
   46099             :              } 
   46100             :   // Copy constructor parameter data member: modifier_copy
   46101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
   46102             :   // case: toBeCopied == COPY_DATA for modifier
   46103           0 :      SgOmpClause::omp_device_modifier_enum modifier_copy = p_modifier; 
   46104             :  
   46105             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46106             : 
   46107             :   // Build an empty copy of this object (will be filled in, but 
   46108             :   // the parent can't be set and must be set by the caller)
   46109           0 :      result = new SgOmpDeviceClause(  startOfConstruct_copy, expression_copy, modifier_copy );
   46110           0 :      ROSE_ASSERT(result != NULL);
   46111             : 
   46112             :   // Copy data members of "this" class
   46113             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   46114             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   46115             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   46116           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   46117           0 :      if ( p_endOfConstruct != NULL ) 
   46118             :         { 
   46119           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   46120             :         } 
   46121             :        else 
   46122             :         { 
   46123             :           endOfConstruct_copy = NULL; 
   46124             :         } 
   46125             :   /* check for a valid pointer and delete if present */ 
   46126           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   46127             :   /* add assignment to result here */ 
   46128           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   46129             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   46130             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   46131             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   46132           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   46133           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   46134             :         { 
   46135           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   46136             :         } 
   46137             :        else 
   46138             :         { 
   46139             :           attachedPreprocessingInfoPtr_copy = NULL; 
   46140             :         } 
   46141             :   /* check for a valid pointer and delete if present */ 
   46142           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   46143             :   /* add assignment to result here */ 
   46144           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   46145             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   46146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   46147             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   46148           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   46149           0 :      if ( p_attributeMechanism != NULL ) 
   46150             :         { 
   46151           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   46152             :         } 
   46153             :        else 
   46154             :         { 
   46155             :           attributeMechanism_copy = NULL; 
   46156             :         } 
   46157             :   /* check for a valid pointer and delete if present */ 
   46158           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   46159             :   /* add assignment to result here */ 
   46160           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   46161             :   // case: not a listType for (using conditionalToSetParent)expression
   46162           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   46163             :              { 
   46164           0 :                expression_copy->set_parent(result); 
   46165             :              } 
   46166             : 
   46167             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46168             : 
   46169             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   46170             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   46171             :   // fixupCopy(result,help);
   46172             : 
   46173             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   46174             :   // the Sg_File_Info objects that are built for the new IR nodes.
   46175           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   46176           0 :      if (locatedNode != NULL)
   46177             :         {
   46178             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   46179           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   46180           0 :           ROSE_ASSERT(start != NULL);
   46181             : #if 0
   46182             :        // Debugging information
   46183             :           if (start->get_parent() == NULL)
   46184             :              {
   46185             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46186             :              }
   46187             : #endif
   46188           0 :           start->set_parent(locatedNode);
   46189           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   46190             : 
   46191           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   46192             : 
   46193             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   46194             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   46195             :        // ROSE_ASSERT(end != NULL);
   46196           0 :           if (end == NULL)
   46197             :              {
   46198           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   46199             :              }
   46200             :             else
   46201             :              {
   46202             : #if 0
   46203             :             // Debugging information
   46204             :                if (end->get_parent() == NULL)
   46205             :                   {
   46206             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46207             :                   }
   46208             : #endif
   46209           0 :                end->set_parent(locatedNode);
   46210           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   46211             :              }
   46212             : 
   46213           0 :           SgExpression* expression = isSgExpression(result);
   46214           0 :           if (isSgExpression(this) != NULL)
   46215             :              {
   46216           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   46217             : 
   46218             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   46219           0 :                if (operatorPosition != NULL)
   46220             :                   {
   46221             : #if 0
   46222             :                  // Debugging information
   46223             :                     if (operatorPosition->get_parent() == NULL)
   46224             :                        {
   46225             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46226             :                        }
   46227             : #endif
   46228           0 :                     operatorPosition->set_parent(expression);
   46229           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   46230             :                   }
   46231             :              }
   46232             :         }
   46233             : 
   46234             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   46235           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   46236           0 :      if (initializedName != NULL)
   46237             :         {
   46238             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   46239           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   46240           0 :           ROSE_ASSERT(start != NULL);
   46241             : #if 0
   46242             :        // Debugging information
   46243             :           if (start->get_parent() == NULL)
   46244             :              {
   46245             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46246             :              }
   46247             : #endif
   46248           0 :           start->set_parent(initializedName);
   46249           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   46250             : 
   46251             : #if 0
   46252             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   46253             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   46254             : 
   46255             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   46256             :        // ROSE_ASSERT(end != NULL);
   46257             :           if (end == NULL)
   46258             :              {
   46259             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   46260             :              }
   46261             :             else
   46262             :              {
   46263             :                if (end->get_parent() == NULL)
   46264             :                   {
   46265             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46266             :                   }
   46267             :                end->set_parent(initializedName);
   46268             :                ROSE_ASSERT(end->get_parent() != NULL);
   46269             :              }
   46270             : #endif
   46271             :         }
   46272             : 
   46273             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   46274           0 :      help.insertCopiedNodePair(this,result);
   46275             : 
   46276             :   // printf ("End of copy SgOmpDeviceClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   46277             : 
   46278             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   46279             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   46280           0 :      help.decrementDepth();
   46281             : 
   46282             :   // Test if this is the root of the copy!
   46283           0 :      if (help.get_depth() == 0)
   46284             :         {
   46285             :        // This is the original calling node.
   46286             : 
   46287             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   46288             :        // printf ("Calling SgOmpDeviceClause::fixupCopy() (from root of AST being copied) \n");
   46289             : #if ALT_FIXUP_COPY
   46290             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   46291           0 :           fixupCopy_scopes (result,help);
   46292           0 :           fixupCopy_symbols (result,help);
   46293           0 :           fixupCopy_references (result,help);
   46294             : #else
   46295             :           fixupCopy(result,help);
   46296             : #endif
   46297             :        // Allow this to be called recursively, so accumulate the state.
   46298             :        // Also, clear the state in the SgCopyHelp object.
   46299             :        // help.clearState();
   46300             :         }
   46301             : 
   46302           0 :      return result;
   46303             :    }
   46304             : 
   46305             : 
   46306             : /* #line 46307 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   46307             : 
   46308             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46309             : 
   46310           0 : SgNode* SgOmpHintClause::copy ( SgCopyHelp& help) const
   46311             :    {
   46312           0 :      SgOmpHintClause* result = NULL;
   46313             : 
   46314             :   // printf ("Copy SgOmpHintClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   46315             : 
   46316             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   46317             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   46318             :   // The default value of the depth is 0, so after this call the depth is 1!
   46319           0 :      help.incrementDepth();
   46320             : 
   46321             : #if 0
   46322             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   46323             :   // but it is not generally true that things can only be copied once!
   46324             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   46325             :   // AstAttribute* existingAttribute = const_cast<SgOmpHintClause*>(this)->attribute["copied"];
   46326             :      bool previouslyCopied = const_cast<SgOmpHintClause*>(this)->attribute.exists("copied");
   46327             :      if (previouslyCopied == true)
   46328             :         {
   46329             :           this->get_file_info()->display("Called from copy SgOmpHintClause: debug");
   46330             :         }
   46331             :      ROSE_ASSERT(previouslyCopied == false);
   46332             : 
   46333             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   46334             :      AstAttribute* newAttribute = new AstAttribute();
   46335             :      ROSE_ASSERT(newAttribute != NULL);
   46336             : 
   46337             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   46338             :      const_cast<SgOmpHintClause*>(this)->attribute.add("copied",newAttribute);
   46339             : #endif
   46340             : 
   46341             :   // Copy data members from base classes
   46342             :   // Copy constructor parameter data member: startOfConstruct_copy
   46343             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   46344             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   46345           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   46346           0 :      if ( p_startOfConstruct != NULL ) 
   46347             :         { 
   46348           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   46349             :         } 
   46350             :        else 
   46351             :         { 
   46352             :           startOfConstruct_copy = NULL; 
   46353             :         } 
   46354             :   // Copy constructor parameter data member: expression_copy
   46355           0 :      SgExpression* expression_copy; 
   46356             :   // case: not a listType for (using conditionalToCopyVariable)expression
   46357           0 :           if (get_expression() != NULL) 
   46358             :              { 
   46359           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   46360             :              } 
   46361             :             else 
   46362             :              { 
   46363             :                expression_copy = NULL; 
   46364             :              } 
   46365             :  
   46366             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46367             : 
   46368             :   // Build an empty copy of this object (will be filled in, but 
   46369             :   // the parent can't be set and must be set by the caller)
   46370           0 :      result = new SgOmpHintClause(  startOfConstruct_copy, expression_copy );
   46371           0 :      ROSE_ASSERT(result != NULL);
   46372             : 
   46373             :   // Copy data members of "this" class
   46374             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   46375             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   46376             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   46377           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   46378           0 :      if ( p_endOfConstruct != NULL ) 
   46379             :         { 
   46380           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   46381             :         } 
   46382             :        else 
   46383             :         { 
   46384             :           endOfConstruct_copy = NULL; 
   46385             :         } 
   46386             :   /* check for a valid pointer and delete if present */ 
   46387           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   46388             :   /* add assignment to result here */ 
   46389           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   46390             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   46391             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   46392             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   46393           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   46394           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   46395             :         { 
   46396           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   46397             :         } 
   46398             :        else 
   46399             :         { 
   46400             :           attachedPreprocessingInfoPtr_copy = NULL; 
   46401             :         } 
   46402             :   /* check for a valid pointer and delete if present */ 
   46403           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   46404             :   /* add assignment to result here */ 
   46405           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   46406             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   46407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   46408             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   46409           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   46410           0 :      if ( p_attributeMechanism != NULL ) 
   46411             :         { 
   46412           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   46413             :         } 
   46414             :        else 
   46415             :         { 
   46416             :           attributeMechanism_copy = NULL; 
   46417             :         } 
   46418             :   /* check for a valid pointer and delete if present */ 
   46419           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   46420             :   /* add assignment to result here */ 
   46421           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   46422             :   // case: not a listType for (using conditionalToSetParent)expression
   46423           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   46424             :              { 
   46425           0 :                expression_copy->set_parent(result); 
   46426             :              } 
   46427             : 
   46428             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46429             : 
   46430             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   46431             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   46432             :   // fixupCopy(result,help);
   46433             : 
   46434             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   46435             :   // the Sg_File_Info objects that are built for the new IR nodes.
   46436           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   46437           0 :      if (locatedNode != NULL)
   46438             :         {
   46439             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   46440           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   46441           0 :           ROSE_ASSERT(start != NULL);
   46442             : #if 0
   46443             :        // Debugging information
   46444             :           if (start->get_parent() == NULL)
   46445             :              {
   46446             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46447             :              }
   46448             : #endif
   46449           0 :           start->set_parent(locatedNode);
   46450           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   46451             : 
   46452           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   46453             : 
   46454             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   46455             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   46456             :        // ROSE_ASSERT(end != NULL);
   46457           0 :           if (end == NULL)
   46458             :              {
   46459           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   46460             :              }
   46461             :             else
   46462             :              {
   46463             : #if 0
   46464             :             // Debugging information
   46465             :                if (end->get_parent() == NULL)
   46466             :                   {
   46467             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46468             :                   }
   46469             : #endif
   46470           0 :                end->set_parent(locatedNode);
   46471           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   46472             :              }
   46473             : 
   46474           0 :           SgExpression* expression = isSgExpression(result);
   46475           0 :           if (isSgExpression(this) != NULL)
   46476             :              {
   46477           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   46478             : 
   46479             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   46480           0 :                if (operatorPosition != NULL)
   46481             :                   {
   46482             : #if 0
   46483             :                  // Debugging information
   46484             :                     if (operatorPosition->get_parent() == NULL)
   46485             :                        {
   46486             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46487             :                        }
   46488             : #endif
   46489           0 :                     operatorPosition->set_parent(expression);
   46490           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   46491             :                   }
   46492             :              }
   46493             :         }
   46494             : 
   46495             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   46496           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   46497           0 :      if (initializedName != NULL)
   46498             :         {
   46499             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   46500           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   46501           0 :           ROSE_ASSERT(start != NULL);
   46502             : #if 0
   46503             :        // Debugging information
   46504             :           if (start->get_parent() == NULL)
   46505             :              {
   46506             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46507             :              }
   46508             : #endif
   46509           0 :           start->set_parent(initializedName);
   46510           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   46511             : 
   46512             : #if 0
   46513             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   46514             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   46515             : 
   46516             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   46517             :        // ROSE_ASSERT(end != NULL);
   46518             :           if (end == NULL)
   46519             :              {
   46520             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   46521             :              }
   46522             :             else
   46523             :              {
   46524             :                if (end->get_parent() == NULL)
   46525             :                   {
   46526             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46527             :                   }
   46528             :                end->set_parent(initializedName);
   46529             :                ROSE_ASSERT(end->get_parent() != NULL);
   46530             :              }
   46531             : #endif
   46532             :         }
   46533             : 
   46534             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   46535           0 :      help.insertCopiedNodePair(this,result);
   46536             : 
   46537             :   // printf ("End of copy SgOmpHintClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   46538             : 
   46539             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   46540             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   46541           0 :      help.decrementDepth();
   46542             : 
   46543             :   // Test if this is the root of the copy!
   46544           0 :      if (help.get_depth() == 0)
   46545             :         {
   46546             :        // This is the original calling node.
   46547             : 
   46548             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   46549             :        // printf ("Calling SgOmpHintClause::fixupCopy() (from root of AST being copied) \n");
   46550             : #if ALT_FIXUP_COPY
   46551             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   46552           0 :           fixupCopy_scopes (result,help);
   46553           0 :           fixupCopy_symbols (result,help);
   46554           0 :           fixupCopy_references (result,help);
   46555             : #else
   46556             :           fixupCopy(result,help);
   46557             : #endif
   46558             :        // Allow this to be called recursively, so accumulate the state.
   46559             :        // Also, clear the state in the SgCopyHelp object.
   46560             :        // help.clearState();
   46561             :         }
   46562             : 
   46563           0 :      return result;
   46564             :    }
   46565             : 
   46566             : 
   46567             : /* #line 46568 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   46568             : 
   46569             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46570             : 
   46571           0 : SgNode* SgOmpGrainsizeClause::copy ( SgCopyHelp& help) const
   46572             :    {
   46573           0 :      SgOmpGrainsizeClause* result = NULL;
   46574             : 
   46575             :   // printf ("Copy SgOmpGrainsizeClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   46576             : 
   46577             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   46578             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   46579             :   // The default value of the depth is 0, so after this call the depth is 1!
   46580           0 :      help.incrementDepth();
   46581             : 
   46582             : #if 0
   46583             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   46584             :   // but it is not generally true that things can only be copied once!
   46585             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   46586             :   // AstAttribute* existingAttribute = const_cast<SgOmpGrainsizeClause*>(this)->attribute["copied"];
   46587             :      bool previouslyCopied = const_cast<SgOmpGrainsizeClause*>(this)->attribute.exists("copied");
   46588             :      if (previouslyCopied == true)
   46589             :         {
   46590             :           this->get_file_info()->display("Called from copy SgOmpGrainsizeClause: debug");
   46591             :         }
   46592             :      ROSE_ASSERT(previouslyCopied == false);
   46593             : 
   46594             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   46595             :      AstAttribute* newAttribute = new AstAttribute();
   46596             :      ROSE_ASSERT(newAttribute != NULL);
   46597             : 
   46598             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   46599             :      const_cast<SgOmpGrainsizeClause*>(this)->attribute.add("copied",newAttribute);
   46600             : #endif
   46601             : 
   46602             :   // Copy data members from base classes
   46603             :   // Copy constructor parameter data member: startOfConstruct_copy
   46604             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   46605             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   46606           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   46607           0 :      if ( p_startOfConstruct != NULL ) 
   46608             :         { 
   46609           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   46610             :         } 
   46611             :        else 
   46612             :         { 
   46613             :           startOfConstruct_copy = NULL; 
   46614             :         } 
   46615             :   // Copy constructor parameter data member: expression_copy
   46616           0 :      SgExpression* expression_copy; 
   46617             :   // case: not a listType for (using conditionalToCopyVariable)expression
   46618           0 :           if (get_expression() != NULL) 
   46619             :              { 
   46620           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   46621             :              } 
   46622             :             else 
   46623             :              { 
   46624             :                expression_copy = NULL; 
   46625             :              } 
   46626             :  
   46627             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46628             : 
   46629             :   // Build an empty copy of this object (will be filled in, but 
   46630             :   // the parent can't be set and must be set by the caller)
   46631           0 :      result = new SgOmpGrainsizeClause(  startOfConstruct_copy, expression_copy );
   46632           0 :      ROSE_ASSERT(result != NULL);
   46633             : 
   46634             :   // Copy data members of "this" class
   46635             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   46636             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   46637             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   46638           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   46639           0 :      if ( p_endOfConstruct != NULL ) 
   46640             :         { 
   46641           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   46642             :         } 
   46643             :        else 
   46644             :         { 
   46645             :           endOfConstruct_copy = NULL; 
   46646             :         } 
   46647             :   /* check for a valid pointer and delete if present */ 
   46648           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   46649             :   /* add assignment to result here */ 
   46650           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   46651             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   46652             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   46653             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   46654           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   46655           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   46656             :         { 
   46657           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   46658             :         } 
   46659             :        else 
   46660             :         { 
   46661             :           attachedPreprocessingInfoPtr_copy = NULL; 
   46662             :         } 
   46663             :   /* check for a valid pointer and delete if present */ 
   46664           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   46665             :   /* add assignment to result here */ 
   46666           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   46667             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   46668             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   46669             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   46670           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   46671           0 :      if ( p_attributeMechanism != NULL ) 
   46672             :         { 
   46673           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   46674             :         } 
   46675             :        else 
   46676             :         { 
   46677             :           attributeMechanism_copy = NULL; 
   46678             :         } 
   46679             :   /* check for a valid pointer and delete if present */ 
   46680           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   46681             :   /* add assignment to result here */ 
   46682           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   46683             :   // case: not a listType for (using conditionalToSetParent)expression
   46684           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   46685             :              { 
   46686           0 :                expression_copy->set_parent(result); 
   46687             :              } 
   46688             : 
   46689             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46690             : 
   46691             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   46692             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   46693             :   // fixupCopy(result,help);
   46694             : 
   46695             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   46696             :   // the Sg_File_Info objects that are built for the new IR nodes.
   46697           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   46698           0 :      if (locatedNode != NULL)
   46699             :         {
   46700             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   46701           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   46702           0 :           ROSE_ASSERT(start != NULL);
   46703             : #if 0
   46704             :        // Debugging information
   46705             :           if (start->get_parent() == NULL)
   46706             :              {
   46707             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46708             :              }
   46709             : #endif
   46710           0 :           start->set_parent(locatedNode);
   46711           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   46712             : 
   46713           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   46714             : 
   46715             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   46716             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   46717             :        // ROSE_ASSERT(end != NULL);
   46718           0 :           if (end == NULL)
   46719             :              {
   46720           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   46721             :              }
   46722             :             else
   46723             :              {
   46724             : #if 0
   46725             :             // Debugging information
   46726             :                if (end->get_parent() == NULL)
   46727             :                   {
   46728             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46729             :                   }
   46730             : #endif
   46731           0 :                end->set_parent(locatedNode);
   46732           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   46733             :              }
   46734             : 
   46735           0 :           SgExpression* expression = isSgExpression(result);
   46736           0 :           if (isSgExpression(this) != NULL)
   46737             :              {
   46738           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   46739             : 
   46740             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   46741           0 :                if (operatorPosition != NULL)
   46742             :                   {
   46743             : #if 0
   46744             :                  // Debugging information
   46745             :                     if (operatorPosition->get_parent() == NULL)
   46746             :                        {
   46747             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46748             :                        }
   46749             : #endif
   46750           0 :                     operatorPosition->set_parent(expression);
   46751           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   46752             :                   }
   46753             :              }
   46754             :         }
   46755             : 
   46756             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   46757           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   46758           0 :      if (initializedName != NULL)
   46759             :         {
   46760             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   46761           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   46762           0 :           ROSE_ASSERT(start != NULL);
   46763             : #if 0
   46764             :        // Debugging information
   46765             :           if (start->get_parent() == NULL)
   46766             :              {
   46767             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46768             :              }
   46769             : #endif
   46770           0 :           start->set_parent(initializedName);
   46771           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   46772             : 
   46773             : #if 0
   46774             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   46775             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   46776             : 
   46777             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   46778             :        // ROSE_ASSERT(end != NULL);
   46779             :           if (end == NULL)
   46780             :              {
   46781             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   46782             :              }
   46783             :             else
   46784             :              {
   46785             :                if (end->get_parent() == NULL)
   46786             :                   {
   46787             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46788             :                   }
   46789             :                end->set_parent(initializedName);
   46790             :                ROSE_ASSERT(end->get_parent() != NULL);
   46791             :              }
   46792             : #endif
   46793             :         }
   46794             : 
   46795             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   46796           0 :      help.insertCopiedNodePair(this,result);
   46797             : 
   46798             :   // printf ("End of copy SgOmpGrainsizeClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   46799             : 
   46800             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   46801             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   46802           0 :      help.decrementDepth();
   46803             : 
   46804             :   // Test if this is the root of the copy!
   46805           0 :      if (help.get_depth() == 0)
   46806             :         {
   46807             :        // This is the original calling node.
   46808             : 
   46809             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   46810             :        // printf ("Calling SgOmpGrainsizeClause::fixupCopy() (from root of AST being copied) \n");
   46811             : #if ALT_FIXUP_COPY
   46812             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   46813           0 :           fixupCopy_scopes (result,help);
   46814           0 :           fixupCopy_symbols (result,help);
   46815           0 :           fixupCopy_references (result,help);
   46816             : #else
   46817             :           fixupCopy(result,help);
   46818             : #endif
   46819             :        // Allow this to be called recursively, so accumulate the state.
   46820             :        // Also, clear the state in the SgCopyHelp object.
   46821             :        // help.clearState();
   46822             :         }
   46823             : 
   46824           0 :      return result;
   46825             :    }
   46826             : 
   46827             : 
   46828             : /* #line 46829 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   46829             : 
   46830             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46831             : 
   46832           0 : SgNode* SgOmpNumTasksClause::copy ( SgCopyHelp& help) const
   46833             :    {
   46834           0 :      SgOmpNumTasksClause* result = NULL;
   46835             : 
   46836             :   // printf ("Copy SgOmpNumTasksClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   46837             : 
   46838             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   46839             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   46840             :   // The default value of the depth is 0, so after this call the depth is 1!
   46841           0 :      help.incrementDepth();
   46842             : 
   46843             : #if 0
   46844             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   46845             :   // but it is not generally true that things can only be copied once!
   46846             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   46847             :   // AstAttribute* existingAttribute = const_cast<SgOmpNumTasksClause*>(this)->attribute["copied"];
   46848             :      bool previouslyCopied = const_cast<SgOmpNumTasksClause*>(this)->attribute.exists("copied");
   46849             :      if (previouslyCopied == true)
   46850             :         {
   46851             :           this->get_file_info()->display("Called from copy SgOmpNumTasksClause: debug");
   46852             :         }
   46853             :      ROSE_ASSERT(previouslyCopied == false);
   46854             : 
   46855             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   46856             :      AstAttribute* newAttribute = new AstAttribute();
   46857             :      ROSE_ASSERT(newAttribute != NULL);
   46858             : 
   46859             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   46860             :      const_cast<SgOmpNumTasksClause*>(this)->attribute.add("copied",newAttribute);
   46861             : #endif
   46862             : 
   46863             :   // Copy data members from base classes
   46864             :   // Copy constructor parameter data member: startOfConstruct_copy
   46865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   46866             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   46867           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   46868           0 :      if ( p_startOfConstruct != NULL ) 
   46869             :         { 
   46870           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   46871             :         } 
   46872             :        else 
   46873             :         { 
   46874             :           startOfConstruct_copy = NULL; 
   46875             :         } 
   46876             :   // Copy constructor parameter data member: expression_copy
   46877           0 :      SgExpression* expression_copy; 
   46878             :   // case: not a listType for (using conditionalToCopyVariable)expression
   46879           0 :           if (get_expression() != NULL) 
   46880             :              { 
   46881           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   46882             :              } 
   46883             :             else 
   46884             :              { 
   46885             :                expression_copy = NULL; 
   46886             :              } 
   46887             :  
   46888             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46889             : 
   46890             :   // Build an empty copy of this object (will be filled in, but 
   46891             :   // the parent can't be set and must be set by the caller)
   46892           0 :      result = new SgOmpNumTasksClause(  startOfConstruct_copy, expression_copy );
   46893           0 :      ROSE_ASSERT(result != NULL);
   46894             : 
   46895             :   // Copy data members of "this" class
   46896             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   46897             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   46898             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   46899           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   46900           0 :      if ( p_endOfConstruct != NULL ) 
   46901             :         { 
   46902           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   46903             :         } 
   46904             :        else 
   46905             :         { 
   46906             :           endOfConstruct_copy = NULL; 
   46907             :         } 
   46908             :   /* check for a valid pointer and delete if present */ 
   46909           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   46910             :   /* add assignment to result here */ 
   46911           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   46912             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   46913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   46914             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   46915           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   46916           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   46917             :         { 
   46918           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   46919             :         } 
   46920             :        else 
   46921             :         { 
   46922             :           attachedPreprocessingInfoPtr_copy = NULL; 
   46923             :         } 
   46924             :   /* check for a valid pointer and delete if present */ 
   46925           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   46926             :   /* add assignment to result here */ 
   46927           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   46928             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   46929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   46930             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   46931           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   46932           0 :      if ( p_attributeMechanism != NULL ) 
   46933             :         { 
   46934           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   46935             :         } 
   46936             :        else 
   46937             :         { 
   46938             :           attributeMechanism_copy = NULL; 
   46939             :         } 
   46940             :   /* check for a valid pointer and delete if present */ 
   46941           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   46942             :   /* add assignment to result here */ 
   46943           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   46944             :   // case: not a listType for (using conditionalToSetParent)expression
   46945           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   46946             :              { 
   46947           0 :                expression_copy->set_parent(result); 
   46948             :              } 
   46949             : 
   46950             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   46951             : 
   46952             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   46953             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   46954             :   // fixupCopy(result,help);
   46955             : 
   46956             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   46957             :   // the Sg_File_Info objects that are built for the new IR nodes.
   46958           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   46959           0 :      if (locatedNode != NULL)
   46960             :         {
   46961             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   46962           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   46963           0 :           ROSE_ASSERT(start != NULL);
   46964             : #if 0
   46965             :        // Debugging information
   46966             :           if (start->get_parent() == NULL)
   46967             :              {
   46968             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46969             :              }
   46970             : #endif
   46971           0 :           start->set_parent(locatedNode);
   46972           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   46973             : 
   46974           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   46975             : 
   46976             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   46977             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   46978             :        // ROSE_ASSERT(end != NULL);
   46979           0 :           if (end == NULL)
   46980             :              {
   46981           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   46982             :              }
   46983             :             else
   46984             :              {
   46985             : #if 0
   46986             :             // Debugging information
   46987             :                if (end->get_parent() == NULL)
   46988             :                   {
   46989             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   46990             :                   }
   46991             : #endif
   46992           0 :                end->set_parent(locatedNode);
   46993           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   46994             :              }
   46995             : 
   46996           0 :           SgExpression* expression = isSgExpression(result);
   46997           0 :           if (isSgExpression(this) != NULL)
   46998             :              {
   46999           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   47000             : 
   47001             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   47002           0 :                if (operatorPosition != NULL)
   47003             :                   {
   47004             : #if 0
   47005             :                  // Debugging information
   47006             :                     if (operatorPosition->get_parent() == NULL)
   47007             :                        {
   47008             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47009             :                        }
   47010             : #endif
   47011           0 :                     operatorPosition->set_parent(expression);
   47012           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   47013             :                   }
   47014             :              }
   47015             :         }
   47016             : 
   47017             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   47018           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   47019           0 :      if (initializedName != NULL)
   47020             :         {
   47021             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   47022           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   47023           0 :           ROSE_ASSERT(start != NULL);
   47024             : #if 0
   47025             :        // Debugging information
   47026             :           if (start->get_parent() == NULL)
   47027             :              {
   47028             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47029             :              }
   47030             : #endif
   47031           0 :           start->set_parent(initializedName);
   47032           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   47033             : 
   47034             : #if 0
   47035             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   47036             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   47037             : 
   47038             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   47039             :        // ROSE_ASSERT(end != NULL);
   47040             :           if (end == NULL)
   47041             :              {
   47042             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   47043             :              }
   47044             :             else
   47045             :              {
   47046             :                if (end->get_parent() == NULL)
   47047             :                   {
   47048             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47049             :                   }
   47050             :                end->set_parent(initializedName);
   47051             :                ROSE_ASSERT(end->get_parent() != NULL);
   47052             :              }
   47053             : #endif
   47054             :         }
   47055             : 
   47056             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   47057           0 :      help.insertCopiedNodePair(this,result);
   47058             : 
   47059             :   // printf ("End of copy SgOmpNumTasksClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   47060             : 
   47061             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   47062             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   47063           0 :      help.decrementDepth();
   47064             : 
   47065             :   // Test if this is the root of the copy!
   47066           0 :      if (help.get_depth() == 0)
   47067             :         {
   47068             :        // This is the original calling node.
   47069             : 
   47070             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   47071             :        // printf ("Calling SgOmpNumTasksClause::fixupCopy() (from root of AST being copied) \n");
   47072             : #if ALT_FIXUP_COPY
   47073             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   47074           0 :           fixupCopy_scopes (result,help);
   47075           0 :           fixupCopy_symbols (result,help);
   47076           0 :           fixupCopy_references (result,help);
   47077             : #else
   47078             :           fixupCopy(result,help);
   47079             : #endif
   47080             :        // Allow this to be called recursively, so accumulate the state.
   47081             :        // Also, clear the state in the SgCopyHelp object.
   47082             :        // help.clearState();
   47083             :         }
   47084             : 
   47085           0 :      return result;
   47086             :    }
   47087             : 
   47088             : 
   47089             : /* #line 47090 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   47090             : 
   47091             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47092             : 
   47093           0 : SgNode* SgOmpDetachClause::copy ( SgCopyHelp& help) const
   47094             :    {
   47095           0 :      SgOmpDetachClause* result = NULL;
   47096             : 
   47097             :   // printf ("Copy SgOmpDetachClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   47098             : 
   47099             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   47100             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   47101             :   // The default value of the depth is 0, so after this call the depth is 1!
   47102           0 :      help.incrementDepth();
   47103             : 
   47104             : #if 0
   47105             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   47106             :   // but it is not generally true that things can only be copied once!
   47107             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   47108             :   // AstAttribute* existingAttribute = const_cast<SgOmpDetachClause*>(this)->attribute["copied"];
   47109             :      bool previouslyCopied = const_cast<SgOmpDetachClause*>(this)->attribute.exists("copied");
   47110             :      if (previouslyCopied == true)
   47111             :         {
   47112             :           this->get_file_info()->display("Called from copy SgOmpDetachClause: debug");
   47113             :         }
   47114             :      ROSE_ASSERT(previouslyCopied == false);
   47115             : 
   47116             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   47117             :      AstAttribute* newAttribute = new AstAttribute();
   47118             :      ROSE_ASSERT(newAttribute != NULL);
   47119             : 
   47120             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   47121             :      const_cast<SgOmpDetachClause*>(this)->attribute.add("copied",newAttribute);
   47122             : #endif
   47123             : 
   47124             :   // Copy data members from base classes
   47125             :   // Copy constructor parameter data member: startOfConstruct_copy
   47126             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   47127             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   47128           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   47129           0 :      if ( p_startOfConstruct != NULL ) 
   47130             :         { 
   47131           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   47132             :         } 
   47133             :        else 
   47134             :         { 
   47135             :           startOfConstruct_copy = NULL; 
   47136             :         } 
   47137             :   // Copy constructor parameter data member: expression_copy
   47138           0 :      SgExpression* expression_copy; 
   47139             :   // case: not a listType for (using conditionalToCopyVariable)expression
   47140           0 :           if (get_expression() != NULL) 
   47141             :              { 
   47142           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   47143             :              } 
   47144             :             else 
   47145             :              { 
   47146             :                expression_copy = NULL; 
   47147             :              } 
   47148             :  
   47149             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47150             : 
   47151             :   // Build an empty copy of this object (will be filled in, but 
   47152             :   // the parent can't be set and must be set by the caller)
   47153           0 :      result = new SgOmpDetachClause(  startOfConstruct_copy, expression_copy );
   47154           0 :      ROSE_ASSERT(result != NULL);
   47155             : 
   47156             :   // Copy data members of "this" class
   47157             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   47158             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   47159             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   47160           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   47161           0 :      if ( p_endOfConstruct != NULL ) 
   47162             :         { 
   47163           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   47164             :         } 
   47165             :        else 
   47166             :         { 
   47167             :           endOfConstruct_copy = NULL; 
   47168             :         } 
   47169             :   /* check for a valid pointer and delete if present */ 
   47170           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   47171             :   /* add assignment to result here */ 
   47172           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   47173             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   47174             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   47175             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   47176           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   47177           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   47178             :         { 
   47179           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   47180             :         } 
   47181             :        else 
   47182             :         { 
   47183             :           attachedPreprocessingInfoPtr_copy = NULL; 
   47184             :         } 
   47185             :   /* check for a valid pointer and delete if present */ 
   47186           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   47187             :   /* add assignment to result here */ 
   47188           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   47189             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   47190             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   47191             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   47192           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   47193           0 :      if ( p_attributeMechanism != NULL ) 
   47194             :         { 
   47195           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   47196             :         } 
   47197             :        else 
   47198             :         { 
   47199             :           attributeMechanism_copy = NULL; 
   47200             :         } 
   47201             :   /* check for a valid pointer and delete if present */ 
   47202           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   47203             :   /* add assignment to result here */ 
   47204           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   47205             :   // case: not a listType for (using conditionalToSetParent)expression
   47206           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   47207             :              { 
   47208           0 :                expression_copy->set_parent(result); 
   47209             :              } 
   47210             : 
   47211             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47212             : 
   47213             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   47214             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   47215             :   // fixupCopy(result,help);
   47216             : 
   47217             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   47218             :   // the Sg_File_Info objects that are built for the new IR nodes.
   47219           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   47220           0 :      if (locatedNode != NULL)
   47221             :         {
   47222             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   47223           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   47224           0 :           ROSE_ASSERT(start != NULL);
   47225             : #if 0
   47226             :        // Debugging information
   47227             :           if (start->get_parent() == NULL)
   47228             :              {
   47229             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47230             :              }
   47231             : #endif
   47232           0 :           start->set_parent(locatedNode);
   47233           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   47234             : 
   47235           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   47236             : 
   47237             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   47238             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   47239             :        // ROSE_ASSERT(end != NULL);
   47240           0 :           if (end == NULL)
   47241             :              {
   47242           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   47243             :              }
   47244             :             else
   47245             :              {
   47246             : #if 0
   47247             :             // Debugging information
   47248             :                if (end->get_parent() == NULL)
   47249             :                   {
   47250             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47251             :                   }
   47252             : #endif
   47253           0 :                end->set_parent(locatedNode);
   47254           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   47255             :              }
   47256             : 
   47257           0 :           SgExpression* expression = isSgExpression(result);
   47258           0 :           if (isSgExpression(this) != NULL)
   47259             :              {
   47260           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   47261             : 
   47262             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   47263           0 :                if (operatorPosition != NULL)
   47264             :                   {
   47265             : #if 0
   47266             :                  // Debugging information
   47267             :                     if (operatorPosition->get_parent() == NULL)
   47268             :                        {
   47269             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47270             :                        }
   47271             : #endif
   47272           0 :                     operatorPosition->set_parent(expression);
   47273           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   47274             :                   }
   47275             :              }
   47276             :         }
   47277             : 
   47278             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   47279           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   47280           0 :      if (initializedName != NULL)
   47281             :         {
   47282             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   47283           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   47284           0 :           ROSE_ASSERT(start != NULL);
   47285             : #if 0
   47286             :        // Debugging information
   47287             :           if (start->get_parent() == NULL)
   47288             :              {
   47289             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47290             :              }
   47291             : #endif
   47292           0 :           start->set_parent(initializedName);
   47293           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   47294             : 
   47295             : #if 0
   47296             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   47297             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   47298             : 
   47299             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   47300             :        // ROSE_ASSERT(end != NULL);
   47301             :           if (end == NULL)
   47302             :              {
   47303             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   47304             :              }
   47305             :             else
   47306             :              {
   47307             :                if (end->get_parent() == NULL)
   47308             :                   {
   47309             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47310             :                   }
   47311             :                end->set_parent(initializedName);
   47312             :                ROSE_ASSERT(end->get_parent() != NULL);
   47313             :              }
   47314             : #endif
   47315             :         }
   47316             : 
   47317             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   47318           0 :      help.insertCopiedNodePair(this,result);
   47319             : 
   47320             :   // printf ("End of copy SgOmpDetachClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   47321             : 
   47322             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   47323             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   47324           0 :      help.decrementDepth();
   47325             : 
   47326             :   // Test if this is the root of the copy!
   47327           0 :      if (help.get_depth() == 0)
   47328             :         {
   47329             :        // This is the original calling node.
   47330             : 
   47331             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   47332             :        // printf ("Calling SgOmpDetachClause::fixupCopy() (from root of AST being copied) \n");
   47333             : #if ALT_FIXUP_COPY
   47334             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   47335           0 :           fixupCopy_scopes (result,help);
   47336           0 :           fixupCopy_symbols (result,help);
   47337           0 :           fixupCopy_references (result,help);
   47338             : #else
   47339             :           fixupCopy(result,help);
   47340             : #endif
   47341             :        // Allow this to be called recursively, so accumulate the state.
   47342             :        // Also, clear the state in the SgCopyHelp object.
   47343             :        // help.clearState();
   47344             :         }
   47345             : 
   47346           0 :      return result;
   47347             :    }
   47348             : 
   47349             : 
   47350             : /* #line 47351 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   47351             : 
   47352             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47353             : 
   47354           0 : SgNode* SgOmpSafelenClause::copy ( SgCopyHelp& help) const
   47355             :    {
   47356           0 :      SgOmpSafelenClause* result = NULL;
   47357             : 
   47358             :   // printf ("Copy SgOmpSafelenClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   47359             : 
   47360             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   47361             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   47362             :   // The default value of the depth is 0, so after this call the depth is 1!
   47363           0 :      help.incrementDepth();
   47364             : 
   47365             : #if 0
   47366             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   47367             :   // but it is not generally true that things can only be copied once!
   47368             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   47369             :   // AstAttribute* existingAttribute = const_cast<SgOmpSafelenClause*>(this)->attribute["copied"];
   47370             :      bool previouslyCopied = const_cast<SgOmpSafelenClause*>(this)->attribute.exists("copied");
   47371             :      if (previouslyCopied == true)
   47372             :         {
   47373             :           this->get_file_info()->display("Called from copy SgOmpSafelenClause: debug");
   47374             :         }
   47375             :      ROSE_ASSERT(previouslyCopied == false);
   47376             : 
   47377             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   47378             :      AstAttribute* newAttribute = new AstAttribute();
   47379             :      ROSE_ASSERT(newAttribute != NULL);
   47380             : 
   47381             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   47382             :      const_cast<SgOmpSafelenClause*>(this)->attribute.add("copied",newAttribute);
   47383             : #endif
   47384             : 
   47385             :   // Copy data members from base classes
   47386             :   // Copy constructor parameter data member: startOfConstruct_copy
   47387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   47388             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   47389           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   47390           0 :      if ( p_startOfConstruct != NULL ) 
   47391             :         { 
   47392           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   47393             :         } 
   47394             :        else 
   47395             :         { 
   47396             :           startOfConstruct_copy = NULL; 
   47397             :         } 
   47398             :   // Copy constructor parameter data member: expression_copy
   47399           0 :      SgExpression* expression_copy; 
   47400             :   // case: not a listType for (using conditionalToCopyVariable)expression
   47401           0 :           if (get_expression() != NULL) 
   47402             :              { 
   47403           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   47404             :              } 
   47405             :             else 
   47406             :              { 
   47407             :                expression_copy = NULL; 
   47408             :              } 
   47409             :  
   47410             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47411             : 
   47412             :   // Build an empty copy of this object (will be filled in, but 
   47413             :   // the parent can't be set and must be set by the caller)
   47414           0 :      result = new SgOmpSafelenClause(  startOfConstruct_copy, expression_copy );
   47415           0 :      ROSE_ASSERT(result != NULL);
   47416             : 
   47417             :   // Copy data members of "this" class
   47418             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   47419             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   47420             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   47421           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   47422           0 :      if ( p_endOfConstruct != NULL ) 
   47423             :         { 
   47424           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   47425             :         } 
   47426             :        else 
   47427             :         { 
   47428             :           endOfConstruct_copy = NULL; 
   47429             :         } 
   47430             :   /* check for a valid pointer and delete if present */ 
   47431           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   47432             :   /* add assignment to result here */ 
   47433           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   47434             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   47435             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   47436             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   47437           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   47438           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   47439             :         { 
   47440           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   47441             :         } 
   47442             :        else 
   47443             :         { 
   47444             :           attachedPreprocessingInfoPtr_copy = NULL; 
   47445             :         } 
   47446             :   /* check for a valid pointer and delete if present */ 
   47447           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   47448             :   /* add assignment to result here */ 
   47449           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   47450             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   47451             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   47452             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   47453           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   47454           0 :      if ( p_attributeMechanism != NULL ) 
   47455             :         { 
   47456           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   47457             :         } 
   47458             :        else 
   47459             :         { 
   47460             :           attributeMechanism_copy = NULL; 
   47461             :         } 
   47462             :   /* check for a valid pointer and delete if present */ 
   47463           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   47464             :   /* add assignment to result here */ 
   47465           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   47466             :   // case: not a listType for (using conditionalToSetParent)expression
   47467           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   47468             :              { 
   47469           0 :                expression_copy->set_parent(result); 
   47470             :              } 
   47471             : 
   47472             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47473             : 
   47474             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   47475             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   47476             :   // fixupCopy(result,help);
   47477             : 
   47478             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   47479             :   // the Sg_File_Info objects that are built for the new IR nodes.
   47480           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   47481           0 :      if (locatedNode != NULL)
   47482             :         {
   47483             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   47484           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   47485           0 :           ROSE_ASSERT(start != NULL);
   47486             : #if 0
   47487             :        // Debugging information
   47488             :           if (start->get_parent() == NULL)
   47489             :              {
   47490             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47491             :              }
   47492             : #endif
   47493           0 :           start->set_parent(locatedNode);
   47494           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   47495             : 
   47496           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   47497             : 
   47498             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   47499             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   47500             :        // ROSE_ASSERT(end != NULL);
   47501           0 :           if (end == NULL)
   47502             :              {
   47503           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   47504             :              }
   47505             :             else
   47506             :              {
   47507             : #if 0
   47508             :             // Debugging information
   47509             :                if (end->get_parent() == NULL)
   47510             :                   {
   47511             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47512             :                   }
   47513             : #endif
   47514           0 :                end->set_parent(locatedNode);
   47515           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   47516             :              }
   47517             : 
   47518           0 :           SgExpression* expression = isSgExpression(result);
   47519           0 :           if (isSgExpression(this) != NULL)
   47520             :              {
   47521           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   47522             : 
   47523             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   47524           0 :                if (operatorPosition != NULL)
   47525             :                   {
   47526             : #if 0
   47527             :                  // Debugging information
   47528             :                     if (operatorPosition->get_parent() == NULL)
   47529             :                        {
   47530             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47531             :                        }
   47532             : #endif
   47533           0 :                     operatorPosition->set_parent(expression);
   47534           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   47535             :                   }
   47536             :              }
   47537             :         }
   47538             : 
   47539             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   47540           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   47541           0 :      if (initializedName != NULL)
   47542             :         {
   47543             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   47544           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   47545           0 :           ROSE_ASSERT(start != NULL);
   47546             : #if 0
   47547             :        // Debugging information
   47548             :           if (start->get_parent() == NULL)
   47549             :              {
   47550             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47551             :              }
   47552             : #endif
   47553           0 :           start->set_parent(initializedName);
   47554           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   47555             : 
   47556             : #if 0
   47557             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   47558             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   47559             : 
   47560             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   47561             :        // ROSE_ASSERT(end != NULL);
   47562             :           if (end == NULL)
   47563             :              {
   47564             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   47565             :              }
   47566             :             else
   47567             :              {
   47568             :                if (end->get_parent() == NULL)
   47569             :                   {
   47570             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47571             :                   }
   47572             :                end->set_parent(initializedName);
   47573             :                ROSE_ASSERT(end->get_parent() != NULL);
   47574             :              }
   47575             : #endif
   47576             :         }
   47577             : 
   47578             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   47579           0 :      help.insertCopiedNodePair(this,result);
   47580             : 
   47581             :   // printf ("End of copy SgOmpSafelenClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   47582             : 
   47583             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   47584             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   47585           0 :      help.decrementDepth();
   47586             : 
   47587             :   // Test if this is the root of the copy!
   47588           0 :      if (help.get_depth() == 0)
   47589             :         {
   47590             :        // This is the original calling node.
   47591             : 
   47592             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   47593             :        // printf ("Calling SgOmpSafelenClause::fixupCopy() (from root of AST being copied) \n");
   47594             : #if ALT_FIXUP_COPY
   47595             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   47596           0 :           fixupCopy_scopes (result,help);
   47597           0 :           fixupCopy_symbols (result,help);
   47598           0 :           fixupCopy_references (result,help);
   47599             : #else
   47600             :           fixupCopy(result,help);
   47601             : #endif
   47602             :        // Allow this to be called recursively, so accumulate the state.
   47603             :        // Also, clear the state in the SgCopyHelp object.
   47604             :        // help.clearState();
   47605             :         }
   47606             : 
   47607           0 :      return result;
   47608             :    }
   47609             : 
   47610             : 
   47611             : /* #line 47612 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   47612             : 
   47613             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47614             : 
   47615           0 : SgNode* SgOmpSimdlenClause::copy ( SgCopyHelp& help) const
   47616             :    {
   47617           0 :      SgOmpSimdlenClause* result = NULL;
   47618             : 
   47619             :   // printf ("Copy SgOmpSimdlenClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   47620             : 
   47621             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   47622             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   47623             :   // The default value of the depth is 0, so after this call the depth is 1!
   47624           0 :      help.incrementDepth();
   47625             : 
   47626             : #if 0
   47627             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   47628             :   // but it is not generally true that things can only be copied once!
   47629             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   47630             :   // AstAttribute* existingAttribute = const_cast<SgOmpSimdlenClause*>(this)->attribute["copied"];
   47631             :      bool previouslyCopied = const_cast<SgOmpSimdlenClause*>(this)->attribute.exists("copied");
   47632             :      if (previouslyCopied == true)
   47633             :         {
   47634             :           this->get_file_info()->display("Called from copy SgOmpSimdlenClause: debug");
   47635             :         }
   47636             :      ROSE_ASSERT(previouslyCopied == false);
   47637             : 
   47638             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   47639             :      AstAttribute* newAttribute = new AstAttribute();
   47640             :      ROSE_ASSERT(newAttribute != NULL);
   47641             : 
   47642             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   47643             :      const_cast<SgOmpSimdlenClause*>(this)->attribute.add("copied",newAttribute);
   47644             : #endif
   47645             : 
   47646             :   // Copy data members from base classes
   47647             :   // Copy constructor parameter data member: startOfConstruct_copy
   47648             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   47649             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   47650           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   47651           0 :      if ( p_startOfConstruct != NULL ) 
   47652             :         { 
   47653           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   47654             :         } 
   47655             :        else 
   47656             :         { 
   47657             :           startOfConstruct_copy = NULL; 
   47658             :         } 
   47659             :   // Copy constructor parameter data member: expression_copy
   47660           0 :      SgExpression* expression_copy; 
   47661             :   // case: not a listType for (using conditionalToCopyVariable)expression
   47662           0 :           if (get_expression() != NULL) 
   47663             :              { 
   47664           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   47665             :              } 
   47666             :             else 
   47667             :              { 
   47668             :                expression_copy = NULL; 
   47669             :              } 
   47670             :  
   47671             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47672             : 
   47673             :   // Build an empty copy of this object (will be filled in, but 
   47674             :   // the parent can't be set and must be set by the caller)
   47675           0 :      result = new SgOmpSimdlenClause(  startOfConstruct_copy, expression_copy );
   47676           0 :      ROSE_ASSERT(result != NULL);
   47677             : 
   47678             :   // Copy data members of "this" class
   47679             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   47680             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   47681             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   47682           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   47683           0 :      if ( p_endOfConstruct != NULL ) 
   47684             :         { 
   47685           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   47686             :         } 
   47687             :        else 
   47688             :         { 
   47689             :           endOfConstruct_copy = NULL; 
   47690             :         } 
   47691             :   /* check for a valid pointer and delete if present */ 
   47692           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   47693             :   /* add assignment to result here */ 
   47694           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   47695             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   47696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   47697             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   47698           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   47699           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   47700             :         { 
   47701           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   47702             :         } 
   47703             :        else 
   47704             :         { 
   47705             :           attachedPreprocessingInfoPtr_copy = NULL; 
   47706             :         } 
   47707             :   /* check for a valid pointer and delete if present */ 
   47708           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   47709             :   /* add assignment to result here */ 
   47710           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   47711             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   47712             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   47713             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   47714           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   47715           0 :      if ( p_attributeMechanism != NULL ) 
   47716             :         { 
   47717           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   47718             :         } 
   47719             :        else 
   47720             :         { 
   47721             :           attributeMechanism_copy = NULL; 
   47722             :         } 
   47723             :   /* check for a valid pointer and delete if present */ 
   47724           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   47725             :   /* add assignment to result here */ 
   47726           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   47727             :   // case: not a listType for (using conditionalToSetParent)expression
   47728           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   47729             :              { 
   47730           0 :                expression_copy->set_parent(result); 
   47731             :              } 
   47732             : 
   47733             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47734             : 
   47735             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   47736             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   47737             :   // fixupCopy(result,help);
   47738             : 
   47739             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   47740             :   // the Sg_File_Info objects that are built for the new IR nodes.
   47741           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   47742           0 :      if (locatedNode != NULL)
   47743             :         {
   47744             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   47745           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   47746           0 :           ROSE_ASSERT(start != NULL);
   47747             : #if 0
   47748             :        // Debugging information
   47749             :           if (start->get_parent() == NULL)
   47750             :              {
   47751             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47752             :              }
   47753             : #endif
   47754           0 :           start->set_parent(locatedNode);
   47755           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   47756             : 
   47757           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   47758             : 
   47759             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   47760             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   47761             :        // ROSE_ASSERT(end != NULL);
   47762           0 :           if (end == NULL)
   47763             :              {
   47764           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   47765             :              }
   47766             :             else
   47767             :              {
   47768             : #if 0
   47769             :             // Debugging information
   47770             :                if (end->get_parent() == NULL)
   47771             :                   {
   47772             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47773             :                   }
   47774             : #endif
   47775           0 :                end->set_parent(locatedNode);
   47776           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   47777             :              }
   47778             : 
   47779           0 :           SgExpression* expression = isSgExpression(result);
   47780           0 :           if (isSgExpression(this) != NULL)
   47781             :              {
   47782           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   47783             : 
   47784             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   47785           0 :                if (operatorPosition != NULL)
   47786             :                   {
   47787             : #if 0
   47788             :                  // Debugging information
   47789             :                     if (operatorPosition->get_parent() == NULL)
   47790             :                        {
   47791             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47792             :                        }
   47793             : #endif
   47794           0 :                     operatorPosition->set_parent(expression);
   47795           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   47796             :                   }
   47797             :              }
   47798             :         }
   47799             : 
   47800             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   47801           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   47802           0 :      if (initializedName != NULL)
   47803             :         {
   47804             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   47805           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   47806           0 :           ROSE_ASSERT(start != NULL);
   47807             : #if 0
   47808             :        // Debugging information
   47809             :           if (start->get_parent() == NULL)
   47810             :              {
   47811             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47812             :              }
   47813             : #endif
   47814           0 :           start->set_parent(initializedName);
   47815           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   47816             : 
   47817             : #if 0
   47818             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   47819             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   47820             : 
   47821             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   47822             :        // ROSE_ASSERT(end != NULL);
   47823             :           if (end == NULL)
   47824             :              {
   47825             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   47826             :              }
   47827             :             else
   47828             :              {
   47829             :                if (end->get_parent() == NULL)
   47830             :                   {
   47831             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   47832             :                   }
   47833             :                end->set_parent(initializedName);
   47834             :                ROSE_ASSERT(end->get_parent() != NULL);
   47835             :              }
   47836             : #endif
   47837             :         }
   47838             : 
   47839             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   47840           0 :      help.insertCopiedNodePair(this,result);
   47841             : 
   47842             :   // printf ("End of copy SgOmpSimdlenClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   47843             : 
   47844             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   47845             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   47846           0 :      help.decrementDepth();
   47847             : 
   47848             :   // Test if this is the root of the copy!
   47849           0 :      if (help.get_depth() == 0)
   47850             :         {
   47851             :        // This is the original calling node.
   47852             : 
   47853             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   47854             :        // printf ("Calling SgOmpSimdlenClause::fixupCopy() (from root of AST being copied) \n");
   47855             : #if ALT_FIXUP_COPY
   47856             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   47857           0 :           fixupCopy_scopes (result,help);
   47858           0 :           fixupCopy_symbols (result,help);
   47859           0 :           fixupCopy_references (result,help);
   47860             : #else
   47861             :           fixupCopy(result,help);
   47862             : #endif
   47863             :        // Allow this to be called recursively, so accumulate the state.
   47864             :        // Also, clear the state in the SgCopyHelp object.
   47865             :        // help.clearState();
   47866             :         }
   47867             : 
   47868           0 :      return result;
   47869             :    }
   47870             : 
   47871             : 
   47872             : /* #line 47873 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   47873             : 
   47874             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47875             : 
   47876           0 : SgNode* SgOmpFinalClause::copy ( SgCopyHelp& help) const
   47877             :    {
   47878           0 :      SgOmpFinalClause* result = NULL;
   47879             : 
   47880             :   // printf ("Copy SgOmpFinalClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   47881             : 
   47882             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   47883             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   47884             :   // The default value of the depth is 0, so after this call the depth is 1!
   47885           0 :      help.incrementDepth();
   47886             : 
   47887             : #if 0
   47888             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   47889             :   // but it is not generally true that things can only be copied once!
   47890             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   47891             :   // AstAttribute* existingAttribute = const_cast<SgOmpFinalClause*>(this)->attribute["copied"];
   47892             :      bool previouslyCopied = const_cast<SgOmpFinalClause*>(this)->attribute.exists("copied");
   47893             :      if (previouslyCopied == true)
   47894             :         {
   47895             :           this->get_file_info()->display("Called from copy SgOmpFinalClause: debug");
   47896             :         }
   47897             :      ROSE_ASSERT(previouslyCopied == false);
   47898             : 
   47899             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   47900             :      AstAttribute* newAttribute = new AstAttribute();
   47901             :      ROSE_ASSERT(newAttribute != NULL);
   47902             : 
   47903             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   47904             :      const_cast<SgOmpFinalClause*>(this)->attribute.add("copied",newAttribute);
   47905             : #endif
   47906             : 
   47907             :   // Copy data members from base classes
   47908             :   // Copy constructor parameter data member: startOfConstruct_copy
   47909             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   47910             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   47911           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   47912           0 :      if ( p_startOfConstruct != NULL ) 
   47913             :         { 
   47914           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   47915             :         } 
   47916             :        else 
   47917             :         { 
   47918             :           startOfConstruct_copy = NULL; 
   47919             :         } 
   47920             :   // Copy constructor parameter data member: expression_copy
   47921           0 :      SgExpression* expression_copy; 
   47922             :   // case: not a listType for (using conditionalToCopyVariable)expression
   47923           0 :           if (get_expression() != NULL) 
   47924             :              { 
   47925           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   47926             :              } 
   47927             :             else 
   47928             :              { 
   47929             :                expression_copy = NULL; 
   47930             :              } 
   47931             :  
   47932             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47933             : 
   47934             :   // Build an empty copy of this object (will be filled in, but 
   47935             :   // the parent can't be set and must be set by the caller)
   47936           0 :      result = new SgOmpFinalClause(  startOfConstruct_copy, expression_copy );
   47937           0 :      ROSE_ASSERT(result != NULL);
   47938             : 
   47939             :   // Copy data members of "this" class
   47940             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   47941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   47942             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   47943           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   47944           0 :      if ( p_endOfConstruct != NULL ) 
   47945             :         { 
   47946           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   47947             :         } 
   47948             :        else 
   47949             :         { 
   47950             :           endOfConstruct_copy = NULL; 
   47951             :         } 
   47952             :   /* check for a valid pointer and delete if present */ 
   47953           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   47954             :   /* add assignment to result here */ 
   47955           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   47956             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   47957             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   47958             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   47959           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   47960           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   47961             :         { 
   47962           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   47963             :         } 
   47964             :        else 
   47965             :         { 
   47966             :           attachedPreprocessingInfoPtr_copy = NULL; 
   47967             :         } 
   47968             :   /* check for a valid pointer and delete if present */ 
   47969           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   47970             :   /* add assignment to result here */ 
   47971           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   47972             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   47973             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   47974             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   47975           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   47976           0 :      if ( p_attributeMechanism != NULL ) 
   47977             :         { 
   47978           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   47979             :         } 
   47980             :        else 
   47981             :         { 
   47982             :           attributeMechanism_copy = NULL; 
   47983             :         } 
   47984             :   /* check for a valid pointer and delete if present */ 
   47985           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   47986             :   /* add assignment to result here */ 
   47987           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   47988             :   // case: not a listType for (using conditionalToSetParent)expression
   47989           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   47990             :              { 
   47991           0 :                expression_copy->set_parent(result); 
   47992             :              } 
   47993             : 
   47994             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   47995             : 
   47996             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   47997             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   47998             :   // fixupCopy(result,help);
   47999             : 
   48000             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   48001             :   // the Sg_File_Info objects that are built for the new IR nodes.
   48002           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   48003           0 :      if (locatedNode != NULL)
   48004             :         {
   48005             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   48006           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   48007           0 :           ROSE_ASSERT(start != NULL);
   48008             : #if 0
   48009             :        // Debugging information
   48010             :           if (start->get_parent() == NULL)
   48011             :              {
   48012             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48013             :              }
   48014             : #endif
   48015           0 :           start->set_parent(locatedNode);
   48016           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   48017             : 
   48018           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   48019             : 
   48020             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   48021             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   48022             :        // ROSE_ASSERT(end != NULL);
   48023           0 :           if (end == NULL)
   48024             :              {
   48025           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   48026             :              }
   48027             :             else
   48028             :              {
   48029             : #if 0
   48030             :             // Debugging information
   48031             :                if (end->get_parent() == NULL)
   48032             :                   {
   48033             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48034             :                   }
   48035             : #endif
   48036           0 :                end->set_parent(locatedNode);
   48037           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   48038             :              }
   48039             : 
   48040           0 :           SgExpression* expression = isSgExpression(result);
   48041           0 :           if (isSgExpression(this) != NULL)
   48042             :              {
   48043           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   48044             : 
   48045             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   48046           0 :                if (operatorPosition != NULL)
   48047             :                   {
   48048             : #if 0
   48049             :                  // Debugging information
   48050             :                     if (operatorPosition->get_parent() == NULL)
   48051             :                        {
   48052             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48053             :                        }
   48054             : #endif
   48055           0 :                     operatorPosition->set_parent(expression);
   48056           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   48057             :                   }
   48058             :              }
   48059             :         }
   48060             : 
   48061             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   48062           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   48063           0 :      if (initializedName != NULL)
   48064             :         {
   48065             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   48066           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   48067           0 :           ROSE_ASSERT(start != NULL);
   48068             : #if 0
   48069             :        // Debugging information
   48070             :           if (start->get_parent() == NULL)
   48071             :              {
   48072             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48073             :              }
   48074             : #endif
   48075           0 :           start->set_parent(initializedName);
   48076           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   48077             : 
   48078             : #if 0
   48079             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   48080             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   48081             : 
   48082             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   48083             :        // ROSE_ASSERT(end != NULL);
   48084             :           if (end == NULL)
   48085             :              {
   48086             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   48087             :              }
   48088             :             else
   48089             :              {
   48090             :                if (end->get_parent() == NULL)
   48091             :                   {
   48092             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48093             :                   }
   48094             :                end->set_parent(initializedName);
   48095             :                ROSE_ASSERT(end->get_parent() != NULL);
   48096             :              }
   48097             : #endif
   48098             :         }
   48099             : 
   48100             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   48101           0 :      help.insertCopiedNodePair(this,result);
   48102             : 
   48103             :   // printf ("End of copy SgOmpFinalClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   48104             : 
   48105             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   48106             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   48107           0 :      help.decrementDepth();
   48108             : 
   48109             :   // Test if this is the root of the copy!
   48110           0 :      if (help.get_depth() == 0)
   48111             :         {
   48112             :        // This is the original calling node.
   48113             : 
   48114             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   48115             :        // printf ("Calling SgOmpFinalClause::fixupCopy() (from root of AST being copied) \n");
   48116             : #if ALT_FIXUP_COPY
   48117             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   48118           0 :           fixupCopy_scopes (result,help);
   48119           0 :           fixupCopy_symbols (result,help);
   48120           0 :           fixupCopy_references (result,help);
   48121             : #else
   48122             :           fixupCopy(result,help);
   48123             : #endif
   48124             :        // Allow this to be called recursively, so accumulate the state.
   48125             :        // Also, clear the state in the SgCopyHelp object.
   48126             :        // help.clearState();
   48127             :         }
   48128             : 
   48129           0 :      return result;
   48130             :    }
   48131             : 
   48132             : 
   48133             : /* #line 48134 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   48134             : 
   48135             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48136             : 
   48137           0 : SgNode* SgOmpPriorityClause::copy ( SgCopyHelp& help) const
   48138             :    {
   48139           0 :      SgOmpPriorityClause* result = NULL;
   48140             : 
   48141             :   // printf ("Copy SgOmpPriorityClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   48142             : 
   48143             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   48144             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   48145             :   // The default value of the depth is 0, so after this call the depth is 1!
   48146           0 :      help.incrementDepth();
   48147             : 
   48148             : #if 0
   48149             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   48150             :   // but it is not generally true that things can only be copied once!
   48151             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   48152             :   // AstAttribute* existingAttribute = const_cast<SgOmpPriorityClause*>(this)->attribute["copied"];
   48153             :      bool previouslyCopied = const_cast<SgOmpPriorityClause*>(this)->attribute.exists("copied");
   48154             :      if (previouslyCopied == true)
   48155             :         {
   48156             :           this->get_file_info()->display("Called from copy SgOmpPriorityClause: debug");
   48157             :         }
   48158             :      ROSE_ASSERT(previouslyCopied == false);
   48159             : 
   48160             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   48161             :      AstAttribute* newAttribute = new AstAttribute();
   48162             :      ROSE_ASSERT(newAttribute != NULL);
   48163             : 
   48164             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   48165             :      const_cast<SgOmpPriorityClause*>(this)->attribute.add("copied",newAttribute);
   48166             : #endif
   48167             : 
   48168             :   // Copy data members from base classes
   48169             :   // Copy constructor parameter data member: startOfConstruct_copy
   48170             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   48171             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   48172           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   48173           0 :      if ( p_startOfConstruct != NULL ) 
   48174             :         { 
   48175           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   48176             :         } 
   48177             :        else 
   48178             :         { 
   48179             :           startOfConstruct_copy = NULL; 
   48180             :         } 
   48181             :   // Copy constructor parameter data member: expression_copy
   48182           0 :      SgExpression* expression_copy; 
   48183             :   // case: not a listType for (using conditionalToCopyVariable)expression
   48184           0 :           if (get_expression() != NULL) 
   48185             :              { 
   48186           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   48187             :              } 
   48188             :             else 
   48189             :              { 
   48190             :                expression_copy = NULL; 
   48191             :              } 
   48192             :  
   48193             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48194             : 
   48195             :   // Build an empty copy of this object (will be filled in, but 
   48196             :   // the parent can't be set and must be set by the caller)
   48197           0 :      result = new SgOmpPriorityClause(  startOfConstruct_copy, expression_copy );
   48198           0 :      ROSE_ASSERT(result != NULL);
   48199             : 
   48200             :   // Copy data members of "this" class
   48201             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   48202             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   48203             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   48204           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   48205           0 :      if ( p_endOfConstruct != NULL ) 
   48206             :         { 
   48207           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   48208             :         } 
   48209             :        else 
   48210             :         { 
   48211             :           endOfConstruct_copy = NULL; 
   48212             :         } 
   48213             :   /* check for a valid pointer and delete if present */ 
   48214           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   48215             :   /* add assignment to result here */ 
   48216           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   48217             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   48218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   48219             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   48220           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   48221           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   48222             :         { 
   48223           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   48224             :         } 
   48225             :        else 
   48226             :         { 
   48227             :           attachedPreprocessingInfoPtr_copy = NULL; 
   48228             :         } 
   48229             :   /* check for a valid pointer and delete if present */ 
   48230           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   48231             :   /* add assignment to result here */ 
   48232           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   48233             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   48234             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   48235             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   48236           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   48237           0 :      if ( p_attributeMechanism != NULL ) 
   48238             :         { 
   48239           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   48240             :         } 
   48241             :        else 
   48242             :         { 
   48243             :           attributeMechanism_copy = NULL; 
   48244             :         } 
   48245             :   /* check for a valid pointer and delete if present */ 
   48246           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   48247             :   /* add assignment to result here */ 
   48248           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   48249             :   // case: not a listType for (using conditionalToSetParent)expression
   48250           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   48251             :              { 
   48252           0 :                expression_copy->set_parent(result); 
   48253             :              } 
   48254             : 
   48255             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48256             : 
   48257             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   48258             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   48259             :   // fixupCopy(result,help);
   48260             : 
   48261             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   48262             :   // the Sg_File_Info objects that are built for the new IR nodes.
   48263           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   48264           0 :      if (locatedNode != NULL)
   48265             :         {
   48266             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   48267           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   48268           0 :           ROSE_ASSERT(start != NULL);
   48269             : #if 0
   48270             :        // Debugging information
   48271             :           if (start->get_parent() == NULL)
   48272             :              {
   48273             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48274             :              }
   48275             : #endif
   48276           0 :           start->set_parent(locatedNode);
   48277           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   48278             : 
   48279           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   48280             : 
   48281             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   48282             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   48283             :        // ROSE_ASSERT(end != NULL);
   48284           0 :           if (end == NULL)
   48285             :              {
   48286           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   48287             :              }
   48288             :             else
   48289             :              {
   48290             : #if 0
   48291             :             // Debugging information
   48292             :                if (end->get_parent() == NULL)
   48293             :                   {
   48294             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48295             :                   }
   48296             : #endif
   48297           0 :                end->set_parent(locatedNode);
   48298           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   48299             :              }
   48300             : 
   48301           0 :           SgExpression* expression = isSgExpression(result);
   48302           0 :           if (isSgExpression(this) != NULL)
   48303             :              {
   48304           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   48305             : 
   48306             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   48307           0 :                if (operatorPosition != NULL)
   48308             :                   {
   48309             : #if 0
   48310             :                  // Debugging information
   48311             :                     if (operatorPosition->get_parent() == NULL)
   48312             :                        {
   48313             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48314             :                        }
   48315             : #endif
   48316           0 :                     operatorPosition->set_parent(expression);
   48317           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   48318             :                   }
   48319             :              }
   48320             :         }
   48321             : 
   48322             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   48323           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   48324           0 :      if (initializedName != NULL)
   48325             :         {
   48326             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   48327           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   48328           0 :           ROSE_ASSERT(start != NULL);
   48329             : #if 0
   48330             :        // Debugging information
   48331             :           if (start->get_parent() == NULL)
   48332             :              {
   48333             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48334             :              }
   48335             : #endif
   48336           0 :           start->set_parent(initializedName);
   48337           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   48338             : 
   48339             : #if 0
   48340             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   48341             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   48342             : 
   48343             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   48344             :        // ROSE_ASSERT(end != NULL);
   48345             :           if (end == NULL)
   48346             :              {
   48347             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   48348             :              }
   48349             :             else
   48350             :              {
   48351             :                if (end->get_parent() == NULL)
   48352             :                   {
   48353             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48354             :                   }
   48355             :                end->set_parent(initializedName);
   48356             :                ROSE_ASSERT(end->get_parent() != NULL);
   48357             :              }
   48358             : #endif
   48359             :         }
   48360             : 
   48361             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   48362           0 :      help.insertCopiedNodePair(this,result);
   48363             : 
   48364             :   // printf ("End of copy SgOmpPriorityClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   48365             : 
   48366             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   48367             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   48368           0 :      help.decrementDepth();
   48369             : 
   48370             :   // Test if this is the root of the copy!
   48371           0 :      if (help.get_depth() == 0)
   48372             :         {
   48373             :        // This is the original calling node.
   48374             : 
   48375             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   48376             :        // printf ("Calling SgOmpPriorityClause::fixupCopy() (from root of AST being copied) \n");
   48377             : #if ALT_FIXUP_COPY
   48378             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   48379           0 :           fixupCopy_scopes (result,help);
   48380           0 :           fixupCopy_symbols (result,help);
   48381           0 :           fixupCopy_references (result,help);
   48382             : #else
   48383             :           fixupCopy(result,help);
   48384             : #endif
   48385             :        // Allow this to be called recursively, so accumulate the state.
   48386             :        // Also, clear the state in the SgCopyHelp object.
   48387             :        // help.clearState();
   48388             :         }
   48389             : 
   48390           0 :      return result;
   48391             :    }
   48392             : 
   48393             : 
   48394             : /* #line 48395 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   48395             : 
   48396             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48397             : 
   48398           0 : SgNode* SgOmpPartialClause::copy ( SgCopyHelp& help) const
   48399             :    {
   48400           0 :      SgOmpPartialClause* result = NULL;
   48401             : 
   48402             :   // printf ("Copy SgOmpPartialClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   48403             : 
   48404             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   48405             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   48406             :   // The default value of the depth is 0, so after this call the depth is 1!
   48407           0 :      help.incrementDepth();
   48408             : 
   48409             : #if 0
   48410             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   48411             :   // but it is not generally true that things can only be copied once!
   48412             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   48413             :   // AstAttribute* existingAttribute = const_cast<SgOmpPartialClause*>(this)->attribute["copied"];
   48414             :      bool previouslyCopied = const_cast<SgOmpPartialClause*>(this)->attribute.exists("copied");
   48415             :      if (previouslyCopied == true)
   48416             :         {
   48417             :           this->get_file_info()->display("Called from copy SgOmpPartialClause: debug");
   48418             :         }
   48419             :      ROSE_ASSERT(previouslyCopied == false);
   48420             : 
   48421             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   48422             :      AstAttribute* newAttribute = new AstAttribute();
   48423             :      ROSE_ASSERT(newAttribute != NULL);
   48424             : 
   48425             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   48426             :      const_cast<SgOmpPartialClause*>(this)->attribute.add("copied",newAttribute);
   48427             : #endif
   48428             : 
   48429             :   // Copy data members from base classes
   48430             :   // Copy constructor parameter data member: startOfConstruct_copy
   48431             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   48432             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   48433           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   48434           0 :      if ( p_startOfConstruct != NULL ) 
   48435             :         { 
   48436           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   48437             :         } 
   48438             :        else 
   48439             :         { 
   48440             :           startOfConstruct_copy = NULL; 
   48441             :         } 
   48442             :   // Copy constructor parameter data member: expression_copy
   48443           0 :      SgExpression* expression_copy; 
   48444             :   // case: not a listType for (using conditionalToCopyVariable)expression
   48445           0 :           if (get_expression() != NULL) 
   48446             :              { 
   48447           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   48448             :              } 
   48449             :             else 
   48450             :              { 
   48451             :                expression_copy = NULL; 
   48452             :              } 
   48453             :  
   48454             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48455             : 
   48456             :   // Build an empty copy of this object (will be filled in, but 
   48457             :   // the parent can't be set and must be set by the caller)
   48458           0 :      result = new SgOmpPartialClause(  startOfConstruct_copy, expression_copy );
   48459           0 :      ROSE_ASSERT(result != NULL);
   48460             : 
   48461             :   // Copy data members of "this" class
   48462             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   48463             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   48464             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   48465           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   48466           0 :      if ( p_endOfConstruct != NULL ) 
   48467             :         { 
   48468           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   48469             :         } 
   48470             :        else 
   48471             :         { 
   48472             :           endOfConstruct_copy = NULL; 
   48473             :         } 
   48474             :   /* check for a valid pointer and delete if present */ 
   48475           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   48476             :   /* add assignment to result here */ 
   48477           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   48478             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   48479             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   48480             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   48481           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   48482           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   48483             :         { 
   48484           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   48485             :         } 
   48486             :        else 
   48487             :         { 
   48488             :           attachedPreprocessingInfoPtr_copy = NULL; 
   48489             :         } 
   48490             :   /* check for a valid pointer and delete if present */ 
   48491           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   48492             :   /* add assignment to result here */ 
   48493           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   48494             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   48495             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   48496             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   48497           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   48498           0 :      if ( p_attributeMechanism != NULL ) 
   48499             :         { 
   48500           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   48501             :         } 
   48502             :        else 
   48503             :         { 
   48504             :           attributeMechanism_copy = NULL; 
   48505             :         } 
   48506             :   /* check for a valid pointer and delete if present */ 
   48507           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   48508             :   /* add assignment to result here */ 
   48509           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   48510             :   // case: not a listType for (using conditionalToSetParent)expression
   48511           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   48512             :              { 
   48513           0 :                expression_copy->set_parent(result); 
   48514             :              } 
   48515             : 
   48516             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48517             : 
   48518             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   48519             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   48520             :   // fixupCopy(result,help);
   48521             : 
   48522             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   48523             :   // the Sg_File_Info objects that are built for the new IR nodes.
   48524           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   48525           0 :      if (locatedNode != NULL)
   48526             :         {
   48527             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   48528           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   48529           0 :           ROSE_ASSERT(start != NULL);
   48530             : #if 0
   48531             :        // Debugging information
   48532             :           if (start->get_parent() == NULL)
   48533             :              {
   48534             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48535             :              }
   48536             : #endif
   48537           0 :           start->set_parent(locatedNode);
   48538           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   48539             : 
   48540           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   48541             : 
   48542             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   48543             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   48544             :        // ROSE_ASSERT(end != NULL);
   48545           0 :           if (end == NULL)
   48546             :              {
   48547           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   48548             :              }
   48549             :             else
   48550             :              {
   48551             : #if 0
   48552             :             // Debugging information
   48553             :                if (end->get_parent() == NULL)
   48554             :                   {
   48555             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48556             :                   }
   48557             : #endif
   48558           0 :                end->set_parent(locatedNode);
   48559           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   48560             :              }
   48561             : 
   48562           0 :           SgExpression* expression = isSgExpression(result);
   48563           0 :           if (isSgExpression(this) != NULL)
   48564             :              {
   48565           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   48566             : 
   48567             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   48568           0 :                if (operatorPosition != NULL)
   48569             :                   {
   48570             : #if 0
   48571             :                  // Debugging information
   48572             :                     if (operatorPosition->get_parent() == NULL)
   48573             :                        {
   48574             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48575             :                        }
   48576             : #endif
   48577           0 :                     operatorPosition->set_parent(expression);
   48578           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   48579             :                   }
   48580             :              }
   48581             :         }
   48582             : 
   48583             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   48584           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   48585           0 :      if (initializedName != NULL)
   48586             :         {
   48587             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   48588           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   48589           0 :           ROSE_ASSERT(start != NULL);
   48590             : #if 0
   48591             :        // Debugging information
   48592             :           if (start->get_parent() == NULL)
   48593             :              {
   48594             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48595             :              }
   48596             : #endif
   48597           0 :           start->set_parent(initializedName);
   48598           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   48599             : 
   48600             : #if 0
   48601             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   48602             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   48603             : 
   48604             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   48605             :        // ROSE_ASSERT(end != NULL);
   48606             :           if (end == NULL)
   48607             :              {
   48608             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   48609             :              }
   48610             :             else
   48611             :              {
   48612             :                if (end->get_parent() == NULL)
   48613             :                   {
   48614             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48615             :                   }
   48616             :                end->set_parent(initializedName);
   48617             :                ROSE_ASSERT(end->get_parent() != NULL);
   48618             :              }
   48619             : #endif
   48620             :         }
   48621             : 
   48622             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   48623           0 :      help.insertCopiedNodePair(this,result);
   48624             : 
   48625             :   // printf ("End of copy SgOmpPartialClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   48626             : 
   48627             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   48628             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   48629           0 :      help.decrementDepth();
   48630             : 
   48631             :   // Test if this is the root of the copy!
   48632           0 :      if (help.get_depth() == 0)
   48633             :         {
   48634             :        // This is the original calling node.
   48635             : 
   48636             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   48637             :        // printf ("Calling SgOmpPartialClause::fixupCopy() (from root of AST being copied) \n");
   48638             : #if ALT_FIXUP_COPY
   48639             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   48640           0 :           fixupCopy_scopes (result,help);
   48641           0 :           fixupCopy_symbols (result,help);
   48642           0 :           fixupCopy_references (result,help);
   48643             : #else
   48644             :           fixupCopy(result,help);
   48645             : #endif
   48646             :        // Allow this to be called recursively, so accumulate the state.
   48647             :        // Also, clear the state in the SgCopyHelp object.
   48648             :        // help.clearState();
   48649             :         }
   48650             : 
   48651           0 :      return result;
   48652             :    }
   48653             : 
   48654             : 
   48655             : /* #line 48656 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   48656             : 
   48657             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48658             : 
   48659           0 : SgNode* SgOmpSizesClause::copy ( SgCopyHelp& help) const
   48660             :    {
   48661           0 :      SgOmpSizesClause* result = NULL;
   48662             : 
   48663             :   // printf ("Copy SgOmpSizesClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   48664             : 
   48665             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   48666             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   48667             :   // The default value of the depth is 0, so after this call the depth is 1!
   48668           0 :      help.incrementDepth();
   48669             : 
   48670             : #if 0
   48671             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   48672             :   // but it is not generally true that things can only be copied once!
   48673             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   48674             :   // AstAttribute* existingAttribute = const_cast<SgOmpSizesClause*>(this)->attribute["copied"];
   48675             :      bool previouslyCopied = const_cast<SgOmpSizesClause*>(this)->attribute.exists("copied");
   48676             :      if (previouslyCopied == true)
   48677             :         {
   48678             :           this->get_file_info()->display("Called from copy SgOmpSizesClause: debug");
   48679             :         }
   48680             :      ROSE_ASSERT(previouslyCopied == false);
   48681             : 
   48682             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   48683             :      AstAttribute* newAttribute = new AstAttribute();
   48684             :      ROSE_ASSERT(newAttribute != NULL);
   48685             : 
   48686             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   48687             :      const_cast<SgOmpSizesClause*>(this)->attribute.add("copied",newAttribute);
   48688             : #endif
   48689             : 
   48690             :   // Copy data members from base classes
   48691             :   // Copy constructor parameter data member: startOfConstruct_copy
   48692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   48693             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   48694           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   48695           0 :      if ( p_startOfConstruct != NULL ) 
   48696             :         { 
   48697           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   48698             :         } 
   48699             :        else 
   48700             :         { 
   48701             :           startOfConstruct_copy = NULL; 
   48702             :         } 
   48703             :   // Copy constructor parameter data member: expression_copy
   48704           0 :      SgExpression* expression_copy; 
   48705             :   // case: not a listType for (using conditionalToCopyVariable)expression
   48706           0 :           if (get_expression() != NULL) 
   48707             :              { 
   48708           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   48709             :              } 
   48710             :             else 
   48711             :              { 
   48712             :                expression_copy = NULL; 
   48713             :              } 
   48714             :  
   48715             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48716             : 
   48717             :   // Build an empty copy of this object (will be filled in, but 
   48718             :   // the parent can't be set and must be set by the caller)
   48719           0 :      result = new SgOmpSizesClause(  startOfConstruct_copy, expression_copy );
   48720           0 :      ROSE_ASSERT(result != NULL);
   48721             : 
   48722             :   // Copy data members of "this" class
   48723             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   48724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   48725             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   48726           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   48727           0 :      if ( p_endOfConstruct != NULL ) 
   48728             :         { 
   48729           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   48730             :         } 
   48731             :        else 
   48732             :         { 
   48733             :           endOfConstruct_copy = NULL; 
   48734             :         } 
   48735             :   /* check for a valid pointer and delete if present */ 
   48736           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   48737             :   /* add assignment to result here */ 
   48738           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   48739             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   48740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   48741             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   48742           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   48743           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   48744             :         { 
   48745           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   48746             :         } 
   48747             :        else 
   48748             :         { 
   48749             :           attachedPreprocessingInfoPtr_copy = NULL; 
   48750             :         } 
   48751             :   /* check for a valid pointer and delete if present */ 
   48752           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   48753             :   /* add assignment to result here */ 
   48754           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   48755             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   48756             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   48757             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   48758           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   48759           0 :      if ( p_attributeMechanism != NULL ) 
   48760             :         { 
   48761           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   48762             :         } 
   48763             :        else 
   48764             :         { 
   48765             :           attributeMechanism_copy = NULL; 
   48766             :         } 
   48767             :   /* check for a valid pointer and delete if present */ 
   48768           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   48769             :   /* add assignment to result here */ 
   48770           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   48771             :   // case: not a listType for (using conditionalToSetParent)expression
   48772           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   48773             :              { 
   48774           0 :                expression_copy->set_parent(result); 
   48775             :              } 
   48776             : 
   48777             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48778             : 
   48779             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   48780             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   48781             :   // fixupCopy(result,help);
   48782             : 
   48783             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   48784             :   // the Sg_File_Info objects that are built for the new IR nodes.
   48785           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   48786           0 :      if (locatedNode != NULL)
   48787             :         {
   48788             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   48789           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   48790           0 :           ROSE_ASSERT(start != NULL);
   48791             : #if 0
   48792             :        // Debugging information
   48793             :           if (start->get_parent() == NULL)
   48794             :              {
   48795             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48796             :              }
   48797             : #endif
   48798           0 :           start->set_parent(locatedNode);
   48799           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   48800             : 
   48801           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   48802             : 
   48803             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   48804             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   48805             :        // ROSE_ASSERT(end != NULL);
   48806           0 :           if (end == NULL)
   48807             :              {
   48808           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   48809             :              }
   48810             :             else
   48811             :              {
   48812             : #if 0
   48813             :             // Debugging information
   48814             :                if (end->get_parent() == NULL)
   48815             :                   {
   48816             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48817             :                   }
   48818             : #endif
   48819           0 :                end->set_parent(locatedNode);
   48820           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   48821             :              }
   48822             : 
   48823           0 :           SgExpression* expression = isSgExpression(result);
   48824           0 :           if (isSgExpression(this) != NULL)
   48825             :              {
   48826           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   48827             : 
   48828             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   48829           0 :                if (operatorPosition != NULL)
   48830             :                   {
   48831             : #if 0
   48832             :                  // Debugging information
   48833             :                     if (operatorPosition->get_parent() == NULL)
   48834             :                        {
   48835             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48836             :                        }
   48837             : #endif
   48838           0 :                     operatorPosition->set_parent(expression);
   48839           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   48840             :                   }
   48841             :              }
   48842             :         }
   48843             : 
   48844             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   48845           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   48846           0 :      if (initializedName != NULL)
   48847             :         {
   48848             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   48849           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   48850           0 :           ROSE_ASSERT(start != NULL);
   48851             : #if 0
   48852             :        // Debugging information
   48853             :           if (start->get_parent() == NULL)
   48854             :              {
   48855             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48856             :              }
   48857             : #endif
   48858           0 :           start->set_parent(initializedName);
   48859           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   48860             : 
   48861             : #if 0
   48862             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   48863             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   48864             : 
   48865             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   48866             :        // ROSE_ASSERT(end != NULL);
   48867             :           if (end == NULL)
   48868             :              {
   48869             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   48870             :              }
   48871             :             else
   48872             :              {
   48873             :                if (end->get_parent() == NULL)
   48874             :                   {
   48875             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   48876             :                   }
   48877             :                end->set_parent(initializedName);
   48878             :                ROSE_ASSERT(end->get_parent() != NULL);
   48879             :              }
   48880             : #endif
   48881             :         }
   48882             : 
   48883             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   48884           0 :      help.insertCopiedNodePair(this,result);
   48885             : 
   48886             :   // printf ("End of copy SgOmpSizesClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   48887             : 
   48888             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   48889             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   48890           0 :      help.decrementDepth();
   48891             : 
   48892             :   // Test if this is the root of the copy!
   48893           0 :      if (help.get_depth() == 0)
   48894             :         {
   48895             :        // This is the original calling node.
   48896             : 
   48897             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   48898             :        // printf ("Calling SgOmpSizesClause::fixupCopy() (from root of AST being copied) \n");
   48899             : #if ALT_FIXUP_COPY
   48900             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   48901           0 :           fixupCopy_scopes (result,help);
   48902           0 :           fixupCopy_symbols (result,help);
   48903           0 :           fixupCopy_references (result,help);
   48904             : #else
   48905             :           fixupCopy(result,help);
   48906             : #endif
   48907             :        // Allow this to be called recursively, so accumulate the state.
   48908             :        // Also, clear the state in the SgCopyHelp object.
   48909             :        // help.clearState();
   48910             :         }
   48911             : 
   48912           0 :      return result;
   48913             :    }
   48914             : 
   48915             : 
   48916             : /* #line 48917 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   48917             : 
   48918             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48919             : 
   48920           0 : SgNode* SgOmpInbranchClause::copy ( SgCopyHelp& help) const
   48921             :    {
   48922           0 :      SgOmpInbranchClause* result = NULL;
   48923             : 
   48924             :   // printf ("Copy SgOmpInbranchClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   48925             : 
   48926             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   48927             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   48928             :   // The default value of the depth is 0, so after this call the depth is 1!
   48929           0 :      help.incrementDepth();
   48930             : 
   48931             : #if 0
   48932             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   48933             :   // but it is not generally true that things can only be copied once!
   48934             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   48935             :   // AstAttribute* existingAttribute = const_cast<SgOmpInbranchClause*>(this)->attribute["copied"];
   48936             :      bool previouslyCopied = const_cast<SgOmpInbranchClause*>(this)->attribute.exists("copied");
   48937             :      if (previouslyCopied == true)
   48938             :         {
   48939             :           this->get_file_info()->display("Called from copy SgOmpInbranchClause: debug");
   48940             :         }
   48941             :      ROSE_ASSERT(previouslyCopied == false);
   48942             : 
   48943             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   48944             :      AstAttribute* newAttribute = new AstAttribute();
   48945             :      ROSE_ASSERT(newAttribute != NULL);
   48946             : 
   48947             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   48948             :      const_cast<SgOmpInbranchClause*>(this)->attribute.add("copied",newAttribute);
   48949             : #endif
   48950             : 
   48951             :   // Copy data members from base classes
   48952             :   // Copy constructor parameter data member: startOfConstruct_copy
   48953             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   48954             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   48955           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   48956           0 :      if ( p_startOfConstruct != NULL ) 
   48957             :         { 
   48958           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   48959             :         } 
   48960             :        else 
   48961             :         { 
   48962             :           startOfConstruct_copy = NULL; 
   48963             :         } 
   48964             :  
   48965             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   48966             : 
   48967             :   // Build an empty copy of this object (will be filled in, but 
   48968             :   // the parent can't be set and must be set by the caller)
   48969           0 :      result = new SgOmpInbranchClause(  startOfConstruct_copy );
   48970           0 :      ROSE_ASSERT(result != NULL);
   48971             : 
   48972             :   // Copy data members of "this" class
   48973             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   48974             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   48975             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   48976           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   48977           0 :      if ( p_endOfConstruct != NULL ) 
   48978             :         { 
   48979           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   48980             :         } 
   48981             :        else 
   48982             :         { 
   48983             :           endOfConstruct_copy = NULL; 
   48984             :         } 
   48985             :   /* check for a valid pointer and delete if present */ 
   48986           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   48987             :   /* add assignment to result here */ 
   48988           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   48989             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   48990             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   48991             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   48992           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   48993           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   48994             :         { 
   48995           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   48996             :         } 
   48997             :        else 
   48998             :         { 
   48999             :           attachedPreprocessingInfoPtr_copy = NULL; 
   49000             :         } 
   49001             :   /* check for a valid pointer and delete if present */ 
   49002           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   49003             :   /* add assignment to result here */ 
   49004           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   49005             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   49006             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   49007             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   49008           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   49009           0 :      if ( p_attributeMechanism != NULL ) 
   49010             :         { 
   49011           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   49012             :         } 
   49013             :        else 
   49014             :         { 
   49015             :           attributeMechanism_copy = NULL; 
   49016             :         } 
   49017             :   /* check for a valid pointer and delete if present */ 
   49018           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   49019             :   /* add assignment to result here */ 
   49020           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   49021             : 
   49022             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49023             : 
   49024             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   49025             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   49026             :   // fixupCopy(result,help);
   49027             : 
   49028             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   49029             :   // the Sg_File_Info objects that are built for the new IR nodes.
   49030           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   49031           0 :      if (locatedNode != NULL)
   49032             :         {
   49033             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   49034           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   49035           0 :           ROSE_ASSERT(start != NULL);
   49036             : #if 0
   49037             :        // Debugging information
   49038             :           if (start->get_parent() == NULL)
   49039             :              {
   49040             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49041             :              }
   49042             : #endif
   49043           0 :           start->set_parent(locatedNode);
   49044           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   49045             : 
   49046           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   49047             : 
   49048             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   49049             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   49050             :        // ROSE_ASSERT(end != NULL);
   49051           0 :           if (end == NULL)
   49052             :              {
   49053           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   49054             :              }
   49055             :             else
   49056             :              {
   49057             : #if 0
   49058             :             // Debugging information
   49059             :                if (end->get_parent() == NULL)
   49060             :                   {
   49061             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49062             :                   }
   49063             : #endif
   49064           0 :                end->set_parent(locatedNode);
   49065           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   49066             :              }
   49067             : 
   49068           0 :           SgExpression* expression = isSgExpression(result);
   49069           0 :           if (isSgExpression(this) != NULL)
   49070             :              {
   49071           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   49072             : 
   49073             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   49074           0 :                if (operatorPosition != NULL)
   49075             :                   {
   49076             : #if 0
   49077             :                  // Debugging information
   49078             :                     if (operatorPosition->get_parent() == NULL)
   49079             :                        {
   49080             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49081             :                        }
   49082             : #endif
   49083           0 :                     operatorPosition->set_parent(expression);
   49084           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   49085             :                   }
   49086             :              }
   49087             :         }
   49088             : 
   49089             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   49090           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   49091           0 :      if (initializedName != NULL)
   49092             :         {
   49093             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   49094           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   49095           0 :           ROSE_ASSERT(start != NULL);
   49096             : #if 0
   49097             :        // Debugging information
   49098             :           if (start->get_parent() == NULL)
   49099             :              {
   49100             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49101             :              }
   49102             : #endif
   49103           0 :           start->set_parent(initializedName);
   49104           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   49105             : 
   49106             : #if 0
   49107             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   49108             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   49109             : 
   49110             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   49111             :        // ROSE_ASSERT(end != NULL);
   49112             :           if (end == NULL)
   49113             :              {
   49114             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   49115             :              }
   49116             :             else
   49117             :              {
   49118             :                if (end->get_parent() == NULL)
   49119             :                   {
   49120             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49121             :                   }
   49122             :                end->set_parent(initializedName);
   49123             :                ROSE_ASSERT(end->get_parent() != NULL);
   49124             :              }
   49125             : #endif
   49126             :         }
   49127             : 
   49128             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   49129           0 :      help.insertCopiedNodePair(this,result);
   49130             : 
   49131             :   // printf ("End of copy SgOmpInbranchClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   49132             : 
   49133             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   49134             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   49135           0 :      help.decrementDepth();
   49136             : 
   49137             :   // Test if this is the root of the copy!
   49138           0 :      if (help.get_depth() == 0)
   49139             :         {
   49140             :        // This is the original calling node.
   49141             : 
   49142             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   49143             :        // printf ("Calling SgOmpInbranchClause::fixupCopy() (from root of AST being copied) \n");
   49144             : #if ALT_FIXUP_COPY
   49145             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   49146           0 :           fixupCopy_scopes (result,help);
   49147           0 :           fixupCopy_symbols (result,help);
   49148           0 :           fixupCopy_references (result,help);
   49149             : #else
   49150             :           fixupCopy(result,help);
   49151             : #endif
   49152             :        // Allow this to be called recursively, so accumulate the state.
   49153             :        // Also, clear the state in the SgCopyHelp object.
   49154             :        // help.clearState();
   49155             :         }
   49156             : 
   49157           0 :      return result;
   49158             :    }
   49159             : 
   49160             : 
   49161             : /* #line 49162 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   49162             : 
   49163             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49164             : 
   49165           0 : SgNode* SgOmpNotinbranchClause::copy ( SgCopyHelp& help) const
   49166             :    {
   49167           0 :      SgOmpNotinbranchClause* result = NULL;
   49168             : 
   49169             :   // printf ("Copy SgOmpNotinbranchClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   49170             : 
   49171             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   49172             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   49173             :   // The default value of the depth is 0, so after this call the depth is 1!
   49174           0 :      help.incrementDepth();
   49175             : 
   49176             : #if 0
   49177             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   49178             :   // but it is not generally true that things can only be copied once!
   49179             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   49180             :   // AstAttribute* existingAttribute = const_cast<SgOmpNotinbranchClause*>(this)->attribute["copied"];
   49181             :      bool previouslyCopied = const_cast<SgOmpNotinbranchClause*>(this)->attribute.exists("copied");
   49182             :      if (previouslyCopied == true)
   49183             :         {
   49184             :           this->get_file_info()->display("Called from copy SgOmpNotinbranchClause: debug");
   49185             :         }
   49186             :      ROSE_ASSERT(previouslyCopied == false);
   49187             : 
   49188             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   49189             :      AstAttribute* newAttribute = new AstAttribute();
   49190             :      ROSE_ASSERT(newAttribute != NULL);
   49191             : 
   49192             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   49193             :      const_cast<SgOmpNotinbranchClause*>(this)->attribute.add("copied",newAttribute);
   49194             : #endif
   49195             : 
   49196             :   // Copy data members from base classes
   49197             :   // Copy constructor parameter data member: startOfConstruct_copy
   49198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   49199             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   49200           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   49201           0 :      if ( p_startOfConstruct != NULL ) 
   49202             :         { 
   49203           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   49204             :         } 
   49205             :        else 
   49206             :         { 
   49207             :           startOfConstruct_copy = NULL; 
   49208             :         } 
   49209             :  
   49210             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49211             : 
   49212             :   // Build an empty copy of this object (will be filled in, but 
   49213             :   // the parent can't be set and must be set by the caller)
   49214           0 :      result = new SgOmpNotinbranchClause(  startOfConstruct_copy );
   49215           0 :      ROSE_ASSERT(result != NULL);
   49216             : 
   49217             :   // Copy data members of "this" class
   49218             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   49219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   49220             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   49221           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   49222           0 :      if ( p_endOfConstruct != NULL ) 
   49223             :         { 
   49224           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   49225             :         } 
   49226             :        else 
   49227             :         { 
   49228             :           endOfConstruct_copy = NULL; 
   49229             :         } 
   49230             :   /* check for a valid pointer and delete if present */ 
   49231           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   49232             :   /* add assignment to result here */ 
   49233           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   49234             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   49235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   49236             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   49237           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   49238           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   49239             :         { 
   49240           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   49241             :         } 
   49242             :        else 
   49243             :         { 
   49244             :           attachedPreprocessingInfoPtr_copy = NULL; 
   49245             :         } 
   49246             :   /* check for a valid pointer and delete if present */ 
   49247           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   49248             :   /* add assignment to result here */ 
   49249           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   49250             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   49251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   49252             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   49253           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   49254           0 :      if ( p_attributeMechanism != NULL ) 
   49255             :         { 
   49256           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   49257             :         } 
   49258             :        else 
   49259             :         { 
   49260             :           attributeMechanism_copy = NULL; 
   49261             :         } 
   49262             :   /* check for a valid pointer and delete if present */ 
   49263           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   49264             :   /* add assignment to result here */ 
   49265           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   49266             : 
   49267             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49268             : 
   49269             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   49270             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   49271             :   // fixupCopy(result,help);
   49272             : 
   49273             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   49274             :   // the Sg_File_Info objects that are built for the new IR nodes.
   49275           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   49276           0 :      if (locatedNode != NULL)
   49277             :         {
   49278             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   49279           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   49280           0 :           ROSE_ASSERT(start != NULL);
   49281             : #if 0
   49282             :        // Debugging information
   49283             :           if (start->get_parent() == NULL)
   49284             :              {
   49285             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49286             :              }
   49287             : #endif
   49288           0 :           start->set_parent(locatedNode);
   49289           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   49290             : 
   49291           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   49292             : 
   49293             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   49294             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   49295             :        // ROSE_ASSERT(end != NULL);
   49296           0 :           if (end == NULL)
   49297             :              {
   49298           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   49299             :              }
   49300             :             else
   49301             :              {
   49302             : #if 0
   49303             :             // Debugging information
   49304             :                if (end->get_parent() == NULL)
   49305             :                   {
   49306             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49307             :                   }
   49308             : #endif
   49309           0 :                end->set_parent(locatedNode);
   49310           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   49311             :              }
   49312             : 
   49313           0 :           SgExpression* expression = isSgExpression(result);
   49314           0 :           if (isSgExpression(this) != NULL)
   49315             :              {
   49316           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   49317             : 
   49318             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   49319           0 :                if (operatorPosition != NULL)
   49320             :                   {
   49321             : #if 0
   49322             :                  // Debugging information
   49323             :                     if (operatorPosition->get_parent() == NULL)
   49324             :                        {
   49325             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49326             :                        }
   49327             : #endif
   49328           0 :                     operatorPosition->set_parent(expression);
   49329           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   49330             :                   }
   49331             :              }
   49332             :         }
   49333             : 
   49334             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   49335           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   49336           0 :      if (initializedName != NULL)
   49337             :         {
   49338             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   49339           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   49340           0 :           ROSE_ASSERT(start != NULL);
   49341             : #if 0
   49342             :        // Debugging information
   49343             :           if (start->get_parent() == NULL)
   49344             :              {
   49345             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49346             :              }
   49347             : #endif
   49348           0 :           start->set_parent(initializedName);
   49349           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   49350             : 
   49351             : #if 0
   49352             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   49353             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   49354             : 
   49355             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   49356             :        // ROSE_ASSERT(end != NULL);
   49357             :           if (end == NULL)
   49358             :              {
   49359             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   49360             :              }
   49361             :             else
   49362             :              {
   49363             :                if (end->get_parent() == NULL)
   49364             :                   {
   49365             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49366             :                   }
   49367             :                end->set_parent(initializedName);
   49368             :                ROSE_ASSERT(end->get_parent() != NULL);
   49369             :              }
   49370             : #endif
   49371             :         }
   49372             : 
   49373             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   49374           0 :      help.insertCopiedNodePair(this,result);
   49375             : 
   49376             :   // printf ("End of copy SgOmpNotinbranchClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   49377             : 
   49378             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   49379             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   49380           0 :      help.decrementDepth();
   49381             : 
   49382             :   // Test if this is the root of the copy!
   49383           0 :      if (help.get_depth() == 0)
   49384             :         {
   49385             :        // This is the original calling node.
   49386             : 
   49387             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   49388             :        // printf ("Calling SgOmpNotinbranchClause::fixupCopy() (from root of AST being copied) \n");
   49389             : #if ALT_FIXUP_COPY
   49390             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   49391           0 :           fixupCopy_scopes (result,help);
   49392           0 :           fixupCopy_symbols (result,help);
   49393           0 :           fixupCopy_references (result,help);
   49394             : #else
   49395             :           fixupCopy(result,help);
   49396             : #endif
   49397             :        // Allow this to be called recursively, so accumulate the state.
   49398             :        // Also, clear the state in the SgCopyHelp object.
   49399             :        // help.clearState();
   49400             :         }
   49401             : 
   49402           0 :      return result;
   49403             :    }
   49404             : 
   49405             : 
   49406             : /* #line 49407 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   49407             : 
   49408             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49409             : 
   49410           0 : SgNode* SgOmpDefaultmapClause::copy ( SgCopyHelp& help) const
   49411             :    {
   49412           0 :      SgOmpDefaultmapClause* result = NULL;
   49413             : 
   49414             :   // printf ("Copy SgOmpDefaultmapClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   49415             : 
   49416             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   49417             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   49418             :   // The default value of the depth is 0, so after this call the depth is 1!
   49419           0 :      help.incrementDepth();
   49420             : 
   49421             : #if 0
   49422             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   49423             :   // but it is not generally true that things can only be copied once!
   49424             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   49425             :   // AstAttribute* existingAttribute = const_cast<SgOmpDefaultmapClause*>(this)->attribute["copied"];
   49426             :      bool previouslyCopied = const_cast<SgOmpDefaultmapClause*>(this)->attribute.exists("copied");
   49427             :      if (previouslyCopied == true)
   49428             :         {
   49429             :           this->get_file_info()->display("Called from copy SgOmpDefaultmapClause: debug");
   49430             :         }
   49431             :      ROSE_ASSERT(previouslyCopied == false);
   49432             : 
   49433             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   49434             :      AstAttribute* newAttribute = new AstAttribute();
   49435             :      ROSE_ASSERT(newAttribute != NULL);
   49436             : 
   49437             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   49438             :      const_cast<SgOmpDefaultmapClause*>(this)->attribute.add("copied",newAttribute);
   49439             : #endif
   49440             : 
   49441             :   // Copy data members from base classes
   49442             :   // Copy constructor parameter data member: startOfConstruct_copy
   49443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   49444             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   49445           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   49446           0 :      if ( p_startOfConstruct != NULL ) 
   49447             :         { 
   49448           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   49449             :         } 
   49450             :        else 
   49451             :         { 
   49452             :           startOfConstruct_copy = NULL; 
   49453             :         } 
   49454             :   // Copy constructor parameter data member: behavior_copy
   49455             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for behavior
   49456             :   // case: toBeCopied == COPY_DATA for behavior
   49457           0 :      SgOmpClause::omp_defaultmap_behavior_enum behavior_copy = p_behavior; 
   49458             :   // Copy constructor parameter data member: category_copy
   49459             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for category
   49460             :   // case: toBeCopied == COPY_DATA for category
   49461           0 :      SgOmpClause::omp_defaultmap_category_enum category_copy = p_category; 
   49462             :  
   49463             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49464             : 
   49465             :   // Build an empty copy of this object (will be filled in, but 
   49466             :   // the parent can't be set and must be set by the caller)
   49467           0 :      result = new SgOmpDefaultmapClause(  startOfConstruct_copy, behavior_copy, category_copy );
   49468           0 :      ROSE_ASSERT(result != NULL);
   49469             : 
   49470             :   // Copy data members of "this" class
   49471             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   49472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   49473             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   49474           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   49475           0 :      if ( p_endOfConstruct != NULL ) 
   49476             :         { 
   49477           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   49478             :         } 
   49479             :        else 
   49480             :         { 
   49481             :           endOfConstruct_copy = NULL; 
   49482             :         } 
   49483             :   /* check for a valid pointer and delete if present */ 
   49484           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   49485             :   /* add assignment to result here */ 
   49486           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   49487             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   49488             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   49489             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   49490           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   49491           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   49492             :         { 
   49493           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   49494             :         } 
   49495             :        else 
   49496             :         { 
   49497             :           attachedPreprocessingInfoPtr_copy = NULL; 
   49498             :         } 
   49499             :   /* check for a valid pointer and delete if present */ 
   49500           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   49501             :   /* add assignment to result here */ 
   49502           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   49503             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   49504             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   49505             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   49506           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   49507           0 :      if ( p_attributeMechanism != NULL ) 
   49508             :         { 
   49509           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   49510             :         } 
   49511             :        else 
   49512             :         { 
   49513             :           attributeMechanism_copy = NULL; 
   49514             :         } 
   49515             :   /* check for a valid pointer and delete if present */ 
   49516           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   49517             :   /* add assignment to result here */ 
   49518           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   49519             : 
   49520             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49521             : 
   49522             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   49523             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   49524             :   // fixupCopy(result,help);
   49525             : 
   49526             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   49527             :   // the Sg_File_Info objects that are built for the new IR nodes.
   49528           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   49529           0 :      if (locatedNode != NULL)
   49530             :         {
   49531             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   49532           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   49533           0 :           ROSE_ASSERT(start != NULL);
   49534             : #if 0
   49535             :        // Debugging information
   49536             :           if (start->get_parent() == NULL)
   49537             :              {
   49538             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49539             :              }
   49540             : #endif
   49541           0 :           start->set_parent(locatedNode);
   49542           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   49543             : 
   49544           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   49545             : 
   49546             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   49547             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   49548             :        // ROSE_ASSERT(end != NULL);
   49549           0 :           if (end == NULL)
   49550             :              {
   49551           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   49552             :              }
   49553             :             else
   49554             :              {
   49555             : #if 0
   49556             :             // Debugging information
   49557             :                if (end->get_parent() == NULL)
   49558             :                   {
   49559             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49560             :                   }
   49561             : #endif
   49562           0 :                end->set_parent(locatedNode);
   49563           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   49564             :              }
   49565             : 
   49566           0 :           SgExpression* expression = isSgExpression(result);
   49567           0 :           if (isSgExpression(this) != NULL)
   49568             :              {
   49569           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   49570             : 
   49571             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   49572           0 :                if (operatorPosition != NULL)
   49573             :                   {
   49574             : #if 0
   49575             :                  // Debugging information
   49576             :                     if (operatorPosition->get_parent() == NULL)
   49577             :                        {
   49578             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49579             :                        }
   49580             : #endif
   49581           0 :                     operatorPosition->set_parent(expression);
   49582           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   49583             :                   }
   49584             :              }
   49585             :         }
   49586             : 
   49587             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   49588           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   49589           0 :      if (initializedName != NULL)
   49590             :         {
   49591             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   49592           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   49593           0 :           ROSE_ASSERT(start != NULL);
   49594             : #if 0
   49595             :        // Debugging information
   49596             :           if (start->get_parent() == NULL)
   49597             :              {
   49598             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49599             :              }
   49600             : #endif
   49601           0 :           start->set_parent(initializedName);
   49602           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   49603             : 
   49604             : #if 0
   49605             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   49606             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   49607             : 
   49608             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   49609             :        // ROSE_ASSERT(end != NULL);
   49610             :           if (end == NULL)
   49611             :              {
   49612             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   49613             :              }
   49614             :             else
   49615             :              {
   49616             :                if (end->get_parent() == NULL)
   49617             :                   {
   49618             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49619             :                   }
   49620             :                end->set_parent(initializedName);
   49621             :                ROSE_ASSERT(end->get_parent() != NULL);
   49622             :              }
   49623             : #endif
   49624             :         }
   49625             : 
   49626             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   49627           0 :      help.insertCopiedNodePair(this,result);
   49628             : 
   49629             :   // printf ("End of copy SgOmpDefaultmapClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   49630             : 
   49631             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   49632             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   49633           0 :      help.decrementDepth();
   49634             : 
   49635             :   // Test if this is the root of the copy!
   49636           0 :      if (help.get_depth() == 0)
   49637             :         {
   49638             :        // This is the original calling node.
   49639             : 
   49640             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   49641             :        // printf ("Calling SgOmpDefaultmapClause::fixupCopy() (from root of AST being copied) \n");
   49642             : #if ALT_FIXUP_COPY
   49643             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   49644           0 :           fixupCopy_scopes (result,help);
   49645           0 :           fixupCopy_symbols (result,help);
   49646           0 :           fixupCopy_references (result,help);
   49647             : #else
   49648             :           fixupCopy(result,help);
   49649             : #endif
   49650             :        // Allow this to be called recursively, so accumulate the state.
   49651             :        // Also, clear the state in the SgCopyHelp object.
   49652             :        // help.clearState();
   49653             :         }
   49654             : 
   49655           0 :      return result;
   49656             :    }
   49657             : 
   49658             : 
   49659             : /* #line 49660 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   49660             : 
   49661             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49662             : 
   49663           0 : SgNode* SgOmpAtomicDefaultMemOrderClause::copy ( SgCopyHelp& help) const
   49664             :    {
   49665           0 :      SgOmpAtomicDefaultMemOrderClause* result = NULL;
   49666             : 
   49667             :   // printf ("Copy SgOmpAtomicDefaultMemOrderClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   49668             : 
   49669             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   49670             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   49671             :   // The default value of the depth is 0, so after this call the depth is 1!
   49672           0 :      help.incrementDepth();
   49673             : 
   49674             : #if 0
   49675             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   49676             :   // but it is not generally true that things can only be copied once!
   49677             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   49678             :   // AstAttribute* existingAttribute = const_cast<SgOmpAtomicDefaultMemOrderClause*>(this)->attribute["copied"];
   49679             :      bool previouslyCopied = const_cast<SgOmpAtomicDefaultMemOrderClause*>(this)->attribute.exists("copied");
   49680             :      if (previouslyCopied == true)
   49681             :         {
   49682             :           this->get_file_info()->display("Called from copy SgOmpAtomicDefaultMemOrderClause: debug");
   49683             :         }
   49684             :      ROSE_ASSERT(previouslyCopied == false);
   49685             : 
   49686             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   49687             :      AstAttribute* newAttribute = new AstAttribute();
   49688             :      ROSE_ASSERT(newAttribute != NULL);
   49689             : 
   49690             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   49691             :      const_cast<SgOmpAtomicDefaultMemOrderClause*>(this)->attribute.add("copied",newAttribute);
   49692             : #endif
   49693             : 
   49694             :   // Copy data members from base classes
   49695             :   // Copy constructor parameter data member: startOfConstruct_copy
   49696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   49697             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   49698           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   49699           0 :      if ( p_startOfConstruct != NULL ) 
   49700             :         { 
   49701           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   49702             :         } 
   49703             :        else 
   49704             :         { 
   49705             :           startOfConstruct_copy = NULL; 
   49706             :         } 
   49707             :   // Copy constructor parameter data member: kind_copy
   49708             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for kind
   49709             :   // case: toBeCopied == COPY_DATA for kind
   49710           0 :      SgOmpClause::omp_atomic_default_mem_order_kind_enum kind_copy = p_kind; 
   49711             :  
   49712             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49713             : 
   49714             :   // Build an empty copy of this object (will be filled in, but 
   49715             :   // the parent can't be set and must be set by the caller)
   49716           0 :      result = new SgOmpAtomicDefaultMemOrderClause(  startOfConstruct_copy, kind_copy );
   49717           0 :      ROSE_ASSERT(result != NULL);
   49718             : 
   49719             :   // Copy data members of "this" class
   49720             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   49721             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   49722             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   49723           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   49724           0 :      if ( p_endOfConstruct != NULL ) 
   49725             :         { 
   49726           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   49727             :         } 
   49728             :        else 
   49729             :         { 
   49730             :           endOfConstruct_copy = NULL; 
   49731             :         } 
   49732             :   /* check for a valid pointer and delete if present */ 
   49733           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   49734             :   /* add assignment to result here */ 
   49735           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   49736             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   49737             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   49738             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   49739           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   49740           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   49741             :         { 
   49742           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   49743             :         } 
   49744             :        else 
   49745             :         { 
   49746             :           attachedPreprocessingInfoPtr_copy = NULL; 
   49747             :         } 
   49748             :   /* check for a valid pointer and delete if present */ 
   49749           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   49750             :   /* add assignment to result here */ 
   49751           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   49752             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   49753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   49754             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   49755           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   49756           0 :      if ( p_attributeMechanism != NULL ) 
   49757             :         { 
   49758           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   49759             :         } 
   49760             :        else 
   49761             :         { 
   49762             :           attributeMechanism_copy = NULL; 
   49763             :         } 
   49764             :   /* check for a valid pointer and delete if present */ 
   49765           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   49766             :   /* add assignment to result here */ 
   49767           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   49768             : 
   49769             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49770             : 
   49771             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   49772             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   49773             :   // fixupCopy(result,help);
   49774             : 
   49775             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   49776             :   // the Sg_File_Info objects that are built for the new IR nodes.
   49777           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   49778           0 :      if (locatedNode != NULL)
   49779             :         {
   49780             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   49781           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   49782           0 :           ROSE_ASSERT(start != NULL);
   49783             : #if 0
   49784             :        // Debugging information
   49785             :           if (start->get_parent() == NULL)
   49786             :              {
   49787             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49788             :              }
   49789             : #endif
   49790           0 :           start->set_parent(locatedNode);
   49791           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   49792             : 
   49793           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   49794             : 
   49795             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   49796             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   49797             :        // ROSE_ASSERT(end != NULL);
   49798           0 :           if (end == NULL)
   49799             :              {
   49800           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   49801             :              }
   49802             :             else
   49803             :              {
   49804             : #if 0
   49805             :             // Debugging information
   49806             :                if (end->get_parent() == NULL)
   49807             :                   {
   49808             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49809             :                   }
   49810             : #endif
   49811           0 :                end->set_parent(locatedNode);
   49812           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   49813             :              }
   49814             : 
   49815           0 :           SgExpression* expression = isSgExpression(result);
   49816           0 :           if (isSgExpression(this) != NULL)
   49817             :              {
   49818           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   49819             : 
   49820             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   49821           0 :                if (operatorPosition != NULL)
   49822             :                   {
   49823             : #if 0
   49824             :                  // Debugging information
   49825             :                     if (operatorPosition->get_parent() == NULL)
   49826             :                        {
   49827             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49828             :                        }
   49829             : #endif
   49830           0 :                     operatorPosition->set_parent(expression);
   49831           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   49832             :                   }
   49833             :              }
   49834             :         }
   49835             : 
   49836             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   49837           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   49838           0 :      if (initializedName != NULL)
   49839             :         {
   49840             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   49841           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   49842           0 :           ROSE_ASSERT(start != NULL);
   49843             : #if 0
   49844             :        // Debugging information
   49845             :           if (start->get_parent() == NULL)
   49846             :              {
   49847             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49848             :              }
   49849             : #endif
   49850           0 :           start->set_parent(initializedName);
   49851           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   49852             : 
   49853             : #if 0
   49854             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   49855             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   49856             : 
   49857             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   49858             :        // ROSE_ASSERT(end != NULL);
   49859             :           if (end == NULL)
   49860             :              {
   49861             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   49862             :              }
   49863             :             else
   49864             :              {
   49865             :                if (end->get_parent() == NULL)
   49866             :                   {
   49867             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   49868             :                   }
   49869             :                end->set_parent(initializedName);
   49870             :                ROSE_ASSERT(end->get_parent() != NULL);
   49871             :              }
   49872             : #endif
   49873             :         }
   49874             : 
   49875             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   49876           0 :      help.insertCopiedNodePair(this,result);
   49877             : 
   49878             :   // printf ("End of copy SgOmpAtomicDefaultMemOrderClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   49879             : 
   49880             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   49881             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   49882           0 :      help.decrementDepth();
   49883             : 
   49884             :   // Test if this is the root of the copy!
   49885           0 :      if (help.get_depth() == 0)
   49886             :         {
   49887             :        // This is the original calling node.
   49888             : 
   49889             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   49890             :        // printf ("Calling SgOmpAtomicDefaultMemOrderClause::fixupCopy() (from root of AST being copied) \n");
   49891             : #if ALT_FIXUP_COPY
   49892             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   49893           0 :           fixupCopy_scopes (result,help);
   49894           0 :           fixupCopy_symbols (result,help);
   49895           0 :           fixupCopy_references (result,help);
   49896             : #else
   49897             :           fixupCopy(result,help);
   49898             : #endif
   49899             :        // Allow this to be called recursively, so accumulate the state.
   49900             :        // Also, clear the state in the SgCopyHelp object.
   49901             :        // help.clearState();
   49902             :         }
   49903             : 
   49904           0 :      return result;
   49905             :    }
   49906             : 
   49907             : 
   49908             : /* #line 49909 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   49909             : 
   49910             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49911             : 
   49912           0 : SgNode* SgOmpExtImplementationDefinedRequirementClause::copy ( SgCopyHelp& help) const
   49913             :    {
   49914           0 :      SgOmpExtImplementationDefinedRequirementClause* result = NULL;
   49915             : 
   49916             :   // printf ("Copy SgOmpExtImplementationDefinedRequirementClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   49917             : 
   49918             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   49919             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   49920             :   // The default value of the depth is 0, so after this call the depth is 1!
   49921           0 :      help.incrementDepth();
   49922             : 
   49923             : #if 0
   49924             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   49925             :   // but it is not generally true that things can only be copied once!
   49926             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   49927             :   // AstAttribute* existingAttribute = const_cast<SgOmpExtImplementationDefinedRequirementClause*>(this)->attribute["copied"];
   49928             :      bool previouslyCopied = const_cast<SgOmpExtImplementationDefinedRequirementClause*>(this)->attribute.exists("copied");
   49929             :      if (previouslyCopied == true)
   49930             :         {
   49931             :           this->get_file_info()->display("Called from copy SgOmpExtImplementationDefinedRequirementClause: debug");
   49932             :         }
   49933             :      ROSE_ASSERT(previouslyCopied == false);
   49934             : 
   49935             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   49936             :      AstAttribute* newAttribute = new AstAttribute();
   49937             :      ROSE_ASSERT(newAttribute != NULL);
   49938             : 
   49939             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   49940             :      const_cast<SgOmpExtImplementationDefinedRequirementClause*>(this)->attribute.add("copied",newAttribute);
   49941             : #endif
   49942             : 
   49943             :   // Copy data members from base classes
   49944             :   // Copy constructor parameter data member: startOfConstruct_copy
   49945             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   49946             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   49947           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   49948           0 :      if ( p_startOfConstruct != NULL ) 
   49949             :         { 
   49950           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   49951             :         } 
   49952             :        else 
   49953             :         { 
   49954             :           startOfConstruct_copy = NULL; 
   49955             :         } 
   49956             :   // Copy constructor parameter data member: implementation_defined_requirement_copy
   49957           0 :      SgExpression* implementation_defined_requirement_copy; 
   49958             :   // case: not a listType for (using conditionalToCopyVariable)implementation_defined_requirement
   49959           0 :           if (get_implementation_defined_requirement() != NULL) 
   49960             :              { 
   49961           0 :                implementation_defined_requirement_copy = static_cast<SgExpression*>(help.copyAst(get_implementation_defined_requirement())); 
   49962             :              } 
   49963             :             else 
   49964             :              { 
   49965             :                implementation_defined_requirement_copy = NULL; 
   49966             :              } 
   49967             :  
   49968             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   49969             : 
   49970             :   // Build an empty copy of this object (will be filled in, but 
   49971             :   // the parent can't be set and must be set by the caller)
   49972           0 :      result = new SgOmpExtImplementationDefinedRequirementClause(  startOfConstruct_copy, implementation_defined_requirement_copy );
   49973           0 :      ROSE_ASSERT(result != NULL);
   49974             : 
   49975             :   // Copy data members of "this" class
   49976             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   49977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   49978             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   49979           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   49980           0 :      if ( p_endOfConstruct != NULL ) 
   49981             :         { 
   49982           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   49983             :         } 
   49984             :        else 
   49985             :         { 
   49986             :           endOfConstruct_copy = NULL; 
   49987             :         } 
   49988             :   /* check for a valid pointer and delete if present */ 
   49989           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   49990             :   /* add assignment to result here */ 
   49991           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   49992             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   49993             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   49994             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   49995           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   49996           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   49997             :         { 
   49998           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   49999             :         } 
   50000             :        else 
   50001             :         { 
   50002             :           attachedPreprocessingInfoPtr_copy = NULL; 
   50003             :         } 
   50004             :   /* check for a valid pointer and delete if present */ 
   50005           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   50006             :   /* add assignment to result here */ 
   50007           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   50008             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   50009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   50010             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   50011           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   50012           0 :      if ( p_attributeMechanism != NULL ) 
   50013             :         { 
   50014           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   50015             :         } 
   50016             :        else 
   50017             :         { 
   50018             :           attributeMechanism_copy = NULL; 
   50019             :         } 
   50020             :   /* check for a valid pointer and delete if present */ 
   50021           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   50022             :   /* add assignment to result here */ 
   50023           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   50024             :   // case: not a listType for (using conditionalToSetParent)implementation_defined_requirement
   50025           0 :           if ( (implementation_defined_requirement_copy != NULL) && (implementation_defined_requirement_copy->get_parent() == NULL) && (isSgType(implementation_defined_requirement_copy) == NULL) ) 
   50026             :              { 
   50027           0 :                implementation_defined_requirement_copy->set_parent(result); 
   50028             :              } 
   50029             : 
   50030             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50031             : 
   50032             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   50033             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   50034             :   // fixupCopy(result,help);
   50035             : 
   50036             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   50037             :   // the Sg_File_Info objects that are built for the new IR nodes.
   50038           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   50039           0 :      if (locatedNode != NULL)
   50040             :         {
   50041             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   50042           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   50043           0 :           ROSE_ASSERT(start != NULL);
   50044             : #if 0
   50045             :        // Debugging information
   50046             :           if (start->get_parent() == NULL)
   50047             :              {
   50048             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50049             :              }
   50050             : #endif
   50051           0 :           start->set_parent(locatedNode);
   50052           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   50053             : 
   50054           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   50055             : 
   50056             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   50057             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   50058             :        // ROSE_ASSERT(end != NULL);
   50059           0 :           if (end == NULL)
   50060             :              {
   50061           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   50062             :              }
   50063             :             else
   50064             :              {
   50065             : #if 0
   50066             :             // Debugging information
   50067             :                if (end->get_parent() == NULL)
   50068             :                   {
   50069             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50070             :                   }
   50071             : #endif
   50072           0 :                end->set_parent(locatedNode);
   50073           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   50074             :              }
   50075             : 
   50076           0 :           SgExpression* expression = isSgExpression(result);
   50077           0 :           if (isSgExpression(this) != NULL)
   50078             :              {
   50079           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   50080             : 
   50081             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   50082           0 :                if (operatorPosition != NULL)
   50083             :                   {
   50084             : #if 0
   50085             :                  // Debugging information
   50086             :                     if (operatorPosition->get_parent() == NULL)
   50087             :                        {
   50088             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50089             :                        }
   50090             : #endif
   50091           0 :                     operatorPosition->set_parent(expression);
   50092           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   50093             :                   }
   50094             :              }
   50095             :         }
   50096             : 
   50097             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   50098           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   50099           0 :      if (initializedName != NULL)
   50100             :         {
   50101             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   50102           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   50103           0 :           ROSE_ASSERT(start != NULL);
   50104             : #if 0
   50105             :        // Debugging information
   50106             :           if (start->get_parent() == NULL)
   50107             :              {
   50108             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50109             :              }
   50110             : #endif
   50111           0 :           start->set_parent(initializedName);
   50112           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   50113             : 
   50114             : #if 0
   50115             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   50116             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   50117             : 
   50118             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   50119             :        // ROSE_ASSERT(end != NULL);
   50120             :           if (end == NULL)
   50121             :              {
   50122             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   50123             :              }
   50124             :             else
   50125             :              {
   50126             :                if (end->get_parent() == NULL)
   50127             :                   {
   50128             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50129             :                   }
   50130             :                end->set_parent(initializedName);
   50131             :                ROSE_ASSERT(end->get_parent() != NULL);
   50132             :              }
   50133             : #endif
   50134             :         }
   50135             : 
   50136             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   50137           0 :      help.insertCopiedNodePair(this,result);
   50138             : 
   50139             :   // printf ("End of copy SgOmpExtImplementationDefinedRequirementClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   50140             : 
   50141             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   50142             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   50143           0 :      help.decrementDepth();
   50144             : 
   50145             :   // Test if this is the root of the copy!
   50146           0 :      if (help.get_depth() == 0)
   50147             :         {
   50148             :        // This is the original calling node.
   50149             : 
   50150             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   50151             :        // printf ("Calling SgOmpExtImplementationDefinedRequirementClause::fixupCopy() (from root of AST being copied) \n");
   50152             : #if ALT_FIXUP_COPY
   50153             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   50154           0 :           fixupCopy_scopes (result,help);
   50155           0 :           fixupCopy_symbols (result,help);
   50156           0 :           fixupCopy_references (result,help);
   50157             : #else
   50158             :           fixupCopy(result,help);
   50159             : #endif
   50160             :        // Allow this to be called recursively, so accumulate the state.
   50161             :        // Also, clear the state in the SgCopyHelp object.
   50162             :        // help.clearState();
   50163             :         }
   50164             : 
   50165           0 :      return result;
   50166             :    }
   50167             : 
   50168             : 
   50169             : /* #line 50170 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   50170             : 
   50171             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50172             : 
   50173           0 : SgNode* SgOmpUsesAllocatorsDefination::copy ( SgCopyHelp& help) const
   50174             :    {
   50175           0 :      SgOmpUsesAllocatorsDefination* result = NULL;
   50176             : 
   50177             :   // printf ("Copy SgOmpUsesAllocatorsDefination = %p = %s \n",this,SageInterface::get_name(this).c_str());
   50178             : 
   50179             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   50180             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   50181             :   // The default value of the depth is 0, so after this call the depth is 1!
   50182           0 :      help.incrementDepth();
   50183             : 
   50184             : #if 0
   50185             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   50186             :   // but it is not generally true that things can only be copied once!
   50187             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   50188             :   // AstAttribute* existingAttribute = const_cast<SgOmpUsesAllocatorsDefination*>(this)->attribute["copied"];
   50189             :      bool previouslyCopied = const_cast<SgOmpUsesAllocatorsDefination*>(this)->attribute.exists("copied");
   50190             :      if (previouslyCopied == true)
   50191             :         {
   50192             :           this->get_file_info()->display("Called from copy SgOmpUsesAllocatorsDefination: debug");
   50193             :         }
   50194             :      ROSE_ASSERT(previouslyCopied == false);
   50195             : 
   50196             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   50197             :      AstAttribute* newAttribute = new AstAttribute();
   50198             :      ROSE_ASSERT(newAttribute != NULL);
   50199             : 
   50200             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   50201             :      const_cast<SgOmpUsesAllocatorsDefination*>(this)->attribute.add("copied",newAttribute);
   50202             : #endif
   50203             : 
   50204             :   // Copy data members from base classes
   50205             :   // Copy constructor parameter data member: startOfConstruct_copy
   50206             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   50207             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   50208           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   50209           0 :      if ( p_startOfConstruct != NULL ) 
   50210             :         { 
   50211           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   50212             :         } 
   50213             :        else 
   50214             :         { 
   50215             :           startOfConstruct_copy = NULL; 
   50216             :         } 
   50217             :  
   50218             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50219             : 
   50220             :   // Build an empty copy of this object (will be filled in, but 
   50221             :   // the parent can't be set and must be set by the caller)
   50222           0 :      result = new SgOmpUsesAllocatorsDefination(  startOfConstruct_copy );
   50223           0 :      ROSE_ASSERT(result != NULL);
   50224             : 
   50225             :   // Copy data members of "this" class
   50226             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   50227             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   50228             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   50229           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   50230           0 :      if ( p_endOfConstruct != NULL ) 
   50231             :         { 
   50232           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   50233             :         } 
   50234             :        else 
   50235             :         { 
   50236             :           endOfConstruct_copy = NULL; 
   50237             :         } 
   50238             :   /* check for a valid pointer and delete if present */ 
   50239           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   50240             :   /* add assignment to result here */ 
   50241           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   50242             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   50243             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   50244             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   50245           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   50246           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   50247             :         { 
   50248           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   50249             :         } 
   50250             :        else 
   50251             :         { 
   50252             :           attachedPreprocessingInfoPtr_copy = NULL; 
   50253             :         } 
   50254             :   /* check for a valid pointer and delete if present */ 
   50255           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   50256             :   /* add assignment to result here */ 
   50257           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   50258             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   50259             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   50260             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   50261           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   50262           0 :      if ( p_attributeMechanism != NULL ) 
   50263             :         { 
   50264           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   50265             :         } 
   50266             :        else 
   50267             :         { 
   50268             :           attributeMechanism_copy = NULL; 
   50269             :         } 
   50270             :   /* check for a valid pointer and delete if present */ 
   50271           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   50272             :   /* add assignment to result here */ 
   50273           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   50274             :   // Copy non-constructor parameter data member (access function): allocator_copy
   50275             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for allocator
   50276             :   // case: toBeCopied == COPY_DATA for allocator
   50277           0 :      SgOmpClause::omp_uses_allocators_allocator_enum allocator_copy = p_allocator; 
   50278           0 :      result->p_allocator = allocator_copy; 
   50279             :   // Copy non-constructor parameter data member (access function): user_defined_allocator_copy
   50280             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for user_defined_allocator
   50281             :   // case: toBeCopied == COPY_DATA for user_defined_allocator
   50282           0 :      SgExpression* user_defined_allocator_copy = p_user_defined_allocator; 
   50283           0 :      result->p_user_defined_allocator = user_defined_allocator_copy; 
   50284             :   // Copy non-constructor parameter data member (access function): allocator_traits_array_copy
   50285             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for allocator_traits_array
   50286             :   // case: toBeCopied == COPY_DATA for allocator_traits_array
   50287           0 :      SgExpression* allocator_traits_array_copy = p_allocator_traits_array; 
   50288           0 :      result->p_allocator_traits_array = allocator_traits_array_copy; 
   50289             : 
   50290             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50291             : 
   50292             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   50293             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   50294             :   // fixupCopy(result,help);
   50295             : 
   50296             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   50297             :   // the Sg_File_Info objects that are built for the new IR nodes.
   50298           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   50299           0 :      if (locatedNode != NULL)
   50300             :         {
   50301             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   50302           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   50303           0 :           ROSE_ASSERT(start != NULL);
   50304             : #if 0
   50305             :        // Debugging information
   50306             :           if (start->get_parent() == NULL)
   50307             :              {
   50308             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50309             :              }
   50310             : #endif
   50311           0 :           start->set_parent(locatedNode);
   50312           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   50313             : 
   50314           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   50315             : 
   50316             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   50317             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   50318             :        // ROSE_ASSERT(end != NULL);
   50319           0 :           if (end == NULL)
   50320             :              {
   50321           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   50322             :              }
   50323             :             else
   50324             :              {
   50325             : #if 0
   50326             :             // Debugging information
   50327             :                if (end->get_parent() == NULL)
   50328             :                   {
   50329             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50330             :                   }
   50331             : #endif
   50332           0 :                end->set_parent(locatedNode);
   50333           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   50334             :              }
   50335             : 
   50336           0 :           SgExpression* expression = isSgExpression(result);
   50337           0 :           if (isSgExpression(this) != NULL)
   50338             :              {
   50339           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   50340             : 
   50341             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   50342           0 :                if (operatorPosition != NULL)
   50343             :                   {
   50344             : #if 0
   50345             :                  // Debugging information
   50346             :                     if (operatorPosition->get_parent() == NULL)
   50347             :                        {
   50348             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50349             :                        }
   50350             : #endif
   50351           0 :                     operatorPosition->set_parent(expression);
   50352           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   50353             :                   }
   50354             :              }
   50355             :         }
   50356             : 
   50357             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   50358           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   50359           0 :      if (initializedName != NULL)
   50360             :         {
   50361             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   50362           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   50363           0 :           ROSE_ASSERT(start != NULL);
   50364             : #if 0
   50365             :        // Debugging information
   50366             :           if (start->get_parent() == NULL)
   50367             :              {
   50368             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50369             :              }
   50370             : #endif
   50371           0 :           start->set_parent(initializedName);
   50372           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   50373             : 
   50374             : #if 0
   50375             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   50376             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   50377             : 
   50378             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   50379             :        // ROSE_ASSERT(end != NULL);
   50380             :           if (end == NULL)
   50381             :              {
   50382             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   50383             :              }
   50384             :             else
   50385             :              {
   50386             :                if (end->get_parent() == NULL)
   50387             :                   {
   50388             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50389             :                   }
   50390             :                end->set_parent(initializedName);
   50391             :                ROSE_ASSERT(end->get_parent() != NULL);
   50392             :              }
   50393             : #endif
   50394             :         }
   50395             : 
   50396             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   50397           0 :      help.insertCopiedNodePair(this,result);
   50398             : 
   50399             :   // printf ("End of copy SgOmpUsesAllocatorsDefination = %p = %s \n",this,SageInterface::get_name(this).c_str());
   50400             : 
   50401             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   50402             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   50403           0 :      help.decrementDepth();
   50404             : 
   50405             :   // Test if this is the root of the copy!
   50406           0 :      if (help.get_depth() == 0)
   50407             :         {
   50408             :        // This is the original calling node.
   50409             : 
   50410             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   50411             :        // printf ("Calling SgOmpUsesAllocatorsDefination::fixupCopy() (from root of AST being copied) \n");
   50412             : #if ALT_FIXUP_COPY
   50413             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   50414           0 :           fixupCopy_scopes (result,help);
   50415           0 :           fixupCopy_symbols (result,help);
   50416           0 :           fixupCopy_references (result,help);
   50417             : #else
   50418             :           fixupCopy(result,help);
   50419             : #endif
   50420             :        // Allow this to be called recursively, so accumulate the state.
   50421             :        // Also, clear the state in the SgCopyHelp object.
   50422             :        // help.clearState();
   50423             :         }
   50424             : 
   50425           0 :      return result;
   50426             :    }
   50427             : 
   50428             : 
   50429             : /* #line 50430 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   50430             : 
   50431             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50432             : 
   50433           0 : SgNode* SgOmpVariablesClause::copy ( SgCopyHelp& help) const
   50434             :    {
   50435           0 :      SgOmpVariablesClause* result = NULL;
   50436             : 
   50437             :   // printf ("Copy SgOmpVariablesClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   50438             : 
   50439             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   50440             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   50441             :   // The default value of the depth is 0, so after this call the depth is 1!
   50442           0 :      help.incrementDepth();
   50443             : 
   50444             : #if 0
   50445             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   50446             :   // but it is not generally true that things can only be copied once!
   50447             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   50448             :   // AstAttribute* existingAttribute = const_cast<SgOmpVariablesClause*>(this)->attribute["copied"];
   50449             :      bool previouslyCopied = const_cast<SgOmpVariablesClause*>(this)->attribute.exists("copied");
   50450             :      if (previouslyCopied == true)
   50451             :         {
   50452             :           this->get_file_info()->display("Called from copy SgOmpVariablesClause: debug");
   50453             :         }
   50454             :      ROSE_ASSERT(previouslyCopied == false);
   50455             : 
   50456             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   50457             :      AstAttribute* newAttribute = new AstAttribute();
   50458             :      ROSE_ASSERT(newAttribute != NULL);
   50459             : 
   50460             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   50461             :      const_cast<SgOmpVariablesClause*>(this)->attribute.add("copied",newAttribute);
   50462             : #endif
   50463             : 
   50464             :   // Copy data members from base classes
   50465             :   // Copy constructor parameter data member: startOfConstruct_copy
   50466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   50467             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   50468           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   50469           0 :      if ( p_startOfConstruct != NULL ) 
   50470             :         { 
   50471           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   50472             :         } 
   50473             :        else 
   50474             :         { 
   50475             :           startOfConstruct_copy = NULL; 
   50476             :         } 
   50477             :   // Copy constructor parameter data member: variables_copy
   50478           0 :      SgExprListExp* variables_copy; 
   50479             :   // case: not a listType for (using conditionalToCopyVariable)variables
   50480           0 :           if (get_variables() != NULL) 
   50481             :              { 
   50482           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   50483             :              } 
   50484             :             else 
   50485             :              { 
   50486             :                variables_copy = NULL; 
   50487             :              } 
   50488             :  
   50489             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50490             : 
   50491             :   // Build an empty copy of this object (will be filled in, but 
   50492             :   // the parent can't be set and must be set by the caller)
   50493           0 :      result = new SgOmpVariablesClause(  startOfConstruct_copy, variables_copy );
   50494           0 :      ROSE_ASSERT(result != NULL);
   50495             : 
   50496             :   // Copy data members of "this" class
   50497             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   50498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   50499             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   50500           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   50501           0 :      if ( p_endOfConstruct != NULL ) 
   50502             :         { 
   50503           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   50504             :         } 
   50505             :        else 
   50506             :         { 
   50507             :           endOfConstruct_copy = NULL; 
   50508             :         } 
   50509             :   /* check for a valid pointer and delete if present */ 
   50510           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   50511             :   /* add assignment to result here */ 
   50512           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   50513             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   50514             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   50515             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   50516           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   50517           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   50518             :         { 
   50519           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   50520             :         } 
   50521             :        else 
   50522             :         { 
   50523             :           attachedPreprocessingInfoPtr_copy = NULL; 
   50524             :         } 
   50525             :   /* check for a valid pointer and delete if present */ 
   50526           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   50527             :   /* add assignment to result here */ 
   50528           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   50529             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   50530             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   50531             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   50532           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   50533           0 :      if ( p_attributeMechanism != NULL ) 
   50534             :         { 
   50535           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   50536             :         } 
   50537             :        else 
   50538             :         { 
   50539             :           attributeMechanism_copy = NULL; 
   50540             :         } 
   50541             :   /* check for a valid pointer and delete if present */ 
   50542           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   50543             :   /* add assignment to result here */ 
   50544           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   50545             :   // case: not a listType for (using conditionalToSetParent)variables
   50546           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   50547             :              { 
   50548           0 :                variables_copy->set_parent(result); 
   50549             :              } 
   50550             : 
   50551             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50552             : 
   50553             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   50554             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   50555             :   // fixupCopy(result,help);
   50556             : 
   50557             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   50558             :   // the Sg_File_Info objects that are built for the new IR nodes.
   50559           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   50560           0 :      if (locatedNode != NULL)
   50561             :         {
   50562             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   50563           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   50564           0 :           ROSE_ASSERT(start != NULL);
   50565             : #if 0
   50566             :        // Debugging information
   50567             :           if (start->get_parent() == NULL)
   50568             :              {
   50569             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50570             :              }
   50571             : #endif
   50572           0 :           start->set_parent(locatedNode);
   50573           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   50574             : 
   50575           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   50576             : 
   50577             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   50578             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   50579             :        // ROSE_ASSERT(end != NULL);
   50580           0 :           if (end == NULL)
   50581             :              {
   50582           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   50583             :              }
   50584             :             else
   50585             :              {
   50586             : #if 0
   50587             :             // Debugging information
   50588             :                if (end->get_parent() == NULL)
   50589             :                   {
   50590             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50591             :                   }
   50592             : #endif
   50593           0 :                end->set_parent(locatedNode);
   50594           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   50595             :              }
   50596             : 
   50597           0 :           SgExpression* expression = isSgExpression(result);
   50598           0 :           if (isSgExpression(this) != NULL)
   50599             :              {
   50600           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   50601             : 
   50602             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   50603           0 :                if (operatorPosition != NULL)
   50604             :                   {
   50605             : #if 0
   50606             :                  // Debugging information
   50607             :                     if (operatorPosition->get_parent() == NULL)
   50608             :                        {
   50609             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50610             :                        }
   50611             : #endif
   50612           0 :                     operatorPosition->set_parent(expression);
   50613           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   50614             :                   }
   50615             :              }
   50616             :         }
   50617             : 
   50618             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   50619           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   50620           0 :      if (initializedName != NULL)
   50621             :         {
   50622             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   50623           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   50624           0 :           ROSE_ASSERT(start != NULL);
   50625             : #if 0
   50626             :        // Debugging information
   50627             :           if (start->get_parent() == NULL)
   50628             :              {
   50629             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50630             :              }
   50631             : #endif
   50632           0 :           start->set_parent(initializedName);
   50633           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   50634             : 
   50635             : #if 0
   50636             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   50637             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   50638             : 
   50639             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   50640             :        // ROSE_ASSERT(end != NULL);
   50641             :           if (end == NULL)
   50642             :              {
   50643             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   50644             :              }
   50645             :             else
   50646             :              {
   50647             :                if (end->get_parent() == NULL)
   50648             :                   {
   50649             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50650             :                   }
   50651             :                end->set_parent(initializedName);
   50652             :                ROSE_ASSERT(end->get_parent() != NULL);
   50653             :              }
   50654             : #endif
   50655             :         }
   50656             : 
   50657             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   50658           0 :      help.insertCopiedNodePair(this,result);
   50659             : 
   50660             :   // printf ("End of copy SgOmpVariablesClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   50661             : 
   50662             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   50663             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   50664           0 :      help.decrementDepth();
   50665             : 
   50666             :   // Test if this is the root of the copy!
   50667           0 :      if (help.get_depth() == 0)
   50668             :         {
   50669             :        // This is the original calling node.
   50670             : 
   50671             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   50672             :        // printf ("Calling SgOmpVariablesClause::fixupCopy() (from root of AST being copied) \n");
   50673             : #if ALT_FIXUP_COPY
   50674             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   50675           0 :           fixupCopy_scopes (result,help);
   50676           0 :           fixupCopy_symbols (result,help);
   50677           0 :           fixupCopy_references (result,help);
   50678             : #else
   50679             :           fixupCopy(result,help);
   50680             : #endif
   50681             :        // Allow this to be called recursively, so accumulate the state.
   50682             :        // Also, clear the state in the SgCopyHelp object.
   50683             :        // help.clearState();
   50684             :         }
   50685             : 
   50686           0 :      return result;
   50687             :    }
   50688             : 
   50689             : 
   50690             : /* #line 50691 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   50691             : 
   50692             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50693             : 
   50694           0 : SgNode* SgOmpCopyprivateClause::copy ( SgCopyHelp& help) const
   50695             :    {
   50696           0 :      SgOmpCopyprivateClause* result = NULL;
   50697             : 
   50698             :   // printf ("Copy SgOmpCopyprivateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   50699             : 
   50700             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   50701             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   50702             :   // The default value of the depth is 0, so after this call the depth is 1!
   50703           0 :      help.incrementDepth();
   50704             : 
   50705             : #if 0
   50706             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   50707             :   // but it is not generally true that things can only be copied once!
   50708             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   50709             :   // AstAttribute* existingAttribute = const_cast<SgOmpCopyprivateClause*>(this)->attribute["copied"];
   50710             :      bool previouslyCopied = const_cast<SgOmpCopyprivateClause*>(this)->attribute.exists("copied");
   50711             :      if (previouslyCopied == true)
   50712             :         {
   50713             :           this->get_file_info()->display("Called from copy SgOmpCopyprivateClause: debug");
   50714             :         }
   50715             :      ROSE_ASSERT(previouslyCopied == false);
   50716             : 
   50717             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   50718             :      AstAttribute* newAttribute = new AstAttribute();
   50719             :      ROSE_ASSERT(newAttribute != NULL);
   50720             : 
   50721             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   50722             :      const_cast<SgOmpCopyprivateClause*>(this)->attribute.add("copied",newAttribute);
   50723             : #endif
   50724             : 
   50725             :   // Copy data members from base classes
   50726             :   // Copy constructor parameter data member: startOfConstruct_copy
   50727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   50728             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   50729           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   50730           0 :      if ( p_startOfConstruct != NULL ) 
   50731             :         { 
   50732           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   50733             :         } 
   50734             :        else 
   50735             :         { 
   50736             :           startOfConstruct_copy = NULL; 
   50737             :         } 
   50738             :   // Copy constructor parameter data member: variables_copy
   50739           0 :      SgExprListExp* variables_copy; 
   50740             :   // case: not a listType for (using conditionalToCopyVariable)variables
   50741           0 :           if (get_variables() != NULL) 
   50742             :              { 
   50743           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   50744             :              } 
   50745             :             else 
   50746             :              { 
   50747             :                variables_copy = NULL; 
   50748             :              } 
   50749             :  
   50750             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50751             : 
   50752             :   // Build an empty copy of this object (will be filled in, but 
   50753             :   // the parent can't be set and must be set by the caller)
   50754           0 :      result = new SgOmpCopyprivateClause(  startOfConstruct_copy, variables_copy );
   50755           0 :      ROSE_ASSERT(result != NULL);
   50756             : 
   50757             :   // Copy data members of "this" class
   50758             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   50759             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   50760             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   50761           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   50762           0 :      if ( p_endOfConstruct != NULL ) 
   50763             :         { 
   50764           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   50765             :         } 
   50766             :        else 
   50767             :         { 
   50768             :           endOfConstruct_copy = NULL; 
   50769             :         } 
   50770             :   /* check for a valid pointer and delete if present */ 
   50771           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   50772             :   /* add assignment to result here */ 
   50773           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   50774             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   50775             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   50776             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   50777           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   50778           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   50779             :         { 
   50780           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   50781             :         } 
   50782             :        else 
   50783             :         { 
   50784             :           attachedPreprocessingInfoPtr_copy = NULL; 
   50785             :         } 
   50786             :   /* check for a valid pointer and delete if present */ 
   50787           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   50788             :   /* add assignment to result here */ 
   50789           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   50790             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   50791             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   50792             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   50793           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   50794           0 :      if ( p_attributeMechanism != NULL ) 
   50795             :         { 
   50796           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   50797             :         } 
   50798             :        else 
   50799             :         { 
   50800             :           attributeMechanism_copy = NULL; 
   50801             :         } 
   50802             :   /* check for a valid pointer and delete if present */ 
   50803           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   50804             :   /* add assignment to result here */ 
   50805           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   50806             :   // case: not a listType for (using conditionalToSetParent)variables
   50807           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   50808             :              { 
   50809           0 :                variables_copy->set_parent(result); 
   50810             :              } 
   50811             : 
   50812             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50813             : 
   50814             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   50815             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   50816             :   // fixupCopy(result,help);
   50817             : 
   50818             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   50819             :   // the Sg_File_Info objects that are built for the new IR nodes.
   50820           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   50821           0 :      if (locatedNode != NULL)
   50822             :         {
   50823             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   50824           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   50825           0 :           ROSE_ASSERT(start != NULL);
   50826             : #if 0
   50827             :        // Debugging information
   50828             :           if (start->get_parent() == NULL)
   50829             :              {
   50830             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50831             :              }
   50832             : #endif
   50833           0 :           start->set_parent(locatedNode);
   50834           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   50835             : 
   50836           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   50837             : 
   50838             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   50839             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   50840             :        // ROSE_ASSERT(end != NULL);
   50841           0 :           if (end == NULL)
   50842             :              {
   50843           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   50844             :              }
   50845             :             else
   50846             :              {
   50847             : #if 0
   50848             :             // Debugging information
   50849             :                if (end->get_parent() == NULL)
   50850             :                   {
   50851             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50852             :                   }
   50853             : #endif
   50854           0 :                end->set_parent(locatedNode);
   50855           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   50856             :              }
   50857             : 
   50858           0 :           SgExpression* expression = isSgExpression(result);
   50859           0 :           if (isSgExpression(this) != NULL)
   50860             :              {
   50861           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   50862             : 
   50863             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   50864           0 :                if (operatorPosition != NULL)
   50865             :                   {
   50866             : #if 0
   50867             :                  // Debugging information
   50868             :                     if (operatorPosition->get_parent() == NULL)
   50869             :                        {
   50870             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50871             :                        }
   50872             : #endif
   50873           0 :                     operatorPosition->set_parent(expression);
   50874           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   50875             :                   }
   50876             :              }
   50877             :         }
   50878             : 
   50879             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   50880           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   50881           0 :      if (initializedName != NULL)
   50882             :         {
   50883             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   50884           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   50885           0 :           ROSE_ASSERT(start != NULL);
   50886             : #if 0
   50887             :        // Debugging information
   50888             :           if (start->get_parent() == NULL)
   50889             :              {
   50890             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50891             :              }
   50892             : #endif
   50893           0 :           start->set_parent(initializedName);
   50894           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   50895             : 
   50896             : #if 0
   50897             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   50898             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   50899             : 
   50900             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   50901             :        // ROSE_ASSERT(end != NULL);
   50902             :           if (end == NULL)
   50903             :              {
   50904             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   50905             :              }
   50906             :             else
   50907             :              {
   50908             :                if (end->get_parent() == NULL)
   50909             :                   {
   50910             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   50911             :                   }
   50912             :                end->set_parent(initializedName);
   50913             :                ROSE_ASSERT(end->get_parent() != NULL);
   50914             :              }
   50915             : #endif
   50916             :         }
   50917             : 
   50918             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   50919           0 :      help.insertCopiedNodePair(this,result);
   50920             : 
   50921             :   // printf ("End of copy SgOmpCopyprivateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   50922             : 
   50923             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   50924             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   50925           0 :      help.decrementDepth();
   50926             : 
   50927             :   // Test if this is the root of the copy!
   50928           0 :      if (help.get_depth() == 0)
   50929             :         {
   50930             :        // This is the original calling node.
   50931             : 
   50932             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   50933             :        // printf ("Calling SgOmpCopyprivateClause::fixupCopy() (from root of AST being copied) \n");
   50934             : #if ALT_FIXUP_COPY
   50935             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   50936           0 :           fixupCopy_scopes (result,help);
   50937           0 :           fixupCopy_symbols (result,help);
   50938           0 :           fixupCopy_references (result,help);
   50939             : #else
   50940             :           fixupCopy(result,help);
   50941             : #endif
   50942             :        // Allow this to be called recursively, so accumulate the state.
   50943             :        // Also, clear the state in the SgCopyHelp object.
   50944             :        // help.clearState();
   50945             :         }
   50946             : 
   50947           0 :      return result;
   50948             :    }
   50949             : 
   50950             : 
   50951             : /* #line 50952 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   50952             : 
   50953             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   50954             : 
   50955           0 : SgNode* SgOmpPrivateClause::copy ( SgCopyHelp& help) const
   50956             :    {
   50957           0 :      SgOmpPrivateClause* result = NULL;
   50958             : 
   50959             :   // printf ("Copy SgOmpPrivateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   50960             : 
   50961             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   50962             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   50963             :   // The default value of the depth is 0, so after this call the depth is 1!
   50964           0 :      help.incrementDepth();
   50965             : 
   50966             : #if 0
   50967             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   50968             :   // but it is not generally true that things can only be copied once!
   50969             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   50970             :   // AstAttribute* existingAttribute = const_cast<SgOmpPrivateClause*>(this)->attribute["copied"];
   50971             :      bool previouslyCopied = const_cast<SgOmpPrivateClause*>(this)->attribute.exists("copied");
   50972             :      if (previouslyCopied == true)
   50973             :         {
   50974             :           this->get_file_info()->display("Called from copy SgOmpPrivateClause: debug");
   50975             :         }
   50976             :      ROSE_ASSERT(previouslyCopied == false);
   50977             : 
   50978             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   50979             :      AstAttribute* newAttribute = new AstAttribute();
   50980             :      ROSE_ASSERT(newAttribute != NULL);
   50981             : 
   50982             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   50983             :      const_cast<SgOmpPrivateClause*>(this)->attribute.add("copied",newAttribute);
   50984             : #endif
   50985             : 
   50986             :   // Copy data members from base classes
   50987             :   // Copy constructor parameter data member: startOfConstruct_copy
   50988             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   50989             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   50990           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   50991           0 :      if ( p_startOfConstruct != NULL ) 
   50992             :         { 
   50993           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   50994             :         } 
   50995             :        else 
   50996             :         { 
   50997             :           startOfConstruct_copy = NULL; 
   50998             :         } 
   50999             :   // Copy constructor parameter data member: variables_copy
   51000           0 :      SgExprListExp* variables_copy; 
   51001             :   // case: not a listType for (using conditionalToCopyVariable)variables
   51002           0 :           if (get_variables() != NULL) 
   51003             :              { 
   51004           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   51005             :              } 
   51006             :             else 
   51007             :              { 
   51008             :                variables_copy = NULL; 
   51009             :              } 
   51010             :  
   51011             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51012             : 
   51013             :   // Build an empty copy of this object (will be filled in, but 
   51014             :   // the parent can't be set and must be set by the caller)
   51015           0 :      result = new SgOmpPrivateClause(  startOfConstruct_copy, variables_copy );
   51016           0 :      ROSE_ASSERT(result != NULL);
   51017             : 
   51018             :   // Copy data members of "this" class
   51019             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   51020             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   51021             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   51022           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   51023           0 :      if ( p_endOfConstruct != NULL ) 
   51024             :         { 
   51025           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   51026             :         } 
   51027             :        else 
   51028             :         { 
   51029             :           endOfConstruct_copy = NULL; 
   51030             :         } 
   51031             :   /* check for a valid pointer and delete if present */ 
   51032           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   51033             :   /* add assignment to result here */ 
   51034           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   51035             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   51036             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   51037             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   51038           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   51039           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   51040             :         { 
   51041           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   51042             :         } 
   51043             :        else 
   51044             :         { 
   51045             :           attachedPreprocessingInfoPtr_copy = NULL; 
   51046             :         } 
   51047             :   /* check for a valid pointer and delete if present */ 
   51048           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   51049             :   /* add assignment to result here */ 
   51050           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   51051             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   51052             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   51053             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   51054           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   51055           0 :      if ( p_attributeMechanism != NULL ) 
   51056             :         { 
   51057           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   51058             :         } 
   51059             :        else 
   51060             :         { 
   51061             :           attributeMechanism_copy = NULL; 
   51062             :         } 
   51063             :   /* check for a valid pointer and delete if present */ 
   51064           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   51065             :   /* add assignment to result here */ 
   51066           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   51067             :   // case: not a listType for (using conditionalToSetParent)variables
   51068           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   51069             :              { 
   51070           0 :                variables_copy->set_parent(result); 
   51071             :              } 
   51072             : 
   51073             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51074             : 
   51075             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   51076             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   51077             :   // fixupCopy(result,help);
   51078             : 
   51079             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   51080             :   // the Sg_File_Info objects that are built for the new IR nodes.
   51081           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   51082           0 :      if (locatedNode != NULL)
   51083             :         {
   51084             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   51085           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   51086           0 :           ROSE_ASSERT(start != NULL);
   51087             : #if 0
   51088             :        // Debugging information
   51089             :           if (start->get_parent() == NULL)
   51090             :              {
   51091             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51092             :              }
   51093             : #endif
   51094           0 :           start->set_parent(locatedNode);
   51095           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   51096             : 
   51097           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   51098             : 
   51099             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   51100             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   51101             :        // ROSE_ASSERT(end != NULL);
   51102           0 :           if (end == NULL)
   51103             :              {
   51104           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   51105             :              }
   51106             :             else
   51107             :              {
   51108             : #if 0
   51109             :             // Debugging information
   51110             :                if (end->get_parent() == NULL)
   51111             :                   {
   51112             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51113             :                   }
   51114             : #endif
   51115           0 :                end->set_parent(locatedNode);
   51116           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   51117             :              }
   51118             : 
   51119           0 :           SgExpression* expression = isSgExpression(result);
   51120           0 :           if (isSgExpression(this) != NULL)
   51121             :              {
   51122           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   51123             : 
   51124             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   51125           0 :                if (operatorPosition != NULL)
   51126             :                   {
   51127             : #if 0
   51128             :                  // Debugging information
   51129             :                     if (operatorPosition->get_parent() == NULL)
   51130             :                        {
   51131             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51132             :                        }
   51133             : #endif
   51134           0 :                     operatorPosition->set_parent(expression);
   51135           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   51136             :                   }
   51137             :              }
   51138             :         }
   51139             : 
   51140             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   51141           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   51142           0 :      if (initializedName != NULL)
   51143             :         {
   51144             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   51145           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   51146           0 :           ROSE_ASSERT(start != NULL);
   51147             : #if 0
   51148             :        // Debugging information
   51149             :           if (start->get_parent() == NULL)
   51150             :              {
   51151             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51152             :              }
   51153             : #endif
   51154           0 :           start->set_parent(initializedName);
   51155           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   51156             : 
   51157             : #if 0
   51158             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   51159             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   51160             : 
   51161             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   51162             :        // ROSE_ASSERT(end != NULL);
   51163             :           if (end == NULL)
   51164             :              {
   51165             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   51166             :              }
   51167             :             else
   51168             :              {
   51169             :                if (end->get_parent() == NULL)
   51170             :                   {
   51171             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51172             :                   }
   51173             :                end->set_parent(initializedName);
   51174             :                ROSE_ASSERT(end->get_parent() != NULL);
   51175             :              }
   51176             : #endif
   51177             :         }
   51178             : 
   51179             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   51180           0 :      help.insertCopiedNodePair(this,result);
   51181             : 
   51182             :   // printf ("End of copy SgOmpPrivateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   51183             : 
   51184             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   51185             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   51186           0 :      help.decrementDepth();
   51187             : 
   51188             :   // Test if this is the root of the copy!
   51189           0 :      if (help.get_depth() == 0)
   51190             :         {
   51191             :        // This is the original calling node.
   51192             : 
   51193             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   51194             :        // printf ("Calling SgOmpPrivateClause::fixupCopy() (from root of AST being copied) \n");
   51195             : #if ALT_FIXUP_COPY
   51196             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   51197           0 :           fixupCopy_scopes (result,help);
   51198           0 :           fixupCopy_symbols (result,help);
   51199           0 :           fixupCopy_references (result,help);
   51200             : #else
   51201             :           fixupCopy(result,help);
   51202             : #endif
   51203             :        // Allow this to be called recursively, so accumulate the state.
   51204             :        // Also, clear the state in the SgCopyHelp object.
   51205             :        // help.clearState();
   51206             :         }
   51207             : 
   51208           0 :      return result;
   51209             :    }
   51210             : 
   51211             : 
   51212             : /* #line 51213 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   51213             : 
   51214             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51215             : 
   51216           0 : SgNode* SgOmpFirstprivateClause::copy ( SgCopyHelp& help) const
   51217             :    {
   51218           0 :      SgOmpFirstprivateClause* result = NULL;
   51219             : 
   51220             :   // printf ("Copy SgOmpFirstprivateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   51221             : 
   51222             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   51223             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   51224             :   // The default value of the depth is 0, so after this call the depth is 1!
   51225           0 :      help.incrementDepth();
   51226             : 
   51227             : #if 0
   51228             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   51229             :   // but it is not generally true that things can only be copied once!
   51230             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   51231             :   // AstAttribute* existingAttribute = const_cast<SgOmpFirstprivateClause*>(this)->attribute["copied"];
   51232             :      bool previouslyCopied = const_cast<SgOmpFirstprivateClause*>(this)->attribute.exists("copied");
   51233             :      if (previouslyCopied == true)
   51234             :         {
   51235             :           this->get_file_info()->display("Called from copy SgOmpFirstprivateClause: debug");
   51236             :         }
   51237             :      ROSE_ASSERT(previouslyCopied == false);
   51238             : 
   51239             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   51240             :      AstAttribute* newAttribute = new AstAttribute();
   51241             :      ROSE_ASSERT(newAttribute != NULL);
   51242             : 
   51243             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   51244             :      const_cast<SgOmpFirstprivateClause*>(this)->attribute.add("copied",newAttribute);
   51245             : #endif
   51246             : 
   51247             :   // Copy data members from base classes
   51248             :   // Copy constructor parameter data member: startOfConstruct_copy
   51249             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   51250             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   51251           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   51252           0 :      if ( p_startOfConstruct != NULL ) 
   51253             :         { 
   51254           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   51255             :         } 
   51256             :        else 
   51257             :         { 
   51258             :           startOfConstruct_copy = NULL; 
   51259             :         } 
   51260             :   // Copy constructor parameter data member: variables_copy
   51261           0 :      SgExprListExp* variables_copy; 
   51262             :   // case: not a listType for (using conditionalToCopyVariable)variables
   51263           0 :           if (get_variables() != NULL) 
   51264             :              { 
   51265           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   51266             :              } 
   51267             :             else 
   51268             :              { 
   51269             :                variables_copy = NULL; 
   51270             :              } 
   51271             :  
   51272             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51273             : 
   51274             :   // Build an empty copy of this object (will be filled in, but 
   51275             :   // the parent can't be set and must be set by the caller)
   51276           0 :      result = new SgOmpFirstprivateClause(  startOfConstruct_copy, variables_copy );
   51277           0 :      ROSE_ASSERT(result != NULL);
   51278             : 
   51279             :   // Copy data members of "this" class
   51280             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   51281             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   51282             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   51283           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   51284           0 :      if ( p_endOfConstruct != NULL ) 
   51285             :         { 
   51286           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   51287             :         } 
   51288             :        else 
   51289             :         { 
   51290             :           endOfConstruct_copy = NULL; 
   51291             :         } 
   51292             :   /* check for a valid pointer and delete if present */ 
   51293           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   51294             :   /* add assignment to result here */ 
   51295           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   51296             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   51297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   51298             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   51299           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   51300           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   51301             :         { 
   51302           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   51303             :         } 
   51304             :        else 
   51305             :         { 
   51306             :           attachedPreprocessingInfoPtr_copy = NULL; 
   51307             :         } 
   51308             :   /* check for a valid pointer and delete if present */ 
   51309           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   51310             :   /* add assignment to result here */ 
   51311           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   51312             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   51313             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   51314             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   51315           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   51316           0 :      if ( p_attributeMechanism != NULL ) 
   51317             :         { 
   51318           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   51319             :         } 
   51320             :        else 
   51321             :         { 
   51322             :           attributeMechanism_copy = NULL; 
   51323             :         } 
   51324             :   /* check for a valid pointer and delete if present */ 
   51325           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   51326             :   /* add assignment to result here */ 
   51327           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   51328             :   // case: not a listType for (using conditionalToSetParent)variables
   51329           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   51330             :              { 
   51331           0 :                variables_copy->set_parent(result); 
   51332             :              } 
   51333             : 
   51334             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51335             : 
   51336             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   51337             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   51338             :   // fixupCopy(result,help);
   51339             : 
   51340             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   51341             :   // the Sg_File_Info objects that are built for the new IR nodes.
   51342           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   51343           0 :      if (locatedNode != NULL)
   51344             :         {
   51345             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   51346           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   51347           0 :           ROSE_ASSERT(start != NULL);
   51348             : #if 0
   51349             :        // Debugging information
   51350             :           if (start->get_parent() == NULL)
   51351             :              {
   51352             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51353             :              }
   51354             : #endif
   51355           0 :           start->set_parent(locatedNode);
   51356           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   51357             : 
   51358           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   51359             : 
   51360             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   51361             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   51362             :        // ROSE_ASSERT(end != NULL);
   51363           0 :           if (end == NULL)
   51364             :              {
   51365           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   51366             :              }
   51367             :             else
   51368             :              {
   51369             : #if 0
   51370             :             // Debugging information
   51371             :                if (end->get_parent() == NULL)
   51372             :                   {
   51373             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51374             :                   }
   51375             : #endif
   51376           0 :                end->set_parent(locatedNode);
   51377           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   51378             :              }
   51379             : 
   51380           0 :           SgExpression* expression = isSgExpression(result);
   51381           0 :           if (isSgExpression(this) != NULL)
   51382             :              {
   51383           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   51384             : 
   51385             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   51386           0 :                if (operatorPosition != NULL)
   51387             :                   {
   51388             : #if 0
   51389             :                  // Debugging information
   51390             :                     if (operatorPosition->get_parent() == NULL)
   51391             :                        {
   51392             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51393             :                        }
   51394             : #endif
   51395           0 :                     operatorPosition->set_parent(expression);
   51396           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   51397             :                   }
   51398             :              }
   51399             :         }
   51400             : 
   51401             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   51402           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   51403           0 :      if (initializedName != NULL)
   51404             :         {
   51405             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   51406           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   51407           0 :           ROSE_ASSERT(start != NULL);
   51408             : #if 0
   51409             :        // Debugging information
   51410             :           if (start->get_parent() == NULL)
   51411             :              {
   51412             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51413             :              }
   51414             : #endif
   51415           0 :           start->set_parent(initializedName);
   51416           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   51417             : 
   51418             : #if 0
   51419             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   51420             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   51421             : 
   51422             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   51423             :        // ROSE_ASSERT(end != NULL);
   51424             :           if (end == NULL)
   51425             :              {
   51426             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   51427             :              }
   51428             :             else
   51429             :              {
   51430             :                if (end->get_parent() == NULL)
   51431             :                   {
   51432             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51433             :                   }
   51434             :                end->set_parent(initializedName);
   51435             :                ROSE_ASSERT(end->get_parent() != NULL);
   51436             :              }
   51437             : #endif
   51438             :         }
   51439             : 
   51440             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   51441           0 :      help.insertCopiedNodePair(this,result);
   51442             : 
   51443             :   // printf ("End of copy SgOmpFirstprivateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   51444             : 
   51445             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   51446             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   51447           0 :      help.decrementDepth();
   51448             : 
   51449             :   // Test if this is the root of the copy!
   51450           0 :      if (help.get_depth() == 0)
   51451             :         {
   51452             :        // This is the original calling node.
   51453             : 
   51454             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   51455             :        // printf ("Calling SgOmpFirstprivateClause::fixupCopy() (from root of AST being copied) \n");
   51456             : #if ALT_FIXUP_COPY
   51457             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   51458           0 :           fixupCopy_scopes (result,help);
   51459           0 :           fixupCopy_symbols (result,help);
   51460           0 :           fixupCopy_references (result,help);
   51461             : #else
   51462             :           fixupCopy(result,help);
   51463             : #endif
   51464             :        // Allow this to be called recursively, so accumulate the state.
   51465             :        // Also, clear the state in the SgCopyHelp object.
   51466             :        // help.clearState();
   51467             :         }
   51468             : 
   51469           0 :      return result;
   51470             :    }
   51471             : 
   51472             : 
   51473             : /* #line 51474 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   51474             : 
   51475             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51476             : 
   51477           0 : SgNode* SgOmpNontemporalClause::copy ( SgCopyHelp& help) const
   51478             :    {
   51479           0 :      SgOmpNontemporalClause* result = NULL;
   51480             : 
   51481             :   // printf ("Copy SgOmpNontemporalClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   51482             : 
   51483             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   51484             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   51485             :   // The default value of the depth is 0, so after this call the depth is 1!
   51486           0 :      help.incrementDepth();
   51487             : 
   51488             : #if 0
   51489             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   51490             :   // but it is not generally true that things can only be copied once!
   51491             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   51492             :   // AstAttribute* existingAttribute = const_cast<SgOmpNontemporalClause*>(this)->attribute["copied"];
   51493             :      bool previouslyCopied = const_cast<SgOmpNontemporalClause*>(this)->attribute.exists("copied");
   51494             :      if (previouslyCopied == true)
   51495             :         {
   51496             :           this->get_file_info()->display("Called from copy SgOmpNontemporalClause: debug");
   51497             :         }
   51498             :      ROSE_ASSERT(previouslyCopied == false);
   51499             : 
   51500             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   51501             :      AstAttribute* newAttribute = new AstAttribute();
   51502             :      ROSE_ASSERT(newAttribute != NULL);
   51503             : 
   51504             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   51505             :      const_cast<SgOmpNontemporalClause*>(this)->attribute.add("copied",newAttribute);
   51506             : #endif
   51507             : 
   51508             :   // Copy data members from base classes
   51509             :   // Copy constructor parameter data member: startOfConstruct_copy
   51510             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   51511             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   51512           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   51513           0 :      if ( p_startOfConstruct != NULL ) 
   51514             :         { 
   51515           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   51516             :         } 
   51517             :        else 
   51518             :         { 
   51519             :           startOfConstruct_copy = NULL; 
   51520             :         } 
   51521             :   // Copy constructor parameter data member: variables_copy
   51522           0 :      SgExprListExp* variables_copy; 
   51523             :   // case: not a listType for (using conditionalToCopyVariable)variables
   51524           0 :           if (get_variables() != NULL) 
   51525             :              { 
   51526           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   51527             :              } 
   51528             :             else 
   51529             :              { 
   51530             :                variables_copy = NULL; 
   51531             :              } 
   51532             :  
   51533             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51534             : 
   51535             :   // Build an empty copy of this object (will be filled in, but 
   51536             :   // the parent can't be set and must be set by the caller)
   51537           0 :      result = new SgOmpNontemporalClause(  startOfConstruct_copy, variables_copy );
   51538           0 :      ROSE_ASSERT(result != NULL);
   51539             : 
   51540             :   // Copy data members of "this" class
   51541             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   51542             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   51543             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   51544           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   51545           0 :      if ( p_endOfConstruct != NULL ) 
   51546             :         { 
   51547           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   51548             :         } 
   51549             :        else 
   51550             :         { 
   51551             :           endOfConstruct_copy = NULL; 
   51552             :         } 
   51553             :   /* check for a valid pointer and delete if present */ 
   51554           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   51555             :   /* add assignment to result here */ 
   51556           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   51557             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   51558             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   51559             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   51560           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   51561           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   51562             :         { 
   51563           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   51564             :         } 
   51565             :        else 
   51566             :         { 
   51567             :           attachedPreprocessingInfoPtr_copy = NULL; 
   51568             :         } 
   51569             :   /* check for a valid pointer and delete if present */ 
   51570           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   51571             :   /* add assignment to result here */ 
   51572           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   51573             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   51574             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   51575             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   51576           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   51577           0 :      if ( p_attributeMechanism != NULL ) 
   51578             :         { 
   51579           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   51580             :         } 
   51581             :        else 
   51582             :         { 
   51583             :           attributeMechanism_copy = NULL; 
   51584             :         } 
   51585             :   /* check for a valid pointer and delete if present */ 
   51586           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   51587             :   /* add assignment to result here */ 
   51588           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   51589             :   // case: not a listType for (using conditionalToSetParent)variables
   51590           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   51591             :              { 
   51592           0 :                variables_copy->set_parent(result); 
   51593             :              } 
   51594             : 
   51595             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51596             : 
   51597             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   51598             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   51599             :   // fixupCopy(result,help);
   51600             : 
   51601             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   51602             :   // the Sg_File_Info objects that are built for the new IR nodes.
   51603           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   51604           0 :      if (locatedNode != NULL)
   51605             :         {
   51606             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   51607           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   51608           0 :           ROSE_ASSERT(start != NULL);
   51609             : #if 0
   51610             :        // Debugging information
   51611             :           if (start->get_parent() == NULL)
   51612             :              {
   51613             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51614             :              }
   51615             : #endif
   51616           0 :           start->set_parent(locatedNode);
   51617           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   51618             : 
   51619           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   51620             : 
   51621             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   51622             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   51623             :        // ROSE_ASSERT(end != NULL);
   51624           0 :           if (end == NULL)
   51625             :              {
   51626           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   51627             :              }
   51628             :             else
   51629             :              {
   51630             : #if 0
   51631             :             // Debugging information
   51632             :                if (end->get_parent() == NULL)
   51633             :                   {
   51634             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51635             :                   }
   51636             : #endif
   51637           0 :                end->set_parent(locatedNode);
   51638           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   51639             :              }
   51640             : 
   51641           0 :           SgExpression* expression = isSgExpression(result);
   51642           0 :           if (isSgExpression(this) != NULL)
   51643             :              {
   51644           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   51645             : 
   51646             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   51647           0 :                if (operatorPosition != NULL)
   51648             :                   {
   51649             : #if 0
   51650             :                  // Debugging information
   51651             :                     if (operatorPosition->get_parent() == NULL)
   51652             :                        {
   51653             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51654             :                        }
   51655             : #endif
   51656           0 :                     operatorPosition->set_parent(expression);
   51657           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   51658             :                   }
   51659             :              }
   51660             :         }
   51661             : 
   51662             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   51663           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   51664           0 :      if (initializedName != NULL)
   51665             :         {
   51666             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   51667           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   51668           0 :           ROSE_ASSERT(start != NULL);
   51669             : #if 0
   51670             :        // Debugging information
   51671             :           if (start->get_parent() == NULL)
   51672             :              {
   51673             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51674             :              }
   51675             : #endif
   51676           0 :           start->set_parent(initializedName);
   51677           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   51678             : 
   51679             : #if 0
   51680             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   51681             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   51682             : 
   51683             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   51684             :        // ROSE_ASSERT(end != NULL);
   51685             :           if (end == NULL)
   51686             :              {
   51687             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   51688             :              }
   51689             :             else
   51690             :              {
   51691             :                if (end->get_parent() == NULL)
   51692             :                   {
   51693             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51694             :                   }
   51695             :                end->set_parent(initializedName);
   51696             :                ROSE_ASSERT(end->get_parent() != NULL);
   51697             :              }
   51698             : #endif
   51699             :         }
   51700             : 
   51701             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   51702           0 :      help.insertCopiedNodePair(this,result);
   51703             : 
   51704             :   // printf ("End of copy SgOmpNontemporalClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   51705             : 
   51706             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   51707             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   51708           0 :      help.decrementDepth();
   51709             : 
   51710             :   // Test if this is the root of the copy!
   51711           0 :      if (help.get_depth() == 0)
   51712             :         {
   51713             :        // This is the original calling node.
   51714             : 
   51715             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   51716             :        // printf ("Calling SgOmpNontemporalClause::fixupCopy() (from root of AST being copied) \n");
   51717             : #if ALT_FIXUP_COPY
   51718             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   51719           0 :           fixupCopy_scopes (result,help);
   51720           0 :           fixupCopy_symbols (result,help);
   51721           0 :           fixupCopy_references (result,help);
   51722             : #else
   51723             :           fixupCopy(result,help);
   51724             : #endif
   51725             :        // Allow this to be called recursively, so accumulate the state.
   51726             :        // Also, clear the state in the SgCopyHelp object.
   51727             :        // help.clearState();
   51728             :         }
   51729             : 
   51730           0 :      return result;
   51731             :    }
   51732             : 
   51733             : 
   51734             : /* #line 51735 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   51735             : 
   51736             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51737             : 
   51738           0 : SgNode* SgOmpInclusiveClause::copy ( SgCopyHelp& help) const
   51739             :    {
   51740           0 :      SgOmpInclusiveClause* result = NULL;
   51741             : 
   51742             :   // printf ("Copy SgOmpInclusiveClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   51743             : 
   51744             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   51745             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   51746             :   // The default value of the depth is 0, so after this call the depth is 1!
   51747           0 :      help.incrementDepth();
   51748             : 
   51749             : #if 0
   51750             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   51751             :   // but it is not generally true that things can only be copied once!
   51752             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   51753             :   // AstAttribute* existingAttribute = const_cast<SgOmpInclusiveClause*>(this)->attribute["copied"];
   51754             :      bool previouslyCopied = const_cast<SgOmpInclusiveClause*>(this)->attribute.exists("copied");
   51755             :      if (previouslyCopied == true)
   51756             :         {
   51757             :           this->get_file_info()->display("Called from copy SgOmpInclusiveClause: debug");
   51758             :         }
   51759             :      ROSE_ASSERT(previouslyCopied == false);
   51760             : 
   51761             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   51762             :      AstAttribute* newAttribute = new AstAttribute();
   51763             :      ROSE_ASSERT(newAttribute != NULL);
   51764             : 
   51765             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   51766             :      const_cast<SgOmpInclusiveClause*>(this)->attribute.add("copied",newAttribute);
   51767             : #endif
   51768             : 
   51769             :   // Copy data members from base classes
   51770             :   // Copy constructor parameter data member: startOfConstruct_copy
   51771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   51772             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   51773           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   51774           0 :      if ( p_startOfConstruct != NULL ) 
   51775             :         { 
   51776           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   51777             :         } 
   51778             :        else 
   51779             :         { 
   51780             :           startOfConstruct_copy = NULL; 
   51781             :         } 
   51782             :   // Copy constructor parameter data member: variables_copy
   51783           0 :      SgExprListExp* variables_copy; 
   51784             :   // case: not a listType for (using conditionalToCopyVariable)variables
   51785           0 :           if (get_variables() != NULL) 
   51786             :              { 
   51787           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   51788             :              } 
   51789             :             else 
   51790             :              { 
   51791             :                variables_copy = NULL; 
   51792             :              } 
   51793             :  
   51794             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51795             : 
   51796             :   // Build an empty copy of this object (will be filled in, but 
   51797             :   // the parent can't be set and must be set by the caller)
   51798           0 :      result = new SgOmpInclusiveClause(  startOfConstruct_copy, variables_copy );
   51799           0 :      ROSE_ASSERT(result != NULL);
   51800             : 
   51801             :   // Copy data members of "this" class
   51802             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   51803             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   51804             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   51805           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   51806           0 :      if ( p_endOfConstruct != NULL ) 
   51807             :         { 
   51808           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   51809             :         } 
   51810             :        else 
   51811             :         { 
   51812             :           endOfConstruct_copy = NULL; 
   51813             :         } 
   51814             :   /* check for a valid pointer and delete if present */ 
   51815           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   51816             :   /* add assignment to result here */ 
   51817           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   51818             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   51819             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   51820             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   51821           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   51822           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   51823             :         { 
   51824           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   51825             :         } 
   51826             :        else 
   51827             :         { 
   51828             :           attachedPreprocessingInfoPtr_copy = NULL; 
   51829             :         } 
   51830             :   /* check for a valid pointer and delete if present */ 
   51831           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   51832             :   /* add assignment to result here */ 
   51833           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   51834             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   51835             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   51836             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   51837           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   51838           0 :      if ( p_attributeMechanism != NULL ) 
   51839             :         { 
   51840           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   51841             :         } 
   51842             :        else 
   51843             :         { 
   51844             :           attributeMechanism_copy = NULL; 
   51845             :         } 
   51846             :   /* check for a valid pointer and delete if present */ 
   51847           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   51848             :   /* add assignment to result here */ 
   51849           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   51850             :   // case: not a listType for (using conditionalToSetParent)variables
   51851           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   51852             :              { 
   51853           0 :                variables_copy->set_parent(result); 
   51854             :              } 
   51855             : 
   51856             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51857             : 
   51858             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   51859             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   51860             :   // fixupCopy(result,help);
   51861             : 
   51862             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   51863             :   // the Sg_File_Info objects that are built for the new IR nodes.
   51864           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   51865           0 :      if (locatedNode != NULL)
   51866             :         {
   51867             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   51868           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   51869           0 :           ROSE_ASSERT(start != NULL);
   51870             : #if 0
   51871             :        // Debugging information
   51872             :           if (start->get_parent() == NULL)
   51873             :              {
   51874             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51875             :              }
   51876             : #endif
   51877           0 :           start->set_parent(locatedNode);
   51878           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   51879             : 
   51880           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   51881             : 
   51882             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   51883             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   51884             :        // ROSE_ASSERT(end != NULL);
   51885           0 :           if (end == NULL)
   51886             :              {
   51887           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   51888             :              }
   51889             :             else
   51890             :              {
   51891             : #if 0
   51892             :             // Debugging information
   51893             :                if (end->get_parent() == NULL)
   51894             :                   {
   51895             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51896             :                   }
   51897             : #endif
   51898           0 :                end->set_parent(locatedNode);
   51899           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   51900             :              }
   51901             : 
   51902           0 :           SgExpression* expression = isSgExpression(result);
   51903           0 :           if (isSgExpression(this) != NULL)
   51904             :              {
   51905           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   51906             : 
   51907             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   51908           0 :                if (operatorPosition != NULL)
   51909             :                   {
   51910             : #if 0
   51911             :                  // Debugging information
   51912             :                     if (operatorPosition->get_parent() == NULL)
   51913             :                        {
   51914             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51915             :                        }
   51916             : #endif
   51917           0 :                     operatorPosition->set_parent(expression);
   51918           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   51919             :                   }
   51920             :              }
   51921             :         }
   51922             : 
   51923             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   51924           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   51925           0 :      if (initializedName != NULL)
   51926             :         {
   51927             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   51928           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   51929           0 :           ROSE_ASSERT(start != NULL);
   51930             : #if 0
   51931             :        // Debugging information
   51932             :           if (start->get_parent() == NULL)
   51933             :              {
   51934             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51935             :              }
   51936             : #endif
   51937           0 :           start->set_parent(initializedName);
   51938           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   51939             : 
   51940             : #if 0
   51941             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   51942             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   51943             : 
   51944             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   51945             :        // ROSE_ASSERT(end != NULL);
   51946             :           if (end == NULL)
   51947             :              {
   51948             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   51949             :              }
   51950             :             else
   51951             :              {
   51952             :                if (end->get_parent() == NULL)
   51953             :                   {
   51954             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   51955             :                   }
   51956             :                end->set_parent(initializedName);
   51957             :                ROSE_ASSERT(end->get_parent() != NULL);
   51958             :              }
   51959             : #endif
   51960             :         }
   51961             : 
   51962             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   51963           0 :      help.insertCopiedNodePair(this,result);
   51964             : 
   51965             :   // printf ("End of copy SgOmpInclusiveClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   51966             : 
   51967             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   51968             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   51969           0 :      help.decrementDepth();
   51970             : 
   51971             :   // Test if this is the root of the copy!
   51972           0 :      if (help.get_depth() == 0)
   51973             :         {
   51974             :        // This is the original calling node.
   51975             : 
   51976             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   51977             :        // printf ("Calling SgOmpInclusiveClause::fixupCopy() (from root of AST being copied) \n");
   51978             : #if ALT_FIXUP_COPY
   51979             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   51980           0 :           fixupCopy_scopes (result,help);
   51981           0 :           fixupCopy_symbols (result,help);
   51982           0 :           fixupCopy_references (result,help);
   51983             : #else
   51984             :           fixupCopy(result,help);
   51985             : #endif
   51986             :        // Allow this to be called recursively, so accumulate the state.
   51987             :        // Also, clear the state in the SgCopyHelp object.
   51988             :        // help.clearState();
   51989             :         }
   51990             : 
   51991           0 :      return result;
   51992             :    }
   51993             : 
   51994             : 
   51995             : /* #line 51996 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   51996             : 
   51997             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   51998             : 
   51999           0 : SgNode* SgOmpExclusiveClause::copy ( SgCopyHelp& help) const
   52000             :    {
   52001           0 :      SgOmpExclusiveClause* result = NULL;
   52002             : 
   52003             :   // printf ("Copy SgOmpExclusiveClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   52004             : 
   52005             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   52006             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   52007             :   // The default value of the depth is 0, so after this call the depth is 1!
   52008           0 :      help.incrementDepth();
   52009             : 
   52010             : #if 0
   52011             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   52012             :   // but it is not generally true that things can only be copied once!
   52013             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   52014             :   // AstAttribute* existingAttribute = const_cast<SgOmpExclusiveClause*>(this)->attribute["copied"];
   52015             :      bool previouslyCopied = const_cast<SgOmpExclusiveClause*>(this)->attribute.exists("copied");
   52016             :      if (previouslyCopied == true)
   52017             :         {
   52018             :           this->get_file_info()->display("Called from copy SgOmpExclusiveClause: debug");
   52019             :         }
   52020             :      ROSE_ASSERT(previouslyCopied == false);
   52021             : 
   52022             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   52023             :      AstAttribute* newAttribute = new AstAttribute();
   52024             :      ROSE_ASSERT(newAttribute != NULL);
   52025             : 
   52026             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   52027             :      const_cast<SgOmpExclusiveClause*>(this)->attribute.add("copied",newAttribute);
   52028             : #endif
   52029             : 
   52030             :   // Copy data members from base classes
   52031             :   // Copy constructor parameter data member: startOfConstruct_copy
   52032             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   52033             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   52034           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   52035           0 :      if ( p_startOfConstruct != NULL ) 
   52036             :         { 
   52037           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   52038             :         } 
   52039             :        else 
   52040             :         { 
   52041             :           startOfConstruct_copy = NULL; 
   52042             :         } 
   52043             :   // Copy constructor parameter data member: variables_copy
   52044           0 :      SgExprListExp* variables_copy; 
   52045             :   // case: not a listType for (using conditionalToCopyVariable)variables
   52046           0 :           if (get_variables() != NULL) 
   52047             :              { 
   52048           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   52049             :              } 
   52050             :             else 
   52051             :              { 
   52052             :                variables_copy = NULL; 
   52053             :              } 
   52054             :  
   52055             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52056             : 
   52057             :   // Build an empty copy of this object (will be filled in, but 
   52058             :   // the parent can't be set and must be set by the caller)
   52059           0 :      result = new SgOmpExclusiveClause(  startOfConstruct_copy, variables_copy );
   52060           0 :      ROSE_ASSERT(result != NULL);
   52061             : 
   52062             :   // Copy data members of "this" class
   52063             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   52064             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   52065             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   52066           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   52067           0 :      if ( p_endOfConstruct != NULL ) 
   52068             :         { 
   52069           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   52070             :         } 
   52071             :        else 
   52072             :         { 
   52073             :           endOfConstruct_copy = NULL; 
   52074             :         } 
   52075             :   /* check for a valid pointer and delete if present */ 
   52076           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   52077             :   /* add assignment to result here */ 
   52078           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   52079             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   52080             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   52081             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   52082           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   52083           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   52084             :         { 
   52085           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   52086             :         } 
   52087             :        else 
   52088             :         { 
   52089             :           attachedPreprocessingInfoPtr_copy = NULL; 
   52090             :         } 
   52091             :   /* check for a valid pointer and delete if present */ 
   52092           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   52093             :   /* add assignment to result here */ 
   52094           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   52095             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   52096             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   52097             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   52098           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   52099           0 :      if ( p_attributeMechanism != NULL ) 
   52100             :         { 
   52101           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   52102             :         } 
   52103             :        else 
   52104             :         { 
   52105             :           attributeMechanism_copy = NULL; 
   52106             :         } 
   52107             :   /* check for a valid pointer and delete if present */ 
   52108           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   52109             :   /* add assignment to result here */ 
   52110           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   52111             :   // case: not a listType for (using conditionalToSetParent)variables
   52112           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   52113             :              { 
   52114           0 :                variables_copy->set_parent(result); 
   52115             :              } 
   52116             : 
   52117             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52118             : 
   52119             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   52120             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   52121             :   // fixupCopy(result,help);
   52122             : 
   52123             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   52124             :   // the Sg_File_Info objects that are built for the new IR nodes.
   52125           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   52126           0 :      if (locatedNode != NULL)
   52127             :         {
   52128             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   52129           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   52130           0 :           ROSE_ASSERT(start != NULL);
   52131             : #if 0
   52132             :        // Debugging information
   52133             :           if (start->get_parent() == NULL)
   52134             :              {
   52135             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52136             :              }
   52137             : #endif
   52138           0 :           start->set_parent(locatedNode);
   52139           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   52140             : 
   52141           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   52142             : 
   52143             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   52144             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   52145             :        // ROSE_ASSERT(end != NULL);
   52146           0 :           if (end == NULL)
   52147             :              {
   52148           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   52149             :              }
   52150             :             else
   52151             :              {
   52152             : #if 0
   52153             :             // Debugging information
   52154             :                if (end->get_parent() == NULL)
   52155             :                   {
   52156             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52157             :                   }
   52158             : #endif
   52159           0 :                end->set_parent(locatedNode);
   52160           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   52161             :              }
   52162             : 
   52163           0 :           SgExpression* expression = isSgExpression(result);
   52164           0 :           if (isSgExpression(this) != NULL)
   52165             :              {
   52166           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   52167             : 
   52168             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   52169           0 :                if (operatorPosition != NULL)
   52170             :                   {
   52171             : #if 0
   52172             :                  // Debugging information
   52173             :                     if (operatorPosition->get_parent() == NULL)
   52174             :                        {
   52175             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52176             :                        }
   52177             : #endif
   52178           0 :                     operatorPosition->set_parent(expression);
   52179           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   52180             :                   }
   52181             :              }
   52182             :         }
   52183             : 
   52184             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   52185           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   52186           0 :      if (initializedName != NULL)
   52187             :         {
   52188             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   52189           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   52190           0 :           ROSE_ASSERT(start != NULL);
   52191             : #if 0
   52192             :        // Debugging information
   52193             :           if (start->get_parent() == NULL)
   52194             :              {
   52195             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52196             :              }
   52197             : #endif
   52198           0 :           start->set_parent(initializedName);
   52199           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   52200             : 
   52201             : #if 0
   52202             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   52203             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   52204             : 
   52205             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   52206             :        // ROSE_ASSERT(end != NULL);
   52207             :           if (end == NULL)
   52208             :              {
   52209             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   52210             :              }
   52211             :             else
   52212             :              {
   52213             :                if (end->get_parent() == NULL)
   52214             :                   {
   52215             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52216             :                   }
   52217             :                end->set_parent(initializedName);
   52218             :                ROSE_ASSERT(end->get_parent() != NULL);
   52219             :              }
   52220             : #endif
   52221             :         }
   52222             : 
   52223             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   52224           0 :      help.insertCopiedNodePair(this,result);
   52225             : 
   52226             :   // printf ("End of copy SgOmpExclusiveClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   52227             : 
   52228             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   52229             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   52230           0 :      help.decrementDepth();
   52231             : 
   52232             :   // Test if this is the root of the copy!
   52233           0 :      if (help.get_depth() == 0)
   52234             :         {
   52235             :        // This is the original calling node.
   52236             : 
   52237             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   52238             :        // printf ("Calling SgOmpExclusiveClause::fixupCopy() (from root of AST being copied) \n");
   52239             : #if ALT_FIXUP_COPY
   52240             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   52241           0 :           fixupCopy_scopes (result,help);
   52242           0 :           fixupCopy_symbols (result,help);
   52243           0 :           fixupCopy_references (result,help);
   52244             : #else
   52245             :           fixupCopy(result,help);
   52246             : #endif
   52247             :        // Allow this to be called recursively, so accumulate the state.
   52248             :        // Also, clear the state in the SgCopyHelp object.
   52249             :        // help.clearState();
   52250             :         }
   52251             : 
   52252           0 :      return result;
   52253             :    }
   52254             : 
   52255             : 
   52256             : /* #line 52257 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   52257             : 
   52258             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52259             : 
   52260           0 : SgNode* SgOmpIsDevicePtrClause::copy ( SgCopyHelp& help) const
   52261             :    {
   52262           0 :      SgOmpIsDevicePtrClause* result = NULL;
   52263             : 
   52264             :   // printf ("Copy SgOmpIsDevicePtrClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   52265             : 
   52266             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   52267             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   52268             :   // The default value of the depth is 0, so after this call the depth is 1!
   52269           0 :      help.incrementDepth();
   52270             : 
   52271             : #if 0
   52272             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   52273             :   // but it is not generally true that things can only be copied once!
   52274             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   52275             :   // AstAttribute* existingAttribute = const_cast<SgOmpIsDevicePtrClause*>(this)->attribute["copied"];
   52276             :      bool previouslyCopied = const_cast<SgOmpIsDevicePtrClause*>(this)->attribute.exists("copied");
   52277             :      if (previouslyCopied == true)
   52278             :         {
   52279             :           this->get_file_info()->display("Called from copy SgOmpIsDevicePtrClause: debug");
   52280             :         }
   52281             :      ROSE_ASSERT(previouslyCopied == false);
   52282             : 
   52283             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   52284             :      AstAttribute* newAttribute = new AstAttribute();
   52285             :      ROSE_ASSERT(newAttribute != NULL);
   52286             : 
   52287             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   52288             :      const_cast<SgOmpIsDevicePtrClause*>(this)->attribute.add("copied",newAttribute);
   52289             : #endif
   52290             : 
   52291             :   // Copy data members from base classes
   52292             :   // Copy constructor parameter data member: startOfConstruct_copy
   52293             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   52294             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   52295           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   52296           0 :      if ( p_startOfConstruct != NULL ) 
   52297             :         { 
   52298           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   52299             :         } 
   52300             :        else 
   52301             :         { 
   52302             :           startOfConstruct_copy = NULL; 
   52303             :         } 
   52304             :   // Copy constructor parameter data member: variables_copy
   52305           0 :      SgExprListExp* variables_copy; 
   52306             :   // case: not a listType for (using conditionalToCopyVariable)variables
   52307           0 :           if (get_variables() != NULL) 
   52308             :              { 
   52309           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   52310             :              } 
   52311             :             else 
   52312             :              { 
   52313             :                variables_copy = NULL; 
   52314             :              } 
   52315             :  
   52316             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52317             : 
   52318             :   // Build an empty copy of this object (will be filled in, but 
   52319             :   // the parent can't be set and must be set by the caller)
   52320           0 :      result = new SgOmpIsDevicePtrClause(  startOfConstruct_copy, variables_copy );
   52321           0 :      ROSE_ASSERT(result != NULL);
   52322             : 
   52323             :   // Copy data members of "this" class
   52324             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   52325             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   52326             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   52327           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   52328           0 :      if ( p_endOfConstruct != NULL ) 
   52329             :         { 
   52330           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   52331             :         } 
   52332             :        else 
   52333             :         { 
   52334             :           endOfConstruct_copy = NULL; 
   52335             :         } 
   52336             :   /* check for a valid pointer and delete if present */ 
   52337           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   52338             :   /* add assignment to result here */ 
   52339           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   52340             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   52341             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   52342             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   52343           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   52344           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   52345             :         { 
   52346           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   52347             :         } 
   52348             :        else 
   52349             :         { 
   52350             :           attachedPreprocessingInfoPtr_copy = NULL; 
   52351             :         } 
   52352             :   /* check for a valid pointer and delete if present */ 
   52353           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   52354             :   /* add assignment to result here */ 
   52355           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   52356             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   52357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   52358             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   52359           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   52360           0 :      if ( p_attributeMechanism != NULL ) 
   52361             :         { 
   52362           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   52363             :         } 
   52364             :        else 
   52365             :         { 
   52366             :           attributeMechanism_copy = NULL; 
   52367             :         } 
   52368             :   /* check for a valid pointer and delete if present */ 
   52369           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   52370             :   /* add assignment to result here */ 
   52371           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   52372             :   // case: not a listType for (using conditionalToSetParent)variables
   52373           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   52374             :              { 
   52375           0 :                variables_copy->set_parent(result); 
   52376             :              } 
   52377             : 
   52378             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52379             : 
   52380             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   52381             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   52382             :   // fixupCopy(result,help);
   52383             : 
   52384             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   52385             :   // the Sg_File_Info objects that are built for the new IR nodes.
   52386           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   52387           0 :      if (locatedNode != NULL)
   52388             :         {
   52389             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   52390           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   52391           0 :           ROSE_ASSERT(start != NULL);
   52392             : #if 0
   52393             :        // Debugging information
   52394             :           if (start->get_parent() == NULL)
   52395             :              {
   52396             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52397             :              }
   52398             : #endif
   52399           0 :           start->set_parent(locatedNode);
   52400           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   52401             : 
   52402           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   52403             : 
   52404             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   52405             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   52406             :        // ROSE_ASSERT(end != NULL);
   52407           0 :           if (end == NULL)
   52408             :              {
   52409           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   52410             :              }
   52411             :             else
   52412             :              {
   52413             : #if 0
   52414             :             // Debugging information
   52415             :                if (end->get_parent() == NULL)
   52416             :                   {
   52417             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52418             :                   }
   52419             : #endif
   52420           0 :                end->set_parent(locatedNode);
   52421           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   52422             :              }
   52423             : 
   52424           0 :           SgExpression* expression = isSgExpression(result);
   52425           0 :           if (isSgExpression(this) != NULL)
   52426             :              {
   52427           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   52428             : 
   52429             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   52430           0 :                if (operatorPosition != NULL)
   52431             :                   {
   52432             : #if 0
   52433             :                  // Debugging information
   52434             :                     if (operatorPosition->get_parent() == NULL)
   52435             :                        {
   52436             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52437             :                        }
   52438             : #endif
   52439           0 :                     operatorPosition->set_parent(expression);
   52440           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   52441             :                   }
   52442             :              }
   52443             :         }
   52444             : 
   52445             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   52446           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   52447           0 :      if (initializedName != NULL)
   52448             :         {
   52449             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   52450           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   52451           0 :           ROSE_ASSERT(start != NULL);
   52452             : #if 0
   52453             :        // Debugging information
   52454             :           if (start->get_parent() == NULL)
   52455             :              {
   52456             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52457             :              }
   52458             : #endif
   52459           0 :           start->set_parent(initializedName);
   52460           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   52461             : 
   52462             : #if 0
   52463             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   52464             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   52465             : 
   52466             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   52467             :        // ROSE_ASSERT(end != NULL);
   52468             :           if (end == NULL)
   52469             :              {
   52470             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   52471             :              }
   52472             :             else
   52473             :              {
   52474             :                if (end->get_parent() == NULL)
   52475             :                   {
   52476             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52477             :                   }
   52478             :                end->set_parent(initializedName);
   52479             :                ROSE_ASSERT(end->get_parent() != NULL);
   52480             :              }
   52481             : #endif
   52482             :         }
   52483             : 
   52484             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   52485           0 :      help.insertCopiedNodePair(this,result);
   52486             : 
   52487             :   // printf ("End of copy SgOmpIsDevicePtrClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   52488             : 
   52489             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   52490             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   52491           0 :      help.decrementDepth();
   52492             : 
   52493             :   // Test if this is the root of the copy!
   52494           0 :      if (help.get_depth() == 0)
   52495             :         {
   52496             :        // This is the original calling node.
   52497             : 
   52498             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   52499             :        // printf ("Calling SgOmpIsDevicePtrClause::fixupCopy() (from root of AST being copied) \n");
   52500             : #if ALT_FIXUP_COPY
   52501             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   52502           0 :           fixupCopy_scopes (result,help);
   52503           0 :           fixupCopy_symbols (result,help);
   52504           0 :           fixupCopy_references (result,help);
   52505             : #else
   52506             :           fixupCopy(result,help);
   52507             : #endif
   52508             :        // Allow this to be called recursively, so accumulate the state.
   52509             :        // Also, clear the state in the SgCopyHelp object.
   52510             :        // help.clearState();
   52511             :         }
   52512             : 
   52513           0 :      return result;
   52514             :    }
   52515             : 
   52516             : 
   52517             : /* #line 52518 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   52518             : 
   52519             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52520             : 
   52521           0 : SgNode* SgOmpUseDevicePtrClause::copy ( SgCopyHelp& help) const
   52522             :    {
   52523           0 :      SgOmpUseDevicePtrClause* result = NULL;
   52524             : 
   52525             :   // printf ("Copy SgOmpUseDevicePtrClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   52526             : 
   52527             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   52528             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   52529             :   // The default value of the depth is 0, so after this call the depth is 1!
   52530           0 :      help.incrementDepth();
   52531             : 
   52532             : #if 0
   52533             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   52534             :   // but it is not generally true that things can only be copied once!
   52535             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   52536             :   // AstAttribute* existingAttribute = const_cast<SgOmpUseDevicePtrClause*>(this)->attribute["copied"];
   52537             :      bool previouslyCopied = const_cast<SgOmpUseDevicePtrClause*>(this)->attribute.exists("copied");
   52538             :      if (previouslyCopied == true)
   52539             :         {
   52540             :           this->get_file_info()->display("Called from copy SgOmpUseDevicePtrClause: debug");
   52541             :         }
   52542             :      ROSE_ASSERT(previouslyCopied == false);
   52543             : 
   52544             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   52545             :      AstAttribute* newAttribute = new AstAttribute();
   52546             :      ROSE_ASSERT(newAttribute != NULL);
   52547             : 
   52548             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   52549             :      const_cast<SgOmpUseDevicePtrClause*>(this)->attribute.add("copied",newAttribute);
   52550             : #endif
   52551             : 
   52552             :   // Copy data members from base classes
   52553             :   // Copy constructor parameter data member: startOfConstruct_copy
   52554             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   52555             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   52556           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   52557           0 :      if ( p_startOfConstruct != NULL ) 
   52558             :         { 
   52559           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   52560             :         } 
   52561             :        else 
   52562             :         { 
   52563             :           startOfConstruct_copy = NULL; 
   52564             :         } 
   52565             :   // Copy constructor parameter data member: variables_copy
   52566           0 :      SgExprListExp* variables_copy; 
   52567             :   // case: not a listType for (using conditionalToCopyVariable)variables
   52568           0 :           if (get_variables() != NULL) 
   52569             :              { 
   52570           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   52571             :              } 
   52572             :             else 
   52573             :              { 
   52574             :                variables_copy = NULL; 
   52575             :              } 
   52576             :  
   52577             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52578             : 
   52579             :   // Build an empty copy of this object (will be filled in, but 
   52580             :   // the parent can't be set and must be set by the caller)
   52581           0 :      result = new SgOmpUseDevicePtrClause(  startOfConstruct_copy, variables_copy );
   52582           0 :      ROSE_ASSERT(result != NULL);
   52583             : 
   52584             :   // Copy data members of "this" class
   52585             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   52586             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   52587             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   52588           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   52589           0 :      if ( p_endOfConstruct != NULL ) 
   52590             :         { 
   52591           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   52592             :         } 
   52593             :        else 
   52594             :         { 
   52595             :           endOfConstruct_copy = NULL; 
   52596             :         } 
   52597             :   /* check for a valid pointer and delete if present */ 
   52598           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   52599             :   /* add assignment to result here */ 
   52600           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   52601             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   52602             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   52603             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   52604           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   52605           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   52606             :         { 
   52607           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   52608             :         } 
   52609             :        else 
   52610             :         { 
   52611             :           attachedPreprocessingInfoPtr_copy = NULL; 
   52612             :         } 
   52613             :   /* check for a valid pointer and delete if present */ 
   52614           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   52615             :   /* add assignment to result here */ 
   52616           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   52617             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   52618             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   52619             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   52620           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   52621           0 :      if ( p_attributeMechanism != NULL ) 
   52622             :         { 
   52623           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   52624             :         } 
   52625             :        else 
   52626             :         { 
   52627             :           attributeMechanism_copy = NULL; 
   52628             :         } 
   52629             :   /* check for a valid pointer and delete if present */ 
   52630           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   52631             :   /* add assignment to result here */ 
   52632           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   52633             :   // case: not a listType for (using conditionalToSetParent)variables
   52634           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   52635             :              { 
   52636           0 :                variables_copy->set_parent(result); 
   52637             :              } 
   52638             : 
   52639             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52640             : 
   52641             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   52642             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   52643             :   // fixupCopy(result,help);
   52644             : 
   52645             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   52646             :   // the Sg_File_Info objects that are built for the new IR nodes.
   52647           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   52648           0 :      if (locatedNode != NULL)
   52649             :         {
   52650             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   52651           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   52652           0 :           ROSE_ASSERT(start != NULL);
   52653             : #if 0
   52654             :        // Debugging information
   52655             :           if (start->get_parent() == NULL)
   52656             :              {
   52657             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52658             :              }
   52659             : #endif
   52660           0 :           start->set_parent(locatedNode);
   52661           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   52662             : 
   52663           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   52664             : 
   52665             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   52666             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   52667             :        // ROSE_ASSERT(end != NULL);
   52668           0 :           if (end == NULL)
   52669             :              {
   52670           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   52671             :              }
   52672             :             else
   52673             :              {
   52674             : #if 0
   52675             :             // Debugging information
   52676             :                if (end->get_parent() == NULL)
   52677             :                   {
   52678             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52679             :                   }
   52680             : #endif
   52681           0 :                end->set_parent(locatedNode);
   52682           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   52683             :              }
   52684             : 
   52685           0 :           SgExpression* expression = isSgExpression(result);
   52686           0 :           if (isSgExpression(this) != NULL)
   52687             :              {
   52688           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   52689             : 
   52690             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   52691           0 :                if (operatorPosition != NULL)
   52692             :                   {
   52693             : #if 0
   52694             :                  // Debugging information
   52695             :                     if (operatorPosition->get_parent() == NULL)
   52696             :                        {
   52697             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52698             :                        }
   52699             : #endif
   52700           0 :                     operatorPosition->set_parent(expression);
   52701           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   52702             :                   }
   52703             :              }
   52704             :         }
   52705             : 
   52706             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   52707           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   52708           0 :      if (initializedName != NULL)
   52709             :         {
   52710             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   52711           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   52712           0 :           ROSE_ASSERT(start != NULL);
   52713             : #if 0
   52714             :        // Debugging information
   52715             :           if (start->get_parent() == NULL)
   52716             :              {
   52717             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52718             :              }
   52719             : #endif
   52720           0 :           start->set_parent(initializedName);
   52721           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   52722             : 
   52723             : #if 0
   52724             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   52725             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   52726             : 
   52727             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   52728             :        // ROSE_ASSERT(end != NULL);
   52729             :           if (end == NULL)
   52730             :              {
   52731             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   52732             :              }
   52733             :             else
   52734             :              {
   52735             :                if (end->get_parent() == NULL)
   52736             :                   {
   52737             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52738             :                   }
   52739             :                end->set_parent(initializedName);
   52740             :                ROSE_ASSERT(end->get_parent() != NULL);
   52741             :              }
   52742             : #endif
   52743             :         }
   52744             : 
   52745             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   52746           0 :      help.insertCopiedNodePair(this,result);
   52747             : 
   52748             :   // printf ("End of copy SgOmpUseDevicePtrClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   52749             : 
   52750             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   52751             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   52752           0 :      help.decrementDepth();
   52753             : 
   52754             :   // Test if this is the root of the copy!
   52755           0 :      if (help.get_depth() == 0)
   52756             :         {
   52757             :        // This is the original calling node.
   52758             : 
   52759             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   52760             :        // printf ("Calling SgOmpUseDevicePtrClause::fixupCopy() (from root of AST being copied) \n");
   52761             : #if ALT_FIXUP_COPY
   52762             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   52763           0 :           fixupCopy_scopes (result,help);
   52764           0 :           fixupCopy_symbols (result,help);
   52765           0 :           fixupCopy_references (result,help);
   52766             : #else
   52767             :           fixupCopy(result,help);
   52768             : #endif
   52769             :        // Allow this to be called recursively, so accumulate the state.
   52770             :        // Also, clear the state in the SgCopyHelp object.
   52771             :        // help.clearState();
   52772             :         }
   52773             : 
   52774           0 :      return result;
   52775             :    }
   52776             : 
   52777             : 
   52778             : /* #line 52779 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   52779             : 
   52780             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52781             : 
   52782           0 : SgNode* SgOmpUseDeviceAddrClause::copy ( SgCopyHelp& help) const
   52783             :    {
   52784           0 :      SgOmpUseDeviceAddrClause* result = NULL;
   52785             : 
   52786             :   // printf ("Copy SgOmpUseDeviceAddrClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   52787             : 
   52788             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   52789             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   52790             :   // The default value of the depth is 0, so after this call the depth is 1!
   52791           0 :      help.incrementDepth();
   52792             : 
   52793             : #if 0
   52794             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   52795             :   // but it is not generally true that things can only be copied once!
   52796             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   52797             :   // AstAttribute* existingAttribute = const_cast<SgOmpUseDeviceAddrClause*>(this)->attribute["copied"];
   52798             :      bool previouslyCopied = const_cast<SgOmpUseDeviceAddrClause*>(this)->attribute.exists("copied");
   52799             :      if (previouslyCopied == true)
   52800             :         {
   52801             :           this->get_file_info()->display("Called from copy SgOmpUseDeviceAddrClause: debug");
   52802             :         }
   52803             :      ROSE_ASSERT(previouslyCopied == false);
   52804             : 
   52805             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   52806             :      AstAttribute* newAttribute = new AstAttribute();
   52807             :      ROSE_ASSERT(newAttribute != NULL);
   52808             : 
   52809             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   52810             :      const_cast<SgOmpUseDeviceAddrClause*>(this)->attribute.add("copied",newAttribute);
   52811             : #endif
   52812             : 
   52813             :   // Copy data members from base classes
   52814             :   // Copy constructor parameter data member: startOfConstruct_copy
   52815             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   52816             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   52817           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   52818           0 :      if ( p_startOfConstruct != NULL ) 
   52819             :         { 
   52820           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   52821             :         } 
   52822             :        else 
   52823             :         { 
   52824             :           startOfConstruct_copy = NULL; 
   52825             :         } 
   52826             :   // Copy constructor parameter data member: variables_copy
   52827           0 :      SgExprListExp* variables_copy; 
   52828             :   // case: not a listType for (using conditionalToCopyVariable)variables
   52829           0 :           if (get_variables() != NULL) 
   52830             :              { 
   52831           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   52832             :              } 
   52833             :             else 
   52834             :              { 
   52835             :                variables_copy = NULL; 
   52836             :              } 
   52837             :  
   52838             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52839             : 
   52840             :   // Build an empty copy of this object (will be filled in, but 
   52841             :   // the parent can't be set and must be set by the caller)
   52842           0 :      result = new SgOmpUseDeviceAddrClause(  startOfConstruct_copy, variables_copy );
   52843           0 :      ROSE_ASSERT(result != NULL);
   52844             : 
   52845             :   // Copy data members of "this" class
   52846             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   52847             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   52848             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   52849           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   52850           0 :      if ( p_endOfConstruct != NULL ) 
   52851             :         { 
   52852           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   52853             :         } 
   52854             :        else 
   52855             :         { 
   52856             :           endOfConstruct_copy = NULL; 
   52857             :         } 
   52858             :   /* check for a valid pointer and delete if present */ 
   52859           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   52860             :   /* add assignment to result here */ 
   52861           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   52862             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   52863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   52864             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   52865           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   52866           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   52867             :         { 
   52868           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   52869             :         } 
   52870             :        else 
   52871             :         { 
   52872             :           attachedPreprocessingInfoPtr_copy = NULL; 
   52873             :         } 
   52874             :   /* check for a valid pointer and delete if present */ 
   52875           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   52876             :   /* add assignment to result here */ 
   52877           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   52878             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   52879             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   52880             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   52881           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   52882           0 :      if ( p_attributeMechanism != NULL ) 
   52883             :         { 
   52884           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   52885             :         } 
   52886             :        else 
   52887             :         { 
   52888             :           attributeMechanism_copy = NULL; 
   52889             :         } 
   52890             :   /* check for a valid pointer and delete if present */ 
   52891           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   52892             :   /* add assignment to result here */ 
   52893           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   52894             :   // case: not a listType for (using conditionalToSetParent)variables
   52895           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   52896             :              { 
   52897           0 :                variables_copy->set_parent(result); 
   52898             :              } 
   52899             : 
   52900             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   52901             : 
   52902             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   52903             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   52904             :   // fixupCopy(result,help);
   52905             : 
   52906             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   52907             :   // the Sg_File_Info objects that are built for the new IR nodes.
   52908           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   52909           0 :      if (locatedNode != NULL)
   52910             :         {
   52911             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   52912           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   52913           0 :           ROSE_ASSERT(start != NULL);
   52914             : #if 0
   52915             :        // Debugging information
   52916             :           if (start->get_parent() == NULL)
   52917             :              {
   52918             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52919             :              }
   52920             : #endif
   52921           0 :           start->set_parent(locatedNode);
   52922           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   52923             : 
   52924           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   52925             : 
   52926             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   52927             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   52928             :        // ROSE_ASSERT(end != NULL);
   52929           0 :           if (end == NULL)
   52930             :              {
   52931           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   52932             :              }
   52933             :             else
   52934             :              {
   52935             : #if 0
   52936             :             // Debugging information
   52937             :                if (end->get_parent() == NULL)
   52938             :                   {
   52939             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52940             :                   }
   52941             : #endif
   52942           0 :                end->set_parent(locatedNode);
   52943           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   52944             :              }
   52945             : 
   52946           0 :           SgExpression* expression = isSgExpression(result);
   52947           0 :           if (isSgExpression(this) != NULL)
   52948             :              {
   52949           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   52950             : 
   52951             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   52952           0 :                if (operatorPosition != NULL)
   52953             :                   {
   52954             : #if 0
   52955             :                  // Debugging information
   52956             :                     if (operatorPosition->get_parent() == NULL)
   52957             :                        {
   52958             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52959             :                        }
   52960             : #endif
   52961           0 :                     operatorPosition->set_parent(expression);
   52962           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   52963             :                   }
   52964             :              }
   52965             :         }
   52966             : 
   52967             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   52968           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   52969           0 :      if (initializedName != NULL)
   52970             :         {
   52971             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   52972           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   52973           0 :           ROSE_ASSERT(start != NULL);
   52974             : #if 0
   52975             :        // Debugging information
   52976             :           if (start->get_parent() == NULL)
   52977             :              {
   52978             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52979             :              }
   52980             : #endif
   52981           0 :           start->set_parent(initializedName);
   52982           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   52983             : 
   52984             : #if 0
   52985             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   52986             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   52987             : 
   52988             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   52989             :        // ROSE_ASSERT(end != NULL);
   52990             :           if (end == NULL)
   52991             :              {
   52992             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   52993             :              }
   52994             :             else
   52995             :              {
   52996             :                if (end->get_parent() == NULL)
   52997             :                   {
   52998             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   52999             :                   }
   53000             :                end->set_parent(initializedName);
   53001             :                ROSE_ASSERT(end->get_parent() != NULL);
   53002             :              }
   53003             : #endif
   53004             :         }
   53005             : 
   53006             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   53007           0 :      help.insertCopiedNodePair(this,result);
   53008             : 
   53009             :   // printf ("End of copy SgOmpUseDeviceAddrClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   53010             : 
   53011             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   53012             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   53013           0 :      help.decrementDepth();
   53014             : 
   53015             :   // Test if this is the root of the copy!
   53016           0 :      if (help.get_depth() == 0)
   53017             :         {
   53018             :        // This is the original calling node.
   53019             : 
   53020             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   53021             :        // printf ("Calling SgOmpUseDeviceAddrClause::fixupCopy() (from root of AST being copied) \n");
   53022             : #if ALT_FIXUP_COPY
   53023             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   53024           0 :           fixupCopy_scopes (result,help);
   53025           0 :           fixupCopy_symbols (result,help);
   53026           0 :           fixupCopy_references (result,help);
   53027             : #else
   53028             :           fixupCopy(result,help);
   53029             : #endif
   53030             :        // Allow this to be called recursively, so accumulate the state.
   53031             :        // Also, clear the state in the SgCopyHelp object.
   53032             :        // help.clearState();
   53033             :         }
   53034             : 
   53035           0 :      return result;
   53036             :    }
   53037             : 
   53038             : 
   53039             : /* #line 53040 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   53040             : 
   53041             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53042             : 
   53043           0 : SgNode* SgOmpSharedClause::copy ( SgCopyHelp& help) const
   53044             :    {
   53045           0 :      SgOmpSharedClause* result = NULL;
   53046             : 
   53047             :   // printf ("Copy SgOmpSharedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   53048             : 
   53049             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   53050             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   53051             :   // The default value of the depth is 0, so after this call the depth is 1!
   53052           0 :      help.incrementDepth();
   53053             : 
   53054             : #if 0
   53055             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   53056             :   // but it is not generally true that things can only be copied once!
   53057             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   53058             :   // AstAttribute* existingAttribute = const_cast<SgOmpSharedClause*>(this)->attribute["copied"];
   53059             :      bool previouslyCopied = const_cast<SgOmpSharedClause*>(this)->attribute.exists("copied");
   53060             :      if (previouslyCopied == true)
   53061             :         {
   53062             :           this->get_file_info()->display("Called from copy SgOmpSharedClause: debug");
   53063             :         }
   53064             :      ROSE_ASSERT(previouslyCopied == false);
   53065             : 
   53066             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   53067             :      AstAttribute* newAttribute = new AstAttribute();
   53068             :      ROSE_ASSERT(newAttribute != NULL);
   53069             : 
   53070             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   53071             :      const_cast<SgOmpSharedClause*>(this)->attribute.add("copied",newAttribute);
   53072             : #endif
   53073             : 
   53074             :   // Copy data members from base classes
   53075             :   // Copy constructor parameter data member: startOfConstruct_copy
   53076             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   53077             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   53078           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   53079           0 :      if ( p_startOfConstruct != NULL ) 
   53080             :         { 
   53081           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   53082             :         } 
   53083             :        else 
   53084             :         { 
   53085             :           startOfConstruct_copy = NULL; 
   53086             :         } 
   53087             :   // Copy constructor parameter data member: variables_copy
   53088           0 :      SgExprListExp* variables_copy; 
   53089             :   // case: not a listType for (using conditionalToCopyVariable)variables
   53090           0 :           if (get_variables() != NULL) 
   53091             :              { 
   53092           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   53093             :              } 
   53094             :             else 
   53095             :              { 
   53096             :                variables_copy = NULL; 
   53097             :              } 
   53098             :  
   53099             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53100             : 
   53101             :   // Build an empty copy of this object (will be filled in, but 
   53102             :   // the parent can't be set and must be set by the caller)
   53103           0 :      result = new SgOmpSharedClause(  startOfConstruct_copy, variables_copy );
   53104           0 :      ROSE_ASSERT(result != NULL);
   53105             : 
   53106             :   // Copy data members of "this" class
   53107             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   53108             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   53109             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   53110           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   53111           0 :      if ( p_endOfConstruct != NULL ) 
   53112             :         { 
   53113           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   53114             :         } 
   53115             :        else 
   53116             :         { 
   53117             :           endOfConstruct_copy = NULL; 
   53118             :         } 
   53119             :   /* check for a valid pointer and delete if present */ 
   53120           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   53121             :   /* add assignment to result here */ 
   53122           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   53123             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   53124             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   53125             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   53126           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   53127           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   53128             :         { 
   53129           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   53130             :         } 
   53131             :        else 
   53132             :         { 
   53133             :           attachedPreprocessingInfoPtr_copy = NULL; 
   53134             :         } 
   53135             :   /* check for a valid pointer and delete if present */ 
   53136           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   53137             :   /* add assignment to result here */ 
   53138           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   53139             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   53140             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   53141             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   53142           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   53143           0 :      if ( p_attributeMechanism != NULL ) 
   53144             :         { 
   53145           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   53146             :         } 
   53147             :        else 
   53148             :         { 
   53149             :           attributeMechanism_copy = NULL; 
   53150             :         } 
   53151             :   /* check for a valid pointer and delete if present */ 
   53152           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   53153             :   /* add assignment to result here */ 
   53154           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   53155             :   // case: not a listType for (using conditionalToSetParent)variables
   53156           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   53157             :              { 
   53158           0 :                variables_copy->set_parent(result); 
   53159             :              } 
   53160             : 
   53161             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53162             : 
   53163             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   53164             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   53165             :   // fixupCopy(result,help);
   53166             : 
   53167             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   53168             :   // the Sg_File_Info objects that are built for the new IR nodes.
   53169           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   53170           0 :      if (locatedNode != NULL)
   53171             :         {
   53172             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   53173           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   53174           0 :           ROSE_ASSERT(start != NULL);
   53175             : #if 0
   53176             :        // Debugging information
   53177             :           if (start->get_parent() == NULL)
   53178             :              {
   53179             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53180             :              }
   53181             : #endif
   53182           0 :           start->set_parent(locatedNode);
   53183           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   53184             : 
   53185           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   53186             : 
   53187             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   53188             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   53189             :        // ROSE_ASSERT(end != NULL);
   53190           0 :           if (end == NULL)
   53191             :              {
   53192           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   53193             :              }
   53194             :             else
   53195             :              {
   53196             : #if 0
   53197             :             // Debugging information
   53198             :                if (end->get_parent() == NULL)
   53199             :                   {
   53200             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53201             :                   }
   53202             : #endif
   53203           0 :                end->set_parent(locatedNode);
   53204           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   53205             :              }
   53206             : 
   53207           0 :           SgExpression* expression = isSgExpression(result);
   53208           0 :           if (isSgExpression(this) != NULL)
   53209             :              {
   53210           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   53211             : 
   53212             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   53213           0 :                if (operatorPosition != NULL)
   53214             :                   {
   53215             : #if 0
   53216             :                  // Debugging information
   53217             :                     if (operatorPosition->get_parent() == NULL)
   53218             :                        {
   53219             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53220             :                        }
   53221             : #endif
   53222           0 :                     operatorPosition->set_parent(expression);
   53223           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   53224             :                   }
   53225             :              }
   53226             :         }
   53227             : 
   53228             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   53229           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   53230           0 :      if (initializedName != NULL)
   53231             :         {
   53232             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   53233           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   53234           0 :           ROSE_ASSERT(start != NULL);
   53235             : #if 0
   53236             :        // Debugging information
   53237             :           if (start->get_parent() == NULL)
   53238             :              {
   53239             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53240             :              }
   53241             : #endif
   53242           0 :           start->set_parent(initializedName);
   53243           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   53244             : 
   53245             : #if 0
   53246             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   53247             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   53248             : 
   53249             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   53250             :        // ROSE_ASSERT(end != NULL);
   53251             :           if (end == NULL)
   53252             :              {
   53253             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   53254             :              }
   53255             :             else
   53256             :              {
   53257             :                if (end->get_parent() == NULL)
   53258             :                   {
   53259             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53260             :                   }
   53261             :                end->set_parent(initializedName);
   53262             :                ROSE_ASSERT(end->get_parent() != NULL);
   53263             :              }
   53264             : #endif
   53265             :         }
   53266             : 
   53267             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   53268           0 :      help.insertCopiedNodePair(this,result);
   53269             : 
   53270             :   // printf ("End of copy SgOmpSharedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   53271             : 
   53272             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   53273             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   53274           0 :      help.decrementDepth();
   53275             : 
   53276             :   // Test if this is the root of the copy!
   53277           0 :      if (help.get_depth() == 0)
   53278             :         {
   53279             :        // This is the original calling node.
   53280             : 
   53281             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   53282             :        // printf ("Calling SgOmpSharedClause::fixupCopy() (from root of AST being copied) \n");
   53283             : #if ALT_FIXUP_COPY
   53284             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   53285           0 :           fixupCopy_scopes (result,help);
   53286           0 :           fixupCopy_symbols (result,help);
   53287           0 :           fixupCopy_references (result,help);
   53288             : #else
   53289             :           fixupCopy(result,help);
   53290             : #endif
   53291             :        // Allow this to be called recursively, so accumulate the state.
   53292             :        // Also, clear the state in the SgCopyHelp object.
   53293             :        // help.clearState();
   53294             :         }
   53295             : 
   53296           0 :      return result;
   53297             :    }
   53298             : 
   53299             : 
   53300             : /* #line 53301 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   53301             : 
   53302             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53303             : 
   53304           0 : SgNode* SgOmpCopyinClause::copy ( SgCopyHelp& help) const
   53305             :    {
   53306           0 :      SgOmpCopyinClause* result = NULL;
   53307             : 
   53308             :   // printf ("Copy SgOmpCopyinClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   53309             : 
   53310             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   53311             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   53312             :   // The default value of the depth is 0, so after this call the depth is 1!
   53313           0 :      help.incrementDepth();
   53314             : 
   53315             : #if 0
   53316             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   53317             :   // but it is not generally true that things can only be copied once!
   53318             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   53319             :   // AstAttribute* existingAttribute = const_cast<SgOmpCopyinClause*>(this)->attribute["copied"];
   53320             :      bool previouslyCopied = const_cast<SgOmpCopyinClause*>(this)->attribute.exists("copied");
   53321             :      if (previouslyCopied == true)
   53322             :         {
   53323             :           this->get_file_info()->display("Called from copy SgOmpCopyinClause: debug");
   53324             :         }
   53325             :      ROSE_ASSERT(previouslyCopied == false);
   53326             : 
   53327             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   53328             :      AstAttribute* newAttribute = new AstAttribute();
   53329             :      ROSE_ASSERT(newAttribute != NULL);
   53330             : 
   53331             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   53332             :      const_cast<SgOmpCopyinClause*>(this)->attribute.add("copied",newAttribute);
   53333             : #endif
   53334             : 
   53335             :   // Copy data members from base classes
   53336             :   // Copy constructor parameter data member: startOfConstruct_copy
   53337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   53338             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   53339           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   53340           0 :      if ( p_startOfConstruct != NULL ) 
   53341             :         { 
   53342           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   53343             :         } 
   53344             :        else 
   53345             :         { 
   53346             :           startOfConstruct_copy = NULL; 
   53347             :         } 
   53348             :   // Copy constructor parameter data member: variables_copy
   53349           0 :      SgExprListExp* variables_copy; 
   53350             :   // case: not a listType for (using conditionalToCopyVariable)variables
   53351           0 :           if (get_variables() != NULL) 
   53352             :              { 
   53353           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   53354             :              } 
   53355             :             else 
   53356             :              { 
   53357             :                variables_copy = NULL; 
   53358             :              } 
   53359             :  
   53360             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53361             : 
   53362             :   // Build an empty copy of this object (will be filled in, but 
   53363             :   // the parent can't be set and must be set by the caller)
   53364           0 :      result = new SgOmpCopyinClause(  startOfConstruct_copy, variables_copy );
   53365           0 :      ROSE_ASSERT(result != NULL);
   53366             : 
   53367             :   // Copy data members of "this" class
   53368             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   53369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   53370             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   53371           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   53372           0 :      if ( p_endOfConstruct != NULL ) 
   53373             :         { 
   53374           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   53375             :         } 
   53376             :        else 
   53377             :         { 
   53378             :           endOfConstruct_copy = NULL; 
   53379             :         } 
   53380             :   /* check for a valid pointer and delete if present */ 
   53381           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   53382             :   /* add assignment to result here */ 
   53383           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   53384             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   53385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   53386             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   53387           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   53388           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   53389             :         { 
   53390           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   53391             :         } 
   53392             :        else 
   53393             :         { 
   53394             :           attachedPreprocessingInfoPtr_copy = NULL; 
   53395             :         } 
   53396             :   /* check for a valid pointer and delete if present */ 
   53397           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   53398             :   /* add assignment to result here */ 
   53399           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   53400             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   53401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   53402             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   53403           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   53404           0 :      if ( p_attributeMechanism != NULL ) 
   53405             :         { 
   53406           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   53407             :         } 
   53408             :        else 
   53409             :         { 
   53410             :           attributeMechanism_copy = NULL; 
   53411             :         } 
   53412             :   /* check for a valid pointer and delete if present */ 
   53413           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   53414             :   /* add assignment to result here */ 
   53415           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   53416             :   // case: not a listType for (using conditionalToSetParent)variables
   53417           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   53418             :              { 
   53419           0 :                variables_copy->set_parent(result); 
   53420             :              } 
   53421             : 
   53422             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53423             : 
   53424             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   53425             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   53426             :   // fixupCopy(result,help);
   53427             : 
   53428             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   53429             :   // the Sg_File_Info objects that are built for the new IR nodes.
   53430           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   53431           0 :      if (locatedNode != NULL)
   53432             :         {
   53433             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   53434           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   53435           0 :           ROSE_ASSERT(start != NULL);
   53436             : #if 0
   53437             :        // Debugging information
   53438             :           if (start->get_parent() == NULL)
   53439             :              {
   53440             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53441             :              }
   53442             : #endif
   53443           0 :           start->set_parent(locatedNode);
   53444           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   53445             : 
   53446           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   53447             : 
   53448             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   53449             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   53450             :        // ROSE_ASSERT(end != NULL);
   53451           0 :           if (end == NULL)
   53452             :              {
   53453           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   53454             :              }
   53455             :             else
   53456             :              {
   53457             : #if 0
   53458             :             // Debugging information
   53459             :                if (end->get_parent() == NULL)
   53460             :                   {
   53461             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53462             :                   }
   53463             : #endif
   53464           0 :                end->set_parent(locatedNode);
   53465           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   53466             :              }
   53467             : 
   53468           0 :           SgExpression* expression = isSgExpression(result);
   53469           0 :           if (isSgExpression(this) != NULL)
   53470             :              {
   53471           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   53472             : 
   53473             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   53474           0 :                if (operatorPosition != NULL)
   53475             :                   {
   53476             : #if 0
   53477             :                  // Debugging information
   53478             :                     if (operatorPosition->get_parent() == NULL)
   53479             :                        {
   53480             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53481             :                        }
   53482             : #endif
   53483           0 :                     operatorPosition->set_parent(expression);
   53484           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   53485             :                   }
   53486             :              }
   53487             :         }
   53488             : 
   53489             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   53490           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   53491           0 :      if (initializedName != NULL)
   53492             :         {
   53493             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   53494           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   53495           0 :           ROSE_ASSERT(start != NULL);
   53496             : #if 0
   53497             :        // Debugging information
   53498             :           if (start->get_parent() == NULL)
   53499             :              {
   53500             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53501             :              }
   53502             : #endif
   53503           0 :           start->set_parent(initializedName);
   53504           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   53505             : 
   53506             : #if 0
   53507             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   53508             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   53509             : 
   53510             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   53511             :        // ROSE_ASSERT(end != NULL);
   53512             :           if (end == NULL)
   53513             :              {
   53514             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   53515             :              }
   53516             :             else
   53517             :              {
   53518             :                if (end->get_parent() == NULL)
   53519             :                   {
   53520             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53521             :                   }
   53522             :                end->set_parent(initializedName);
   53523             :                ROSE_ASSERT(end->get_parent() != NULL);
   53524             :              }
   53525             : #endif
   53526             :         }
   53527             : 
   53528             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   53529           0 :      help.insertCopiedNodePair(this,result);
   53530             : 
   53531             :   // printf ("End of copy SgOmpCopyinClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   53532             : 
   53533             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   53534             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   53535           0 :      help.decrementDepth();
   53536             : 
   53537             :   // Test if this is the root of the copy!
   53538           0 :      if (help.get_depth() == 0)
   53539             :         {
   53540             :        // This is the original calling node.
   53541             : 
   53542             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   53543             :        // printf ("Calling SgOmpCopyinClause::fixupCopy() (from root of AST being copied) \n");
   53544             : #if ALT_FIXUP_COPY
   53545             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   53546           0 :           fixupCopy_scopes (result,help);
   53547           0 :           fixupCopy_symbols (result,help);
   53548           0 :           fixupCopy_references (result,help);
   53549             : #else
   53550             :           fixupCopy(result,help);
   53551             : #endif
   53552             :        // Allow this to be called recursively, so accumulate the state.
   53553             :        // Also, clear the state in the SgCopyHelp object.
   53554             :        // help.clearState();
   53555             :         }
   53556             : 
   53557           0 :      return result;
   53558             :    }
   53559             : 
   53560             : 
   53561             : /* #line 53562 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   53562             : 
   53563             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53564             : 
   53565           0 : SgNode* SgOmpLastprivateClause::copy ( SgCopyHelp& help) const
   53566             :    {
   53567           0 :      SgOmpLastprivateClause* result = NULL;
   53568             : 
   53569             :   // printf ("Copy SgOmpLastprivateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   53570             : 
   53571             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   53572             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   53573             :   // The default value of the depth is 0, so after this call the depth is 1!
   53574           0 :      help.incrementDepth();
   53575             : 
   53576             : #if 0
   53577             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   53578             :   // but it is not generally true that things can only be copied once!
   53579             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   53580             :   // AstAttribute* existingAttribute = const_cast<SgOmpLastprivateClause*>(this)->attribute["copied"];
   53581             :      bool previouslyCopied = const_cast<SgOmpLastprivateClause*>(this)->attribute.exists("copied");
   53582             :      if (previouslyCopied == true)
   53583             :         {
   53584             :           this->get_file_info()->display("Called from copy SgOmpLastprivateClause: debug");
   53585             :         }
   53586             :      ROSE_ASSERT(previouslyCopied == false);
   53587             : 
   53588             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   53589             :      AstAttribute* newAttribute = new AstAttribute();
   53590             :      ROSE_ASSERT(newAttribute != NULL);
   53591             : 
   53592             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   53593             :      const_cast<SgOmpLastprivateClause*>(this)->attribute.add("copied",newAttribute);
   53594             : #endif
   53595             : 
   53596             :   // Copy data members from base classes
   53597             :   // Copy constructor parameter data member: startOfConstruct_copy
   53598             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   53599             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   53600           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   53601           0 :      if ( p_startOfConstruct != NULL ) 
   53602             :         { 
   53603           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   53604             :         } 
   53605             :        else 
   53606             :         { 
   53607             :           startOfConstruct_copy = NULL; 
   53608             :         } 
   53609             :   // Copy constructor parameter data member: variables_copy
   53610           0 :      SgExprListExp* variables_copy; 
   53611             :   // case: not a listType for (using conditionalToCopyVariable)variables
   53612           0 :           if (get_variables() != NULL) 
   53613             :              { 
   53614           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   53615             :              } 
   53616             :             else 
   53617             :              { 
   53618             :                variables_copy = NULL; 
   53619             :              } 
   53620             :   // Copy constructor parameter data member: modifier_copy
   53621             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
   53622             :   // case: toBeCopied == COPY_DATA for modifier
   53623           0 :      SgOmpClause::omp_lastprivate_modifier_enum modifier_copy = p_modifier; 
   53624             :  
   53625             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53626             : 
   53627             :   // Build an empty copy of this object (will be filled in, but 
   53628             :   // the parent can't be set and must be set by the caller)
   53629           0 :      result = new SgOmpLastprivateClause(  startOfConstruct_copy, variables_copy, modifier_copy );
   53630           0 :      ROSE_ASSERT(result != NULL);
   53631             : 
   53632             :   // Copy data members of "this" class
   53633             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   53634             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   53635             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   53636           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   53637           0 :      if ( p_endOfConstruct != NULL ) 
   53638             :         { 
   53639           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   53640             :         } 
   53641             :        else 
   53642             :         { 
   53643             :           endOfConstruct_copy = NULL; 
   53644             :         } 
   53645             :   /* check for a valid pointer and delete if present */ 
   53646           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   53647             :   /* add assignment to result here */ 
   53648           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   53649             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   53650             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   53651             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   53652           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   53653           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   53654             :         { 
   53655           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   53656             :         } 
   53657             :        else 
   53658             :         { 
   53659             :           attachedPreprocessingInfoPtr_copy = NULL; 
   53660             :         } 
   53661             :   /* check for a valid pointer and delete if present */ 
   53662           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   53663             :   /* add assignment to result here */ 
   53664           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   53665             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   53666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   53667             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   53668           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   53669           0 :      if ( p_attributeMechanism != NULL ) 
   53670             :         { 
   53671           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   53672             :         } 
   53673             :        else 
   53674             :         { 
   53675             :           attributeMechanism_copy = NULL; 
   53676             :         } 
   53677             :   /* check for a valid pointer and delete if present */ 
   53678           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   53679             :   /* add assignment to result here */ 
   53680           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   53681             :   // case: not a listType for (using conditionalToSetParent)variables
   53682           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   53683             :              { 
   53684           0 :                variables_copy->set_parent(result); 
   53685             :              } 
   53686             : 
   53687             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53688             : 
   53689             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   53690             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   53691             :   // fixupCopy(result,help);
   53692             : 
   53693             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   53694             :   // the Sg_File_Info objects that are built for the new IR nodes.
   53695           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   53696           0 :      if (locatedNode != NULL)
   53697             :         {
   53698             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   53699           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   53700           0 :           ROSE_ASSERT(start != NULL);
   53701             : #if 0
   53702             :        // Debugging information
   53703             :           if (start->get_parent() == NULL)
   53704             :              {
   53705             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53706             :              }
   53707             : #endif
   53708           0 :           start->set_parent(locatedNode);
   53709           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   53710             : 
   53711           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   53712             : 
   53713             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   53714             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   53715             :        // ROSE_ASSERT(end != NULL);
   53716           0 :           if (end == NULL)
   53717             :              {
   53718           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   53719             :              }
   53720             :             else
   53721             :              {
   53722             : #if 0
   53723             :             // Debugging information
   53724             :                if (end->get_parent() == NULL)
   53725             :                   {
   53726             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53727             :                   }
   53728             : #endif
   53729           0 :                end->set_parent(locatedNode);
   53730           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   53731             :              }
   53732             : 
   53733           0 :           SgExpression* expression = isSgExpression(result);
   53734           0 :           if (isSgExpression(this) != NULL)
   53735             :              {
   53736           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   53737             : 
   53738             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   53739           0 :                if (operatorPosition != NULL)
   53740             :                   {
   53741             : #if 0
   53742             :                  // Debugging information
   53743             :                     if (operatorPosition->get_parent() == NULL)
   53744             :                        {
   53745             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53746             :                        }
   53747             : #endif
   53748           0 :                     operatorPosition->set_parent(expression);
   53749           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   53750             :                   }
   53751             :              }
   53752             :         }
   53753             : 
   53754             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   53755           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   53756           0 :      if (initializedName != NULL)
   53757             :         {
   53758             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   53759           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   53760           0 :           ROSE_ASSERT(start != NULL);
   53761             : #if 0
   53762             :        // Debugging information
   53763             :           if (start->get_parent() == NULL)
   53764             :              {
   53765             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53766             :              }
   53767             : #endif
   53768           0 :           start->set_parent(initializedName);
   53769           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   53770             : 
   53771             : #if 0
   53772             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   53773             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   53774             : 
   53775             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   53776             :        // ROSE_ASSERT(end != NULL);
   53777             :           if (end == NULL)
   53778             :              {
   53779             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   53780             :              }
   53781             :             else
   53782             :              {
   53783             :                if (end->get_parent() == NULL)
   53784             :                   {
   53785             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53786             :                   }
   53787             :                end->set_parent(initializedName);
   53788             :                ROSE_ASSERT(end->get_parent() != NULL);
   53789             :              }
   53790             : #endif
   53791             :         }
   53792             : 
   53793             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   53794           0 :      help.insertCopiedNodePair(this,result);
   53795             : 
   53796             :   // printf ("End of copy SgOmpLastprivateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   53797             : 
   53798             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   53799             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   53800           0 :      help.decrementDepth();
   53801             : 
   53802             :   // Test if this is the root of the copy!
   53803           0 :      if (help.get_depth() == 0)
   53804             :         {
   53805             :        // This is the original calling node.
   53806             : 
   53807             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   53808             :        // printf ("Calling SgOmpLastprivateClause::fixupCopy() (from root of AST being copied) \n");
   53809             : #if ALT_FIXUP_COPY
   53810             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   53811           0 :           fixupCopy_scopes (result,help);
   53812           0 :           fixupCopy_symbols (result,help);
   53813           0 :           fixupCopy_references (result,help);
   53814             : #else
   53815             :           fixupCopy(result,help);
   53816             : #endif
   53817             :        // Allow this to be called recursively, so accumulate the state.
   53818             :        // Also, clear the state in the SgCopyHelp object.
   53819             :        // help.clearState();
   53820             :         }
   53821             : 
   53822           0 :      return result;
   53823             :    }
   53824             : 
   53825             : 
   53826             : /* #line 53827 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   53827             : 
   53828             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53829             : 
   53830           0 : SgNode* SgOmpReductionClause::copy ( SgCopyHelp& help) const
   53831             :    {
   53832           0 :      SgOmpReductionClause* result = NULL;
   53833             : 
   53834             :   // printf ("Copy SgOmpReductionClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   53835             : 
   53836             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   53837             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   53838             :   // The default value of the depth is 0, so after this call the depth is 1!
   53839           0 :      help.incrementDepth();
   53840             : 
   53841             : #if 0
   53842             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   53843             :   // but it is not generally true that things can only be copied once!
   53844             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   53845             :   // AstAttribute* existingAttribute = const_cast<SgOmpReductionClause*>(this)->attribute["copied"];
   53846             :      bool previouslyCopied = const_cast<SgOmpReductionClause*>(this)->attribute.exists("copied");
   53847             :      if (previouslyCopied == true)
   53848             :         {
   53849             :           this->get_file_info()->display("Called from copy SgOmpReductionClause: debug");
   53850             :         }
   53851             :      ROSE_ASSERT(previouslyCopied == false);
   53852             : 
   53853             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   53854             :      AstAttribute* newAttribute = new AstAttribute();
   53855             :      ROSE_ASSERT(newAttribute != NULL);
   53856             : 
   53857             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   53858             :      const_cast<SgOmpReductionClause*>(this)->attribute.add("copied",newAttribute);
   53859             : #endif
   53860             : 
   53861             :   // Copy data members from base classes
   53862             :   // Copy constructor parameter data member: startOfConstruct_copy
   53863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   53864             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   53865           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   53866           0 :      if ( p_startOfConstruct != NULL ) 
   53867             :         { 
   53868           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   53869             :         } 
   53870             :        else 
   53871             :         { 
   53872             :           startOfConstruct_copy = NULL; 
   53873             :         } 
   53874             :   // Copy constructor parameter data member: variables_copy
   53875           0 :      SgExprListExp* variables_copy; 
   53876             :   // case: not a listType for (using conditionalToCopyVariable)variables
   53877           0 :           if (get_variables() != NULL) 
   53878             :              { 
   53879           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   53880             :              } 
   53881             :             else 
   53882             :              { 
   53883             :                variables_copy = NULL; 
   53884             :              } 
   53885             :   // Copy constructor parameter data member: modifier_copy
   53886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
   53887             :   // case: toBeCopied == COPY_DATA for modifier
   53888           0 :      SgOmpClause::omp_reduction_modifier_enum modifier_copy = p_modifier; 
   53889             :   // Copy constructor parameter data member: identifier_copy
   53890             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for identifier
   53891             :   // case: toBeCopied == COPY_DATA for identifier
   53892           0 :      SgOmpClause::omp_reduction_identifier_enum identifier_copy = p_identifier; 
   53893             :   // Copy constructor parameter data member: user_defined_identifier_copy
   53894             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for user_defined_identifier
   53895             :   // case: toBeCopied == COPY_DATA for user_defined_identifier
   53896           0 :      SgExpression* user_defined_identifier_copy = p_user_defined_identifier; 
   53897             :  
   53898             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53899             : 
   53900             :   // Build an empty copy of this object (will be filled in, but 
   53901             :   // the parent can't be set and must be set by the caller)
   53902           0 :      result = new SgOmpReductionClause(  startOfConstruct_copy, variables_copy, modifier_copy, identifier_copy, user_defined_identifier_copy );
   53903           0 :      ROSE_ASSERT(result != NULL);
   53904             : 
   53905             :   // Copy data members of "this" class
   53906             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   53907             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   53908             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   53909           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   53910           0 :      if ( p_endOfConstruct != NULL ) 
   53911             :         { 
   53912           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   53913             :         } 
   53914             :        else 
   53915             :         { 
   53916             :           endOfConstruct_copy = NULL; 
   53917             :         } 
   53918             :   /* check for a valid pointer and delete if present */ 
   53919           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   53920             :   /* add assignment to result here */ 
   53921           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   53922             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   53923             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   53924             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   53925           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   53926           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   53927             :         { 
   53928           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   53929             :         } 
   53930             :        else 
   53931             :         { 
   53932             :           attachedPreprocessingInfoPtr_copy = NULL; 
   53933             :         } 
   53934             :   /* check for a valid pointer and delete if present */ 
   53935           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   53936             :   /* add assignment to result here */ 
   53937           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   53938             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   53939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   53940             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   53941           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   53942           0 :      if ( p_attributeMechanism != NULL ) 
   53943             :         { 
   53944           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   53945             :         } 
   53946             :        else 
   53947             :         { 
   53948             :           attributeMechanism_copy = NULL; 
   53949             :         } 
   53950             :   /* check for a valid pointer and delete if present */ 
   53951           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   53952             :   /* add assignment to result here */ 
   53953           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   53954             :   // case: not a listType for (using conditionalToSetParent)variables
   53955           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   53956             :              { 
   53957           0 :                variables_copy->set_parent(result); 
   53958             :              } 
   53959             : 
   53960             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   53961             : 
   53962             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   53963             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   53964             :   // fixupCopy(result,help);
   53965             : 
   53966             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   53967             :   // the Sg_File_Info objects that are built for the new IR nodes.
   53968           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   53969           0 :      if (locatedNode != NULL)
   53970             :         {
   53971             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   53972           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   53973           0 :           ROSE_ASSERT(start != NULL);
   53974             : #if 0
   53975             :        // Debugging information
   53976             :           if (start->get_parent() == NULL)
   53977             :              {
   53978             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   53979             :              }
   53980             : #endif
   53981           0 :           start->set_parent(locatedNode);
   53982           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   53983             : 
   53984           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   53985             : 
   53986             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   53987             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   53988             :        // ROSE_ASSERT(end != NULL);
   53989           0 :           if (end == NULL)
   53990             :              {
   53991           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   53992             :              }
   53993             :             else
   53994             :              {
   53995             : #if 0
   53996             :             // Debugging information
   53997             :                if (end->get_parent() == NULL)
   53998             :                   {
   53999             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54000             :                   }
   54001             : #endif
   54002           0 :                end->set_parent(locatedNode);
   54003           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   54004             :              }
   54005             : 
   54006           0 :           SgExpression* expression = isSgExpression(result);
   54007           0 :           if (isSgExpression(this) != NULL)
   54008             :              {
   54009           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   54010             : 
   54011             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   54012           0 :                if (operatorPosition != NULL)
   54013             :                   {
   54014             : #if 0
   54015             :                  // Debugging information
   54016             :                     if (operatorPosition->get_parent() == NULL)
   54017             :                        {
   54018             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54019             :                        }
   54020             : #endif
   54021           0 :                     operatorPosition->set_parent(expression);
   54022           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   54023             :                   }
   54024             :              }
   54025             :         }
   54026             : 
   54027             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   54028           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   54029           0 :      if (initializedName != NULL)
   54030             :         {
   54031             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   54032           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   54033           0 :           ROSE_ASSERT(start != NULL);
   54034             : #if 0
   54035             :        // Debugging information
   54036             :           if (start->get_parent() == NULL)
   54037             :              {
   54038             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54039             :              }
   54040             : #endif
   54041           0 :           start->set_parent(initializedName);
   54042           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   54043             : 
   54044             : #if 0
   54045             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   54046             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   54047             : 
   54048             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   54049             :        // ROSE_ASSERT(end != NULL);
   54050             :           if (end == NULL)
   54051             :              {
   54052             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   54053             :              }
   54054             :             else
   54055             :              {
   54056             :                if (end->get_parent() == NULL)
   54057             :                   {
   54058             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54059             :                   }
   54060             :                end->set_parent(initializedName);
   54061             :                ROSE_ASSERT(end->get_parent() != NULL);
   54062             :              }
   54063             : #endif
   54064             :         }
   54065             : 
   54066             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   54067           0 :      help.insertCopiedNodePair(this,result);
   54068             : 
   54069             :   // printf ("End of copy SgOmpReductionClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   54070             : 
   54071             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   54072             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   54073           0 :      help.decrementDepth();
   54074             : 
   54075             :   // Test if this is the root of the copy!
   54076           0 :      if (help.get_depth() == 0)
   54077             :         {
   54078             :        // This is the original calling node.
   54079             : 
   54080             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   54081             :        // printf ("Calling SgOmpReductionClause::fixupCopy() (from root of AST being copied) \n");
   54082             : #if ALT_FIXUP_COPY
   54083             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   54084           0 :           fixupCopy_scopes (result,help);
   54085           0 :           fixupCopy_symbols (result,help);
   54086           0 :           fixupCopy_references (result,help);
   54087             : #else
   54088             :           fixupCopy(result,help);
   54089             : #endif
   54090             :        // Allow this to be called recursively, so accumulate the state.
   54091             :        // Also, clear the state in the SgCopyHelp object.
   54092             :        // help.clearState();
   54093             :         }
   54094             : 
   54095           0 :      return result;
   54096             :    }
   54097             : 
   54098             : 
   54099             : /* #line 54100 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   54100             : 
   54101             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54102             : 
   54103           0 : SgNode* SgOmpInReductionClause::copy ( SgCopyHelp& help) const
   54104             :    {
   54105           0 :      SgOmpInReductionClause* result = NULL;
   54106             : 
   54107             :   // printf ("Copy SgOmpInReductionClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   54108             : 
   54109             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   54110             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   54111             :   // The default value of the depth is 0, so after this call the depth is 1!
   54112           0 :      help.incrementDepth();
   54113             : 
   54114             : #if 0
   54115             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   54116             :   // but it is not generally true that things can only be copied once!
   54117             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   54118             :   // AstAttribute* existingAttribute = const_cast<SgOmpInReductionClause*>(this)->attribute["copied"];
   54119             :      bool previouslyCopied = const_cast<SgOmpInReductionClause*>(this)->attribute.exists("copied");
   54120             :      if (previouslyCopied == true)
   54121             :         {
   54122             :           this->get_file_info()->display("Called from copy SgOmpInReductionClause: debug");
   54123             :         }
   54124             :      ROSE_ASSERT(previouslyCopied == false);
   54125             : 
   54126             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   54127             :      AstAttribute* newAttribute = new AstAttribute();
   54128             :      ROSE_ASSERT(newAttribute != NULL);
   54129             : 
   54130             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   54131             :      const_cast<SgOmpInReductionClause*>(this)->attribute.add("copied",newAttribute);
   54132             : #endif
   54133             : 
   54134             :   // Copy data members from base classes
   54135             :   // Copy constructor parameter data member: startOfConstruct_copy
   54136             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   54137             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   54138           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   54139           0 :      if ( p_startOfConstruct != NULL ) 
   54140             :         { 
   54141           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   54142             :         } 
   54143             :        else 
   54144             :         { 
   54145             :           startOfConstruct_copy = NULL; 
   54146             :         } 
   54147             :   // Copy constructor parameter data member: variables_copy
   54148           0 :      SgExprListExp* variables_copy; 
   54149             :   // case: not a listType for (using conditionalToCopyVariable)variables
   54150           0 :           if (get_variables() != NULL) 
   54151             :              { 
   54152           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   54153             :              } 
   54154             :             else 
   54155             :              { 
   54156             :                variables_copy = NULL; 
   54157             :              } 
   54158             :   // Copy constructor parameter data member: identifier_copy
   54159             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for identifier
   54160             :   // case: toBeCopied == COPY_DATA for identifier
   54161           0 :      SgOmpClause::omp_in_reduction_identifier_enum identifier_copy = p_identifier; 
   54162             :   // Copy constructor parameter data member: user_defined_identifier_copy
   54163             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for user_defined_identifier
   54164             :   // case: toBeCopied == COPY_DATA for user_defined_identifier
   54165           0 :      SgExpression* user_defined_identifier_copy = p_user_defined_identifier; 
   54166             :  
   54167             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54168             : 
   54169             :   // Build an empty copy of this object (will be filled in, but 
   54170             :   // the parent can't be set and must be set by the caller)
   54171           0 :      result = new SgOmpInReductionClause(  startOfConstruct_copy, variables_copy, identifier_copy, user_defined_identifier_copy );
   54172           0 :      ROSE_ASSERT(result != NULL);
   54173             : 
   54174             :   // Copy data members of "this" class
   54175             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   54176             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   54177             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   54178           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   54179           0 :      if ( p_endOfConstruct != NULL ) 
   54180             :         { 
   54181           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   54182             :         } 
   54183             :        else 
   54184             :         { 
   54185             :           endOfConstruct_copy = NULL; 
   54186             :         } 
   54187             :   /* check for a valid pointer and delete if present */ 
   54188           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   54189             :   /* add assignment to result here */ 
   54190           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   54191             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   54192             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   54193             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   54194           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   54195           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   54196             :         { 
   54197           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   54198             :         } 
   54199             :        else 
   54200             :         { 
   54201             :           attachedPreprocessingInfoPtr_copy = NULL; 
   54202             :         } 
   54203             :   /* check for a valid pointer and delete if present */ 
   54204           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   54205             :   /* add assignment to result here */ 
   54206           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   54207             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   54208             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   54209             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   54210           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   54211           0 :      if ( p_attributeMechanism != NULL ) 
   54212             :         { 
   54213           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   54214             :         } 
   54215             :        else 
   54216             :         { 
   54217             :           attributeMechanism_copy = NULL; 
   54218             :         } 
   54219             :   /* check for a valid pointer and delete if present */ 
   54220           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   54221             :   /* add assignment to result here */ 
   54222           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   54223             :   // case: not a listType for (using conditionalToSetParent)variables
   54224           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   54225             :              { 
   54226           0 :                variables_copy->set_parent(result); 
   54227             :              } 
   54228             : 
   54229             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54230             : 
   54231             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   54232             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   54233             :   // fixupCopy(result,help);
   54234             : 
   54235             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   54236             :   // the Sg_File_Info objects that are built for the new IR nodes.
   54237           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   54238           0 :      if (locatedNode != NULL)
   54239             :         {
   54240             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   54241           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   54242           0 :           ROSE_ASSERT(start != NULL);
   54243             : #if 0
   54244             :        // Debugging information
   54245             :           if (start->get_parent() == NULL)
   54246             :              {
   54247             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54248             :              }
   54249             : #endif
   54250           0 :           start->set_parent(locatedNode);
   54251           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   54252             : 
   54253           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   54254             : 
   54255             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   54256             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   54257             :        // ROSE_ASSERT(end != NULL);
   54258           0 :           if (end == NULL)
   54259             :              {
   54260           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   54261             :              }
   54262             :             else
   54263             :              {
   54264             : #if 0
   54265             :             // Debugging information
   54266             :                if (end->get_parent() == NULL)
   54267             :                   {
   54268             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54269             :                   }
   54270             : #endif
   54271           0 :                end->set_parent(locatedNode);
   54272           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   54273             :              }
   54274             : 
   54275           0 :           SgExpression* expression = isSgExpression(result);
   54276           0 :           if (isSgExpression(this) != NULL)
   54277             :              {
   54278           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   54279             : 
   54280             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   54281           0 :                if (operatorPosition != NULL)
   54282             :                   {
   54283             : #if 0
   54284             :                  // Debugging information
   54285             :                     if (operatorPosition->get_parent() == NULL)
   54286             :                        {
   54287             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54288             :                        }
   54289             : #endif
   54290           0 :                     operatorPosition->set_parent(expression);
   54291           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   54292             :                   }
   54293             :              }
   54294             :         }
   54295             : 
   54296             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   54297           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   54298           0 :      if (initializedName != NULL)
   54299             :         {
   54300             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   54301           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   54302           0 :           ROSE_ASSERT(start != NULL);
   54303             : #if 0
   54304             :        // Debugging information
   54305             :           if (start->get_parent() == NULL)
   54306             :              {
   54307             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54308             :              }
   54309             : #endif
   54310           0 :           start->set_parent(initializedName);
   54311           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   54312             : 
   54313             : #if 0
   54314             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   54315             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   54316             : 
   54317             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   54318             :        // ROSE_ASSERT(end != NULL);
   54319             :           if (end == NULL)
   54320             :              {
   54321             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   54322             :              }
   54323             :             else
   54324             :              {
   54325             :                if (end->get_parent() == NULL)
   54326             :                   {
   54327             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54328             :                   }
   54329             :                end->set_parent(initializedName);
   54330             :                ROSE_ASSERT(end->get_parent() != NULL);
   54331             :              }
   54332             : #endif
   54333             :         }
   54334             : 
   54335             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   54336           0 :      help.insertCopiedNodePair(this,result);
   54337             : 
   54338             :   // printf ("End of copy SgOmpInReductionClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   54339             : 
   54340             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   54341             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   54342           0 :      help.decrementDepth();
   54343             : 
   54344             :   // Test if this is the root of the copy!
   54345           0 :      if (help.get_depth() == 0)
   54346             :         {
   54347             :        // This is the original calling node.
   54348             : 
   54349             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   54350             :        // printf ("Calling SgOmpInReductionClause::fixupCopy() (from root of AST being copied) \n");
   54351             : #if ALT_FIXUP_COPY
   54352             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   54353           0 :           fixupCopy_scopes (result,help);
   54354           0 :           fixupCopy_symbols (result,help);
   54355           0 :           fixupCopy_references (result,help);
   54356             : #else
   54357             :           fixupCopy(result,help);
   54358             : #endif
   54359             :        // Allow this to be called recursively, so accumulate the state.
   54360             :        // Also, clear the state in the SgCopyHelp object.
   54361             :        // help.clearState();
   54362             :         }
   54363             : 
   54364           0 :      return result;
   54365             :    }
   54366             : 
   54367             : 
   54368             : /* #line 54369 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   54369             : 
   54370             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54371             : 
   54372           0 : SgNode* SgOmpTaskReductionClause::copy ( SgCopyHelp& help) const
   54373             :    {
   54374           0 :      SgOmpTaskReductionClause* result = NULL;
   54375             : 
   54376             :   // printf ("Copy SgOmpTaskReductionClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   54377             : 
   54378             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   54379             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   54380             :   // The default value of the depth is 0, so after this call the depth is 1!
   54381           0 :      help.incrementDepth();
   54382             : 
   54383             : #if 0
   54384             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   54385             :   // but it is not generally true that things can only be copied once!
   54386             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   54387             :   // AstAttribute* existingAttribute = const_cast<SgOmpTaskReductionClause*>(this)->attribute["copied"];
   54388             :      bool previouslyCopied = const_cast<SgOmpTaskReductionClause*>(this)->attribute.exists("copied");
   54389             :      if (previouslyCopied == true)
   54390             :         {
   54391             :           this->get_file_info()->display("Called from copy SgOmpTaskReductionClause: debug");
   54392             :         }
   54393             :      ROSE_ASSERT(previouslyCopied == false);
   54394             : 
   54395             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   54396             :      AstAttribute* newAttribute = new AstAttribute();
   54397             :      ROSE_ASSERT(newAttribute != NULL);
   54398             : 
   54399             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   54400             :      const_cast<SgOmpTaskReductionClause*>(this)->attribute.add("copied",newAttribute);
   54401             : #endif
   54402             : 
   54403             :   // Copy data members from base classes
   54404             :   // Copy constructor parameter data member: startOfConstruct_copy
   54405             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   54406             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   54407           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   54408           0 :      if ( p_startOfConstruct != NULL ) 
   54409             :         { 
   54410           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   54411             :         } 
   54412             :        else 
   54413             :         { 
   54414             :           startOfConstruct_copy = NULL; 
   54415             :         } 
   54416             :   // Copy constructor parameter data member: variables_copy
   54417           0 :      SgExprListExp* variables_copy; 
   54418             :   // case: not a listType for (using conditionalToCopyVariable)variables
   54419           0 :           if (get_variables() != NULL) 
   54420             :              { 
   54421           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   54422             :              } 
   54423             :             else 
   54424             :              { 
   54425             :                variables_copy = NULL; 
   54426             :              } 
   54427             :   // Copy constructor parameter data member: identifier_copy
   54428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for identifier
   54429             :   // case: toBeCopied == COPY_DATA for identifier
   54430           0 :      SgOmpClause::omp_task_reduction_identifier_enum identifier_copy = p_identifier; 
   54431             :   // Copy constructor parameter data member: user_defined_identifier_copy
   54432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for user_defined_identifier
   54433             :   // case: toBeCopied == COPY_DATA for user_defined_identifier
   54434           0 :      SgExpression* user_defined_identifier_copy = p_user_defined_identifier; 
   54435             :  
   54436             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54437             : 
   54438             :   // Build an empty copy of this object (will be filled in, but 
   54439             :   // the parent can't be set and must be set by the caller)
   54440           0 :      result = new SgOmpTaskReductionClause(  startOfConstruct_copy, variables_copy, identifier_copy, user_defined_identifier_copy );
   54441           0 :      ROSE_ASSERT(result != NULL);
   54442             : 
   54443             :   // Copy data members of "this" class
   54444             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   54445             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   54446             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   54447           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   54448           0 :      if ( p_endOfConstruct != NULL ) 
   54449             :         { 
   54450           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   54451             :         } 
   54452             :        else 
   54453             :         { 
   54454             :           endOfConstruct_copy = NULL; 
   54455             :         } 
   54456             :   /* check for a valid pointer and delete if present */ 
   54457           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   54458             :   /* add assignment to result here */ 
   54459           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   54460             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   54461             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   54462             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   54463           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   54464           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   54465             :         { 
   54466           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   54467             :         } 
   54468             :        else 
   54469             :         { 
   54470             :           attachedPreprocessingInfoPtr_copy = NULL; 
   54471             :         } 
   54472             :   /* check for a valid pointer and delete if present */ 
   54473           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   54474             :   /* add assignment to result here */ 
   54475           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   54476             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   54477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   54478             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   54479           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   54480           0 :      if ( p_attributeMechanism != NULL ) 
   54481             :         { 
   54482           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   54483             :         } 
   54484             :        else 
   54485             :         { 
   54486             :           attributeMechanism_copy = NULL; 
   54487             :         } 
   54488             :   /* check for a valid pointer and delete if present */ 
   54489           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   54490             :   /* add assignment to result here */ 
   54491           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   54492             :   // case: not a listType for (using conditionalToSetParent)variables
   54493           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   54494             :              { 
   54495           0 :                variables_copy->set_parent(result); 
   54496             :              } 
   54497             : 
   54498             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54499             : 
   54500             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   54501             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   54502             :   // fixupCopy(result,help);
   54503             : 
   54504             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   54505             :   // the Sg_File_Info objects that are built for the new IR nodes.
   54506           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   54507           0 :      if (locatedNode != NULL)
   54508             :         {
   54509             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   54510           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   54511           0 :           ROSE_ASSERT(start != NULL);
   54512             : #if 0
   54513             :        // Debugging information
   54514             :           if (start->get_parent() == NULL)
   54515             :              {
   54516             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54517             :              }
   54518             : #endif
   54519           0 :           start->set_parent(locatedNode);
   54520           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   54521             : 
   54522           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   54523             : 
   54524             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   54525             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   54526             :        // ROSE_ASSERT(end != NULL);
   54527           0 :           if (end == NULL)
   54528             :              {
   54529           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   54530             :              }
   54531             :             else
   54532             :              {
   54533             : #if 0
   54534             :             // Debugging information
   54535             :                if (end->get_parent() == NULL)
   54536             :                   {
   54537             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54538             :                   }
   54539             : #endif
   54540           0 :                end->set_parent(locatedNode);
   54541           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   54542             :              }
   54543             : 
   54544           0 :           SgExpression* expression = isSgExpression(result);
   54545           0 :           if (isSgExpression(this) != NULL)
   54546             :              {
   54547           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   54548             : 
   54549             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   54550           0 :                if (operatorPosition != NULL)
   54551             :                   {
   54552             : #if 0
   54553             :                  // Debugging information
   54554             :                     if (operatorPosition->get_parent() == NULL)
   54555             :                        {
   54556             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54557             :                        }
   54558             : #endif
   54559           0 :                     operatorPosition->set_parent(expression);
   54560           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   54561             :                   }
   54562             :              }
   54563             :         }
   54564             : 
   54565             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   54566           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   54567           0 :      if (initializedName != NULL)
   54568             :         {
   54569             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   54570           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   54571           0 :           ROSE_ASSERT(start != NULL);
   54572             : #if 0
   54573             :        // Debugging information
   54574             :           if (start->get_parent() == NULL)
   54575             :              {
   54576             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54577             :              }
   54578             : #endif
   54579           0 :           start->set_parent(initializedName);
   54580           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   54581             : 
   54582             : #if 0
   54583             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   54584             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   54585             : 
   54586             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   54587             :        // ROSE_ASSERT(end != NULL);
   54588             :           if (end == NULL)
   54589             :              {
   54590             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   54591             :              }
   54592             :             else
   54593             :              {
   54594             :                if (end->get_parent() == NULL)
   54595             :                   {
   54596             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54597             :                   }
   54598             :                end->set_parent(initializedName);
   54599             :                ROSE_ASSERT(end->get_parent() != NULL);
   54600             :              }
   54601             : #endif
   54602             :         }
   54603             : 
   54604             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   54605           0 :      help.insertCopiedNodePair(this,result);
   54606             : 
   54607             :   // printf ("End of copy SgOmpTaskReductionClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   54608             : 
   54609             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   54610             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   54611           0 :      help.decrementDepth();
   54612             : 
   54613             :   // Test if this is the root of the copy!
   54614           0 :      if (help.get_depth() == 0)
   54615             :         {
   54616             :        // This is the original calling node.
   54617             : 
   54618             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   54619             :        // printf ("Calling SgOmpTaskReductionClause::fixupCopy() (from root of AST being copied) \n");
   54620             : #if ALT_FIXUP_COPY
   54621             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   54622           0 :           fixupCopy_scopes (result,help);
   54623           0 :           fixupCopy_symbols (result,help);
   54624           0 :           fixupCopy_references (result,help);
   54625             : #else
   54626             :           fixupCopy(result,help);
   54627             : #endif
   54628             :        // Allow this to be called recursively, so accumulate the state.
   54629             :        // Also, clear the state in the SgCopyHelp object.
   54630             :        // help.clearState();
   54631             :         }
   54632             : 
   54633           0 :      return result;
   54634             :    }
   54635             : 
   54636             : 
   54637             : /* #line 54638 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   54638             : 
   54639             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54640             : 
   54641           0 : SgNode* SgOmpMapClause::copy ( SgCopyHelp& help) const
   54642             :    {
   54643           0 :      SgOmpMapClause* result = NULL;
   54644             : 
   54645             :   // printf ("Copy SgOmpMapClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   54646             : 
   54647             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   54648             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   54649             :   // The default value of the depth is 0, so after this call the depth is 1!
   54650           0 :      help.incrementDepth();
   54651             : 
   54652             : #if 0
   54653             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   54654             :   // but it is not generally true that things can only be copied once!
   54655             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   54656             :   // AstAttribute* existingAttribute = const_cast<SgOmpMapClause*>(this)->attribute["copied"];
   54657             :      bool previouslyCopied = const_cast<SgOmpMapClause*>(this)->attribute.exists("copied");
   54658             :      if (previouslyCopied == true)
   54659             :         {
   54660             :           this->get_file_info()->display("Called from copy SgOmpMapClause: debug");
   54661             :         }
   54662             :      ROSE_ASSERT(previouslyCopied == false);
   54663             : 
   54664             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   54665             :      AstAttribute* newAttribute = new AstAttribute();
   54666             :      ROSE_ASSERT(newAttribute != NULL);
   54667             : 
   54668             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   54669             :      const_cast<SgOmpMapClause*>(this)->attribute.add("copied",newAttribute);
   54670             : #endif
   54671             : 
   54672             :   // Copy data members from base classes
   54673             :   // Copy constructor parameter data member: startOfConstruct_copy
   54674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   54675             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   54676           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   54677           0 :      if ( p_startOfConstruct != NULL ) 
   54678             :         { 
   54679           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   54680             :         } 
   54681             :        else 
   54682             :         { 
   54683             :           startOfConstruct_copy = NULL; 
   54684             :         } 
   54685             :   // Copy constructor parameter data member: variables_copy
   54686           0 :      SgExprListExp* variables_copy; 
   54687             :   // case: not a listType for (using conditionalToCopyVariable)variables
   54688           0 :           if (get_variables() != NULL) 
   54689             :              { 
   54690           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   54691             :              } 
   54692             :             else 
   54693             :              { 
   54694             :                variables_copy = NULL; 
   54695             :              } 
   54696             :   // Copy constructor parameter data member: operation_copy
   54697             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operation
   54698             :   // case: toBeCopied == COPY_DATA for operation
   54699           0 :      SgOmpClause::omp_map_operator_enum operation_copy = p_operation; 
   54700             :  
   54701             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54702             : 
   54703             :   // Build an empty copy of this object (will be filled in, but 
   54704             :   // the parent can't be set and must be set by the caller)
   54705           0 :      result = new SgOmpMapClause(  startOfConstruct_copy, variables_copy, operation_copy );
   54706           0 :      ROSE_ASSERT(result != NULL);
   54707             : 
   54708             :   // Copy data members of "this" class
   54709             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   54710             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   54711             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   54712           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   54713           0 :      if ( p_endOfConstruct != NULL ) 
   54714             :         { 
   54715           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   54716             :         } 
   54717             :        else 
   54718             :         { 
   54719             :           endOfConstruct_copy = NULL; 
   54720             :         } 
   54721             :   /* check for a valid pointer and delete if present */ 
   54722           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   54723             :   /* add assignment to result here */ 
   54724           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   54725             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   54726             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   54727             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   54728           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   54729           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   54730             :         { 
   54731           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   54732             :         } 
   54733             :        else 
   54734             :         { 
   54735             :           attachedPreprocessingInfoPtr_copy = NULL; 
   54736             :         } 
   54737             :   /* check for a valid pointer and delete if present */ 
   54738           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   54739             :   /* add assignment to result here */ 
   54740           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   54741             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   54742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   54743             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   54744           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   54745           0 :      if ( p_attributeMechanism != NULL ) 
   54746             :         { 
   54747           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   54748             :         } 
   54749             :        else 
   54750             :         { 
   54751             :           attributeMechanism_copy = NULL; 
   54752             :         } 
   54753             :   /* check for a valid pointer and delete if present */ 
   54754           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   54755             :   /* add assignment to result here */ 
   54756           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   54757             :   // Copy non-constructor parameter data member (access function): array_dimensions_copy
   54758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for array_dimensions
   54759             :   // case: toBeCopied == COPY_DATA for array_dimensions
   54760           0 :      std::map<SgSymbol*,  std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions_copy = p_array_dimensions; 
   54761           0 :      result->p_array_dimensions = array_dimensions_copy; 
   54762             :   // Copy non-constructor parameter data member (access function): dist_data_policies_copy
   54763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for dist_data_policies
   54764             :   // case: toBeCopied == COPY_DATA for dist_data_policies
   54765           0 :      std::map<SgSymbol*,  std::vector < std::pair <SgOmpClause::omp_map_dist_data_enum, SgExpression*> > > dist_data_policies_copy = p_dist_data_policies; 
   54766           0 :      result->p_dist_data_policies = dist_data_policies_copy; 
   54767             :   // case: not a listType for (using conditionalToSetParent)variables
   54768           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   54769             :              { 
   54770           0 :                variables_copy->set_parent(result); 
   54771             :              } 
   54772             : 
   54773             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54774             : 
   54775             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   54776             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   54777             :   // fixupCopy(result,help);
   54778             : 
   54779             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   54780             :   // the Sg_File_Info objects that are built for the new IR nodes.
   54781           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   54782           0 :      if (locatedNode != NULL)
   54783             :         {
   54784             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   54785           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   54786           0 :           ROSE_ASSERT(start != NULL);
   54787             : #if 0
   54788             :        // Debugging information
   54789             :           if (start->get_parent() == NULL)
   54790             :              {
   54791             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54792             :              }
   54793             : #endif
   54794           0 :           start->set_parent(locatedNode);
   54795           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   54796             : 
   54797           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   54798             : 
   54799             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   54800             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   54801             :        // ROSE_ASSERT(end != NULL);
   54802           0 :           if (end == NULL)
   54803             :              {
   54804           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   54805             :              }
   54806             :             else
   54807             :              {
   54808             : #if 0
   54809             :             // Debugging information
   54810             :                if (end->get_parent() == NULL)
   54811             :                   {
   54812             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54813             :                   }
   54814             : #endif
   54815           0 :                end->set_parent(locatedNode);
   54816           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   54817             :              }
   54818             : 
   54819           0 :           SgExpression* expression = isSgExpression(result);
   54820           0 :           if (isSgExpression(this) != NULL)
   54821             :              {
   54822           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   54823             : 
   54824             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   54825           0 :                if (operatorPosition != NULL)
   54826             :                   {
   54827             : #if 0
   54828             :                  // Debugging information
   54829             :                     if (operatorPosition->get_parent() == NULL)
   54830             :                        {
   54831             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54832             :                        }
   54833             : #endif
   54834           0 :                     operatorPosition->set_parent(expression);
   54835           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   54836             :                   }
   54837             :              }
   54838             :         }
   54839             : 
   54840             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   54841           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   54842           0 :      if (initializedName != NULL)
   54843             :         {
   54844             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   54845           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   54846           0 :           ROSE_ASSERT(start != NULL);
   54847             : #if 0
   54848             :        // Debugging information
   54849             :           if (start->get_parent() == NULL)
   54850             :              {
   54851             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54852             :              }
   54853             : #endif
   54854           0 :           start->set_parent(initializedName);
   54855           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   54856             : 
   54857             : #if 0
   54858             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   54859             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   54860             : 
   54861             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   54862             :        // ROSE_ASSERT(end != NULL);
   54863             :           if (end == NULL)
   54864             :              {
   54865             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   54866             :              }
   54867             :             else
   54868             :              {
   54869             :                if (end->get_parent() == NULL)
   54870             :                   {
   54871             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   54872             :                   }
   54873             :                end->set_parent(initializedName);
   54874             :                ROSE_ASSERT(end->get_parent() != NULL);
   54875             :              }
   54876             : #endif
   54877             :         }
   54878             : 
   54879             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   54880           0 :      help.insertCopiedNodePair(this,result);
   54881             : 
   54882             :   // printf ("End of copy SgOmpMapClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   54883             : 
   54884             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   54885             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   54886           0 :      help.decrementDepth();
   54887             : 
   54888             :   // Test if this is the root of the copy!
   54889           0 :      if (help.get_depth() == 0)
   54890             :         {
   54891             :        // This is the original calling node.
   54892             : 
   54893             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   54894             :        // printf ("Calling SgOmpMapClause::fixupCopy() (from root of AST being copied) \n");
   54895             : #if ALT_FIXUP_COPY
   54896             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   54897           0 :           fixupCopy_scopes (result,help);
   54898           0 :           fixupCopy_symbols (result,help);
   54899           0 :           fixupCopy_references (result,help);
   54900             : #else
   54901             :           fixupCopy(result,help);
   54902             : #endif
   54903             :        // Allow this to be called recursively, so accumulate the state.
   54904             :        // Also, clear the state in the SgCopyHelp object.
   54905             :        // help.clearState();
   54906             :         }
   54907             : 
   54908           0 :      return result;
   54909             :    }
   54910             : 
   54911             : 
   54912             : /* #line 54913 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   54913             : 
   54914             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54915             : 
   54916           0 : SgNode* SgOmpAllocateClause::copy ( SgCopyHelp& help) const
   54917             :    {
   54918           0 :      SgOmpAllocateClause* result = NULL;
   54919             : 
   54920             :   // printf ("Copy SgOmpAllocateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   54921             : 
   54922             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   54923             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   54924             :   // The default value of the depth is 0, so after this call the depth is 1!
   54925           0 :      help.incrementDepth();
   54926             : 
   54927             : #if 0
   54928             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   54929             :   // but it is not generally true that things can only be copied once!
   54930             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   54931             :   // AstAttribute* existingAttribute = const_cast<SgOmpAllocateClause*>(this)->attribute["copied"];
   54932             :      bool previouslyCopied = const_cast<SgOmpAllocateClause*>(this)->attribute.exists("copied");
   54933             :      if (previouslyCopied == true)
   54934             :         {
   54935             :           this->get_file_info()->display("Called from copy SgOmpAllocateClause: debug");
   54936             :         }
   54937             :      ROSE_ASSERT(previouslyCopied == false);
   54938             : 
   54939             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   54940             :      AstAttribute* newAttribute = new AstAttribute();
   54941             :      ROSE_ASSERT(newAttribute != NULL);
   54942             : 
   54943             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   54944             :      const_cast<SgOmpAllocateClause*>(this)->attribute.add("copied",newAttribute);
   54945             : #endif
   54946             : 
   54947             :   // Copy data members from base classes
   54948             :   // Copy constructor parameter data member: startOfConstruct_copy
   54949             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   54950             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   54951           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   54952           0 :      if ( p_startOfConstruct != NULL ) 
   54953             :         { 
   54954           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   54955             :         } 
   54956             :        else 
   54957             :         { 
   54958             :           startOfConstruct_copy = NULL; 
   54959             :         } 
   54960             :   // Copy constructor parameter data member: variables_copy
   54961           0 :      SgExprListExp* variables_copy; 
   54962             :   // case: not a listType for (using conditionalToCopyVariable)variables
   54963           0 :           if (get_variables() != NULL) 
   54964             :              { 
   54965           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   54966             :              } 
   54967             :             else 
   54968             :              { 
   54969             :                variables_copy = NULL; 
   54970             :              } 
   54971             :   // Copy constructor parameter data member: modifier_copy
   54972             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
   54973             :   // case: toBeCopied == COPY_DATA for modifier
   54974           0 :      SgOmpClause::omp_allocate_modifier_enum modifier_copy = p_modifier; 
   54975             :   // Copy constructor parameter data member: user_defined_modifier_copy
   54976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for user_defined_modifier
   54977             :   // case: toBeCopied == COPY_DATA for user_defined_modifier
   54978           0 :      SgExpression* user_defined_modifier_copy = p_user_defined_modifier; 
   54979             :  
   54980             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   54981             : 
   54982             :   // Build an empty copy of this object (will be filled in, but 
   54983             :   // the parent can't be set and must be set by the caller)
   54984           0 :      result = new SgOmpAllocateClause(  startOfConstruct_copy, variables_copy, modifier_copy, user_defined_modifier_copy );
   54985           0 :      ROSE_ASSERT(result != NULL);
   54986             : 
   54987             :   // Copy data members of "this" class
   54988             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   54989             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   54990             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   54991           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   54992           0 :      if ( p_endOfConstruct != NULL ) 
   54993             :         { 
   54994           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   54995             :         } 
   54996             :        else 
   54997             :         { 
   54998             :           endOfConstruct_copy = NULL; 
   54999             :         } 
   55000             :   /* check for a valid pointer and delete if present */ 
   55001           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   55002             :   /* add assignment to result here */ 
   55003           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   55004             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   55005             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   55006             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   55007           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   55008           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   55009             :         { 
   55010           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   55011             :         } 
   55012             :        else 
   55013             :         { 
   55014             :           attachedPreprocessingInfoPtr_copy = NULL; 
   55015             :         } 
   55016             :   /* check for a valid pointer and delete if present */ 
   55017           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   55018             :   /* add assignment to result here */ 
   55019           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   55020             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   55021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   55022             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   55023           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   55024           0 :      if ( p_attributeMechanism != NULL ) 
   55025             :         { 
   55026           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   55027             :         } 
   55028             :        else 
   55029             :         { 
   55030             :           attributeMechanism_copy = NULL; 
   55031             :         } 
   55032             :   /* check for a valid pointer and delete if present */ 
   55033           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   55034             :   /* add assignment to result here */ 
   55035           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   55036             :   // case: not a listType for (using conditionalToSetParent)variables
   55037           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   55038             :              { 
   55039           0 :                variables_copy->set_parent(result); 
   55040             :              } 
   55041             : 
   55042             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55043             : 
   55044             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   55045             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   55046             :   // fixupCopy(result,help);
   55047             : 
   55048             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   55049             :   // the Sg_File_Info objects that are built for the new IR nodes.
   55050           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   55051           0 :      if (locatedNode != NULL)
   55052             :         {
   55053             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   55054           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   55055           0 :           ROSE_ASSERT(start != NULL);
   55056             : #if 0
   55057             :        // Debugging information
   55058             :           if (start->get_parent() == NULL)
   55059             :              {
   55060             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55061             :              }
   55062             : #endif
   55063           0 :           start->set_parent(locatedNode);
   55064           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   55065             : 
   55066           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   55067             : 
   55068             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   55069             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   55070             :        // ROSE_ASSERT(end != NULL);
   55071           0 :           if (end == NULL)
   55072             :              {
   55073           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   55074             :              }
   55075             :             else
   55076             :              {
   55077             : #if 0
   55078             :             // Debugging information
   55079             :                if (end->get_parent() == NULL)
   55080             :                   {
   55081             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55082             :                   }
   55083             : #endif
   55084           0 :                end->set_parent(locatedNode);
   55085           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   55086             :              }
   55087             : 
   55088           0 :           SgExpression* expression = isSgExpression(result);
   55089           0 :           if (isSgExpression(this) != NULL)
   55090             :              {
   55091           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   55092             : 
   55093             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   55094           0 :                if (operatorPosition != NULL)
   55095             :                   {
   55096             : #if 0
   55097             :                  // Debugging information
   55098             :                     if (operatorPosition->get_parent() == NULL)
   55099             :                        {
   55100             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55101             :                        }
   55102             : #endif
   55103           0 :                     operatorPosition->set_parent(expression);
   55104           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   55105             :                   }
   55106             :              }
   55107             :         }
   55108             : 
   55109             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   55110           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   55111           0 :      if (initializedName != NULL)
   55112             :         {
   55113             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   55114           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   55115           0 :           ROSE_ASSERT(start != NULL);
   55116             : #if 0
   55117             :        // Debugging information
   55118             :           if (start->get_parent() == NULL)
   55119             :              {
   55120             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55121             :              }
   55122             : #endif
   55123           0 :           start->set_parent(initializedName);
   55124           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   55125             : 
   55126             : #if 0
   55127             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   55128             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   55129             : 
   55130             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   55131             :        // ROSE_ASSERT(end != NULL);
   55132             :           if (end == NULL)
   55133             :              {
   55134             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   55135             :              }
   55136             :             else
   55137             :              {
   55138             :                if (end->get_parent() == NULL)
   55139             :                   {
   55140             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55141             :                   }
   55142             :                end->set_parent(initializedName);
   55143             :                ROSE_ASSERT(end->get_parent() != NULL);
   55144             :              }
   55145             : #endif
   55146             :         }
   55147             : 
   55148             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   55149           0 :      help.insertCopiedNodePair(this,result);
   55150             : 
   55151             :   // printf ("End of copy SgOmpAllocateClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   55152             : 
   55153             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   55154             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   55155           0 :      help.decrementDepth();
   55156             : 
   55157             :   // Test if this is the root of the copy!
   55158           0 :      if (help.get_depth() == 0)
   55159             :         {
   55160             :        // This is the original calling node.
   55161             : 
   55162             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   55163             :        // printf ("Calling SgOmpAllocateClause::fixupCopy() (from root of AST being copied) \n");
   55164             : #if ALT_FIXUP_COPY
   55165             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   55166           0 :           fixupCopy_scopes (result,help);
   55167           0 :           fixupCopy_symbols (result,help);
   55168           0 :           fixupCopy_references (result,help);
   55169             : #else
   55170             :           fixupCopy(result,help);
   55171             : #endif
   55172             :        // Allow this to be called recursively, so accumulate the state.
   55173             :        // Also, clear the state in the SgCopyHelp object.
   55174             :        // help.clearState();
   55175             :         }
   55176             : 
   55177           0 :      return result;
   55178             :    }
   55179             : 
   55180             : 
   55181             : /* #line 55182 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   55182             : 
   55183             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55184             : 
   55185           0 : SgNode* SgOmpUniformClause::copy ( SgCopyHelp& help) const
   55186             :    {
   55187           0 :      SgOmpUniformClause* result = NULL;
   55188             : 
   55189             :   // printf ("Copy SgOmpUniformClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   55190             : 
   55191             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   55192             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   55193             :   // The default value of the depth is 0, so after this call the depth is 1!
   55194           0 :      help.incrementDepth();
   55195             : 
   55196             : #if 0
   55197             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   55198             :   // but it is not generally true that things can only be copied once!
   55199             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   55200             :   // AstAttribute* existingAttribute = const_cast<SgOmpUniformClause*>(this)->attribute["copied"];
   55201             :      bool previouslyCopied = const_cast<SgOmpUniformClause*>(this)->attribute.exists("copied");
   55202             :      if (previouslyCopied == true)
   55203             :         {
   55204             :           this->get_file_info()->display("Called from copy SgOmpUniformClause: debug");
   55205             :         }
   55206             :      ROSE_ASSERT(previouslyCopied == false);
   55207             : 
   55208             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   55209             :      AstAttribute* newAttribute = new AstAttribute();
   55210             :      ROSE_ASSERT(newAttribute != NULL);
   55211             : 
   55212             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   55213             :      const_cast<SgOmpUniformClause*>(this)->attribute.add("copied",newAttribute);
   55214             : #endif
   55215             : 
   55216             :   // Copy data members from base classes
   55217             :   // Copy constructor parameter data member: startOfConstruct_copy
   55218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   55219             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   55220           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   55221           0 :      if ( p_startOfConstruct != NULL ) 
   55222             :         { 
   55223           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   55224             :         } 
   55225             :        else 
   55226             :         { 
   55227             :           startOfConstruct_copy = NULL; 
   55228             :         } 
   55229             :   // Copy constructor parameter data member: variables_copy
   55230           0 :      SgExprListExp* variables_copy; 
   55231             :   // case: not a listType for (using conditionalToCopyVariable)variables
   55232           0 :           if (get_variables() != NULL) 
   55233             :              { 
   55234           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   55235             :              } 
   55236             :             else 
   55237             :              { 
   55238             :                variables_copy = NULL; 
   55239             :              } 
   55240             :  
   55241             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55242             : 
   55243             :   // Build an empty copy of this object (will be filled in, but 
   55244             :   // the parent can't be set and must be set by the caller)
   55245           0 :      result = new SgOmpUniformClause(  startOfConstruct_copy, variables_copy );
   55246           0 :      ROSE_ASSERT(result != NULL);
   55247             : 
   55248             :   // Copy data members of "this" class
   55249             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   55250             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   55251             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   55252           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   55253           0 :      if ( p_endOfConstruct != NULL ) 
   55254             :         { 
   55255           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   55256             :         } 
   55257             :        else 
   55258             :         { 
   55259             :           endOfConstruct_copy = NULL; 
   55260             :         } 
   55261             :   /* check for a valid pointer and delete if present */ 
   55262           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   55263             :   /* add assignment to result here */ 
   55264           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   55265             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   55266             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   55267             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   55268           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   55269           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   55270             :         { 
   55271           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   55272             :         } 
   55273             :        else 
   55274             :         { 
   55275             :           attachedPreprocessingInfoPtr_copy = NULL; 
   55276             :         } 
   55277             :   /* check for a valid pointer and delete if present */ 
   55278           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   55279             :   /* add assignment to result here */ 
   55280           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   55281             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   55282             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   55283             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   55284           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   55285           0 :      if ( p_attributeMechanism != NULL ) 
   55286             :         { 
   55287           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   55288             :         } 
   55289             :        else 
   55290             :         { 
   55291             :           attributeMechanism_copy = NULL; 
   55292             :         } 
   55293             :   /* check for a valid pointer and delete if present */ 
   55294           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   55295             :   /* add assignment to result here */ 
   55296           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   55297             :   // case: not a listType for (using conditionalToSetParent)variables
   55298           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   55299             :              { 
   55300           0 :                variables_copy->set_parent(result); 
   55301             :              } 
   55302             : 
   55303             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55304             : 
   55305             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   55306             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   55307             :   // fixupCopy(result,help);
   55308             : 
   55309             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   55310             :   // the Sg_File_Info objects that are built for the new IR nodes.
   55311           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   55312           0 :      if (locatedNode != NULL)
   55313             :         {
   55314             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   55315           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   55316           0 :           ROSE_ASSERT(start != NULL);
   55317             : #if 0
   55318             :        // Debugging information
   55319             :           if (start->get_parent() == NULL)
   55320             :              {
   55321             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55322             :              }
   55323             : #endif
   55324           0 :           start->set_parent(locatedNode);
   55325           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   55326             : 
   55327           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   55328             : 
   55329             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   55330             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   55331             :        // ROSE_ASSERT(end != NULL);
   55332           0 :           if (end == NULL)
   55333             :              {
   55334           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   55335             :              }
   55336             :             else
   55337             :              {
   55338             : #if 0
   55339             :             // Debugging information
   55340             :                if (end->get_parent() == NULL)
   55341             :                   {
   55342             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55343             :                   }
   55344             : #endif
   55345           0 :                end->set_parent(locatedNode);
   55346           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   55347             :              }
   55348             : 
   55349           0 :           SgExpression* expression = isSgExpression(result);
   55350           0 :           if (isSgExpression(this) != NULL)
   55351             :              {
   55352           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   55353             : 
   55354             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   55355           0 :                if (operatorPosition != NULL)
   55356             :                   {
   55357             : #if 0
   55358             :                  // Debugging information
   55359             :                     if (operatorPosition->get_parent() == NULL)
   55360             :                        {
   55361             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55362             :                        }
   55363             : #endif
   55364           0 :                     operatorPosition->set_parent(expression);
   55365           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   55366             :                   }
   55367             :              }
   55368             :         }
   55369             : 
   55370             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   55371           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   55372           0 :      if (initializedName != NULL)
   55373             :         {
   55374             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   55375           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   55376           0 :           ROSE_ASSERT(start != NULL);
   55377             : #if 0
   55378             :        // Debugging information
   55379             :           if (start->get_parent() == NULL)
   55380             :              {
   55381             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55382             :              }
   55383             : #endif
   55384           0 :           start->set_parent(initializedName);
   55385           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   55386             : 
   55387             : #if 0
   55388             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   55389             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   55390             : 
   55391             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   55392             :        // ROSE_ASSERT(end != NULL);
   55393             :           if (end == NULL)
   55394             :              {
   55395             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   55396             :              }
   55397             :             else
   55398             :              {
   55399             :                if (end->get_parent() == NULL)
   55400             :                   {
   55401             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55402             :                   }
   55403             :                end->set_parent(initializedName);
   55404             :                ROSE_ASSERT(end->get_parent() != NULL);
   55405             :              }
   55406             : #endif
   55407             :         }
   55408             : 
   55409             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   55410           0 :      help.insertCopiedNodePair(this,result);
   55411             : 
   55412             :   // printf ("End of copy SgOmpUniformClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   55413             : 
   55414             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   55415             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   55416           0 :      help.decrementDepth();
   55417             : 
   55418             :   // Test if this is the root of the copy!
   55419           0 :      if (help.get_depth() == 0)
   55420             :         {
   55421             :        // This is the original calling node.
   55422             : 
   55423             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   55424             :        // printf ("Calling SgOmpUniformClause::fixupCopy() (from root of AST being copied) \n");
   55425             : #if ALT_FIXUP_COPY
   55426             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   55427           0 :           fixupCopy_scopes (result,help);
   55428           0 :           fixupCopy_symbols (result,help);
   55429           0 :           fixupCopy_references (result,help);
   55430             : #else
   55431             :           fixupCopy(result,help);
   55432             : #endif
   55433             :        // Allow this to be called recursively, so accumulate the state.
   55434             :        // Also, clear the state in the SgCopyHelp object.
   55435             :        // help.clearState();
   55436             :         }
   55437             : 
   55438           0 :      return result;
   55439             :    }
   55440             : 
   55441             : 
   55442             : /* #line 55443 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   55443             : 
   55444             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55445             : 
   55446           0 : SgNode* SgOmpAlignedClause::copy ( SgCopyHelp& help) const
   55447             :    {
   55448           0 :      SgOmpAlignedClause* result = NULL;
   55449             : 
   55450             :   // printf ("Copy SgOmpAlignedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   55451             : 
   55452             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   55453             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   55454             :   // The default value of the depth is 0, so after this call the depth is 1!
   55455           0 :      help.incrementDepth();
   55456             : 
   55457             : #if 0
   55458             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   55459             :   // but it is not generally true that things can only be copied once!
   55460             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   55461             :   // AstAttribute* existingAttribute = const_cast<SgOmpAlignedClause*>(this)->attribute["copied"];
   55462             :      bool previouslyCopied = const_cast<SgOmpAlignedClause*>(this)->attribute.exists("copied");
   55463             :      if (previouslyCopied == true)
   55464             :         {
   55465             :           this->get_file_info()->display("Called from copy SgOmpAlignedClause: debug");
   55466             :         }
   55467             :      ROSE_ASSERT(previouslyCopied == false);
   55468             : 
   55469             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   55470             :      AstAttribute* newAttribute = new AstAttribute();
   55471             :      ROSE_ASSERT(newAttribute != NULL);
   55472             : 
   55473             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   55474             :      const_cast<SgOmpAlignedClause*>(this)->attribute.add("copied",newAttribute);
   55475             : #endif
   55476             : 
   55477             :   // Copy data members from base classes
   55478             :   // Copy constructor parameter data member: startOfConstruct_copy
   55479             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   55480             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   55481           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   55482           0 :      if ( p_startOfConstruct != NULL ) 
   55483             :         { 
   55484           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   55485             :         } 
   55486             :        else 
   55487             :         { 
   55488             :           startOfConstruct_copy = NULL; 
   55489             :         } 
   55490             :   // Copy constructor parameter data member: variables_copy
   55491           0 :      SgExprListExp* variables_copy; 
   55492             :   // case: not a listType for (using conditionalToCopyVariable)variables
   55493           0 :           if (get_variables() != NULL) 
   55494             :              { 
   55495           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   55496             :              } 
   55497             :             else 
   55498             :              { 
   55499             :                variables_copy = NULL; 
   55500             :              } 
   55501             :   // Copy constructor parameter data member: alignment_copy
   55502           0 :      SgExpression* alignment_copy; 
   55503             :   // case: not a listType for (using conditionalToCopyVariable)alignment
   55504           0 :           if (get_alignment() != NULL) 
   55505             :              { 
   55506           0 :                alignment_copy = static_cast<SgExpression*>(help.copyAst(get_alignment())); 
   55507             :              } 
   55508             :             else 
   55509             :              { 
   55510             :                alignment_copy = NULL; 
   55511             :              } 
   55512             :  
   55513             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55514             : 
   55515             :   // Build an empty copy of this object (will be filled in, but 
   55516             :   // the parent can't be set and must be set by the caller)
   55517           0 :      result = new SgOmpAlignedClause(  startOfConstruct_copy, variables_copy, alignment_copy );
   55518           0 :      ROSE_ASSERT(result != NULL);
   55519             : 
   55520             :   // Copy data members of "this" class
   55521             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   55522             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   55523             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   55524           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   55525           0 :      if ( p_endOfConstruct != NULL ) 
   55526             :         { 
   55527           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   55528             :         } 
   55529             :        else 
   55530             :         { 
   55531             :           endOfConstruct_copy = NULL; 
   55532             :         } 
   55533             :   /* check for a valid pointer and delete if present */ 
   55534           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   55535             :   /* add assignment to result here */ 
   55536           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   55537             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   55538             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   55539             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   55540           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   55541           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   55542             :         { 
   55543           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   55544             :         } 
   55545             :        else 
   55546             :         { 
   55547             :           attachedPreprocessingInfoPtr_copy = NULL; 
   55548             :         } 
   55549             :   /* check for a valid pointer and delete if present */ 
   55550           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   55551             :   /* add assignment to result here */ 
   55552           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   55553             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   55554             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   55555             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   55556           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   55557           0 :      if ( p_attributeMechanism != NULL ) 
   55558             :         { 
   55559           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   55560             :         } 
   55561             :        else 
   55562             :         { 
   55563             :           attributeMechanism_copy = NULL; 
   55564             :         } 
   55565             :   /* check for a valid pointer and delete if present */ 
   55566           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   55567             :   /* add assignment to result here */ 
   55568           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   55569             :   // case: not a listType for (using conditionalToSetParent)alignment
   55570           0 :           if ( (alignment_copy != NULL) && (alignment_copy->get_parent() == NULL) && (isSgType(alignment_copy) == NULL) ) 
   55571             :              { 
   55572           0 :                alignment_copy->set_parent(result); 
   55573             :              } 
   55574             :   // case: not a listType for (using conditionalToSetParent)variables
   55575           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   55576             :              { 
   55577           0 :                variables_copy->set_parent(result); 
   55578             :              } 
   55579             : 
   55580             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55581             : 
   55582             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   55583             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   55584             :   // fixupCopy(result,help);
   55585             : 
   55586             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   55587             :   // the Sg_File_Info objects that are built for the new IR nodes.
   55588           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   55589           0 :      if (locatedNode != NULL)
   55590             :         {
   55591             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   55592           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   55593           0 :           ROSE_ASSERT(start != NULL);
   55594             : #if 0
   55595             :        // Debugging information
   55596             :           if (start->get_parent() == NULL)
   55597             :              {
   55598             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55599             :              }
   55600             : #endif
   55601           0 :           start->set_parent(locatedNode);
   55602           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   55603             : 
   55604           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   55605             : 
   55606             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   55607             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   55608             :        // ROSE_ASSERT(end != NULL);
   55609           0 :           if (end == NULL)
   55610             :              {
   55611           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   55612             :              }
   55613             :             else
   55614             :              {
   55615             : #if 0
   55616             :             // Debugging information
   55617             :                if (end->get_parent() == NULL)
   55618             :                   {
   55619             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55620             :                   }
   55621             : #endif
   55622           0 :                end->set_parent(locatedNode);
   55623           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   55624             :              }
   55625             : 
   55626           0 :           SgExpression* expression = isSgExpression(result);
   55627           0 :           if (isSgExpression(this) != NULL)
   55628             :              {
   55629           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   55630             : 
   55631             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   55632           0 :                if (operatorPosition != NULL)
   55633             :                   {
   55634             : #if 0
   55635             :                  // Debugging information
   55636             :                     if (operatorPosition->get_parent() == NULL)
   55637             :                        {
   55638             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55639             :                        }
   55640             : #endif
   55641           0 :                     operatorPosition->set_parent(expression);
   55642           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   55643             :                   }
   55644             :              }
   55645             :         }
   55646             : 
   55647             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   55648           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   55649           0 :      if (initializedName != NULL)
   55650             :         {
   55651             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   55652           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   55653           0 :           ROSE_ASSERT(start != NULL);
   55654             : #if 0
   55655             :        // Debugging information
   55656             :           if (start->get_parent() == NULL)
   55657             :              {
   55658             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55659             :              }
   55660             : #endif
   55661           0 :           start->set_parent(initializedName);
   55662           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   55663             : 
   55664             : #if 0
   55665             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   55666             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   55667             : 
   55668             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   55669             :        // ROSE_ASSERT(end != NULL);
   55670             :           if (end == NULL)
   55671             :              {
   55672             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   55673             :              }
   55674             :             else
   55675             :              {
   55676             :                if (end->get_parent() == NULL)
   55677             :                   {
   55678             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55679             :                   }
   55680             :                end->set_parent(initializedName);
   55681             :                ROSE_ASSERT(end->get_parent() != NULL);
   55682             :              }
   55683             : #endif
   55684             :         }
   55685             : 
   55686             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   55687           0 :      help.insertCopiedNodePair(this,result);
   55688             : 
   55689             :   // printf ("End of copy SgOmpAlignedClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   55690             : 
   55691             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   55692             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   55693           0 :      help.decrementDepth();
   55694             : 
   55695             :   // Test if this is the root of the copy!
   55696           0 :      if (help.get_depth() == 0)
   55697             :         {
   55698             :        // This is the original calling node.
   55699             : 
   55700             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   55701             :        // printf ("Calling SgOmpAlignedClause::fixupCopy() (from root of AST being copied) \n");
   55702             : #if ALT_FIXUP_COPY
   55703             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   55704           0 :           fixupCopy_scopes (result,help);
   55705           0 :           fixupCopy_symbols (result,help);
   55706           0 :           fixupCopy_references (result,help);
   55707             : #else
   55708             :           fixupCopy(result,help);
   55709             : #endif
   55710             :        // Allow this to be called recursively, so accumulate the state.
   55711             :        // Also, clear the state in the SgCopyHelp object.
   55712             :        // help.clearState();
   55713             :         }
   55714             : 
   55715           0 :      return result;
   55716             :    }
   55717             : 
   55718             : 
   55719             : /* #line 55720 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   55720             : 
   55721             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55722             : 
   55723           0 : SgNode* SgOmpLinearClause::copy ( SgCopyHelp& help) const
   55724             :    {
   55725           0 :      SgOmpLinearClause* result = NULL;
   55726             : 
   55727             :   // printf ("Copy SgOmpLinearClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   55728             : 
   55729             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   55730             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   55731             :   // The default value of the depth is 0, so after this call the depth is 1!
   55732           0 :      help.incrementDepth();
   55733             : 
   55734             : #if 0
   55735             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   55736             :   // but it is not generally true that things can only be copied once!
   55737             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   55738             :   // AstAttribute* existingAttribute = const_cast<SgOmpLinearClause*>(this)->attribute["copied"];
   55739             :      bool previouslyCopied = const_cast<SgOmpLinearClause*>(this)->attribute.exists("copied");
   55740             :      if (previouslyCopied == true)
   55741             :         {
   55742             :           this->get_file_info()->display("Called from copy SgOmpLinearClause: debug");
   55743             :         }
   55744             :      ROSE_ASSERT(previouslyCopied == false);
   55745             : 
   55746             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   55747             :      AstAttribute* newAttribute = new AstAttribute();
   55748             :      ROSE_ASSERT(newAttribute != NULL);
   55749             : 
   55750             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   55751             :      const_cast<SgOmpLinearClause*>(this)->attribute.add("copied",newAttribute);
   55752             : #endif
   55753             : 
   55754             :   // Copy data members from base classes
   55755             :   // Copy constructor parameter data member: startOfConstruct_copy
   55756             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   55757             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   55758           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   55759           0 :      if ( p_startOfConstruct != NULL ) 
   55760             :         { 
   55761           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   55762             :         } 
   55763             :        else 
   55764             :         { 
   55765             :           startOfConstruct_copy = NULL; 
   55766             :         } 
   55767             :   // Copy constructor parameter data member: variables_copy
   55768           0 :      SgExprListExp* variables_copy; 
   55769             :   // case: not a listType for (using conditionalToCopyVariable)variables
   55770           0 :           if (get_variables() != NULL) 
   55771             :              { 
   55772           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   55773             :              } 
   55774             :             else 
   55775             :              { 
   55776             :                variables_copy = NULL; 
   55777             :              } 
   55778             :   // Copy constructor parameter data member: step_copy
   55779           0 :      SgExpression* step_copy; 
   55780             :   // case: not a listType for (using conditionalToCopyVariable)step
   55781           0 :           if (get_step() != NULL) 
   55782             :              { 
   55783           0 :                step_copy = static_cast<SgExpression*>(help.copyAst(get_step())); 
   55784             :              } 
   55785             :             else 
   55786             :              { 
   55787             :                step_copy = NULL; 
   55788             :              } 
   55789             :   // Copy constructor parameter data member: modifier_copy
   55790             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
   55791             :   // case: toBeCopied == COPY_DATA for modifier
   55792           0 :      SgOmpClause::omp_linear_modifier_enum modifier_copy = p_modifier; 
   55793             :  
   55794             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55795             : 
   55796             :   // Build an empty copy of this object (will be filled in, but 
   55797             :   // the parent can't be set and must be set by the caller)
   55798           0 :      result = new SgOmpLinearClause(  startOfConstruct_copy, variables_copy, step_copy, modifier_copy );
   55799           0 :      ROSE_ASSERT(result != NULL);
   55800             : 
   55801             :   // Copy data members of "this" class
   55802             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   55803             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   55804             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   55805           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   55806           0 :      if ( p_endOfConstruct != NULL ) 
   55807             :         { 
   55808           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   55809             :         } 
   55810             :        else 
   55811             :         { 
   55812             :           endOfConstruct_copy = NULL; 
   55813             :         } 
   55814             :   /* check for a valid pointer and delete if present */ 
   55815           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   55816             :   /* add assignment to result here */ 
   55817           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   55818             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   55819             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   55820             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   55821           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   55822           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   55823             :         { 
   55824           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   55825             :         } 
   55826             :        else 
   55827             :         { 
   55828             :           attachedPreprocessingInfoPtr_copy = NULL; 
   55829             :         } 
   55830             :   /* check for a valid pointer and delete if present */ 
   55831           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   55832             :   /* add assignment to result here */ 
   55833           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   55834             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   55835             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   55836             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   55837           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   55838           0 :      if ( p_attributeMechanism != NULL ) 
   55839             :         { 
   55840           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   55841             :         } 
   55842             :        else 
   55843             :         { 
   55844             :           attributeMechanism_copy = NULL; 
   55845             :         } 
   55846             :   /* check for a valid pointer and delete if present */ 
   55847           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   55848             :   /* add assignment to result here */ 
   55849           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   55850             :   // case: not a listType for (using conditionalToSetParent)step
   55851           0 :           if ( (step_copy != NULL) && (step_copy->get_parent() == NULL) && (isSgType(step_copy) == NULL) ) 
   55852             :              { 
   55853           0 :                step_copy->set_parent(result); 
   55854             :              } 
   55855             :   // case: not a listType for (using conditionalToSetParent)variables
   55856           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   55857             :              { 
   55858           0 :                variables_copy->set_parent(result); 
   55859             :              } 
   55860             : 
   55861             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   55862             : 
   55863             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   55864             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   55865             :   // fixupCopy(result,help);
   55866             : 
   55867             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   55868             :   // the Sg_File_Info objects that are built for the new IR nodes.
   55869           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   55870           0 :      if (locatedNode != NULL)
   55871             :         {
   55872             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   55873           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   55874           0 :           ROSE_ASSERT(start != NULL);
   55875             : #if 0
   55876             :        // Debugging information
   55877             :           if (start->get_parent() == NULL)
   55878             :              {
   55879             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55880             :              }
   55881             : #endif
   55882           0 :           start->set_parent(locatedNode);
   55883           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   55884             : 
   55885           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   55886             : 
   55887             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   55888             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   55889             :        // ROSE_ASSERT(end != NULL);
   55890           0 :           if (end == NULL)
   55891             :              {
   55892           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   55893             :              }
   55894             :             else
   55895             :              {
   55896             : #if 0
   55897             :             // Debugging information
   55898             :                if (end->get_parent() == NULL)
   55899             :                   {
   55900             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55901             :                   }
   55902             : #endif
   55903           0 :                end->set_parent(locatedNode);
   55904           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   55905             :              }
   55906             : 
   55907           0 :           SgExpression* expression = isSgExpression(result);
   55908           0 :           if (isSgExpression(this) != NULL)
   55909             :              {
   55910           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   55911             : 
   55912             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   55913           0 :                if (operatorPosition != NULL)
   55914             :                   {
   55915             : #if 0
   55916             :                  // Debugging information
   55917             :                     if (operatorPosition->get_parent() == NULL)
   55918             :                        {
   55919             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55920             :                        }
   55921             : #endif
   55922           0 :                     operatorPosition->set_parent(expression);
   55923           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   55924             :                   }
   55925             :              }
   55926             :         }
   55927             : 
   55928             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   55929           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   55930           0 :      if (initializedName != NULL)
   55931             :         {
   55932             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   55933           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   55934           0 :           ROSE_ASSERT(start != NULL);
   55935             : #if 0
   55936             :        // Debugging information
   55937             :           if (start->get_parent() == NULL)
   55938             :              {
   55939             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55940             :              }
   55941             : #endif
   55942           0 :           start->set_parent(initializedName);
   55943           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   55944             : 
   55945             : #if 0
   55946             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   55947             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   55948             : 
   55949             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   55950             :        // ROSE_ASSERT(end != NULL);
   55951             :           if (end == NULL)
   55952             :              {
   55953             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   55954             :              }
   55955             :             else
   55956             :              {
   55957             :                if (end->get_parent() == NULL)
   55958             :                   {
   55959             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   55960             :                   }
   55961             :                end->set_parent(initializedName);
   55962             :                ROSE_ASSERT(end->get_parent() != NULL);
   55963             :              }
   55964             : #endif
   55965             :         }
   55966             : 
   55967             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   55968           0 :      help.insertCopiedNodePair(this,result);
   55969             : 
   55970             :   // printf ("End of copy SgOmpLinearClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   55971             : 
   55972             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   55973             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   55974           0 :      help.decrementDepth();
   55975             : 
   55976             :   // Test if this is the root of the copy!
   55977           0 :      if (help.get_depth() == 0)
   55978             :         {
   55979             :        // This is the original calling node.
   55980             : 
   55981             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   55982             :        // printf ("Calling SgOmpLinearClause::fixupCopy() (from root of AST being copied) \n");
   55983             : #if ALT_FIXUP_COPY
   55984             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   55985           0 :           fixupCopy_scopes (result,help);
   55986           0 :           fixupCopy_symbols (result,help);
   55987           0 :           fixupCopy_references (result,help);
   55988             : #else
   55989             :           fixupCopy(result,help);
   55990             : #endif
   55991             :        // Allow this to be called recursively, so accumulate the state.
   55992             :        // Also, clear the state in the SgCopyHelp object.
   55993             :        // help.clearState();
   55994             :         }
   55995             : 
   55996           0 :      return result;
   55997             :    }
   55998             : 
   55999             : 
   56000             : /* #line 56001 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   56001             : 
   56002             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56003             : 
   56004           0 : SgNode* SgOmpDependClause::copy ( SgCopyHelp& help) const
   56005             :    {
   56006           0 :      SgOmpDependClause* result = NULL;
   56007             : 
   56008             :   // printf ("Copy SgOmpDependClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   56009             : 
   56010             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   56011             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   56012             :   // The default value of the depth is 0, so after this call the depth is 1!
   56013           0 :      help.incrementDepth();
   56014             : 
   56015             : #if 0
   56016             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   56017             :   // but it is not generally true that things can only be copied once!
   56018             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   56019             :   // AstAttribute* existingAttribute = const_cast<SgOmpDependClause*>(this)->attribute["copied"];
   56020             :      bool previouslyCopied = const_cast<SgOmpDependClause*>(this)->attribute.exists("copied");
   56021             :      if (previouslyCopied == true)
   56022             :         {
   56023             :           this->get_file_info()->display("Called from copy SgOmpDependClause: debug");
   56024             :         }
   56025             :      ROSE_ASSERT(previouslyCopied == false);
   56026             : 
   56027             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   56028             :      AstAttribute* newAttribute = new AstAttribute();
   56029             :      ROSE_ASSERT(newAttribute != NULL);
   56030             : 
   56031             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   56032             :      const_cast<SgOmpDependClause*>(this)->attribute.add("copied",newAttribute);
   56033             : #endif
   56034             : 
   56035             :   // Copy data members from base classes
   56036             :   // Copy constructor parameter data member: startOfConstruct_copy
   56037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   56038             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   56039           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   56040           0 :      if ( p_startOfConstruct != NULL ) 
   56041             :         { 
   56042           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   56043             :         } 
   56044             :        else 
   56045             :         { 
   56046             :           startOfConstruct_copy = NULL; 
   56047             :         } 
   56048             :   // Copy constructor parameter data member: variables_copy
   56049           0 :      SgExprListExp* variables_copy; 
   56050             :   // case: not a listType for (using conditionalToCopyVariable)variables
   56051           0 :           if (get_variables() != NULL) 
   56052             :              { 
   56053           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   56054             :              } 
   56055             :             else 
   56056             :              { 
   56057             :                variables_copy = NULL; 
   56058             :              } 
   56059             :   // Copy constructor parameter data member: depend_modifier_copy
   56060             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for depend_modifier
   56061             :   // case: toBeCopied == COPY_DATA for depend_modifier
   56062           0 :      SgOmpClause::omp_depend_modifier_enum depend_modifier_copy = p_depend_modifier; 
   56063             :   // Copy constructor parameter data member: dependence_type_copy
   56064             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for dependence_type
   56065             :   // case: toBeCopied == COPY_DATA for dependence_type
   56066           0 :      SgOmpClause::omp_dependence_type_enum dependence_type_copy = p_dependence_type; 
   56067             :  
   56068             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56069             : 
   56070             :   // Build an empty copy of this object (will be filled in, but 
   56071             :   // the parent can't be set and must be set by the caller)
   56072           0 :      result = new SgOmpDependClause(  startOfConstruct_copy, variables_copy, depend_modifier_copy, dependence_type_copy );
   56073           0 :      ROSE_ASSERT(result != NULL);
   56074             : 
   56075             :   // Copy data members of "this" class
   56076             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   56077             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   56078             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   56079           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   56080           0 :      if ( p_endOfConstruct != NULL ) 
   56081             :         { 
   56082           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   56083             :         } 
   56084             :        else 
   56085             :         { 
   56086             :           endOfConstruct_copy = NULL; 
   56087             :         } 
   56088             :   /* check for a valid pointer and delete if present */ 
   56089           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   56090             :   /* add assignment to result here */ 
   56091           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   56092             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   56093             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   56094             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   56095           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   56096           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   56097             :         { 
   56098           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   56099             :         } 
   56100             :        else 
   56101             :         { 
   56102             :           attachedPreprocessingInfoPtr_copy = NULL; 
   56103             :         } 
   56104             :   /* check for a valid pointer and delete if present */ 
   56105           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   56106             :   /* add assignment to result here */ 
   56107           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   56108             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   56109             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   56110             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   56111           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   56112           0 :      if ( p_attributeMechanism != NULL ) 
   56113             :         { 
   56114           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   56115             :         } 
   56116             :        else 
   56117             :         { 
   56118             :           attributeMechanism_copy = NULL; 
   56119             :         } 
   56120             :   /* check for a valid pointer and delete if present */ 
   56121           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   56122             :   /* add assignment to result here */ 
   56123           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   56124             :   // Copy non-constructor parameter data member (access function): iterator_copy
   56125             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for iterator
   56126             :   // case: toBeCopied == COPY_DATA for iterator
   56127           0 :      std::list<std::list<SgExpression*> > iterator_copy = p_iterator; 
   56128           0 :      result->p_iterator = iterator_copy; 
   56129             :   // Copy non-constructor parameter data member (access function): array_dimensions_copy
   56130             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for array_dimensions
   56131             :   // case: toBeCopied == COPY_DATA for array_dimensions
   56132           0 :      std::map<SgSymbol*,  std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions_copy = p_array_dimensions; 
   56133           0 :      result->p_array_dimensions = array_dimensions_copy; 
   56134             :   // Copy non-constructor parameter data member (access function): vec_copy
   56135             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for vec
   56136             :   // case: toBeCopied == COPY_DATA for vec
   56137           0 :      std::list<SgExpression*> vec_copy = p_vec; 
   56138           0 :      result->p_vec = vec_copy; 
   56139             :   // case: not a listType for (using conditionalToSetParent)variables
   56140           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   56141             :              { 
   56142           0 :                variables_copy->set_parent(result); 
   56143             :              } 
   56144             : 
   56145             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56146             : 
   56147             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   56148             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   56149             :   // fixupCopy(result,help);
   56150             : 
   56151             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   56152             :   // the Sg_File_Info objects that are built for the new IR nodes.
   56153           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   56154           0 :      if (locatedNode != NULL)
   56155             :         {
   56156             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   56157           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   56158           0 :           ROSE_ASSERT(start != NULL);
   56159             : #if 0
   56160             :        // Debugging information
   56161             :           if (start->get_parent() == NULL)
   56162             :              {
   56163             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56164             :              }
   56165             : #endif
   56166           0 :           start->set_parent(locatedNode);
   56167           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   56168             : 
   56169           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   56170             : 
   56171             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   56172             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   56173             :        // ROSE_ASSERT(end != NULL);
   56174           0 :           if (end == NULL)
   56175             :              {
   56176           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   56177             :              }
   56178             :             else
   56179             :              {
   56180             : #if 0
   56181             :             // Debugging information
   56182             :                if (end->get_parent() == NULL)
   56183             :                   {
   56184             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56185             :                   }
   56186             : #endif
   56187           0 :                end->set_parent(locatedNode);
   56188           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   56189             :              }
   56190             : 
   56191           0 :           SgExpression* expression = isSgExpression(result);
   56192           0 :           if (isSgExpression(this) != NULL)
   56193             :              {
   56194           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   56195             : 
   56196             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   56197           0 :                if (operatorPosition != NULL)
   56198             :                   {
   56199             : #if 0
   56200             :                  // Debugging information
   56201             :                     if (operatorPosition->get_parent() == NULL)
   56202             :                        {
   56203             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56204             :                        }
   56205             : #endif
   56206           0 :                     operatorPosition->set_parent(expression);
   56207           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   56208             :                   }
   56209             :              }
   56210             :         }
   56211             : 
   56212             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   56213           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   56214           0 :      if (initializedName != NULL)
   56215             :         {
   56216             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   56217           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   56218           0 :           ROSE_ASSERT(start != NULL);
   56219             : #if 0
   56220             :        // Debugging information
   56221             :           if (start->get_parent() == NULL)
   56222             :              {
   56223             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56224             :              }
   56225             : #endif
   56226           0 :           start->set_parent(initializedName);
   56227           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   56228             : 
   56229             : #if 0
   56230             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   56231             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   56232             : 
   56233             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   56234             :        // ROSE_ASSERT(end != NULL);
   56235             :           if (end == NULL)
   56236             :              {
   56237             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   56238             :              }
   56239             :             else
   56240             :              {
   56241             :                if (end->get_parent() == NULL)
   56242             :                   {
   56243             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56244             :                   }
   56245             :                end->set_parent(initializedName);
   56246             :                ROSE_ASSERT(end->get_parent() != NULL);
   56247             :              }
   56248             : #endif
   56249             :         }
   56250             : 
   56251             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   56252           0 :      help.insertCopiedNodePair(this,result);
   56253             : 
   56254             :   // printf ("End of copy SgOmpDependClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   56255             : 
   56256             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   56257             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   56258           0 :      help.decrementDepth();
   56259             : 
   56260             :   // Test if this is the root of the copy!
   56261           0 :      if (help.get_depth() == 0)
   56262             :         {
   56263             :        // This is the original calling node.
   56264             : 
   56265             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   56266             :        // printf ("Calling SgOmpDependClause::fixupCopy() (from root of AST being copied) \n");
   56267             : #if ALT_FIXUP_COPY
   56268             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   56269           0 :           fixupCopy_scopes (result,help);
   56270           0 :           fixupCopy_symbols (result,help);
   56271           0 :           fixupCopy_references (result,help);
   56272             : #else
   56273             :           fixupCopy(result,help);
   56274             : #endif
   56275             :        // Allow this to be called recursively, so accumulate the state.
   56276             :        // Also, clear the state in the SgCopyHelp object.
   56277             :        // help.clearState();
   56278             :         }
   56279             : 
   56280           0 :      return result;
   56281             :    }
   56282             : 
   56283             : 
   56284             : /* #line 56285 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   56285             : 
   56286             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56287             : 
   56288           0 : SgNode* SgOmpAffinityClause::copy ( SgCopyHelp& help) const
   56289             :    {
   56290           0 :      SgOmpAffinityClause* result = NULL;
   56291             : 
   56292             :   // printf ("Copy SgOmpAffinityClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   56293             : 
   56294             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   56295             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   56296             :   // The default value of the depth is 0, so after this call the depth is 1!
   56297           0 :      help.incrementDepth();
   56298             : 
   56299             : #if 0
   56300             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   56301             :   // but it is not generally true that things can only be copied once!
   56302             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   56303             :   // AstAttribute* existingAttribute = const_cast<SgOmpAffinityClause*>(this)->attribute["copied"];
   56304             :      bool previouslyCopied = const_cast<SgOmpAffinityClause*>(this)->attribute.exists("copied");
   56305             :      if (previouslyCopied == true)
   56306             :         {
   56307             :           this->get_file_info()->display("Called from copy SgOmpAffinityClause: debug");
   56308             :         }
   56309             :      ROSE_ASSERT(previouslyCopied == false);
   56310             : 
   56311             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   56312             :      AstAttribute* newAttribute = new AstAttribute();
   56313             :      ROSE_ASSERT(newAttribute != NULL);
   56314             : 
   56315             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   56316             :      const_cast<SgOmpAffinityClause*>(this)->attribute.add("copied",newAttribute);
   56317             : #endif
   56318             : 
   56319             :   // Copy data members from base classes
   56320             :   // Copy constructor parameter data member: startOfConstruct_copy
   56321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   56322             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   56323           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   56324           0 :      if ( p_startOfConstruct != NULL ) 
   56325             :         { 
   56326           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   56327             :         } 
   56328             :        else 
   56329             :         { 
   56330             :           startOfConstruct_copy = NULL; 
   56331             :         } 
   56332             :   // Copy constructor parameter data member: variables_copy
   56333           0 :      SgExprListExp* variables_copy; 
   56334             :   // case: not a listType for (using conditionalToCopyVariable)variables
   56335           0 :           if (get_variables() != NULL) 
   56336             :              { 
   56337           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   56338             :              } 
   56339             :             else 
   56340             :              { 
   56341             :                variables_copy = NULL; 
   56342             :              } 
   56343             :   // Copy constructor parameter data member: affinity_modifier_copy
   56344             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for affinity_modifier
   56345             :   // case: toBeCopied == COPY_DATA for affinity_modifier
   56346           0 :      SgOmpClause::omp_affinity_modifier_enum affinity_modifier_copy = p_affinity_modifier; 
   56347             :  
   56348             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56349             : 
   56350             :   // Build an empty copy of this object (will be filled in, but 
   56351             :   // the parent can't be set and must be set by the caller)
   56352           0 :      result = new SgOmpAffinityClause(  startOfConstruct_copy, variables_copy, affinity_modifier_copy );
   56353           0 :      ROSE_ASSERT(result != NULL);
   56354             : 
   56355             :   // Copy data members of "this" class
   56356             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   56357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   56358             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   56359           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   56360           0 :      if ( p_endOfConstruct != NULL ) 
   56361             :         { 
   56362           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   56363             :         } 
   56364             :        else 
   56365             :         { 
   56366             :           endOfConstruct_copy = NULL; 
   56367             :         } 
   56368             :   /* check for a valid pointer and delete if present */ 
   56369           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   56370             :   /* add assignment to result here */ 
   56371           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   56372             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   56373             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   56374             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   56375           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   56376           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   56377             :         { 
   56378           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   56379             :         } 
   56380             :        else 
   56381             :         { 
   56382             :           attachedPreprocessingInfoPtr_copy = NULL; 
   56383             :         } 
   56384             :   /* check for a valid pointer and delete if present */ 
   56385           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   56386             :   /* add assignment to result here */ 
   56387           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   56388             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   56389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   56390             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   56391           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   56392           0 :      if ( p_attributeMechanism != NULL ) 
   56393             :         { 
   56394           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   56395             :         } 
   56396             :        else 
   56397             :         { 
   56398             :           attributeMechanism_copy = NULL; 
   56399             :         } 
   56400             :   /* check for a valid pointer and delete if present */ 
   56401           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   56402             :   /* add assignment to result here */ 
   56403           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   56404             :   // Copy non-constructor parameter data member (access function): iterator_copy
   56405             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for iterator
   56406             :   // case: toBeCopied == COPY_DATA for iterator
   56407           0 :      std::list<std::list<SgExpression*> > iterator_copy = p_iterator; 
   56408           0 :      result->p_iterator = iterator_copy; 
   56409             :   // Copy non-constructor parameter data member (access function): array_dimensions_copy
   56410             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for array_dimensions
   56411             :   // case: toBeCopied == COPY_DATA for array_dimensions
   56412           0 :      std::map<SgSymbol*,  std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions_copy = p_array_dimensions; 
   56413           0 :      result->p_array_dimensions = array_dimensions_copy; 
   56414             :   // case: not a listType for (using conditionalToSetParent)variables
   56415           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   56416             :              { 
   56417           0 :                variables_copy->set_parent(result); 
   56418             :              } 
   56419             : 
   56420             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56421             : 
   56422             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   56423             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   56424             :   // fixupCopy(result,help);
   56425             : 
   56426             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   56427             :   // the Sg_File_Info objects that are built for the new IR nodes.
   56428           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   56429           0 :      if (locatedNode != NULL)
   56430             :         {
   56431             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   56432           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   56433           0 :           ROSE_ASSERT(start != NULL);
   56434             : #if 0
   56435             :        // Debugging information
   56436             :           if (start->get_parent() == NULL)
   56437             :              {
   56438             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56439             :              }
   56440             : #endif
   56441           0 :           start->set_parent(locatedNode);
   56442           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   56443             : 
   56444           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   56445             : 
   56446             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   56447             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   56448             :        // ROSE_ASSERT(end != NULL);
   56449           0 :           if (end == NULL)
   56450             :              {
   56451           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   56452             :              }
   56453             :             else
   56454             :              {
   56455             : #if 0
   56456             :             // Debugging information
   56457             :                if (end->get_parent() == NULL)
   56458             :                   {
   56459             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56460             :                   }
   56461             : #endif
   56462           0 :                end->set_parent(locatedNode);
   56463           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   56464             :              }
   56465             : 
   56466           0 :           SgExpression* expression = isSgExpression(result);
   56467           0 :           if (isSgExpression(this) != NULL)
   56468             :              {
   56469           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   56470             : 
   56471             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   56472           0 :                if (operatorPosition != NULL)
   56473             :                   {
   56474             : #if 0
   56475             :                  // Debugging information
   56476             :                     if (operatorPosition->get_parent() == NULL)
   56477             :                        {
   56478             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56479             :                        }
   56480             : #endif
   56481           0 :                     operatorPosition->set_parent(expression);
   56482           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   56483             :                   }
   56484             :              }
   56485             :         }
   56486             : 
   56487             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   56488           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   56489           0 :      if (initializedName != NULL)
   56490             :         {
   56491             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   56492           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   56493           0 :           ROSE_ASSERT(start != NULL);
   56494             : #if 0
   56495             :        // Debugging information
   56496             :           if (start->get_parent() == NULL)
   56497             :              {
   56498             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56499             :              }
   56500             : #endif
   56501           0 :           start->set_parent(initializedName);
   56502           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   56503             : 
   56504             : #if 0
   56505             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   56506             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   56507             : 
   56508             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   56509             :        // ROSE_ASSERT(end != NULL);
   56510             :           if (end == NULL)
   56511             :              {
   56512             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   56513             :              }
   56514             :             else
   56515             :              {
   56516             :                if (end->get_parent() == NULL)
   56517             :                   {
   56518             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56519             :                   }
   56520             :                end->set_parent(initializedName);
   56521             :                ROSE_ASSERT(end->get_parent() != NULL);
   56522             :              }
   56523             : #endif
   56524             :         }
   56525             : 
   56526             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   56527           0 :      help.insertCopiedNodePair(this,result);
   56528             : 
   56529             :   // printf ("End of copy SgOmpAffinityClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   56530             : 
   56531             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   56532             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   56533           0 :      help.decrementDepth();
   56534             : 
   56535             :   // Test if this is the root of the copy!
   56536           0 :      if (help.get_depth() == 0)
   56537             :         {
   56538             :        // This is the original calling node.
   56539             : 
   56540             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   56541             :        // printf ("Calling SgOmpAffinityClause::fixupCopy() (from root of AST being copied) \n");
   56542             : #if ALT_FIXUP_COPY
   56543             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   56544           0 :           fixupCopy_scopes (result,help);
   56545           0 :           fixupCopy_symbols (result,help);
   56546           0 :           fixupCopy_references (result,help);
   56547             : #else
   56548             :           fixupCopy(result,help);
   56549             : #endif
   56550             :        // Allow this to be called recursively, so accumulate the state.
   56551             :        // Also, clear the state in the SgCopyHelp object.
   56552             :        // help.clearState();
   56553             :         }
   56554             : 
   56555           0 :      return result;
   56556             :    }
   56557             : 
   56558             : 
   56559             : /* #line 56560 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   56560             : 
   56561             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56562             : 
   56563           0 : SgNode* SgOmpToClause::copy ( SgCopyHelp& help) const
   56564             :    {
   56565           0 :      SgOmpToClause* result = NULL;
   56566             : 
   56567             :   // printf ("Copy SgOmpToClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   56568             : 
   56569             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   56570             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   56571             :   // The default value of the depth is 0, so after this call the depth is 1!
   56572           0 :      help.incrementDepth();
   56573             : 
   56574             : #if 0
   56575             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   56576             :   // but it is not generally true that things can only be copied once!
   56577             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   56578             :   // AstAttribute* existingAttribute = const_cast<SgOmpToClause*>(this)->attribute["copied"];
   56579             :      bool previouslyCopied = const_cast<SgOmpToClause*>(this)->attribute.exists("copied");
   56580             :      if (previouslyCopied == true)
   56581             :         {
   56582             :           this->get_file_info()->display("Called from copy SgOmpToClause: debug");
   56583             :         }
   56584             :      ROSE_ASSERT(previouslyCopied == false);
   56585             : 
   56586             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   56587             :      AstAttribute* newAttribute = new AstAttribute();
   56588             :      ROSE_ASSERT(newAttribute != NULL);
   56589             : 
   56590             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   56591             :      const_cast<SgOmpToClause*>(this)->attribute.add("copied",newAttribute);
   56592             : #endif
   56593             : 
   56594             :   // Copy data members from base classes
   56595             :   // Copy constructor parameter data member: startOfConstruct_copy
   56596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   56597             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   56598           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   56599           0 :      if ( p_startOfConstruct != NULL ) 
   56600             :         { 
   56601           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   56602             :         } 
   56603             :        else 
   56604             :         { 
   56605             :           startOfConstruct_copy = NULL; 
   56606             :         } 
   56607             :   // Copy constructor parameter data member: variables_copy
   56608           0 :      SgExprListExp* variables_copy; 
   56609             :   // case: not a listType for (using conditionalToCopyVariable)variables
   56610           0 :           if (get_variables() != NULL) 
   56611             :              { 
   56612           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   56613             :              } 
   56614             :             else 
   56615             :              { 
   56616             :                variables_copy = NULL; 
   56617             :              } 
   56618             :   // Copy constructor parameter data member: kind_copy
   56619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for kind
   56620             :   // case: toBeCopied == COPY_DATA for kind
   56621           0 :      SgOmpClause::omp_to_kind_enum kind_copy = p_kind; 
   56622             :  
   56623             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56624             : 
   56625             :   // Build an empty copy of this object (will be filled in, but 
   56626             :   // the parent can't be set and must be set by the caller)
   56627           0 :      result = new SgOmpToClause(  startOfConstruct_copy, variables_copy, kind_copy );
   56628           0 :      ROSE_ASSERT(result != NULL);
   56629             : 
   56630             :   // Copy data members of "this" class
   56631             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   56632             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   56633             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   56634           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   56635           0 :      if ( p_endOfConstruct != NULL ) 
   56636             :         { 
   56637           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   56638             :         } 
   56639             :        else 
   56640             :         { 
   56641             :           endOfConstruct_copy = NULL; 
   56642             :         } 
   56643             :   /* check for a valid pointer and delete if present */ 
   56644           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   56645             :   /* add assignment to result here */ 
   56646           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   56647             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   56648             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   56649             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   56650           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   56651           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   56652             :         { 
   56653           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   56654             :         } 
   56655             :        else 
   56656             :         { 
   56657             :           attachedPreprocessingInfoPtr_copy = NULL; 
   56658             :         } 
   56659             :   /* check for a valid pointer and delete if present */ 
   56660           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   56661             :   /* add assignment to result here */ 
   56662           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   56663             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   56664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   56665             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   56666           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   56667           0 :      if ( p_attributeMechanism != NULL ) 
   56668             :         { 
   56669           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   56670             :         } 
   56671             :        else 
   56672             :         { 
   56673             :           attributeMechanism_copy = NULL; 
   56674             :         } 
   56675             :   /* check for a valid pointer and delete if present */ 
   56676           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   56677             :   /* add assignment to result here */ 
   56678           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   56679             :   // Copy non-constructor parameter data member (access function): mapper_identifier_copy
   56680             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mapper_identifier
   56681             :   // case: toBeCopied == COPY_DATA for mapper_identifier
   56682           0 :      SgExpression* mapper_identifier_copy = p_mapper_identifier; 
   56683           0 :      result->p_mapper_identifier = mapper_identifier_copy; 
   56684             :   // Copy non-constructor parameter data member (access function): array_dimensions_copy
   56685             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for array_dimensions
   56686             :   // case: toBeCopied == COPY_DATA for array_dimensions
   56687           0 :      std::map<SgSymbol*,  std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions_copy = p_array_dimensions; 
   56688           0 :      result->p_array_dimensions = array_dimensions_copy; 
   56689             :   // case: not a listType for (using conditionalToSetParent)variables
   56690           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   56691             :              { 
   56692           0 :                variables_copy->set_parent(result); 
   56693             :              } 
   56694             : 
   56695             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56696             : 
   56697             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   56698             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   56699             :   // fixupCopy(result,help);
   56700             : 
   56701             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   56702             :   // the Sg_File_Info objects that are built for the new IR nodes.
   56703           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   56704           0 :      if (locatedNode != NULL)
   56705             :         {
   56706             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   56707           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   56708           0 :           ROSE_ASSERT(start != NULL);
   56709             : #if 0
   56710             :        // Debugging information
   56711             :           if (start->get_parent() == NULL)
   56712             :              {
   56713             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56714             :              }
   56715             : #endif
   56716           0 :           start->set_parent(locatedNode);
   56717           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   56718             : 
   56719           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   56720             : 
   56721             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   56722             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   56723             :        // ROSE_ASSERT(end != NULL);
   56724           0 :           if (end == NULL)
   56725             :              {
   56726           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   56727             :              }
   56728             :             else
   56729             :              {
   56730             : #if 0
   56731             :             // Debugging information
   56732             :                if (end->get_parent() == NULL)
   56733             :                   {
   56734             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56735             :                   }
   56736             : #endif
   56737           0 :                end->set_parent(locatedNode);
   56738           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   56739             :              }
   56740             : 
   56741           0 :           SgExpression* expression = isSgExpression(result);
   56742           0 :           if (isSgExpression(this) != NULL)
   56743             :              {
   56744           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   56745             : 
   56746             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   56747           0 :                if (operatorPosition != NULL)
   56748             :                   {
   56749             : #if 0
   56750             :                  // Debugging information
   56751             :                     if (operatorPosition->get_parent() == NULL)
   56752             :                        {
   56753             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56754             :                        }
   56755             : #endif
   56756           0 :                     operatorPosition->set_parent(expression);
   56757           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   56758             :                   }
   56759             :              }
   56760             :         }
   56761             : 
   56762             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   56763           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   56764           0 :      if (initializedName != NULL)
   56765             :         {
   56766             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   56767           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   56768           0 :           ROSE_ASSERT(start != NULL);
   56769             : #if 0
   56770             :        // Debugging information
   56771             :           if (start->get_parent() == NULL)
   56772             :              {
   56773             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56774             :              }
   56775             : #endif
   56776           0 :           start->set_parent(initializedName);
   56777           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   56778             : 
   56779             : #if 0
   56780             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   56781             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   56782             : 
   56783             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   56784             :        // ROSE_ASSERT(end != NULL);
   56785             :           if (end == NULL)
   56786             :              {
   56787             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   56788             :              }
   56789             :             else
   56790             :              {
   56791             :                if (end->get_parent() == NULL)
   56792             :                   {
   56793             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56794             :                   }
   56795             :                end->set_parent(initializedName);
   56796             :                ROSE_ASSERT(end->get_parent() != NULL);
   56797             :              }
   56798             : #endif
   56799             :         }
   56800             : 
   56801             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   56802           0 :      help.insertCopiedNodePair(this,result);
   56803             : 
   56804             :   // printf ("End of copy SgOmpToClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   56805             : 
   56806             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   56807             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   56808           0 :      help.decrementDepth();
   56809             : 
   56810             :   // Test if this is the root of the copy!
   56811           0 :      if (help.get_depth() == 0)
   56812             :         {
   56813             :        // This is the original calling node.
   56814             : 
   56815             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   56816             :        // printf ("Calling SgOmpToClause::fixupCopy() (from root of AST being copied) \n");
   56817             : #if ALT_FIXUP_COPY
   56818             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   56819           0 :           fixupCopy_scopes (result,help);
   56820           0 :           fixupCopy_symbols (result,help);
   56821           0 :           fixupCopy_references (result,help);
   56822             : #else
   56823             :           fixupCopy(result,help);
   56824             : #endif
   56825             :        // Allow this to be called recursively, so accumulate the state.
   56826             :        // Also, clear the state in the SgCopyHelp object.
   56827             :        // help.clearState();
   56828             :         }
   56829             : 
   56830           0 :      return result;
   56831             :    }
   56832             : 
   56833             : 
   56834             : /* #line 56835 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   56835             : 
   56836             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56837             : 
   56838           0 : SgNode* SgOmpFromClause::copy ( SgCopyHelp& help) const
   56839             :    {
   56840           0 :      SgOmpFromClause* result = NULL;
   56841             : 
   56842             :   // printf ("Copy SgOmpFromClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   56843             : 
   56844             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   56845             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   56846             :   // The default value of the depth is 0, so after this call the depth is 1!
   56847           0 :      help.incrementDepth();
   56848             : 
   56849             : #if 0
   56850             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   56851             :   // but it is not generally true that things can only be copied once!
   56852             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   56853             :   // AstAttribute* existingAttribute = const_cast<SgOmpFromClause*>(this)->attribute["copied"];
   56854             :      bool previouslyCopied = const_cast<SgOmpFromClause*>(this)->attribute.exists("copied");
   56855             :      if (previouslyCopied == true)
   56856             :         {
   56857             :           this->get_file_info()->display("Called from copy SgOmpFromClause: debug");
   56858             :         }
   56859             :      ROSE_ASSERT(previouslyCopied == false);
   56860             : 
   56861             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   56862             :      AstAttribute* newAttribute = new AstAttribute();
   56863             :      ROSE_ASSERT(newAttribute != NULL);
   56864             : 
   56865             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   56866             :      const_cast<SgOmpFromClause*>(this)->attribute.add("copied",newAttribute);
   56867             : #endif
   56868             : 
   56869             :   // Copy data members from base classes
   56870             :   // Copy constructor parameter data member: startOfConstruct_copy
   56871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   56872             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   56873           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   56874           0 :      if ( p_startOfConstruct != NULL ) 
   56875             :         { 
   56876           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   56877             :         } 
   56878             :        else 
   56879             :         { 
   56880             :           startOfConstruct_copy = NULL; 
   56881             :         } 
   56882             :   // Copy constructor parameter data member: variables_copy
   56883           0 :      SgExprListExp* variables_copy; 
   56884             :   // case: not a listType for (using conditionalToCopyVariable)variables
   56885           0 :           if (get_variables() != NULL) 
   56886             :              { 
   56887           0 :                variables_copy = static_cast<SgExprListExp*>(help.copyAst(get_variables())); 
   56888             :              } 
   56889             :             else 
   56890             :              { 
   56891             :                variables_copy = NULL; 
   56892             :              } 
   56893             :   // Copy constructor parameter data member: kind_copy
   56894             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for kind
   56895             :   // case: toBeCopied == COPY_DATA for kind
   56896           0 :      SgOmpClause::omp_from_kind_enum kind_copy = p_kind; 
   56897             :  
   56898             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56899             : 
   56900             :   // Build an empty copy of this object (will be filled in, but 
   56901             :   // the parent can't be set and must be set by the caller)
   56902           0 :      result = new SgOmpFromClause(  startOfConstruct_copy, variables_copy, kind_copy );
   56903           0 :      ROSE_ASSERT(result != NULL);
   56904             : 
   56905             :   // Copy data members of "this" class
   56906             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   56907             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   56908             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   56909           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   56910           0 :      if ( p_endOfConstruct != NULL ) 
   56911             :         { 
   56912           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   56913             :         } 
   56914             :        else 
   56915             :         { 
   56916             :           endOfConstruct_copy = NULL; 
   56917             :         } 
   56918             :   /* check for a valid pointer and delete if present */ 
   56919           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   56920             :   /* add assignment to result here */ 
   56921           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   56922             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   56923             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   56924             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   56925           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   56926           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   56927             :         { 
   56928           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   56929             :         } 
   56930             :        else 
   56931             :         { 
   56932             :           attachedPreprocessingInfoPtr_copy = NULL; 
   56933             :         } 
   56934             :   /* check for a valid pointer and delete if present */ 
   56935           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   56936             :   /* add assignment to result here */ 
   56937           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   56938             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   56939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   56940             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   56941           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   56942           0 :      if ( p_attributeMechanism != NULL ) 
   56943             :         { 
   56944           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   56945             :         } 
   56946             :        else 
   56947             :         { 
   56948             :           attributeMechanism_copy = NULL; 
   56949             :         } 
   56950             :   /* check for a valid pointer and delete if present */ 
   56951           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   56952             :   /* add assignment to result here */ 
   56953           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   56954             :   // Copy non-constructor parameter data member (access function): mapper_identifier_copy
   56955             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mapper_identifier
   56956             :   // case: toBeCopied == COPY_DATA for mapper_identifier
   56957           0 :      SgExpression* mapper_identifier_copy = p_mapper_identifier; 
   56958           0 :      result->p_mapper_identifier = mapper_identifier_copy; 
   56959             :   // Copy non-constructor parameter data member (access function): array_dimensions_copy
   56960             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for array_dimensions
   56961             :   // case: toBeCopied == COPY_DATA for array_dimensions
   56962           0 :      std::map<SgSymbol*,  std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions_copy = p_array_dimensions; 
   56963           0 :      result->p_array_dimensions = array_dimensions_copy; 
   56964             :   // case: not a listType for (using conditionalToSetParent)variables
   56965           0 :           if ( (variables_copy != NULL) && (variables_copy->get_parent() == NULL) && (isSgType(variables_copy) == NULL) ) 
   56966             :              { 
   56967           0 :                variables_copy->set_parent(result); 
   56968             :              } 
   56969             : 
   56970             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   56971             : 
   56972             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   56973             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   56974             :   // fixupCopy(result,help);
   56975             : 
   56976             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   56977             :   // the Sg_File_Info objects that are built for the new IR nodes.
   56978           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   56979           0 :      if (locatedNode != NULL)
   56980             :         {
   56981             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   56982           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   56983           0 :           ROSE_ASSERT(start != NULL);
   56984             : #if 0
   56985             :        // Debugging information
   56986             :           if (start->get_parent() == NULL)
   56987             :              {
   56988             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   56989             :              }
   56990             : #endif
   56991           0 :           start->set_parent(locatedNode);
   56992           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   56993             : 
   56994           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   56995             : 
   56996             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   56997             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   56998             :        // ROSE_ASSERT(end != NULL);
   56999           0 :           if (end == NULL)
   57000             :              {
   57001           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   57002             :              }
   57003             :             else
   57004             :              {
   57005             : #if 0
   57006             :             // Debugging information
   57007             :                if (end->get_parent() == NULL)
   57008             :                   {
   57009             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57010             :                   }
   57011             : #endif
   57012           0 :                end->set_parent(locatedNode);
   57013           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   57014             :              }
   57015             : 
   57016           0 :           SgExpression* expression = isSgExpression(result);
   57017           0 :           if (isSgExpression(this) != NULL)
   57018             :              {
   57019           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   57020             : 
   57021             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   57022           0 :                if (operatorPosition != NULL)
   57023             :                   {
   57024             : #if 0
   57025             :                  // Debugging information
   57026             :                     if (operatorPosition->get_parent() == NULL)
   57027             :                        {
   57028             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57029             :                        }
   57030             : #endif
   57031           0 :                     operatorPosition->set_parent(expression);
   57032           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   57033             :                   }
   57034             :              }
   57035             :         }
   57036             : 
   57037             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   57038           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   57039           0 :      if (initializedName != NULL)
   57040             :         {
   57041             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   57042           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   57043           0 :           ROSE_ASSERT(start != NULL);
   57044             : #if 0
   57045             :        // Debugging information
   57046             :           if (start->get_parent() == NULL)
   57047             :              {
   57048             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57049             :              }
   57050             : #endif
   57051           0 :           start->set_parent(initializedName);
   57052           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   57053             : 
   57054             : #if 0
   57055             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   57056             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   57057             : 
   57058             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   57059             :        // ROSE_ASSERT(end != NULL);
   57060             :           if (end == NULL)
   57061             :              {
   57062             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   57063             :              }
   57064             :             else
   57065             :              {
   57066             :                if (end->get_parent() == NULL)
   57067             :                   {
   57068             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57069             :                   }
   57070             :                end->set_parent(initializedName);
   57071             :                ROSE_ASSERT(end->get_parent() != NULL);
   57072             :              }
   57073             : #endif
   57074             :         }
   57075             : 
   57076             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   57077           0 :      help.insertCopiedNodePair(this,result);
   57078             : 
   57079             :   // printf ("End of copy SgOmpFromClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   57080             : 
   57081             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   57082             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   57083           0 :      help.decrementDepth();
   57084             : 
   57085             :   // Test if this is the root of the copy!
   57086           0 :      if (help.get_depth() == 0)
   57087             :         {
   57088             :        // This is the original calling node.
   57089             : 
   57090             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   57091             :        // printf ("Calling SgOmpFromClause::fixupCopy() (from root of AST being copied) \n");
   57092             : #if ALT_FIXUP_COPY
   57093             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   57094           0 :           fixupCopy_scopes (result,help);
   57095           0 :           fixupCopy_symbols (result,help);
   57096           0 :           fixupCopy_references (result,help);
   57097             : #else
   57098             :           fixupCopy(result,help);
   57099             : #endif
   57100             :        // Allow this to be called recursively, so accumulate the state.
   57101             :        // Also, clear the state in the SgCopyHelp object.
   57102             :        // help.clearState();
   57103             :         }
   57104             : 
   57105           0 :      return result;
   57106             :    }
   57107             : 
   57108             : 
   57109             : /* #line 57110 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   57110             : 
   57111             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   57112             : 
   57113           0 : SgNode* SgOmpScheduleClause::copy ( SgCopyHelp& help) const
   57114             :    {
   57115           0 :      SgOmpScheduleClause* result = NULL;
   57116             : 
   57117             :   // printf ("Copy SgOmpScheduleClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   57118             : 
   57119             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   57120             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   57121             :   // The default value of the depth is 0, so after this call the depth is 1!
   57122           0 :      help.incrementDepth();
   57123             : 
   57124             : #if 0
   57125             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   57126             :   // but it is not generally true that things can only be copied once!
   57127             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   57128             :   // AstAttribute* existingAttribute = const_cast<SgOmpScheduleClause*>(this)->attribute["copied"];
   57129             :      bool previouslyCopied = const_cast<SgOmpScheduleClause*>(this)->attribute.exists("copied");
   57130             :      if (previouslyCopied == true)
   57131             :         {
   57132             :           this->get_file_info()->display("Called from copy SgOmpScheduleClause: debug");
   57133             :         }
   57134             :      ROSE_ASSERT(previouslyCopied == false);
   57135             : 
   57136             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   57137             :      AstAttribute* newAttribute = new AstAttribute();
   57138             :      ROSE_ASSERT(newAttribute != NULL);
   57139             : 
   57140             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   57141             :      const_cast<SgOmpScheduleClause*>(this)->attribute.add("copied",newAttribute);
   57142             : #endif
   57143             : 
   57144             :   // Copy data members from base classes
   57145             :   // Copy constructor parameter data member: startOfConstruct_copy
   57146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   57147             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   57148           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   57149           0 :      if ( p_startOfConstruct != NULL ) 
   57150             :         { 
   57151           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   57152             :         } 
   57153             :        else 
   57154             :         { 
   57155             :           startOfConstruct_copy = NULL; 
   57156             :         } 
   57157             :   // Copy constructor parameter data member: modifier_copy
   57158             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier
   57159             :   // case: toBeCopied == COPY_DATA for modifier
   57160           0 :      SgOmpClause::omp_schedule_modifier_enum modifier_copy = p_modifier; 
   57161             :   // Copy constructor parameter data member: modifier1_copy
   57162             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifier1
   57163             :   // case: toBeCopied == COPY_DATA for modifier1
   57164           0 :      SgOmpClause::omp_schedule_modifier_enum modifier1_copy = p_modifier1; 
   57165             :   // Copy constructor parameter data member: kind_copy
   57166             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for kind
   57167             :   // case: toBeCopied == COPY_DATA for kind
   57168           0 :      SgOmpClause::omp_schedule_kind_enum kind_copy = p_kind; 
   57169             :   // Copy constructor parameter data member: chunk_size_copy
   57170           0 :      SgExpression* chunk_size_copy; 
   57171             :   // case: not a listType for (using conditionalToCopyVariable)chunk_size
   57172           0 :           if (get_chunk_size() != NULL) 
   57173             :              { 
   57174           0 :                chunk_size_copy = static_cast<SgExpression*>(help.copyAst(get_chunk_size())); 
   57175             :              } 
   57176             :             else 
   57177             :              { 
   57178             :                chunk_size_copy = NULL; 
   57179             :              } 
   57180             :  
   57181             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   57182             : 
   57183             :   // Build an empty copy of this object (will be filled in, but 
   57184             :   // the parent can't be set and must be set by the caller)
   57185           0 :      result = new SgOmpScheduleClause(  startOfConstruct_copy, modifier_copy, modifier1_copy, kind_copy, chunk_size_copy );
   57186           0 :      ROSE_ASSERT(result != NULL);
   57187             : 
   57188             :   // Copy data members of "this" class
   57189             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   57190             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   57191             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   57192           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   57193           0 :      if ( p_endOfConstruct != NULL ) 
   57194             :         { 
   57195           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   57196             :         } 
   57197             :        else 
   57198             :         { 
   57199             :           endOfConstruct_copy = NULL; 
   57200             :         } 
   57201             :   /* check for a valid pointer and delete if present */ 
   57202           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   57203             :   /* add assignment to result here */ 
   57204           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   57205             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   57206             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   57207             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   57208           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   57209           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   57210             :         { 
   57211           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   57212             :         } 
   57213             :        else 
   57214             :         { 
   57215             :           attachedPreprocessingInfoPtr_copy = NULL; 
   57216             :         } 
   57217             :   /* check for a valid pointer and delete if present */ 
   57218           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   57219             :   /* add assignment to result here */ 
   57220           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   57221             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   57222             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   57223             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   57224           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   57225           0 :      if ( p_attributeMechanism != NULL ) 
   57226             :         { 
   57227           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   57228             :         } 
   57229             :        else 
   57230             :         { 
   57231             :           attributeMechanism_copy = NULL; 
   57232             :         } 
   57233             :   /* check for a valid pointer and delete if present */ 
   57234           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   57235             :   /* add assignment to result here */ 
   57236           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   57237             :   // case: not a listType for (using conditionalToSetParent)chunk_size
   57238           0 :           if ( (chunk_size_copy != NULL) && (chunk_size_copy->get_parent() == NULL) && (isSgType(chunk_size_copy) == NULL) ) 
   57239             :              { 
   57240           0 :                chunk_size_copy->set_parent(result); 
   57241             :              } 
   57242             : 
   57243             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   57244             : 
   57245             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   57246             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   57247             :   // fixupCopy(result,help);
   57248             : 
   57249             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   57250             :   // the Sg_File_Info objects that are built for the new IR nodes.
   57251           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   57252           0 :      if (locatedNode != NULL)
   57253             :         {
   57254             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   57255           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   57256           0 :           ROSE_ASSERT(start != NULL);
   57257             : #if 0
   57258             :        // Debugging information
   57259             :           if (start->get_parent() == NULL)
   57260             :              {
   57261             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57262             :              }
   57263             : #endif
   57264           0 :           start->set_parent(locatedNode);
   57265           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   57266             : 
   57267           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   57268             : 
   57269             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   57270             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   57271             :        // ROSE_ASSERT(end != NULL);
   57272           0 :           if (end == NULL)
   57273             :              {
   57274           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   57275             :              }
   57276             :             else
   57277             :              {
   57278             : #if 0
   57279             :             // Debugging information
   57280             :                if (end->get_parent() == NULL)
   57281             :                   {
   57282             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57283             :                   }
   57284             : #endif
   57285           0 :                end->set_parent(locatedNode);
   57286           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   57287             :              }
   57288             : 
   57289           0 :           SgExpression* expression = isSgExpression(result);
   57290           0 :           if (isSgExpression(this) != NULL)
   57291             :              {
   57292           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   57293             : 
   57294             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   57295           0 :                if (operatorPosition != NULL)
   57296             :                   {
   57297             : #if 0
   57298             :                  // Debugging information
   57299             :                     if (operatorPosition->get_parent() == NULL)
   57300             :                        {
   57301             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57302             :                        }
   57303             : #endif
   57304           0 :                     operatorPosition->set_parent(expression);
   57305           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   57306             :                   }
   57307             :              }
   57308             :         }
   57309             : 
   57310             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   57311           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   57312           0 :      if (initializedName != NULL)
   57313             :         {
   57314             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   57315           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   57316           0 :           ROSE_ASSERT(start != NULL);
   57317             : #if 0
   57318             :        // Debugging information
   57319             :           if (start->get_parent() == NULL)
   57320             :              {
   57321             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57322             :              }
   57323             : #endif
   57324           0 :           start->set_parent(initializedName);
   57325           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   57326             : 
   57327             : #if 0
   57328             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   57329             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   57330             : 
   57331             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   57332             :        // ROSE_ASSERT(end != NULL);
   57333             :           if (end == NULL)
   57334             :              {
   57335             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   57336             :              }
   57337             :             else
   57338             :              {
   57339             :                if (end->get_parent() == NULL)
   57340             :                   {
   57341             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57342             :                   }
   57343             :                end->set_parent(initializedName);
   57344             :                ROSE_ASSERT(end->get_parent() != NULL);
   57345             :              }
   57346             : #endif
   57347             :         }
   57348             : 
   57349             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   57350           0 :      help.insertCopiedNodePair(this,result);
   57351             : 
   57352             :   // printf ("End of copy SgOmpScheduleClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   57353             : 
   57354             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   57355             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   57356           0 :      help.decrementDepth();
   57357             : 
   57358             :   // Test if this is the root of the copy!
   57359           0 :      if (help.get_depth() == 0)
   57360             :         {
   57361             :        // This is the original calling node.
   57362             : 
   57363             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   57364             :        // printf ("Calling SgOmpScheduleClause::fixupCopy() (from root of AST being copied) \n");
   57365             : #if ALT_FIXUP_COPY
   57366             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   57367           0 :           fixupCopy_scopes (result,help);
   57368           0 :           fixupCopy_symbols (result,help);
   57369           0 :           fixupCopy_references (result,help);
   57370             : #else
   57371             :           fixupCopy(result,help);
   57372             : #endif
   57373             :        // Allow this to be called recursively, so accumulate the state.
   57374             :        // Also, clear the state in the SgCopyHelp object.
   57375             :        // help.clearState();
   57376             :         }
   57377             : 
   57378           0 :      return result;
   57379             :    }
   57380             : 
   57381             : 
   57382             : /* #line 57383 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   57383             : 
   57384             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   57385             : 
   57386           0 : SgNode* SgOmpMergeableClause::copy ( SgCopyHelp& help) const
   57387             :    {
   57388           0 :      SgOmpMergeableClause* result = NULL;
   57389             : 
   57390             :   // printf ("Copy SgOmpMergeableClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   57391             : 
   57392             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   57393             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   57394             :   // The default value of the depth is 0, so after this call the depth is 1!
   57395           0 :      help.incrementDepth();
   57396             : 
   57397             : #if 0
   57398             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   57399             :   // but it is not generally true that things can only be copied once!
   57400             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   57401             :   // AstAttribute* existingAttribute = const_cast<SgOmpMergeableClause*>(this)->attribute["copied"];
   57402             :      bool previouslyCopied = const_cast<SgOmpMergeableClause*>(this)->attribute.exists("copied");
   57403             :      if (previouslyCopied == true)
   57404             :         {
   57405             :           this->get_file_info()->display("Called from copy SgOmpMergeableClause: debug");
   57406             :         }
   57407             :      ROSE_ASSERT(previouslyCopied == false);
   57408             : 
   57409             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   57410             :      AstAttribute* newAttribute = new AstAttribute();
   57411             :      ROSE_ASSERT(newAttribute != NULL);
   57412             : 
   57413             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   57414             :      const_cast<SgOmpMergeableClause*>(this)->attribute.add("copied",newAttribute);
   57415             : #endif
   57416             : 
   57417             :   // Copy data members from base classes
   57418             :   // Copy constructor parameter data member: startOfConstruct_copy
   57419             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   57420             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   57421           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   57422           0 :      if ( p_startOfConstruct != NULL ) 
   57423             :         { 
   57424           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   57425             :         } 
   57426             :        else 
   57427             :         { 
   57428             :           startOfConstruct_copy = NULL; 
   57429             :         } 
   57430             :  
   57431             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   57432             : 
   57433             :   // Build an empty copy of this object (will be filled in, but 
   57434             :   // the parent can't be set and must be set by the caller)
   57435           0 :      result = new SgOmpMergeableClause(  startOfConstruct_copy );
   57436           0 :      ROSE_ASSERT(result != NULL);
   57437             : 
   57438             :   // Copy data members of "this" class
   57439             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   57440             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   57441             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   57442           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   57443           0 :      if ( p_endOfConstruct != NULL ) 
   57444             :         { 
   57445           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   57446             :         } 
   57447             :        else 
   57448             :         { 
   57449             :           endOfConstruct_copy = NULL; 
   57450             :         } 
   57451             :   /* check for a valid pointer and delete if present */ 
   57452           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   57453             :   /* add assignment to result here */ 
   57454           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   57455             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   57456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   57457             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   57458           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   57459           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   57460             :         { 
   57461           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   57462             :         } 
   57463             :        else 
   57464             :         { 
   57465             :           attachedPreprocessingInfoPtr_copy = NULL; 
   57466             :         } 
   57467             :   /* check for a valid pointer and delete if present */ 
   57468           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   57469             :   /* add assignment to result here */ 
   57470           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   57471             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   57472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   57473             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   57474           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   57475           0 :      if ( p_attributeMechanism != NULL ) 
   57476             :         { 
   57477           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   57478             :         } 
   57479             :        else 
   57480             :         { 
   57481             :           attributeMechanism_copy = NULL; 
   57482             :         } 
   57483             :   /* check for a valid pointer and delete if present */ 
   57484           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   57485             :   /* add assignment to result here */ 
   57486           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   57487             : 
   57488             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   57489             : 
   57490             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   57491             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   57492             :   // fixupCopy(result,help);
   57493             : 
   57494             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   57495             :   // the Sg_File_Info objects that are built for the new IR nodes.
   57496           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   57497           0 :      if (locatedNode != NULL)
   57498             :         {
   57499             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   57500           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   57501           0 :           ROSE_ASSERT(start != NULL);
   57502             : #if 0
   57503             :        // Debugging information
   57504             :           if (start->get_parent() == NULL)
   57505             :              {
   57506             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57507             :              }
   57508             : #endif
   57509           0 :           start->set_parent(locatedNode);
   57510           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   57511             : 
   57512           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   57513             : 
   57514             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   57515             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   57516             :        // ROSE_ASSERT(end != NULL);
   57517           0 :           if (end == NULL)
   57518             :              {
   57519           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   57520             :              }
   57521             :             else
   57522             :              {
   57523             : #if 0
   57524             :             // Debugging information
   57525             :                if (end->get_parent() == NULL)
   57526             :                   {
   57527             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57528             :                   }
   57529             : #endif
   57530           0 :                end->set_parent(locatedNode);
   57531           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   57532             :              }
   57533             : 
   57534           0 :           SgExpression* expression = isSgExpression(result);
   57535           0 :           if (isSgExpression(this) != NULL)
   57536             :              {
   57537           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   57538             : 
   57539             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   57540           0 :                if (operatorPosition != NULL)
   57541             :                   {
   57542             : #if 0
   57543             :                  // Debugging information
   57544             :                     if (operatorPosition->get_parent() == NULL)
   57545             :                        {
   57546             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57547             :                        }
   57548             : #endif
   57549           0 :                     operatorPosition->set_parent(expression);
   57550           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   57551             :                   }
   57552             :              }
   57553             :         }
   57554             : 
   57555             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   57556           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   57557           0 :      if (initializedName != NULL)
   57558             :         {
   57559             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   57560           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   57561           0 :           ROSE_ASSERT(start != NULL);
   57562             : #if 0
   57563             :        // Debugging information
   57564             :           if (start->get_parent() == NULL)
   57565             :              {
   57566             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57567             :              }
   57568             : #endif
   57569           0 :           start->set_parent(initializedName);
   57570           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   57571             : 
   57572             : #if 0
   57573             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   57574             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   57575             : 
   57576             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   57577             :        // ROSE_ASSERT(end != NULL);
   57578             :           if (end == NULL)
   57579             :              {
   57580             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   57581             :              }
   57582             :             else
   57583             :              {
   57584             :                if (end->get_parent() == NULL)
   57585             :                   {
   57586             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57587             :                   }
   57588             :                end->set_parent(initializedName);
   57589             :                ROSE_ASSERT(end->get_parent() != NULL);
   57590             :              }
   57591             : #endif
   57592             :         }
   57593             : 
   57594             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   57595           0 :      help.insertCopiedNodePair(this,result);
   57596             : 
   57597             :   // printf ("End of copy SgOmpMergeableClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   57598             : 
   57599             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   57600             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   57601           0 :      help.decrementDepth();
   57602             : 
   57603             :   // Test if this is the root of the copy!
   57604           0 :      if (help.get_depth() == 0)
   57605             :         {
   57606             :        // This is the original calling node.
   57607             : 
   57608             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   57609             :        // printf ("Calling SgOmpMergeableClause::fixupCopy() (from root of AST being copied) \n");
   57610             : #if ALT_FIXUP_COPY
   57611             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   57612           0 :           fixupCopy_scopes (result,help);
   57613           0 :           fixupCopy_symbols (result,help);
   57614           0 :           fixupCopy_references (result,help);
   57615             : #else
   57616             :           fixupCopy(result,help);
   57617             : #endif
   57618             :        // Allow this to be called recursively, so accumulate the state.
   57619             :        // Also, clear the state in the SgCopyHelp object.
   57620             :        // help.clearState();
   57621             :         }
   57622             : 
   57623           0 :      return result;
   57624             :    }
   57625             : 
   57626             : 
   57627             : /* #line 57628 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   57628             : 
   57629             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   57630             : 
   57631           0 : SgNode* SgOmpWhenClause::copy ( SgCopyHelp& help) const
   57632             :    {
   57633           0 :      SgOmpWhenClause* result = NULL;
   57634             : 
   57635             :   // printf ("Copy SgOmpWhenClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   57636             : 
   57637             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   57638             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   57639             :   // The default value of the depth is 0, so after this call the depth is 1!
   57640           0 :      help.incrementDepth();
   57641             : 
   57642             : #if 0
   57643             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   57644             :   // but it is not generally true that things can only be copied once!
   57645             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   57646             :   // AstAttribute* existingAttribute = const_cast<SgOmpWhenClause*>(this)->attribute["copied"];
   57647             :      bool previouslyCopied = const_cast<SgOmpWhenClause*>(this)->attribute.exists("copied");
   57648             :      if (previouslyCopied == true)
   57649             :         {
   57650             :           this->get_file_info()->display("Called from copy SgOmpWhenClause: debug");
   57651             :         }
   57652             :      ROSE_ASSERT(previouslyCopied == false);
   57653             : 
   57654             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   57655             :      AstAttribute* newAttribute = new AstAttribute();
   57656             :      ROSE_ASSERT(newAttribute != NULL);
   57657             : 
   57658             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   57659             :      const_cast<SgOmpWhenClause*>(this)->attribute.add("copied",newAttribute);
   57660             : #endif
   57661             : 
   57662             :   // Copy data members from base classes
   57663             :   // Copy constructor parameter data member: startOfConstruct_copy
   57664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   57665             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   57666           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   57667           0 :      if ( p_startOfConstruct != NULL ) 
   57668             :         { 
   57669           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   57670             :         } 
   57671             :        else 
   57672             :         { 
   57673             :           startOfConstruct_copy = NULL; 
   57674             :         } 
   57675             :   // Copy constructor parameter data member: user_condition_copy
   57676           0 :      SgExpression* user_condition_copy; 
   57677             :   // case: not a listType for (using conditionalToCopyVariable)user_condition
   57678           0 :           if (get_user_condition() != NULL) 
   57679             :              { 
   57680           0 :                user_condition_copy = static_cast<SgExpression*>(help.copyAst(get_user_condition())); 
   57681             :              } 
   57682             :             else 
   57683             :              { 
   57684             :                user_condition_copy = NULL; 
   57685             :              } 
   57686             :   // Copy constructor parameter data member: user_condition_score_copy
   57687           0 :      SgExpression* user_condition_score_copy; 
   57688             :   // case: not a listType for (using conditionalToCopyVariable)user_condition_score
   57689           0 :           if (get_user_condition_score() != NULL) 
   57690             :              { 
   57691           0 :                user_condition_score_copy = static_cast<SgExpression*>(help.copyAst(get_user_condition_score())); 
   57692             :              } 
   57693             :             else 
   57694             :              { 
   57695             :                user_condition_score_copy = NULL; 
   57696             :              } 
   57697             :   // Copy constructor parameter data member: device_arch_copy
   57698           0 :      SgExpression* device_arch_copy; 
   57699             :   // case: not a listType for (using conditionalToCopyVariable)device_arch
   57700           0 :           if (get_device_arch() != NULL) 
   57701             :              { 
   57702           0 :                device_arch_copy = static_cast<SgExpression*>(help.copyAst(get_device_arch())); 
   57703             :              } 
   57704             :             else 
   57705             :              { 
   57706             :                device_arch_copy = NULL; 
   57707             :              } 
   57708             :   // Copy constructor parameter data member: device_isa_copy
   57709           0 :      SgExpression* device_isa_copy; 
   57710             :   // case: not a listType for (using conditionalToCopyVariable)device_isa
   57711           0 :           if (get_device_isa() != NULL) 
   57712             :              { 
   57713           0 :                device_isa_copy = static_cast<SgExpression*>(help.copyAst(get_device_isa())); 
   57714             :              } 
   57715             :             else 
   57716             :              { 
   57717             :                device_isa_copy = NULL; 
   57718             :              } 
   57719             :   // Copy constructor parameter data member: device_kind_copy
   57720             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for device_kind
   57721             :   // case: toBeCopied == COPY_DATA for device_kind
   57722           0 :      SgOmpClause::omp_when_context_kind_enum device_kind_copy = p_device_kind; 
   57723             :   // Copy constructor parameter data member: implementation_vendor_copy
   57724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for implementation_vendor
   57725             :   // case: toBeCopied == COPY_DATA for implementation_vendor
   57726           0 :      SgOmpClause::omp_when_context_vendor_enum implementation_vendor_copy = p_implementation_vendor; 
   57727             :   // Copy constructor parameter data member: implementation_user_defined_copy
   57728           0 :      SgExpression* implementation_user_defined_copy; 
   57729             :   // case: not a listType for (using conditionalToCopyVariable)implementation_user_defined
   57730           0 :           if (get_implementation_user_defined() != NULL) 
   57731             :              { 
   57732           0 :                implementation_user_defined_copy = static_cast<SgExpression*>(help.copyAst(get_implementation_user_defined())); 
   57733             :              } 
   57734             :             else 
   57735             :              { 
   57736             :                implementation_user_defined_copy = NULL; 
   57737             :              } 
   57738             :   // Copy constructor parameter data member: implementation_extension_copy
   57739           0 :      SgExpression* implementation_extension_copy; 
   57740             :   // case: not a listType for (using conditionalToCopyVariable)implementation_extension
   57741           0 :           if (get_implementation_extension() != NULL) 
   57742             :              { 
   57743           0 :                implementation_extension_copy = static_cast<SgExpression*>(help.copyAst(get_implementation_extension())); 
   57744             :              } 
   57745             :             else 
   57746             :              { 
   57747             :                implementation_extension_copy = NULL; 
   57748             :              } 
   57749             :   // Copy constructor parameter data member: variant_directive_copy
   57750           0 :      SgStatement* variant_directive_copy; 
   57751             :   // case: not a listType for (using conditionalToCopyVariable)variant_directive
   57752           0 :           if (get_variant_directive() != NULL) 
   57753             :              { 
   57754           0 :                variant_directive_copy = static_cast<SgStatement*>(help.copyAst(get_variant_directive())); 
   57755             :              } 
   57756             :             else 
   57757             :              { 
   57758             :                variant_directive_copy = NULL; 
   57759             :              } 
   57760             :  
   57761             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   57762             : 
   57763             :   // Build an empty copy of this object (will be filled in, but 
   57764             :   // the parent can't be set and must be set by the caller)
   57765           0 :      result = new SgOmpWhenClause(  startOfConstruct_copy, user_condition_copy, user_condition_score_copy, device_arch_copy, device_isa_copy, device_kind_copy, implementation_vendor_copy, implementation_user_defined_copy, implementation_extension_copy, variant_directive_copy );
   57766           0 :      ROSE_ASSERT(result != NULL);
   57767             : 
   57768             :   // Copy data members of "this" class
   57769             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   57770             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   57771             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   57772           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   57773           0 :      if ( p_endOfConstruct != NULL ) 
   57774             :         { 
   57775           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   57776             :         } 
   57777             :        else 
   57778             :         { 
   57779             :           endOfConstruct_copy = NULL; 
   57780             :         } 
   57781             :   /* check for a valid pointer and delete if present */ 
   57782           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   57783             :   /* add assignment to result here */ 
   57784           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   57785             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   57786             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   57787             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   57788           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   57789           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   57790             :         { 
   57791           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   57792             :         } 
   57793             :        else 
   57794             :         { 
   57795             :           attachedPreprocessingInfoPtr_copy = NULL; 
   57796             :         } 
   57797             :   /* check for a valid pointer and delete if present */ 
   57798           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   57799             :   /* add assignment to result here */ 
   57800           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   57801             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   57802             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   57803             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   57804           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   57805           0 :      if ( p_attributeMechanism != NULL ) 
   57806             :         { 
   57807           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   57808             :         } 
   57809             :        else 
   57810             :         { 
   57811             :           attributeMechanism_copy = NULL; 
   57812             :         } 
   57813             :   /* check for a valid pointer and delete if present */ 
   57814           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   57815             :   /* add assignment to result here */ 
   57816           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   57817             :   // Copy non-constructor parameter data member (access function): construct_directives_copy
   57818             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for construct_directives
   57819             :   // case: toBeCopied == COPY_DATA for construct_directives
   57820           0 :      std::list<SgStatement*> construct_directives_copy = p_construct_directives; 
   57821           0 :      result->p_construct_directives = construct_directives_copy; 
   57822             :   // case: not a listType for (using conditionalToSetParent)user_condition
   57823           0 :           if ( (user_condition_copy != NULL) && (user_condition_copy->get_parent() == NULL) && (isSgType(user_condition_copy) == NULL) ) 
   57824             :              { 
   57825           0 :                user_condition_copy->set_parent(result); 
   57826             :              } 
   57827             :   // case: not a listType for (using conditionalToSetParent)user_condition_score
   57828           0 :           if ( (user_condition_score_copy != NULL) && (user_condition_score_copy->get_parent() == NULL) && (isSgType(user_condition_score_copy) == NULL) ) 
   57829             :              { 
   57830           0 :                user_condition_score_copy->set_parent(result); 
   57831             :              } 
   57832             :   // case: not a listType for (using conditionalToSetParent)device_arch
   57833           0 :           if ( (device_arch_copy != NULL) && (device_arch_copy->get_parent() == NULL) && (isSgType(device_arch_copy) == NULL) ) 
   57834             :              { 
   57835           0 :                device_arch_copy->set_parent(result); 
   57836             :              } 
   57837             :   // case: not a listType for (using conditionalToSetParent)device_isa
   57838           0 :           if ( (device_isa_copy != NULL) && (device_isa_copy->get_parent() == NULL) && (isSgType(device_isa_copy) == NULL) ) 
   57839             :              { 
   57840           0 :                device_isa_copy->set_parent(result); 
   57841             :              } 
   57842             :   // case: not a listType for (using conditionalToSetParent)implementation_user_defined
   57843           0 :           if ( (implementation_user_defined_copy != NULL) && (implementation_user_defined_copy->get_parent() == NULL) && (isSgType(implementation_user_defined_copy) == NULL) ) 
   57844             :              { 
   57845           0 :                implementation_user_defined_copy->set_parent(result); 
   57846             :              } 
   57847             :   // case: not a listType for (using conditionalToSetParent)implementation_extension
   57848           0 :           if ( (implementation_extension_copy != NULL) && (implementation_extension_copy->get_parent() == NULL) && (isSgType(implementation_extension_copy) == NULL) ) 
   57849             :              { 
   57850           0 :                implementation_extension_copy->set_parent(result); 
   57851             :              } 
   57852             :   // case: not a listType for (using conditionalToSetParent)variant_directive
   57853           0 :           if ( (variant_directive_copy != NULL) && (variant_directive_copy->get_parent() == NULL) && (isSgType(variant_directive_copy) == NULL) ) 
   57854             :              { 
   57855           0 :                variant_directive_copy->set_parent(result); 
   57856             :              } 
   57857             : 
   57858             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   57859             : 
   57860             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   57861             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   57862             :   // fixupCopy(result,help);
   57863             : 
   57864             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   57865             :   // the Sg_File_Info objects that are built for the new IR nodes.
   57866           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   57867           0 :      if (locatedNode != NULL)
   57868             :         {
   57869             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   57870           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   57871           0 :           ROSE_ASSERT(start != NULL);
   57872             : #if 0
   57873             :        // Debugging information
   57874             :           if (start->get_parent() == NULL)
   57875             :              {
   57876             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57877             :              }
   57878             : #endif
   57879           0 :           start->set_parent(locatedNode);
   57880           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   57881             : 
   57882           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   57883             : 
   57884             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   57885             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   57886             :        // ROSE_ASSERT(end != NULL);
   57887           0 :           if (end == NULL)
   57888             :              {
   57889           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   57890             :              }
   57891             :             else
   57892             :              {
   57893             : #if 0
   57894             :             // Debugging information
   57895             :                if (end->get_parent() == NULL)
   57896             :                   {
   57897             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57898             :                   }
   57899             : #endif
   57900           0 :                end->set_parent(locatedNode);
   57901           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   57902             :              }
   57903             : 
   57904           0 :           SgExpression* expression = isSgExpression(result);
   57905           0 :           if (isSgExpression(this) != NULL)
   57906             :              {
   57907           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   57908             : 
   57909             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   57910           0 :                if (operatorPosition != NULL)
   57911             :                   {
   57912             : #if 0
   57913             :                  // Debugging information
   57914             :                     if (operatorPosition->get_parent() == NULL)
   57915             :                        {
   57916             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57917             :                        }
   57918             : #endif
   57919           0 :                     operatorPosition->set_parent(expression);
   57920           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   57921             :                   }
   57922             :              }
   57923             :         }
   57924             : 
   57925             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   57926           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   57927           0 :      if (initializedName != NULL)
   57928             :         {
   57929             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   57930           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   57931           0 :           ROSE_ASSERT(start != NULL);
   57932             : #if 0
   57933             :        // Debugging information
   57934             :           if (start->get_parent() == NULL)
   57935             :              {
   57936             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57937             :              }
   57938             : #endif
   57939           0 :           start->set_parent(initializedName);
   57940           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   57941             : 
   57942             : #if 0
   57943             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   57944             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   57945             : 
   57946             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   57947             :        // ROSE_ASSERT(end != NULL);
   57948             :           if (end == NULL)
   57949             :              {
   57950             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   57951             :              }
   57952             :             else
   57953             :              {
   57954             :                if (end->get_parent() == NULL)
   57955             :                   {
   57956             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   57957             :                   }
   57958             :                end->set_parent(initializedName);
   57959             :                ROSE_ASSERT(end->get_parent() != NULL);
   57960             :              }
   57961             : #endif
   57962             :         }
   57963             : 
   57964             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   57965           0 :      help.insertCopiedNodePair(this,result);
   57966             : 
   57967             :   // printf ("End of copy SgOmpWhenClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   57968             : 
   57969             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   57970             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   57971           0 :      help.decrementDepth();
   57972             : 
   57973             :   // Test if this is the root of the copy!
   57974           0 :      if (help.get_depth() == 0)
   57975             :         {
   57976             :        // This is the original calling node.
   57977             : 
   57978             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   57979             :        // printf ("Calling SgOmpWhenClause::fixupCopy() (from root of AST being copied) \n");
   57980             : #if ALT_FIXUP_COPY
   57981             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   57982           0 :           fixupCopy_scopes (result,help);
   57983           0 :           fixupCopy_symbols (result,help);
   57984           0 :           fixupCopy_references (result,help);
   57985             : #else
   57986             :           fixupCopy(result,help);
   57987             : #endif
   57988             :        // Allow this to be called recursively, so accumulate the state.
   57989             :        // Also, clear the state in the SgCopyHelp object.
   57990             :        // help.clearState();
   57991             :         }
   57992             : 
   57993           0 :      return result;
   57994             :    }
   57995             : 
   57996             : 
   57997             : /* #line 57998 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   57998             : 
   57999             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58000             : 
   58001           0 : SgNode* SgOmpUsesAllocatorsClause::copy ( SgCopyHelp& help) const
   58002             :    {
   58003           0 :      SgOmpUsesAllocatorsClause* result = NULL;
   58004             : 
   58005             :   // printf ("Copy SgOmpUsesAllocatorsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   58006             : 
   58007             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   58008             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   58009             :   // The default value of the depth is 0, so after this call the depth is 1!
   58010           0 :      help.incrementDepth();
   58011             : 
   58012             : #if 0
   58013             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   58014             :   // but it is not generally true that things can only be copied once!
   58015             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   58016             :   // AstAttribute* existingAttribute = const_cast<SgOmpUsesAllocatorsClause*>(this)->attribute["copied"];
   58017             :      bool previouslyCopied = const_cast<SgOmpUsesAllocatorsClause*>(this)->attribute.exists("copied");
   58018             :      if (previouslyCopied == true)
   58019             :         {
   58020             :           this->get_file_info()->display("Called from copy SgOmpUsesAllocatorsClause: debug");
   58021             :         }
   58022             :      ROSE_ASSERT(previouslyCopied == false);
   58023             : 
   58024             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   58025             :      AstAttribute* newAttribute = new AstAttribute();
   58026             :      ROSE_ASSERT(newAttribute != NULL);
   58027             : 
   58028             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   58029             :      const_cast<SgOmpUsesAllocatorsClause*>(this)->attribute.add("copied",newAttribute);
   58030             : #endif
   58031             : 
   58032             :   // Copy data members from base classes
   58033             :   // Copy constructor parameter data member: startOfConstruct_copy
   58034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   58035             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   58036           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   58037           0 :      if ( p_startOfConstruct != NULL ) 
   58038             :         { 
   58039           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   58040             :         } 
   58041             :        else 
   58042             :         { 
   58043             :           startOfConstruct_copy = NULL; 
   58044             :         } 
   58045             :  
   58046             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58047             : 
   58048             :   // Build an empty copy of this object (will be filled in, but 
   58049             :   // the parent can't be set and must be set by the caller)
   58050           0 :      result = new SgOmpUsesAllocatorsClause(  startOfConstruct_copy );
   58051           0 :      ROSE_ASSERT(result != NULL);
   58052             : 
   58053             :   // Copy data members of "this" class
   58054             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   58055             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   58056             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   58057           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   58058           0 :      if ( p_endOfConstruct != NULL ) 
   58059             :         { 
   58060           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   58061             :         } 
   58062             :        else 
   58063             :         { 
   58064             :           endOfConstruct_copy = NULL; 
   58065             :         } 
   58066             :   /* check for a valid pointer and delete if present */ 
   58067           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   58068             :   /* add assignment to result here */ 
   58069           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   58070             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   58071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   58072             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   58073           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   58074           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   58075             :         { 
   58076           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   58077             :         } 
   58078             :        else 
   58079             :         { 
   58080             :           attachedPreprocessingInfoPtr_copy = NULL; 
   58081             :         } 
   58082             :   /* check for a valid pointer and delete if present */ 
   58083           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   58084             :   /* add assignment to result here */ 
   58085           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   58086             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   58087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   58088             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   58089           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   58090           0 :      if ( p_attributeMechanism != NULL ) 
   58091             :         { 
   58092           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   58093             :         } 
   58094             :        else 
   58095             :         { 
   58096             :           attributeMechanism_copy = NULL; 
   58097             :         } 
   58098             :   /* check for a valid pointer and delete if present */ 
   58099           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   58100             :   /* add assignment to result here */ 
   58101           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   58102             :   // Copy non-constructor parameter data member (access function): uses_allocators_defination_copy
   58103             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for uses_allocators_defination
   58104             :   // case: toBeCopied == COPY_DATA for uses_allocators_defination
   58105           0 :      std::list<SgOmpUsesAllocatorsDefination*> uses_allocators_defination_copy = p_uses_allocators_defination; 
   58106           0 :      result->p_uses_allocators_defination = uses_allocators_defination_copy; 
   58107             : 
   58108             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58109             : 
   58110             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   58111             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   58112             :   // fixupCopy(result,help);
   58113             : 
   58114             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   58115             :   // the Sg_File_Info objects that are built for the new IR nodes.
   58116           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   58117           0 :      if (locatedNode != NULL)
   58118             :         {
   58119             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   58120           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   58121           0 :           ROSE_ASSERT(start != NULL);
   58122             : #if 0
   58123             :        // Debugging information
   58124             :           if (start->get_parent() == NULL)
   58125             :              {
   58126             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58127             :              }
   58128             : #endif
   58129           0 :           start->set_parent(locatedNode);
   58130           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   58131             : 
   58132           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   58133             : 
   58134             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   58135             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   58136             :        // ROSE_ASSERT(end != NULL);
   58137           0 :           if (end == NULL)
   58138             :              {
   58139           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   58140             :              }
   58141             :             else
   58142             :              {
   58143             : #if 0
   58144             :             // Debugging information
   58145             :                if (end->get_parent() == NULL)
   58146             :                   {
   58147             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58148             :                   }
   58149             : #endif
   58150           0 :                end->set_parent(locatedNode);
   58151           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   58152             :              }
   58153             : 
   58154           0 :           SgExpression* expression = isSgExpression(result);
   58155           0 :           if (isSgExpression(this) != NULL)
   58156             :              {
   58157           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   58158             : 
   58159             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   58160           0 :                if (operatorPosition != NULL)
   58161             :                   {
   58162             : #if 0
   58163             :                  // Debugging information
   58164             :                     if (operatorPosition->get_parent() == NULL)
   58165             :                        {
   58166             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58167             :                        }
   58168             : #endif
   58169           0 :                     operatorPosition->set_parent(expression);
   58170           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   58171             :                   }
   58172             :              }
   58173             :         }
   58174             : 
   58175             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   58176           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   58177           0 :      if (initializedName != NULL)
   58178             :         {
   58179             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   58180           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   58181           0 :           ROSE_ASSERT(start != NULL);
   58182             : #if 0
   58183             :        // Debugging information
   58184             :           if (start->get_parent() == NULL)
   58185             :              {
   58186             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58187             :              }
   58188             : #endif
   58189           0 :           start->set_parent(initializedName);
   58190           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   58191             : 
   58192             : #if 0
   58193             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   58194             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   58195             : 
   58196             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   58197             :        // ROSE_ASSERT(end != NULL);
   58198             :           if (end == NULL)
   58199             :              {
   58200             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   58201             :              }
   58202             :             else
   58203             :              {
   58204             :                if (end->get_parent() == NULL)
   58205             :                   {
   58206             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58207             :                   }
   58208             :                end->set_parent(initializedName);
   58209             :                ROSE_ASSERT(end->get_parent() != NULL);
   58210             :              }
   58211             : #endif
   58212             :         }
   58213             : 
   58214             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   58215           0 :      help.insertCopiedNodePair(this,result);
   58216             : 
   58217             :   // printf ("End of copy SgOmpUsesAllocatorsClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   58218             : 
   58219             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   58220             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   58221           0 :      help.decrementDepth();
   58222             : 
   58223             :   // Test if this is the root of the copy!
   58224           0 :      if (help.get_depth() == 0)
   58225             :         {
   58226             :        // This is the original calling node.
   58227             : 
   58228             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   58229             :        // printf ("Calling SgOmpUsesAllocatorsClause::fixupCopy() (from root of AST being copied) \n");
   58230             : #if ALT_FIXUP_COPY
   58231             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   58232           0 :           fixupCopy_scopes (result,help);
   58233           0 :           fixupCopy_symbols (result,help);
   58234           0 :           fixupCopy_references (result,help);
   58235             : #else
   58236             :           fixupCopy(result,help);
   58237             : #endif
   58238             :        // Allow this to be called recursively, so accumulate the state.
   58239             :        // Also, clear the state in the SgCopyHelp object.
   58240             :        // help.clearState();
   58241             :         }
   58242             : 
   58243           0 :      return result;
   58244             :    }
   58245             : 
   58246             : 
   58247             : /* #line 58248 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   58248             : 
   58249             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58250             : 
   58251           0 : SgNode* SgOmpFullClause::copy ( SgCopyHelp& help) const
   58252             :    {
   58253           0 :      SgOmpFullClause* result = NULL;
   58254             : 
   58255             :   // printf ("Copy SgOmpFullClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   58256             : 
   58257             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   58258             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   58259             :   // The default value of the depth is 0, so after this call the depth is 1!
   58260           0 :      help.incrementDepth();
   58261             : 
   58262             : #if 0
   58263             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   58264             :   // but it is not generally true that things can only be copied once!
   58265             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   58266             :   // AstAttribute* existingAttribute = const_cast<SgOmpFullClause*>(this)->attribute["copied"];
   58267             :      bool previouslyCopied = const_cast<SgOmpFullClause*>(this)->attribute.exists("copied");
   58268             :      if (previouslyCopied == true)
   58269             :         {
   58270             :           this->get_file_info()->display("Called from copy SgOmpFullClause: debug");
   58271             :         }
   58272             :      ROSE_ASSERT(previouslyCopied == false);
   58273             : 
   58274             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   58275             :      AstAttribute* newAttribute = new AstAttribute();
   58276             :      ROSE_ASSERT(newAttribute != NULL);
   58277             : 
   58278             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   58279             :      const_cast<SgOmpFullClause*>(this)->attribute.add("copied",newAttribute);
   58280             : #endif
   58281             : 
   58282             :   // Copy data members from base classes
   58283             :   // Copy constructor parameter data member: startOfConstruct_copy
   58284             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   58285             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   58286           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   58287           0 :      if ( p_startOfConstruct != NULL ) 
   58288             :         { 
   58289           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   58290             :         } 
   58291             :        else 
   58292             :         { 
   58293             :           startOfConstruct_copy = NULL; 
   58294             :         } 
   58295             :  
   58296             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58297             : 
   58298             :   // Build an empty copy of this object (will be filled in, but 
   58299             :   // the parent can't be set and must be set by the caller)
   58300           0 :      result = new SgOmpFullClause(  startOfConstruct_copy );
   58301           0 :      ROSE_ASSERT(result != NULL);
   58302             : 
   58303             :   // Copy data members of "this" class
   58304             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   58305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   58306             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   58307           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   58308           0 :      if ( p_endOfConstruct != NULL ) 
   58309             :         { 
   58310           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   58311             :         } 
   58312             :        else 
   58313             :         { 
   58314             :           endOfConstruct_copy = NULL; 
   58315             :         } 
   58316             :   /* check for a valid pointer and delete if present */ 
   58317           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   58318             :   /* add assignment to result here */ 
   58319           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   58320             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   58321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   58322             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   58323           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   58324           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   58325             :         { 
   58326           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   58327             :         } 
   58328             :        else 
   58329             :         { 
   58330             :           attachedPreprocessingInfoPtr_copy = NULL; 
   58331             :         } 
   58332             :   /* check for a valid pointer and delete if present */ 
   58333           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   58334             :   /* add assignment to result here */ 
   58335           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   58336             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   58337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   58338             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   58339           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   58340           0 :      if ( p_attributeMechanism != NULL ) 
   58341             :         { 
   58342           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   58343             :         } 
   58344             :        else 
   58345             :         { 
   58346             :           attributeMechanism_copy = NULL; 
   58347             :         } 
   58348             :   /* check for a valid pointer and delete if present */ 
   58349           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   58350             :   /* add assignment to result here */ 
   58351           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   58352             : 
   58353             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58354             : 
   58355             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   58356             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   58357             :   // fixupCopy(result,help);
   58358             : 
   58359             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   58360             :   // the Sg_File_Info objects that are built for the new IR nodes.
   58361           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   58362           0 :      if (locatedNode != NULL)
   58363             :         {
   58364             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   58365           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   58366           0 :           ROSE_ASSERT(start != NULL);
   58367             : #if 0
   58368             :        // Debugging information
   58369             :           if (start->get_parent() == NULL)
   58370             :              {
   58371             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58372             :              }
   58373             : #endif
   58374           0 :           start->set_parent(locatedNode);
   58375           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   58376             : 
   58377           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   58378             : 
   58379             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   58380             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   58381             :        // ROSE_ASSERT(end != NULL);
   58382           0 :           if (end == NULL)
   58383             :              {
   58384           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   58385             :              }
   58386             :             else
   58387             :              {
   58388             : #if 0
   58389             :             // Debugging information
   58390             :                if (end->get_parent() == NULL)
   58391             :                   {
   58392             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58393             :                   }
   58394             : #endif
   58395           0 :                end->set_parent(locatedNode);
   58396           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   58397             :              }
   58398             : 
   58399           0 :           SgExpression* expression = isSgExpression(result);
   58400           0 :           if (isSgExpression(this) != NULL)
   58401             :              {
   58402           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   58403             : 
   58404             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   58405           0 :                if (operatorPosition != NULL)
   58406             :                   {
   58407             : #if 0
   58408             :                  // Debugging information
   58409             :                     if (operatorPosition->get_parent() == NULL)
   58410             :                        {
   58411             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58412             :                        }
   58413             : #endif
   58414           0 :                     operatorPosition->set_parent(expression);
   58415           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   58416             :                   }
   58417             :              }
   58418             :         }
   58419             : 
   58420             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   58421           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   58422           0 :      if (initializedName != NULL)
   58423             :         {
   58424             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   58425           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   58426           0 :           ROSE_ASSERT(start != NULL);
   58427             : #if 0
   58428             :        // Debugging information
   58429             :           if (start->get_parent() == NULL)
   58430             :              {
   58431             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58432             :              }
   58433             : #endif
   58434           0 :           start->set_parent(initializedName);
   58435           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   58436             : 
   58437             : #if 0
   58438             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   58439             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   58440             : 
   58441             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   58442             :        // ROSE_ASSERT(end != NULL);
   58443             :           if (end == NULL)
   58444             :              {
   58445             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   58446             :              }
   58447             :             else
   58448             :              {
   58449             :                if (end->get_parent() == NULL)
   58450             :                   {
   58451             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58452             :                   }
   58453             :                end->set_parent(initializedName);
   58454             :                ROSE_ASSERT(end->get_parent() != NULL);
   58455             :              }
   58456             : #endif
   58457             :         }
   58458             : 
   58459             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   58460           0 :      help.insertCopiedNodePair(this,result);
   58461             : 
   58462             :   // printf ("End of copy SgOmpFullClause = %p = %s \n",this,SageInterface::get_name(this).c_str());
   58463             : 
   58464             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   58465             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   58466           0 :      help.decrementDepth();
   58467             : 
   58468             :   // Test if this is the root of the copy!
   58469           0 :      if (help.get_depth() == 0)
   58470             :         {
   58471             :        // This is the original calling node.
   58472             : 
   58473             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   58474             :        // printf ("Calling SgOmpFullClause::fixupCopy() (from root of AST being copied) \n");
   58475             : #if ALT_FIXUP_COPY
   58476             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   58477           0 :           fixupCopy_scopes (result,help);
   58478           0 :           fixupCopy_symbols (result,help);
   58479           0 :           fixupCopy_references (result,help);
   58480             : #else
   58481             :           fixupCopy(result,help);
   58482             : #endif
   58483             :        // Allow this to be called recursively, so accumulate the state.
   58484             :        // Also, clear the state in the SgCopyHelp object.
   58485             :        // help.clearState();
   58486             :         }
   58487             : 
   58488           0 :      return result;
   58489             :    }
   58490             : 
   58491             : 
   58492             : /* #line 58493 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   58493             : 
   58494             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58495             : 
   58496           0 : SgNode* SgUpirBranchField::copy ( SgCopyHelp& help) const
   58497             :    {
   58498           0 :      SgUpirBranchField* result = NULL;
   58499             : 
   58500             :   // printf ("Copy SgUpirBranchField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   58501             : 
   58502             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   58503             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   58504             :   // The default value of the depth is 0, so after this call the depth is 1!
   58505           0 :      help.incrementDepth();
   58506             : 
   58507             : #if 0
   58508             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   58509             :   // but it is not generally true that things can only be copied once!
   58510             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   58511             :   // AstAttribute* existingAttribute = const_cast<SgUpirBranchField*>(this)->attribute["copied"];
   58512             :      bool previouslyCopied = const_cast<SgUpirBranchField*>(this)->attribute.exists("copied");
   58513             :      if (previouslyCopied == true)
   58514             :         {
   58515             :           this->get_file_info()->display("Called from copy SgUpirBranchField: debug");
   58516             :         }
   58517             :      ROSE_ASSERT(previouslyCopied == false);
   58518             : 
   58519             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   58520             :      AstAttribute* newAttribute = new AstAttribute();
   58521             :      ROSE_ASSERT(newAttribute != NULL);
   58522             : 
   58523             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   58524             :      const_cast<SgUpirBranchField*>(this)->attribute.add("copied",newAttribute);
   58525             : #endif
   58526             : 
   58527             :   // Copy data members from base classes
   58528             :   // Copy constructor parameter data member: startOfConstruct_copy
   58529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   58530             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   58531           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   58532           0 :      if ( p_startOfConstruct != NULL ) 
   58533             :         { 
   58534           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   58535             :         } 
   58536             :        else 
   58537             :         { 
   58538             :           startOfConstruct_copy = NULL; 
   58539             :         } 
   58540             :  
   58541             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58542             : 
   58543             :   // Build an empty copy of this object (will be filled in, but 
   58544             :   // the parent can't be set and must be set by the caller)
   58545           0 :      result = new SgUpirBranchField(  startOfConstruct_copy );
   58546           0 :      ROSE_ASSERT(result != NULL);
   58547             : 
   58548             :   // Copy data members of "this" class
   58549             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   58550             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   58551             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   58552           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   58553           0 :      if ( p_endOfConstruct != NULL ) 
   58554             :         { 
   58555           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   58556             :         } 
   58557             :        else 
   58558             :         { 
   58559             :           endOfConstruct_copy = NULL; 
   58560             :         } 
   58561             :   /* check for a valid pointer and delete if present */ 
   58562           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   58563             :   /* add assignment to result here */ 
   58564           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   58565             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   58566             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   58567             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   58568           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   58569           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   58570             :         { 
   58571           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   58572             :         } 
   58573             :        else 
   58574             :         { 
   58575             :           attachedPreprocessingInfoPtr_copy = NULL; 
   58576             :         } 
   58577             :   /* check for a valid pointer and delete if present */ 
   58578           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   58579             :   /* add assignment to result here */ 
   58580           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   58581             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   58582             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   58583             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   58584           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   58585           0 :      if ( p_attributeMechanism != NULL ) 
   58586             :         { 
   58587           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   58588             :         } 
   58589             :        else 
   58590             :         { 
   58591             :           attributeMechanism_copy = NULL; 
   58592             :         } 
   58593             :   /* check for a valid pointer and delete if present */ 
   58594           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   58595             :   /* add assignment to result here */ 
   58596           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   58597             :   // Copy non-constructor parameter data member (access function): branches_copy
   58598             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for branches
   58599             :   // case: toBeCopied == COPY_DATA for branches
   58600           0 :      std::list<std::list<SgStatement*> > branches_copy = p_branches; 
   58601           0 :      result->p_branches = branches_copy; 
   58602             : 
   58603             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58604             : 
   58605             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   58606             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   58607             :   // fixupCopy(result,help);
   58608             : 
   58609             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   58610             :   // the Sg_File_Info objects that are built for the new IR nodes.
   58611           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   58612           0 :      if (locatedNode != NULL)
   58613             :         {
   58614             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   58615           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   58616           0 :           ROSE_ASSERT(start != NULL);
   58617             : #if 0
   58618             :        // Debugging information
   58619             :           if (start->get_parent() == NULL)
   58620             :              {
   58621             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58622             :              }
   58623             : #endif
   58624           0 :           start->set_parent(locatedNode);
   58625           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   58626             : 
   58627           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   58628             : 
   58629             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   58630             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   58631             :        // ROSE_ASSERT(end != NULL);
   58632           0 :           if (end == NULL)
   58633             :              {
   58634           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   58635             :              }
   58636             :             else
   58637             :              {
   58638             : #if 0
   58639             :             // Debugging information
   58640             :                if (end->get_parent() == NULL)
   58641             :                   {
   58642             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58643             :                   }
   58644             : #endif
   58645           0 :                end->set_parent(locatedNode);
   58646           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   58647             :              }
   58648             : 
   58649           0 :           SgExpression* expression = isSgExpression(result);
   58650           0 :           if (isSgExpression(this) != NULL)
   58651             :              {
   58652           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   58653             : 
   58654             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   58655           0 :                if (operatorPosition != NULL)
   58656             :                   {
   58657             : #if 0
   58658             :                  // Debugging information
   58659             :                     if (operatorPosition->get_parent() == NULL)
   58660             :                        {
   58661             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58662             :                        }
   58663             : #endif
   58664           0 :                     operatorPosition->set_parent(expression);
   58665           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   58666             :                   }
   58667             :              }
   58668             :         }
   58669             : 
   58670             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   58671           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   58672           0 :      if (initializedName != NULL)
   58673             :         {
   58674             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   58675           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   58676           0 :           ROSE_ASSERT(start != NULL);
   58677             : #if 0
   58678             :        // Debugging information
   58679             :           if (start->get_parent() == NULL)
   58680             :              {
   58681             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58682             :              }
   58683             : #endif
   58684           0 :           start->set_parent(initializedName);
   58685           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   58686             : 
   58687             : #if 0
   58688             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   58689             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   58690             : 
   58691             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   58692             :        // ROSE_ASSERT(end != NULL);
   58693             :           if (end == NULL)
   58694             :              {
   58695             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   58696             :              }
   58697             :             else
   58698             :              {
   58699             :                if (end->get_parent() == NULL)
   58700             :                   {
   58701             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58702             :                   }
   58703             :                end->set_parent(initializedName);
   58704             :                ROSE_ASSERT(end->get_parent() != NULL);
   58705             :              }
   58706             : #endif
   58707             :         }
   58708             : 
   58709             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   58710           0 :      help.insertCopiedNodePair(this,result);
   58711             : 
   58712             :   // printf ("End of copy SgUpirBranchField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   58713             : 
   58714             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   58715             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   58716           0 :      help.decrementDepth();
   58717             : 
   58718             :   // Test if this is the root of the copy!
   58719           0 :      if (help.get_depth() == 0)
   58720             :         {
   58721             :        // This is the original calling node.
   58722             : 
   58723             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   58724             :        // printf ("Calling SgUpirBranchField::fixupCopy() (from root of AST being copied) \n");
   58725             : #if ALT_FIXUP_COPY
   58726             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   58727           0 :           fixupCopy_scopes (result,help);
   58728           0 :           fixupCopy_symbols (result,help);
   58729           0 :           fixupCopy_references (result,help);
   58730             : #else
   58731             :           fixupCopy(result,help);
   58732             : #endif
   58733             :        // Allow this to be called recursively, so accumulate the state.
   58734             :        // Also, clear the state in the SgCopyHelp object.
   58735             :        // help.clearState();
   58736             :         }
   58737             : 
   58738           0 :      return result;
   58739             :    }
   58740             : 
   58741             : 
   58742             : /* #line 58743 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   58743             : 
   58744             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58745             : 
   58746           0 : SgNode* SgUpirNestedLevelField::copy ( SgCopyHelp& help) const
   58747             :    {
   58748           0 :      SgUpirNestedLevelField* result = NULL;
   58749             : 
   58750             :   // printf ("Copy SgUpirNestedLevelField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   58751             : 
   58752             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   58753             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   58754             :   // The default value of the depth is 0, so after this call the depth is 1!
   58755           0 :      help.incrementDepth();
   58756             : 
   58757             : #if 0
   58758             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   58759             :   // but it is not generally true that things can only be copied once!
   58760             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   58761             :   // AstAttribute* existingAttribute = const_cast<SgUpirNestedLevelField*>(this)->attribute["copied"];
   58762             :      bool previouslyCopied = const_cast<SgUpirNestedLevelField*>(this)->attribute.exists("copied");
   58763             :      if (previouslyCopied == true)
   58764             :         {
   58765             :           this->get_file_info()->display("Called from copy SgUpirNestedLevelField: debug");
   58766             :         }
   58767             :      ROSE_ASSERT(previouslyCopied == false);
   58768             : 
   58769             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   58770             :      AstAttribute* newAttribute = new AstAttribute();
   58771             :      ROSE_ASSERT(newAttribute != NULL);
   58772             : 
   58773             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   58774             :      const_cast<SgUpirNestedLevelField*>(this)->attribute.add("copied",newAttribute);
   58775             : #endif
   58776             : 
   58777             :   // Copy data members from base classes
   58778             :   // Copy constructor parameter data member: startOfConstruct_copy
   58779             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   58780             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   58781           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   58782           0 :      if ( p_startOfConstruct != NULL ) 
   58783             :         { 
   58784           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   58785             :         } 
   58786             :        else 
   58787             :         { 
   58788             :           startOfConstruct_copy = NULL; 
   58789             :         } 
   58790             :  
   58791             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58792             : 
   58793             :   // Build an empty copy of this object (will be filled in, but 
   58794             :   // the parent can't be set and must be set by the caller)
   58795           0 :      result = new SgUpirNestedLevelField(  startOfConstruct_copy );
   58796           0 :      ROSE_ASSERT(result != NULL);
   58797             : 
   58798             :   // Copy data members of "this" class
   58799             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   58800             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   58801             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   58802           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   58803           0 :      if ( p_endOfConstruct != NULL ) 
   58804             :         { 
   58805           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   58806             :         } 
   58807             :        else 
   58808             :         { 
   58809             :           endOfConstruct_copy = NULL; 
   58810             :         } 
   58811             :   /* check for a valid pointer and delete if present */ 
   58812           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   58813             :   /* add assignment to result here */ 
   58814           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   58815             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   58816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   58817             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   58818           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   58819           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   58820             :         { 
   58821           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   58822             :         } 
   58823             :        else 
   58824             :         { 
   58825             :           attachedPreprocessingInfoPtr_copy = NULL; 
   58826             :         } 
   58827             :   /* check for a valid pointer and delete if present */ 
   58828           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   58829             :   /* add assignment to result here */ 
   58830           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   58831             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   58832             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   58833             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   58834           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   58835           0 :      if ( p_attributeMechanism != NULL ) 
   58836             :         { 
   58837           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   58838             :         } 
   58839             :        else 
   58840             :         { 
   58841             :           attributeMechanism_copy = NULL; 
   58842             :         } 
   58843             :   /* check for a valid pointer and delete if present */ 
   58844           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   58845             :   /* add assignment to result here */ 
   58846           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   58847             :   // Copy non-constructor parameter data member (access function): nested_level_copy
   58848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nested_level
   58849             :   // case: toBeCopied == COPY_DATA for nested_level
   58850           0 :      int nested_level_copy = p_nested_level; 
   58851           0 :      result->p_nested_level = nested_level_copy; 
   58852             : 
   58853             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58854             : 
   58855             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   58856             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   58857             :   // fixupCopy(result,help);
   58858             : 
   58859             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   58860             :   // the Sg_File_Info objects that are built for the new IR nodes.
   58861           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   58862           0 :      if (locatedNode != NULL)
   58863             :         {
   58864             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   58865           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   58866           0 :           ROSE_ASSERT(start != NULL);
   58867             : #if 0
   58868             :        // Debugging information
   58869             :           if (start->get_parent() == NULL)
   58870             :              {
   58871             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58872             :              }
   58873             : #endif
   58874           0 :           start->set_parent(locatedNode);
   58875           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   58876             : 
   58877           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   58878             : 
   58879             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   58880             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   58881             :        // ROSE_ASSERT(end != NULL);
   58882           0 :           if (end == NULL)
   58883             :              {
   58884           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   58885             :              }
   58886             :             else
   58887             :              {
   58888             : #if 0
   58889             :             // Debugging information
   58890             :                if (end->get_parent() == NULL)
   58891             :                   {
   58892             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58893             :                   }
   58894             : #endif
   58895           0 :                end->set_parent(locatedNode);
   58896           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   58897             :              }
   58898             : 
   58899           0 :           SgExpression* expression = isSgExpression(result);
   58900           0 :           if (isSgExpression(this) != NULL)
   58901             :              {
   58902           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   58903             : 
   58904             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   58905           0 :                if (operatorPosition != NULL)
   58906             :                   {
   58907             : #if 0
   58908             :                  // Debugging information
   58909             :                     if (operatorPosition->get_parent() == NULL)
   58910             :                        {
   58911             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58912             :                        }
   58913             : #endif
   58914           0 :                     operatorPosition->set_parent(expression);
   58915           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   58916             :                   }
   58917             :              }
   58918             :         }
   58919             : 
   58920             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   58921           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   58922           0 :      if (initializedName != NULL)
   58923             :         {
   58924             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   58925           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   58926           0 :           ROSE_ASSERT(start != NULL);
   58927             : #if 0
   58928             :        // Debugging information
   58929             :           if (start->get_parent() == NULL)
   58930             :              {
   58931             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58932             :              }
   58933             : #endif
   58934           0 :           start->set_parent(initializedName);
   58935           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   58936             : 
   58937             : #if 0
   58938             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   58939             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   58940             : 
   58941             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   58942             :        // ROSE_ASSERT(end != NULL);
   58943             :           if (end == NULL)
   58944             :              {
   58945             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   58946             :              }
   58947             :             else
   58948             :              {
   58949             :                if (end->get_parent() == NULL)
   58950             :                   {
   58951             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   58952             :                   }
   58953             :                end->set_parent(initializedName);
   58954             :                ROSE_ASSERT(end->get_parent() != NULL);
   58955             :              }
   58956             : #endif
   58957             :         }
   58958             : 
   58959             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   58960           0 :      help.insertCopiedNodePair(this,result);
   58961             : 
   58962             :   // printf ("End of copy SgUpirNestedLevelField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   58963             : 
   58964             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   58965             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   58966           0 :      help.decrementDepth();
   58967             : 
   58968             :   // Test if this is the root of the copy!
   58969           0 :      if (help.get_depth() == 0)
   58970             :         {
   58971             :        // This is the original calling node.
   58972             : 
   58973             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   58974             :        // printf ("Calling SgUpirNestedLevelField::fixupCopy() (from root of AST being copied) \n");
   58975             : #if ALT_FIXUP_COPY
   58976             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   58977           0 :           fixupCopy_scopes (result,help);
   58978           0 :           fixupCopy_symbols (result,help);
   58979           0 :           fixupCopy_references (result,help);
   58980             : #else
   58981             :           fixupCopy(result,help);
   58982             : #endif
   58983             :        // Allow this to be called recursively, so accumulate the state.
   58984             :        // Also, clear the state in the SgCopyHelp object.
   58985             :        // help.clearState();
   58986             :         }
   58987             : 
   58988           0 :      return result;
   58989             :    }
   58990             : 
   58991             : 
   58992             : /* #line 58993 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   58993             : 
   58994             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   58995             : 
   58996           0 : SgNode* SgUpirNestedParentField::copy ( SgCopyHelp& help) const
   58997             :    {
   58998           0 :      SgUpirNestedParentField* result = NULL;
   58999             : 
   59000             :   // printf ("Copy SgUpirNestedParentField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   59001             : 
   59002             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   59003             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   59004             :   // The default value of the depth is 0, so after this call the depth is 1!
   59005           0 :      help.incrementDepth();
   59006             : 
   59007             : #if 0
   59008             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   59009             :   // but it is not generally true that things can only be copied once!
   59010             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   59011             :   // AstAttribute* existingAttribute = const_cast<SgUpirNestedParentField*>(this)->attribute["copied"];
   59012             :      bool previouslyCopied = const_cast<SgUpirNestedParentField*>(this)->attribute.exists("copied");
   59013             :      if (previouslyCopied == true)
   59014             :         {
   59015             :           this->get_file_info()->display("Called from copy SgUpirNestedParentField: debug");
   59016             :         }
   59017             :      ROSE_ASSERT(previouslyCopied == false);
   59018             : 
   59019             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   59020             :      AstAttribute* newAttribute = new AstAttribute();
   59021             :      ROSE_ASSERT(newAttribute != NULL);
   59022             : 
   59023             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   59024             :      const_cast<SgUpirNestedParentField*>(this)->attribute.add("copied",newAttribute);
   59025             : #endif
   59026             : 
   59027             :   // Copy data members from base classes
   59028             :   // Copy constructor parameter data member: startOfConstruct_copy
   59029             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   59030             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   59031           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   59032           0 :      if ( p_startOfConstruct != NULL ) 
   59033             :         { 
   59034           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   59035             :         } 
   59036             :        else 
   59037             :         { 
   59038             :           startOfConstruct_copy = NULL; 
   59039             :         } 
   59040             :  
   59041             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59042             : 
   59043             :   // Build an empty copy of this object (will be filled in, but 
   59044             :   // the parent can't be set and must be set by the caller)
   59045           0 :      result = new SgUpirNestedParentField(  startOfConstruct_copy );
   59046           0 :      ROSE_ASSERT(result != NULL);
   59047             : 
   59048             :   // Copy data members of "this" class
   59049             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   59050             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   59051             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   59052           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   59053           0 :      if ( p_endOfConstruct != NULL ) 
   59054             :         { 
   59055           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   59056             :         } 
   59057             :        else 
   59058             :         { 
   59059             :           endOfConstruct_copy = NULL; 
   59060             :         } 
   59061             :   /* check for a valid pointer and delete if present */ 
   59062           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   59063             :   /* add assignment to result here */ 
   59064           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   59065             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   59066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   59067             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   59068           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   59069           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   59070             :         { 
   59071           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   59072             :         } 
   59073             :        else 
   59074             :         { 
   59075             :           attachedPreprocessingInfoPtr_copy = NULL; 
   59076             :         } 
   59077             :   /* check for a valid pointer and delete if present */ 
   59078           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   59079             :   /* add assignment to result here */ 
   59080           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   59081             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   59082             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   59083             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   59084           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   59085           0 :      if ( p_attributeMechanism != NULL ) 
   59086             :         { 
   59087           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   59088             :         } 
   59089             :        else 
   59090             :         { 
   59091             :           attributeMechanism_copy = NULL; 
   59092             :         } 
   59093             :   /* check for a valid pointer and delete if present */ 
   59094           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   59095             :   /* add assignment to result here */ 
   59096           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   59097             :   // Copy non-constructor parameter data member (access function): nested_parent_copy
   59098             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nested_parent
   59099             :   // case: toBeCopied == COPY_DATA for nested_parent
   59100           0 :      SgStatement* nested_parent_copy = p_nested_parent; 
   59101           0 :      result->p_nested_parent = nested_parent_copy; 
   59102             : 
   59103             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59104             : 
   59105             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   59106             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   59107             :   // fixupCopy(result,help);
   59108             : 
   59109             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   59110             :   // the Sg_File_Info objects that are built for the new IR nodes.
   59111           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   59112           0 :      if (locatedNode != NULL)
   59113             :         {
   59114             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   59115           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   59116           0 :           ROSE_ASSERT(start != NULL);
   59117             : #if 0
   59118             :        // Debugging information
   59119             :           if (start->get_parent() == NULL)
   59120             :              {
   59121             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59122             :              }
   59123             : #endif
   59124           0 :           start->set_parent(locatedNode);
   59125           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   59126             : 
   59127           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   59128             : 
   59129             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   59130             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   59131             :        // ROSE_ASSERT(end != NULL);
   59132           0 :           if (end == NULL)
   59133             :              {
   59134           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   59135             :              }
   59136             :             else
   59137             :              {
   59138             : #if 0
   59139             :             // Debugging information
   59140             :                if (end->get_parent() == NULL)
   59141             :                   {
   59142             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59143             :                   }
   59144             : #endif
   59145           0 :                end->set_parent(locatedNode);
   59146           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   59147             :              }
   59148             : 
   59149           0 :           SgExpression* expression = isSgExpression(result);
   59150           0 :           if (isSgExpression(this) != NULL)
   59151             :              {
   59152           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   59153             : 
   59154             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   59155           0 :                if (operatorPosition != NULL)
   59156             :                   {
   59157             : #if 0
   59158             :                  // Debugging information
   59159             :                     if (operatorPosition->get_parent() == NULL)
   59160             :                        {
   59161             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59162             :                        }
   59163             : #endif
   59164           0 :                     operatorPosition->set_parent(expression);
   59165           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   59166             :                   }
   59167             :              }
   59168             :         }
   59169             : 
   59170             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   59171           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   59172           0 :      if (initializedName != NULL)
   59173             :         {
   59174             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   59175           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   59176           0 :           ROSE_ASSERT(start != NULL);
   59177             : #if 0
   59178             :        // Debugging information
   59179             :           if (start->get_parent() == NULL)
   59180             :              {
   59181             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59182             :              }
   59183             : #endif
   59184           0 :           start->set_parent(initializedName);
   59185           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   59186             : 
   59187             : #if 0
   59188             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   59189             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   59190             : 
   59191             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   59192             :        // ROSE_ASSERT(end != NULL);
   59193             :           if (end == NULL)
   59194             :              {
   59195             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   59196             :              }
   59197             :             else
   59198             :              {
   59199             :                if (end->get_parent() == NULL)
   59200             :                   {
   59201             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59202             :                   }
   59203             :                end->set_parent(initializedName);
   59204             :                ROSE_ASSERT(end->get_parent() != NULL);
   59205             :              }
   59206             : #endif
   59207             :         }
   59208             : 
   59209             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   59210           0 :      help.insertCopiedNodePair(this,result);
   59211             : 
   59212             :   // printf ("End of copy SgUpirNestedParentField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   59213             : 
   59214             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   59215             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   59216           0 :      help.decrementDepth();
   59217             : 
   59218             :   // Test if this is the root of the copy!
   59219           0 :      if (help.get_depth() == 0)
   59220             :         {
   59221             :        // This is the original calling node.
   59222             : 
   59223             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   59224             :        // printf ("Calling SgUpirNestedParentField::fixupCopy() (from root of AST being copied) \n");
   59225             : #if ALT_FIXUP_COPY
   59226             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   59227           0 :           fixupCopy_scopes (result,help);
   59228           0 :           fixupCopy_symbols (result,help);
   59229           0 :           fixupCopy_references (result,help);
   59230             : #else
   59231             :           fixupCopy(result,help);
   59232             : #endif
   59233             :        // Allow this to be called recursively, so accumulate the state.
   59234             :        // Also, clear the state in the SgCopyHelp object.
   59235             :        // help.clearState();
   59236             :         }
   59237             : 
   59238           0 :      return result;
   59239             :    }
   59240             : 
   59241             : 
   59242             : /* #line 59243 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   59243             : 
   59244             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59245             : 
   59246           0 : SgNode* SgUpirNestedChildField::copy ( SgCopyHelp& help) const
   59247             :    {
   59248           0 :      SgUpirNestedChildField* result = NULL;
   59249             : 
   59250             :   // printf ("Copy SgUpirNestedChildField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   59251             : 
   59252             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   59253             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   59254             :   // The default value of the depth is 0, so after this call the depth is 1!
   59255           0 :      help.incrementDepth();
   59256             : 
   59257             : #if 0
   59258             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   59259             :   // but it is not generally true that things can only be copied once!
   59260             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   59261             :   // AstAttribute* existingAttribute = const_cast<SgUpirNestedChildField*>(this)->attribute["copied"];
   59262             :      bool previouslyCopied = const_cast<SgUpirNestedChildField*>(this)->attribute.exists("copied");
   59263             :      if (previouslyCopied == true)
   59264             :         {
   59265             :           this->get_file_info()->display("Called from copy SgUpirNestedChildField: debug");
   59266             :         }
   59267             :      ROSE_ASSERT(previouslyCopied == false);
   59268             : 
   59269             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   59270             :      AstAttribute* newAttribute = new AstAttribute();
   59271             :      ROSE_ASSERT(newAttribute != NULL);
   59272             : 
   59273             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   59274             :      const_cast<SgUpirNestedChildField*>(this)->attribute.add("copied",newAttribute);
   59275             : #endif
   59276             : 
   59277             :   // Copy data members from base classes
   59278             :   // Copy constructor parameter data member: startOfConstruct_copy
   59279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   59280             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   59281           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   59282           0 :      if ( p_startOfConstruct != NULL ) 
   59283             :         { 
   59284           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   59285             :         } 
   59286             :        else 
   59287             :         { 
   59288             :           startOfConstruct_copy = NULL; 
   59289             :         } 
   59290             :  
   59291             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59292             : 
   59293             :   // Build an empty copy of this object (will be filled in, but 
   59294             :   // the parent can't be set and must be set by the caller)
   59295           0 :      result = new SgUpirNestedChildField(  startOfConstruct_copy );
   59296           0 :      ROSE_ASSERT(result != NULL);
   59297             : 
   59298             :   // Copy data members of "this" class
   59299             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   59300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   59301             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   59302           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   59303           0 :      if ( p_endOfConstruct != NULL ) 
   59304             :         { 
   59305           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   59306             :         } 
   59307             :        else 
   59308             :         { 
   59309             :           endOfConstruct_copy = NULL; 
   59310             :         } 
   59311             :   /* check for a valid pointer and delete if present */ 
   59312           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   59313             :   /* add assignment to result here */ 
   59314           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   59315             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   59316             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   59317             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   59318           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   59319           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   59320             :         { 
   59321           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   59322             :         } 
   59323             :        else 
   59324             :         { 
   59325             :           attachedPreprocessingInfoPtr_copy = NULL; 
   59326             :         } 
   59327             :   /* check for a valid pointer and delete if present */ 
   59328           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   59329             :   /* add assignment to result here */ 
   59330           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   59331             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   59332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   59333             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   59334           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   59335           0 :      if ( p_attributeMechanism != NULL ) 
   59336             :         { 
   59337           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   59338             :         } 
   59339             :        else 
   59340             :         { 
   59341             :           attributeMechanism_copy = NULL; 
   59342             :         } 
   59343             :   /* check for a valid pointer and delete if present */ 
   59344           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   59345             :   /* add assignment to result here */ 
   59346           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   59347             :   // Copy non-constructor parameter data member (access function): nested_child_copy
   59348             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nested_child
   59349             :   // case: toBeCopied == COPY_DATA for nested_child
   59350           0 :      SgStatement* nested_child_copy = p_nested_child; 
   59351           0 :      result->p_nested_child = nested_child_copy; 
   59352             : 
   59353             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59354             : 
   59355             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   59356             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   59357             :   // fixupCopy(result,help);
   59358             : 
   59359             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   59360             :   // the Sg_File_Info objects that are built for the new IR nodes.
   59361           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   59362           0 :      if (locatedNode != NULL)
   59363             :         {
   59364             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   59365           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   59366           0 :           ROSE_ASSERT(start != NULL);
   59367             : #if 0
   59368             :        // Debugging information
   59369             :           if (start->get_parent() == NULL)
   59370             :              {
   59371             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59372             :              }
   59373             : #endif
   59374           0 :           start->set_parent(locatedNode);
   59375           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   59376             : 
   59377           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   59378             : 
   59379             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   59380             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   59381             :        // ROSE_ASSERT(end != NULL);
   59382           0 :           if (end == NULL)
   59383             :              {
   59384           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   59385             :              }
   59386             :             else
   59387             :              {
   59388             : #if 0
   59389             :             // Debugging information
   59390             :                if (end->get_parent() == NULL)
   59391             :                   {
   59392             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59393             :                   }
   59394             : #endif
   59395           0 :                end->set_parent(locatedNode);
   59396           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   59397             :              }
   59398             : 
   59399           0 :           SgExpression* expression = isSgExpression(result);
   59400           0 :           if (isSgExpression(this) != NULL)
   59401             :              {
   59402           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   59403             : 
   59404             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   59405           0 :                if (operatorPosition != NULL)
   59406             :                   {
   59407             : #if 0
   59408             :                  // Debugging information
   59409             :                     if (operatorPosition->get_parent() == NULL)
   59410             :                        {
   59411             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59412             :                        }
   59413             : #endif
   59414           0 :                     operatorPosition->set_parent(expression);
   59415           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   59416             :                   }
   59417             :              }
   59418             :         }
   59419             : 
   59420             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   59421           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   59422           0 :      if (initializedName != NULL)
   59423             :         {
   59424             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   59425           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   59426           0 :           ROSE_ASSERT(start != NULL);
   59427             : #if 0
   59428             :        // Debugging information
   59429             :           if (start->get_parent() == NULL)
   59430             :              {
   59431             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59432             :              }
   59433             : #endif
   59434           0 :           start->set_parent(initializedName);
   59435           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   59436             : 
   59437             : #if 0
   59438             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   59439             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   59440             : 
   59441             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   59442             :        // ROSE_ASSERT(end != NULL);
   59443             :           if (end == NULL)
   59444             :              {
   59445             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   59446             :              }
   59447             :             else
   59448             :              {
   59449             :                if (end->get_parent() == NULL)
   59450             :                   {
   59451             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59452             :                   }
   59453             :                end->set_parent(initializedName);
   59454             :                ROSE_ASSERT(end->get_parent() != NULL);
   59455             :              }
   59456             : #endif
   59457             :         }
   59458             : 
   59459             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   59460           0 :      help.insertCopiedNodePair(this,result);
   59461             : 
   59462             :   // printf ("End of copy SgUpirNestedChildField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   59463             : 
   59464             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   59465             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   59466           0 :      help.decrementDepth();
   59467             : 
   59468             :   // Test if this is the root of the copy!
   59469           0 :      if (help.get_depth() == 0)
   59470             :         {
   59471             :        // This is the original calling node.
   59472             : 
   59473             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   59474             :        // printf ("Calling SgUpirNestedChildField::fixupCopy() (from root of AST being copied) \n");
   59475             : #if ALT_FIXUP_COPY
   59476             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   59477           0 :           fixupCopy_scopes (result,help);
   59478           0 :           fixupCopy_symbols (result,help);
   59479           0 :           fixupCopy_references (result,help);
   59480             : #else
   59481             :           fixupCopy(result,help);
   59482             : #endif
   59483             :        // Allow this to be called recursively, so accumulate the state.
   59484             :        // Also, clear the state in the SgCopyHelp object.
   59485             :        // help.clearState();
   59486             :         }
   59487             : 
   59488           0 :      return result;
   59489             :    }
   59490             : 
   59491             : 
   59492             : /* #line 59493 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   59493             : 
   59494             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59495             : 
   59496           0 : SgNode* SgUpirSyncField::copy ( SgCopyHelp& help) const
   59497             :    {
   59498           0 :      SgUpirSyncField* result = NULL;
   59499             : 
   59500             :   // printf ("Copy SgUpirSyncField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   59501             : 
   59502             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   59503             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   59504             :   // The default value of the depth is 0, so after this call the depth is 1!
   59505           0 :      help.incrementDepth();
   59506             : 
   59507             : #if 0
   59508             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   59509             :   // but it is not generally true that things can only be copied once!
   59510             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   59511             :   // AstAttribute* existingAttribute = const_cast<SgUpirSyncField*>(this)->attribute["copied"];
   59512             :      bool previouslyCopied = const_cast<SgUpirSyncField*>(this)->attribute.exists("copied");
   59513             :      if (previouslyCopied == true)
   59514             :         {
   59515             :           this->get_file_info()->display("Called from copy SgUpirSyncField: debug");
   59516             :         }
   59517             :      ROSE_ASSERT(previouslyCopied == false);
   59518             : 
   59519             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   59520             :      AstAttribute* newAttribute = new AstAttribute();
   59521             :      ROSE_ASSERT(newAttribute != NULL);
   59522             : 
   59523             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   59524             :      const_cast<SgUpirSyncField*>(this)->attribute.add("copied",newAttribute);
   59525             : #endif
   59526             : 
   59527             :   // Copy data members from base classes
   59528             :   // Copy constructor parameter data member: startOfConstruct_copy
   59529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   59530             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   59531           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   59532           0 :      if ( p_startOfConstruct != NULL ) 
   59533             :         { 
   59534           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   59535             :         } 
   59536             :        else 
   59537             :         { 
   59538             :           startOfConstruct_copy = NULL; 
   59539             :         } 
   59540             :  
   59541             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59542             : 
   59543             :   // Build an empty copy of this object (will be filled in, but 
   59544             :   // the parent can't be set and must be set by the caller)
   59545           0 :      result = new SgUpirSyncField(  startOfConstruct_copy );
   59546           0 :      ROSE_ASSERT(result != NULL);
   59547             : 
   59548             :   // Copy data members of "this" class
   59549             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   59550             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   59551             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   59552           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   59553           0 :      if ( p_endOfConstruct != NULL ) 
   59554             :         { 
   59555           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   59556             :         } 
   59557             :        else 
   59558             :         { 
   59559             :           endOfConstruct_copy = NULL; 
   59560             :         } 
   59561             :   /* check for a valid pointer and delete if present */ 
   59562           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   59563             :   /* add assignment to result here */ 
   59564           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   59565             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   59566             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   59567             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   59568           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   59569           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   59570             :         { 
   59571           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   59572             :         } 
   59573             :        else 
   59574             :         { 
   59575             :           attachedPreprocessingInfoPtr_copy = NULL; 
   59576             :         } 
   59577             :   /* check for a valid pointer and delete if present */ 
   59578           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   59579             :   /* add assignment to result here */ 
   59580           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   59581             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   59582             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   59583             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   59584           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   59585           0 :      if ( p_attributeMechanism != NULL ) 
   59586             :         { 
   59587           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   59588             :         } 
   59589             :        else 
   59590             :         { 
   59591             :           attributeMechanism_copy = NULL; 
   59592             :         } 
   59593             :   /* check for a valid pointer and delete if present */ 
   59594           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   59595             :   /* add assignment to result here */ 
   59596           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   59597             :   // Copy non-constructor parameter data member (access function): sync_copy
   59598             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sync
   59599             :   // case: toBeCopied == COPY_DATA for sync
   59600           0 :      SgStatement* sync_copy = p_sync; 
   59601           0 :      result->p_sync = sync_copy; 
   59602             : 
   59603             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59604             : 
   59605             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   59606             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   59607             :   // fixupCopy(result,help);
   59608             : 
   59609             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   59610             :   // the Sg_File_Info objects that are built for the new IR nodes.
   59611           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   59612           0 :      if (locatedNode != NULL)
   59613             :         {
   59614             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   59615           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   59616           0 :           ROSE_ASSERT(start != NULL);
   59617             : #if 0
   59618             :        // Debugging information
   59619             :           if (start->get_parent() == NULL)
   59620             :              {
   59621             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59622             :              }
   59623             : #endif
   59624           0 :           start->set_parent(locatedNode);
   59625           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   59626             : 
   59627           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   59628             : 
   59629             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   59630             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   59631             :        // ROSE_ASSERT(end != NULL);
   59632           0 :           if (end == NULL)
   59633             :              {
   59634           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   59635             :              }
   59636             :             else
   59637             :              {
   59638             : #if 0
   59639             :             // Debugging information
   59640             :                if (end->get_parent() == NULL)
   59641             :                   {
   59642             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59643             :                   }
   59644             : #endif
   59645           0 :                end->set_parent(locatedNode);
   59646           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   59647             :              }
   59648             : 
   59649           0 :           SgExpression* expression = isSgExpression(result);
   59650           0 :           if (isSgExpression(this) != NULL)
   59651             :              {
   59652           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   59653             : 
   59654             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   59655           0 :                if (operatorPosition != NULL)
   59656             :                   {
   59657             : #if 0
   59658             :                  // Debugging information
   59659             :                     if (operatorPosition->get_parent() == NULL)
   59660             :                        {
   59661             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59662             :                        }
   59663             : #endif
   59664           0 :                     operatorPosition->set_parent(expression);
   59665           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   59666             :                   }
   59667             :              }
   59668             :         }
   59669             : 
   59670             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   59671           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   59672           0 :      if (initializedName != NULL)
   59673             :         {
   59674             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   59675           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   59676           0 :           ROSE_ASSERT(start != NULL);
   59677             : #if 0
   59678             :        // Debugging information
   59679             :           if (start->get_parent() == NULL)
   59680             :              {
   59681             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59682             :              }
   59683             : #endif
   59684           0 :           start->set_parent(initializedName);
   59685           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   59686             : 
   59687             : #if 0
   59688             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   59689             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   59690             : 
   59691             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   59692             :        // ROSE_ASSERT(end != NULL);
   59693             :           if (end == NULL)
   59694             :              {
   59695             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   59696             :              }
   59697             :             else
   59698             :              {
   59699             :                if (end->get_parent() == NULL)
   59700             :                   {
   59701             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59702             :                   }
   59703             :                end->set_parent(initializedName);
   59704             :                ROSE_ASSERT(end->get_parent() != NULL);
   59705             :              }
   59706             : #endif
   59707             :         }
   59708             : 
   59709             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   59710           0 :      help.insertCopiedNodePair(this,result);
   59711             : 
   59712             :   // printf ("End of copy SgUpirSyncField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   59713             : 
   59714             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   59715             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   59716           0 :      help.decrementDepth();
   59717             : 
   59718             :   // Test if this is the root of the copy!
   59719           0 :      if (help.get_depth() == 0)
   59720             :         {
   59721             :        // This is the original calling node.
   59722             : 
   59723             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   59724             :        // printf ("Calling SgUpirSyncField::fixupCopy() (from root of AST being copied) \n");
   59725             : #if ALT_FIXUP_COPY
   59726             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   59727           0 :           fixupCopy_scopes (result,help);
   59728           0 :           fixupCopy_symbols (result,help);
   59729           0 :           fixupCopy_references (result,help);
   59730             : #else
   59731             :           fixupCopy(result,help);
   59732             : #endif
   59733             :        // Allow this to be called recursively, so accumulate the state.
   59734             :        // Also, clear the state in the SgCopyHelp object.
   59735             :        // help.clearState();
   59736             :         }
   59737             : 
   59738           0 :      return result;
   59739             :    }
   59740             : 
   59741             : 
   59742             : /* #line 59743 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   59743             : 
   59744             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59745             : 
   59746           0 : SgNode* SgUpirDataField::copy ( SgCopyHelp& help) const
   59747             :    {
   59748           0 :      SgUpirDataField* result = NULL;
   59749             : 
   59750             :   // printf ("Copy SgUpirDataField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   59751             : 
   59752             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   59753             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   59754             :   // The default value of the depth is 0, so after this call the depth is 1!
   59755           0 :      help.incrementDepth();
   59756             : 
   59757             : #if 0
   59758             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   59759             :   // but it is not generally true that things can only be copied once!
   59760             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   59761             :   // AstAttribute* existingAttribute = const_cast<SgUpirDataField*>(this)->attribute["copied"];
   59762             :      bool previouslyCopied = const_cast<SgUpirDataField*>(this)->attribute.exists("copied");
   59763             :      if (previouslyCopied == true)
   59764             :         {
   59765             :           this->get_file_info()->display("Called from copy SgUpirDataField: debug");
   59766             :         }
   59767             :      ROSE_ASSERT(previouslyCopied == false);
   59768             : 
   59769             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   59770             :      AstAttribute* newAttribute = new AstAttribute();
   59771             :      ROSE_ASSERT(newAttribute != NULL);
   59772             : 
   59773             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   59774             :      const_cast<SgUpirDataField*>(this)->attribute.add("copied",newAttribute);
   59775             : #endif
   59776             : 
   59777             :   // Copy data members from base classes
   59778             :   // Copy constructor parameter data member: startOfConstruct_copy
   59779             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   59780             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   59781           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   59782           0 :      if ( p_startOfConstruct != NULL ) 
   59783             :         { 
   59784           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   59785             :         } 
   59786             :        else 
   59787             :         { 
   59788             :           startOfConstruct_copy = NULL; 
   59789             :         } 
   59790             :  
   59791             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59792             : 
   59793             :   // Build an empty copy of this object (will be filled in, but 
   59794             :   // the parent can't be set and must be set by the caller)
   59795           0 :      result = new SgUpirDataField(  startOfConstruct_copy );
   59796           0 :      ROSE_ASSERT(result != NULL);
   59797             : 
   59798             :   // Copy data members of "this" class
   59799             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   59800             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   59801             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   59802           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   59803           0 :      if ( p_endOfConstruct != NULL ) 
   59804             :         { 
   59805           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   59806             :         } 
   59807             :        else 
   59808             :         { 
   59809             :           endOfConstruct_copy = NULL; 
   59810             :         } 
   59811             :   /* check for a valid pointer and delete if present */ 
   59812           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   59813             :   /* add assignment to result here */ 
   59814           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   59815             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   59816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   59817             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   59818           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   59819           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   59820             :         { 
   59821           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   59822             :         } 
   59823             :        else 
   59824             :         { 
   59825             :           attachedPreprocessingInfoPtr_copy = NULL; 
   59826             :         } 
   59827             :   /* check for a valid pointer and delete if present */ 
   59828           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   59829             :   /* add assignment to result here */ 
   59830           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   59831             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   59832             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   59833             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   59834           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   59835           0 :      if ( p_attributeMechanism != NULL ) 
   59836             :         { 
   59837           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   59838             :         } 
   59839             :        else 
   59840             :         { 
   59841             :           attributeMechanism_copy = NULL; 
   59842             :         } 
   59843             :   /* check for a valid pointer and delete if present */ 
   59844           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   59845             :   /* add assignment to result here */ 
   59846           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   59847             :   // Copy non-constructor parameter data member (access function): data_copy
   59848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for data
   59849             :   // case: toBeCopied == COPY_DATA for data
   59850           0 :      std::list<SgUpirDataItemField*> data_copy = p_data; 
   59851           0 :      result->p_data = data_copy; 
   59852             :   // Copy non-constructor parameter data member (access function): shared_data_copy
   59853             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for shared_data
   59854             :   // case: toBeCopied == COPY_DATA for shared_data
   59855           0 :      std::list<SgUpirDataItemField*> shared_data_copy = p_shared_data; 
   59856           0 :      result->p_shared_data = shared_data_copy; 
   59857             :   // Copy non-constructor parameter data member (access function): private_data_copy
   59858             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for private_data
   59859             :   // case: toBeCopied == COPY_DATA for private_data
   59860           0 :      std::list<SgUpirDataItemField*> private_data_copy = p_private_data; 
   59861           0 :      result->p_private_data = private_data_copy; 
   59862             :   // Copy non-constructor parameter data member (access function): firstprivate_data_copy
   59863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstprivate_data
   59864             :   // case: toBeCopied == COPY_DATA for firstprivate_data
   59865           0 :      std::list<SgUpirDataItemField*> firstprivate_data_copy = p_firstprivate_data; 
   59866           0 :      result->p_firstprivate_data = firstprivate_data_copy; 
   59867             :   // Copy non-constructor parameter data member (access function): lastprivate_data_copy
   59868             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lastprivate_data
   59869             :   // case: toBeCopied == COPY_DATA for lastprivate_data
   59870           0 :      std::list<SgUpirDataItemField*> lastprivate_data_copy = p_lastprivate_data; 
   59871           0 :      result->p_lastprivate_data = lastprivate_data_copy; 
   59872             :   // Copy non-constructor parameter data member (access function): reduction_data_copy
   59873             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for reduction_data
   59874             :   // case: toBeCopied == COPY_DATA for reduction_data
   59875           0 :      std::list<SgUpirDataItemField*> reduction_data_copy = p_reduction_data; 
   59876           0 :      result->p_reduction_data = reduction_data_copy; 
   59877             :   // Copy non-constructor parameter data member (access function): map_to_data_copy
   59878             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for map_to_data
   59879             :   // case: toBeCopied == COPY_DATA for map_to_data
   59880           0 :      std::list<SgUpirDataItemField*> map_to_data_copy = p_map_to_data; 
   59881           0 :      result->p_map_to_data = map_to_data_copy; 
   59882             :   // Copy non-constructor parameter data member (access function): map_from_data_copy
   59883             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for map_from_data
   59884             :   // case: toBeCopied == COPY_DATA for map_from_data
   59885           0 :      std::list<SgUpirDataItemField*> map_from_data_copy = p_map_from_data; 
   59886           0 :      result->p_map_from_data = map_from_data_copy; 
   59887             :   // Copy non-constructor parameter data member (access function): map_tofrom_data_copy
   59888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for map_tofrom_data
   59889             :   // case: toBeCopied == COPY_DATA for map_tofrom_data
   59890           0 :      std::list<SgUpirDataItemField*> map_tofrom_data_copy = p_map_tofrom_data; 
   59891           0 :      result->p_map_tofrom_data = map_tofrom_data_copy; 
   59892             :   // Copy non-constructor parameter data member (access function): map_alloc_data_copy
   59893             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for map_alloc_data
   59894             :   // case: toBeCopied == COPY_DATA for map_alloc_data
   59895           0 :      std::list<SgUpirDataItemField*> map_alloc_data_copy = p_map_alloc_data; 
   59896           0 :      result->p_map_alloc_data = map_alloc_data_copy; 
   59897             : 
   59898             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   59899             : 
   59900             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   59901             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   59902             :   // fixupCopy(result,help);
   59903             : 
   59904             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   59905             :   // the Sg_File_Info objects that are built for the new IR nodes.
   59906           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   59907           0 :      if (locatedNode != NULL)
   59908             :         {
   59909             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   59910           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   59911           0 :           ROSE_ASSERT(start != NULL);
   59912             : #if 0
   59913             :        // Debugging information
   59914             :           if (start->get_parent() == NULL)
   59915             :              {
   59916             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59917             :              }
   59918             : #endif
   59919           0 :           start->set_parent(locatedNode);
   59920           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   59921             : 
   59922           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   59923             : 
   59924             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   59925             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   59926             :        // ROSE_ASSERT(end != NULL);
   59927           0 :           if (end == NULL)
   59928             :              {
   59929           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   59930             :              }
   59931             :             else
   59932             :              {
   59933             : #if 0
   59934             :             // Debugging information
   59935             :                if (end->get_parent() == NULL)
   59936             :                   {
   59937             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59938             :                   }
   59939             : #endif
   59940           0 :                end->set_parent(locatedNode);
   59941           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   59942             :              }
   59943             : 
   59944           0 :           SgExpression* expression = isSgExpression(result);
   59945           0 :           if (isSgExpression(this) != NULL)
   59946             :              {
   59947           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   59948             : 
   59949             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   59950           0 :                if (operatorPosition != NULL)
   59951             :                   {
   59952             : #if 0
   59953             :                  // Debugging information
   59954             :                     if (operatorPosition->get_parent() == NULL)
   59955             :                        {
   59956             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59957             :                        }
   59958             : #endif
   59959           0 :                     operatorPosition->set_parent(expression);
   59960           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   59961             :                   }
   59962             :              }
   59963             :         }
   59964             : 
   59965             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   59966           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   59967           0 :      if (initializedName != NULL)
   59968             :         {
   59969             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   59970           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   59971           0 :           ROSE_ASSERT(start != NULL);
   59972             : #if 0
   59973             :        // Debugging information
   59974             :           if (start->get_parent() == NULL)
   59975             :              {
   59976             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59977             :              }
   59978             : #endif
   59979           0 :           start->set_parent(initializedName);
   59980           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   59981             : 
   59982             : #if 0
   59983             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   59984             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   59985             : 
   59986             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   59987             :        // ROSE_ASSERT(end != NULL);
   59988             :           if (end == NULL)
   59989             :              {
   59990             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   59991             :              }
   59992             :             else
   59993             :              {
   59994             :                if (end->get_parent() == NULL)
   59995             :                   {
   59996             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   59997             :                   }
   59998             :                end->set_parent(initializedName);
   59999             :                ROSE_ASSERT(end->get_parent() != NULL);
   60000             :              }
   60001             : #endif
   60002             :         }
   60003             : 
   60004             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   60005           0 :      help.insertCopiedNodePair(this,result);
   60006             : 
   60007             :   // printf ("End of copy SgUpirDataField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   60008             : 
   60009             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   60010             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   60011           0 :      help.decrementDepth();
   60012             : 
   60013             :   // Test if this is the root of the copy!
   60014           0 :      if (help.get_depth() == 0)
   60015             :         {
   60016             :        // This is the original calling node.
   60017             : 
   60018             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   60019             :        // printf ("Calling SgUpirDataField::fixupCopy() (from root of AST being copied) \n");
   60020             : #if ALT_FIXUP_COPY
   60021             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   60022           0 :           fixupCopy_scopes (result,help);
   60023           0 :           fixupCopy_symbols (result,help);
   60024           0 :           fixupCopy_references (result,help);
   60025             : #else
   60026             :           fixupCopy(result,help);
   60027             : #endif
   60028             :        // Allow this to be called recursively, so accumulate the state.
   60029             :        // Also, clear the state in the SgCopyHelp object.
   60030             :        // help.clearState();
   60031             :         }
   60032             : 
   60033           0 :      return result;
   60034             :    }
   60035             : 
   60036             : 
   60037             : /* #line 60038 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   60038             : 
   60039             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60040             : 
   60041           0 : SgNode* SgUpirTargetField::copy ( SgCopyHelp& help) const
   60042             :    {
   60043           0 :      SgUpirTargetField* result = NULL;
   60044             : 
   60045             :   // printf ("Copy SgUpirTargetField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   60046             : 
   60047             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   60048             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   60049             :   // The default value of the depth is 0, so after this call the depth is 1!
   60050           0 :      help.incrementDepth();
   60051             : 
   60052             : #if 0
   60053             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   60054             :   // but it is not generally true that things can only be copied once!
   60055             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   60056             :   // AstAttribute* existingAttribute = const_cast<SgUpirTargetField*>(this)->attribute["copied"];
   60057             :      bool previouslyCopied = const_cast<SgUpirTargetField*>(this)->attribute.exists("copied");
   60058             :      if (previouslyCopied == true)
   60059             :         {
   60060             :           this->get_file_info()->display("Called from copy SgUpirTargetField: debug");
   60061             :         }
   60062             :      ROSE_ASSERT(previouslyCopied == false);
   60063             : 
   60064             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   60065             :      AstAttribute* newAttribute = new AstAttribute();
   60066             :      ROSE_ASSERT(newAttribute != NULL);
   60067             : 
   60068             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   60069             :      const_cast<SgUpirTargetField*>(this)->attribute.add("copied",newAttribute);
   60070             : #endif
   60071             : 
   60072             :   // Copy data members from base classes
   60073             :   // Copy constructor parameter data member: startOfConstruct_copy
   60074             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   60075             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   60076           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   60077           0 :      if ( p_startOfConstruct != NULL ) 
   60078             :         { 
   60079           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   60080             :         } 
   60081             :        else 
   60082             :         { 
   60083             :           startOfConstruct_copy = NULL; 
   60084             :         } 
   60085             :  
   60086             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60087             : 
   60088             :   // Build an empty copy of this object (will be filled in, but 
   60089             :   // the parent can't be set and must be set by the caller)
   60090           0 :      result = new SgUpirTargetField(  startOfConstruct_copy );
   60091           0 :      ROSE_ASSERT(result != NULL);
   60092             : 
   60093             :   // Copy data members of "this" class
   60094             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   60095             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   60096             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   60097           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   60098           0 :      if ( p_endOfConstruct != NULL ) 
   60099             :         { 
   60100           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   60101             :         } 
   60102             :        else 
   60103             :         { 
   60104             :           endOfConstruct_copy = NULL; 
   60105             :         } 
   60106             :   /* check for a valid pointer and delete if present */ 
   60107           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   60108             :   /* add assignment to result here */ 
   60109           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   60110             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   60111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   60112             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   60113           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   60114           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   60115             :         { 
   60116           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   60117             :         } 
   60118             :        else 
   60119             :         { 
   60120             :           attachedPreprocessingInfoPtr_copy = NULL; 
   60121             :         } 
   60122             :   /* check for a valid pointer and delete if present */ 
   60123           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   60124             :   /* add assignment to result here */ 
   60125           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   60126             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   60127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   60128             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   60129           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   60130           0 :      if ( p_attributeMechanism != NULL ) 
   60131             :         { 
   60132           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   60133             :         } 
   60134             :        else 
   60135             :         { 
   60136             :           attributeMechanism_copy = NULL; 
   60137             :         } 
   60138             :   /* check for a valid pointer and delete if present */ 
   60139           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   60140             :   /* add assignment to result here */ 
   60141           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   60142             :   // Copy non-constructor parameter data member (access function): target_type_copy
   60143             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for target_type
   60144             :   // case: toBeCopied == COPY_DATA for target_type
   60145           0 :      std::set<SgOmpClause::upir_target_type_enum> target_type_copy = p_target_type; 
   60146           0 :      result->p_target_type = target_type_copy; 
   60147             : 
   60148             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60149             : 
   60150             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   60151             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   60152             :   // fixupCopy(result,help);
   60153             : 
   60154             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   60155             :   // the Sg_File_Info objects that are built for the new IR nodes.
   60156           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   60157           0 :      if (locatedNode != NULL)
   60158             :         {
   60159             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   60160           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   60161           0 :           ROSE_ASSERT(start != NULL);
   60162             : #if 0
   60163             :        // Debugging information
   60164             :           if (start->get_parent() == NULL)
   60165             :              {
   60166             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60167             :              }
   60168             : #endif
   60169           0 :           start->set_parent(locatedNode);
   60170           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   60171             : 
   60172           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   60173             : 
   60174             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   60175             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   60176             :        // ROSE_ASSERT(end != NULL);
   60177           0 :           if (end == NULL)
   60178             :              {
   60179           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   60180             :              }
   60181             :             else
   60182             :              {
   60183             : #if 0
   60184             :             // Debugging information
   60185             :                if (end->get_parent() == NULL)
   60186             :                   {
   60187             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60188             :                   }
   60189             : #endif
   60190           0 :                end->set_parent(locatedNode);
   60191           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   60192             :              }
   60193             : 
   60194           0 :           SgExpression* expression = isSgExpression(result);
   60195           0 :           if (isSgExpression(this) != NULL)
   60196             :              {
   60197           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   60198             : 
   60199             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   60200           0 :                if (operatorPosition != NULL)
   60201             :                   {
   60202             : #if 0
   60203             :                  // Debugging information
   60204             :                     if (operatorPosition->get_parent() == NULL)
   60205             :                        {
   60206             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60207             :                        }
   60208             : #endif
   60209           0 :                     operatorPosition->set_parent(expression);
   60210           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   60211             :                   }
   60212             :              }
   60213             :         }
   60214             : 
   60215             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   60216           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   60217           0 :      if (initializedName != NULL)
   60218             :         {
   60219             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   60220           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   60221           0 :           ROSE_ASSERT(start != NULL);
   60222             : #if 0
   60223             :        // Debugging information
   60224             :           if (start->get_parent() == NULL)
   60225             :              {
   60226             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60227             :              }
   60228             : #endif
   60229           0 :           start->set_parent(initializedName);
   60230           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   60231             : 
   60232             : #if 0
   60233             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   60234             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   60235             : 
   60236             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   60237             :        // ROSE_ASSERT(end != NULL);
   60238             :           if (end == NULL)
   60239             :              {
   60240             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   60241             :              }
   60242             :             else
   60243             :              {
   60244             :                if (end->get_parent() == NULL)
   60245             :                   {
   60246             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60247             :                   }
   60248             :                end->set_parent(initializedName);
   60249             :                ROSE_ASSERT(end->get_parent() != NULL);
   60250             :              }
   60251             : #endif
   60252             :         }
   60253             : 
   60254             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   60255           0 :      help.insertCopiedNodePair(this,result);
   60256             : 
   60257             :   // printf ("End of copy SgUpirTargetField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   60258             : 
   60259             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   60260             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   60261           0 :      help.decrementDepth();
   60262             : 
   60263             :   // Test if this is the root of the copy!
   60264           0 :      if (help.get_depth() == 0)
   60265             :         {
   60266             :        // This is the original calling node.
   60267             : 
   60268             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   60269             :        // printf ("Calling SgUpirTargetField::fixupCopy() (from root of AST being copied) \n");
   60270             : #if ALT_FIXUP_COPY
   60271             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   60272           0 :           fixupCopy_scopes (result,help);
   60273           0 :           fixupCopy_symbols (result,help);
   60274           0 :           fixupCopy_references (result,help);
   60275             : #else
   60276             :           fixupCopy(result,help);
   60277             : #endif
   60278             :        // Allow this to be called recursively, so accumulate the state.
   60279             :        // Also, clear the state in the SgCopyHelp object.
   60280             :        // help.clearState();
   60281             :         }
   60282             : 
   60283           0 :      return result;
   60284             :    }
   60285             : 
   60286             : 
   60287             : /* #line 60288 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   60288             : 
   60289             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60290             : 
   60291           0 : SgNode* SgUpirDataItemField::copy ( SgCopyHelp& help) const
   60292             :    {
   60293           0 :      SgUpirDataItemField* result = NULL;
   60294             : 
   60295             :   // printf ("Copy SgUpirDataItemField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   60296             : 
   60297             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   60298             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   60299             :   // The default value of the depth is 0, so after this call the depth is 1!
   60300           0 :      help.incrementDepth();
   60301             : 
   60302             : #if 0
   60303             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   60304             :   // but it is not generally true that things can only be copied once!
   60305             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   60306             :   // AstAttribute* existingAttribute = const_cast<SgUpirDataItemField*>(this)->attribute["copied"];
   60307             :      bool previouslyCopied = const_cast<SgUpirDataItemField*>(this)->attribute.exists("copied");
   60308             :      if (previouslyCopied == true)
   60309             :         {
   60310             :           this->get_file_info()->display("Called from copy SgUpirDataItemField: debug");
   60311             :         }
   60312             :      ROSE_ASSERT(previouslyCopied == false);
   60313             : 
   60314             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   60315             :      AstAttribute* newAttribute = new AstAttribute();
   60316             :      ROSE_ASSERT(newAttribute != NULL);
   60317             : 
   60318             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   60319             :      const_cast<SgUpirDataItemField*>(this)->attribute.add("copied",newAttribute);
   60320             : #endif
   60321             : 
   60322             :   // Copy data members from base classes
   60323             :   // Copy constructor parameter data member: startOfConstruct_copy
   60324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   60325             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   60326           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   60327           0 :      if ( p_startOfConstruct != NULL ) 
   60328             :         { 
   60329           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   60330             :         } 
   60331             :        else 
   60332             :         { 
   60333             :           startOfConstruct_copy = NULL; 
   60334             :         } 
   60335             :   // Copy constructor parameter data member: symbol_copy
   60336           0 :      SgSymbol* symbol_copy; 
   60337             :   // case: not a listType for (using conditionalToCopyVariable)symbol
   60338           0 :           if (get_symbol() != NULL) 
   60339             :              { 
   60340           0 :                symbol_copy = static_cast<SgSymbol*>(help.copyAst(get_symbol())); 
   60341             :              } 
   60342             :             else 
   60343             :              { 
   60344             :                symbol_copy = NULL; 
   60345             :              } 
   60346             :  
   60347             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60348             : 
   60349             :   // Build an empty copy of this object (will be filled in, but 
   60350             :   // the parent can't be set and must be set by the caller)
   60351           0 :      result = new SgUpirDataItemField(  startOfConstruct_copy, symbol_copy );
   60352           0 :      ROSE_ASSERT(result != NULL);
   60353             : 
   60354             :   // Copy data members of "this" class
   60355             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   60356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   60357             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   60358           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   60359           0 :      if ( p_endOfConstruct != NULL ) 
   60360             :         { 
   60361           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   60362             :         } 
   60363             :        else 
   60364             :         { 
   60365             :           endOfConstruct_copy = NULL; 
   60366             :         } 
   60367             :   /* check for a valid pointer and delete if present */ 
   60368           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   60369             :   /* add assignment to result here */ 
   60370           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   60371             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   60372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   60373             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   60374           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   60375           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   60376             :         { 
   60377           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   60378             :         } 
   60379             :        else 
   60380             :         { 
   60381             :           attachedPreprocessingInfoPtr_copy = NULL; 
   60382             :         } 
   60383             :   /* check for a valid pointer and delete if present */ 
   60384           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   60385             :   /* add assignment to result here */ 
   60386           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   60387             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   60388             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   60389             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   60390           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   60391           0 :      if ( p_attributeMechanism != NULL ) 
   60392             :         { 
   60393           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   60394             :         } 
   60395             :        else 
   60396             :         { 
   60397             :           attributeMechanism_copy = NULL; 
   60398             :         } 
   60399             :   /* check for a valid pointer and delete if present */ 
   60400           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   60401             :   /* add assignment to result here */ 
   60402           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   60403             :   // Copy non-constructor parameter data member (access function): sharing_property_copy
   60404             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sharing_property
   60405             :   // case: toBeCopied == COPY_DATA for sharing_property
   60406           0 :      SgOmpClause::upir_data_sharing_enum sharing_property_copy = p_sharing_property; 
   60407           0 :      result->p_sharing_property = sharing_property_copy; 
   60408             :   // Copy non-constructor parameter data member (access function): sharing_visibility_copy
   60409             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sharing_visibility
   60410             :   // case: toBeCopied == COPY_DATA for sharing_visibility
   60411           0 :      SgOmpClause::upir_property_visibility_enum sharing_visibility_copy = p_sharing_visibility; 
   60412           0 :      result->p_sharing_visibility = sharing_visibility_copy; 
   60413             :   // Copy non-constructor parameter data member (access function): mapping_property_copy
   60414             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mapping_property
   60415             :   // case: toBeCopied == COPY_DATA for mapping_property
   60416           0 :      SgOmpClause::upir_data_mapping_enum mapping_property_copy = p_mapping_property; 
   60417           0 :      result->p_mapping_property = mapping_property_copy; 
   60418             :   // Copy non-constructor parameter data member (access function): mapping_visibility_copy
   60419             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mapping_visibility
   60420             :   // case: toBeCopied == COPY_DATA for mapping_visibility
   60421           0 :      SgOmpClause::upir_property_visibility_enum mapping_visibility_copy = p_mapping_visibility; 
   60422           0 :      result->p_mapping_visibility = mapping_visibility_copy; 
   60423             :   // Copy non-constructor parameter data member (access function): mapper_copy
   60424           0 :      SgExpression* mapper_copy; 
   60425             :   // case: not a listType for (using conditionalToCopyVariable)mapper
   60426           0 :           if (get_mapper() != NULL) 
   60427             :              { 
   60428           0 :                mapper_copy = static_cast<SgExpression*>(help.copyAst(get_mapper())); 
   60429             :              } 
   60430             :             else 
   60431             :              { 
   60432             :                mapper_copy = NULL; 
   60433             :              } 
   60434             :   /* check for a valid pointer and delete if present */ 
   60435           0 :      if (result->p_mapper != NULL) delete result->p_mapper; 
   60436           0 :      result->p_mapper = mapper_copy; 
   60437             :   // case: not a listType for (using conditionalToSetParent)mapper
   60438           0 :           if ( (mapper_copy != NULL) && (mapper_copy->get_parent() == NULL) && (isSgType(mapper_copy) == NULL) ) 
   60439             :              { 
   60440           0 :                mapper_copy->set_parent(result); 
   60441             :              } 
   60442             :   // Copy non-constructor parameter data member (access function): access_property_copy
   60443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for access_property
   60444             :   // case: toBeCopied == COPY_DATA for access_property
   60445           0 :      SgOmpClause::upir_data_access_enum access_property_copy = p_access_property; 
   60446           0 :      result->p_access_property = access_property_copy; 
   60447             :   // Copy non-constructor parameter data member (access function): unit_id_copy
   60448           0 :      SgExpression* unit_id_copy; 
   60449             :   // case: not a listType for (using conditionalToCopyVariable)unit_id
   60450           0 :           if (get_unit_id() != NULL) 
   60451             :              { 
   60452           0 :                unit_id_copy = static_cast<SgExpression*>(help.copyAst(get_unit_id())); 
   60453             :              } 
   60454             :             else 
   60455             :              { 
   60456             :                unit_id_copy = NULL; 
   60457             :              } 
   60458             :   /* check for a valid pointer and delete if present */ 
   60459           0 :      if (result->p_unit_id != NULL) delete result->p_unit_id; 
   60460           0 :      result->p_unit_id = unit_id_copy; 
   60461             :   // case: not a listType for (using conditionalToSetParent)unit_id
   60462           0 :           if ( (unit_id_copy != NULL) && (unit_id_copy->get_parent() == NULL) && (isSgType(unit_id_copy) == NULL) ) 
   60463             :              { 
   60464           0 :                unit_id_copy->set_parent(result); 
   60465             :              } 
   60466             :   // Copy non-constructor parameter data member (access function): distribution_pattern_copy
   60467             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for distribution_pattern
   60468             :   // case: toBeCopied == COPY_DATA for distribution_pattern
   60469           0 :      SgOmpClause::upir_data_distribution_pattern_enum distribution_pattern_copy = p_distribution_pattern; 
   60470           0 :      result->p_distribution_pattern = distribution_pattern_copy; 
   60471             :   // Copy non-constructor parameter data member (access function): section_copy
   60472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for section
   60473             :   // case: toBeCopied == COPY_DATA for section
   60474           0 :      std::list<std::list<SgExpression*>> section_copy = p_section; 
   60475           0 :      result->p_section = section_copy; 
   60476             :   // Copy non-constructor parameter data member (access function): allocator_copy
   60477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for allocator
   60478             :   // case: toBeCopied == COPY_DATA for allocator
   60479           0 :      SgOmpClause::upir_data_allocator_enum allocator_copy = p_allocator; 
   60480           0 :      result->p_allocator = allocator_copy; 
   60481             :   // Copy non-constructor parameter data member (access function): user_defined_allocator_copy
   60482           0 :      SgExpression* user_defined_allocator_copy; 
   60483             :   // case: not a listType for (using conditionalToCopyVariable)user_defined_allocator
   60484           0 :           if (get_user_defined_allocator() != NULL) 
   60485             :              { 
   60486           0 :                user_defined_allocator_copy = static_cast<SgExpression*>(help.copyAst(get_user_defined_allocator())); 
   60487             :              } 
   60488             :             else 
   60489             :              { 
   60490             :                user_defined_allocator_copy = NULL; 
   60491             :              } 
   60492             :   /* check for a valid pointer and delete if present */ 
   60493           0 :      if (result->p_user_defined_allocator != NULL) delete result->p_user_defined_allocator; 
   60494           0 :      result->p_user_defined_allocator = user_defined_allocator_copy; 
   60495             :   // case: not a listType for (using conditionalToSetParent)user_defined_allocator
   60496           0 :           if ( (user_defined_allocator_copy != NULL) && (user_defined_allocator_copy->get_parent() == NULL) && (isSgType(user_defined_allocator_copy) == NULL) ) 
   60497             :              { 
   60498           0 :                user_defined_allocator_copy->set_parent(result); 
   60499             :              } 
   60500             :   // Copy non-constructor parameter data member (access function): deallocator_copy
   60501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for deallocator
   60502             :   // case: toBeCopied == COPY_DATA for deallocator
   60503           0 :      SgOmpClause::upir_data_deallocator_enum deallocator_copy = p_deallocator; 
   60504           0 :      result->p_deallocator = deallocator_copy; 
   60505             :   // Copy non-constructor parameter data member (access function): user_defined_deallocator_copy
   60506           0 :      SgExpression* user_defined_deallocator_copy; 
   60507             :   // case: not a listType for (using conditionalToCopyVariable)user_defined_deallocator
   60508           0 :           if (get_user_defined_deallocator() != NULL) 
   60509             :              { 
   60510           0 :                user_defined_deallocator_copy = static_cast<SgExpression*>(help.copyAst(get_user_defined_deallocator())); 
   60511             :              } 
   60512             :             else 
   60513             :              { 
   60514             :                user_defined_deallocator_copy = NULL; 
   60515             :              } 
   60516             :   /* check for a valid pointer and delete if present */ 
   60517           0 :      if (result->p_user_defined_deallocator != NULL) delete result->p_user_defined_deallocator; 
   60518           0 :      result->p_user_defined_deallocator = user_defined_deallocator_copy; 
   60519             :   // case: not a listType for (using conditionalToSetParent)user_defined_deallocator
   60520           0 :           if ( (user_defined_deallocator_copy != NULL) && (user_defined_deallocator_copy->get_parent() == NULL) && (isSgType(user_defined_deallocator_copy) == NULL) ) 
   60521             :              { 
   60522           0 :                user_defined_deallocator_copy->set_parent(result); 
   60523             :              } 
   60524             :   // Copy non-constructor parameter data member (access function): memcpy_helper_copy
   60525           0 :      SgExpression* memcpy_helper_copy; 
   60526             :   // case: not a listType for (using conditionalToCopyVariable)memcpy_helper
   60527           0 :           if (get_memcpy_helper() != NULL) 
   60528             :              { 
   60529           0 :                memcpy_helper_copy = static_cast<SgExpression*>(help.copyAst(get_memcpy_helper())); 
   60530             :              } 
   60531             :             else 
   60532             :              { 
   60533             :                memcpy_helper_copy = NULL; 
   60534             :              } 
   60535             :   /* check for a valid pointer and delete if present */ 
   60536           0 :      if (result->p_memcpy_helper != NULL) delete result->p_memcpy_helper; 
   60537           0 :      result->p_memcpy_helper = memcpy_helper_copy; 
   60538             :   // case: not a listType for (using conditionalToSetParent)memcpy_helper
   60539           0 :           if ( (memcpy_helper_copy != NULL) && (memcpy_helper_copy->get_parent() == NULL) && (isSgType(memcpy_helper_copy) == NULL) ) 
   60540             :              { 
   60541           0 :                memcpy_helper_copy->set_parent(result); 
   60542             :              } 
   60543             :   // case: not a listType for (using conditionalToSetParent)symbol
   60544           0 :           if ( (symbol_copy != NULL) && (symbol_copy->get_parent() == NULL) && (isSgType(symbol_copy) == NULL) ) 
   60545             :              { 
   60546           0 :                symbol_copy->set_parent(result); 
   60547             :              } 
   60548             : 
   60549             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60550             : 
   60551             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   60552             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   60553             :   // fixupCopy(result,help);
   60554             : 
   60555             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   60556             :   // the Sg_File_Info objects that are built for the new IR nodes.
   60557           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   60558           0 :      if (locatedNode != NULL)
   60559             :         {
   60560             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   60561           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   60562           0 :           ROSE_ASSERT(start != NULL);
   60563             : #if 0
   60564             :        // Debugging information
   60565             :           if (start->get_parent() == NULL)
   60566             :              {
   60567             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60568             :              }
   60569             : #endif
   60570           0 :           start->set_parent(locatedNode);
   60571           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   60572             : 
   60573           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   60574             : 
   60575             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   60576             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   60577             :        // ROSE_ASSERT(end != NULL);
   60578           0 :           if (end == NULL)
   60579             :              {
   60580           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   60581             :              }
   60582             :             else
   60583             :              {
   60584             : #if 0
   60585             :             // Debugging information
   60586             :                if (end->get_parent() == NULL)
   60587             :                   {
   60588             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60589             :                   }
   60590             : #endif
   60591           0 :                end->set_parent(locatedNode);
   60592           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   60593             :              }
   60594             : 
   60595           0 :           SgExpression* expression = isSgExpression(result);
   60596           0 :           if (isSgExpression(this) != NULL)
   60597             :              {
   60598           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   60599             : 
   60600             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   60601           0 :                if (operatorPosition != NULL)
   60602             :                   {
   60603             : #if 0
   60604             :                  // Debugging information
   60605             :                     if (operatorPosition->get_parent() == NULL)
   60606             :                        {
   60607             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60608             :                        }
   60609             : #endif
   60610           0 :                     operatorPosition->set_parent(expression);
   60611           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   60612             :                   }
   60613             :              }
   60614             :         }
   60615             : 
   60616             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   60617           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   60618           0 :      if (initializedName != NULL)
   60619             :         {
   60620             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   60621           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   60622           0 :           ROSE_ASSERT(start != NULL);
   60623             : #if 0
   60624             :        // Debugging information
   60625             :           if (start->get_parent() == NULL)
   60626             :              {
   60627             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60628             :              }
   60629             : #endif
   60630           0 :           start->set_parent(initializedName);
   60631           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   60632             : 
   60633             : #if 0
   60634             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   60635             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   60636             : 
   60637             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   60638             :        // ROSE_ASSERT(end != NULL);
   60639             :           if (end == NULL)
   60640             :              {
   60641             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   60642             :              }
   60643             :             else
   60644             :              {
   60645             :                if (end->get_parent() == NULL)
   60646             :                   {
   60647             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60648             :                   }
   60649             :                end->set_parent(initializedName);
   60650             :                ROSE_ASSERT(end->get_parent() != NULL);
   60651             :              }
   60652             : #endif
   60653             :         }
   60654             : 
   60655             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   60656           0 :      help.insertCopiedNodePair(this,result);
   60657             : 
   60658             :   // printf ("End of copy SgUpirDataItemField = %p = %s \n",this,SageInterface::get_name(this).c_str());
   60659             : 
   60660             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   60661             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   60662           0 :      help.decrementDepth();
   60663             : 
   60664             :   // Test if this is the root of the copy!
   60665           0 :      if (help.get_depth() == 0)
   60666             :         {
   60667             :        // This is the original calling node.
   60668             : 
   60669             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   60670             :        // printf ("Calling SgUpirDataItemField::fixupCopy() (from root of AST being copied) \n");
   60671             : #if ALT_FIXUP_COPY
   60672             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   60673           0 :           fixupCopy_scopes (result,help);
   60674           0 :           fixupCopy_symbols (result,help);
   60675           0 :           fixupCopy_references (result,help);
   60676             : #else
   60677             :           fixupCopy(result,help);
   60678             : #endif
   60679             :        // Allow this to be called recursively, so accumulate the state.
   60680             :        // Also, clear the state in the SgCopyHelp object.
   60681             :        // help.clearState();
   60682             :         }
   60683             : 
   60684           0 :      return result;
   60685             :    }
   60686             : 
   60687             : 
   60688             : /* #line 60689 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   60689             : 
   60690             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60691             : 
   60692           0 : SgNode* SgLambdaCapture::copy ( SgCopyHelp& help) const
   60693             :    {
   60694           0 :      SgLambdaCapture* result = NULL;
   60695             : 
   60696             :   // printf ("Copy SgLambdaCapture = %p = %s \n",this,SageInterface::get_name(this).c_str());
   60697             : 
   60698             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   60699             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   60700             :   // The default value of the depth is 0, so after this call the depth is 1!
   60701           0 :      help.incrementDepth();
   60702             : 
   60703             : #if 0
   60704             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   60705             :   // but it is not generally true that things can only be copied once!
   60706             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   60707             :   // AstAttribute* existingAttribute = const_cast<SgLambdaCapture*>(this)->attribute["copied"];
   60708             :      bool previouslyCopied = const_cast<SgLambdaCapture*>(this)->attribute.exists("copied");
   60709             :      if (previouslyCopied == true)
   60710             :         {
   60711             :           this->get_file_info()->display("Called from copy SgLambdaCapture: debug");
   60712             :         }
   60713             :      ROSE_ASSERT(previouslyCopied == false);
   60714             : 
   60715             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   60716             :      AstAttribute* newAttribute = new AstAttribute();
   60717             :      ROSE_ASSERT(newAttribute != NULL);
   60718             : 
   60719             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   60720             :      const_cast<SgLambdaCapture*>(this)->attribute.add("copied",newAttribute);
   60721             : #endif
   60722             : 
   60723             :   // Copy data members from base classes
   60724             :   // Copy constructor parameter data member: startOfConstruct_copy
   60725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   60726             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   60727           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   60728           0 :      if ( p_startOfConstruct != NULL ) 
   60729             :         { 
   60730           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   60731             :         } 
   60732             :        else 
   60733             :         { 
   60734             :           startOfConstruct_copy = NULL; 
   60735             :         } 
   60736             :   // Copy constructor parameter data member: capture_variable_copy
   60737           0 :      SgExpression* capture_variable_copy; 
   60738             :   // case: not a listType for (using conditionalToCopyVariable)capture_variable
   60739           0 :           if (get_capture_variable() != NULL) 
   60740             :              { 
   60741           0 :                capture_variable_copy = static_cast<SgExpression*>(help.copyAst(get_capture_variable())); 
   60742             :              } 
   60743             :             else 
   60744             :              { 
   60745             :                capture_variable_copy = NULL; 
   60746             :              } 
   60747             :   // Copy constructor parameter data member: source_closure_variable_copy
   60748           0 :      SgExpression* source_closure_variable_copy; 
   60749             :   // case: not a listType for (using conditionalToCopyVariable)source_closure_variable
   60750           0 :           if (get_source_closure_variable() != NULL) 
   60751             :              { 
   60752           0 :                source_closure_variable_copy = static_cast<SgExpression*>(help.copyAst(get_source_closure_variable())); 
   60753             :              } 
   60754             :             else 
   60755             :              { 
   60756             :                source_closure_variable_copy = NULL; 
   60757             :              } 
   60758             :   // Copy constructor parameter data member: closure_variable_copy
   60759           0 :      SgExpression* closure_variable_copy; 
   60760             :   // case: not a listType for (using conditionalToCopyVariable)closure_variable
   60761           0 :           if (get_closure_variable() != NULL) 
   60762             :              { 
   60763           0 :                closure_variable_copy = static_cast<SgExpression*>(help.copyAst(get_closure_variable())); 
   60764             :              } 
   60765             :             else 
   60766             :              { 
   60767             :                closure_variable_copy = NULL; 
   60768             :              } 
   60769             :   // Copy constructor parameter data member: capture_by_reference_copy
   60770             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for capture_by_reference
   60771             :   // case: toBeCopied == COPY_DATA for capture_by_reference
   60772           0 :      bool capture_by_reference_copy = p_capture_by_reference; 
   60773             :   // Copy constructor parameter data member: implicit_copy
   60774             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for implicit
   60775             :   // case: toBeCopied == COPY_DATA for implicit
   60776           0 :      bool implicit_copy = p_implicit; 
   60777             :   // Copy constructor parameter data member: pack_expansion_copy
   60778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for pack_expansion
   60779             :   // case: toBeCopied == COPY_DATA for pack_expansion
   60780           0 :      bool pack_expansion_copy = p_pack_expansion; 
   60781             :  
   60782             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60783             : 
   60784             :   // Build an empty copy of this object (will be filled in, but 
   60785             :   // the parent can't be set and must be set by the caller)
   60786           0 :      result = new SgLambdaCapture(  startOfConstruct_copy, capture_variable_copy, source_closure_variable_copy, closure_variable_copy, capture_by_reference_copy, implicit_copy, pack_expansion_copy );
   60787           0 :      ROSE_ASSERT(result != NULL);
   60788             : 
   60789             :   // Copy data members of "this" class
   60790             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   60791             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   60792             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   60793           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   60794           0 :      if ( p_endOfConstruct != NULL ) 
   60795             :         { 
   60796           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   60797             :         } 
   60798             :        else 
   60799             :         { 
   60800             :           endOfConstruct_copy = NULL; 
   60801             :         } 
   60802             :   /* check for a valid pointer and delete if present */ 
   60803           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   60804             :   /* add assignment to result here */ 
   60805           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   60806             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   60807             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   60808             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   60809           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   60810           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   60811             :         { 
   60812           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   60813             :         } 
   60814             :        else 
   60815             :         { 
   60816             :           attachedPreprocessingInfoPtr_copy = NULL; 
   60817             :         } 
   60818             :   /* check for a valid pointer and delete if present */ 
   60819           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   60820             :   /* add assignment to result here */ 
   60821           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   60822             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   60823             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   60824             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   60825           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   60826           0 :      if ( p_attributeMechanism != NULL ) 
   60827             :         { 
   60828           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   60829             :         } 
   60830             :        else 
   60831             :         { 
   60832             :           attributeMechanism_copy = NULL; 
   60833             :         } 
   60834             :   /* check for a valid pointer and delete if present */ 
   60835           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   60836             :   /* add assignment to result here */ 
   60837           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   60838             :   // case: not a listType for (using conditionalToSetParent)capture_variable
   60839           0 :           if ( (capture_variable_copy != NULL) && (capture_variable_copy->get_parent() == NULL) && (isSgType(capture_variable_copy) == NULL) ) 
   60840             :              { 
   60841           0 :                capture_variable_copy->set_parent(result); 
   60842             :              } 
   60843             :   // case: not a listType for (using conditionalToSetParent)source_closure_variable
   60844           0 :           if ( (source_closure_variable_copy != NULL) && (source_closure_variable_copy->get_parent() == NULL) && (isSgType(source_closure_variable_copy) == NULL) ) 
   60845             :              { 
   60846           0 :                source_closure_variable_copy->set_parent(result); 
   60847             :              } 
   60848             :   // case: not a listType for (using conditionalToSetParent)closure_variable
   60849           0 :           if ( (closure_variable_copy != NULL) && (closure_variable_copy->get_parent() == NULL) && (isSgType(closure_variable_copy) == NULL) ) 
   60850             :              { 
   60851           0 :                closure_variable_copy->set_parent(result); 
   60852             :              } 
   60853             : 
   60854             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60855             : 
   60856             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   60857             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   60858             :   // fixupCopy(result,help);
   60859             : 
   60860             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   60861             :   // the Sg_File_Info objects that are built for the new IR nodes.
   60862           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   60863           0 :      if (locatedNode != NULL)
   60864             :         {
   60865             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   60866           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   60867           0 :           ROSE_ASSERT(start != NULL);
   60868             : #if 0
   60869             :        // Debugging information
   60870             :           if (start->get_parent() == NULL)
   60871             :              {
   60872             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60873             :              }
   60874             : #endif
   60875           0 :           start->set_parent(locatedNode);
   60876           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   60877             : 
   60878           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   60879             : 
   60880             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   60881             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   60882             :        // ROSE_ASSERT(end != NULL);
   60883           0 :           if (end == NULL)
   60884             :              {
   60885           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   60886             :              }
   60887             :             else
   60888             :              {
   60889             : #if 0
   60890             :             // Debugging information
   60891             :                if (end->get_parent() == NULL)
   60892             :                   {
   60893             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60894             :                   }
   60895             : #endif
   60896           0 :                end->set_parent(locatedNode);
   60897           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   60898             :              }
   60899             : 
   60900           0 :           SgExpression* expression = isSgExpression(result);
   60901           0 :           if (isSgExpression(this) != NULL)
   60902             :              {
   60903           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   60904             : 
   60905             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   60906           0 :                if (operatorPosition != NULL)
   60907             :                   {
   60908             : #if 0
   60909             :                  // Debugging information
   60910             :                     if (operatorPosition->get_parent() == NULL)
   60911             :                        {
   60912             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60913             :                        }
   60914             : #endif
   60915           0 :                     operatorPosition->set_parent(expression);
   60916           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   60917             :                   }
   60918             :              }
   60919             :         }
   60920             : 
   60921             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   60922           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   60923           0 :      if (initializedName != NULL)
   60924             :         {
   60925             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   60926           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   60927           0 :           ROSE_ASSERT(start != NULL);
   60928             : #if 0
   60929             :        // Debugging information
   60930             :           if (start->get_parent() == NULL)
   60931             :              {
   60932             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60933             :              }
   60934             : #endif
   60935           0 :           start->set_parent(initializedName);
   60936           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   60937             : 
   60938             : #if 0
   60939             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   60940             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   60941             : 
   60942             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   60943             :        // ROSE_ASSERT(end != NULL);
   60944             :           if (end == NULL)
   60945             :              {
   60946             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   60947             :              }
   60948             :             else
   60949             :              {
   60950             :                if (end->get_parent() == NULL)
   60951             :                   {
   60952             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   60953             :                   }
   60954             :                end->set_parent(initializedName);
   60955             :                ROSE_ASSERT(end->get_parent() != NULL);
   60956             :              }
   60957             : #endif
   60958             :         }
   60959             : 
   60960             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   60961           0 :      help.insertCopiedNodePair(this,result);
   60962             : 
   60963             :   // printf ("End of copy SgLambdaCapture = %p = %s \n",this,SageInterface::get_name(this).c_str());
   60964             : 
   60965             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   60966             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   60967           0 :      help.decrementDepth();
   60968             : 
   60969             :   // Test if this is the root of the copy!
   60970           0 :      if (help.get_depth() == 0)
   60971             :         {
   60972             :        // This is the original calling node.
   60973             : 
   60974             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   60975             :        // printf ("Calling SgLambdaCapture::fixupCopy() (from root of AST being copied) \n");
   60976             : #if ALT_FIXUP_COPY
   60977             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   60978           0 :           fixupCopy_scopes (result,help);
   60979           0 :           fixupCopy_symbols (result,help);
   60980           0 :           fixupCopy_references (result,help);
   60981             : #else
   60982             :           fixupCopy(result,help);
   60983             : #endif
   60984             :        // Allow this to be called recursively, so accumulate the state.
   60985             :        // Also, clear the state in the SgCopyHelp object.
   60986             :        // help.clearState();
   60987             :         }
   60988             : 
   60989           0 :      return result;
   60990             :    }
   60991             : 
   60992             : 
   60993             : /* #line 60994 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   60994             : 
   60995             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   60996             : 
   60997           0 : SgNode* SgLambdaCaptureList::copy ( SgCopyHelp& help) const
   60998             :    {
   60999           0 :      SgLambdaCaptureList* result = NULL;
   61000             : 
   61001             :   // printf ("Copy SgLambdaCaptureList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   61002             : 
   61003             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   61004             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   61005             :   // The default value of the depth is 0, so after this call the depth is 1!
   61006           0 :      help.incrementDepth();
   61007             : 
   61008             : #if 0
   61009             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   61010             :   // but it is not generally true that things can only be copied once!
   61011             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   61012             :   // AstAttribute* existingAttribute = const_cast<SgLambdaCaptureList*>(this)->attribute["copied"];
   61013             :      bool previouslyCopied = const_cast<SgLambdaCaptureList*>(this)->attribute.exists("copied");
   61014             :      if (previouslyCopied == true)
   61015             :         {
   61016             :           this->get_file_info()->display("Called from copy SgLambdaCaptureList: debug");
   61017             :         }
   61018             :      ROSE_ASSERT(previouslyCopied == false);
   61019             : 
   61020             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   61021             :      AstAttribute* newAttribute = new AstAttribute();
   61022             :      ROSE_ASSERT(newAttribute != NULL);
   61023             : 
   61024             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   61025             :      const_cast<SgLambdaCaptureList*>(this)->attribute.add("copied",newAttribute);
   61026             : #endif
   61027             : 
   61028             :   // Copy data members from base classes
   61029             :   // Copy constructor parameter data member: startOfConstruct_copy
   61030             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   61031             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   61032           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   61033           0 :      if ( p_startOfConstruct != NULL ) 
   61034             :         { 
   61035           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   61036             :         } 
   61037             :        else 
   61038             :         { 
   61039             :           startOfConstruct_copy = NULL; 
   61040             :         } 
   61041             :  
   61042             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61043             : 
   61044             :   // Build an empty copy of this object (will be filled in, but 
   61045             :   // the parent can't be set and must be set by the caller)
   61046           0 :      result = new SgLambdaCaptureList(  startOfConstruct_copy );
   61047           0 :      ROSE_ASSERT(result != NULL);
   61048             : 
   61049             :   // Copy data members of "this" class
   61050             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   61051             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   61052             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   61053           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   61054           0 :      if ( p_endOfConstruct != NULL ) 
   61055             :         { 
   61056           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   61057             :         } 
   61058             :        else 
   61059             :         { 
   61060             :           endOfConstruct_copy = NULL; 
   61061             :         } 
   61062             :   /* check for a valid pointer and delete if present */ 
   61063           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   61064             :   /* add assignment to result here */ 
   61065           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   61066             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   61067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   61068             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   61069           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   61070           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   61071             :         { 
   61072           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   61073             :         } 
   61074             :        else 
   61075             :         { 
   61076             :           attachedPreprocessingInfoPtr_copy = NULL; 
   61077             :         } 
   61078             :   /* check for a valid pointer and delete if present */ 
   61079           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   61080             :   /* add assignment to result here */ 
   61081           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   61082             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   61083             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   61084             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   61085           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   61086           0 :      if ( p_attributeMechanism != NULL ) 
   61087             :         { 
   61088           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   61089             :         } 
   61090             :        else 
   61091             :         { 
   61092             :           attributeMechanism_copy = NULL; 
   61093             :         } 
   61094             :   /* check for a valid pointer and delete if present */ 
   61095           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   61096             :   /* add assignment to result here */ 
   61097           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   61098             :   // Copy non-constructor parameter data member (list access function): result->get_capture_list()
   61099           0 :      SgLambdaCapturePtrList capture_list_copy; 
   61100             :   // case: listType for capture_list
   61101             :   // case: listType (typeIsPointerToList == false) for capture_list
   61102           0 :      SgLambdaCapturePtrList::const_iterator source_capture_list_iterator = get_capture_list().begin(); 
   61103           0 :      for ( /* empty by design */; source_capture_list_iterator != get_capture_list().end(); ++source_capture_list_iterator) 
   61104             :         { 
   61105           0 :           SgLambdaCapture* source_list_element = *source_capture_list_iterator; 
   61106           0 :           SgLambdaCapture* copy_list_element = NULL; 
   61107           0 :           if (source_list_element != NULL) 
   61108             :              { 
   61109           0 :                copy_list_element = static_cast<SgLambdaCapture*>(help.copyAst(*source_capture_list_iterator)); 
   61110             :              } 
   61111             :             else 
   61112             :              { 
   61113             :                copy_list_element = NULL; 
   61114             :              } 
   61115           0 :           capture_list_copy.push_back(copy_list_element); 
   61116             :         } 
   61117           0 :      result->p_capture_list = capture_list_copy; 
   61118             :   // case: listType for capture_list
   61119             :   // case: listType (typeIsPointerToList == false) for capture_list
   61120           0 :      SgLambdaCapturePtrList::const_iterator capture_list_iterator = result->get_capture_list().begin(); 
   61121           0 :      for ( /* empty by design */; capture_list_iterator != result->get_capture_list().end(); ++capture_list_iterator) 
   61122             :         { 
   61123           0 :           SgLambdaCapture* list_element = *capture_list_iterator; 
   61124           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   61125             :              { 
   61126           0 :                list_element->set_parent(result); 
   61127             :              } 
   61128             :         } 
   61129             : 
   61130             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61131             : 
   61132             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   61133             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   61134             :   // fixupCopy(result,help);
   61135             : 
   61136             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   61137             :   // the Sg_File_Info objects that are built for the new IR nodes.
   61138           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   61139           0 :      if (locatedNode != NULL)
   61140             :         {
   61141             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   61142           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   61143           0 :           ROSE_ASSERT(start != NULL);
   61144             : #if 0
   61145             :        // Debugging information
   61146             :           if (start->get_parent() == NULL)
   61147             :              {
   61148             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61149             :              }
   61150             : #endif
   61151           0 :           start->set_parent(locatedNode);
   61152           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   61153             : 
   61154           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   61155             : 
   61156             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   61157             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   61158             :        // ROSE_ASSERT(end != NULL);
   61159           0 :           if (end == NULL)
   61160             :              {
   61161           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   61162             :              }
   61163             :             else
   61164             :              {
   61165             : #if 0
   61166             :             // Debugging information
   61167             :                if (end->get_parent() == NULL)
   61168             :                   {
   61169             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61170             :                   }
   61171             : #endif
   61172           0 :                end->set_parent(locatedNode);
   61173           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   61174             :              }
   61175             : 
   61176           0 :           SgExpression* expression = isSgExpression(result);
   61177           0 :           if (isSgExpression(this) != NULL)
   61178             :              {
   61179           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   61180             : 
   61181             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   61182           0 :                if (operatorPosition != NULL)
   61183             :                   {
   61184             : #if 0
   61185             :                  // Debugging information
   61186             :                     if (operatorPosition->get_parent() == NULL)
   61187             :                        {
   61188             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61189             :                        }
   61190             : #endif
   61191           0 :                     operatorPosition->set_parent(expression);
   61192           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   61193             :                   }
   61194             :              }
   61195             :         }
   61196             : 
   61197             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   61198           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   61199           0 :      if (initializedName != NULL)
   61200             :         {
   61201             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   61202           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   61203           0 :           ROSE_ASSERT(start != NULL);
   61204             : #if 0
   61205             :        // Debugging information
   61206             :           if (start->get_parent() == NULL)
   61207             :              {
   61208             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61209             :              }
   61210             : #endif
   61211           0 :           start->set_parent(initializedName);
   61212           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   61213             : 
   61214             : #if 0
   61215             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   61216             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   61217             : 
   61218             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   61219             :        // ROSE_ASSERT(end != NULL);
   61220             :           if (end == NULL)
   61221             :              {
   61222             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   61223             :              }
   61224             :             else
   61225             :              {
   61226             :                if (end->get_parent() == NULL)
   61227             :                   {
   61228             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61229             :                   }
   61230             :                end->set_parent(initializedName);
   61231             :                ROSE_ASSERT(end->get_parent() != NULL);
   61232             :              }
   61233             : #endif
   61234             :         }
   61235             : 
   61236             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   61237           0 :      help.insertCopiedNodePair(this,result);
   61238             : 
   61239             :   // printf ("End of copy SgLambdaCaptureList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   61240             : 
   61241             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   61242             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   61243           0 :      help.decrementDepth();
   61244             : 
   61245             :   // Test if this is the root of the copy!
   61246           0 :      if (help.get_depth() == 0)
   61247             :         {
   61248             :        // This is the original calling node.
   61249             : 
   61250             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   61251             :        // printf ("Calling SgLambdaCaptureList::fixupCopy() (from root of AST being copied) \n");
   61252             : #if ALT_FIXUP_COPY
   61253             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   61254           0 :           fixupCopy_scopes (result,help);
   61255           0 :           fixupCopy_symbols (result,help);
   61256           0 :           fixupCopy_references (result,help);
   61257             : #else
   61258             :           fixupCopy(result,help);
   61259             : #endif
   61260             :        // Allow this to be called recursively, so accumulate the state.
   61261             :        // Also, clear the state in the SgCopyHelp object.
   61262             :        // help.clearState();
   61263             :         }
   61264             : 
   61265           0 :      return result;
   61266             :    }
   61267             : 
   61268             : 
   61269             : /* #line 61270 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   61270             : 
   61271             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61272             : 
   61273           0 : SgNode* SgStatement::copy ( SgCopyHelp& help) const
   61274             :    {
   61275           0 :      SgStatement* result = NULL;
   61276             : 
   61277             :   // printf ("Copy SgStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   61278             : 
   61279             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   61280             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   61281             :   // The default value of the depth is 0, so after this call the depth is 1!
   61282           0 :      help.incrementDepth();
   61283             : 
   61284             : #if 0
   61285             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   61286             :   // but it is not generally true that things can only be copied once!
   61287             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   61288             :   // AstAttribute* existingAttribute = const_cast<SgStatement*>(this)->attribute["copied"];
   61289             :      bool previouslyCopied = const_cast<SgStatement*>(this)->attribute.exists("copied");
   61290             :      if (previouslyCopied == true)
   61291             :         {
   61292             :           this->get_file_info()->display("Called from copy SgStatement: debug");
   61293             :         }
   61294             :      ROSE_ASSERT(previouslyCopied == false);
   61295             : 
   61296             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   61297             :      AstAttribute* newAttribute = new AstAttribute();
   61298             :      ROSE_ASSERT(newAttribute != NULL);
   61299             : 
   61300             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   61301             :      const_cast<SgStatement*>(this)->attribute.add("copied",newAttribute);
   61302             : #endif
   61303             : 
   61304             :   // Copy data members from base classes
   61305             :   // Copy constructor parameter data member: startOfConstruct_copy
   61306             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   61307             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   61308           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   61309           0 :      if ( p_startOfConstruct != NULL ) 
   61310             :         { 
   61311           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   61312             :         } 
   61313             :        else 
   61314             :         { 
   61315             :           startOfConstruct_copy = NULL; 
   61316             :         } 
   61317             :  
   61318             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61319             : 
   61320             :   // Build an empty copy of this object (will be filled in, but 
   61321             :   // the parent can't be set and must be set by the caller)
   61322           0 :      result = new SgStatement(  startOfConstruct_copy );
   61323           0 :      ROSE_ASSERT(result != NULL);
   61324             : 
   61325             :   // Copy data members of "this" class
   61326             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   61327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   61328             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   61329           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   61330           0 :      if ( p_endOfConstruct != NULL ) 
   61331             :         { 
   61332           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   61333             :         } 
   61334             :        else 
   61335             :         { 
   61336             :           endOfConstruct_copy = NULL; 
   61337             :         } 
   61338             :   /* check for a valid pointer and delete if present */ 
   61339           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   61340             :   /* add assignment to result here */ 
   61341           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   61342             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   61343             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   61344             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   61345           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   61346           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   61347             :         { 
   61348           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   61349             :         } 
   61350             :        else 
   61351             :         { 
   61352             :           attachedPreprocessingInfoPtr_copy = NULL; 
   61353             :         } 
   61354             :   /* check for a valid pointer and delete if present */ 
   61355           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   61356             :   /* add assignment to result here */ 
   61357           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   61358             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   61359             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   61360             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   61361           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   61362           0 :      if ( p_attributeMechanism != NULL ) 
   61363             :         { 
   61364           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   61365             :         } 
   61366             :        else 
   61367             :         { 
   61368             :           attributeMechanism_copy = NULL; 
   61369             :         } 
   61370             :   /* check for a valid pointer and delete if present */ 
   61371           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   61372             :   /* add assignment to result here */ 
   61373           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   61374             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   61375             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   61376             :   // case: toBeCopied == COPY_DATA for numeric_label
   61377           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   61378           0 :      result->p_numeric_label = numeric_label_copy; 
   61379             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   61380             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   61381             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   61382           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   61383           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   61384             : 
   61385             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61386             : 
   61387             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   61388             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   61389             :   // fixupCopy(result,help);
   61390             : 
   61391             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   61392             :   // the Sg_File_Info objects that are built for the new IR nodes.
   61393           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   61394           0 :      if (locatedNode != NULL)
   61395             :         {
   61396             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   61397           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   61398           0 :           ROSE_ASSERT(start != NULL);
   61399             : #if 0
   61400             :        // Debugging information
   61401             :           if (start->get_parent() == NULL)
   61402             :              {
   61403             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61404             :              }
   61405             : #endif
   61406           0 :           start->set_parent(locatedNode);
   61407           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   61408             : 
   61409           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   61410             : 
   61411             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   61412             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   61413             :        // ROSE_ASSERT(end != NULL);
   61414           0 :           if (end == NULL)
   61415             :              {
   61416           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   61417             :              }
   61418             :             else
   61419             :              {
   61420             : #if 0
   61421             :             // Debugging information
   61422             :                if (end->get_parent() == NULL)
   61423             :                   {
   61424             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61425             :                   }
   61426             : #endif
   61427           0 :                end->set_parent(locatedNode);
   61428           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   61429             :              }
   61430             : 
   61431           0 :           SgExpression* expression = isSgExpression(result);
   61432           0 :           if (isSgExpression(this) != NULL)
   61433             :              {
   61434           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   61435             : 
   61436             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   61437           0 :                if (operatorPosition != NULL)
   61438             :                   {
   61439             : #if 0
   61440             :                  // Debugging information
   61441             :                     if (operatorPosition->get_parent() == NULL)
   61442             :                        {
   61443             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61444             :                        }
   61445             : #endif
   61446           0 :                     operatorPosition->set_parent(expression);
   61447           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   61448             :                   }
   61449             :              }
   61450             :         }
   61451             : 
   61452             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   61453           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   61454           0 :      if (initializedName != NULL)
   61455             :         {
   61456             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   61457           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   61458           0 :           ROSE_ASSERT(start != NULL);
   61459             : #if 0
   61460             :        // Debugging information
   61461             :           if (start->get_parent() == NULL)
   61462             :              {
   61463             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61464             :              }
   61465             : #endif
   61466           0 :           start->set_parent(initializedName);
   61467           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   61468             : 
   61469             : #if 0
   61470             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   61471             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   61472             : 
   61473             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   61474             :        // ROSE_ASSERT(end != NULL);
   61475             :           if (end == NULL)
   61476             :              {
   61477             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   61478             :              }
   61479             :             else
   61480             :              {
   61481             :                if (end->get_parent() == NULL)
   61482             :                   {
   61483             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61484             :                   }
   61485             :                end->set_parent(initializedName);
   61486             :                ROSE_ASSERT(end->get_parent() != NULL);
   61487             :              }
   61488             : #endif
   61489             :         }
   61490             : 
   61491             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   61492           0 :      help.insertCopiedNodePair(this,result);
   61493             : 
   61494             :   // printf ("End of copy SgStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   61495             : 
   61496             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   61497             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   61498           0 :      help.decrementDepth();
   61499             : 
   61500             :   // Test if this is the root of the copy!
   61501           0 :      if (help.get_depth() == 0)
   61502             :         {
   61503             :        // This is the original calling node.
   61504             : 
   61505             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   61506             :        // printf ("Calling SgStatement::fixupCopy() (from root of AST being copied) \n");
   61507             : #if ALT_FIXUP_COPY
   61508             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   61509           0 :           fixupCopy_scopes (result,help);
   61510           0 :           fixupCopy_symbols (result,help);
   61511           0 :           fixupCopy_references (result,help);
   61512             : #else
   61513             :           fixupCopy(result,help);
   61514             : #endif
   61515             :        // Allow this to be called recursively, so accumulate the state.
   61516             :        // Also, clear the state in the SgCopyHelp object.
   61517             :        // help.clearState();
   61518             :         }
   61519             : 
   61520           0 :      return result;
   61521             :    }
   61522             : 
   61523             : 
   61524             : /* #line 61525 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   61525             : 
   61526             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61527             : 
   61528           0 : SgNode* SgScopeStatement::copy ( SgCopyHelp& help) const
   61529             :    {
   61530           0 :      SgScopeStatement* result = NULL;
   61531             : 
   61532             :   // printf ("Copy SgScopeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   61533             : 
   61534             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   61535             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   61536             :   // The default value of the depth is 0, so after this call the depth is 1!
   61537           0 :      help.incrementDepth();
   61538             : 
   61539             : #if 0
   61540             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   61541             :   // but it is not generally true that things can only be copied once!
   61542             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   61543             :   // AstAttribute* existingAttribute = const_cast<SgScopeStatement*>(this)->attribute["copied"];
   61544             :      bool previouslyCopied = const_cast<SgScopeStatement*>(this)->attribute.exists("copied");
   61545             :      if (previouslyCopied == true)
   61546             :         {
   61547             :           this->get_file_info()->display("Called from copy SgScopeStatement: debug");
   61548             :         }
   61549             :      ROSE_ASSERT(previouslyCopied == false);
   61550             : 
   61551             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   61552             :      AstAttribute* newAttribute = new AstAttribute();
   61553             :      ROSE_ASSERT(newAttribute != NULL);
   61554             : 
   61555             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   61556             :      const_cast<SgScopeStatement*>(this)->attribute.add("copied",newAttribute);
   61557             : #endif
   61558             : 
   61559             :   // Copy data members from base classes
   61560             :  
   61561             : 
   61562             :   // Build an empty copy of this object (will be filled in, but 
   61563             :   // the parent can't be set and must be set by the caller)
   61564           0 :      result = new SgScopeStatement(  );
   61565           0 :      ROSE_ASSERT(result != NULL);
   61566             : 
   61567             :   // Copy data members of "this" class
   61568             :   // Copy non-constructor parameter data member (access function): startOfConstruct_copy
   61569             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   61570             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   61571           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   61572           0 :      if ( p_startOfConstruct != NULL ) 
   61573             :         { 
   61574           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   61575             :         } 
   61576             :        else 
   61577             :         { 
   61578             :           startOfConstruct_copy = NULL; 
   61579             :         } 
   61580             :   /* check for a valid pointer and delete if present */ 
   61581           0 :      if (result->p_startOfConstruct != NULL) delete result->p_startOfConstruct; 
   61582             :   /* add assignment to result here */ 
   61583           0 :      result->p_startOfConstruct = startOfConstruct_copy; 
   61584             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   61585             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   61586             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   61587           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   61588           0 :      if ( p_endOfConstruct != NULL ) 
   61589             :         { 
   61590           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   61591             :         } 
   61592             :        else 
   61593             :         { 
   61594             :           endOfConstruct_copy = NULL; 
   61595             :         } 
   61596             :   /* check for a valid pointer and delete if present */ 
   61597           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   61598             :   /* add assignment to result here */ 
   61599           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   61600             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   61601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   61602             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   61603           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   61604           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   61605             :         { 
   61606           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   61607             :         } 
   61608             :        else 
   61609             :         { 
   61610             :           attachedPreprocessingInfoPtr_copy = NULL; 
   61611             :         } 
   61612             :   /* check for a valid pointer and delete if present */ 
   61613           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   61614             :   /* add assignment to result here */ 
   61615           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   61616             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   61617             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   61618             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   61619           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   61620           0 :      if ( p_attributeMechanism != NULL ) 
   61621             :         { 
   61622           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   61623             :         } 
   61624             :        else 
   61625             :         { 
   61626             :           attributeMechanism_copy = NULL; 
   61627             :         } 
   61628             :   /* check for a valid pointer and delete if present */ 
   61629           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   61630             :   /* add assignment to result here */ 
   61631           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   61632             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   61633             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   61634             :   // case: toBeCopied == COPY_DATA for numeric_label
   61635           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   61636           0 :      result->p_numeric_label = numeric_label_copy; 
   61637             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   61638             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   61639             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   61640           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   61641           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   61642             : 
   61643             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61644             : 
   61645             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   61646             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   61647             :   // fixupCopy(result,help);
   61648             : 
   61649             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   61650             :   // the Sg_File_Info objects that are built for the new IR nodes.
   61651           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   61652           0 :      if (locatedNode != NULL)
   61653             :         {
   61654             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   61655           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   61656           0 :           ROSE_ASSERT(start != NULL);
   61657             : #if 0
   61658             :        // Debugging information
   61659             :           if (start->get_parent() == NULL)
   61660             :              {
   61661             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61662             :              }
   61663             : #endif
   61664           0 :           start->set_parent(locatedNode);
   61665           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   61666             : 
   61667           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   61668             : 
   61669             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   61670             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   61671             :        // ROSE_ASSERT(end != NULL);
   61672           0 :           if (end == NULL)
   61673             :              {
   61674           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   61675             :              }
   61676             :             else
   61677             :              {
   61678             : #if 0
   61679             :             // Debugging information
   61680             :                if (end->get_parent() == NULL)
   61681             :                   {
   61682             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61683             :                   }
   61684             : #endif
   61685           0 :                end->set_parent(locatedNode);
   61686           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   61687             :              }
   61688             : 
   61689           0 :           SgExpression* expression = isSgExpression(result);
   61690           0 :           if (isSgExpression(this) != NULL)
   61691             :              {
   61692           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   61693             : 
   61694             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   61695           0 :                if (operatorPosition != NULL)
   61696             :                   {
   61697             : #if 0
   61698             :                  // Debugging information
   61699             :                     if (operatorPosition->get_parent() == NULL)
   61700             :                        {
   61701             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61702             :                        }
   61703             : #endif
   61704           0 :                     operatorPosition->set_parent(expression);
   61705           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   61706             :                   }
   61707             :              }
   61708             :         }
   61709             : 
   61710             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   61711           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   61712           0 :      if (initializedName != NULL)
   61713             :         {
   61714             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   61715           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   61716           0 :           ROSE_ASSERT(start != NULL);
   61717             : #if 0
   61718             :        // Debugging information
   61719             :           if (start->get_parent() == NULL)
   61720             :              {
   61721             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61722             :              }
   61723             : #endif
   61724           0 :           start->set_parent(initializedName);
   61725           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   61726             : 
   61727             : #if 0
   61728             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   61729             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   61730             : 
   61731             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   61732             :        // ROSE_ASSERT(end != NULL);
   61733             :           if (end == NULL)
   61734             :              {
   61735             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   61736             :              }
   61737             :             else
   61738             :              {
   61739             :                if (end->get_parent() == NULL)
   61740             :                   {
   61741             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61742             :                   }
   61743             :                end->set_parent(initializedName);
   61744             :                ROSE_ASSERT(end->get_parent() != NULL);
   61745             :              }
   61746             : #endif
   61747             :         }
   61748             : 
   61749             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   61750           0 :      help.insertCopiedNodePair(this,result);
   61751             : 
   61752             :   // printf ("End of copy SgScopeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   61753             : 
   61754             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   61755             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   61756           0 :      help.decrementDepth();
   61757             : 
   61758             :   // Test if this is the root of the copy!
   61759           0 :      if (help.get_depth() == 0)
   61760             :         {
   61761             :        // This is the original calling node.
   61762             : 
   61763             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   61764             :        // printf ("Calling SgScopeStatement::fixupCopy() (from root of AST being copied) \n");
   61765             : #if ALT_FIXUP_COPY
   61766             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   61767           0 :           fixupCopy_scopes (result,help);
   61768           0 :           fixupCopy_symbols (result,help);
   61769           0 :           fixupCopy_references (result,help);
   61770             : #else
   61771             :           fixupCopy(result,help);
   61772             : #endif
   61773             :        // Allow this to be called recursively, so accumulate the state.
   61774             :        // Also, clear the state in the SgCopyHelp object.
   61775             :        // help.clearState();
   61776             :         }
   61777             : 
   61778           0 :      return result;
   61779             :    }
   61780             : 
   61781             : 
   61782             : /* #line 61783 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   61783             : 
   61784             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61785             : 
   61786           0 : SgNode* SgGlobal::copy ( SgCopyHelp& help) const
   61787             :    {
   61788           0 :      SgGlobal* result = NULL;
   61789             : 
   61790             :   // printf ("Copy SgGlobal = %p = %s \n",this,SageInterface::get_name(this).c_str());
   61791             : 
   61792             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   61793             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   61794             :   // The default value of the depth is 0, so after this call the depth is 1!
   61795           0 :      help.incrementDepth();
   61796             : 
   61797             : #if 0
   61798             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   61799             :   // but it is not generally true that things can only be copied once!
   61800             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   61801             :   // AstAttribute* existingAttribute = const_cast<SgGlobal*>(this)->attribute["copied"];
   61802             :      bool previouslyCopied = const_cast<SgGlobal*>(this)->attribute.exists("copied");
   61803             :      if (previouslyCopied == true)
   61804             :         {
   61805             :           this->get_file_info()->display("Called from copy SgGlobal: debug");
   61806             :         }
   61807             :      ROSE_ASSERT(previouslyCopied == false);
   61808             : 
   61809             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   61810             :      AstAttribute* newAttribute = new AstAttribute();
   61811             :      ROSE_ASSERT(newAttribute != NULL);
   61812             : 
   61813             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   61814             :      const_cast<SgGlobal*>(this)->attribute.add("copied",newAttribute);
   61815             : #endif
   61816             : 
   61817             :   // Copy data members from base classes
   61818             :   // Copy constructor parameter data member: startOfConstruct_copy
   61819             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   61820             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   61821           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   61822           0 :      if ( p_startOfConstruct != NULL ) 
   61823             :         { 
   61824           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   61825             :         } 
   61826             :        else 
   61827             :         { 
   61828             :           startOfConstruct_copy = NULL; 
   61829             :         } 
   61830             :  
   61831             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61832             : 
   61833             :   // Build an empty copy of this object (will be filled in, but 
   61834             :   // the parent can't be set and must be set by the caller)
   61835           0 :      result = new SgGlobal(  startOfConstruct_copy );
   61836           0 :      ROSE_ASSERT(result != NULL);
   61837             : 
   61838             :   // Copy data members of "this" class
   61839             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   61840             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   61841             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   61842           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   61843           0 :      if ( p_endOfConstruct != NULL ) 
   61844             :         { 
   61845           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   61846             :         } 
   61847             :        else 
   61848             :         { 
   61849             :           endOfConstruct_copy = NULL; 
   61850             :         } 
   61851             :   /* check for a valid pointer and delete if present */ 
   61852           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   61853             :   /* add assignment to result here */ 
   61854           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   61855             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   61856             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   61857             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   61858           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   61859           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   61860             :         { 
   61861           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   61862             :         } 
   61863             :        else 
   61864             :         { 
   61865             :           attachedPreprocessingInfoPtr_copy = NULL; 
   61866             :         } 
   61867             :   /* check for a valid pointer and delete if present */ 
   61868           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   61869             :   /* add assignment to result here */ 
   61870           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   61871             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   61872             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   61873             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   61874           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   61875           0 :      if ( p_attributeMechanism != NULL ) 
   61876             :         { 
   61877           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   61878             :         } 
   61879             :        else 
   61880             :         { 
   61881             :           attributeMechanism_copy = NULL; 
   61882             :         } 
   61883             :   /* check for a valid pointer and delete if present */ 
   61884           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   61885             :   /* add assignment to result here */ 
   61886           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   61887             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   61888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   61889             :   // case: toBeCopied == COPY_DATA for numeric_label
   61890           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   61891           0 :      result->p_numeric_label = numeric_label_copy; 
   61892             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   61893             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   61894             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   61895           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   61896           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   61897             :   // Copy non-constructor parameter data member (list access function): result->get_declarations()
   61898           0 :      SgDeclarationStatementPtrList declarations_copy; 
   61899             :   // case: listType for declarations
   61900             :   // case: listType (typeIsPointerToList == false) for declarations
   61901           0 :      SgDeclarationStatementPtrList::const_iterator source_declarations_iterator = get_declarations().begin(); 
   61902           0 :      for ( /* empty by design */; source_declarations_iterator != get_declarations().end(); ++source_declarations_iterator) 
   61903             :         { 
   61904           0 :           SgDeclarationStatement* source_list_element = *source_declarations_iterator; 
   61905           0 :           SgDeclarationStatement* copy_list_element = NULL; 
   61906           0 :           if (source_list_element != NULL) 
   61907             :              { 
   61908           0 :                copy_list_element = static_cast<SgDeclarationStatement*>(help.copyAst(*source_declarations_iterator)); 
   61909             :              } 
   61910             :             else 
   61911             :              { 
   61912             :                copy_list_element = NULL; 
   61913             :              } 
   61914           0 :           declarations_copy.push_back(copy_list_element); 
   61915             :         } 
   61916           0 :      result->p_declarations = declarations_copy; 
   61917             :   // case: listType for declarations
   61918             :   // case: listType (typeIsPointerToList == false) for declarations
   61919           0 :      SgDeclarationStatementPtrList::const_iterator declarations_iterator = result->get_declarations().begin(); 
   61920           0 :      for ( /* empty by design */; declarations_iterator != result->get_declarations().end(); ++declarations_iterator) 
   61921             :         { 
   61922           0 :           SgDeclarationStatement* list_element = *declarations_iterator; 
   61923           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   61924             :              { 
   61925           0 :                list_element->set_parent(result); 
   61926             :              } 
   61927             :         } 
   61928             : 
   61929             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   61930             : 
   61931             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   61932             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   61933             :   // fixupCopy(result,help);
   61934             : 
   61935             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   61936             :   // the Sg_File_Info objects that are built for the new IR nodes.
   61937           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   61938           0 :      if (locatedNode != NULL)
   61939             :         {
   61940             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   61941           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   61942           0 :           ROSE_ASSERT(start != NULL);
   61943             : #if 0
   61944             :        // Debugging information
   61945             :           if (start->get_parent() == NULL)
   61946             :              {
   61947             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61948             :              }
   61949             : #endif
   61950           0 :           start->set_parent(locatedNode);
   61951           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   61952             : 
   61953           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   61954             : 
   61955             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   61956             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   61957             :        // ROSE_ASSERT(end != NULL);
   61958           0 :           if (end == NULL)
   61959             :              {
   61960           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   61961             :              }
   61962             :             else
   61963             :              {
   61964             : #if 0
   61965             :             // Debugging information
   61966             :                if (end->get_parent() == NULL)
   61967             :                   {
   61968             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61969             :                   }
   61970             : #endif
   61971           0 :                end->set_parent(locatedNode);
   61972           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   61973             :              }
   61974             : 
   61975           0 :           SgExpression* expression = isSgExpression(result);
   61976           0 :           if (isSgExpression(this) != NULL)
   61977             :              {
   61978           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   61979             : 
   61980             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   61981           0 :                if (operatorPosition != NULL)
   61982             :                   {
   61983             : #if 0
   61984             :                  // Debugging information
   61985             :                     if (operatorPosition->get_parent() == NULL)
   61986             :                        {
   61987             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   61988             :                        }
   61989             : #endif
   61990           0 :                     operatorPosition->set_parent(expression);
   61991           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   61992             :                   }
   61993             :              }
   61994             :         }
   61995             : 
   61996             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   61997           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   61998           0 :      if (initializedName != NULL)
   61999             :         {
   62000             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   62001           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   62002           0 :           ROSE_ASSERT(start != NULL);
   62003             : #if 0
   62004             :        // Debugging information
   62005             :           if (start->get_parent() == NULL)
   62006             :              {
   62007             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62008             :              }
   62009             : #endif
   62010           0 :           start->set_parent(initializedName);
   62011           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   62012             : 
   62013             : #if 0
   62014             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   62015             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   62016             : 
   62017             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   62018             :        // ROSE_ASSERT(end != NULL);
   62019             :           if (end == NULL)
   62020             :              {
   62021             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   62022             :              }
   62023             :             else
   62024             :              {
   62025             :                if (end->get_parent() == NULL)
   62026             :                   {
   62027             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62028             :                   }
   62029             :                end->set_parent(initializedName);
   62030             :                ROSE_ASSERT(end->get_parent() != NULL);
   62031             :              }
   62032             : #endif
   62033             :         }
   62034             : 
   62035             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   62036           0 :      help.insertCopiedNodePair(this,result);
   62037             : 
   62038             :   // printf ("End of copy SgGlobal = %p = %s \n",this,SageInterface::get_name(this).c_str());
   62039             : 
   62040             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   62041             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   62042           0 :      help.decrementDepth();
   62043             : 
   62044             :   // Test if this is the root of the copy!
   62045           0 :      if (help.get_depth() == 0)
   62046             :         {
   62047             :        // This is the original calling node.
   62048             : 
   62049             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   62050             :        // printf ("Calling SgGlobal::fixupCopy() (from root of AST being copied) \n");
   62051             : #if ALT_FIXUP_COPY
   62052             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   62053           0 :           fixupCopy_scopes (result,help);
   62054           0 :           fixupCopy_symbols (result,help);
   62055           0 :           fixupCopy_references (result,help);
   62056             : #else
   62057             :           fixupCopy(result,help);
   62058             : #endif
   62059             :        // Allow this to be called recursively, so accumulate the state.
   62060             :        // Also, clear the state in the SgCopyHelp object.
   62061             :        // help.clearState();
   62062             :         }
   62063             : 
   62064           0 :      return result;
   62065             :    }
   62066             : 
   62067             : 
   62068             : /* #line 62069 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   62069             : 
   62070             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   62071             : 
   62072          15 : SgNode* SgBasicBlock::copy ( SgCopyHelp& help) const
   62073             :    {
   62074          15 :      SgBasicBlock* result = NULL;
   62075             : 
   62076             :   // printf ("Copy SgBasicBlock = %p = %s \n",this,SageInterface::get_name(this).c_str());
   62077             : 
   62078             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   62079             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   62080             :   // The default value of the depth is 0, so after this call the depth is 1!
   62081          15 :      help.incrementDepth();
   62082             : 
   62083             : #if 0
   62084             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   62085             :   // but it is not generally true that things can only be copied once!
   62086             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   62087             :   // AstAttribute* existingAttribute = const_cast<SgBasicBlock*>(this)->attribute["copied"];
   62088             :      bool previouslyCopied = const_cast<SgBasicBlock*>(this)->attribute.exists("copied");
   62089             :      if (previouslyCopied == true)
   62090             :         {
   62091             :           this->get_file_info()->display("Called from copy SgBasicBlock: debug");
   62092             :         }
   62093             :      ROSE_ASSERT(previouslyCopied == false);
   62094             : 
   62095             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   62096             :      AstAttribute* newAttribute = new AstAttribute();
   62097             :      ROSE_ASSERT(newAttribute != NULL);
   62098             : 
   62099             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   62100             :      const_cast<SgBasicBlock*>(this)->attribute.add("copied",newAttribute);
   62101             : #endif
   62102             : 
   62103             :   // Copy data members from base classes
   62104             :  
   62105             : 
   62106             :   // Build an empty copy of this object (will be filled in, but 
   62107             :   // the parent can't be set and must be set by the caller)
   62108          15 :      result = new SgBasicBlock(  );
   62109          15 :      ROSE_ASSERT(result != NULL);
   62110             : 
   62111             :   // Copy data members of "this" class
   62112             :   // Copy non-constructor parameter data member (access function): startOfConstruct_copy
   62113             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   62114             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   62115          15 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   62116          15 :      if ( p_startOfConstruct != NULL ) 
   62117             :         { 
   62118          15 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   62119             :         } 
   62120             :        else 
   62121             :         { 
   62122             :           startOfConstruct_copy = NULL; 
   62123             :         } 
   62124             :   /* check for a valid pointer and delete if present */ 
   62125          15 :      if (result->p_startOfConstruct != NULL) delete result->p_startOfConstruct; 
   62126             :   /* add assignment to result here */ 
   62127          15 :      result->p_startOfConstruct = startOfConstruct_copy; 
   62128             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   62129             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   62130             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   62131          15 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   62132          15 :      if ( p_endOfConstruct != NULL ) 
   62133             :         { 
   62134          15 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   62135             :         } 
   62136             :        else 
   62137             :         { 
   62138             :           endOfConstruct_copy = NULL; 
   62139             :         } 
   62140             :   /* check for a valid pointer and delete if present */ 
   62141          15 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   62142             :   /* add assignment to result here */ 
   62143          15 :      result->p_endOfConstruct = endOfConstruct_copy; 
   62144             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   62145             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   62146             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   62147          15 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   62148          15 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   62149             :         { 
   62150           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   62151             :         } 
   62152             :        else 
   62153             :         { 
   62154             :           attachedPreprocessingInfoPtr_copy = NULL; 
   62155             :         } 
   62156             :   /* check for a valid pointer and delete if present */ 
   62157          15 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   62158             :   /* add assignment to result here */ 
   62159          15 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   62160             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   62161             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   62162             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   62163          15 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   62164          15 :      if ( p_attributeMechanism != NULL ) 
   62165             :         { 
   62166           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   62167             :         } 
   62168             :        else 
   62169             :         { 
   62170             :           attributeMechanism_copy = NULL; 
   62171             :         } 
   62172             :   /* check for a valid pointer and delete if present */ 
   62173          15 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   62174             :   /* add assignment to result here */ 
   62175          15 :      result->p_attributeMechanism = attributeMechanism_copy; 
   62176             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   62177             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   62178             :   // case: toBeCopied == COPY_DATA for numeric_label
   62179          15 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   62180          15 :      result->p_numeric_label = numeric_label_copy; 
   62181             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   62182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   62183             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   62184          15 :      int source_sequence_value_copy = p_source_sequence_value; 
   62185          15 :      result->p_source_sequence_value = source_sequence_value_copy; 
   62186             :   // Copy non-constructor parameter data member (list access function): result->get_statements()
   62187          15 :      SgStatementPtrList statements_copy; 
   62188             :   // case: listType for statements
   62189             :   // case: listType (typeIsPointerToList == false) for statements
   62190          15 :      SgStatementPtrList::const_iterator source_statements_iterator = get_statements().begin(); 
   62191          48 :      for ( /* empty by design */; source_statements_iterator != get_statements().end(); ++source_statements_iterator) 
   62192             :         { 
   62193          33 :           SgStatement* source_list_element = *source_statements_iterator; 
   62194          33 :           SgStatement* copy_list_element = NULL; 
   62195          33 :           if (source_list_element != NULL) 
   62196             :              { 
   62197          33 :                copy_list_element = static_cast<SgStatement*>(help.copyAst(*source_statements_iterator)); 
   62198             :              } 
   62199             :             else 
   62200             :              { 
   62201             :                copy_list_element = NULL; 
   62202             :              } 
   62203          33 :           statements_copy.push_back(copy_list_element); 
   62204             :         } 
   62205          15 :      result->p_statements = statements_copy; 
   62206             :   // case: listType for statements
   62207             :   // case: listType (typeIsPointerToList == false) for statements
   62208          15 :      SgStatementPtrList::const_iterator statements_iterator = result->get_statements().begin(); 
   62209          48 :      for ( /* empty by design */; statements_iterator != result->get_statements().end(); ++statements_iterator) 
   62210             :         { 
   62211          33 :           SgStatement* list_element = *statements_iterator; 
   62212          33 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   62213             :              { 
   62214          33 :                list_element->set_parent(result); 
   62215             :              } 
   62216             :         } 
   62217             :   // Copy non-constructor parameter data member (access function): asm_function_body_copy
   62218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_function_body
   62219             :   // case: toBeCopied == COPY_DATA for asm_function_body
   62220          30 :      std::string asm_function_body_copy = p_asm_function_body; 
   62221          15 :      result->p_asm_function_body = asm_function_body_copy; 
   62222             :   // Copy non-constructor parameter data member (access function): string_label_copy
   62223             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_label
   62224             :   // case: toBeCopied == COPY_DATA for string_label
   62225          30 :      std::string string_label_copy = p_string_label; 
   62226          15 :      result->p_string_label = string_label_copy; 
   62227             : 
   62228             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   62229             : 
   62230             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   62231             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   62232             :   // fixupCopy(result,help);
   62233             : 
   62234             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   62235             :   // the Sg_File_Info objects that are built for the new IR nodes.
   62236          15 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   62237          15 :      if (locatedNode != NULL)
   62238             :         {
   62239             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   62240          15 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   62241          15 :           ROSE_ASSERT(start != NULL);
   62242             : #if 0
   62243             :        // Debugging information
   62244             :           if (start->get_parent() == NULL)
   62245             :              {
   62246             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62247             :              }
   62248             : #endif
   62249          15 :           start->set_parent(locatedNode);
   62250          15 :           ROSE_ASSERT(start->get_parent() != NULL);
   62251             : 
   62252          15 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   62253             : 
   62254             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   62255             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   62256             :        // ROSE_ASSERT(end != NULL);
   62257          15 :           if (end == NULL)
   62258             :              {
   62259           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   62260             :              }
   62261             :             else
   62262             :              {
   62263             : #if 0
   62264             :             // Debugging information
   62265             :                if (end->get_parent() == NULL)
   62266             :                   {
   62267             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62268             :                   }
   62269             : #endif
   62270          15 :                end->set_parent(locatedNode);
   62271          15 :                ROSE_ASSERT(end->get_parent() != NULL);
   62272             :              }
   62273             : 
   62274          15 :           SgExpression* expression = isSgExpression(result);
   62275          15 :           if (isSgExpression(this) != NULL)
   62276             :              {
   62277           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   62278             : 
   62279             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   62280           0 :                if (operatorPosition != NULL)
   62281             :                   {
   62282             : #if 0
   62283             :                  // Debugging information
   62284             :                     if (operatorPosition->get_parent() == NULL)
   62285             :                        {
   62286             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62287             :                        }
   62288             : #endif
   62289           0 :                     operatorPosition->set_parent(expression);
   62290           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   62291             :                   }
   62292             :              }
   62293             :         }
   62294             : 
   62295             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   62296          15 :      SgInitializedName* initializedName = isSgInitializedName(result);
   62297          15 :      if (initializedName != NULL)
   62298             :         {
   62299             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   62300           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   62301           0 :           ROSE_ASSERT(start != NULL);
   62302             : #if 0
   62303             :        // Debugging information
   62304             :           if (start->get_parent() == NULL)
   62305             :              {
   62306             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62307             :              }
   62308             : #endif
   62309           0 :           start->set_parent(initializedName);
   62310           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   62311             : 
   62312             : #if 0
   62313             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   62314             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   62315             : 
   62316             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   62317             :        // ROSE_ASSERT(end != NULL);
   62318             :           if (end == NULL)
   62319             :              {
   62320             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   62321             :              }
   62322             :             else
   62323             :              {
   62324             :                if (end->get_parent() == NULL)
   62325             :                   {
   62326             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62327             :                   }
   62328             :                end->set_parent(initializedName);
   62329             :                ROSE_ASSERT(end->get_parent() != NULL);
   62330             :              }
   62331             : #endif
   62332             :         }
   62333             : 
   62334             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   62335          15 :      help.insertCopiedNodePair(this,result);
   62336             : 
   62337             :   // printf ("End of copy SgBasicBlock = %p = %s \n",this,SageInterface::get_name(this).c_str());
   62338             : 
   62339             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   62340             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   62341          15 :      help.decrementDepth();
   62342             : 
   62343             :   // Test if this is the root of the copy!
   62344          15 :      if (help.get_depth() == 0)
   62345             :         {
   62346             :        // This is the original calling node.
   62347             : 
   62348             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   62349             :        // printf ("Calling SgBasicBlock::fixupCopy() (from root of AST being copied) \n");
   62350             : #if ALT_FIXUP_COPY
   62351             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   62352          11 :           fixupCopy_scopes (result,help);
   62353          11 :           fixupCopy_symbols (result,help);
   62354          11 :           fixupCopy_references (result,help);
   62355             : #else
   62356             :           fixupCopy(result,help);
   62357             : #endif
   62358             :        // Allow this to be called recursively, so accumulate the state.
   62359             :        // Also, clear the state in the SgCopyHelp object.
   62360             :        // help.clearState();
   62361             :         }
   62362             : 
   62363          30 :      return result;
   62364             :    }
   62365             : 
   62366             : 
   62367             : /* #line 62368 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   62368             : 
   62369             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   62370             : 
   62371           0 : SgNode* SgIfStmt::copy ( SgCopyHelp& help) const
   62372             :    {
   62373           0 :      SgIfStmt* result = NULL;
   62374             : 
   62375             :   // printf ("Copy SgIfStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   62376             : 
   62377             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   62378             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   62379             :   // The default value of the depth is 0, so after this call the depth is 1!
   62380           0 :      help.incrementDepth();
   62381             : 
   62382             : #if 0
   62383             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   62384             :   // but it is not generally true that things can only be copied once!
   62385             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   62386             :   // AstAttribute* existingAttribute = const_cast<SgIfStmt*>(this)->attribute["copied"];
   62387             :      bool previouslyCopied = const_cast<SgIfStmt*>(this)->attribute.exists("copied");
   62388             :      if (previouslyCopied == true)
   62389             :         {
   62390             :           this->get_file_info()->display("Called from copy SgIfStmt: debug");
   62391             :         }
   62392             :      ROSE_ASSERT(previouslyCopied == false);
   62393             : 
   62394             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   62395             :      AstAttribute* newAttribute = new AstAttribute();
   62396             :      ROSE_ASSERT(newAttribute != NULL);
   62397             : 
   62398             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   62399             :      const_cast<SgIfStmt*>(this)->attribute.add("copied",newAttribute);
   62400             : #endif
   62401             : 
   62402             :   // Copy data members from base classes
   62403             :   // Copy constructor parameter data member: startOfConstruct_copy
   62404             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   62405             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   62406           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   62407           0 :      if ( p_startOfConstruct != NULL ) 
   62408             :         { 
   62409           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   62410             :         } 
   62411             :        else 
   62412             :         { 
   62413             :           startOfConstruct_copy = NULL; 
   62414             :         } 
   62415             :   // Copy constructor parameter data member: conditional_copy
   62416           0 :      SgStatement* conditional_copy; 
   62417             :   // case: not a listType for (using conditionalToCopyVariable)conditional
   62418           0 :           if (get_conditional() != NULL) 
   62419             :              { 
   62420           0 :                conditional_copy = static_cast<SgStatement*>(help.copyAst(get_conditional())); 
   62421             :              } 
   62422             :             else 
   62423             :              { 
   62424             :                conditional_copy = NULL; 
   62425             :              } 
   62426             :   // Copy constructor parameter data member: true_body_copy
   62427           0 :      SgStatement* true_body_copy; 
   62428             :   // case: not a listType for (using conditionalToCopyVariable)true_body
   62429           0 :           if (get_true_body() != NULL) 
   62430             :              { 
   62431           0 :                true_body_copy = static_cast<SgStatement*>(help.copyAst(get_true_body())); 
   62432             :              } 
   62433             :             else 
   62434             :              { 
   62435             :                true_body_copy = NULL; 
   62436             :              } 
   62437             :   // Copy constructor parameter data member: false_body_copy
   62438           0 :      SgStatement* false_body_copy; 
   62439             :   // case: not a listType for (using conditionalToCopyVariable)false_body
   62440           0 :           if (get_false_body() != NULL) 
   62441             :              { 
   62442           0 :                false_body_copy = static_cast<SgStatement*>(help.copyAst(get_false_body())); 
   62443             :              } 
   62444             :             else 
   62445             :              { 
   62446             :                false_body_copy = NULL; 
   62447             :              } 
   62448             :  
   62449             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   62450             : 
   62451             :   // Build an empty copy of this object (will be filled in, but 
   62452             :   // the parent can't be set and must be set by the caller)
   62453           0 :      result = new SgIfStmt(  startOfConstruct_copy, conditional_copy, true_body_copy, false_body_copy );
   62454           0 :      ROSE_ASSERT(result != NULL);
   62455             : 
   62456             :   // Copy data members of "this" class
   62457             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   62458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   62459             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   62460           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   62461           0 :      if ( p_endOfConstruct != NULL ) 
   62462             :         { 
   62463           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   62464             :         } 
   62465             :        else 
   62466             :         { 
   62467             :           endOfConstruct_copy = NULL; 
   62468             :         } 
   62469             :   /* check for a valid pointer and delete if present */ 
   62470           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   62471             :   /* add assignment to result here */ 
   62472           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   62473             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   62474             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   62475             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   62476           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   62477           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   62478             :         { 
   62479           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   62480             :         } 
   62481             :        else 
   62482             :         { 
   62483             :           attachedPreprocessingInfoPtr_copy = NULL; 
   62484             :         } 
   62485             :   /* check for a valid pointer and delete if present */ 
   62486           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   62487             :   /* add assignment to result here */ 
   62488           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   62489             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   62490             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   62491             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   62492           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   62493           0 :      if ( p_attributeMechanism != NULL ) 
   62494             :         { 
   62495           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   62496             :         } 
   62497             :        else 
   62498             :         { 
   62499             :           attributeMechanism_copy = NULL; 
   62500             :         } 
   62501             :   /* check for a valid pointer and delete if present */ 
   62502           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   62503             :   /* add assignment to result here */ 
   62504           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   62505             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   62506             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   62507             :   // case: toBeCopied == COPY_DATA for numeric_label
   62508           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   62509           0 :      result->p_numeric_label = numeric_label_copy; 
   62510             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   62511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   62512             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   62513           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   62514           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   62515             :   // Copy non-constructor parameter data member (access function): is_if_constexpr_statement_copy
   62516             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_if_constexpr_statement
   62517             :   // case: toBeCopied == COPY_DATA for is_if_constexpr_statement
   62518           0 :      bool is_if_constexpr_statement_copy = p_is_if_constexpr_statement; 
   62519           0 :      result->p_is_if_constexpr_statement = is_if_constexpr_statement_copy; 
   62520             :   // Copy non-constructor parameter data member (access function): if_constexpr_value_known_copy
   62521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for if_constexpr_value_known
   62522             :   // case: toBeCopied == COPY_DATA for if_constexpr_value_known
   62523           0 :      bool if_constexpr_value_known_copy = p_if_constexpr_value_known; 
   62524           0 :      result->p_if_constexpr_value_known = if_constexpr_value_known_copy; 
   62525             :   // Copy non-constructor parameter data member (access function): if_constexpr_value_copy
   62526             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for if_constexpr_value
   62527             :   // case: toBeCopied == COPY_DATA for if_constexpr_value
   62528           0 :      bool if_constexpr_value_copy = p_if_constexpr_value; 
   62529           0 :      result->p_if_constexpr_value = if_constexpr_value_copy; 
   62530             :   // Copy non-constructor parameter data member (access function): else_numeric_label_copy
   62531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for else_numeric_label
   62532             :   // case: toBeCopied == COPY_DATA for else_numeric_label
   62533           0 :      SgLabelRefExp* else_numeric_label_copy = p_else_numeric_label; 
   62534           0 :      result->p_else_numeric_label = else_numeric_label_copy; 
   62535             :   // Copy non-constructor parameter data member (access function): string_label_copy
   62536             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_label
   62537             :   // case: toBeCopied == COPY_DATA for string_label
   62538           0 :      std::string string_label_copy = p_string_label; 
   62539           0 :      result->p_string_label = string_label_copy; 
   62540             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   62541             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   62542             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   62543           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   62544           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   62545             :   // Copy non-constructor parameter data member (access function): has_end_statement_copy
   62546             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_end_statement
   62547             :   // case: toBeCopied == COPY_DATA for has_end_statement
   62548           0 :      bool has_end_statement_copy = p_has_end_statement; 
   62549           0 :      result->p_has_end_statement = has_end_statement_copy; 
   62550             :   // Copy non-constructor parameter data member (access function): use_then_keyword_copy
   62551             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for use_then_keyword
   62552             :   // case: toBeCopied == COPY_DATA for use_then_keyword
   62553           0 :      bool use_then_keyword_copy = p_use_then_keyword; 
   62554           0 :      result->p_use_then_keyword = use_then_keyword_copy; 
   62555             :   // Copy non-constructor parameter data member (access function): is_else_if_statement_copy
   62556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_else_if_statement
   62557             :   // case: toBeCopied == COPY_DATA for is_else_if_statement
   62558           0 :      bool is_else_if_statement_copy = p_is_else_if_statement; 
   62559           0 :      result->p_is_else_if_statement = is_else_if_statement_copy; 
   62560             :   // case: not a listType for (using conditionalToSetParent)conditional
   62561           0 :           if ( (conditional_copy != NULL) && (conditional_copy->get_parent() == NULL) && (isSgType(conditional_copy) == NULL) ) 
   62562             :              { 
   62563           0 :                conditional_copy->set_parent(result); 
   62564             :              } 
   62565             :   // case: not a listType for (using conditionalToSetParent)true_body
   62566           0 :           if ( (true_body_copy != NULL) && (true_body_copy->get_parent() == NULL) && (isSgType(true_body_copy) == NULL) ) 
   62567             :              { 
   62568           0 :                true_body_copy->set_parent(result); 
   62569             :              } 
   62570             :   // case: not a listType for (using conditionalToSetParent)false_body
   62571           0 :           if ( (false_body_copy != NULL) && (false_body_copy->get_parent() == NULL) && (isSgType(false_body_copy) == NULL) ) 
   62572             :              { 
   62573           0 :                false_body_copy->set_parent(result); 
   62574             :              } 
   62575             : 
   62576             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   62577             : 
   62578             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   62579             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   62580             :   // fixupCopy(result,help);
   62581             : 
   62582             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   62583             :   // the Sg_File_Info objects that are built for the new IR nodes.
   62584           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   62585           0 :      if (locatedNode != NULL)
   62586             :         {
   62587             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   62588           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   62589           0 :           ROSE_ASSERT(start != NULL);
   62590             : #if 0
   62591             :        // Debugging information
   62592             :           if (start->get_parent() == NULL)
   62593             :              {
   62594             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62595             :              }
   62596             : #endif
   62597           0 :           start->set_parent(locatedNode);
   62598           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   62599             : 
   62600           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   62601             : 
   62602             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   62603             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   62604             :        // ROSE_ASSERT(end != NULL);
   62605           0 :           if (end == NULL)
   62606             :              {
   62607           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   62608             :              }
   62609             :             else
   62610             :              {
   62611             : #if 0
   62612             :             // Debugging information
   62613             :                if (end->get_parent() == NULL)
   62614             :                   {
   62615             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62616             :                   }
   62617             : #endif
   62618           0 :                end->set_parent(locatedNode);
   62619           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   62620             :              }
   62621             : 
   62622           0 :           SgExpression* expression = isSgExpression(result);
   62623           0 :           if (isSgExpression(this) != NULL)
   62624             :              {
   62625           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   62626             : 
   62627             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   62628           0 :                if (operatorPosition != NULL)
   62629             :                   {
   62630             : #if 0
   62631             :                  // Debugging information
   62632             :                     if (operatorPosition->get_parent() == NULL)
   62633             :                        {
   62634             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62635             :                        }
   62636             : #endif
   62637           0 :                     operatorPosition->set_parent(expression);
   62638           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   62639             :                   }
   62640             :              }
   62641             :         }
   62642             : 
   62643             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   62644           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   62645           0 :      if (initializedName != NULL)
   62646             :         {
   62647             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   62648           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   62649           0 :           ROSE_ASSERT(start != NULL);
   62650             : #if 0
   62651             :        // Debugging information
   62652             :           if (start->get_parent() == NULL)
   62653             :              {
   62654             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62655             :              }
   62656             : #endif
   62657           0 :           start->set_parent(initializedName);
   62658           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   62659             : 
   62660             : #if 0
   62661             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   62662             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   62663             : 
   62664             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   62665             :        // ROSE_ASSERT(end != NULL);
   62666             :           if (end == NULL)
   62667             :              {
   62668             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   62669             :              }
   62670             :             else
   62671             :              {
   62672             :                if (end->get_parent() == NULL)
   62673             :                   {
   62674             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62675             :                   }
   62676             :                end->set_parent(initializedName);
   62677             :                ROSE_ASSERT(end->get_parent() != NULL);
   62678             :              }
   62679             : #endif
   62680             :         }
   62681             : 
   62682             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   62683           0 :      help.insertCopiedNodePair(this,result);
   62684             : 
   62685             :   // printf ("End of copy SgIfStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   62686             : 
   62687             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   62688             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   62689           0 :      help.decrementDepth();
   62690             : 
   62691             :   // Test if this is the root of the copy!
   62692           0 :      if (help.get_depth() == 0)
   62693             :         {
   62694             :        // This is the original calling node.
   62695             : 
   62696             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   62697             :        // printf ("Calling SgIfStmt::fixupCopy() (from root of AST being copied) \n");
   62698             : #if ALT_FIXUP_COPY
   62699             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   62700           0 :           fixupCopy_scopes (result,help);
   62701           0 :           fixupCopy_symbols (result,help);
   62702           0 :           fixupCopy_references (result,help);
   62703             : #else
   62704             :           fixupCopy(result,help);
   62705             : #endif
   62706             :        // Allow this to be called recursively, so accumulate the state.
   62707             :        // Also, clear the state in the SgCopyHelp object.
   62708             :        // help.clearState();
   62709             :         }
   62710             : 
   62711           0 :      return result;
   62712             :    }
   62713             : 
   62714             : 
   62715             : /* #line 62716 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   62716             : 
   62717             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   62718             : 
   62719           2 : SgNode* SgForStatement::copy ( SgCopyHelp& help) const
   62720             :    {
   62721           2 :      SgForStatement* result = NULL;
   62722             : 
   62723             :   // printf ("Copy SgForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   62724             : 
   62725             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   62726             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   62727             :   // The default value of the depth is 0, so after this call the depth is 1!
   62728           2 :      help.incrementDepth();
   62729             : 
   62730             : #if 0
   62731             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   62732             :   // but it is not generally true that things can only be copied once!
   62733             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   62734             :   // AstAttribute* existingAttribute = const_cast<SgForStatement*>(this)->attribute["copied"];
   62735             :      bool previouslyCopied = const_cast<SgForStatement*>(this)->attribute.exists("copied");
   62736             :      if (previouslyCopied == true)
   62737             :         {
   62738             :           this->get_file_info()->display("Called from copy SgForStatement: debug");
   62739             :         }
   62740             :      ROSE_ASSERT(previouslyCopied == false);
   62741             : 
   62742             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   62743             :      AstAttribute* newAttribute = new AstAttribute();
   62744             :      ROSE_ASSERT(newAttribute != NULL);
   62745             : 
   62746             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   62747             :      const_cast<SgForStatement*>(this)->attribute.add("copied",newAttribute);
   62748             : #endif
   62749             : 
   62750             :   // Copy data members from base classes
   62751             :   // Copy constructor parameter data member: startOfConstruct_copy
   62752             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   62753             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   62754           2 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   62755           2 :      if ( p_startOfConstruct != NULL ) 
   62756             :         { 
   62757           2 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   62758             :         } 
   62759             :        else 
   62760             :         { 
   62761             :           startOfConstruct_copy = NULL; 
   62762             :         } 
   62763             :   // Copy constructor parameter data member: test_copy
   62764           2 :      SgStatement* test_copy; 
   62765             :   // case: not a listType for (using conditionalToCopyVariable)test
   62766           2 :           if (get_test() != NULL) 
   62767             :              { 
   62768           2 :                test_copy = static_cast<SgStatement*>(help.copyAst(get_test())); 
   62769             :              } 
   62770             :             else 
   62771             :              { 
   62772             :                test_copy = NULL; 
   62773             :              } 
   62774             :   // Copy constructor parameter data member: increment_copy
   62775           2 :      SgExpression* increment_copy; 
   62776             :   // case: not a listType for (using conditionalToCopyVariable)increment
   62777           2 :           if (get_increment() != NULL) 
   62778             :              { 
   62779           2 :                increment_copy = static_cast<SgExpression*>(help.copyAst(get_increment())); 
   62780             :              } 
   62781             :             else 
   62782             :              { 
   62783             :                increment_copy = NULL; 
   62784             :              } 
   62785             :   // Copy constructor parameter data member: loop_body_copy
   62786           2 :      SgStatement* loop_body_copy; 
   62787             :   // case: not a listType for (using conditionalToCopyVariable)loop_body
   62788           2 :           if (get_loop_body() != NULL) 
   62789             :              { 
   62790           2 :                loop_body_copy = static_cast<SgStatement*>(help.copyAst(get_loop_body())); 
   62791             :              } 
   62792             :             else 
   62793             :              { 
   62794             :                loop_body_copy = NULL; 
   62795             :              } 
   62796             :  
   62797             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   62798             : 
   62799             :   // Build an empty copy of this object (will be filled in, but 
   62800             :   // the parent can't be set and must be set by the caller)
   62801           2 :      result = new SgForStatement(  startOfConstruct_copy, test_copy, increment_copy, loop_body_copy );
   62802           2 :      ROSE_ASSERT(result != NULL);
   62803             : 
   62804             :   // Copy data members of "this" class
   62805             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   62806             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   62807             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   62808           2 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   62809           2 :      if ( p_endOfConstruct != NULL ) 
   62810             :         { 
   62811           2 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   62812             :         } 
   62813             :        else 
   62814             :         { 
   62815             :           endOfConstruct_copy = NULL; 
   62816             :         } 
   62817             :   /* check for a valid pointer and delete if present */ 
   62818           2 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   62819             :   /* add assignment to result here */ 
   62820           2 :      result->p_endOfConstruct = endOfConstruct_copy; 
   62821             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   62822             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   62823             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   62824           2 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   62825           2 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   62826             :         { 
   62827           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   62828             :         } 
   62829             :        else 
   62830             :         { 
   62831             :           attachedPreprocessingInfoPtr_copy = NULL; 
   62832             :         } 
   62833             :   /* check for a valid pointer and delete if present */ 
   62834           2 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   62835             :   /* add assignment to result here */ 
   62836           2 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   62837             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   62838             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   62839             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   62840           2 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   62841           2 :      if ( p_attributeMechanism != NULL ) 
   62842             :         { 
   62843           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   62844             :         } 
   62845             :        else 
   62846             :         { 
   62847             :           attributeMechanism_copy = NULL; 
   62848             :         } 
   62849             :   /* check for a valid pointer and delete if present */ 
   62850           2 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   62851             :   /* add assignment to result here */ 
   62852           2 :      result->p_attributeMechanism = attributeMechanism_copy; 
   62853             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   62854             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   62855             :   // case: toBeCopied == COPY_DATA for numeric_label
   62856           2 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   62857           2 :      result->p_numeric_label = numeric_label_copy; 
   62858             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   62859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   62860             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   62861           2 :      int source_sequence_value_copy = p_source_sequence_value; 
   62862           2 :      result->p_source_sequence_value = source_sequence_value_copy; 
   62863             :   // Copy non-constructor parameter data member (access function): for_init_stmt_copy
   62864           2 :      SgForInitStatement* for_init_stmt_copy; 
   62865             :   // case: not a listType for (using conditionalToCopyVariable)for_init_stmt
   62866           2 :           if (get_for_init_stmt() != NULL) 
   62867             :              { 
   62868           2 :                for_init_stmt_copy = static_cast<SgForInitStatement*>(help.copyAst(get_for_init_stmt())); 
   62869             :              } 
   62870             :             else 
   62871             :              { 
   62872             :                for_init_stmt_copy = NULL; 
   62873             :              } 
   62874             :   /* check for a valid pointer and delete if present */ 
   62875           2 :      if (result->p_for_init_stmt != NULL) delete result->p_for_init_stmt; 
   62876           2 :      result->p_for_init_stmt = for_init_stmt_copy; 
   62877             :   // case: not a listType for (using conditionalToSetParent)for_init_stmt
   62878           2 :           if ( (for_init_stmt_copy != NULL) && (for_init_stmt_copy->get_parent() == NULL) && (isSgType(for_init_stmt_copy) == NULL) ) 
   62879             :              { 
   62880           2 :                for_init_stmt_copy->set_parent(result); 
   62881             :              } 
   62882             :   // Copy non-constructor parameter data member (access function): else_body_copy
   62883           2 :      SgStatement* else_body_copy; 
   62884             :   // case: not a listType for (using conditionalToCopyVariable)else_body
   62885           2 :           if (get_else_body() != NULL) 
   62886             :              { 
   62887           0 :                else_body_copy = static_cast<SgStatement*>(help.copyAst(get_else_body())); 
   62888             :              } 
   62889             :             else 
   62890             :              { 
   62891             :                else_body_copy = NULL; 
   62892             :              } 
   62893             :   /* check for a valid pointer and delete if present */ 
   62894           2 :      if (result->p_else_body != NULL) delete result->p_else_body; 
   62895           2 :      result->p_else_body = else_body_copy; 
   62896             :   // case: not a listType for (using conditionalToSetParent)else_body
   62897           2 :           if ( (else_body_copy != NULL) && (else_body_copy->get_parent() == NULL) && (isSgType(else_body_copy) == NULL) ) 
   62898             :              { 
   62899           0 :                else_body_copy->set_parent(result); 
   62900             :              } 
   62901             :   // Copy non-constructor parameter data member (access function): string_label_copy
   62902             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_label
   62903             :   // case: toBeCopied == COPY_DATA for string_label
   62904           2 :      std::string string_label_copy = p_string_label; 
   62905           2 :      result->p_string_label = string_label_copy; 
   62906             :   // case: not a listType for (using conditionalToSetParent)test
   62907           2 :           if ( (test_copy != NULL) && (test_copy->get_parent() == NULL) && (isSgType(test_copy) == NULL) ) 
   62908             :              { 
   62909           0 :                test_copy->set_parent(result); 
   62910             :              } 
   62911             :   // case: not a listType for (using conditionalToSetParent)increment
   62912           2 :           if ( (increment_copy != NULL) && (increment_copy->get_parent() == NULL) && (isSgType(increment_copy) == NULL) ) 
   62913             :              { 
   62914           0 :                increment_copy->set_parent(result); 
   62915             :              } 
   62916             :   // case: not a listType for (using conditionalToSetParent)loop_body
   62917           2 :           if ( (loop_body_copy != NULL) && (loop_body_copy->get_parent() == NULL) && (isSgType(loop_body_copy) == NULL) ) 
   62918             :              { 
   62919           0 :                loop_body_copy->set_parent(result); 
   62920             :              } 
   62921             : 
   62922             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   62923             : 
   62924             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   62925             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   62926             :   // fixupCopy(result,help);
   62927             : 
   62928             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   62929             :   // the Sg_File_Info objects that are built for the new IR nodes.
   62930           2 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   62931           2 :      if (locatedNode != NULL)
   62932             :         {
   62933             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   62934           2 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   62935           2 :           ROSE_ASSERT(start != NULL);
   62936             : #if 0
   62937             :        // Debugging information
   62938             :           if (start->get_parent() == NULL)
   62939             :              {
   62940             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62941             :              }
   62942             : #endif
   62943           2 :           start->set_parent(locatedNode);
   62944           2 :           ROSE_ASSERT(start->get_parent() != NULL);
   62945             : 
   62946           2 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   62947             : 
   62948             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   62949             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   62950             :        // ROSE_ASSERT(end != NULL);
   62951           2 :           if (end == NULL)
   62952             :              {
   62953           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   62954             :              }
   62955             :             else
   62956             :              {
   62957             : #if 0
   62958             :             // Debugging information
   62959             :                if (end->get_parent() == NULL)
   62960             :                   {
   62961             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62962             :                   }
   62963             : #endif
   62964           2 :                end->set_parent(locatedNode);
   62965           2 :                ROSE_ASSERT(end->get_parent() != NULL);
   62966             :              }
   62967             : 
   62968           2 :           SgExpression* expression = isSgExpression(result);
   62969           2 :           if (isSgExpression(this) != NULL)
   62970             :              {
   62971           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   62972             : 
   62973             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   62974           0 :                if (operatorPosition != NULL)
   62975             :                   {
   62976             : #if 0
   62977             :                  // Debugging information
   62978             :                     if (operatorPosition->get_parent() == NULL)
   62979             :                        {
   62980             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   62981             :                        }
   62982             : #endif
   62983           0 :                     operatorPosition->set_parent(expression);
   62984           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   62985             :                   }
   62986             :              }
   62987             :         }
   62988             : 
   62989             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   62990           2 :      SgInitializedName* initializedName = isSgInitializedName(result);
   62991           2 :      if (initializedName != NULL)
   62992             :         {
   62993             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   62994           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   62995           0 :           ROSE_ASSERT(start != NULL);
   62996             : #if 0
   62997             :        // Debugging information
   62998             :           if (start->get_parent() == NULL)
   62999             :              {
   63000             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63001             :              }
   63002             : #endif
   63003           0 :           start->set_parent(initializedName);
   63004           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   63005             : 
   63006             : #if 0
   63007             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   63008             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   63009             : 
   63010             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   63011             :        // ROSE_ASSERT(end != NULL);
   63012             :           if (end == NULL)
   63013             :              {
   63014             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   63015             :              }
   63016             :             else
   63017             :              {
   63018             :                if (end->get_parent() == NULL)
   63019             :                   {
   63020             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63021             :                   }
   63022             :                end->set_parent(initializedName);
   63023             :                ROSE_ASSERT(end->get_parent() != NULL);
   63024             :              }
   63025             : #endif
   63026             :         }
   63027             : 
   63028             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   63029           2 :      help.insertCopiedNodePair(this,result);
   63030             : 
   63031             :   // printf ("End of copy SgForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   63032             : 
   63033             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   63034             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   63035           2 :      help.decrementDepth();
   63036             : 
   63037             :   // Test if this is the root of the copy!
   63038           2 :      if (help.get_depth() == 0)
   63039             :         {
   63040             :        // This is the original calling node.
   63041             : 
   63042             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   63043             :        // printf ("Calling SgForStatement::fixupCopy() (from root of AST being copied) \n");
   63044             : #if ALT_FIXUP_COPY
   63045             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   63046           2 :           fixupCopy_scopes (result,help);
   63047           2 :           fixupCopy_symbols (result,help);
   63048           2 :           fixupCopy_references (result,help);
   63049             : #else
   63050             :           fixupCopy(result,help);
   63051             : #endif
   63052             :        // Allow this to be called recursively, so accumulate the state.
   63053             :        // Also, clear the state in the SgCopyHelp object.
   63054             :        // help.clearState();
   63055             :         }
   63056             : 
   63057           2 :      return result;
   63058             :    }
   63059             : 
   63060             : 
   63061             : /* #line 63062 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   63062             : 
   63063             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63064             : 
   63065           2 : SgNode* SgFunctionDefinition::copy ( SgCopyHelp& help) const
   63066             :    {
   63067           2 :      SgFunctionDefinition* result = NULL;
   63068             : 
   63069             :   // printf ("Copy SgFunctionDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   63070             : 
   63071             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   63072             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   63073             :   // The default value of the depth is 0, so after this call the depth is 1!
   63074           2 :      help.incrementDepth();
   63075             : 
   63076             : #if 0
   63077             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   63078             :   // but it is not generally true that things can only be copied once!
   63079             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   63080             :   // AstAttribute* existingAttribute = const_cast<SgFunctionDefinition*>(this)->attribute["copied"];
   63081             :      bool previouslyCopied = const_cast<SgFunctionDefinition*>(this)->attribute.exists("copied");
   63082             :      if (previouslyCopied == true)
   63083             :         {
   63084             :           this->get_file_info()->display("Called from copy SgFunctionDefinition: debug");
   63085             :         }
   63086             :      ROSE_ASSERT(previouslyCopied == false);
   63087             : 
   63088             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   63089             :      AstAttribute* newAttribute = new AstAttribute();
   63090             :      ROSE_ASSERT(newAttribute != NULL);
   63091             : 
   63092             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   63093             :      const_cast<SgFunctionDefinition*>(this)->attribute.add("copied",newAttribute);
   63094             : #endif
   63095             : 
   63096             :   // Copy data members from base classes
   63097             :   // Copy constructor parameter data member: startOfConstruct_copy
   63098             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   63099             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   63100           2 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   63101           2 :      if ( p_startOfConstruct != NULL ) 
   63102             :         { 
   63103           2 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   63104             :         } 
   63105             :        else 
   63106             :         { 
   63107             :           startOfConstruct_copy = NULL; 
   63108             :         } 
   63109             :   // Copy constructor parameter data member: body_copy
   63110           2 :      SgBasicBlock* body_copy; 
   63111             :   // case: not a listType for (using conditionalToCopyVariable)body
   63112           2 :           if (get_body() != NULL) 
   63113             :              { 
   63114           2 :                body_copy = static_cast<SgBasicBlock*>(help.copyAst(get_body())); 
   63115             :              } 
   63116             :             else 
   63117             :              { 
   63118             :                body_copy = NULL; 
   63119             :              } 
   63120             :  
   63121             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63122             : 
   63123             :   // Build an empty copy of this object (will be filled in, but 
   63124             :   // the parent can't be set and must be set by the caller)
   63125           2 :      result = new SgFunctionDefinition(  startOfConstruct_copy, body_copy );
   63126           2 :      ROSE_ASSERT(result != NULL);
   63127             : 
   63128             :   // Copy data members of "this" class
   63129             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   63130             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   63131             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   63132           2 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   63133           2 :      if ( p_endOfConstruct != NULL ) 
   63134             :         { 
   63135           2 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   63136             :         } 
   63137             :        else 
   63138             :         { 
   63139             :           endOfConstruct_copy = NULL; 
   63140             :         } 
   63141             :   /* check for a valid pointer and delete if present */ 
   63142           2 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   63143             :   /* add assignment to result here */ 
   63144           2 :      result->p_endOfConstruct = endOfConstruct_copy; 
   63145             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   63146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   63147             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   63148           2 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   63149           2 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   63150             :         { 
   63151           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   63152             :         } 
   63153             :        else 
   63154             :         { 
   63155             :           attachedPreprocessingInfoPtr_copy = NULL; 
   63156             :         } 
   63157             :   /* check for a valid pointer and delete if present */ 
   63158           2 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   63159             :   /* add assignment to result here */ 
   63160           2 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   63161             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   63162             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   63163             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   63164           2 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   63165           2 :      if ( p_attributeMechanism != NULL ) 
   63166             :         { 
   63167           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   63168             :         } 
   63169             :        else 
   63170             :         { 
   63171             :           attributeMechanism_copy = NULL; 
   63172             :         } 
   63173             :   /* check for a valid pointer and delete if present */ 
   63174           2 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   63175             :   /* add assignment to result here */ 
   63176           2 :      result->p_attributeMechanism = attributeMechanism_copy; 
   63177             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   63178             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   63179             :   // case: toBeCopied == COPY_DATA for numeric_label
   63180           2 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   63181           2 :      result->p_numeric_label = numeric_label_copy; 
   63182             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   63183             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   63184             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   63185           2 :      int source_sequence_value_copy = p_source_sequence_value; 
   63186           2 :      result->p_source_sequence_value = source_sequence_value_copy; 
   63187             :   // case: not a listType for (using conditionalToSetParent)body
   63188           2 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   63189             :              { 
   63190           2 :                body_copy->set_parent(result); 
   63191             :              } 
   63192             : 
   63193             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63194             : 
   63195             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   63196             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   63197             :   // fixupCopy(result,help);
   63198             : 
   63199             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   63200             :   // the Sg_File_Info objects that are built for the new IR nodes.
   63201           2 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   63202           2 :      if (locatedNode != NULL)
   63203             :         {
   63204             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   63205           2 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   63206           2 :           ROSE_ASSERT(start != NULL);
   63207             : #if 0
   63208             :        // Debugging information
   63209             :           if (start->get_parent() == NULL)
   63210             :              {
   63211             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63212             :              }
   63213             : #endif
   63214           2 :           start->set_parent(locatedNode);
   63215           2 :           ROSE_ASSERT(start->get_parent() != NULL);
   63216             : 
   63217           2 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   63218             : 
   63219             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   63220             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   63221             :        // ROSE_ASSERT(end != NULL);
   63222           2 :           if (end == NULL)
   63223             :              {
   63224           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   63225             :              }
   63226             :             else
   63227             :              {
   63228             : #if 0
   63229             :             // Debugging information
   63230             :                if (end->get_parent() == NULL)
   63231             :                   {
   63232             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63233             :                   }
   63234             : #endif
   63235           2 :                end->set_parent(locatedNode);
   63236           2 :                ROSE_ASSERT(end->get_parent() != NULL);
   63237             :              }
   63238             : 
   63239           2 :           SgExpression* expression = isSgExpression(result);
   63240           2 :           if (isSgExpression(this) != NULL)
   63241             :              {
   63242           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   63243             : 
   63244             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   63245           0 :                if (operatorPosition != NULL)
   63246             :                   {
   63247             : #if 0
   63248             :                  // Debugging information
   63249             :                     if (operatorPosition->get_parent() == NULL)
   63250             :                        {
   63251             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63252             :                        }
   63253             : #endif
   63254           0 :                     operatorPosition->set_parent(expression);
   63255           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   63256             :                   }
   63257             :              }
   63258             :         }
   63259             : 
   63260             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   63261           2 :      SgInitializedName* initializedName = isSgInitializedName(result);
   63262           2 :      if (initializedName != NULL)
   63263             :         {
   63264             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   63265           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   63266           0 :           ROSE_ASSERT(start != NULL);
   63267             : #if 0
   63268             :        // Debugging information
   63269             :           if (start->get_parent() == NULL)
   63270             :              {
   63271             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63272             :              }
   63273             : #endif
   63274           0 :           start->set_parent(initializedName);
   63275           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   63276             : 
   63277             : #if 0
   63278             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   63279             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   63280             : 
   63281             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   63282             :        // ROSE_ASSERT(end != NULL);
   63283             :           if (end == NULL)
   63284             :              {
   63285             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   63286             :              }
   63287             :             else
   63288             :              {
   63289             :                if (end->get_parent() == NULL)
   63290             :                   {
   63291             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63292             :                   }
   63293             :                end->set_parent(initializedName);
   63294             :                ROSE_ASSERT(end->get_parent() != NULL);
   63295             :              }
   63296             : #endif
   63297             :         }
   63298             : 
   63299             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   63300           2 :      help.insertCopiedNodePair(this,result);
   63301             : 
   63302             :   // printf ("End of copy SgFunctionDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   63303             : 
   63304             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   63305             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   63306           2 :      help.decrementDepth();
   63307             : 
   63308             :   // Test if this is the root of the copy!
   63309           2 :      if (help.get_depth() == 0)
   63310             :         {
   63311             :        // This is the original calling node.
   63312             : 
   63313             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   63314             :        // printf ("Calling SgFunctionDefinition::fixupCopy() (from root of AST being copied) \n");
   63315             : #if ALT_FIXUP_COPY
   63316             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   63317           0 :           fixupCopy_scopes (result,help);
   63318           0 :           fixupCopy_symbols (result,help);
   63319           0 :           fixupCopy_references (result,help);
   63320             : #else
   63321             :           fixupCopy(result,help);
   63322             : #endif
   63323             :        // Allow this to be called recursively, so accumulate the state.
   63324             :        // Also, clear the state in the SgCopyHelp object.
   63325             :        // help.clearState();
   63326             :         }
   63327             : 
   63328           2 :      return result;
   63329             :    }
   63330             : 
   63331             : 
   63332             : /* #line 63333 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   63333             : 
   63334             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63335             : 
   63336           0 : SgNode* SgTemplateFunctionDefinition::copy ( SgCopyHelp& help) const
   63337             :    {
   63338           0 :      SgTemplateFunctionDefinition* result = NULL;
   63339             : 
   63340             :   // printf ("Copy SgTemplateFunctionDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   63341             : 
   63342             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   63343             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   63344             :   // The default value of the depth is 0, so after this call the depth is 1!
   63345           0 :      help.incrementDepth();
   63346             : 
   63347             : #if 0
   63348             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   63349             :   // but it is not generally true that things can only be copied once!
   63350             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   63351             :   // AstAttribute* existingAttribute = const_cast<SgTemplateFunctionDefinition*>(this)->attribute["copied"];
   63352             :      bool previouslyCopied = const_cast<SgTemplateFunctionDefinition*>(this)->attribute.exists("copied");
   63353             :      if (previouslyCopied == true)
   63354             :         {
   63355             :           this->get_file_info()->display("Called from copy SgTemplateFunctionDefinition: debug");
   63356             :         }
   63357             :      ROSE_ASSERT(previouslyCopied == false);
   63358             : 
   63359             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   63360             :      AstAttribute* newAttribute = new AstAttribute();
   63361             :      ROSE_ASSERT(newAttribute != NULL);
   63362             : 
   63363             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   63364             :      const_cast<SgTemplateFunctionDefinition*>(this)->attribute.add("copied",newAttribute);
   63365             : #endif
   63366             : 
   63367             :   // Copy data members from base classes
   63368             :   // Copy constructor parameter data member: startOfConstruct_copy
   63369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   63370             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   63371           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   63372           0 :      if ( p_startOfConstruct != NULL ) 
   63373             :         { 
   63374           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   63375             :         } 
   63376             :        else 
   63377             :         { 
   63378             :           startOfConstruct_copy = NULL; 
   63379             :         } 
   63380             :   // Copy constructor parameter data member: body_copy
   63381           0 :      SgBasicBlock* body_copy; 
   63382             :   // case: not a listType for (using conditionalToCopyVariable)body
   63383           0 :           if (get_body() != NULL) 
   63384             :              { 
   63385           0 :                body_copy = static_cast<SgBasicBlock*>(help.copyAst(get_body())); 
   63386             :              } 
   63387             :             else 
   63388             :              { 
   63389             :                body_copy = NULL; 
   63390             :              } 
   63391             :  
   63392             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63393             : 
   63394             :   // Build an empty copy of this object (will be filled in, but 
   63395             :   // the parent can't be set and must be set by the caller)
   63396           0 :      result = new SgTemplateFunctionDefinition(  startOfConstruct_copy, body_copy );
   63397           0 :      ROSE_ASSERT(result != NULL);
   63398             : 
   63399             :   // Copy data members of "this" class
   63400             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   63401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   63402             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   63403           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   63404           0 :      if ( p_endOfConstruct != NULL ) 
   63405             :         { 
   63406           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   63407             :         } 
   63408             :        else 
   63409             :         { 
   63410             :           endOfConstruct_copy = NULL; 
   63411             :         } 
   63412             :   /* check for a valid pointer and delete if present */ 
   63413           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   63414             :   /* add assignment to result here */ 
   63415           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   63416             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   63417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   63418             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   63419           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   63420           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   63421             :         { 
   63422           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   63423             :         } 
   63424             :        else 
   63425             :         { 
   63426             :           attachedPreprocessingInfoPtr_copy = NULL; 
   63427             :         } 
   63428             :   /* check for a valid pointer and delete if present */ 
   63429           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   63430             :   /* add assignment to result here */ 
   63431           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   63432             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   63433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   63434             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   63435           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   63436           0 :      if ( p_attributeMechanism != NULL ) 
   63437             :         { 
   63438           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   63439             :         } 
   63440             :        else 
   63441             :         { 
   63442             :           attributeMechanism_copy = NULL; 
   63443             :         } 
   63444             :   /* check for a valid pointer and delete if present */ 
   63445           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   63446             :   /* add assignment to result here */ 
   63447           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   63448             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   63449             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   63450             :   // case: toBeCopied == COPY_DATA for numeric_label
   63451           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   63452           0 :      result->p_numeric_label = numeric_label_copy; 
   63453             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   63454             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   63455             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   63456           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   63457           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   63458             :   // case: not a listType for (using conditionalToSetParent)body
   63459           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   63460             :              { 
   63461           0 :                body_copy->set_parent(result); 
   63462             :              } 
   63463             : 
   63464             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63465             : 
   63466             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   63467             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   63468             :   // fixupCopy(result,help);
   63469             : 
   63470             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   63471             :   // the Sg_File_Info objects that are built for the new IR nodes.
   63472           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   63473           0 :      if (locatedNode != NULL)
   63474             :         {
   63475             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   63476           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   63477           0 :           ROSE_ASSERT(start != NULL);
   63478             : #if 0
   63479             :        // Debugging information
   63480             :           if (start->get_parent() == NULL)
   63481             :              {
   63482             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63483             :              }
   63484             : #endif
   63485           0 :           start->set_parent(locatedNode);
   63486           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   63487             : 
   63488           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   63489             : 
   63490             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   63491             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   63492             :        // ROSE_ASSERT(end != NULL);
   63493           0 :           if (end == NULL)
   63494             :              {
   63495           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   63496             :              }
   63497             :             else
   63498             :              {
   63499             : #if 0
   63500             :             // Debugging information
   63501             :                if (end->get_parent() == NULL)
   63502             :                   {
   63503             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63504             :                   }
   63505             : #endif
   63506           0 :                end->set_parent(locatedNode);
   63507           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   63508             :              }
   63509             : 
   63510           0 :           SgExpression* expression = isSgExpression(result);
   63511           0 :           if (isSgExpression(this) != NULL)
   63512             :              {
   63513           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   63514             : 
   63515             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   63516           0 :                if (operatorPosition != NULL)
   63517             :                   {
   63518             : #if 0
   63519             :                  // Debugging information
   63520             :                     if (operatorPosition->get_parent() == NULL)
   63521             :                        {
   63522             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63523             :                        }
   63524             : #endif
   63525           0 :                     operatorPosition->set_parent(expression);
   63526           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   63527             :                   }
   63528             :              }
   63529             :         }
   63530             : 
   63531             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   63532           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   63533           0 :      if (initializedName != NULL)
   63534             :         {
   63535             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   63536           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   63537           0 :           ROSE_ASSERT(start != NULL);
   63538             : #if 0
   63539             :        // Debugging information
   63540             :           if (start->get_parent() == NULL)
   63541             :              {
   63542             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63543             :              }
   63544             : #endif
   63545           0 :           start->set_parent(initializedName);
   63546           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   63547             : 
   63548             : #if 0
   63549             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   63550             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   63551             : 
   63552             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   63553             :        // ROSE_ASSERT(end != NULL);
   63554             :           if (end == NULL)
   63555             :              {
   63556             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   63557             :              }
   63558             :             else
   63559             :              {
   63560             :                if (end->get_parent() == NULL)
   63561             :                   {
   63562             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63563             :                   }
   63564             :                end->set_parent(initializedName);
   63565             :                ROSE_ASSERT(end->get_parent() != NULL);
   63566             :              }
   63567             : #endif
   63568             :         }
   63569             : 
   63570             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   63571           0 :      help.insertCopiedNodePair(this,result);
   63572             : 
   63573             :   // printf ("End of copy SgTemplateFunctionDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   63574             : 
   63575             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   63576             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   63577           0 :      help.decrementDepth();
   63578             : 
   63579             :   // Test if this is the root of the copy!
   63580           0 :      if (help.get_depth() == 0)
   63581             :         {
   63582             :        // This is the original calling node.
   63583             : 
   63584             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   63585             :        // printf ("Calling SgTemplateFunctionDefinition::fixupCopy() (from root of AST being copied) \n");
   63586             : #if ALT_FIXUP_COPY
   63587             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   63588           0 :           fixupCopy_scopes (result,help);
   63589           0 :           fixupCopy_symbols (result,help);
   63590           0 :           fixupCopy_references (result,help);
   63591             : #else
   63592             :           fixupCopy(result,help);
   63593             : #endif
   63594             :        // Allow this to be called recursively, so accumulate the state.
   63595             :        // Also, clear the state in the SgCopyHelp object.
   63596             :        // help.clearState();
   63597             :         }
   63598             : 
   63599           0 :      return result;
   63600             :    }
   63601             : 
   63602             : 
   63603             : /* #line 63604 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   63604             : 
   63605             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63606             : 
   63607           0 : SgNode* SgClassDefinition::copy ( SgCopyHelp& help) const
   63608             :    {
   63609           0 :      SgClassDefinition* result = NULL;
   63610             : 
   63611             :   // printf ("Copy SgClassDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   63612             : 
   63613             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   63614             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   63615             :   // The default value of the depth is 0, so after this call the depth is 1!
   63616           0 :      help.incrementDepth();
   63617             : 
   63618             : #if 0
   63619             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   63620             :   // but it is not generally true that things can only be copied once!
   63621             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   63622             :   // AstAttribute* existingAttribute = const_cast<SgClassDefinition*>(this)->attribute["copied"];
   63623             :      bool previouslyCopied = const_cast<SgClassDefinition*>(this)->attribute.exists("copied");
   63624             :      if (previouslyCopied == true)
   63625             :         {
   63626             :           this->get_file_info()->display("Called from copy SgClassDefinition: debug");
   63627             :         }
   63628             :      ROSE_ASSERT(previouslyCopied == false);
   63629             : 
   63630             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   63631             :      AstAttribute* newAttribute = new AstAttribute();
   63632             :      ROSE_ASSERT(newAttribute != NULL);
   63633             : 
   63634             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   63635             :      const_cast<SgClassDefinition*>(this)->attribute.add("copied",newAttribute);
   63636             : #endif
   63637             : 
   63638             :   // Copy data members from base classes
   63639             :   // Copy constructor parameter data member: startOfConstruct_copy
   63640             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   63641             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   63642           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   63643           0 :      if ( p_startOfConstruct != NULL ) 
   63644             :         { 
   63645           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   63646             :         } 
   63647             :        else 
   63648             :         { 
   63649             :           startOfConstruct_copy = NULL; 
   63650             :         } 
   63651             :  
   63652             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63653             : 
   63654             :   // Build an empty copy of this object (will be filled in, but 
   63655             :   // the parent can't be set and must be set by the caller)
   63656           0 :      result = new SgClassDefinition(  startOfConstruct_copy );
   63657           0 :      ROSE_ASSERT(result != NULL);
   63658             : 
   63659             :   // Copy data members of "this" class
   63660             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   63661             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   63662             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   63663           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   63664           0 :      if ( p_endOfConstruct != NULL ) 
   63665             :         { 
   63666           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   63667             :         } 
   63668             :        else 
   63669             :         { 
   63670             :           endOfConstruct_copy = NULL; 
   63671             :         } 
   63672             :   /* check for a valid pointer and delete if present */ 
   63673           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   63674             :   /* add assignment to result here */ 
   63675           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   63676             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   63677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   63678             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   63679           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   63680           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   63681             :         { 
   63682           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   63683             :         } 
   63684             :        else 
   63685             :         { 
   63686             :           attachedPreprocessingInfoPtr_copy = NULL; 
   63687             :         } 
   63688             :   /* check for a valid pointer and delete if present */ 
   63689           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   63690             :   /* add assignment to result here */ 
   63691           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   63692             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   63693             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   63694             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   63695           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   63696           0 :      if ( p_attributeMechanism != NULL ) 
   63697             :         { 
   63698           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   63699             :         } 
   63700             :        else 
   63701             :         { 
   63702             :           attributeMechanism_copy = NULL; 
   63703             :         } 
   63704             :   /* check for a valid pointer and delete if present */ 
   63705           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   63706             :   /* add assignment to result here */ 
   63707           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   63708             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   63709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   63710             :   // case: toBeCopied == COPY_DATA for numeric_label
   63711           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   63712           0 :      result->p_numeric_label = numeric_label_copy; 
   63713             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   63714             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   63715             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   63716           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   63717           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   63718             :   // Copy non-constructor parameter data member (list access function): result->get_members()
   63719           0 :      SgDeclarationStatementPtrList members_copy; 
   63720             :   // case: listType for members
   63721             :   // case: listType (typeIsPointerToList == false) for members
   63722           0 :      SgDeclarationStatementPtrList::const_iterator source_members_iterator = get_members().begin(); 
   63723           0 :      for ( /* empty by design */; source_members_iterator != get_members().end(); ++source_members_iterator) 
   63724             :         { 
   63725           0 :           SgDeclarationStatement* source_list_element = *source_members_iterator; 
   63726           0 :           SgDeclarationStatement* copy_list_element = NULL; 
   63727           0 :           if (source_list_element != NULL) 
   63728             :              { 
   63729           0 :                copy_list_element = static_cast<SgDeclarationStatement*>(help.copyAst(*source_members_iterator)); 
   63730             :              } 
   63731             :             else 
   63732             :              { 
   63733             :                copy_list_element = NULL; 
   63734             :              } 
   63735           0 :           members_copy.push_back(copy_list_element); 
   63736             :         } 
   63737           0 :      result->p_members = members_copy; 
   63738             :   // case: listType for members
   63739             :   // case: listType (typeIsPointerToList == false) for members
   63740           0 :      SgDeclarationStatementPtrList::const_iterator members_iterator = result->get_members().begin(); 
   63741           0 :      for ( /* empty by design */; members_iterator != result->get_members().end(); ++members_iterator) 
   63742             :         { 
   63743           0 :           SgDeclarationStatement* list_element = *members_iterator; 
   63744           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   63745             :              { 
   63746           0 :                list_element->set_parent(result); 
   63747             :              } 
   63748             :         } 
   63749             :   // Copy non-constructor parameter data member (list access function): result->get_inheritances()
   63750           0 :      SgBaseClassPtrList inheritances_copy; 
   63751             :   // case: listType for inheritances
   63752             :   // case: listType (typeIsPointerToList == false) for inheritances
   63753           0 :      SgBaseClassPtrList::const_iterator source_inheritances_iterator = get_inheritances().begin(); 
   63754           0 :      for ( /* empty by design */; source_inheritances_iterator != get_inheritances().end(); ++source_inheritances_iterator) 
   63755             :         { 
   63756           0 :           SgBaseClass* source_list_element = *source_inheritances_iterator; 
   63757           0 :           SgBaseClass* copy_list_element = NULL; 
   63758           0 :           if (source_list_element != NULL) 
   63759             :              { 
   63760           0 :                copy_list_element = static_cast<SgBaseClass*>(help.copyAst(*source_inheritances_iterator)); 
   63761             :              } 
   63762             :             else 
   63763             :              { 
   63764             :                copy_list_element = NULL; 
   63765             :              } 
   63766           0 :           inheritances_copy.push_back(copy_list_element); 
   63767             :         } 
   63768           0 :      result->p_inheritances = inheritances_copy; 
   63769             :   // case: listType for inheritances
   63770             :   // case: listType (typeIsPointerToList == false) for inheritances
   63771           0 :      SgBaseClassPtrList::const_iterator inheritances_iterator = result->get_inheritances().begin(); 
   63772           0 :      for ( /* empty by design */; inheritances_iterator != result->get_inheritances().end(); ++inheritances_iterator) 
   63773             :         { 
   63774           0 :           SgBaseClass* list_element = *inheritances_iterator; 
   63775           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   63776             :              { 
   63777           0 :                list_element->set_parent(result); 
   63778             :              } 
   63779             :         } 
   63780             :   // Copy non-constructor parameter data member (access function): packingAlignment_copy
   63781             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for packingAlignment
   63782             :   // case: toBeCopied == COPY_DATA for packingAlignment
   63783           0 :      unsigned int packingAlignment_copy = p_packingAlignment; 
   63784           0 :      result->p_packingAlignment = packingAlignment_copy; 
   63785             :   // Copy non-constructor parameter data member (access function): isSequence_copy
   63786             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isSequence
   63787             :   // case: toBeCopied == COPY_DATA for isSequence
   63788           0 :      bool isSequence_copy = p_isSequence; 
   63789           0 :      result->p_isSequence = isSequence_copy; 
   63790             :   // Copy non-constructor parameter data member (access function): isPrivate_copy
   63791             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isPrivate
   63792             :   // case: toBeCopied == COPY_DATA for isPrivate
   63793           0 :      bool isPrivate_copy = p_isPrivate; 
   63794           0 :      result->p_isPrivate = isPrivate_copy; 
   63795             :   // Copy non-constructor parameter data member (access function): isAbstract_copy
   63796             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAbstract
   63797             :   // case: toBeCopied == COPY_DATA for isAbstract
   63798           0 :      bool isAbstract_copy = p_isAbstract; 
   63799           0 :      result->p_isAbstract = isAbstract_copy; 
   63800             : 
   63801             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63802             : 
   63803             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   63804             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   63805             :   // fixupCopy(result,help);
   63806             : 
   63807             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   63808             :   // the Sg_File_Info objects that are built for the new IR nodes.
   63809           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   63810           0 :      if (locatedNode != NULL)
   63811             :         {
   63812             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   63813           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   63814           0 :           ROSE_ASSERT(start != NULL);
   63815             : #if 0
   63816             :        // Debugging information
   63817             :           if (start->get_parent() == NULL)
   63818             :              {
   63819             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63820             :              }
   63821             : #endif
   63822           0 :           start->set_parent(locatedNode);
   63823           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   63824             : 
   63825           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   63826             : 
   63827             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   63828             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   63829             :        // ROSE_ASSERT(end != NULL);
   63830           0 :           if (end == NULL)
   63831             :              {
   63832           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   63833             :              }
   63834             :             else
   63835             :              {
   63836             : #if 0
   63837             :             // Debugging information
   63838             :                if (end->get_parent() == NULL)
   63839             :                   {
   63840             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63841             :                   }
   63842             : #endif
   63843           0 :                end->set_parent(locatedNode);
   63844           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   63845             :              }
   63846             : 
   63847           0 :           SgExpression* expression = isSgExpression(result);
   63848           0 :           if (isSgExpression(this) != NULL)
   63849             :              {
   63850           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   63851             : 
   63852             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   63853           0 :                if (operatorPosition != NULL)
   63854             :                   {
   63855             : #if 0
   63856             :                  // Debugging information
   63857             :                     if (operatorPosition->get_parent() == NULL)
   63858             :                        {
   63859             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63860             :                        }
   63861             : #endif
   63862           0 :                     operatorPosition->set_parent(expression);
   63863           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   63864             :                   }
   63865             :              }
   63866             :         }
   63867             : 
   63868             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   63869           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   63870           0 :      if (initializedName != NULL)
   63871             :         {
   63872             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   63873           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   63874           0 :           ROSE_ASSERT(start != NULL);
   63875             : #if 0
   63876             :        // Debugging information
   63877             :           if (start->get_parent() == NULL)
   63878             :              {
   63879             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63880             :              }
   63881             : #endif
   63882           0 :           start->set_parent(initializedName);
   63883           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   63884             : 
   63885             : #if 0
   63886             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   63887             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   63888             : 
   63889             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   63890             :        // ROSE_ASSERT(end != NULL);
   63891             :           if (end == NULL)
   63892             :              {
   63893             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   63894             :              }
   63895             :             else
   63896             :              {
   63897             :                if (end->get_parent() == NULL)
   63898             :                   {
   63899             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   63900             :                   }
   63901             :                end->set_parent(initializedName);
   63902             :                ROSE_ASSERT(end->get_parent() != NULL);
   63903             :              }
   63904             : #endif
   63905             :         }
   63906             : 
   63907             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   63908           0 :      help.insertCopiedNodePair(this,result);
   63909             : 
   63910             :   // printf ("End of copy SgClassDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   63911             : 
   63912             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   63913             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   63914           0 :      help.decrementDepth();
   63915             : 
   63916             :   // Test if this is the root of the copy!
   63917           0 :      if (help.get_depth() == 0)
   63918             :         {
   63919             :        // This is the original calling node.
   63920             : 
   63921             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   63922             :        // printf ("Calling SgClassDefinition::fixupCopy() (from root of AST being copied) \n");
   63923             : #if ALT_FIXUP_COPY
   63924             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   63925           0 :           fixupCopy_scopes (result,help);
   63926           0 :           fixupCopy_symbols (result,help);
   63927           0 :           fixupCopy_references (result,help);
   63928             : #else
   63929             :           fixupCopy(result,help);
   63930             : #endif
   63931             :        // Allow this to be called recursively, so accumulate the state.
   63932             :        // Also, clear the state in the SgCopyHelp object.
   63933             :        // help.clearState();
   63934             :         }
   63935             : 
   63936           0 :      return result;
   63937             :    }
   63938             : 
   63939             : 
   63940             : /* #line 63941 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   63941             : 
   63942             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63943             : 
   63944           0 : SgNode* SgTemplateInstantiationDefn::copy ( SgCopyHelp& help) const
   63945             :    {
   63946           0 :      SgTemplateInstantiationDefn* result = NULL;
   63947             : 
   63948             :   // printf ("Copy SgTemplateInstantiationDefn = %p = %s \n",this,SageInterface::get_name(this).c_str());
   63949             : 
   63950             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   63951             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   63952             :   // The default value of the depth is 0, so after this call the depth is 1!
   63953           0 :      help.incrementDepth();
   63954             : 
   63955             : #if 0
   63956             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   63957             :   // but it is not generally true that things can only be copied once!
   63958             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   63959             :   // AstAttribute* existingAttribute = const_cast<SgTemplateInstantiationDefn*>(this)->attribute["copied"];
   63960             :      bool previouslyCopied = const_cast<SgTemplateInstantiationDefn*>(this)->attribute.exists("copied");
   63961             :      if (previouslyCopied == true)
   63962             :         {
   63963             :           this->get_file_info()->display("Called from copy SgTemplateInstantiationDefn: debug");
   63964             :         }
   63965             :      ROSE_ASSERT(previouslyCopied == false);
   63966             : 
   63967             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   63968             :      AstAttribute* newAttribute = new AstAttribute();
   63969             :      ROSE_ASSERT(newAttribute != NULL);
   63970             : 
   63971             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   63972             :      const_cast<SgTemplateInstantiationDefn*>(this)->attribute.add("copied",newAttribute);
   63973             : #endif
   63974             : 
   63975             :   // Copy data members from base classes
   63976             :   // Copy constructor parameter data member: startOfConstruct_copy
   63977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   63978             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   63979           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   63980           0 :      if ( p_startOfConstruct != NULL ) 
   63981             :         { 
   63982           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   63983             :         } 
   63984             :        else 
   63985             :         { 
   63986             :           startOfConstruct_copy = NULL; 
   63987             :         } 
   63988             :  
   63989             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   63990             : 
   63991             :   // Build an empty copy of this object (will be filled in, but 
   63992             :   // the parent can't be set and must be set by the caller)
   63993           0 :      result = new SgTemplateInstantiationDefn(  startOfConstruct_copy );
   63994           0 :      ROSE_ASSERT(result != NULL);
   63995             : 
   63996             :   // Copy data members of "this" class
   63997             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   63998             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   63999             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   64000           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   64001           0 :      if ( p_endOfConstruct != NULL ) 
   64002             :         { 
   64003           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   64004             :         } 
   64005             :        else 
   64006             :         { 
   64007             :           endOfConstruct_copy = NULL; 
   64008             :         } 
   64009             :   /* check for a valid pointer and delete if present */ 
   64010           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   64011             :   /* add assignment to result here */ 
   64012           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   64013             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   64014             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   64015             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   64016           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   64017           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   64018             :         { 
   64019           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   64020             :         } 
   64021             :        else 
   64022             :         { 
   64023             :           attachedPreprocessingInfoPtr_copy = NULL; 
   64024             :         } 
   64025             :   /* check for a valid pointer and delete if present */ 
   64026           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   64027             :   /* add assignment to result here */ 
   64028           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   64029             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   64030             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   64031             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   64032           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   64033           0 :      if ( p_attributeMechanism != NULL ) 
   64034             :         { 
   64035           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   64036             :         } 
   64037             :        else 
   64038             :         { 
   64039             :           attributeMechanism_copy = NULL; 
   64040             :         } 
   64041             :   /* check for a valid pointer and delete if present */ 
   64042           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   64043             :   /* add assignment to result here */ 
   64044           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   64045             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   64046             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   64047             :   // case: toBeCopied == COPY_DATA for numeric_label
   64048           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   64049           0 :      result->p_numeric_label = numeric_label_copy; 
   64050             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   64051             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   64052             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   64053           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   64054           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   64055             :   // Copy non-constructor parameter data member (list access function): result->get_members()
   64056           0 :      SgDeclarationStatementPtrList members_copy; 
   64057             :   // case: listType for members
   64058             :   // case: listType (typeIsPointerToList == false) for members
   64059           0 :      SgDeclarationStatementPtrList::const_iterator source_members_iterator = get_members().begin(); 
   64060           0 :      for ( /* empty by design */; source_members_iterator != get_members().end(); ++source_members_iterator) 
   64061             :         { 
   64062           0 :           SgDeclarationStatement* source_list_element = *source_members_iterator; 
   64063           0 :           SgDeclarationStatement* copy_list_element = NULL; 
   64064           0 :           if (source_list_element != NULL) 
   64065             :              { 
   64066           0 :                copy_list_element = static_cast<SgDeclarationStatement*>(help.copyAst(*source_members_iterator)); 
   64067             :              } 
   64068             :             else 
   64069             :              { 
   64070             :                copy_list_element = NULL; 
   64071             :              } 
   64072           0 :           members_copy.push_back(copy_list_element); 
   64073             :         } 
   64074           0 :      result->p_members = members_copy; 
   64075             :   // case: listType for members
   64076             :   // case: listType (typeIsPointerToList == false) for members
   64077           0 :      SgDeclarationStatementPtrList::const_iterator members_iterator = result->get_members().begin(); 
   64078           0 :      for ( /* empty by design */; members_iterator != result->get_members().end(); ++members_iterator) 
   64079             :         { 
   64080           0 :           SgDeclarationStatement* list_element = *members_iterator; 
   64081           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   64082             :              { 
   64083           0 :                list_element->set_parent(result); 
   64084             :              } 
   64085             :         } 
   64086             :   // Copy non-constructor parameter data member (list access function): result->get_inheritances()
   64087           0 :      SgBaseClassPtrList inheritances_copy; 
   64088             :   // case: listType for inheritances
   64089             :   // case: listType (typeIsPointerToList == false) for inheritances
   64090           0 :      SgBaseClassPtrList::const_iterator source_inheritances_iterator = get_inheritances().begin(); 
   64091           0 :      for ( /* empty by design */; source_inheritances_iterator != get_inheritances().end(); ++source_inheritances_iterator) 
   64092             :         { 
   64093           0 :           SgBaseClass* source_list_element = *source_inheritances_iterator; 
   64094           0 :           SgBaseClass* copy_list_element = NULL; 
   64095           0 :           if (source_list_element != NULL) 
   64096             :              { 
   64097           0 :                copy_list_element = static_cast<SgBaseClass*>(help.copyAst(*source_inheritances_iterator)); 
   64098             :              } 
   64099             :             else 
   64100             :              { 
   64101             :                copy_list_element = NULL; 
   64102             :              } 
   64103           0 :           inheritances_copy.push_back(copy_list_element); 
   64104             :         } 
   64105           0 :      result->p_inheritances = inheritances_copy; 
   64106             :   // case: listType for inheritances
   64107             :   // case: listType (typeIsPointerToList == false) for inheritances
   64108           0 :      SgBaseClassPtrList::const_iterator inheritances_iterator = result->get_inheritances().begin(); 
   64109           0 :      for ( /* empty by design */; inheritances_iterator != result->get_inheritances().end(); ++inheritances_iterator) 
   64110             :         { 
   64111           0 :           SgBaseClass* list_element = *inheritances_iterator; 
   64112           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   64113             :              { 
   64114           0 :                list_element->set_parent(result); 
   64115             :              } 
   64116             :         } 
   64117             :   // Copy non-constructor parameter data member (access function): packingAlignment_copy
   64118             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for packingAlignment
   64119             :   // case: toBeCopied == COPY_DATA for packingAlignment
   64120           0 :      unsigned int packingAlignment_copy = p_packingAlignment; 
   64121           0 :      result->p_packingAlignment = packingAlignment_copy; 
   64122             :   // Copy non-constructor parameter data member (access function): isSequence_copy
   64123             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isSequence
   64124             :   // case: toBeCopied == COPY_DATA for isSequence
   64125           0 :      bool isSequence_copy = p_isSequence; 
   64126           0 :      result->p_isSequence = isSequence_copy; 
   64127             :   // Copy non-constructor parameter data member (access function): isPrivate_copy
   64128             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isPrivate
   64129             :   // case: toBeCopied == COPY_DATA for isPrivate
   64130           0 :      bool isPrivate_copy = p_isPrivate; 
   64131           0 :      result->p_isPrivate = isPrivate_copy; 
   64132             :   // Copy non-constructor parameter data member (access function): isAbstract_copy
   64133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAbstract
   64134             :   // case: toBeCopied == COPY_DATA for isAbstract
   64135           0 :      bool isAbstract_copy = p_isAbstract; 
   64136           0 :      result->p_isAbstract = isAbstract_copy; 
   64137             : 
   64138             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   64139             : 
   64140             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   64141             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   64142             :   // fixupCopy(result,help);
   64143             : 
   64144             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   64145             :   // the Sg_File_Info objects that are built for the new IR nodes.
   64146           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   64147           0 :      if (locatedNode != NULL)
   64148             :         {
   64149             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   64150           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   64151           0 :           ROSE_ASSERT(start != NULL);
   64152             : #if 0
   64153             :        // Debugging information
   64154             :           if (start->get_parent() == NULL)
   64155             :              {
   64156             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64157             :              }
   64158             : #endif
   64159           0 :           start->set_parent(locatedNode);
   64160           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   64161             : 
   64162           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   64163             : 
   64164             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   64165             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   64166             :        // ROSE_ASSERT(end != NULL);
   64167           0 :           if (end == NULL)
   64168             :              {
   64169           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   64170             :              }
   64171             :             else
   64172             :              {
   64173             : #if 0
   64174             :             // Debugging information
   64175             :                if (end->get_parent() == NULL)
   64176             :                   {
   64177             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64178             :                   }
   64179             : #endif
   64180           0 :                end->set_parent(locatedNode);
   64181           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   64182             :              }
   64183             : 
   64184           0 :           SgExpression* expression = isSgExpression(result);
   64185           0 :           if (isSgExpression(this) != NULL)
   64186             :              {
   64187           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   64188             : 
   64189             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   64190           0 :                if (operatorPosition != NULL)
   64191             :                   {
   64192             : #if 0
   64193             :                  // Debugging information
   64194             :                     if (operatorPosition->get_parent() == NULL)
   64195             :                        {
   64196             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64197             :                        }
   64198             : #endif
   64199           0 :                     operatorPosition->set_parent(expression);
   64200           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   64201             :                   }
   64202             :              }
   64203             :         }
   64204             : 
   64205             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   64206           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   64207           0 :      if (initializedName != NULL)
   64208             :         {
   64209             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   64210           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   64211           0 :           ROSE_ASSERT(start != NULL);
   64212             : #if 0
   64213             :        // Debugging information
   64214             :           if (start->get_parent() == NULL)
   64215             :              {
   64216             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64217             :              }
   64218             : #endif
   64219           0 :           start->set_parent(initializedName);
   64220           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   64221             : 
   64222             : #if 0
   64223             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   64224             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   64225             : 
   64226             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   64227             :        // ROSE_ASSERT(end != NULL);
   64228             :           if (end == NULL)
   64229             :              {
   64230             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   64231             :              }
   64232             :             else
   64233             :              {
   64234             :                if (end->get_parent() == NULL)
   64235             :                   {
   64236             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64237             :                   }
   64238             :                end->set_parent(initializedName);
   64239             :                ROSE_ASSERT(end->get_parent() != NULL);
   64240             :              }
   64241             : #endif
   64242             :         }
   64243             : 
   64244             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   64245           0 :      help.insertCopiedNodePair(this,result);
   64246             : 
   64247             :   // printf ("End of copy SgTemplateInstantiationDefn = %p = %s \n",this,SageInterface::get_name(this).c_str());
   64248             : 
   64249             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   64250             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   64251           0 :      help.decrementDepth();
   64252             : 
   64253             :   // Test if this is the root of the copy!
   64254           0 :      if (help.get_depth() == 0)
   64255             :         {
   64256             :        // This is the original calling node.
   64257             : 
   64258             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   64259             :        // printf ("Calling SgTemplateInstantiationDefn::fixupCopy() (from root of AST being copied) \n");
   64260             : #if ALT_FIXUP_COPY
   64261             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   64262           0 :           fixupCopy_scopes (result,help);
   64263           0 :           fixupCopy_symbols (result,help);
   64264           0 :           fixupCopy_references (result,help);
   64265             : #else
   64266             :           fixupCopy(result,help);
   64267             : #endif
   64268             :        // Allow this to be called recursively, so accumulate the state.
   64269             :        // Also, clear the state in the SgCopyHelp object.
   64270             :        // help.clearState();
   64271             :         }
   64272             : 
   64273           0 :      return result;
   64274             :    }
   64275             : 
   64276             : 
   64277             : /* #line 64278 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   64278             : 
   64279             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   64280             : 
   64281           0 : SgNode* SgTemplateClassDefinition::copy ( SgCopyHelp& help) const
   64282             :    {
   64283           0 :      SgTemplateClassDefinition* result = NULL;
   64284             : 
   64285             :   // printf ("Copy SgTemplateClassDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   64286             : 
   64287             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   64288             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   64289             :   // The default value of the depth is 0, so after this call the depth is 1!
   64290           0 :      help.incrementDepth();
   64291             : 
   64292             : #if 0
   64293             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   64294             :   // but it is not generally true that things can only be copied once!
   64295             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   64296             :   // AstAttribute* existingAttribute = const_cast<SgTemplateClassDefinition*>(this)->attribute["copied"];
   64297             :      bool previouslyCopied = const_cast<SgTemplateClassDefinition*>(this)->attribute.exists("copied");
   64298             :      if (previouslyCopied == true)
   64299             :         {
   64300             :           this->get_file_info()->display("Called from copy SgTemplateClassDefinition: debug");
   64301             :         }
   64302             :      ROSE_ASSERT(previouslyCopied == false);
   64303             : 
   64304             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   64305             :      AstAttribute* newAttribute = new AstAttribute();
   64306             :      ROSE_ASSERT(newAttribute != NULL);
   64307             : 
   64308             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   64309             :      const_cast<SgTemplateClassDefinition*>(this)->attribute.add("copied",newAttribute);
   64310             : #endif
   64311             : 
   64312             :   // Copy data members from base classes
   64313             :   // Copy constructor parameter data member: startOfConstruct_copy
   64314             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   64315             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   64316           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   64317           0 :      if ( p_startOfConstruct != NULL ) 
   64318             :         { 
   64319           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   64320             :         } 
   64321             :        else 
   64322             :         { 
   64323             :           startOfConstruct_copy = NULL; 
   64324             :         } 
   64325             :  
   64326             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   64327             : 
   64328             :   // Build an empty copy of this object (will be filled in, but 
   64329             :   // the parent can't be set and must be set by the caller)
   64330           0 :      result = new SgTemplateClassDefinition(  startOfConstruct_copy );
   64331           0 :      ROSE_ASSERT(result != NULL);
   64332             : 
   64333             :   // Copy data members of "this" class
   64334             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   64335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   64336             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   64337           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   64338           0 :      if ( p_endOfConstruct != NULL ) 
   64339             :         { 
   64340           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   64341             :         } 
   64342             :        else 
   64343             :         { 
   64344             :           endOfConstruct_copy = NULL; 
   64345             :         } 
   64346             :   /* check for a valid pointer and delete if present */ 
   64347           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   64348             :   /* add assignment to result here */ 
   64349           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   64350             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   64351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   64352             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   64353           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   64354           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   64355             :         { 
   64356           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   64357             :         } 
   64358             :        else 
   64359             :         { 
   64360             :           attachedPreprocessingInfoPtr_copy = NULL; 
   64361             :         } 
   64362             :   /* check for a valid pointer and delete if present */ 
   64363           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   64364             :   /* add assignment to result here */ 
   64365           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   64366             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   64367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   64368             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   64369           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   64370           0 :      if ( p_attributeMechanism != NULL ) 
   64371             :         { 
   64372           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   64373             :         } 
   64374             :        else 
   64375             :         { 
   64376             :           attributeMechanism_copy = NULL; 
   64377             :         } 
   64378             :   /* check for a valid pointer and delete if present */ 
   64379           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   64380             :   /* add assignment to result here */ 
   64381           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   64382             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   64383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   64384             :   // case: toBeCopied == COPY_DATA for numeric_label
   64385           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   64386           0 :      result->p_numeric_label = numeric_label_copy; 
   64387             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   64388             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   64389             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   64390           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   64391           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   64392             :   // Copy non-constructor parameter data member (list access function): result->get_members()
   64393           0 :      SgDeclarationStatementPtrList members_copy; 
   64394             :   // case: listType for members
   64395             :   // case: listType (typeIsPointerToList == false) for members
   64396           0 :      SgDeclarationStatementPtrList::const_iterator source_members_iterator = get_members().begin(); 
   64397           0 :      for ( /* empty by design */; source_members_iterator != get_members().end(); ++source_members_iterator) 
   64398             :         { 
   64399           0 :           SgDeclarationStatement* source_list_element = *source_members_iterator; 
   64400           0 :           SgDeclarationStatement* copy_list_element = NULL; 
   64401           0 :           if (source_list_element != NULL) 
   64402             :              { 
   64403           0 :                copy_list_element = static_cast<SgDeclarationStatement*>(help.copyAst(*source_members_iterator)); 
   64404             :              } 
   64405             :             else 
   64406             :              { 
   64407             :                copy_list_element = NULL; 
   64408             :              } 
   64409           0 :           members_copy.push_back(copy_list_element); 
   64410             :         } 
   64411           0 :      result->p_members = members_copy; 
   64412             :   // case: listType for members
   64413             :   // case: listType (typeIsPointerToList == false) for members
   64414           0 :      SgDeclarationStatementPtrList::const_iterator members_iterator = result->get_members().begin(); 
   64415           0 :      for ( /* empty by design */; members_iterator != result->get_members().end(); ++members_iterator) 
   64416             :         { 
   64417           0 :           SgDeclarationStatement* list_element = *members_iterator; 
   64418           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   64419             :              { 
   64420           0 :                list_element->set_parent(result); 
   64421             :              } 
   64422             :         } 
   64423             :   // Copy non-constructor parameter data member (list access function): result->get_inheritances()
   64424           0 :      SgBaseClassPtrList inheritances_copy; 
   64425             :   // case: listType for inheritances
   64426             :   // case: listType (typeIsPointerToList == false) for inheritances
   64427           0 :      SgBaseClassPtrList::const_iterator source_inheritances_iterator = get_inheritances().begin(); 
   64428           0 :      for ( /* empty by design */; source_inheritances_iterator != get_inheritances().end(); ++source_inheritances_iterator) 
   64429             :         { 
   64430           0 :           SgBaseClass* source_list_element = *source_inheritances_iterator; 
   64431           0 :           SgBaseClass* copy_list_element = NULL; 
   64432           0 :           if (source_list_element != NULL) 
   64433             :              { 
   64434           0 :                copy_list_element = static_cast<SgBaseClass*>(help.copyAst(*source_inheritances_iterator)); 
   64435             :              } 
   64436             :             else 
   64437             :              { 
   64438             :                copy_list_element = NULL; 
   64439             :              } 
   64440           0 :           inheritances_copy.push_back(copy_list_element); 
   64441             :         } 
   64442           0 :      result->p_inheritances = inheritances_copy; 
   64443             :   // case: listType for inheritances
   64444             :   // case: listType (typeIsPointerToList == false) for inheritances
   64445           0 :      SgBaseClassPtrList::const_iterator inheritances_iterator = result->get_inheritances().begin(); 
   64446           0 :      for ( /* empty by design */; inheritances_iterator != result->get_inheritances().end(); ++inheritances_iterator) 
   64447             :         { 
   64448           0 :           SgBaseClass* list_element = *inheritances_iterator; 
   64449           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   64450             :              { 
   64451           0 :                list_element->set_parent(result); 
   64452             :              } 
   64453             :         } 
   64454             :   // Copy non-constructor parameter data member (access function): packingAlignment_copy
   64455             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for packingAlignment
   64456             :   // case: toBeCopied == COPY_DATA for packingAlignment
   64457           0 :      unsigned int packingAlignment_copy = p_packingAlignment; 
   64458           0 :      result->p_packingAlignment = packingAlignment_copy; 
   64459             :   // Copy non-constructor parameter data member (access function): isSequence_copy
   64460             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isSequence
   64461             :   // case: toBeCopied == COPY_DATA for isSequence
   64462           0 :      bool isSequence_copy = p_isSequence; 
   64463           0 :      result->p_isSequence = isSequence_copy; 
   64464             :   // Copy non-constructor parameter data member (access function): isPrivate_copy
   64465             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isPrivate
   64466             :   // case: toBeCopied == COPY_DATA for isPrivate
   64467           0 :      bool isPrivate_copy = p_isPrivate; 
   64468           0 :      result->p_isPrivate = isPrivate_copy; 
   64469             :   // Copy non-constructor parameter data member (access function): isAbstract_copy
   64470             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAbstract
   64471             :   // case: toBeCopied == COPY_DATA for isAbstract
   64472           0 :      bool isAbstract_copy = p_isAbstract; 
   64473           0 :      result->p_isAbstract = isAbstract_copy; 
   64474             : 
   64475             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   64476             : 
   64477             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   64478             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   64479             :   // fixupCopy(result,help);
   64480             : 
   64481             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   64482             :   // the Sg_File_Info objects that are built for the new IR nodes.
   64483           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   64484           0 :      if (locatedNode != NULL)
   64485             :         {
   64486             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   64487           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   64488           0 :           ROSE_ASSERT(start != NULL);
   64489             : #if 0
   64490             :        // Debugging information
   64491             :           if (start->get_parent() == NULL)
   64492             :              {
   64493             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64494             :              }
   64495             : #endif
   64496           0 :           start->set_parent(locatedNode);
   64497           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   64498             : 
   64499           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   64500             : 
   64501             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   64502             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   64503             :        // ROSE_ASSERT(end != NULL);
   64504           0 :           if (end == NULL)
   64505             :              {
   64506           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   64507             :              }
   64508             :             else
   64509             :              {
   64510             : #if 0
   64511             :             // Debugging information
   64512             :                if (end->get_parent() == NULL)
   64513             :                   {
   64514             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64515             :                   }
   64516             : #endif
   64517           0 :                end->set_parent(locatedNode);
   64518           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   64519             :              }
   64520             : 
   64521           0 :           SgExpression* expression = isSgExpression(result);
   64522           0 :           if (isSgExpression(this) != NULL)
   64523             :              {
   64524           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   64525             : 
   64526             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   64527           0 :                if (operatorPosition != NULL)
   64528             :                   {
   64529             : #if 0
   64530             :                  // Debugging information
   64531             :                     if (operatorPosition->get_parent() == NULL)
   64532             :                        {
   64533             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64534             :                        }
   64535             : #endif
   64536           0 :                     operatorPosition->set_parent(expression);
   64537           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   64538             :                   }
   64539             :              }
   64540             :         }
   64541             : 
   64542             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   64543           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   64544           0 :      if (initializedName != NULL)
   64545             :         {
   64546             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   64547           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   64548           0 :           ROSE_ASSERT(start != NULL);
   64549             : #if 0
   64550             :        // Debugging information
   64551             :           if (start->get_parent() == NULL)
   64552             :              {
   64553             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64554             :              }
   64555             : #endif
   64556           0 :           start->set_parent(initializedName);
   64557           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   64558             : 
   64559             : #if 0
   64560             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   64561             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   64562             : 
   64563             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   64564             :        // ROSE_ASSERT(end != NULL);
   64565             :           if (end == NULL)
   64566             :              {
   64567             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   64568             :              }
   64569             :             else
   64570             :              {
   64571             :                if (end->get_parent() == NULL)
   64572             :                   {
   64573             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64574             :                   }
   64575             :                end->set_parent(initializedName);
   64576             :                ROSE_ASSERT(end->get_parent() != NULL);
   64577             :              }
   64578             : #endif
   64579             :         }
   64580             : 
   64581             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   64582           0 :      help.insertCopiedNodePair(this,result);
   64583             : 
   64584             :   // printf ("End of copy SgTemplateClassDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   64585             : 
   64586             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   64587             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   64588           0 :      help.decrementDepth();
   64589             : 
   64590             :   // Test if this is the root of the copy!
   64591           0 :      if (help.get_depth() == 0)
   64592             :         {
   64593             :        // This is the original calling node.
   64594             : 
   64595             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   64596             :        // printf ("Calling SgTemplateClassDefinition::fixupCopy() (from root of AST being copied) \n");
   64597             : #if ALT_FIXUP_COPY
   64598             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   64599           0 :           fixupCopy_scopes (result,help);
   64600           0 :           fixupCopy_symbols (result,help);
   64601           0 :           fixupCopy_references (result,help);
   64602             : #else
   64603             :           fixupCopy(result,help);
   64604             : #endif
   64605             :        // Allow this to be called recursively, so accumulate the state.
   64606             :        // Also, clear the state in the SgCopyHelp object.
   64607             :        // help.clearState();
   64608             :         }
   64609             : 
   64610           0 :      return result;
   64611             :    }
   64612             : 
   64613             : 
   64614             : /* #line 64615 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   64615             : 
   64616             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   64617             : 
   64618           0 : SgNode* SgWhileStmt::copy ( SgCopyHelp& help) const
   64619             :    {
   64620           0 :      SgWhileStmt* result = NULL;
   64621             : 
   64622             :   // printf ("Copy SgWhileStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   64623             : 
   64624             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   64625             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   64626             :   // The default value of the depth is 0, so after this call the depth is 1!
   64627           0 :      help.incrementDepth();
   64628             : 
   64629             : #if 0
   64630             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   64631             :   // but it is not generally true that things can only be copied once!
   64632             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   64633             :   // AstAttribute* existingAttribute = const_cast<SgWhileStmt*>(this)->attribute["copied"];
   64634             :      bool previouslyCopied = const_cast<SgWhileStmt*>(this)->attribute.exists("copied");
   64635             :      if (previouslyCopied == true)
   64636             :         {
   64637             :           this->get_file_info()->display("Called from copy SgWhileStmt: debug");
   64638             :         }
   64639             :      ROSE_ASSERT(previouslyCopied == false);
   64640             : 
   64641             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   64642             :      AstAttribute* newAttribute = new AstAttribute();
   64643             :      ROSE_ASSERT(newAttribute != NULL);
   64644             : 
   64645             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   64646             :      const_cast<SgWhileStmt*>(this)->attribute.add("copied",newAttribute);
   64647             : #endif
   64648             : 
   64649             :   // Copy data members from base classes
   64650             :   // Copy constructor parameter data member: startOfConstruct_copy
   64651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   64652             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   64653           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   64654           0 :      if ( p_startOfConstruct != NULL ) 
   64655             :         { 
   64656           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   64657             :         } 
   64658             :        else 
   64659             :         { 
   64660             :           startOfConstruct_copy = NULL; 
   64661             :         } 
   64662             :   // Copy constructor parameter data member: condition_copy
   64663           0 :      SgStatement* condition_copy; 
   64664             :   // case: not a listType for (using conditionalToCopyVariable)condition
   64665           0 :           if (get_condition() != NULL) 
   64666             :              { 
   64667           0 :                condition_copy = static_cast<SgStatement*>(help.copyAst(get_condition())); 
   64668             :              } 
   64669             :             else 
   64670             :              { 
   64671             :                condition_copy = NULL; 
   64672             :              } 
   64673             :   // Copy constructor parameter data member: body_copy
   64674           0 :      SgStatement* body_copy; 
   64675             :   // case: not a listType for (using conditionalToCopyVariable)body
   64676           0 :           if (get_body() != NULL) 
   64677             :              { 
   64678           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
   64679             :              } 
   64680             :             else 
   64681             :              { 
   64682             :                body_copy = NULL; 
   64683             :              } 
   64684             :  
   64685             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   64686             : 
   64687             :   // Build an empty copy of this object (will be filled in, but 
   64688             :   // the parent can't be set and must be set by the caller)
   64689           0 :      result = new SgWhileStmt(  startOfConstruct_copy, condition_copy, body_copy );
   64690           0 :      ROSE_ASSERT(result != NULL);
   64691             : 
   64692             :   // Copy data members of "this" class
   64693             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   64694             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   64695             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   64696           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   64697           0 :      if ( p_endOfConstruct != NULL ) 
   64698             :         { 
   64699           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   64700             :         } 
   64701             :        else 
   64702             :         { 
   64703             :           endOfConstruct_copy = NULL; 
   64704             :         } 
   64705             :   /* check for a valid pointer and delete if present */ 
   64706           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   64707             :   /* add assignment to result here */ 
   64708           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   64709             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   64710             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   64711             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   64712           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   64713           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   64714             :         { 
   64715           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   64716             :         } 
   64717             :        else 
   64718             :         { 
   64719             :           attachedPreprocessingInfoPtr_copy = NULL; 
   64720             :         } 
   64721             :   /* check for a valid pointer and delete if present */ 
   64722           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   64723             :   /* add assignment to result here */ 
   64724           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   64725             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   64726             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   64727             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   64728           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   64729           0 :      if ( p_attributeMechanism != NULL ) 
   64730             :         { 
   64731           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   64732             :         } 
   64733             :        else 
   64734             :         { 
   64735             :           attributeMechanism_copy = NULL; 
   64736             :         } 
   64737             :   /* check for a valid pointer and delete if present */ 
   64738           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   64739             :   /* add assignment to result here */ 
   64740           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   64741             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   64742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   64743             :   // case: toBeCopied == COPY_DATA for numeric_label
   64744           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   64745           0 :      result->p_numeric_label = numeric_label_copy; 
   64746             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   64747             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   64748             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   64749           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   64750           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   64751             :   // Copy non-constructor parameter data member (access function): else_body_copy
   64752           0 :      SgStatement* else_body_copy; 
   64753             :   // case: not a listType for (using conditionalToCopyVariable)else_body
   64754           0 :           if (get_else_body() != NULL) 
   64755             :              { 
   64756           0 :                else_body_copy = static_cast<SgStatement*>(help.copyAst(get_else_body())); 
   64757             :              } 
   64758             :             else 
   64759             :              { 
   64760             :                else_body_copy = NULL; 
   64761             :              } 
   64762             :   /* check for a valid pointer and delete if present */ 
   64763           0 :      if (result->p_else_body != NULL) delete result->p_else_body; 
   64764           0 :      result->p_else_body = else_body_copy; 
   64765             :   // case: not a listType for (using conditionalToSetParent)else_body
   64766           0 :           if ( (else_body_copy != NULL) && (else_body_copy->get_parent() == NULL) && (isSgType(else_body_copy) == NULL) ) 
   64767             :              { 
   64768           0 :                else_body_copy->set_parent(result); 
   64769             :              } 
   64770             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   64771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   64772             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   64773           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   64774           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   64775             :   // Copy non-constructor parameter data member (access function): string_label_copy
   64776             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_label
   64777             :   // case: toBeCopied == COPY_DATA for string_label
   64778           0 :      std::string string_label_copy = p_string_label; 
   64779           0 :      result->p_string_label = string_label_copy; 
   64780             :   // Copy non-constructor parameter data member (access function): has_end_statement_copy
   64781             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_end_statement
   64782             :   // case: toBeCopied == COPY_DATA for has_end_statement
   64783           0 :      bool has_end_statement_copy = p_has_end_statement; 
   64784           0 :      result->p_has_end_statement = has_end_statement_copy; 
   64785             :   // case: not a listType for (using conditionalToSetParent)condition
   64786           0 :           if ( (condition_copy != NULL) && (condition_copy->get_parent() == NULL) && (isSgType(condition_copy) == NULL) ) 
   64787             :              { 
   64788           0 :                condition_copy->set_parent(result); 
   64789             :              } 
   64790             :   // case: not a listType for (using conditionalToSetParent)body
   64791           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   64792             :              { 
   64793           0 :                body_copy->set_parent(result); 
   64794             :              } 
   64795             : 
   64796             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   64797             : 
   64798             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   64799             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   64800             :   // fixupCopy(result,help);
   64801             : 
   64802             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   64803             :   // the Sg_File_Info objects that are built for the new IR nodes.
   64804           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   64805           0 :      if (locatedNode != NULL)
   64806             :         {
   64807             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   64808           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   64809           0 :           ROSE_ASSERT(start != NULL);
   64810             : #if 0
   64811             :        // Debugging information
   64812             :           if (start->get_parent() == NULL)
   64813             :              {
   64814             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64815             :              }
   64816             : #endif
   64817           0 :           start->set_parent(locatedNode);
   64818           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   64819             : 
   64820           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   64821             : 
   64822             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   64823             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   64824             :        // ROSE_ASSERT(end != NULL);
   64825           0 :           if (end == NULL)
   64826             :              {
   64827           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   64828             :              }
   64829             :             else
   64830             :              {
   64831             : #if 0
   64832             :             // Debugging information
   64833             :                if (end->get_parent() == NULL)
   64834             :                   {
   64835             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64836             :                   }
   64837             : #endif
   64838           0 :                end->set_parent(locatedNode);
   64839           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   64840             :              }
   64841             : 
   64842           0 :           SgExpression* expression = isSgExpression(result);
   64843           0 :           if (isSgExpression(this) != NULL)
   64844             :              {
   64845           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   64846             : 
   64847             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   64848           0 :                if (operatorPosition != NULL)
   64849             :                   {
   64850             : #if 0
   64851             :                  // Debugging information
   64852             :                     if (operatorPosition->get_parent() == NULL)
   64853             :                        {
   64854             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64855             :                        }
   64856             : #endif
   64857           0 :                     operatorPosition->set_parent(expression);
   64858           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   64859             :                   }
   64860             :              }
   64861             :         }
   64862             : 
   64863             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   64864           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   64865           0 :      if (initializedName != NULL)
   64866             :         {
   64867             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   64868           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   64869           0 :           ROSE_ASSERT(start != NULL);
   64870             : #if 0
   64871             :        // Debugging information
   64872             :           if (start->get_parent() == NULL)
   64873             :              {
   64874             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64875             :              }
   64876             : #endif
   64877           0 :           start->set_parent(initializedName);
   64878           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   64879             : 
   64880             : #if 0
   64881             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   64882             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   64883             : 
   64884             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   64885             :        // ROSE_ASSERT(end != NULL);
   64886             :           if (end == NULL)
   64887             :              {
   64888             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   64889             :              }
   64890             :             else
   64891             :              {
   64892             :                if (end->get_parent() == NULL)
   64893             :                   {
   64894             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   64895             :                   }
   64896             :                end->set_parent(initializedName);
   64897             :                ROSE_ASSERT(end->get_parent() != NULL);
   64898             :              }
   64899             : #endif
   64900             :         }
   64901             : 
   64902             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   64903           0 :      help.insertCopiedNodePair(this,result);
   64904             : 
   64905             :   // printf ("End of copy SgWhileStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   64906             : 
   64907             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   64908             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   64909           0 :      help.decrementDepth();
   64910             : 
   64911             :   // Test if this is the root of the copy!
   64912           0 :      if (help.get_depth() == 0)
   64913             :         {
   64914             :        // This is the original calling node.
   64915             : 
   64916             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   64917             :        // printf ("Calling SgWhileStmt::fixupCopy() (from root of AST being copied) \n");
   64918             : #if ALT_FIXUP_COPY
   64919             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   64920           0 :           fixupCopy_scopes (result,help);
   64921           0 :           fixupCopy_symbols (result,help);
   64922           0 :           fixupCopy_references (result,help);
   64923             : #else
   64924             :           fixupCopy(result,help);
   64925             : #endif
   64926             :        // Allow this to be called recursively, so accumulate the state.
   64927             :        // Also, clear the state in the SgCopyHelp object.
   64928             :        // help.clearState();
   64929             :         }
   64930             : 
   64931           0 :      return result;
   64932             :    }
   64933             : 
   64934             : 
   64935             : /* #line 64936 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   64936             : 
   64937             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   64938             : 
   64939           0 : SgNode* SgDoWhileStmt::copy ( SgCopyHelp& help) const
   64940             :    {
   64941           0 :      SgDoWhileStmt* result = NULL;
   64942             : 
   64943             :   // printf ("Copy SgDoWhileStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   64944             : 
   64945             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   64946             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   64947             :   // The default value of the depth is 0, so after this call the depth is 1!
   64948           0 :      help.incrementDepth();
   64949             : 
   64950             : #if 0
   64951             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   64952             :   // but it is not generally true that things can only be copied once!
   64953             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   64954             :   // AstAttribute* existingAttribute = const_cast<SgDoWhileStmt*>(this)->attribute["copied"];
   64955             :      bool previouslyCopied = const_cast<SgDoWhileStmt*>(this)->attribute.exists("copied");
   64956             :      if (previouslyCopied == true)
   64957             :         {
   64958             :           this->get_file_info()->display("Called from copy SgDoWhileStmt: debug");
   64959             :         }
   64960             :      ROSE_ASSERT(previouslyCopied == false);
   64961             : 
   64962             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   64963             :      AstAttribute* newAttribute = new AstAttribute();
   64964             :      ROSE_ASSERT(newAttribute != NULL);
   64965             : 
   64966             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   64967             :      const_cast<SgDoWhileStmt*>(this)->attribute.add("copied",newAttribute);
   64968             : #endif
   64969             : 
   64970             :   // Copy data members from base classes
   64971             :   // Copy constructor parameter data member: startOfConstruct_copy
   64972             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   64973             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   64974           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   64975           0 :      if ( p_startOfConstruct != NULL ) 
   64976             :         { 
   64977           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   64978             :         } 
   64979             :        else 
   64980             :         { 
   64981             :           startOfConstruct_copy = NULL; 
   64982             :         } 
   64983             :   // Copy constructor parameter data member: body_copy
   64984           0 :      SgStatement* body_copy; 
   64985             :   // case: not a listType for (using conditionalToCopyVariable)body
   64986           0 :           if (get_body() != NULL) 
   64987             :              { 
   64988           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
   64989             :              } 
   64990             :             else 
   64991             :              { 
   64992             :                body_copy = NULL; 
   64993             :              } 
   64994             :   // Copy constructor parameter data member: condition_copy
   64995           0 :      SgStatement* condition_copy; 
   64996             :   // case: not a listType for (using conditionalToCopyVariable)condition
   64997           0 :           if (get_condition() != NULL) 
   64998             :              { 
   64999           0 :                condition_copy = static_cast<SgStatement*>(help.copyAst(get_condition())); 
   65000             :              } 
   65001             :             else 
   65002             :              { 
   65003             :                condition_copy = NULL; 
   65004             :              } 
   65005             :  
   65006             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65007             : 
   65008             :   // Build an empty copy of this object (will be filled in, but 
   65009             :   // the parent can't be set and must be set by the caller)
   65010           0 :      result = new SgDoWhileStmt(  startOfConstruct_copy, body_copy, condition_copy );
   65011           0 :      ROSE_ASSERT(result != NULL);
   65012             : 
   65013             :   // Copy data members of "this" class
   65014             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   65015             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   65016             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   65017           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   65018           0 :      if ( p_endOfConstruct != NULL ) 
   65019             :         { 
   65020           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   65021             :         } 
   65022             :        else 
   65023             :         { 
   65024             :           endOfConstruct_copy = NULL; 
   65025             :         } 
   65026             :   /* check for a valid pointer and delete if present */ 
   65027           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   65028             :   /* add assignment to result here */ 
   65029           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   65030             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   65031             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   65032             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   65033           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   65034           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   65035             :         { 
   65036           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   65037             :         } 
   65038             :        else 
   65039             :         { 
   65040             :           attachedPreprocessingInfoPtr_copy = NULL; 
   65041             :         } 
   65042             :   /* check for a valid pointer and delete if present */ 
   65043           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   65044             :   /* add assignment to result here */ 
   65045           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   65046             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   65047             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   65048             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   65049           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   65050           0 :      if ( p_attributeMechanism != NULL ) 
   65051             :         { 
   65052           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   65053             :         } 
   65054             :        else 
   65055             :         { 
   65056             :           attributeMechanism_copy = NULL; 
   65057             :         } 
   65058             :   /* check for a valid pointer and delete if present */ 
   65059           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   65060             :   /* add assignment to result here */ 
   65061           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   65062             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   65063             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   65064             :   // case: toBeCopied == COPY_DATA for numeric_label
   65065           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   65066           0 :      result->p_numeric_label = numeric_label_copy; 
   65067             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   65068             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   65069             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   65070           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   65071           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   65072             :   // case: not a listType for (using conditionalToSetParent)body
   65073           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   65074             :              { 
   65075           0 :                body_copy->set_parent(result); 
   65076             :              } 
   65077             :   // case: not a listType for (using conditionalToSetParent)condition
   65078           0 :           if ( (condition_copy != NULL) && (condition_copy->get_parent() == NULL) && (isSgType(condition_copy) == NULL) ) 
   65079             :              { 
   65080           0 :                condition_copy->set_parent(result); 
   65081             :              } 
   65082             : 
   65083             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65084             : 
   65085             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   65086             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   65087             :   // fixupCopy(result,help);
   65088             : 
   65089             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   65090             :   // the Sg_File_Info objects that are built for the new IR nodes.
   65091           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   65092           0 :      if (locatedNode != NULL)
   65093             :         {
   65094             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   65095           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   65096           0 :           ROSE_ASSERT(start != NULL);
   65097             : #if 0
   65098             :        // Debugging information
   65099             :           if (start->get_parent() == NULL)
   65100             :              {
   65101             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65102             :              }
   65103             : #endif
   65104           0 :           start->set_parent(locatedNode);
   65105           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   65106             : 
   65107           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   65108             : 
   65109             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   65110             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   65111             :        // ROSE_ASSERT(end != NULL);
   65112           0 :           if (end == NULL)
   65113             :              {
   65114           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   65115             :              }
   65116             :             else
   65117             :              {
   65118             : #if 0
   65119             :             // Debugging information
   65120             :                if (end->get_parent() == NULL)
   65121             :                   {
   65122             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65123             :                   }
   65124             : #endif
   65125           0 :                end->set_parent(locatedNode);
   65126           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   65127             :              }
   65128             : 
   65129           0 :           SgExpression* expression = isSgExpression(result);
   65130           0 :           if (isSgExpression(this) != NULL)
   65131             :              {
   65132           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   65133             : 
   65134             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   65135           0 :                if (operatorPosition != NULL)
   65136             :                   {
   65137             : #if 0
   65138             :                  // Debugging information
   65139             :                     if (operatorPosition->get_parent() == NULL)
   65140             :                        {
   65141             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65142             :                        }
   65143             : #endif
   65144           0 :                     operatorPosition->set_parent(expression);
   65145           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   65146             :                   }
   65147             :              }
   65148             :         }
   65149             : 
   65150             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   65151           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   65152           0 :      if (initializedName != NULL)
   65153             :         {
   65154             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   65155           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   65156           0 :           ROSE_ASSERT(start != NULL);
   65157             : #if 0
   65158             :        // Debugging information
   65159             :           if (start->get_parent() == NULL)
   65160             :              {
   65161             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65162             :              }
   65163             : #endif
   65164           0 :           start->set_parent(initializedName);
   65165           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   65166             : 
   65167             : #if 0
   65168             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   65169             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   65170             : 
   65171             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   65172             :        // ROSE_ASSERT(end != NULL);
   65173             :           if (end == NULL)
   65174             :              {
   65175             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   65176             :              }
   65177             :             else
   65178             :              {
   65179             :                if (end->get_parent() == NULL)
   65180             :                   {
   65181             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65182             :                   }
   65183             :                end->set_parent(initializedName);
   65184             :                ROSE_ASSERT(end->get_parent() != NULL);
   65185             :              }
   65186             : #endif
   65187             :         }
   65188             : 
   65189             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   65190           0 :      help.insertCopiedNodePair(this,result);
   65191             : 
   65192             :   // printf ("End of copy SgDoWhileStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   65193             : 
   65194             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   65195             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   65196           0 :      help.decrementDepth();
   65197             : 
   65198             :   // Test if this is the root of the copy!
   65199           0 :      if (help.get_depth() == 0)
   65200             :         {
   65201             :        // This is the original calling node.
   65202             : 
   65203             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   65204             :        // printf ("Calling SgDoWhileStmt::fixupCopy() (from root of AST being copied) \n");
   65205             : #if ALT_FIXUP_COPY
   65206             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   65207           0 :           fixupCopy_scopes (result,help);
   65208           0 :           fixupCopy_symbols (result,help);
   65209           0 :           fixupCopy_references (result,help);
   65210             : #else
   65211             :           fixupCopy(result,help);
   65212             : #endif
   65213             :        // Allow this to be called recursively, so accumulate the state.
   65214             :        // Also, clear the state in the SgCopyHelp object.
   65215             :        // help.clearState();
   65216             :         }
   65217             : 
   65218           0 :      return result;
   65219             :    }
   65220             : 
   65221             : 
   65222             : /* #line 65223 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   65223             : 
   65224             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65225             : 
   65226           0 : SgNode* SgSwitchStatement::copy ( SgCopyHelp& help) const
   65227             :    {
   65228           0 :      SgSwitchStatement* result = NULL;
   65229             : 
   65230             :   // printf ("Copy SgSwitchStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   65231             : 
   65232             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   65233             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   65234             :   // The default value of the depth is 0, so after this call the depth is 1!
   65235           0 :      help.incrementDepth();
   65236             : 
   65237             : #if 0
   65238             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   65239             :   // but it is not generally true that things can only be copied once!
   65240             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   65241             :   // AstAttribute* existingAttribute = const_cast<SgSwitchStatement*>(this)->attribute["copied"];
   65242             :      bool previouslyCopied = const_cast<SgSwitchStatement*>(this)->attribute.exists("copied");
   65243             :      if (previouslyCopied == true)
   65244             :         {
   65245             :           this->get_file_info()->display("Called from copy SgSwitchStatement: debug");
   65246             :         }
   65247             :      ROSE_ASSERT(previouslyCopied == false);
   65248             : 
   65249             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   65250             :      AstAttribute* newAttribute = new AstAttribute();
   65251             :      ROSE_ASSERT(newAttribute != NULL);
   65252             : 
   65253             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   65254             :      const_cast<SgSwitchStatement*>(this)->attribute.add("copied",newAttribute);
   65255             : #endif
   65256             : 
   65257             :   // Copy data members from base classes
   65258             :   // Copy constructor parameter data member: startOfConstruct_copy
   65259             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   65260             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   65261           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   65262           0 :      if ( p_startOfConstruct != NULL ) 
   65263             :         { 
   65264           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   65265             :         } 
   65266             :        else 
   65267             :         { 
   65268             :           startOfConstruct_copy = NULL; 
   65269             :         } 
   65270             :   // Copy constructor parameter data member: item_selector_copy
   65271           0 :      SgStatement* item_selector_copy; 
   65272             :   // case: not a listType for (using conditionalToCopyVariable)item_selector
   65273           0 :           if (get_item_selector() != NULL) 
   65274             :              { 
   65275           0 :                item_selector_copy = static_cast<SgStatement*>(help.copyAst(get_item_selector())); 
   65276             :              } 
   65277             :             else 
   65278             :              { 
   65279             :                item_selector_copy = NULL; 
   65280             :              } 
   65281             :   // Copy constructor parameter data member: body_copy
   65282           0 :      SgStatement* body_copy; 
   65283             :   // case: not a listType for (using conditionalToCopyVariable)body
   65284           0 :           if (get_body() != NULL) 
   65285             :              { 
   65286           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
   65287             :              } 
   65288             :             else 
   65289             :              { 
   65290             :                body_copy = NULL; 
   65291             :              } 
   65292             :  
   65293             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65294             : 
   65295             :   // Build an empty copy of this object (will be filled in, but 
   65296             :   // the parent can't be set and must be set by the caller)
   65297           0 :      result = new SgSwitchStatement(  startOfConstruct_copy, item_selector_copy, body_copy );
   65298           0 :      ROSE_ASSERT(result != NULL);
   65299             : 
   65300             :   // Copy data members of "this" class
   65301             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   65302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   65303             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   65304           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   65305           0 :      if ( p_endOfConstruct != NULL ) 
   65306             :         { 
   65307           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   65308             :         } 
   65309             :        else 
   65310             :         { 
   65311             :           endOfConstruct_copy = NULL; 
   65312             :         } 
   65313             :   /* check for a valid pointer and delete if present */ 
   65314           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   65315             :   /* add assignment to result here */ 
   65316           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   65317             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   65318             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   65319             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   65320           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   65321           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   65322             :         { 
   65323           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   65324             :         } 
   65325             :        else 
   65326             :         { 
   65327             :           attachedPreprocessingInfoPtr_copy = NULL; 
   65328             :         } 
   65329             :   /* check for a valid pointer and delete if present */ 
   65330           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   65331             :   /* add assignment to result here */ 
   65332           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   65333             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   65334             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   65335             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   65336           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   65337           0 :      if ( p_attributeMechanism != NULL ) 
   65338             :         { 
   65339           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   65340             :         } 
   65341             :        else 
   65342             :         { 
   65343             :           attributeMechanism_copy = NULL; 
   65344             :         } 
   65345             :   /* check for a valid pointer and delete if present */ 
   65346           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   65347             :   /* add assignment to result here */ 
   65348           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   65349             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   65350             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   65351             :   // case: toBeCopied == COPY_DATA for numeric_label
   65352           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   65353           0 :      result->p_numeric_label = numeric_label_copy; 
   65354             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   65355             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   65356             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   65357           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   65358           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   65359             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   65360             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   65361             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   65362           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   65363           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   65364             :   // Copy non-constructor parameter data member (access function): string_label_copy
   65365             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_label
   65366             :   // case: toBeCopied == COPY_DATA for string_label
   65367           0 :      std::string string_label_copy = p_string_label; 
   65368           0 :      result->p_string_label = string_label_copy; 
   65369             :   // case: not a listType for (using conditionalToSetParent)item_selector
   65370           0 :           if ( (item_selector_copy != NULL) && (item_selector_copy->get_parent() == NULL) && (isSgType(item_selector_copy) == NULL) ) 
   65371             :              { 
   65372           0 :                item_selector_copy->set_parent(result); 
   65373             :              } 
   65374             :   // case: not a listType for (using conditionalToSetParent)body
   65375           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   65376             :              { 
   65377           0 :                body_copy->set_parent(result); 
   65378             :              } 
   65379             : 
   65380             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65381             : 
   65382             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   65383             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   65384             :   // fixupCopy(result,help);
   65385             : 
   65386             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   65387             :   // the Sg_File_Info objects that are built for the new IR nodes.
   65388           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   65389           0 :      if (locatedNode != NULL)
   65390             :         {
   65391             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   65392           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   65393           0 :           ROSE_ASSERT(start != NULL);
   65394             : #if 0
   65395             :        // Debugging information
   65396             :           if (start->get_parent() == NULL)
   65397             :              {
   65398             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65399             :              }
   65400             : #endif
   65401           0 :           start->set_parent(locatedNode);
   65402           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   65403             : 
   65404           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   65405             : 
   65406             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   65407             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   65408             :        // ROSE_ASSERT(end != NULL);
   65409           0 :           if (end == NULL)
   65410             :              {
   65411           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   65412             :              }
   65413             :             else
   65414             :              {
   65415             : #if 0
   65416             :             // Debugging information
   65417             :                if (end->get_parent() == NULL)
   65418             :                   {
   65419             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65420             :                   }
   65421             : #endif
   65422           0 :                end->set_parent(locatedNode);
   65423           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   65424             :              }
   65425             : 
   65426           0 :           SgExpression* expression = isSgExpression(result);
   65427           0 :           if (isSgExpression(this) != NULL)
   65428             :              {
   65429           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   65430             : 
   65431             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   65432           0 :                if (operatorPosition != NULL)
   65433             :                   {
   65434             : #if 0
   65435             :                  // Debugging information
   65436             :                     if (operatorPosition->get_parent() == NULL)
   65437             :                        {
   65438             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65439             :                        }
   65440             : #endif
   65441           0 :                     operatorPosition->set_parent(expression);
   65442           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   65443             :                   }
   65444             :              }
   65445             :         }
   65446             : 
   65447             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   65448           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   65449           0 :      if (initializedName != NULL)
   65450             :         {
   65451             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   65452           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   65453           0 :           ROSE_ASSERT(start != NULL);
   65454             : #if 0
   65455             :        // Debugging information
   65456             :           if (start->get_parent() == NULL)
   65457             :              {
   65458             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65459             :              }
   65460             : #endif
   65461           0 :           start->set_parent(initializedName);
   65462           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   65463             : 
   65464             : #if 0
   65465             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   65466             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   65467             : 
   65468             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   65469             :        // ROSE_ASSERT(end != NULL);
   65470             :           if (end == NULL)
   65471             :              {
   65472             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   65473             :              }
   65474             :             else
   65475             :              {
   65476             :                if (end->get_parent() == NULL)
   65477             :                   {
   65478             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65479             :                   }
   65480             :                end->set_parent(initializedName);
   65481             :                ROSE_ASSERT(end->get_parent() != NULL);
   65482             :              }
   65483             : #endif
   65484             :         }
   65485             : 
   65486             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   65487           0 :      help.insertCopiedNodePair(this,result);
   65488             : 
   65489             :   // printf ("End of copy SgSwitchStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   65490             : 
   65491             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   65492             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   65493           0 :      help.decrementDepth();
   65494             : 
   65495             :   // Test if this is the root of the copy!
   65496           0 :      if (help.get_depth() == 0)
   65497             :         {
   65498             :        // This is the original calling node.
   65499             : 
   65500             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   65501             :        // printf ("Calling SgSwitchStatement::fixupCopy() (from root of AST being copied) \n");
   65502             : #if ALT_FIXUP_COPY
   65503             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   65504           0 :           fixupCopy_scopes (result,help);
   65505           0 :           fixupCopy_symbols (result,help);
   65506           0 :           fixupCopy_references (result,help);
   65507             : #else
   65508             :           fixupCopy(result,help);
   65509             : #endif
   65510             :        // Allow this to be called recursively, so accumulate the state.
   65511             :        // Also, clear the state in the SgCopyHelp object.
   65512             :        // help.clearState();
   65513             :         }
   65514             : 
   65515           0 :      return result;
   65516             :    }
   65517             : 
   65518             : 
   65519             : /* #line 65520 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   65520             : 
   65521             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65522             : 
   65523           0 : SgNode* SgCatchOptionStmt::copy ( SgCopyHelp& help) const
   65524             :    {
   65525           0 :      SgCatchOptionStmt* result = NULL;
   65526             : 
   65527             :   // printf ("Copy SgCatchOptionStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   65528             : 
   65529             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   65530             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   65531             :   // The default value of the depth is 0, so after this call the depth is 1!
   65532           0 :      help.incrementDepth();
   65533             : 
   65534             : #if 0
   65535             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   65536             :   // but it is not generally true that things can only be copied once!
   65537             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   65538             :   // AstAttribute* existingAttribute = const_cast<SgCatchOptionStmt*>(this)->attribute["copied"];
   65539             :      bool previouslyCopied = const_cast<SgCatchOptionStmt*>(this)->attribute.exists("copied");
   65540             :      if (previouslyCopied == true)
   65541             :         {
   65542             :           this->get_file_info()->display("Called from copy SgCatchOptionStmt: debug");
   65543             :         }
   65544             :      ROSE_ASSERT(previouslyCopied == false);
   65545             : 
   65546             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   65547             :      AstAttribute* newAttribute = new AstAttribute();
   65548             :      ROSE_ASSERT(newAttribute != NULL);
   65549             : 
   65550             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   65551             :      const_cast<SgCatchOptionStmt*>(this)->attribute.add("copied",newAttribute);
   65552             : #endif
   65553             : 
   65554             :   // Copy data members from base classes
   65555             :   // Copy constructor parameter data member: startOfConstruct_copy
   65556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   65557             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   65558           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   65559           0 :      if ( p_startOfConstruct != NULL ) 
   65560             :         { 
   65561           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   65562             :         } 
   65563             :        else 
   65564             :         { 
   65565             :           startOfConstruct_copy = NULL; 
   65566             :         } 
   65567             :   // Copy constructor parameter data member: condition_copy
   65568           0 :      SgVariableDeclaration* condition_copy; 
   65569             :   // case: not a listType for (using conditionalToCopyVariable)condition
   65570           0 :           if (get_condition() != NULL) 
   65571             :              { 
   65572           0 :                condition_copy = static_cast<SgVariableDeclaration*>(help.copyAst(get_condition())); 
   65573             :              } 
   65574             :             else 
   65575             :              { 
   65576             :                condition_copy = NULL; 
   65577             :              } 
   65578             :   // Copy constructor parameter data member: body_copy
   65579           0 :      SgStatement* body_copy; 
   65580             :   // case: not a listType for (using conditionalToCopyVariable)body
   65581           0 :           if (get_body() != NULL) 
   65582             :              { 
   65583           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
   65584             :              } 
   65585             :             else 
   65586             :              { 
   65587             :                body_copy = NULL; 
   65588             :              } 
   65589             :   // Copy constructor parameter data member: trystmt_copy
   65590             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for trystmt
   65591             :   // case: toBeCopied == COPY_DATA for trystmt
   65592           0 :      SgTryStmt* trystmt_copy = p_trystmt; 
   65593             :  
   65594             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65595             : 
   65596             :   // Build an empty copy of this object (will be filled in, but 
   65597             :   // the parent can't be set and must be set by the caller)
   65598           0 :      result = new SgCatchOptionStmt(  startOfConstruct_copy, condition_copy, body_copy, trystmt_copy );
   65599           0 :      ROSE_ASSERT(result != NULL);
   65600             : 
   65601             :   // Copy data members of "this" class
   65602             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   65603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   65604             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   65605           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   65606           0 :      if ( p_endOfConstruct != NULL ) 
   65607             :         { 
   65608           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   65609             :         } 
   65610             :        else 
   65611             :         { 
   65612             :           endOfConstruct_copy = NULL; 
   65613             :         } 
   65614             :   /* check for a valid pointer and delete if present */ 
   65615           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   65616             :   /* add assignment to result here */ 
   65617           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   65618             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   65619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   65620             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   65621           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   65622           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   65623             :         { 
   65624           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   65625             :         } 
   65626             :        else 
   65627             :         { 
   65628             :           attachedPreprocessingInfoPtr_copy = NULL; 
   65629             :         } 
   65630             :   /* check for a valid pointer and delete if present */ 
   65631           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   65632             :   /* add assignment to result here */ 
   65633           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   65634             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   65635             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   65636             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   65637           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   65638           0 :      if ( p_attributeMechanism != NULL ) 
   65639             :         { 
   65640           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   65641             :         } 
   65642             :        else 
   65643             :         { 
   65644             :           attributeMechanism_copy = NULL; 
   65645             :         } 
   65646             :   /* check for a valid pointer and delete if present */ 
   65647           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   65648             :   /* add assignment to result here */ 
   65649           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   65650             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   65651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   65652             :   // case: toBeCopied == COPY_DATA for numeric_label
   65653           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   65654           0 :      result->p_numeric_label = numeric_label_copy; 
   65655             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   65656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   65657             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   65658           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   65659           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   65660             :   // case: not a listType for (using conditionalToSetParent)condition
   65661           0 :           if ( (condition_copy != NULL) && (condition_copy->get_parent() == NULL) && (isSgType(condition_copy) == NULL) ) 
   65662             :              { 
   65663           0 :                condition_copy->set_parent(result); 
   65664             :              } 
   65665             :   // case: not a listType for (using conditionalToSetParent)body
   65666           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   65667             :              { 
   65668           0 :                body_copy->set_parent(result); 
   65669             :              } 
   65670             : 
   65671             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65672             : 
   65673             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   65674             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   65675             :   // fixupCopy(result,help);
   65676             : 
   65677             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   65678             :   // the Sg_File_Info objects that are built for the new IR nodes.
   65679           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   65680           0 :      if (locatedNode != NULL)
   65681             :         {
   65682             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   65683           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   65684           0 :           ROSE_ASSERT(start != NULL);
   65685             : #if 0
   65686             :        // Debugging information
   65687             :           if (start->get_parent() == NULL)
   65688             :              {
   65689             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65690             :              }
   65691             : #endif
   65692           0 :           start->set_parent(locatedNode);
   65693           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   65694             : 
   65695           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   65696             : 
   65697             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   65698             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   65699             :        // ROSE_ASSERT(end != NULL);
   65700           0 :           if (end == NULL)
   65701             :              {
   65702           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   65703             :              }
   65704             :             else
   65705             :              {
   65706             : #if 0
   65707             :             // Debugging information
   65708             :                if (end->get_parent() == NULL)
   65709             :                   {
   65710             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65711             :                   }
   65712             : #endif
   65713           0 :                end->set_parent(locatedNode);
   65714           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   65715             :              }
   65716             : 
   65717           0 :           SgExpression* expression = isSgExpression(result);
   65718           0 :           if (isSgExpression(this) != NULL)
   65719             :              {
   65720           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   65721             : 
   65722             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   65723           0 :                if (operatorPosition != NULL)
   65724             :                   {
   65725             : #if 0
   65726             :                  // Debugging information
   65727             :                     if (operatorPosition->get_parent() == NULL)
   65728             :                        {
   65729             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65730             :                        }
   65731             : #endif
   65732           0 :                     operatorPosition->set_parent(expression);
   65733           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   65734             :                   }
   65735             :              }
   65736             :         }
   65737             : 
   65738             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   65739           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   65740           0 :      if (initializedName != NULL)
   65741             :         {
   65742             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   65743           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   65744           0 :           ROSE_ASSERT(start != NULL);
   65745             : #if 0
   65746             :        // Debugging information
   65747             :           if (start->get_parent() == NULL)
   65748             :              {
   65749             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65750             :              }
   65751             : #endif
   65752           0 :           start->set_parent(initializedName);
   65753           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   65754             : 
   65755             : #if 0
   65756             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   65757             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   65758             : 
   65759             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   65760             :        // ROSE_ASSERT(end != NULL);
   65761             :           if (end == NULL)
   65762             :              {
   65763             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   65764             :              }
   65765             :             else
   65766             :              {
   65767             :                if (end->get_parent() == NULL)
   65768             :                   {
   65769             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   65770             :                   }
   65771             :                end->set_parent(initializedName);
   65772             :                ROSE_ASSERT(end->get_parent() != NULL);
   65773             :              }
   65774             : #endif
   65775             :         }
   65776             : 
   65777             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   65778           0 :      help.insertCopiedNodePair(this,result);
   65779             : 
   65780             :   // printf ("End of copy SgCatchOptionStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   65781             : 
   65782             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   65783             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   65784           0 :      help.decrementDepth();
   65785             : 
   65786             :   // Test if this is the root of the copy!
   65787           0 :      if (help.get_depth() == 0)
   65788             :         {
   65789             :        // This is the original calling node.
   65790             : 
   65791             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   65792             :        // printf ("Calling SgCatchOptionStmt::fixupCopy() (from root of AST being copied) \n");
   65793             : #if ALT_FIXUP_COPY
   65794             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   65795           0 :           fixupCopy_scopes (result,help);
   65796           0 :           fixupCopy_symbols (result,help);
   65797           0 :           fixupCopy_references (result,help);
   65798             : #else
   65799             :           fixupCopy(result,help);
   65800             : #endif
   65801             :        // Allow this to be called recursively, so accumulate the state.
   65802             :        // Also, clear the state in the SgCopyHelp object.
   65803             :        // help.clearState();
   65804             :         }
   65805             : 
   65806           0 :      return result;
   65807             :    }
   65808             : 
   65809             : 
   65810             : /* #line 65811 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   65811             : 
   65812             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65813             : 
   65814           0 : SgNode* SgNamespaceDefinitionStatement::copy ( SgCopyHelp& help) const
   65815             :    {
   65816           0 :      SgNamespaceDefinitionStatement* result = NULL;
   65817             : 
   65818             :   // printf ("Copy SgNamespaceDefinitionStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   65819             : 
   65820             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   65821             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   65822             :   // The default value of the depth is 0, so after this call the depth is 1!
   65823           0 :      help.incrementDepth();
   65824             : 
   65825             : #if 0
   65826             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   65827             :   // but it is not generally true that things can only be copied once!
   65828             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   65829             :   // AstAttribute* existingAttribute = const_cast<SgNamespaceDefinitionStatement*>(this)->attribute["copied"];
   65830             :      bool previouslyCopied = const_cast<SgNamespaceDefinitionStatement*>(this)->attribute.exists("copied");
   65831             :      if (previouslyCopied == true)
   65832             :         {
   65833             :           this->get_file_info()->display("Called from copy SgNamespaceDefinitionStatement: debug");
   65834             :         }
   65835             :      ROSE_ASSERT(previouslyCopied == false);
   65836             : 
   65837             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   65838             :      AstAttribute* newAttribute = new AstAttribute();
   65839             :      ROSE_ASSERT(newAttribute != NULL);
   65840             : 
   65841             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   65842             :      const_cast<SgNamespaceDefinitionStatement*>(this)->attribute.add("copied",newAttribute);
   65843             : #endif
   65844             : 
   65845             :   // Copy data members from base classes
   65846             :   // Copy constructor parameter data member: startOfConstruct_copy
   65847             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   65848             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   65849           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   65850           0 :      if ( p_startOfConstruct != NULL ) 
   65851             :         { 
   65852           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   65853             :         } 
   65854             :        else 
   65855             :         { 
   65856             :           startOfConstruct_copy = NULL; 
   65857             :         } 
   65858             :   // Copy constructor parameter data member: namespaceDeclaration_copy
   65859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for namespaceDeclaration
   65860             :   // case: toBeCopied == COPY_DATA for namespaceDeclaration
   65861           0 :      SgNamespaceDeclarationStatement* namespaceDeclaration_copy = p_namespaceDeclaration; 
   65862             :  
   65863             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65864             : 
   65865             :   // Build an empty copy of this object (will be filled in, but 
   65866             :   // the parent can't be set and must be set by the caller)
   65867           0 :      result = new SgNamespaceDefinitionStatement(  startOfConstruct_copy, namespaceDeclaration_copy );
   65868           0 :      ROSE_ASSERT(result != NULL);
   65869             : 
   65870             :   // Copy data members of "this" class
   65871             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   65872             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   65873             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   65874           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   65875           0 :      if ( p_endOfConstruct != NULL ) 
   65876             :         { 
   65877           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   65878             :         } 
   65879             :        else 
   65880             :         { 
   65881             :           endOfConstruct_copy = NULL; 
   65882             :         } 
   65883             :   /* check for a valid pointer and delete if present */ 
   65884           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   65885             :   /* add assignment to result here */ 
   65886           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   65887             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   65888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   65889             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   65890           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   65891           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   65892             :         { 
   65893           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   65894             :         } 
   65895             :        else 
   65896             :         { 
   65897             :           attachedPreprocessingInfoPtr_copy = NULL; 
   65898             :         } 
   65899             :   /* check for a valid pointer and delete if present */ 
   65900           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   65901             :   /* add assignment to result here */ 
   65902           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   65903             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   65904             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   65905             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   65906           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   65907           0 :      if ( p_attributeMechanism != NULL ) 
   65908             :         { 
   65909           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   65910             :         } 
   65911             :        else 
   65912             :         { 
   65913             :           attributeMechanism_copy = NULL; 
   65914             :         } 
   65915             :   /* check for a valid pointer and delete if present */ 
   65916           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   65917             :   /* add assignment to result here */ 
   65918           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   65919             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   65920             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   65921             :   // case: toBeCopied == COPY_DATA for numeric_label
   65922           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   65923           0 :      result->p_numeric_label = numeric_label_copy; 
   65924             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   65925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   65926             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   65927           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   65928           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   65929             :   // Copy non-constructor parameter data member (list access function): result->get_declarations()
   65930           0 :      SgDeclarationStatementPtrList declarations_copy; 
   65931             :   // case: listType for declarations
   65932             :   // case: listType (typeIsPointerToList == false) for declarations
   65933           0 :      SgDeclarationStatementPtrList::const_iterator source_declarations_iterator = get_declarations().begin(); 
   65934           0 :      for ( /* empty by design */; source_declarations_iterator != get_declarations().end(); ++source_declarations_iterator) 
   65935             :         { 
   65936           0 :           SgDeclarationStatement* source_list_element = *source_declarations_iterator; 
   65937           0 :           SgDeclarationStatement* copy_list_element = NULL; 
   65938           0 :           if (source_list_element != NULL) 
   65939             :              { 
   65940           0 :                copy_list_element = static_cast<SgDeclarationStatement*>(help.copyAst(*source_declarations_iterator)); 
   65941             :              } 
   65942             :             else 
   65943             :              { 
   65944             :                copy_list_element = NULL; 
   65945             :              } 
   65946           0 :           declarations_copy.push_back(copy_list_element); 
   65947             :         } 
   65948           0 :      result->p_declarations = declarations_copy; 
   65949             :   // case: listType for declarations
   65950             :   // case: listType (typeIsPointerToList == false) for declarations
   65951           0 :      SgDeclarationStatementPtrList::const_iterator declarations_iterator = result->get_declarations().begin(); 
   65952           0 :      for ( /* empty by design */; declarations_iterator != result->get_declarations().end(); ++declarations_iterator) 
   65953             :         { 
   65954           0 :           SgDeclarationStatement* list_element = *declarations_iterator; 
   65955           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   65956             :              { 
   65957           0 :                list_element->set_parent(result); 
   65958             :              } 
   65959             :         } 
   65960             :   // Copy non-constructor parameter data member (access function): previousNamespaceDefinition_copy
   65961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for previousNamespaceDefinition
   65962             :   // case: toBeCopied == COPY_DATA for previousNamespaceDefinition
   65963           0 :      SgNamespaceDefinitionStatement* previousNamespaceDefinition_copy = p_previousNamespaceDefinition; 
   65964           0 :      result->p_previousNamespaceDefinition = previousNamespaceDefinition_copy; 
   65965             :   // Copy non-constructor parameter data member (access function): nextNamespaceDefinition_copy
   65966             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nextNamespaceDefinition
   65967             :   // case: toBeCopied == COPY_DATA for nextNamespaceDefinition
   65968           0 :      SgNamespaceDefinitionStatement* nextNamespaceDefinition_copy = p_nextNamespaceDefinition; 
   65969           0 :      result->p_nextNamespaceDefinition = nextNamespaceDefinition_copy; 
   65970             :   // Copy non-constructor parameter data member (access function): global_definition_copy
   65971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_definition
   65972             :   // case: toBeCopied == COPY_DATA for global_definition
   65973           0 :      SgNamespaceDefinitionStatement* global_definition_copy = p_global_definition; 
   65974           0 :      result->p_global_definition = global_definition_copy; 
   65975             :   // Copy non-constructor parameter data member (access function): isUnionOfReentrantNamespaceDefinitions_copy
   65976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isUnionOfReentrantNamespaceDefinitions
   65977             :   // case: toBeCopied == COPY_DATA for isUnionOfReentrantNamespaceDefinitions
   65978           0 :      bool isUnionOfReentrantNamespaceDefinitions_copy = p_isUnionOfReentrantNamespaceDefinitions; 
   65979           0 :      result->p_isUnionOfReentrantNamespaceDefinitions = isUnionOfReentrantNamespaceDefinitions_copy; 
   65980             : 
   65981             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   65982             : 
   65983             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   65984             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   65985             :   // fixupCopy(result,help);
   65986             : 
   65987             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   65988             :   // the Sg_File_Info objects that are built for the new IR nodes.
   65989           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   65990           0 :      if (locatedNode != NULL)
   65991             :         {
   65992             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   65993           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   65994           0 :           ROSE_ASSERT(start != NULL);
   65995             : #if 0
   65996             :        // Debugging information
   65997             :           if (start->get_parent() == NULL)
   65998             :              {
   65999             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66000             :              }
   66001             : #endif
   66002           0 :           start->set_parent(locatedNode);
   66003           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   66004             : 
   66005           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   66006             : 
   66007             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   66008             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   66009             :        // ROSE_ASSERT(end != NULL);
   66010           0 :           if (end == NULL)
   66011             :              {
   66012           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   66013             :              }
   66014             :             else
   66015             :              {
   66016             : #if 0
   66017             :             // Debugging information
   66018             :                if (end->get_parent() == NULL)
   66019             :                   {
   66020             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66021             :                   }
   66022             : #endif
   66023           0 :                end->set_parent(locatedNode);
   66024           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   66025             :              }
   66026             : 
   66027           0 :           SgExpression* expression = isSgExpression(result);
   66028           0 :           if (isSgExpression(this) != NULL)
   66029             :              {
   66030           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   66031             : 
   66032             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   66033           0 :                if (operatorPosition != NULL)
   66034             :                   {
   66035             : #if 0
   66036             :                  // Debugging information
   66037             :                     if (operatorPosition->get_parent() == NULL)
   66038             :                        {
   66039             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66040             :                        }
   66041             : #endif
   66042           0 :                     operatorPosition->set_parent(expression);
   66043           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   66044             :                   }
   66045             :              }
   66046             :         }
   66047             : 
   66048             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   66049           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   66050           0 :      if (initializedName != NULL)
   66051             :         {
   66052             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   66053           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   66054           0 :           ROSE_ASSERT(start != NULL);
   66055             : #if 0
   66056             :        // Debugging information
   66057             :           if (start->get_parent() == NULL)
   66058             :              {
   66059             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66060             :              }
   66061             : #endif
   66062           0 :           start->set_parent(initializedName);
   66063           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   66064             : 
   66065             : #if 0
   66066             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   66067             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   66068             : 
   66069             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   66070             :        // ROSE_ASSERT(end != NULL);
   66071             :           if (end == NULL)
   66072             :              {
   66073             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   66074             :              }
   66075             :             else
   66076             :              {
   66077             :                if (end->get_parent() == NULL)
   66078             :                   {
   66079             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66080             :                   }
   66081             :                end->set_parent(initializedName);
   66082             :                ROSE_ASSERT(end->get_parent() != NULL);
   66083             :              }
   66084             : #endif
   66085             :         }
   66086             : 
   66087             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   66088           0 :      help.insertCopiedNodePair(this,result);
   66089             : 
   66090             :   // printf ("End of copy SgNamespaceDefinitionStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   66091             : 
   66092             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   66093             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   66094           0 :      help.decrementDepth();
   66095             : 
   66096             :   // Test if this is the root of the copy!
   66097           0 :      if (help.get_depth() == 0)
   66098             :         {
   66099             :        // This is the original calling node.
   66100             : 
   66101             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   66102             :        // printf ("Calling SgNamespaceDefinitionStatement::fixupCopy() (from root of AST being copied) \n");
   66103             : #if ALT_FIXUP_COPY
   66104             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   66105           0 :           fixupCopy_scopes (result,help);
   66106           0 :           fixupCopy_symbols (result,help);
   66107           0 :           fixupCopy_references (result,help);
   66108             : #else
   66109             :           fixupCopy(result,help);
   66110             : #endif
   66111             :        // Allow this to be called recursively, so accumulate the state.
   66112             :        // Also, clear the state in the SgCopyHelp object.
   66113             :        // help.clearState();
   66114             :         }
   66115             : 
   66116           0 :      return result;
   66117             :    }
   66118             : 
   66119             : 
   66120             : /* #line 66121 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   66121             : 
   66122             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   66123             : 
   66124           0 : SgNode* SgBlockDataStatement::copy ( SgCopyHelp& help) const
   66125             :    {
   66126           0 :      SgBlockDataStatement* result = NULL;
   66127             : 
   66128             :   // printf ("Copy SgBlockDataStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   66129             : 
   66130             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   66131             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   66132             :   // The default value of the depth is 0, so after this call the depth is 1!
   66133           0 :      help.incrementDepth();
   66134             : 
   66135             : #if 0
   66136             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   66137             :   // but it is not generally true that things can only be copied once!
   66138             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   66139             :   // AstAttribute* existingAttribute = const_cast<SgBlockDataStatement*>(this)->attribute["copied"];
   66140             :      bool previouslyCopied = const_cast<SgBlockDataStatement*>(this)->attribute.exists("copied");
   66141             :      if (previouslyCopied == true)
   66142             :         {
   66143             :           this->get_file_info()->display("Called from copy SgBlockDataStatement: debug");
   66144             :         }
   66145             :      ROSE_ASSERT(previouslyCopied == false);
   66146             : 
   66147             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   66148             :      AstAttribute* newAttribute = new AstAttribute();
   66149             :      ROSE_ASSERT(newAttribute != NULL);
   66150             : 
   66151             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   66152             :      const_cast<SgBlockDataStatement*>(this)->attribute.add("copied",newAttribute);
   66153             : #endif
   66154             : 
   66155             :   // Copy data members from base classes
   66156             :   // Copy constructor parameter data member: startOfConstruct_copy
   66157             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   66158             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   66159           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   66160           0 :      if ( p_startOfConstruct != NULL ) 
   66161             :         { 
   66162           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   66163             :         } 
   66164             :        else 
   66165             :         { 
   66166             :           startOfConstruct_copy = NULL; 
   66167             :         } 
   66168             :  
   66169             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   66170             : 
   66171             :   // Build an empty copy of this object (will be filled in, but 
   66172             :   // the parent can't be set and must be set by the caller)
   66173           0 :      result = new SgBlockDataStatement(  startOfConstruct_copy );
   66174           0 :      ROSE_ASSERT(result != NULL);
   66175             : 
   66176             :   // Copy data members of "this" class
   66177             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   66178             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   66179             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   66180           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   66181           0 :      if ( p_endOfConstruct != NULL ) 
   66182             :         { 
   66183           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   66184             :         } 
   66185             :        else 
   66186             :         { 
   66187             :           endOfConstruct_copy = NULL; 
   66188             :         } 
   66189             :   /* check for a valid pointer and delete if present */ 
   66190           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   66191             :   /* add assignment to result here */ 
   66192           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   66193             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   66194             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   66195             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   66196           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   66197           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   66198             :         { 
   66199           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   66200             :         } 
   66201             :        else 
   66202             :         { 
   66203             :           attachedPreprocessingInfoPtr_copy = NULL; 
   66204             :         } 
   66205             :   /* check for a valid pointer and delete if present */ 
   66206           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   66207             :   /* add assignment to result here */ 
   66208           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   66209             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   66210             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   66211             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   66212           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   66213           0 :      if ( p_attributeMechanism != NULL ) 
   66214             :         { 
   66215           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   66216             :         } 
   66217             :        else 
   66218             :         { 
   66219             :           attributeMechanism_copy = NULL; 
   66220             :         } 
   66221             :   /* check for a valid pointer and delete if present */ 
   66222           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   66223             :   /* add assignment to result here */ 
   66224           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   66225             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   66226             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   66227             :   // case: toBeCopied == COPY_DATA for numeric_label
   66228           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   66229           0 :      result->p_numeric_label = numeric_label_copy; 
   66230             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   66231             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   66232             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   66233           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   66234           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   66235             :   // Copy non-constructor parameter data member (access function): body_copy
   66236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for body
   66237             :   // case: toBeCopied == COPY_DATA for body
   66238           0 :      SgBasicBlock* body_copy = p_body; 
   66239           0 :      result->p_body = body_copy; 
   66240             : 
   66241             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   66242             : 
   66243             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   66244             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   66245             :   // fixupCopy(result,help);
   66246             : 
   66247             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   66248             :   // the Sg_File_Info objects that are built for the new IR nodes.
   66249           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   66250           0 :      if (locatedNode != NULL)
   66251             :         {
   66252             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   66253           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   66254           0 :           ROSE_ASSERT(start != NULL);
   66255             : #if 0
   66256             :        // Debugging information
   66257             :           if (start->get_parent() == NULL)
   66258             :              {
   66259             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66260             :              }
   66261             : #endif
   66262           0 :           start->set_parent(locatedNode);
   66263           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   66264             : 
   66265           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   66266             : 
   66267             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   66268             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   66269             :        // ROSE_ASSERT(end != NULL);
   66270           0 :           if (end == NULL)
   66271             :              {
   66272           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   66273             :              }
   66274             :             else
   66275             :              {
   66276             : #if 0
   66277             :             // Debugging information
   66278             :                if (end->get_parent() == NULL)
   66279             :                   {
   66280             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66281             :                   }
   66282             : #endif
   66283           0 :                end->set_parent(locatedNode);
   66284           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   66285             :              }
   66286             : 
   66287           0 :           SgExpression* expression = isSgExpression(result);
   66288           0 :           if (isSgExpression(this) != NULL)
   66289             :              {
   66290           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   66291             : 
   66292             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   66293           0 :                if (operatorPosition != NULL)
   66294             :                   {
   66295             : #if 0
   66296             :                  // Debugging information
   66297             :                     if (operatorPosition->get_parent() == NULL)
   66298             :                        {
   66299             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66300             :                        }
   66301             : #endif
   66302           0 :                     operatorPosition->set_parent(expression);
   66303           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   66304             :                   }
   66305             :              }
   66306             :         }
   66307             : 
   66308             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   66309           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   66310           0 :      if (initializedName != NULL)
   66311             :         {
   66312             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   66313           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   66314           0 :           ROSE_ASSERT(start != NULL);
   66315             : #if 0
   66316             :        // Debugging information
   66317             :           if (start->get_parent() == NULL)
   66318             :              {
   66319             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66320             :              }
   66321             : #endif
   66322           0 :           start->set_parent(initializedName);
   66323           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   66324             : 
   66325             : #if 0
   66326             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   66327             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   66328             : 
   66329             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   66330             :        // ROSE_ASSERT(end != NULL);
   66331             :           if (end == NULL)
   66332             :              {
   66333             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   66334             :              }
   66335             :             else
   66336             :              {
   66337             :                if (end->get_parent() == NULL)
   66338             :                   {
   66339             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66340             :                   }
   66341             :                end->set_parent(initializedName);
   66342             :                ROSE_ASSERT(end->get_parent() != NULL);
   66343             :              }
   66344             : #endif
   66345             :         }
   66346             : 
   66347             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   66348           0 :      help.insertCopiedNodePair(this,result);
   66349             : 
   66350             :   // printf ("End of copy SgBlockDataStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   66351             : 
   66352             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   66353             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   66354           0 :      help.decrementDepth();
   66355             : 
   66356             :   // Test if this is the root of the copy!
   66357           0 :      if (help.get_depth() == 0)
   66358             :         {
   66359             :        // This is the original calling node.
   66360             : 
   66361             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   66362             :        // printf ("Calling SgBlockDataStatement::fixupCopy() (from root of AST being copied) \n");
   66363             : #if ALT_FIXUP_COPY
   66364             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   66365           0 :           fixupCopy_scopes (result,help);
   66366           0 :           fixupCopy_symbols (result,help);
   66367           0 :           fixupCopy_references (result,help);
   66368             : #else
   66369             :           fixupCopy(result,help);
   66370             : #endif
   66371             :        // Allow this to be called recursively, so accumulate the state.
   66372             :        // Also, clear the state in the SgCopyHelp object.
   66373             :        // help.clearState();
   66374             :         }
   66375             : 
   66376           0 :      return result;
   66377             :    }
   66378             : 
   66379             : 
   66380             : /* #line 66381 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   66381             : 
   66382             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   66383             : 
   66384           0 : SgNode* SgAssociateStatement::copy ( SgCopyHelp& help) const
   66385             :    {
   66386           0 :      SgAssociateStatement* result = NULL;
   66387             : 
   66388             :   // printf ("Copy SgAssociateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   66389             : 
   66390             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   66391             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   66392             :   // The default value of the depth is 0, so after this call the depth is 1!
   66393           0 :      help.incrementDepth();
   66394             : 
   66395             : #if 0
   66396             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   66397             :   // but it is not generally true that things can only be copied once!
   66398             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   66399             :   // AstAttribute* existingAttribute = const_cast<SgAssociateStatement*>(this)->attribute["copied"];
   66400             :      bool previouslyCopied = const_cast<SgAssociateStatement*>(this)->attribute.exists("copied");
   66401             :      if (previouslyCopied == true)
   66402             :         {
   66403             :           this->get_file_info()->display("Called from copy SgAssociateStatement: debug");
   66404             :         }
   66405             :      ROSE_ASSERT(previouslyCopied == false);
   66406             : 
   66407             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   66408             :      AstAttribute* newAttribute = new AstAttribute();
   66409             :      ROSE_ASSERT(newAttribute != NULL);
   66410             : 
   66411             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   66412             :      const_cast<SgAssociateStatement*>(this)->attribute.add("copied",newAttribute);
   66413             : #endif
   66414             : 
   66415             :   // Copy data members from base classes
   66416             :   // Copy constructor parameter data member: startOfConstruct_copy
   66417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   66418             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   66419           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   66420           0 :      if ( p_startOfConstruct != NULL ) 
   66421             :         { 
   66422           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   66423             :         } 
   66424             :        else 
   66425             :         { 
   66426             :           startOfConstruct_copy = NULL; 
   66427             :         } 
   66428             :  
   66429             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   66430             : 
   66431             :   // Build an empty copy of this object (will be filled in, but 
   66432             :   // the parent can't be set and must be set by the caller)
   66433           0 :      result = new SgAssociateStatement(  startOfConstruct_copy );
   66434           0 :      ROSE_ASSERT(result != NULL);
   66435             : 
   66436             :   // Copy data members of "this" class
   66437             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   66438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   66439             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   66440           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   66441           0 :      if ( p_endOfConstruct != NULL ) 
   66442             :         { 
   66443           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   66444             :         } 
   66445             :        else 
   66446             :         { 
   66447             :           endOfConstruct_copy = NULL; 
   66448             :         } 
   66449             :   /* check for a valid pointer and delete if present */ 
   66450           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   66451             :   /* add assignment to result here */ 
   66452           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   66453             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   66454             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   66455             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   66456           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   66457           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   66458             :         { 
   66459           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   66460             :         } 
   66461             :        else 
   66462             :         { 
   66463             :           attachedPreprocessingInfoPtr_copy = NULL; 
   66464             :         } 
   66465             :   /* check for a valid pointer and delete if present */ 
   66466           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   66467             :   /* add assignment to result here */ 
   66468           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   66469             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   66470             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   66471             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   66472           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   66473           0 :      if ( p_attributeMechanism != NULL ) 
   66474             :         { 
   66475           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   66476             :         } 
   66477             :        else 
   66478             :         { 
   66479             :           attributeMechanism_copy = NULL; 
   66480             :         } 
   66481             :   /* check for a valid pointer and delete if present */ 
   66482           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   66483             :   /* add assignment to result here */ 
   66484           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   66485             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   66486             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   66487             :   // case: toBeCopied == COPY_DATA for numeric_label
   66488           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   66489           0 :      result->p_numeric_label = numeric_label_copy; 
   66490             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   66491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   66492             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   66493           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   66494           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   66495             :   // Copy non-constructor parameter data member (list access function): result->get_associates()
   66496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for associates
   66497             :   // case: toBeCopied == COPY_DATA for associates
   66498           0 :      SgDeclarationStatementPtrList associates_copy = p_associates; 
   66499           0 :      result->p_associates = associates_copy; 
   66500             :   // Copy non-constructor parameter data member (access function): body_copy
   66501           0 :      SgBasicBlock* body_copy; 
   66502             :   // case: not a listType for (using conditionalToCopyVariable)body
   66503           0 :           if (get_body() != NULL) 
   66504             :              { 
   66505           0 :                body_copy = static_cast<SgBasicBlock*>(help.copyAst(get_body())); 
   66506             :              } 
   66507             :             else 
   66508             :              { 
   66509             :                body_copy = NULL; 
   66510             :              } 
   66511             :   /* check for a valid pointer and delete if present */ 
   66512           0 :      if (result->p_body != NULL) delete result->p_body; 
   66513           0 :      result->p_body = body_copy; 
   66514             :   // case: not a listType for (using conditionalToSetParent)body
   66515           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   66516             :              { 
   66517           0 :                body_copy->set_parent(result); 
   66518             :              } 
   66519             : 
   66520             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   66521             : 
   66522             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   66523             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   66524             :   // fixupCopy(result,help);
   66525             : 
   66526             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   66527             :   // the Sg_File_Info objects that are built for the new IR nodes.
   66528           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   66529           0 :      if (locatedNode != NULL)
   66530             :         {
   66531             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   66532           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   66533           0 :           ROSE_ASSERT(start != NULL);
   66534             : #if 0
   66535             :        // Debugging information
   66536             :           if (start->get_parent() == NULL)
   66537             :              {
   66538             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66539             :              }
   66540             : #endif
   66541           0 :           start->set_parent(locatedNode);
   66542           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   66543             : 
   66544           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   66545             : 
   66546             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   66547             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   66548             :        // ROSE_ASSERT(end != NULL);
   66549           0 :           if (end == NULL)
   66550             :              {
   66551           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   66552             :              }
   66553             :             else
   66554             :              {
   66555             : #if 0
   66556             :             // Debugging information
   66557             :                if (end->get_parent() == NULL)
   66558             :                   {
   66559             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66560             :                   }
   66561             : #endif
   66562           0 :                end->set_parent(locatedNode);
   66563           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   66564             :              }
   66565             : 
   66566           0 :           SgExpression* expression = isSgExpression(result);
   66567           0 :           if (isSgExpression(this) != NULL)
   66568             :              {
   66569           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   66570             : 
   66571             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   66572           0 :                if (operatorPosition != NULL)
   66573             :                   {
   66574             : #if 0
   66575             :                  // Debugging information
   66576             :                     if (operatorPosition->get_parent() == NULL)
   66577             :                        {
   66578             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66579             :                        }
   66580             : #endif
   66581           0 :                     operatorPosition->set_parent(expression);
   66582           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   66583             :                   }
   66584             :              }
   66585             :         }
   66586             : 
   66587             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   66588           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   66589           0 :      if (initializedName != NULL)
   66590             :         {
   66591             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   66592           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   66593           0 :           ROSE_ASSERT(start != NULL);
   66594             : #if 0
   66595             :        // Debugging information
   66596             :           if (start->get_parent() == NULL)
   66597             :              {
   66598             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66599             :              }
   66600             : #endif
   66601           0 :           start->set_parent(initializedName);
   66602           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   66603             : 
   66604             : #if 0
   66605             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   66606             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   66607             : 
   66608             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   66609             :        // ROSE_ASSERT(end != NULL);
   66610             :           if (end == NULL)
   66611             :              {
   66612             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   66613             :              }
   66614             :             else
   66615             :              {
   66616             :                if (end->get_parent() == NULL)
   66617             :                   {
   66618             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66619             :                   }
   66620             :                end->set_parent(initializedName);
   66621             :                ROSE_ASSERT(end->get_parent() != NULL);
   66622             :              }
   66623             : #endif
   66624             :         }
   66625             : 
   66626             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   66627           0 :      help.insertCopiedNodePair(this,result);
   66628             : 
   66629             :   // printf ("End of copy SgAssociateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   66630             : 
   66631             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   66632             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   66633           0 :      help.decrementDepth();
   66634             : 
   66635             :   // Test if this is the root of the copy!
   66636           0 :      if (help.get_depth() == 0)
   66637             :         {
   66638             :        // This is the original calling node.
   66639             : 
   66640             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   66641             :        // printf ("Calling SgAssociateStatement::fixupCopy() (from root of AST being copied) \n");
   66642             : #if ALT_FIXUP_COPY
   66643             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   66644           0 :           fixupCopy_scopes (result,help);
   66645           0 :           fixupCopy_symbols (result,help);
   66646           0 :           fixupCopy_references (result,help);
   66647             : #else
   66648             :           fixupCopy(result,help);
   66649             : #endif
   66650             :        // Allow this to be called recursively, so accumulate the state.
   66651             :        // Also, clear the state in the SgCopyHelp object.
   66652             :        // help.clearState();
   66653             :         }
   66654             : 
   66655           0 :      return result;
   66656             :    }
   66657             : 
   66658             : 
   66659             : /* #line 66660 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   66660             : 
   66661             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   66662             : 
   66663           0 : SgNode* SgFortranDo::copy ( SgCopyHelp& help) const
   66664             :    {
   66665           0 :      SgFortranDo* result = NULL;
   66666             : 
   66667             :   // printf ("Copy SgFortranDo = %p = %s \n",this,SageInterface::get_name(this).c_str());
   66668             : 
   66669             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   66670             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   66671             :   // The default value of the depth is 0, so after this call the depth is 1!
   66672           0 :      help.incrementDepth();
   66673             : 
   66674             : #if 0
   66675             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   66676             :   // but it is not generally true that things can only be copied once!
   66677             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   66678             :   // AstAttribute* existingAttribute = const_cast<SgFortranDo*>(this)->attribute["copied"];
   66679             :      bool previouslyCopied = const_cast<SgFortranDo*>(this)->attribute.exists("copied");
   66680             :      if (previouslyCopied == true)
   66681             :         {
   66682             :           this->get_file_info()->display("Called from copy SgFortranDo: debug");
   66683             :         }
   66684             :      ROSE_ASSERT(previouslyCopied == false);
   66685             : 
   66686             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   66687             :      AstAttribute* newAttribute = new AstAttribute();
   66688             :      ROSE_ASSERT(newAttribute != NULL);
   66689             : 
   66690             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   66691             :      const_cast<SgFortranDo*>(this)->attribute.add("copied",newAttribute);
   66692             : #endif
   66693             : 
   66694             :   // Copy data members from base classes
   66695             :   // Copy constructor parameter data member: startOfConstruct_copy
   66696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   66697             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   66698           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   66699           0 :      if ( p_startOfConstruct != NULL ) 
   66700             :         { 
   66701           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   66702             :         } 
   66703             :        else 
   66704             :         { 
   66705             :           startOfConstruct_copy = NULL; 
   66706             :         } 
   66707             :   // Copy constructor parameter data member: initialization_copy
   66708           0 :      SgExpression* initialization_copy; 
   66709             :   // case: not a listType for (using conditionalToCopyVariable)initialization
   66710           0 :           if (get_initialization() != NULL) 
   66711             :              { 
   66712           0 :                initialization_copy = static_cast<SgExpression*>(help.copyAst(get_initialization())); 
   66713             :              } 
   66714             :             else 
   66715             :              { 
   66716             :                initialization_copy = NULL; 
   66717             :              } 
   66718             :   // Copy constructor parameter data member: bound_copy
   66719           0 :      SgExpression* bound_copy; 
   66720             :   // case: not a listType for (using conditionalToCopyVariable)bound
   66721           0 :           if (get_bound() != NULL) 
   66722             :              { 
   66723           0 :                bound_copy = static_cast<SgExpression*>(help.copyAst(get_bound())); 
   66724             :              } 
   66725             :             else 
   66726             :              { 
   66727             :                bound_copy = NULL; 
   66728             :              } 
   66729             :   // Copy constructor parameter data member: increment_copy
   66730           0 :      SgExpression* increment_copy; 
   66731             :   // case: not a listType for (using conditionalToCopyVariable)increment
   66732           0 :           if (get_increment() != NULL) 
   66733             :              { 
   66734           0 :                increment_copy = static_cast<SgExpression*>(help.copyAst(get_increment())); 
   66735             :              } 
   66736             :             else 
   66737             :              { 
   66738             :                increment_copy = NULL; 
   66739             :              } 
   66740             :   // Copy constructor parameter data member: body_copy
   66741           0 :      SgBasicBlock* body_copy; 
   66742             :   // case: not a listType for (using conditionalToCopyVariable)body
   66743           0 :           if (get_body() != NULL) 
   66744             :              { 
   66745           0 :                body_copy = static_cast<SgBasicBlock*>(help.copyAst(get_body())); 
   66746             :              } 
   66747             :             else 
   66748             :              { 
   66749             :                body_copy = NULL; 
   66750             :              } 
   66751             :  
   66752             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   66753             : 
   66754             :   // Build an empty copy of this object (will be filled in, but 
   66755             :   // the parent can't be set and must be set by the caller)
   66756           0 :      result = new SgFortranDo(  startOfConstruct_copy, initialization_copy, bound_copy, increment_copy, body_copy );
   66757           0 :      ROSE_ASSERT(result != NULL);
   66758             : 
   66759             :   // Copy data members of "this" class
   66760             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   66761             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   66762             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   66763           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   66764           0 :      if ( p_endOfConstruct != NULL ) 
   66765             :         { 
   66766           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   66767             :         } 
   66768             :        else 
   66769             :         { 
   66770             :           endOfConstruct_copy = NULL; 
   66771             :         } 
   66772             :   /* check for a valid pointer and delete if present */ 
   66773           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   66774             :   /* add assignment to result here */ 
   66775           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   66776             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   66777             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   66778             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   66779           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   66780           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   66781             :         { 
   66782           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   66783             :         } 
   66784             :        else 
   66785             :         { 
   66786             :           attachedPreprocessingInfoPtr_copy = NULL; 
   66787             :         } 
   66788             :   /* check for a valid pointer and delete if present */ 
   66789           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   66790             :   /* add assignment to result here */ 
   66791           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   66792             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   66793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   66794             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   66795           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   66796           0 :      if ( p_attributeMechanism != NULL ) 
   66797             :         { 
   66798           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   66799             :         } 
   66800             :        else 
   66801             :         { 
   66802             :           attributeMechanism_copy = NULL; 
   66803             :         } 
   66804             :   /* check for a valid pointer and delete if present */ 
   66805           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   66806             :   /* add assignment to result here */ 
   66807           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   66808             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   66809             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   66810             :   // case: toBeCopied == COPY_DATA for numeric_label
   66811           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   66812           0 :      result->p_numeric_label = numeric_label_copy; 
   66813             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   66814             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   66815             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   66816           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   66817           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   66818             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   66819             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   66820             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   66821           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   66822           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   66823             :   // Copy non-constructor parameter data member (access function): string_label_copy
   66824             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_label
   66825             :   // case: toBeCopied == COPY_DATA for string_label
   66826           0 :      std::string string_label_copy = p_string_label; 
   66827           0 :      result->p_string_label = string_label_copy; 
   66828             :   // Copy non-constructor parameter data member (access function): old_style_copy
   66829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for old_style
   66830             :   // case: toBeCopied == COPY_DATA for old_style
   66831           0 :      bool old_style_copy = p_old_style; 
   66832           0 :      result->p_old_style = old_style_copy; 
   66833             :   // Copy non-constructor parameter data member (access function): has_end_statement_copy
   66834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_end_statement
   66835             :   // case: toBeCopied == COPY_DATA for has_end_statement
   66836           0 :      bool has_end_statement_copy = p_has_end_statement; 
   66837           0 :      result->p_has_end_statement = has_end_statement_copy; 
   66838             :   // case: not a listType for (using conditionalToSetParent)initialization
   66839           0 :           if ( (initialization_copy != NULL) && (initialization_copy->get_parent() == NULL) && (isSgType(initialization_copy) == NULL) ) 
   66840             :              { 
   66841           0 :                initialization_copy->set_parent(result); 
   66842             :              } 
   66843             :   // case: not a listType for (using conditionalToSetParent)bound
   66844           0 :           if ( (bound_copy != NULL) && (bound_copy->get_parent() == NULL) && (isSgType(bound_copy) == NULL) ) 
   66845             :              { 
   66846           0 :                bound_copy->set_parent(result); 
   66847             :              } 
   66848             :   // case: not a listType for (using conditionalToSetParent)increment
   66849           0 :           if ( (increment_copy != NULL) && (increment_copy->get_parent() == NULL) && (isSgType(increment_copy) == NULL) ) 
   66850             :              { 
   66851           0 :                increment_copy->set_parent(result); 
   66852             :              } 
   66853             :   // case: not a listType for (using conditionalToSetParent)body
   66854           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   66855             :              { 
   66856           0 :                body_copy->set_parent(result); 
   66857             :              } 
   66858             : 
   66859             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   66860             : 
   66861             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   66862             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   66863             :   // fixupCopy(result,help);
   66864             : 
   66865             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   66866             :   // the Sg_File_Info objects that are built for the new IR nodes.
   66867           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   66868           0 :      if (locatedNode != NULL)
   66869             :         {
   66870             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   66871           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   66872           0 :           ROSE_ASSERT(start != NULL);
   66873             : #if 0
   66874             :        // Debugging information
   66875             :           if (start->get_parent() == NULL)
   66876             :              {
   66877             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66878             :              }
   66879             : #endif
   66880           0 :           start->set_parent(locatedNode);
   66881           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   66882             : 
   66883           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   66884             : 
   66885             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   66886             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   66887             :        // ROSE_ASSERT(end != NULL);
   66888           0 :           if (end == NULL)
   66889             :              {
   66890           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   66891             :              }
   66892             :             else
   66893             :              {
   66894             : #if 0
   66895             :             // Debugging information
   66896             :                if (end->get_parent() == NULL)
   66897             :                   {
   66898             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66899             :                   }
   66900             : #endif
   66901           0 :                end->set_parent(locatedNode);
   66902           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   66903             :              }
   66904             : 
   66905           0 :           SgExpression* expression = isSgExpression(result);
   66906           0 :           if (isSgExpression(this) != NULL)
   66907             :              {
   66908           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   66909             : 
   66910             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   66911           0 :                if (operatorPosition != NULL)
   66912             :                   {
   66913             : #if 0
   66914             :                  // Debugging information
   66915             :                     if (operatorPosition->get_parent() == NULL)
   66916             :                        {
   66917             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66918             :                        }
   66919             : #endif
   66920           0 :                     operatorPosition->set_parent(expression);
   66921           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   66922             :                   }
   66923             :              }
   66924             :         }
   66925             : 
   66926             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   66927           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   66928           0 :      if (initializedName != NULL)
   66929             :         {
   66930             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   66931           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   66932           0 :           ROSE_ASSERT(start != NULL);
   66933             : #if 0
   66934             :        // Debugging information
   66935             :           if (start->get_parent() == NULL)
   66936             :              {
   66937             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66938             :              }
   66939             : #endif
   66940           0 :           start->set_parent(initializedName);
   66941           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   66942             : 
   66943             : #if 0
   66944             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   66945             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   66946             : 
   66947             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   66948             :        // ROSE_ASSERT(end != NULL);
   66949             :           if (end == NULL)
   66950             :              {
   66951             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   66952             :              }
   66953             :             else
   66954             :              {
   66955             :                if (end->get_parent() == NULL)
   66956             :                   {
   66957             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   66958             :                   }
   66959             :                end->set_parent(initializedName);
   66960             :                ROSE_ASSERT(end->get_parent() != NULL);
   66961             :              }
   66962             : #endif
   66963             :         }
   66964             : 
   66965             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   66966           0 :      help.insertCopiedNodePair(this,result);
   66967             : 
   66968             :   // printf ("End of copy SgFortranDo = %p = %s \n",this,SageInterface::get_name(this).c_str());
   66969             : 
   66970             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   66971             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   66972           0 :      help.decrementDepth();
   66973             : 
   66974             :   // Test if this is the root of the copy!
   66975           0 :      if (help.get_depth() == 0)
   66976             :         {
   66977             :        // This is the original calling node.
   66978             : 
   66979             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   66980             :        // printf ("Calling SgFortranDo::fixupCopy() (from root of AST being copied) \n");
   66981             : #if ALT_FIXUP_COPY
   66982             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   66983           0 :           fixupCopy_scopes (result,help);
   66984           0 :           fixupCopy_symbols (result,help);
   66985           0 :           fixupCopy_references (result,help);
   66986             : #else
   66987             :           fixupCopy(result,help);
   66988             : #endif
   66989             :        // Allow this to be called recursively, so accumulate the state.
   66990             :        // Also, clear the state in the SgCopyHelp object.
   66991             :        // help.clearState();
   66992             :         }
   66993             : 
   66994           0 :      return result;
   66995             :    }
   66996             : 
   66997             : 
   66998             : /* #line 66999 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   66999             : 
   67000             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67001             : 
   67002           0 : SgNode* SgFortranNonblockedDo::copy ( SgCopyHelp& help) const
   67003             :    {
   67004           0 :      SgFortranNonblockedDo* result = NULL;
   67005             : 
   67006             :   // printf ("Copy SgFortranNonblockedDo = %p = %s \n",this,SageInterface::get_name(this).c_str());
   67007             : 
   67008             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   67009             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   67010             :   // The default value of the depth is 0, so after this call the depth is 1!
   67011           0 :      help.incrementDepth();
   67012             : 
   67013             : #if 0
   67014             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   67015             :   // but it is not generally true that things can only be copied once!
   67016             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   67017             :   // AstAttribute* existingAttribute = const_cast<SgFortranNonblockedDo*>(this)->attribute["copied"];
   67018             :      bool previouslyCopied = const_cast<SgFortranNonblockedDo*>(this)->attribute.exists("copied");
   67019             :      if (previouslyCopied == true)
   67020             :         {
   67021             :           this->get_file_info()->display("Called from copy SgFortranNonblockedDo: debug");
   67022             :         }
   67023             :      ROSE_ASSERT(previouslyCopied == false);
   67024             : 
   67025             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   67026             :      AstAttribute* newAttribute = new AstAttribute();
   67027             :      ROSE_ASSERT(newAttribute != NULL);
   67028             : 
   67029             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   67030             :      const_cast<SgFortranNonblockedDo*>(this)->attribute.add("copied",newAttribute);
   67031             : #endif
   67032             : 
   67033             :   // Copy data members from base classes
   67034             :   // Copy constructor parameter data member: startOfConstruct_copy
   67035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   67036             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   67037           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   67038           0 :      if ( p_startOfConstruct != NULL ) 
   67039             :         { 
   67040           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   67041             :         } 
   67042             :        else 
   67043             :         { 
   67044             :           startOfConstruct_copy = NULL; 
   67045             :         } 
   67046             :   // Copy constructor parameter data member: initialization_copy
   67047           0 :      SgExpression* initialization_copy; 
   67048             :   // case: not a listType for (using conditionalToCopyVariable)initialization
   67049           0 :           if (get_initialization() != NULL) 
   67050             :              { 
   67051           0 :                initialization_copy = static_cast<SgExpression*>(help.copyAst(get_initialization())); 
   67052             :              } 
   67053             :             else 
   67054             :              { 
   67055             :                initialization_copy = NULL; 
   67056             :              } 
   67057             :   // Copy constructor parameter data member: bound_copy
   67058           0 :      SgExpression* bound_copy; 
   67059             :   // case: not a listType for (using conditionalToCopyVariable)bound
   67060           0 :           if (get_bound() != NULL) 
   67061             :              { 
   67062           0 :                bound_copy = static_cast<SgExpression*>(help.copyAst(get_bound())); 
   67063             :              } 
   67064             :             else 
   67065             :              { 
   67066             :                bound_copy = NULL; 
   67067             :              } 
   67068             :   // Copy constructor parameter data member: increment_copy
   67069           0 :      SgExpression* increment_copy; 
   67070             :   // case: not a listType for (using conditionalToCopyVariable)increment
   67071           0 :           if (get_increment() != NULL) 
   67072             :              { 
   67073           0 :                increment_copy = static_cast<SgExpression*>(help.copyAst(get_increment())); 
   67074             :              } 
   67075             :             else 
   67076             :              { 
   67077             :                increment_copy = NULL; 
   67078             :              } 
   67079             :   // Copy constructor parameter data member: body_copy
   67080           0 :      SgBasicBlock* body_copy; 
   67081             :   // case: not a listType for (using conditionalToCopyVariable)body
   67082           0 :           if (get_body() != NULL) 
   67083             :              { 
   67084           0 :                body_copy = static_cast<SgBasicBlock*>(help.copyAst(get_body())); 
   67085             :              } 
   67086             :             else 
   67087             :              { 
   67088             :                body_copy = NULL; 
   67089             :              } 
   67090             :   // Copy constructor parameter data member: end_statement_copy
   67091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_statement
   67092             :   // case: toBeCopied == COPY_DATA for end_statement
   67093           0 :      SgStatement* end_statement_copy = p_end_statement; 
   67094             :  
   67095             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67096             : 
   67097             :   // Build an empty copy of this object (will be filled in, but 
   67098             :   // the parent can't be set and must be set by the caller)
   67099           0 :      result = new SgFortranNonblockedDo(  startOfConstruct_copy, initialization_copy, bound_copy, increment_copy, body_copy, end_statement_copy );
   67100           0 :      ROSE_ASSERT(result != NULL);
   67101             : 
   67102             :   // Copy data members of "this" class
   67103             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   67104             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   67105             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   67106           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   67107           0 :      if ( p_endOfConstruct != NULL ) 
   67108             :         { 
   67109           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   67110             :         } 
   67111             :        else 
   67112             :         { 
   67113             :           endOfConstruct_copy = NULL; 
   67114             :         } 
   67115             :   /* check for a valid pointer and delete if present */ 
   67116           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   67117             :   /* add assignment to result here */ 
   67118           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   67119             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   67120             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   67121             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   67122           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   67123           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   67124             :         { 
   67125           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   67126             :         } 
   67127             :        else 
   67128             :         { 
   67129             :           attachedPreprocessingInfoPtr_copy = NULL; 
   67130             :         } 
   67131             :   /* check for a valid pointer and delete if present */ 
   67132           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   67133             :   /* add assignment to result here */ 
   67134           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   67135             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   67136             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   67137             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   67138           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   67139           0 :      if ( p_attributeMechanism != NULL ) 
   67140             :         { 
   67141           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   67142             :         } 
   67143             :        else 
   67144             :         { 
   67145             :           attributeMechanism_copy = NULL; 
   67146             :         } 
   67147             :   /* check for a valid pointer and delete if present */ 
   67148           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   67149             :   /* add assignment to result here */ 
   67150           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   67151             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   67152             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   67153             :   // case: toBeCopied == COPY_DATA for numeric_label
   67154           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   67155           0 :      result->p_numeric_label = numeric_label_copy; 
   67156             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   67157             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   67158             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   67159           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   67160           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   67161             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   67162             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   67163             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   67164           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   67165           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   67166             :   // Copy non-constructor parameter data member (access function): string_label_copy
   67167             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_label
   67168             :   // case: toBeCopied == COPY_DATA for string_label
   67169           0 :      std::string string_label_copy = p_string_label; 
   67170           0 :      result->p_string_label = string_label_copy; 
   67171             :   // Copy non-constructor parameter data member (access function): old_style_copy
   67172             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for old_style
   67173             :   // case: toBeCopied == COPY_DATA for old_style
   67174           0 :      bool old_style_copy = p_old_style; 
   67175           0 :      result->p_old_style = old_style_copy; 
   67176             :   // Copy non-constructor parameter data member (access function): has_end_statement_copy
   67177             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_end_statement
   67178             :   // case: toBeCopied == COPY_DATA for has_end_statement
   67179           0 :      bool has_end_statement_copy = p_has_end_statement; 
   67180           0 :      result->p_has_end_statement = has_end_statement_copy; 
   67181             :   // case: not a listType for (using conditionalToSetParent)initialization
   67182           0 :           if ( (initialization_copy != NULL) && (initialization_copy->get_parent() == NULL) && (isSgType(initialization_copy) == NULL) ) 
   67183             :              { 
   67184           0 :                initialization_copy->set_parent(result); 
   67185             :              } 
   67186             :   // case: not a listType for (using conditionalToSetParent)bound
   67187           0 :           if ( (bound_copy != NULL) && (bound_copy->get_parent() == NULL) && (isSgType(bound_copy) == NULL) ) 
   67188             :              { 
   67189           0 :                bound_copy->set_parent(result); 
   67190             :              } 
   67191             :   // case: not a listType for (using conditionalToSetParent)increment
   67192           0 :           if ( (increment_copy != NULL) && (increment_copy->get_parent() == NULL) && (isSgType(increment_copy) == NULL) ) 
   67193             :              { 
   67194           0 :                increment_copy->set_parent(result); 
   67195             :              } 
   67196             :   // case: not a listType for (using conditionalToSetParent)body
   67197           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   67198             :              { 
   67199           0 :                body_copy->set_parent(result); 
   67200             :              } 
   67201             : 
   67202             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67203             : 
   67204             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   67205             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   67206             :   // fixupCopy(result,help);
   67207             : 
   67208             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   67209             :   // the Sg_File_Info objects that are built for the new IR nodes.
   67210           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   67211           0 :      if (locatedNode != NULL)
   67212             :         {
   67213             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   67214           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   67215           0 :           ROSE_ASSERT(start != NULL);
   67216             : #if 0
   67217             :        // Debugging information
   67218             :           if (start->get_parent() == NULL)
   67219             :              {
   67220             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67221             :              }
   67222             : #endif
   67223           0 :           start->set_parent(locatedNode);
   67224           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   67225             : 
   67226           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   67227             : 
   67228             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   67229             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   67230             :        // ROSE_ASSERT(end != NULL);
   67231           0 :           if (end == NULL)
   67232             :              {
   67233           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   67234             :              }
   67235             :             else
   67236             :              {
   67237             : #if 0
   67238             :             // Debugging information
   67239             :                if (end->get_parent() == NULL)
   67240             :                   {
   67241             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67242             :                   }
   67243             : #endif
   67244           0 :                end->set_parent(locatedNode);
   67245           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   67246             :              }
   67247             : 
   67248           0 :           SgExpression* expression = isSgExpression(result);
   67249           0 :           if (isSgExpression(this) != NULL)
   67250             :              {
   67251           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   67252             : 
   67253             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   67254           0 :                if (operatorPosition != NULL)
   67255             :                   {
   67256             : #if 0
   67257             :                  // Debugging information
   67258             :                     if (operatorPosition->get_parent() == NULL)
   67259             :                        {
   67260             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67261             :                        }
   67262             : #endif
   67263           0 :                     operatorPosition->set_parent(expression);
   67264           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   67265             :                   }
   67266             :              }
   67267             :         }
   67268             : 
   67269             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   67270           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   67271           0 :      if (initializedName != NULL)
   67272             :         {
   67273             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   67274           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   67275           0 :           ROSE_ASSERT(start != NULL);
   67276             : #if 0
   67277             :        // Debugging information
   67278             :           if (start->get_parent() == NULL)
   67279             :              {
   67280             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67281             :              }
   67282             : #endif
   67283           0 :           start->set_parent(initializedName);
   67284           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   67285             : 
   67286             : #if 0
   67287             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   67288             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   67289             : 
   67290             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   67291             :        // ROSE_ASSERT(end != NULL);
   67292             :           if (end == NULL)
   67293             :              {
   67294             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   67295             :              }
   67296             :             else
   67297             :              {
   67298             :                if (end->get_parent() == NULL)
   67299             :                   {
   67300             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67301             :                   }
   67302             :                end->set_parent(initializedName);
   67303             :                ROSE_ASSERT(end->get_parent() != NULL);
   67304             :              }
   67305             : #endif
   67306             :         }
   67307             : 
   67308             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   67309           0 :      help.insertCopiedNodePair(this,result);
   67310             : 
   67311             :   // printf ("End of copy SgFortranNonblockedDo = %p = %s \n",this,SageInterface::get_name(this).c_str());
   67312             : 
   67313             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   67314             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   67315           0 :      help.decrementDepth();
   67316             : 
   67317             :   // Test if this is the root of the copy!
   67318           0 :      if (help.get_depth() == 0)
   67319             :         {
   67320             :        // This is the original calling node.
   67321             : 
   67322             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   67323             :        // printf ("Calling SgFortranNonblockedDo::fixupCopy() (from root of AST being copied) \n");
   67324             : #if ALT_FIXUP_COPY
   67325             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   67326           0 :           fixupCopy_scopes (result,help);
   67327           0 :           fixupCopy_symbols (result,help);
   67328           0 :           fixupCopy_references (result,help);
   67329             : #else
   67330             :           fixupCopy(result,help);
   67331             : #endif
   67332             :        // Allow this to be called recursively, so accumulate the state.
   67333             :        // Also, clear the state in the SgCopyHelp object.
   67334             :        // help.clearState();
   67335             :         }
   67336             : 
   67337           0 :      return result;
   67338             :    }
   67339             : 
   67340             : 
   67341             : /* #line 67342 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   67342             : 
   67343             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67344             : 
   67345           0 : SgNode* SgForAllStatement::copy ( SgCopyHelp& help) const
   67346             :    {
   67347           0 :      SgForAllStatement* result = NULL;
   67348             : 
   67349             :   // printf ("Copy SgForAllStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   67350             : 
   67351             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   67352             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   67353             :   // The default value of the depth is 0, so after this call the depth is 1!
   67354           0 :      help.incrementDepth();
   67355             : 
   67356             : #if 0
   67357             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   67358             :   // but it is not generally true that things can only be copied once!
   67359             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   67360             :   // AstAttribute* existingAttribute = const_cast<SgForAllStatement*>(this)->attribute["copied"];
   67361             :      bool previouslyCopied = const_cast<SgForAllStatement*>(this)->attribute.exists("copied");
   67362             :      if (previouslyCopied == true)
   67363             :         {
   67364             :           this->get_file_info()->display("Called from copy SgForAllStatement: debug");
   67365             :         }
   67366             :      ROSE_ASSERT(previouslyCopied == false);
   67367             : 
   67368             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   67369             :      AstAttribute* newAttribute = new AstAttribute();
   67370             :      ROSE_ASSERT(newAttribute != NULL);
   67371             : 
   67372             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   67373             :      const_cast<SgForAllStatement*>(this)->attribute.add("copied",newAttribute);
   67374             : #endif
   67375             : 
   67376             :   // Copy data members from base classes
   67377             :   // Copy constructor parameter data member: startOfConstruct_copy
   67378             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   67379             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   67380           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   67381           0 :      if ( p_startOfConstruct != NULL ) 
   67382             :         { 
   67383           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   67384             :         } 
   67385             :        else 
   67386             :         { 
   67387             :           startOfConstruct_copy = NULL; 
   67388             :         } 
   67389             :   // Copy constructor parameter data member: forall_header_copy
   67390           0 :      SgExprListExp* forall_header_copy; 
   67391             :   // case: not a listType for (using conditionalToCopyVariable)forall_header
   67392           0 :           if (get_forall_header() != NULL) 
   67393             :              { 
   67394           0 :                forall_header_copy = static_cast<SgExprListExp*>(help.copyAst(get_forall_header())); 
   67395             :              } 
   67396             :             else 
   67397             :              { 
   67398             :                forall_header_copy = NULL; 
   67399             :              } 
   67400             :   // Copy constructor parameter data member: body_copy
   67401           0 :      SgBasicBlock* body_copy; 
   67402             :   // case: not a listType for (using conditionalToCopyVariable)body
   67403           0 :           if (get_body() != NULL) 
   67404             :              { 
   67405           0 :                body_copy = static_cast<SgBasicBlock*>(help.copyAst(get_body())); 
   67406             :              } 
   67407             :             else 
   67408             :              { 
   67409             :                body_copy = NULL; 
   67410             :              } 
   67411             :  
   67412             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67413             : 
   67414             :   // Build an empty copy of this object (will be filled in, but 
   67415             :   // the parent can't be set and must be set by the caller)
   67416           0 :      result = new SgForAllStatement(  startOfConstruct_copy, forall_header_copy, body_copy );
   67417           0 :      ROSE_ASSERT(result != NULL);
   67418             : 
   67419             :   // Copy data members of "this" class
   67420             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   67421             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   67422             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   67423           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   67424           0 :      if ( p_endOfConstruct != NULL ) 
   67425             :         { 
   67426           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   67427             :         } 
   67428             :        else 
   67429             :         { 
   67430             :           endOfConstruct_copy = NULL; 
   67431             :         } 
   67432             :   /* check for a valid pointer and delete if present */ 
   67433           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   67434             :   /* add assignment to result here */ 
   67435           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   67436             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   67437             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   67438             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   67439           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   67440           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   67441             :         { 
   67442           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   67443             :         } 
   67444             :        else 
   67445             :         { 
   67446             :           attachedPreprocessingInfoPtr_copy = NULL; 
   67447             :         } 
   67448             :   /* check for a valid pointer and delete if present */ 
   67449           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   67450             :   /* add assignment to result here */ 
   67451           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   67452             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   67453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   67454             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   67455           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   67456           0 :      if ( p_attributeMechanism != NULL ) 
   67457             :         { 
   67458           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   67459             :         } 
   67460             :        else 
   67461             :         { 
   67462             :           attributeMechanism_copy = NULL; 
   67463             :         } 
   67464             :   /* check for a valid pointer and delete if present */ 
   67465           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   67466             :   /* add assignment to result here */ 
   67467           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   67468             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   67469             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   67470             :   // case: toBeCopied == COPY_DATA for numeric_label
   67471           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   67472           0 :      result->p_numeric_label = numeric_label_copy; 
   67473             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   67474             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   67475             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   67476           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   67477           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   67478             :   // Copy non-constructor parameter data member (access function): has_end_statement_copy
   67479             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_end_statement
   67480             :   // case: toBeCopied == COPY_DATA for has_end_statement
   67481           0 :      bool has_end_statement_copy = p_has_end_statement; 
   67482           0 :      result->p_has_end_statement = has_end_statement_copy; 
   67483             :   // Copy non-constructor parameter data member (access function): string_label_copy
   67484             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_label
   67485             :   // case: toBeCopied == COPY_DATA for string_label
   67486           0 :      std::string string_label_copy = p_string_label; 
   67487           0 :      result->p_string_label = string_label_copy; 
   67488             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   67489             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   67490             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   67491           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   67492           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   67493             :   // Copy non-constructor parameter data member (access function): forall_statement_kind_copy
   67494             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forall_statement_kind
   67495             :   // case: toBeCopied == COPY_DATA for forall_statement_kind
   67496           0 :      SgForAllStatement::forall_statement_kind_enum forall_statement_kind_copy = p_forall_statement_kind; 
   67497           0 :      result->p_forall_statement_kind = forall_statement_kind_copy; 
   67498             :   // case: not a listType for (using conditionalToSetParent)forall_header
   67499           0 :           if ( (forall_header_copy != NULL) && (forall_header_copy->get_parent() == NULL) && (isSgType(forall_header_copy) == NULL) ) 
   67500             :              { 
   67501           0 :                forall_header_copy->set_parent(result); 
   67502             :              } 
   67503             :   // case: not a listType for (using conditionalToSetParent)body
   67504           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   67505             :              { 
   67506           0 :                body_copy->set_parent(result); 
   67507             :              } 
   67508             : 
   67509             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67510             : 
   67511             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   67512             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   67513             :   // fixupCopy(result,help);
   67514             : 
   67515             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   67516             :   // the Sg_File_Info objects that are built for the new IR nodes.
   67517           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   67518           0 :      if (locatedNode != NULL)
   67519             :         {
   67520             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   67521           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   67522           0 :           ROSE_ASSERT(start != NULL);
   67523             : #if 0
   67524             :        // Debugging information
   67525             :           if (start->get_parent() == NULL)
   67526             :              {
   67527             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67528             :              }
   67529             : #endif
   67530           0 :           start->set_parent(locatedNode);
   67531           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   67532             : 
   67533           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   67534             : 
   67535             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   67536             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   67537             :        // ROSE_ASSERT(end != NULL);
   67538           0 :           if (end == NULL)
   67539             :              {
   67540           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   67541             :              }
   67542             :             else
   67543             :              {
   67544             : #if 0
   67545             :             // Debugging information
   67546             :                if (end->get_parent() == NULL)
   67547             :                   {
   67548             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67549             :                   }
   67550             : #endif
   67551           0 :                end->set_parent(locatedNode);
   67552           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   67553             :              }
   67554             : 
   67555           0 :           SgExpression* expression = isSgExpression(result);
   67556           0 :           if (isSgExpression(this) != NULL)
   67557             :              {
   67558           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   67559             : 
   67560             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   67561           0 :                if (operatorPosition != NULL)
   67562             :                   {
   67563             : #if 0
   67564             :                  // Debugging information
   67565             :                     if (operatorPosition->get_parent() == NULL)
   67566             :                        {
   67567             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67568             :                        }
   67569             : #endif
   67570           0 :                     operatorPosition->set_parent(expression);
   67571           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   67572             :                   }
   67573             :              }
   67574             :         }
   67575             : 
   67576             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   67577           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   67578           0 :      if (initializedName != NULL)
   67579             :         {
   67580             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   67581           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   67582           0 :           ROSE_ASSERT(start != NULL);
   67583             : #if 0
   67584             :        // Debugging information
   67585             :           if (start->get_parent() == NULL)
   67586             :              {
   67587             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67588             :              }
   67589             : #endif
   67590           0 :           start->set_parent(initializedName);
   67591           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   67592             : 
   67593             : #if 0
   67594             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   67595             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   67596             : 
   67597             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   67598             :        // ROSE_ASSERT(end != NULL);
   67599             :           if (end == NULL)
   67600             :              {
   67601             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   67602             :              }
   67603             :             else
   67604             :              {
   67605             :                if (end->get_parent() == NULL)
   67606             :                   {
   67607             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67608             :                   }
   67609             :                end->set_parent(initializedName);
   67610             :                ROSE_ASSERT(end->get_parent() != NULL);
   67611             :              }
   67612             : #endif
   67613             :         }
   67614             : 
   67615             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   67616           0 :      help.insertCopiedNodePair(this,result);
   67617             : 
   67618             :   // printf ("End of copy SgForAllStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   67619             : 
   67620             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   67621             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   67622           0 :      help.decrementDepth();
   67623             : 
   67624             :   // Test if this is the root of the copy!
   67625           0 :      if (help.get_depth() == 0)
   67626             :         {
   67627             :        // This is the original calling node.
   67628             : 
   67629             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   67630             :        // printf ("Calling SgForAllStatement::fixupCopy() (from root of AST being copied) \n");
   67631             : #if ALT_FIXUP_COPY
   67632             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   67633           0 :           fixupCopy_scopes (result,help);
   67634           0 :           fixupCopy_symbols (result,help);
   67635           0 :           fixupCopy_references (result,help);
   67636             : #else
   67637             :           fixupCopy(result,help);
   67638             : #endif
   67639             :        // Allow this to be called recursively, so accumulate the state.
   67640             :        // Also, clear the state in the SgCopyHelp object.
   67641             :        // help.clearState();
   67642             :         }
   67643             : 
   67644           0 :      return result;
   67645             :    }
   67646             : 
   67647             : 
   67648             : /* #line 67649 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   67649             : 
   67650             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67651             : 
   67652           0 : SgNode* SgUpcForAllStatement::copy ( SgCopyHelp& help) const
   67653             :    {
   67654           0 :      SgUpcForAllStatement* result = NULL;
   67655             : 
   67656             :   // printf ("Copy SgUpcForAllStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   67657             : 
   67658             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   67659             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   67660             :   // The default value of the depth is 0, so after this call the depth is 1!
   67661           0 :      help.incrementDepth();
   67662             : 
   67663             : #if 0
   67664             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   67665             :   // but it is not generally true that things can only be copied once!
   67666             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   67667             :   // AstAttribute* existingAttribute = const_cast<SgUpcForAllStatement*>(this)->attribute["copied"];
   67668             :      bool previouslyCopied = const_cast<SgUpcForAllStatement*>(this)->attribute.exists("copied");
   67669             :      if (previouslyCopied == true)
   67670             :         {
   67671             :           this->get_file_info()->display("Called from copy SgUpcForAllStatement: debug");
   67672             :         }
   67673             :      ROSE_ASSERT(previouslyCopied == false);
   67674             : 
   67675             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   67676             :      AstAttribute* newAttribute = new AstAttribute();
   67677             :      ROSE_ASSERT(newAttribute != NULL);
   67678             : 
   67679             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   67680             :      const_cast<SgUpcForAllStatement*>(this)->attribute.add("copied",newAttribute);
   67681             : #endif
   67682             : 
   67683             :   // Copy data members from base classes
   67684             :   // Copy constructor parameter data member: startOfConstruct_copy
   67685             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   67686             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   67687           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   67688           0 :      if ( p_startOfConstruct != NULL ) 
   67689             :         { 
   67690           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   67691             :         } 
   67692             :        else 
   67693             :         { 
   67694             :           startOfConstruct_copy = NULL; 
   67695             :         } 
   67696             :   // Copy constructor parameter data member: test_copy
   67697           0 :      SgStatement* test_copy; 
   67698             :   // case: not a listType for (using conditionalToCopyVariable)test
   67699           0 :           if (get_test() != NULL) 
   67700             :              { 
   67701           0 :                test_copy = static_cast<SgStatement*>(help.copyAst(get_test())); 
   67702             :              } 
   67703             :             else 
   67704             :              { 
   67705             :                test_copy = NULL; 
   67706             :              } 
   67707             :   // Copy constructor parameter data member: increment_copy
   67708           0 :      SgExpression* increment_copy; 
   67709             :   // case: not a listType for (using conditionalToCopyVariable)increment
   67710           0 :           if (get_increment() != NULL) 
   67711             :              { 
   67712           0 :                increment_copy = static_cast<SgExpression*>(help.copyAst(get_increment())); 
   67713             :              } 
   67714             :             else 
   67715             :              { 
   67716             :                increment_copy = NULL; 
   67717             :              } 
   67718             :   // Copy constructor parameter data member: affinity_copy
   67719           0 :      SgExpression* affinity_copy; 
   67720             :   // case: not a listType for (using conditionalToCopyVariable)affinity
   67721           0 :           if (get_affinity() != NULL) 
   67722             :              { 
   67723           0 :                affinity_copy = static_cast<SgExpression*>(help.copyAst(get_affinity())); 
   67724             :              } 
   67725             :             else 
   67726             :              { 
   67727             :                affinity_copy = NULL; 
   67728             :              } 
   67729             :   // Copy constructor parameter data member: loop_body_copy
   67730           0 :      SgStatement* loop_body_copy; 
   67731             :   // case: not a listType for (using conditionalToCopyVariable)loop_body
   67732           0 :           if (get_loop_body() != NULL) 
   67733             :              { 
   67734           0 :                loop_body_copy = static_cast<SgStatement*>(help.copyAst(get_loop_body())); 
   67735             :              } 
   67736             :             else 
   67737             :              { 
   67738             :                loop_body_copy = NULL; 
   67739             :              } 
   67740             :  
   67741             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67742             : 
   67743             :   // Build an empty copy of this object (will be filled in, but 
   67744             :   // the parent can't be set and must be set by the caller)
   67745           0 :      result = new SgUpcForAllStatement(  startOfConstruct_copy, test_copy, increment_copy, affinity_copy, loop_body_copy );
   67746           0 :      ROSE_ASSERT(result != NULL);
   67747             : 
   67748             :   // Copy data members of "this" class
   67749             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   67750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   67751             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   67752           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   67753           0 :      if ( p_endOfConstruct != NULL ) 
   67754             :         { 
   67755           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   67756             :         } 
   67757             :        else 
   67758             :         { 
   67759             :           endOfConstruct_copy = NULL; 
   67760             :         } 
   67761             :   /* check for a valid pointer and delete if present */ 
   67762           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   67763             :   /* add assignment to result here */ 
   67764           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   67765             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   67766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   67767             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   67768           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   67769           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   67770             :         { 
   67771           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   67772             :         } 
   67773             :        else 
   67774             :         { 
   67775             :           attachedPreprocessingInfoPtr_copy = NULL; 
   67776             :         } 
   67777             :   /* check for a valid pointer and delete if present */ 
   67778           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   67779             :   /* add assignment to result here */ 
   67780           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   67781             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   67782             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   67783             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   67784           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   67785           0 :      if ( p_attributeMechanism != NULL ) 
   67786             :         { 
   67787           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   67788             :         } 
   67789             :        else 
   67790             :         { 
   67791             :           attributeMechanism_copy = NULL; 
   67792             :         } 
   67793             :   /* check for a valid pointer and delete if present */ 
   67794           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   67795             :   /* add assignment to result here */ 
   67796           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   67797             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   67798             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   67799             :   // case: toBeCopied == COPY_DATA for numeric_label
   67800           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   67801           0 :      result->p_numeric_label = numeric_label_copy; 
   67802             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   67803             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   67804             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   67805           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   67806           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   67807             :   // Copy non-constructor parameter data member (access function): for_init_stmt_copy
   67808           0 :      SgForInitStatement* for_init_stmt_copy; 
   67809             :   // case: not a listType for (using conditionalToCopyVariable)for_init_stmt
   67810           0 :           if (get_for_init_stmt() != NULL) 
   67811             :              { 
   67812           0 :                for_init_stmt_copy = static_cast<SgForInitStatement*>(help.copyAst(get_for_init_stmt())); 
   67813             :              } 
   67814             :             else 
   67815             :              { 
   67816             :                for_init_stmt_copy = NULL; 
   67817             :              } 
   67818             :   /* check for a valid pointer and delete if present */ 
   67819           0 :      if (result->p_for_init_stmt != NULL) delete result->p_for_init_stmt; 
   67820           0 :      result->p_for_init_stmt = for_init_stmt_copy; 
   67821             :   // case: not a listType for (using conditionalToSetParent)for_init_stmt
   67822           0 :           if ( (for_init_stmt_copy != NULL) && (for_init_stmt_copy->get_parent() == NULL) && (isSgType(for_init_stmt_copy) == NULL) ) 
   67823             :              { 
   67824           0 :                for_init_stmt_copy->set_parent(result); 
   67825             :              } 
   67826             :   // case: not a listType for (using conditionalToSetParent)test
   67827           0 :           if ( (test_copy != NULL) && (test_copy->get_parent() == NULL) && (isSgType(test_copy) == NULL) ) 
   67828             :              { 
   67829           0 :                test_copy->set_parent(result); 
   67830             :              } 
   67831             :   // case: not a listType for (using conditionalToSetParent)increment
   67832           0 :           if ( (increment_copy != NULL) && (increment_copy->get_parent() == NULL) && (isSgType(increment_copy) == NULL) ) 
   67833             :              { 
   67834           0 :                increment_copy->set_parent(result); 
   67835             :              } 
   67836             :   // case: not a listType for (using conditionalToSetParent)affinity
   67837           0 :           if ( (affinity_copy != NULL) && (affinity_copy->get_parent() == NULL) && (isSgType(affinity_copy) == NULL) ) 
   67838             :              { 
   67839           0 :                affinity_copy->set_parent(result); 
   67840             :              } 
   67841             :   // case: not a listType for (using conditionalToSetParent)loop_body
   67842           0 :           if ( (loop_body_copy != NULL) && (loop_body_copy->get_parent() == NULL) && (isSgType(loop_body_copy) == NULL) ) 
   67843             :              { 
   67844           0 :                loop_body_copy->set_parent(result); 
   67845             :              } 
   67846             : 
   67847             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67848             : 
   67849             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   67850             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   67851             :   // fixupCopy(result,help);
   67852             : 
   67853             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   67854             :   // the Sg_File_Info objects that are built for the new IR nodes.
   67855           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   67856           0 :      if (locatedNode != NULL)
   67857             :         {
   67858             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   67859           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   67860           0 :           ROSE_ASSERT(start != NULL);
   67861             : #if 0
   67862             :        // Debugging information
   67863             :           if (start->get_parent() == NULL)
   67864             :              {
   67865             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67866             :              }
   67867             : #endif
   67868           0 :           start->set_parent(locatedNode);
   67869           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   67870             : 
   67871           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   67872             : 
   67873             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   67874             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   67875             :        // ROSE_ASSERT(end != NULL);
   67876           0 :           if (end == NULL)
   67877             :              {
   67878           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   67879             :              }
   67880             :             else
   67881             :              {
   67882             : #if 0
   67883             :             // Debugging information
   67884             :                if (end->get_parent() == NULL)
   67885             :                   {
   67886             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67887             :                   }
   67888             : #endif
   67889           0 :                end->set_parent(locatedNode);
   67890           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   67891             :              }
   67892             : 
   67893           0 :           SgExpression* expression = isSgExpression(result);
   67894           0 :           if (isSgExpression(this) != NULL)
   67895             :              {
   67896           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   67897             : 
   67898             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   67899           0 :                if (operatorPosition != NULL)
   67900             :                   {
   67901             : #if 0
   67902             :                  // Debugging information
   67903             :                     if (operatorPosition->get_parent() == NULL)
   67904             :                        {
   67905             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67906             :                        }
   67907             : #endif
   67908           0 :                     operatorPosition->set_parent(expression);
   67909           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   67910             :                   }
   67911             :              }
   67912             :         }
   67913             : 
   67914             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   67915           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   67916           0 :      if (initializedName != NULL)
   67917             :         {
   67918             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   67919           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   67920           0 :           ROSE_ASSERT(start != NULL);
   67921             : #if 0
   67922             :        // Debugging information
   67923             :           if (start->get_parent() == NULL)
   67924             :              {
   67925             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67926             :              }
   67927             : #endif
   67928           0 :           start->set_parent(initializedName);
   67929           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   67930             : 
   67931             : #if 0
   67932             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   67933             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   67934             : 
   67935             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   67936             :        // ROSE_ASSERT(end != NULL);
   67937             :           if (end == NULL)
   67938             :              {
   67939             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   67940             :              }
   67941             :             else
   67942             :              {
   67943             :                if (end->get_parent() == NULL)
   67944             :                   {
   67945             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   67946             :                   }
   67947             :                end->set_parent(initializedName);
   67948             :                ROSE_ASSERT(end->get_parent() != NULL);
   67949             :              }
   67950             : #endif
   67951             :         }
   67952             : 
   67953             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   67954           0 :      help.insertCopiedNodePair(this,result);
   67955             : 
   67956             :   // printf ("End of copy SgUpcForAllStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   67957             : 
   67958             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   67959             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   67960           0 :      help.decrementDepth();
   67961             : 
   67962             :   // Test if this is the root of the copy!
   67963           0 :      if (help.get_depth() == 0)
   67964             :         {
   67965             :        // This is the original calling node.
   67966             : 
   67967             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   67968             :        // printf ("Calling SgUpcForAllStatement::fixupCopy() (from root of AST being copied) \n");
   67969             : #if ALT_FIXUP_COPY
   67970             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   67971           0 :           fixupCopy_scopes (result,help);
   67972           0 :           fixupCopy_symbols (result,help);
   67973           0 :           fixupCopy_references (result,help);
   67974             : #else
   67975             :           fixupCopy(result,help);
   67976             : #endif
   67977             :        // Allow this to be called recursively, so accumulate the state.
   67978             :        // Also, clear the state in the SgCopyHelp object.
   67979             :        // help.clearState();
   67980             :         }
   67981             : 
   67982           0 :      return result;
   67983             :    }
   67984             : 
   67985             : 
   67986             : /* #line 67987 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   67987             : 
   67988             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   67989             : 
   67990           0 : SgNode* SgCAFWithTeamStatement::copy ( SgCopyHelp& help) const
   67991             :    {
   67992           0 :      SgCAFWithTeamStatement* result = NULL;
   67993             : 
   67994             :   // printf ("Copy SgCAFWithTeamStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   67995             : 
   67996             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   67997             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   67998             :   // The default value of the depth is 0, so after this call the depth is 1!
   67999           0 :      help.incrementDepth();
   68000             : 
   68001             : #if 0
   68002             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   68003             :   // but it is not generally true that things can only be copied once!
   68004             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   68005             :   // AstAttribute* existingAttribute = const_cast<SgCAFWithTeamStatement*>(this)->attribute["copied"];
   68006             :      bool previouslyCopied = const_cast<SgCAFWithTeamStatement*>(this)->attribute.exists("copied");
   68007             :      if (previouslyCopied == true)
   68008             :         {
   68009             :           this->get_file_info()->display("Called from copy SgCAFWithTeamStatement: debug");
   68010             :         }
   68011             :      ROSE_ASSERT(previouslyCopied == false);
   68012             : 
   68013             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   68014             :      AstAttribute* newAttribute = new AstAttribute();
   68015             :      ROSE_ASSERT(newAttribute != NULL);
   68016             : 
   68017             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   68018             :      const_cast<SgCAFWithTeamStatement*>(this)->attribute.add("copied",newAttribute);
   68019             : #endif
   68020             : 
   68021             :   // Copy data members from base classes
   68022             :   // Copy constructor parameter data member: startOfConstruct_copy
   68023             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   68024             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   68025           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   68026           0 :      if ( p_startOfConstruct != NULL ) 
   68027             :         { 
   68028           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   68029             :         } 
   68030             :        else 
   68031             :         { 
   68032             :           startOfConstruct_copy = NULL; 
   68033             :         } 
   68034             :   // Copy constructor parameter data member: teamId_copy
   68035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for teamId
   68036             :   // case: toBeCopied == COPY_DATA for teamId
   68037           0 :      SgVarRefExp* teamId_copy = p_teamId; 
   68038             :   // Copy constructor parameter data member: body_copy
   68039           0 :      SgBasicBlock* body_copy; 
   68040             :   // case: not a listType for (using conditionalToCopyVariable)body
   68041           0 :           if (get_body() != NULL) 
   68042             :              { 
   68043           0 :                body_copy = static_cast<SgBasicBlock*>(help.copyAst(get_body())); 
   68044             :              } 
   68045             :             else 
   68046             :              { 
   68047             :                body_copy = NULL; 
   68048             :              } 
   68049             :  
   68050             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68051             : 
   68052             :   // Build an empty copy of this object (will be filled in, but 
   68053             :   // the parent can't be set and must be set by the caller)
   68054           0 :      result = new SgCAFWithTeamStatement(  startOfConstruct_copy, teamId_copy, body_copy );
   68055           0 :      ROSE_ASSERT(result != NULL);
   68056             : 
   68057             :   // Copy data members of "this" class
   68058             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   68059             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   68060             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   68061           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   68062           0 :      if ( p_endOfConstruct != NULL ) 
   68063             :         { 
   68064           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   68065             :         } 
   68066             :        else 
   68067             :         { 
   68068             :           endOfConstruct_copy = NULL; 
   68069             :         } 
   68070             :   /* check for a valid pointer and delete if present */ 
   68071           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   68072             :   /* add assignment to result here */ 
   68073           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   68074             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   68075             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   68076             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   68077           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   68078           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   68079             :         { 
   68080           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   68081             :         } 
   68082             :        else 
   68083             :         { 
   68084             :           attachedPreprocessingInfoPtr_copy = NULL; 
   68085             :         } 
   68086             :   /* check for a valid pointer and delete if present */ 
   68087           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   68088             :   /* add assignment to result here */ 
   68089           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   68090             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   68091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   68092             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   68093           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   68094           0 :      if ( p_attributeMechanism != NULL ) 
   68095             :         { 
   68096           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   68097             :         } 
   68098             :        else 
   68099             :         { 
   68100             :           attributeMechanism_copy = NULL; 
   68101             :         } 
   68102             :   /* check for a valid pointer and delete if present */ 
   68103           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   68104             :   /* add assignment to result here */ 
   68105           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   68106             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   68107             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   68108             :   // case: toBeCopied == COPY_DATA for numeric_label
   68109           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   68110           0 :      result->p_numeric_label = numeric_label_copy; 
   68111             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   68112             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   68113             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   68114           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   68115           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   68116             :   // Copy non-constructor parameter data member (access function): endHasTeamId_copy
   68117             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endHasTeamId
   68118             :   // case: toBeCopied == COPY_DATA for endHasTeamId
   68119           0 :      bool endHasTeamId_copy = p_endHasTeamId; 
   68120           0 :      result->p_endHasTeamId = endHasTeamId_copy; 
   68121             :   // case: not a listType for (using conditionalToSetParent)body
   68122           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   68123             :              { 
   68124           0 :                body_copy->set_parent(result); 
   68125             :              } 
   68126             : 
   68127             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68128             : 
   68129             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   68130             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   68131             :   // fixupCopy(result,help);
   68132             : 
   68133             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   68134             :   // the Sg_File_Info objects that are built for the new IR nodes.
   68135           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   68136           0 :      if (locatedNode != NULL)
   68137             :         {
   68138             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   68139           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   68140           0 :           ROSE_ASSERT(start != NULL);
   68141             : #if 0
   68142             :        // Debugging information
   68143             :           if (start->get_parent() == NULL)
   68144             :              {
   68145             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68146             :              }
   68147             : #endif
   68148           0 :           start->set_parent(locatedNode);
   68149           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   68150             : 
   68151           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   68152             : 
   68153             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   68154             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   68155             :        // ROSE_ASSERT(end != NULL);
   68156           0 :           if (end == NULL)
   68157             :              {
   68158           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   68159             :              }
   68160             :             else
   68161             :              {
   68162             : #if 0
   68163             :             // Debugging information
   68164             :                if (end->get_parent() == NULL)
   68165             :                   {
   68166             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68167             :                   }
   68168             : #endif
   68169           0 :                end->set_parent(locatedNode);
   68170           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   68171             :              }
   68172             : 
   68173           0 :           SgExpression* expression = isSgExpression(result);
   68174           0 :           if (isSgExpression(this) != NULL)
   68175             :              {
   68176           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   68177             : 
   68178             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   68179           0 :                if (operatorPosition != NULL)
   68180             :                   {
   68181             : #if 0
   68182             :                  // Debugging information
   68183             :                     if (operatorPosition->get_parent() == NULL)
   68184             :                        {
   68185             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68186             :                        }
   68187             : #endif
   68188           0 :                     operatorPosition->set_parent(expression);
   68189           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   68190             :                   }
   68191             :              }
   68192             :         }
   68193             : 
   68194             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   68195           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   68196           0 :      if (initializedName != NULL)
   68197             :         {
   68198             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   68199           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   68200           0 :           ROSE_ASSERT(start != NULL);
   68201             : #if 0
   68202             :        // Debugging information
   68203             :           if (start->get_parent() == NULL)
   68204             :              {
   68205             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68206             :              }
   68207             : #endif
   68208           0 :           start->set_parent(initializedName);
   68209           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   68210             : 
   68211             : #if 0
   68212             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   68213             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   68214             : 
   68215             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   68216             :        // ROSE_ASSERT(end != NULL);
   68217             :           if (end == NULL)
   68218             :              {
   68219             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   68220             :              }
   68221             :             else
   68222             :              {
   68223             :                if (end->get_parent() == NULL)
   68224             :                   {
   68225             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68226             :                   }
   68227             :                end->set_parent(initializedName);
   68228             :                ROSE_ASSERT(end->get_parent() != NULL);
   68229             :              }
   68230             : #endif
   68231             :         }
   68232             : 
   68233             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   68234           0 :      help.insertCopiedNodePair(this,result);
   68235             : 
   68236             :   // printf ("End of copy SgCAFWithTeamStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   68237             : 
   68238             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   68239             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   68240           0 :      help.decrementDepth();
   68241             : 
   68242             :   // Test if this is the root of the copy!
   68243           0 :      if (help.get_depth() == 0)
   68244             :         {
   68245             :        // This is the original calling node.
   68246             : 
   68247             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   68248             :        // printf ("Calling SgCAFWithTeamStatement::fixupCopy() (from root of AST being copied) \n");
   68249             : #if ALT_FIXUP_COPY
   68250             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   68251           0 :           fixupCopy_scopes (result,help);
   68252           0 :           fixupCopy_symbols (result,help);
   68253           0 :           fixupCopy_references (result,help);
   68254             : #else
   68255             :           fixupCopy(result,help);
   68256             : #endif
   68257             :        // Allow this to be called recursively, so accumulate the state.
   68258             :        // Also, clear the state in the SgCopyHelp object.
   68259             :        // help.clearState();
   68260             :         }
   68261             : 
   68262           0 :      return result;
   68263             :    }
   68264             : 
   68265             : 
   68266             : /* #line 68267 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   68267             : 
   68268             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68269             : 
   68270           0 : SgNode* SgFunctionParameterScope::copy ( SgCopyHelp& help) const
   68271             :    {
   68272           0 :      SgFunctionParameterScope* result = NULL;
   68273             : 
   68274             :   // printf ("Copy SgFunctionParameterScope = %p = %s \n",this,SageInterface::get_name(this).c_str());
   68275             : 
   68276             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   68277             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   68278             :   // The default value of the depth is 0, so after this call the depth is 1!
   68279           0 :      help.incrementDepth();
   68280             : 
   68281             : #if 0
   68282             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   68283             :   // but it is not generally true that things can only be copied once!
   68284             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   68285             :   // AstAttribute* existingAttribute = const_cast<SgFunctionParameterScope*>(this)->attribute["copied"];
   68286             :      bool previouslyCopied = const_cast<SgFunctionParameterScope*>(this)->attribute.exists("copied");
   68287             :      if (previouslyCopied == true)
   68288             :         {
   68289             :           this->get_file_info()->display("Called from copy SgFunctionParameterScope: debug");
   68290             :         }
   68291             :      ROSE_ASSERT(previouslyCopied == false);
   68292             : 
   68293             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   68294             :      AstAttribute* newAttribute = new AstAttribute();
   68295             :      ROSE_ASSERT(newAttribute != NULL);
   68296             : 
   68297             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   68298             :      const_cast<SgFunctionParameterScope*>(this)->attribute.add("copied",newAttribute);
   68299             : #endif
   68300             : 
   68301             :   // Copy data members from base classes
   68302             :   // Copy constructor parameter data member: startOfConstruct_copy
   68303             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   68304             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   68305           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   68306           0 :      if ( p_startOfConstruct != NULL ) 
   68307             :         { 
   68308           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   68309             :         } 
   68310             :        else 
   68311             :         { 
   68312             :           startOfConstruct_copy = NULL; 
   68313             :         } 
   68314             :  
   68315             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68316             : 
   68317             :   // Build an empty copy of this object (will be filled in, but 
   68318             :   // the parent can't be set and must be set by the caller)
   68319           0 :      result = new SgFunctionParameterScope(  startOfConstruct_copy );
   68320           0 :      ROSE_ASSERT(result != NULL);
   68321             : 
   68322             :   // Copy data members of "this" class
   68323             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   68324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   68325             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   68326           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   68327           0 :      if ( p_endOfConstruct != NULL ) 
   68328             :         { 
   68329           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   68330             :         } 
   68331             :        else 
   68332             :         { 
   68333             :           endOfConstruct_copy = NULL; 
   68334             :         } 
   68335             :   /* check for a valid pointer and delete if present */ 
   68336           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   68337             :   /* add assignment to result here */ 
   68338           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   68339             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   68340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   68341             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   68342           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   68343           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   68344             :         { 
   68345           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   68346             :         } 
   68347             :        else 
   68348             :         { 
   68349             :           attachedPreprocessingInfoPtr_copy = NULL; 
   68350             :         } 
   68351             :   /* check for a valid pointer and delete if present */ 
   68352           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   68353             :   /* add assignment to result here */ 
   68354           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   68355             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   68356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   68357             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   68358           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   68359           0 :      if ( p_attributeMechanism != NULL ) 
   68360             :         { 
   68361           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   68362             :         } 
   68363             :        else 
   68364             :         { 
   68365             :           attributeMechanism_copy = NULL; 
   68366             :         } 
   68367             :   /* check for a valid pointer and delete if present */ 
   68368           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   68369             :   /* add assignment to result here */ 
   68370           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   68371             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   68372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   68373             :   // case: toBeCopied == COPY_DATA for numeric_label
   68374           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   68375           0 :      result->p_numeric_label = numeric_label_copy; 
   68376             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   68377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   68378             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   68379           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   68380           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   68381             :   // Copy non-constructor parameter data member (list access function): result->get_declarations()
   68382           0 :      SgDeclarationStatementPtrList declarations_copy; 
   68383             :   // case: listType for declarations
   68384             :   // case: listType (typeIsPointerToList == false) for declarations
   68385           0 :      SgDeclarationStatementPtrList::const_iterator source_declarations_iterator = get_declarations().begin(); 
   68386           0 :      for ( /* empty by design */; source_declarations_iterator != get_declarations().end(); ++source_declarations_iterator) 
   68387             :         { 
   68388           0 :           SgDeclarationStatement* source_list_element = *source_declarations_iterator; 
   68389           0 :           SgDeclarationStatement* copy_list_element = NULL; 
   68390           0 :           if (source_list_element != NULL) 
   68391             :              { 
   68392           0 :                copy_list_element = static_cast<SgDeclarationStatement*>(help.copyAst(*source_declarations_iterator)); 
   68393             :              } 
   68394             :             else 
   68395             :              { 
   68396             :                copy_list_element = NULL; 
   68397             :              } 
   68398           0 :           declarations_copy.push_back(copy_list_element); 
   68399             :         } 
   68400           0 :      result->p_declarations = declarations_copy; 
   68401             :   // case: listType for declarations
   68402             :   // case: listType (typeIsPointerToList == false) for declarations
   68403           0 :      SgDeclarationStatementPtrList::const_iterator declarations_iterator = result->get_declarations().begin(); 
   68404           0 :      for ( /* empty by design */; declarations_iterator != result->get_declarations().end(); ++declarations_iterator) 
   68405             :         { 
   68406           0 :           SgDeclarationStatement* list_element = *declarations_iterator; 
   68407           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   68408             :              { 
   68409           0 :                list_element->set_parent(result); 
   68410             :              } 
   68411             :         } 
   68412             : 
   68413             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68414             : 
   68415             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   68416             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   68417             :   // fixupCopy(result,help);
   68418             : 
   68419             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   68420             :   // the Sg_File_Info objects that are built for the new IR nodes.
   68421           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   68422           0 :      if (locatedNode != NULL)
   68423             :         {
   68424             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   68425           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   68426           0 :           ROSE_ASSERT(start != NULL);
   68427             : #if 0
   68428             :        // Debugging information
   68429             :           if (start->get_parent() == NULL)
   68430             :              {
   68431             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68432             :              }
   68433             : #endif
   68434           0 :           start->set_parent(locatedNode);
   68435           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   68436             : 
   68437           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   68438             : 
   68439             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   68440             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   68441             :        // ROSE_ASSERT(end != NULL);
   68442           0 :           if (end == NULL)
   68443             :              {
   68444           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   68445             :              }
   68446             :             else
   68447             :              {
   68448             : #if 0
   68449             :             // Debugging information
   68450             :                if (end->get_parent() == NULL)
   68451             :                   {
   68452             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68453             :                   }
   68454             : #endif
   68455           0 :                end->set_parent(locatedNode);
   68456           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   68457             :              }
   68458             : 
   68459           0 :           SgExpression* expression = isSgExpression(result);
   68460           0 :           if (isSgExpression(this) != NULL)
   68461             :              {
   68462           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   68463             : 
   68464             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   68465           0 :                if (operatorPosition != NULL)
   68466             :                   {
   68467             : #if 0
   68468             :                  // Debugging information
   68469             :                     if (operatorPosition->get_parent() == NULL)
   68470             :                        {
   68471             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68472             :                        }
   68473             : #endif
   68474           0 :                     operatorPosition->set_parent(expression);
   68475           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   68476             :                   }
   68477             :              }
   68478             :         }
   68479             : 
   68480             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   68481           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   68482           0 :      if (initializedName != NULL)
   68483             :         {
   68484             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   68485           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   68486           0 :           ROSE_ASSERT(start != NULL);
   68487             : #if 0
   68488             :        // Debugging information
   68489             :           if (start->get_parent() == NULL)
   68490             :              {
   68491             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68492             :              }
   68493             : #endif
   68494           0 :           start->set_parent(initializedName);
   68495           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   68496             : 
   68497             : #if 0
   68498             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   68499             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   68500             : 
   68501             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   68502             :        // ROSE_ASSERT(end != NULL);
   68503             :           if (end == NULL)
   68504             :              {
   68505             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   68506             :              }
   68507             :             else
   68508             :              {
   68509             :                if (end->get_parent() == NULL)
   68510             :                   {
   68511             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68512             :                   }
   68513             :                end->set_parent(initializedName);
   68514             :                ROSE_ASSERT(end->get_parent() != NULL);
   68515             :              }
   68516             : #endif
   68517             :         }
   68518             : 
   68519             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   68520           0 :      help.insertCopiedNodePair(this,result);
   68521             : 
   68522             :   // printf ("End of copy SgFunctionParameterScope = %p = %s \n",this,SageInterface::get_name(this).c_str());
   68523             : 
   68524             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   68525             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   68526           0 :      help.decrementDepth();
   68527             : 
   68528             :   // Test if this is the root of the copy!
   68529           0 :      if (help.get_depth() == 0)
   68530             :         {
   68531             :        // This is the original calling node.
   68532             : 
   68533             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   68534             :        // printf ("Calling SgFunctionParameterScope::fixupCopy() (from root of AST being copied) \n");
   68535             : #if ALT_FIXUP_COPY
   68536             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   68537           0 :           fixupCopy_scopes (result,help);
   68538           0 :           fixupCopy_symbols (result,help);
   68539           0 :           fixupCopy_references (result,help);
   68540             : #else
   68541             :           fixupCopy(result,help);
   68542             : #endif
   68543             :        // Allow this to be called recursively, so accumulate the state.
   68544             :        // Also, clear the state in the SgCopyHelp object.
   68545             :        // help.clearState();
   68546             :         }
   68547             : 
   68548           0 :      return result;
   68549             :    }
   68550             : 
   68551             : 
   68552             : /* #line 68553 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   68553             : 
   68554             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68555             : 
   68556           0 : SgNode* SgDeclarationScope::copy ( SgCopyHelp& help) const
   68557             :    {
   68558           0 :      SgDeclarationScope* result = NULL;
   68559             : 
   68560             :   // printf ("Copy SgDeclarationScope = %p = %s \n",this,SageInterface::get_name(this).c_str());
   68561             : 
   68562             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   68563             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   68564             :   // The default value of the depth is 0, so after this call the depth is 1!
   68565           0 :      help.incrementDepth();
   68566             : 
   68567             : #if 0
   68568             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   68569             :   // but it is not generally true that things can only be copied once!
   68570             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   68571             :   // AstAttribute* existingAttribute = const_cast<SgDeclarationScope*>(this)->attribute["copied"];
   68572             :      bool previouslyCopied = const_cast<SgDeclarationScope*>(this)->attribute.exists("copied");
   68573             :      if (previouslyCopied == true)
   68574             :         {
   68575             :           this->get_file_info()->display("Called from copy SgDeclarationScope: debug");
   68576             :         }
   68577             :      ROSE_ASSERT(previouslyCopied == false);
   68578             : 
   68579             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   68580             :      AstAttribute* newAttribute = new AstAttribute();
   68581             :      ROSE_ASSERT(newAttribute != NULL);
   68582             : 
   68583             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   68584             :      const_cast<SgDeclarationScope*>(this)->attribute.add("copied",newAttribute);
   68585             : #endif
   68586             : 
   68587             :   // Copy data members from base classes
   68588             :   // Copy constructor parameter data member: startOfConstruct_copy
   68589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   68590             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   68591           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   68592           0 :      if ( p_startOfConstruct != NULL ) 
   68593             :         { 
   68594           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   68595             :         } 
   68596             :        else 
   68597             :         { 
   68598             :           startOfConstruct_copy = NULL; 
   68599             :         } 
   68600             :  
   68601             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68602             : 
   68603             :   // Build an empty copy of this object (will be filled in, but 
   68604             :   // the parent can't be set and must be set by the caller)
   68605           0 :      result = new SgDeclarationScope(  startOfConstruct_copy );
   68606           0 :      ROSE_ASSERT(result != NULL);
   68607             : 
   68608             :   // Copy data members of "this" class
   68609             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   68610             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   68611             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   68612           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   68613           0 :      if ( p_endOfConstruct != NULL ) 
   68614             :         { 
   68615           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   68616             :         } 
   68617             :        else 
   68618             :         { 
   68619             :           endOfConstruct_copy = NULL; 
   68620             :         } 
   68621             :   /* check for a valid pointer and delete if present */ 
   68622           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   68623             :   /* add assignment to result here */ 
   68624           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   68625             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   68626             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   68627             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   68628           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   68629           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   68630             :         { 
   68631           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   68632             :         } 
   68633             :        else 
   68634             :         { 
   68635             :           attachedPreprocessingInfoPtr_copy = NULL; 
   68636             :         } 
   68637             :   /* check for a valid pointer and delete if present */ 
   68638           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   68639             :   /* add assignment to result here */ 
   68640           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   68641             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   68642             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   68643             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   68644           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   68645           0 :      if ( p_attributeMechanism != NULL ) 
   68646             :         { 
   68647           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   68648             :         } 
   68649             :        else 
   68650             :         { 
   68651             :           attributeMechanism_copy = NULL; 
   68652             :         } 
   68653             :   /* check for a valid pointer and delete if present */ 
   68654           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   68655             :   /* add assignment to result here */ 
   68656           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   68657             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   68658             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   68659             :   // case: toBeCopied == COPY_DATA for numeric_label
   68660           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   68661           0 :      result->p_numeric_label = numeric_label_copy; 
   68662             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   68663             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   68664             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   68665           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   68666           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   68667             : 
   68668             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68669             : 
   68670             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   68671             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   68672             :   // fixupCopy(result,help);
   68673             : 
   68674             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   68675             :   // the Sg_File_Info objects that are built for the new IR nodes.
   68676           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   68677           0 :      if (locatedNode != NULL)
   68678             :         {
   68679             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   68680           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   68681           0 :           ROSE_ASSERT(start != NULL);
   68682             : #if 0
   68683             :        // Debugging information
   68684             :           if (start->get_parent() == NULL)
   68685             :              {
   68686             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68687             :              }
   68688             : #endif
   68689           0 :           start->set_parent(locatedNode);
   68690           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   68691             : 
   68692           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   68693             : 
   68694             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   68695             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   68696             :        // ROSE_ASSERT(end != NULL);
   68697           0 :           if (end == NULL)
   68698             :              {
   68699           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   68700             :              }
   68701             :             else
   68702             :              {
   68703             : #if 0
   68704             :             // Debugging information
   68705             :                if (end->get_parent() == NULL)
   68706             :                   {
   68707             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68708             :                   }
   68709             : #endif
   68710           0 :                end->set_parent(locatedNode);
   68711           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   68712             :              }
   68713             : 
   68714           0 :           SgExpression* expression = isSgExpression(result);
   68715           0 :           if (isSgExpression(this) != NULL)
   68716             :              {
   68717           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   68718             : 
   68719             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   68720           0 :                if (operatorPosition != NULL)
   68721             :                   {
   68722             : #if 0
   68723             :                  // Debugging information
   68724             :                     if (operatorPosition->get_parent() == NULL)
   68725             :                        {
   68726             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68727             :                        }
   68728             : #endif
   68729           0 :                     operatorPosition->set_parent(expression);
   68730           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   68731             :                   }
   68732             :              }
   68733             :         }
   68734             : 
   68735             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   68736           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   68737           0 :      if (initializedName != NULL)
   68738             :         {
   68739             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   68740           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   68741           0 :           ROSE_ASSERT(start != NULL);
   68742             : #if 0
   68743             :        // Debugging information
   68744             :           if (start->get_parent() == NULL)
   68745             :              {
   68746             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68747             :              }
   68748             : #endif
   68749           0 :           start->set_parent(initializedName);
   68750           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   68751             : 
   68752             : #if 0
   68753             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   68754             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   68755             : 
   68756             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   68757             :        // ROSE_ASSERT(end != NULL);
   68758             :           if (end == NULL)
   68759             :              {
   68760             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   68761             :              }
   68762             :             else
   68763             :              {
   68764             :                if (end->get_parent() == NULL)
   68765             :                   {
   68766             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   68767             :                   }
   68768             :                end->set_parent(initializedName);
   68769             :                ROSE_ASSERT(end->get_parent() != NULL);
   68770             :              }
   68771             : #endif
   68772             :         }
   68773             : 
   68774             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   68775           0 :      help.insertCopiedNodePair(this,result);
   68776             : 
   68777             :   // printf ("End of copy SgDeclarationScope = %p = %s \n",this,SageInterface::get_name(this).c_str());
   68778             : 
   68779             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   68780             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   68781           0 :      help.decrementDepth();
   68782             : 
   68783             :   // Test if this is the root of the copy!
   68784           0 :      if (help.get_depth() == 0)
   68785             :         {
   68786             :        // This is the original calling node.
   68787             : 
   68788             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   68789             :        // printf ("Calling SgDeclarationScope::fixupCopy() (from root of AST being copied) \n");
   68790             : #if ALT_FIXUP_COPY
   68791             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   68792           0 :           fixupCopy_scopes (result,help);
   68793           0 :           fixupCopy_symbols (result,help);
   68794           0 :           fixupCopy_references (result,help);
   68795             : #else
   68796             :           fixupCopy(result,help);
   68797             : #endif
   68798             :        // Allow this to be called recursively, so accumulate the state.
   68799             :        // Also, clear the state in the SgCopyHelp object.
   68800             :        // help.clearState();
   68801             :         }
   68802             : 
   68803           0 :      return result;
   68804             :    }
   68805             : 
   68806             : 
   68807             : /* #line 68808 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   68808             : 
   68809             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68810             : 
   68811           0 : SgNode* SgRangeBasedForStatement::copy ( SgCopyHelp& help) const
   68812             :    {
   68813           0 :      SgRangeBasedForStatement* result = NULL;
   68814             : 
   68815             :   // printf ("Copy SgRangeBasedForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   68816             : 
   68817             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   68818             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   68819             :   // The default value of the depth is 0, so after this call the depth is 1!
   68820           0 :      help.incrementDepth();
   68821             : 
   68822             : #if 0
   68823             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   68824             :   // but it is not generally true that things can only be copied once!
   68825             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   68826             :   // AstAttribute* existingAttribute = const_cast<SgRangeBasedForStatement*>(this)->attribute["copied"];
   68827             :      bool previouslyCopied = const_cast<SgRangeBasedForStatement*>(this)->attribute.exists("copied");
   68828             :      if (previouslyCopied == true)
   68829             :         {
   68830             :           this->get_file_info()->display("Called from copy SgRangeBasedForStatement: debug");
   68831             :         }
   68832             :      ROSE_ASSERT(previouslyCopied == false);
   68833             : 
   68834             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   68835             :      AstAttribute* newAttribute = new AstAttribute();
   68836             :      ROSE_ASSERT(newAttribute != NULL);
   68837             : 
   68838             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   68839             :      const_cast<SgRangeBasedForStatement*>(this)->attribute.add("copied",newAttribute);
   68840             : #endif
   68841             : 
   68842             :   // Copy data members from base classes
   68843             :   // Copy constructor parameter data member: startOfConstruct_copy
   68844             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   68845             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   68846           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   68847           0 :      if ( p_startOfConstruct != NULL ) 
   68848             :         { 
   68849           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   68850             :         } 
   68851             :        else 
   68852             :         { 
   68853             :           startOfConstruct_copy = NULL; 
   68854             :         } 
   68855             :   // Copy constructor parameter data member: iterator_declaration_copy
   68856           0 :      SgVariableDeclaration* iterator_declaration_copy; 
   68857             :   // case: not a listType for (using conditionalToCopyVariable)iterator_declaration
   68858           0 :           if (get_iterator_declaration() != NULL) 
   68859             :              { 
   68860           0 :                iterator_declaration_copy = static_cast<SgVariableDeclaration*>(help.copyAst(get_iterator_declaration())); 
   68861             :              } 
   68862             :             else 
   68863             :              { 
   68864             :                iterator_declaration_copy = NULL; 
   68865             :              } 
   68866             :   // Copy constructor parameter data member: range_declaration_copy
   68867           0 :      SgVariableDeclaration* range_declaration_copy; 
   68868             :   // case: not a listType for (using conditionalToCopyVariable)range_declaration
   68869           0 :           if (get_range_declaration() != NULL) 
   68870             :              { 
   68871           0 :                range_declaration_copy = static_cast<SgVariableDeclaration*>(help.copyAst(get_range_declaration())); 
   68872             :              } 
   68873             :             else 
   68874             :              { 
   68875             :                range_declaration_copy = NULL; 
   68876             :              } 
   68877             :   // Copy constructor parameter data member: begin_declaration_copy
   68878           0 :      SgVariableDeclaration* begin_declaration_copy; 
   68879             :   // case: not a listType for (using conditionalToCopyVariable)begin_declaration
   68880           0 :           if (get_begin_declaration() != NULL) 
   68881             :              { 
   68882           0 :                begin_declaration_copy = static_cast<SgVariableDeclaration*>(help.copyAst(get_begin_declaration())); 
   68883             :              } 
   68884             :             else 
   68885             :              { 
   68886             :                begin_declaration_copy = NULL; 
   68887             :              } 
   68888             :   // Copy constructor parameter data member: end_declaration_copy
   68889           0 :      SgVariableDeclaration* end_declaration_copy; 
   68890             :   // case: not a listType for (using conditionalToCopyVariable)end_declaration
   68891           0 :           if (get_end_declaration() != NULL) 
   68892             :              { 
   68893           0 :                end_declaration_copy = static_cast<SgVariableDeclaration*>(help.copyAst(get_end_declaration())); 
   68894             :              } 
   68895             :             else 
   68896             :              { 
   68897             :                end_declaration_copy = NULL; 
   68898             :              } 
   68899             :   // Copy constructor parameter data member: not_equal_expression_copy
   68900           0 :      SgExpression* not_equal_expression_copy; 
   68901             :   // case: not a listType for (using conditionalToCopyVariable)not_equal_expression
   68902           0 :           if (get_not_equal_expression() != NULL) 
   68903             :              { 
   68904           0 :                not_equal_expression_copy = static_cast<SgExpression*>(help.copyAst(get_not_equal_expression())); 
   68905             :              } 
   68906             :             else 
   68907             :              { 
   68908             :                not_equal_expression_copy = NULL; 
   68909             :              } 
   68910             :   // Copy constructor parameter data member: increment_expression_copy
   68911           0 :      SgExpression* increment_expression_copy; 
   68912             :   // case: not a listType for (using conditionalToCopyVariable)increment_expression
   68913           0 :           if (get_increment_expression() != NULL) 
   68914             :              { 
   68915           0 :                increment_expression_copy = static_cast<SgExpression*>(help.copyAst(get_increment_expression())); 
   68916             :              } 
   68917             :             else 
   68918             :              { 
   68919             :                increment_expression_copy = NULL; 
   68920             :              } 
   68921             :   // Copy constructor parameter data member: loop_body_copy
   68922           0 :      SgStatement* loop_body_copy; 
   68923             :   // case: not a listType for (using conditionalToCopyVariable)loop_body
   68924           0 :           if (get_loop_body() != NULL) 
   68925             :              { 
   68926           0 :                loop_body_copy = static_cast<SgStatement*>(help.copyAst(get_loop_body())); 
   68927             :              } 
   68928             :             else 
   68929             :              { 
   68930             :                loop_body_copy = NULL; 
   68931             :              } 
   68932             :  
   68933             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   68934             : 
   68935             :   // Build an empty copy of this object (will be filled in, but 
   68936             :   // the parent can't be set and must be set by the caller)
   68937           0 :      result = new SgRangeBasedForStatement(  startOfConstruct_copy, iterator_declaration_copy, range_declaration_copy, begin_declaration_copy, end_declaration_copy, not_equal_expression_copy, increment_expression_copy, loop_body_copy );
   68938           0 :      ROSE_ASSERT(result != NULL);
   68939             : 
   68940             :   // Copy data members of "this" class
   68941             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   68942             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   68943             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   68944           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   68945           0 :      if ( p_endOfConstruct != NULL ) 
   68946             :         { 
   68947           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   68948             :         } 
   68949             :        else 
   68950             :         { 
   68951             :           endOfConstruct_copy = NULL; 
   68952             :         } 
   68953             :   /* check for a valid pointer and delete if present */ 
   68954           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   68955             :   /* add assignment to result here */ 
   68956           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   68957             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   68958             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   68959             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   68960           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   68961           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   68962             :         { 
   68963           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   68964             :         } 
   68965             :        else 
   68966             :         { 
   68967             :           attachedPreprocessingInfoPtr_copy = NULL; 
   68968             :         } 
   68969             :   /* check for a valid pointer and delete if present */ 
   68970           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   68971             :   /* add assignment to result here */ 
   68972           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   68973             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   68974             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   68975             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   68976           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   68977           0 :      if ( p_attributeMechanism != NULL ) 
   68978             :         { 
   68979           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   68980             :         } 
   68981             :        else 
   68982             :         { 
   68983             :           attributeMechanism_copy = NULL; 
   68984             :         } 
   68985             :   /* check for a valid pointer and delete if present */ 
   68986           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   68987             :   /* add assignment to result here */ 
   68988           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   68989             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   68990             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   68991             :   // case: toBeCopied == COPY_DATA for numeric_label
   68992           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   68993           0 :      result->p_numeric_label = numeric_label_copy; 
   68994             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   68995             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   68996             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   68997           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   68998           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   68999             :   // case: not a listType for (using conditionalToSetParent)iterator_declaration
   69000           0 :           if ( (iterator_declaration_copy != NULL) && (iterator_declaration_copy->get_parent() == NULL) && (isSgType(iterator_declaration_copy) == NULL) ) 
   69001             :              { 
   69002           0 :                iterator_declaration_copy->set_parent(result); 
   69003             :              } 
   69004             :   // case: not a listType for (using conditionalToSetParent)range_declaration
   69005           0 :           if ( (range_declaration_copy != NULL) && (range_declaration_copy->get_parent() == NULL) && (isSgType(range_declaration_copy) == NULL) ) 
   69006             :              { 
   69007           0 :                range_declaration_copy->set_parent(result); 
   69008             :              } 
   69009             :   // case: not a listType for (using conditionalToSetParent)begin_declaration
   69010           0 :           if ( (begin_declaration_copy != NULL) && (begin_declaration_copy->get_parent() == NULL) && (isSgType(begin_declaration_copy) == NULL) ) 
   69011             :              { 
   69012           0 :                begin_declaration_copy->set_parent(result); 
   69013             :              } 
   69014             :   // case: not a listType for (using conditionalToSetParent)end_declaration
   69015           0 :           if ( (end_declaration_copy != NULL) && (end_declaration_copy->get_parent() == NULL) && (isSgType(end_declaration_copy) == NULL) ) 
   69016             :              { 
   69017           0 :                end_declaration_copy->set_parent(result); 
   69018             :              } 
   69019             :   // case: not a listType for (using conditionalToSetParent)not_equal_expression
   69020           0 :           if ( (not_equal_expression_copy != NULL) && (not_equal_expression_copy->get_parent() == NULL) && (isSgType(not_equal_expression_copy) == NULL) ) 
   69021             :              { 
   69022           0 :                not_equal_expression_copy->set_parent(result); 
   69023             :              } 
   69024             :   // case: not a listType for (using conditionalToSetParent)increment_expression
   69025           0 :           if ( (increment_expression_copy != NULL) && (increment_expression_copy->get_parent() == NULL) && (isSgType(increment_expression_copy) == NULL) ) 
   69026             :              { 
   69027           0 :                increment_expression_copy->set_parent(result); 
   69028             :              } 
   69029             :   // case: not a listType for (using conditionalToSetParent)loop_body
   69030           0 :           if ( (loop_body_copy != NULL) && (loop_body_copy->get_parent() == NULL) && (isSgType(loop_body_copy) == NULL) ) 
   69031             :              { 
   69032           0 :                loop_body_copy->set_parent(result); 
   69033             :              } 
   69034             : 
   69035             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   69036             : 
   69037             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   69038             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   69039             :   // fixupCopy(result,help);
   69040             : 
   69041             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   69042             :   // the Sg_File_Info objects that are built for the new IR nodes.
   69043           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   69044           0 :      if (locatedNode != NULL)
   69045             :         {
   69046             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   69047           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   69048           0 :           ROSE_ASSERT(start != NULL);
   69049             : #if 0
   69050             :        // Debugging information
   69051             :           if (start->get_parent() == NULL)
   69052             :              {
   69053             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69054             :              }
   69055             : #endif
   69056           0 :           start->set_parent(locatedNode);
   69057           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   69058             : 
   69059           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   69060             : 
   69061             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   69062             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   69063             :        // ROSE_ASSERT(end != NULL);
   69064           0 :           if (end == NULL)
   69065             :              {
   69066           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   69067             :              }
   69068             :             else
   69069             :              {
   69070             : #if 0
   69071             :             // Debugging information
   69072             :                if (end->get_parent() == NULL)
   69073             :                   {
   69074             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69075             :                   }
   69076             : #endif
   69077           0 :                end->set_parent(locatedNode);
   69078           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   69079             :              }
   69080             : 
   69081           0 :           SgExpression* expression = isSgExpression(result);
   69082           0 :           if (isSgExpression(this) != NULL)
   69083             :              {
   69084           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   69085             : 
   69086             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   69087           0 :                if (operatorPosition != NULL)
   69088             :                   {
   69089             : #if 0
   69090             :                  // Debugging information
   69091             :                     if (operatorPosition->get_parent() == NULL)
   69092             :                        {
   69093             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69094             :                        }
   69095             : #endif
   69096           0 :                     operatorPosition->set_parent(expression);
   69097           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   69098             :                   }
   69099             :              }
   69100             :         }
   69101             : 
   69102             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   69103           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   69104           0 :      if (initializedName != NULL)
   69105             :         {
   69106             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   69107           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   69108           0 :           ROSE_ASSERT(start != NULL);
   69109             : #if 0
   69110             :        // Debugging information
   69111             :           if (start->get_parent() == NULL)
   69112             :              {
   69113             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69114             :              }
   69115             : #endif
   69116           0 :           start->set_parent(initializedName);
   69117           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   69118             : 
   69119             : #if 0
   69120             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   69121             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   69122             : 
   69123             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   69124             :        // ROSE_ASSERT(end != NULL);
   69125             :           if (end == NULL)
   69126             :              {
   69127             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   69128             :              }
   69129             :             else
   69130             :              {
   69131             :                if (end->get_parent() == NULL)
   69132             :                   {
   69133             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69134             :                   }
   69135             :                end->set_parent(initializedName);
   69136             :                ROSE_ASSERT(end->get_parent() != NULL);
   69137             :              }
   69138             : #endif
   69139             :         }
   69140             : 
   69141             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   69142           0 :      help.insertCopiedNodePair(this,result);
   69143             : 
   69144             :   // printf ("End of copy SgRangeBasedForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   69145             : 
   69146             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   69147             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   69148           0 :      help.decrementDepth();
   69149             : 
   69150             :   // Test if this is the root of the copy!
   69151           0 :      if (help.get_depth() == 0)
   69152             :         {
   69153             :        // This is the original calling node.
   69154             : 
   69155             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   69156             :        // printf ("Calling SgRangeBasedForStatement::fixupCopy() (from root of AST being copied) \n");
   69157             : #if ALT_FIXUP_COPY
   69158             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   69159           0 :           fixupCopy_scopes (result,help);
   69160           0 :           fixupCopy_symbols (result,help);
   69161           0 :           fixupCopy_references (result,help);
   69162             : #else
   69163             :           fixupCopy(result,help);
   69164             : #endif
   69165             :        // Allow this to be called recursively, so accumulate the state.
   69166             :        // Also, clear the state in the SgCopyHelp object.
   69167             :        // help.clearState();
   69168             :         }
   69169             : 
   69170           0 :      return result;
   69171             :    }
   69172             : 
   69173             : 
   69174             : /* #line 69175 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   69175             : 
   69176             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   69177             : 
   69178           0 : SgNode* SgFunctionTypeTable::copy ( SgCopyHelp& help) const
   69179             :    {
   69180           0 :      SgFunctionTypeTable* result = NULL;
   69181             : 
   69182             :   // printf ("Copy SgFunctionTypeTable = %p = %s \n",this,SageInterface::get_name(this).c_str());
   69183             : 
   69184             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   69185             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   69186             :   // The default value of the depth is 0, so after this call the depth is 1!
   69187           0 :      help.incrementDepth();
   69188             : 
   69189             : #if 0
   69190             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   69191             :   // but it is not generally true that things can only be copied once!
   69192             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   69193             :   // AstAttribute* existingAttribute = const_cast<SgFunctionTypeTable*>(this)->attribute["copied"];
   69194             :      bool previouslyCopied = const_cast<SgFunctionTypeTable*>(this)->attribute.exists("copied");
   69195             :      if (previouslyCopied == true)
   69196             :         {
   69197             :           this->get_file_info()->display("Called from copy SgFunctionTypeTable: debug");
   69198             :         }
   69199             :      ROSE_ASSERT(previouslyCopied == false);
   69200             : 
   69201             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   69202             :      AstAttribute* newAttribute = new AstAttribute();
   69203             :      ROSE_ASSERT(newAttribute != NULL);
   69204             : 
   69205             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   69206             :      const_cast<SgFunctionTypeTable*>(this)->attribute.add("copied",newAttribute);
   69207             : #endif
   69208             : 
   69209             :   // Copy data members from base classes
   69210             :  
   69211             : 
   69212             :   // Build an empty copy of this object (will be filled in, but 
   69213             :   // the parent can't be set and must be set by the caller)
   69214           0 :      result = new SgFunctionTypeTable(  );
   69215           0 :      ROSE_ASSERT(result != NULL);
   69216             : 
   69217             :   // Copy data members of "this" class
   69218             :   // Copy non-constructor parameter data member (access function): startOfConstruct_copy
   69219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   69220             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   69221           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   69222           0 :      if ( p_startOfConstruct != NULL ) 
   69223             :         { 
   69224           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   69225             :         } 
   69226             :        else 
   69227             :         { 
   69228             :           startOfConstruct_copy = NULL; 
   69229             :         } 
   69230             :   /* check for a valid pointer and delete if present */ 
   69231           0 :      if (result->p_startOfConstruct != NULL) delete result->p_startOfConstruct; 
   69232             :   /* add assignment to result here */ 
   69233           0 :      result->p_startOfConstruct = startOfConstruct_copy; 
   69234             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   69235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   69236             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   69237           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   69238           0 :      if ( p_endOfConstruct != NULL ) 
   69239             :         { 
   69240           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   69241             :         } 
   69242             :        else 
   69243             :         { 
   69244             :           endOfConstruct_copy = NULL; 
   69245             :         } 
   69246             :   /* check for a valid pointer and delete if present */ 
   69247           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   69248             :   /* add assignment to result here */ 
   69249           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   69250             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   69251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   69252             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   69253           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   69254           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   69255             :         { 
   69256           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   69257             :         } 
   69258             :        else 
   69259             :         { 
   69260             :           attachedPreprocessingInfoPtr_copy = NULL; 
   69261             :         } 
   69262             :   /* check for a valid pointer and delete if present */ 
   69263           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   69264             :   /* add assignment to result here */ 
   69265           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   69266             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   69267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   69268             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   69269           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   69270           0 :      if ( p_attributeMechanism != NULL ) 
   69271             :         { 
   69272           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   69273             :         } 
   69274             :        else 
   69275             :         { 
   69276             :           attributeMechanism_copy = NULL; 
   69277             :         } 
   69278             :   /* check for a valid pointer and delete if present */ 
   69279           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   69280             :   /* add assignment to result here */ 
   69281           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   69282             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   69283             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   69284             :   // case: toBeCopied == COPY_DATA for numeric_label
   69285           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   69286           0 :      result->p_numeric_label = numeric_label_copy; 
   69287             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   69288             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   69289             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   69290           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   69291           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   69292             :   // Copy non-constructor parameter data member (access function): function_type_table_copy
   69293             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for function_type_table
   69294             :   // case: toBeCopied == COPY_DATA for function_type_table
   69295           0 :      SgSymbolTable* function_type_table_copy = p_function_type_table; 
   69296           0 :      result->p_function_type_table = function_type_table_copy; 
   69297             : 
   69298             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   69299             : 
   69300             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   69301             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   69302             :   // fixupCopy(result,help);
   69303             : 
   69304             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   69305             :   // the Sg_File_Info objects that are built for the new IR nodes.
   69306           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   69307           0 :      if (locatedNode != NULL)
   69308             :         {
   69309             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   69310           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   69311           0 :           ROSE_ASSERT(start != NULL);
   69312             : #if 0
   69313             :        // Debugging information
   69314             :           if (start->get_parent() == NULL)
   69315             :              {
   69316             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69317             :              }
   69318             : #endif
   69319           0 :           start->set_parent(locatedNode);
   69320           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   69321             : 
   69322           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   69323             : 
   69324             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   69325             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   69326             :        // ROSE_ASSERT(end != NULL);
   69327           0 :           if (end == NULL)
   69328             :              {
   69329           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   69330             :              }
   69331             :             else
   69332             :              {
   69333             : #if 0
   69334             :             // Debugging information
   69335             :                if (end->get_parent() == NULL)
   69336             :                   {
   69337             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69338             :                   }
   69339             : #endif
   69340           0 :                end->set_parent(locatedNode);
   69341           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   69342             :              }
   69343             : 
   69344           0 :           SgExpression* expression = isSgExpression(result);
   69345           0 :           if (isSgExpression(this) != NULL)
   69346             :              {
   69347           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   69348             : 
   69349             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   69350           0 :                if (operatorPosition != NULL)
   69351             :                   {
   69352             : #if 0
   69353             :                  // Debugging information
   69354             :                     if (operatorPosition->get_parent() == NULL)
   69355             :                        {
   69356             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69357             :                        }
   69358             : #endif
   69359           0 :                     operatorPosition->set_parent(expression);
   69360           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   69361             :                   }
   69362             :              }
   69363             :         }
   69364             : 
   69365             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   69366           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   69367           0 :      if (initializedName != NULL)
   69368             :         {
   69369             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   69370           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   69371           0 :           ROSE_ASSERT(start != NULL);
   69372             : #if 0
   69373             :        // Debugging information
   69374             :           if (start->get_parent() == NULL)
   69375             :              {
   69376             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69377             :              }
   69378             : #endif
   69379           0 :           start->set_parent(initializedName);
   69380           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   69381             : 
   69382             : #if 0
   69383             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   69384             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   69385             : 
   69386             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   69387             :        // ROSE_ASSERT(end != NULL);
   69388             :           if (end == NULL)
   69389             :              {
   69390             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   69391             :              }
   69392             :             else
   69393             :              {
   69394             :                if (end->get_parent() == NULL)
   69395             :                   {
   69396             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69397             :                   }
   69398             :                end->set_parent(initializedName);
   69399             :                ROSE_ASSERT(end->get_parent() != NULL);
   69400             :              }
   69401             : #endif
   69402             :         }
   69403             : 
   69404             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   69405           0 :      help.insertCopiedNodePair(this,result);
   69406             : 
   69407             :   // printf ("End of copy SgFunctionTypeTable = %p = %s \n",this,SageInterface::get_name(this).c_str());
   69408             : 
   69409             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   69410             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   69411           0 :      help.decrementDepth();
   69412             : 
   69413             :   // Test if this is the root of the copy!
   69414           0 :      if (help.get_depth() == 0)
   69415             :         {
   69416             :        // This is the original calling node.
   69417             : 
   69418             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   69419             :        // printf ("Calling SgFunctionTypeTable::fixupCopy() (from root of AST being copied) \n");
   69420             : #if ALT_FIXUP_COPY
   69421             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   69422           0 :           fixupCopy_scopes (result,help);
   69423           0 :           fixupCopy_symbols (result,help);
   69424           0 :           fixupCopy_references (result,help);
   69425             : #else
   69426             :           fixupCopy(result,help);
   69427             : #endif
   69428             :        // Allow this to be called recursively, so accumulate the state.
   69429             :        // Also, clear the state in the SgCopyHelp object.
   69430             :        // help.clearState();
   69431             :         }
   69432             : 
   69433           0 :      return result;
   69434             :    }
   69435             : 
   69436             : 
   69437             : /* #line 69438 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   69438             : 
   69439             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   69440             : 
   69441           0 : SgNode* SgDeclarationStatement::copy ( SgCopyHelp& help) const
   69442             :    {
   69443           0 :      SgDeclarationStatement* result = NULL;
   69444             : 
   69445             :   // printf ("Copy SgDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   69446             : 
   69447             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   69448             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   69449             :   // The default value of the depth is 0, so after this call the depth is 1!
   69450           0 :      help.incrementDepth();
   69451             : 
   69452             : #if 0
   69453             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   69454             :   // but it is not generally true that things can only be copied once!
   69455             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   69456             :   // AstAttribute* existingAttribute = const_cast<SgDeclarationStatement*>(this)->attribute["copied"];
   69457             :      bool previouslyCopied = const_cast<SgDeclarationStatement*>(this)->attribute.exists("copied");
   69458             :      if (previouslyCopied == true)
   69459             :         {
   69460             :           this->get_file_info()->display("Called from copy SgDeclarationStatement: debug");
   69461             :         }
   69462             :      ROSE_ASSERT(previouslyCopied == false);
   69463             : 
   69464             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   69465             :      AstAttribute* newAttribute = new AstAttribute();
   69466             :      ROSE_ASSERT(newAttribute != NULL);
   69467             : 
   69468             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   69469             :      const_cast<SgDeclarationStatement*>(this)->attribute.add("copied",newAttribute);
   69470             : #endif
   69471             : 
   69472             :   // Copy data members from base classes
   69473             :   // Copy constructor parameter data member: startOfConstruct_copy
   69474             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   69475             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   69476           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   69477           0 :      if ( p_startOfConstruct != NULL ) 
   69478             :         { 
   69479           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   69480             :         } 
   69481             :        else 
   69482             :         { 
   69483             :           startOfConstruct_copy = NULL; 
   69484             :         } 
   69485             :  
   69486             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   69487             : 
   69488             :   // Build an empty copy of this object (will be filled in, but 
   69489             :   // the parent can't be set and must be set by the caller)
   69490           0 :      result = new SgDeclarationStatement(  startOfConstruct_copy );
   69491           0 :      ROSE_ASSERT(result != NULL);
   69492             : 
   69493             :   // Copy data members of "this" class
   69494             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   69495             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   69496             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   69497           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   69498           0 :      if ( p_endOfConstruct != NULL ) 
   69499             :         { 
   69500           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   69501             :         } 
   69502             :        else 
   69503             :         { 
   69504             :           endOfConstruct_copy = NULL; 
   69505             :         } 
   69506             :   /* check for a valid pointer and delete if present */ 
   69507           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   69508             :   /* add assignment to result here */ 
   69509           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   69510             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   69511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   69512             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   69513           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   69514           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   69515             :         { 
   69516           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   69517             :         } 
   69518             :        else 
   69519             :         { 
   69520             :           attachedPreprocessingInfoPtr_copy = NULL; 
   69521             :         } 
   69522             :   /* check for a valid pointer and delete if present */ 
   69523           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   69524             :   /* add assignment to result here */ 
   69525           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   69526             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   69527             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   69528             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   69529           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   69530           0 :      if ( p_attributeMechanism != NULL ) 
   69531             :         { 
   69532           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   69533             :         } 
   69534             :        else 
   69535             :         { 
   69536             :           attributeMechanism_copy = NULL; 
   69537             :         } 
   69538             :   /* check for a valid pointer and delete if present */ 
   69539           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   69540             :   /* add assignment to result here */ 
   69541           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   69542             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   69543             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   69544             :   // case: toBeCopied == COPY_DATA for numeric_label
   69545           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   69546           0 :      result->p_numeric_label = numeric_label_copy; 
   69547             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   69548             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   69549             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   69550           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   69551           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   69552             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   69553             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   69554             :   // case: toBeCopied == COPY_DATA for decl_attributes
   69555           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   69556           0 :      result->p_decl_attributes = decl_attributes_copy; 
   69557             :   // Copy non-constructor parameter data member (access function): linkage_copy
   69558             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   69559             :   // case: toBeCopied == COPY_DATA for linkage
   69560           0 :      std::string linkage_copy = p_linkage; 
   69561           0 :      result->p_linkage = linkage_copy; 
   69562             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   69563             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   69564             :   // case: toBeCopied == COPY_DATA for declarationModifier
   69565           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   69566           0 :      result->p_declarationModifier = declarationModifier_copy; 
   69567             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   69568             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   69569             :   // case: toBeCopied == COPY_DATA for nameOnly
   69570           0 :      bool nameOnly_copy = p_nameOnly; 
   69571           0 :      result->p_nameOnly = nameOnly_copy; 
   69572             :   // Copy non-constructor parameter data member (access function): forward_copy
   69573             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   69574             :   // case: toBeCopied == COPY_DATA for forward
   69575           0 :      bool forward_copy = p_forward; 
   69576           0 :      result->p_forward = forward_copy; 
   69577             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   69578             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   69579             :   // case: toBeCopied == COPY_DATA for externBrace
   69580           0 :      bool externBrace_copy = p_externBrace; 
   69581           0 :      result->p_externBrace = externBrace_copy; 
   69582             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   69583             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   69584             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   69585           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   69586           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   69587             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   69588             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   69589             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   69590           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   69591           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   69592             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   69593             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   69594             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   69595           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   69596           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   69597             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   69598             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   69599             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   69600           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   69601           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   69602             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   69603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   69604             :   // case: toBeCopied == COPY_DATA for binding_label
   69605           0 :      std::string binding_label_copy = p_binding_label; 
   69606           0 :      result->p_binding_label = binding_label_copy; 
   69607             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   69608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   69609             :   // case: toBeCopied == COPY_DATA for declarationScope
   69610           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   69611           0 :      result->p_declarationScope = declarationScope_copy; 
   69612             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   69613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   69614             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   69615           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   69616           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   69617             : 
   69618             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   69619             : 
   69620             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   69621             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   69622             :   // fixupCopy(result,help);
   69623             : 
   69624             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   69625             :   // the Sg_File_Info objects that are built for the new IR nodes.
   69626           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   69627           0 :      if (locatedNode != NULL)
   69628             :         {
   69629             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   69630           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   69631           0 :           ROSE_ASSERT(start != NULL);
   69632             : #if 0
   69633             :        // Debugging information
   69634             :           if (start->get_parent() == NULL)
   69635             :              {
   69636             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69637             :              }
   69638             : #endif
   69639           0 :           start->set_parent(locatedNode);
   69640           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   69641             : 
   69642           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   69643             : 
   69644             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   69645             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   69646             :        // ROSE_ASSERT(end != NULL);
   69647           0 :           if (end == NULL)
   69648             :              {
   69649           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   69650             :              }
   69651             :             else
   69652             :              {
   69653             : #if 0
   69654             :             // Debugging information
   69655             :                if (end->get_parent() == NULL)
   69656             :                   {
   69657             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69658             :                   }
   69659             : #endif
   69660           0 :                end->set_parent(locatedNode);
   69661           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   69662             :              }
   69663             : 
   69664           0 :           SgExpression* expression = isSgExpression(result);
   69665           0 :           if (isSgExpression(this) != NULL)
   69666             :              {
   69667           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   69668             : 
   69669             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   69670           0 :                if (operatorPosition != NULL)
   69671             :                   {
   69672             : #if 0
   69673             :                  // Debugging information
   69674             :                     if (operatorPosition->get_parent() == NULL)
   69675             :                        {
   69676             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69677             :                        }
   69678             : #endif
   69679           0 :                     operatorPosition->set_parent(expression);
   69680           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   69681             :                   }
   69682             :              }
   69683             :         }
   69684             : 
   69685             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   69686           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   69687           0 :      if (initializedName != NULL)
   69688             :         {
   69689             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   69690           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   69691           0 :           ROSE_ASSERT(start != NULL);
   69692             : #if 0
   69693             :        // Debugging information
   69694             :           if (start->get_parent() == NULL)
   69695             :              {
   69696             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69697             :              }
   69698             : #endif
   69699           0 :           start->set_parent(initializedName);
   69700           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   69701             : 
   69702             : #if 0
   69703             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   69704             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   69705             : 
   69706             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   69707             :        // ROSE_ASSERT(end != NULL);
   69708             :           if (end == NULL)
   69709             :              {
   69710             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   69711             :              }
   69712             :             else
   69713             :              {
   69714             :                if (end->get_parent() == NULL)
   69715             :                   {
   69716             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69717             :                   }
   69718             :                end->set_parent(initializedName);
   69719             :                ROSE_ASSERT(end->get_parent() != NULL);
   69720             :              }
   69721             : #endif
   69722             :         }
   69723             : 
   69724             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   69725           0 :      help.insertCopiedNodePair(this,result);
   69726             : 
   69727             :   // printf ("End of copy SgDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   69728             : 
   69729             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   69730             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   69731           0 :      help.decrementDepth();
   69732             : 
   69733             :   // Test if this is the root of the copy!
   69734           0 :      if (help.get_depth() == 0)
   69735             :         {
   69736             :        // This is the original calling node.
   69737             : 
   69738             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   69739             :        // printf ("Calling SgDeclarationStatement::fixupCopy() (from root of AST being copied) \n");
   69740             : #if ALT_FIXUP_COPY
   69741             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   69742           0 :           fixupCopy_scopes (result,help);
   69743           0 :           fixupCopy_symbols (result,help);
   69744           0 :           fixupCopy_references (result,help);
   69745             : #else
   69746             :           fixupCopy(result,help);
   69747             : #endif
   69748             :        // Allow this to be called recursively, so accumulate the state.
   69749             :        // Also, clear the state in the SgCopyHelp object.
   69750             :        // help.clearState();
   69751             :         }
   69752             : 
   69753           0 :      return result;
   69754             :    }
   69755             : 
   69756             : 
   69757             : /* #line 69758 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   69758             : 
   69759             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   69760             : 
   69761          10 : SgNode* SgFunctionParameterList::copy ( SgCopyHelp& help) const
   69762             :    {
   69763          10 :      SgFunctionParameterList* result = NULL;
   69764             : 
   69765             :   // printf ("Copy SgFunctionParameterList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   69766             : 
   69767             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   69768             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   69769             :   // The default value of the depth is 0, so after this call the depth is 1!
   69770          10 :      help.incrementDepth();
   69771             : 
   69772             : #if 0
   69773             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   69774             :   // but it is not generally true that things can only be copied once!
   69775             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   69776             :   // AstAttribute* existingAttribute = const_cast<SgFunctionParameterList*>(this)->attribute["copied"];
   69777             :      bool previouslyCopied = const_cast<SgFunctionParameterList*>(this)->attribute.exists("copied");
   69778             :      if (previouslyCopied == true)
   69779             :         {
   69780             :           this->get_file_info()->display("Called from copy SgFunctionParameterList: debug");
   69781             :         }
   69782             :      ROSE_ASSERT(previouslyCopied == false);
   69783             : 
   69784             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   69785             :      AstAttribute* newAttribute = new AstAttribute();
   69786             :      ROSE_ASSERT(newAttribute != NULL);
   69787             : 
   69788             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   69789             :      const_cast<SgFunctionParameterList*>(this)->attribute.add("copied",newAttribute);
   69790             : #endif
   69791             : 
   69792             :   // Copy data members from base classes
   69793             :   // Copy constructor parameter data member: startOfConstruct_copy
   69794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   69795             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   69796          10 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   69797          10 :      if ( p_startOfConstruct != NULL ) 
   69798             :         { 
   69799          10 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   69800             :         } 
   69801             :        else 
   69802             :         { 
   69803             :           startOfConstruct_copy = NULL; 
   69804             :         } 
   69805             :  
   69806             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   69807             : 
   69808             :   // Build an empty copy of this object (will be filled in, but 
   69809             :   // the parent can't be set and must be set by the caller)
   69810          10 :      result = new SgFunctionParameterList(  startOfConstruct_copy );
   69811          10 :      ROSE_ASSERT(result != NULL);
   69812             : 
   69813             :   // Copy data members of "this" class
   69814             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   69815             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   69816             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   69817          10 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   69818          10 :      if ( p_endOfConstruct != NULL ) 
   69819             :         { 
   69820          10 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   69821             :         } 
   69822             :        else 
   69823             :         { 
   69824             :           endOfConstruct_copy = NULL; 
   69825             :         } 
   69826             :   /* check for a valid pointer and delete if present */ 
   69827          10 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   69828             :   /* add assignment to result here */ 
   69829          10 :      result->p_endOfConstruct = endOfConstruct_copy; 
   69830             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   69831             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   69832             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   69833          10 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   69834          10 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   69835             :         { 
   69836           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   69837             :         } 
   69838             :        else 
   69839             :         { 
   69840             :           attachedPreprocessingInfoPtr_copy = NULL; 
   69841             :         } 
   69842             :   /* check for a valid pointer and delete if present */ 
   69843          10 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   69844             :   /* add assignment to result here */ 
   69845          10 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   69846             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   69847             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   69848             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   69849          10 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   69850          10 :      if ( p_attributeMechanism != NULL ) 
   69851             :         { 
   69852           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   69853             :         } 
   69854             :        else 
   69855             :         { 
   69856             :           attributeMechanism_copy = NULL; 
   69857             :         } 
   69858             :   /* check for a valid pointer and delete if present */ 
   69859          10 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   69860             :   /* add assignment to result here */ 
   69861          10 :      result->p_attributeMechanism = attributeMechanism_copy; 
   69862             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   69863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   69864             :   // case: toBeCopied == COPY_DATA for numeric_label
   69865          10 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   69866          10 :      result->p_numeric_label = numeric_label_copy; 
   69867             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   69868             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   69869             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   69870          10 :      int source_sequence_value_copy = p_source_sequence_value; 
   69871          10 :      result->p_source_sequence_value = source_sequence_value_copy; 
   69872             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   69873             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   69874             :   // case: toBeCopied == COPY_DATA for decl_attributes
   69875          10 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   69876          10 :      result->p_decl_attributes = decl_attributes_copy; 
   69877             :   // Copy non-constructor parameter data member (access function): linkage_copy
   69878             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   69879             :   // case: toBeCopied == COPY_DATA for linkage
   69880          10 :      std::string linkage_copy = p_linkage; 
   69881          10 :      result->p_linkage = linkage_copy; 
   69882             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   69883             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   69884             :   // case: toBeCopied == COPY_DATA for declarationModifier
   69885          20 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   69886          10 :      result->p_declarationModifier = declarationModifier_copy; 
   69887             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   69888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   69889             :   // case: toBeCopied == COPY_DATA for nameOnly
   69890          10 :      bool nameOnly_copy = p_nameOnly; 
   69891          10 :      result->p_nameOnly = nameOnly_copy; 
   69892             :   // Copy non-constructor parameter data member (access function): forward_copy
   69893             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   69894             :   // case: toBeCopied == COPY_DATA for forward
   69895          10 :      bool forward_copy = p_forward; 
   69896          10 :      result->p_forward = forward_copy; 
   69897             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   69898             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   69899             :   // case: toBeCopied == COPY_DATA for externBrace
   69900          10 :      bool externBrace_copy = p_externBrace; 
   69901          10 :      result->p_externBrace = externBrace_copy; 
   69902             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   69903             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   69904             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   69905          10 :      bool skipElaborateType_copy = p_skipElaborateType; 
   69906          10 :      result->p_skipElaborateType = skipElaborateType_copy; 
   69907             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   69908             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   69909             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   69910          10 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   69911          10 :      result->p_definingDeclaration = definingDeclaration_copy; 
   69912             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   69913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   69914             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   69915          10 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   69916          10 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   69917             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   69918             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   69919             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   69920          20 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   69921          10 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   69922             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   69923             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   69924             :   // case: toBeCopied == COPY_DATA for binding_label
   69925          20 :      std::string binding_label_copy = p_binding_label; 
   69926          10 :      result->p_binding_label = binding_label_copy; 
   69927             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   69928             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   69929             :   // case: toBeCopied == COPY_DATA for declarationScope
   69930          10 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   69931          10 :      result->p_declarationScope = declarationScope_copy; 
   69932             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   69933             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   69934             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   69935          10 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   69936          10 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   69937             :   // Copy non-constructor parameter data member (list access function): result->get_args()
   69938          20 :      SgInitializedNamePtrList args_copy; 
   69939             :   // case: listType for args
   69940             :   // case: listType (typeIsPointerToList == false) for args
   69941          10 :      SgInitializedNamePtrList::const_iterator source_args_iterator = get_args().begin(); 
   69942          28 :      for ( /* empty by design */; source_args_iterator != get_args().end(); ++source_args_iterator) 
   69943             :         { 
   69944          18 :           SgInitializedName* source_list_element = *source_args_iterator; 
   69945          18 :           SgInitializedName* copy_list_element = NULL; 
   69946          18 :           if (source_list_element != NULL) 
   69947             :              { 
   69948          18 :                copy_list_element = static_cast<SgInitializedName*>(help.copyAst(*source_args_iterator)); 
   69949             :              } 
   69950             :             else 
   69951             :              { 
   69952             :                copy_list_element = NULL; 
   69953             :              } 
   69954          18 :           args_copy.push_back(copy_list_element); 
   69955             :         } 
   69956          10 :      result->p_args = args_copy; 
   69957             :   // case: listType for args
   69958             :   // case: listType (typeIsPointerToList == false) for args
   69959          10 :      SgInitializedNamePtrList::const_iterator args_iterator = result->get_args().begin(); 
   69960          28 :      for ( /* empty by design */; args_iterator != result->get_args().end(); ++args_iterator) 
   69961             :         { 
   69962          18 :           SgInitializedName* list_element = *args_iterator; 
   69963          18 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   69964             :              { 
   69965          18 :                list_element->set_parent(result); 
   69966             :              } 
   69967             :         } 
   69968             : 
   69969             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   69970             : 
   69971             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   69972             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   69973             :   // fixupCopy(result,help);
   69974             : 
   69975             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   69976             :   // the Sg_File_Info objects that are built for the new IR nodes.
   69977          10 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   69978          10 :      if (locatedNode != NULL)
   69979             :         {
   69980             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   69981          10 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   69982          10 :           ROSE_ASSERT(start != NULL);
   69983             : #if 0
   69984             :        // Debugging information
   69985             :           if (start->get_parent() == NULL)
   69986             :              {
   69987             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   69988             :              }
   69989             : #endif
   69990          10 :           start->set_parent(locatedNode);
   69991          10 :           ROSE_ASSERT(start->get_parent() != NULL);
   69992             : 
   69993          10 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   69994             : 
   69995             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   69996             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   69997             :        // ROSE_ASSERT(end != NULL);
   69998          10 :           if (end == NULL)
   69999             :              {
   70000           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   70001             :              }
   70002             :             else
   70003             :              {
   70004             : #if 0
   70005             :             // Debugging information
   70006             :                if (end->get_parent() == NULL)
   70007             :                   {
   70008             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70009             :                   }
   70010             : #endif
   70011          10 :                end->set_parent(locatedNode);
   70012          10 :                ROSE_ASSERT(end->get_parent() != NULL);
   70013             :              }
   70014             : 
   70015          10 :           SgExpression* expression = isSgExpression(result);
   70016          10 :           if (isSgExpression(this) != NULL)
   70017             :              {
   70018           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   70019             : 
   70020             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   70021           0 :                if (operatorPosition != NULL)
   70022             :                   {
   70023             : #if 0
   70024             :                  // Debugging information
   70025             :                     if (operatorPosition->get_parent() == NULL)
   70026             :                        {
   70027             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70028             :                        }
   70029             : #endif
   70030           0 :                     operatorPosition->set_parent(expression);
   70031           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   70032             :                   }
   70033             :              }
   70034             :         }
   70035             : 
   70036             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   70037          10 :      SgInitializedName* initializedName = isSgInitializedName(result);
   70038          10 :      if (initializedName != NULL)
   70039             :         {
   70040             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   70041           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   70042           0 :           ROSE_ASSERT(start != NULL);
   70043             : #if 0
   70044             :        // Debugging information
   70045             :           if (start->get_parent() == NULL)
   70046             :              {
   70047             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70048             :              }
   70049             : #endif
   70050           0 :           start->set_parent(initializedName);
   70051           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   70052             : 
   70053             : #if 0
   70054             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   70055             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   70056             : 
   70057             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   70058             :        // ROSE_ASSERT(end != NULL);
   70059             :           if (end == NULL)
   70060             :              {
   70061             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   70062             :              }
   70063             :             else
   70064             :              {
   70065             :                if (end->get_parent() == NULL)
   70066             :                   {
   70067             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70068             :                   }
   70069             :                end->set_parent(initializedName);
   70070             :                ROSE_ASSERT(end->get_parent() != NULL);
   70071             :              }
   70072             : #endif
   70073             :         }
   70074             : 
   70075             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   70076          10 :      help.insertCopiedNodePair(this,result);
   70077             : 
   70078             :   // printf ("End of copy SgFunctionParameterList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   70079             : 
   70080             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   70081             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   70082          10 :      help.decrementDepth();
   70083             : 
   70084             :   // Test if this is the root of the copy!
   70085          10 :      if (help.get_depth() == 0)
   70086             :         {
   70087             :        // This is the original calling node.
   70088             : 
   70089             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   70090             :        // printf ("Calling SgFunctionParameterList::fixupCopy() (from root of AST being copied) \n");
   70091             : #if ALT_FIXUP_COPY
   70092             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   70093           5 :           fixupCopy_scopes (result,help);
   70094           5 :           fixupCopy_symbols (result,help);
   70095           5 :           fixupCopy_references (result,help);
   70096             : #else
   70097             :           fixupCopy(result,help);
   70098             : #endif
   70099             :        // Allow this to be called recursively, so accumulate the state.
   70100             :        // Also, clear the state in the SgCopyHelp object.
   70101             :        // help.clearState();
   70102             :         }
   70103             : 
   70104          20 :      return result;
   70105             :    }
   70106             : 
   70107             : 
   70108             : /* #line 70109 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   70109             : 
   70110             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   70111             : 
   70112          22 : SgNode* SgVariableDeclaration::copy ( SgCopyHelp& help) const
   70113             :    {
   70114          22 :      SgVariableDeclaration* result = NULL;
   70115             : 
   70116             :   // printf ("Copy SgVariableDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   70117             : 
   70118             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   70119             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   70120             :   // The default value of the depth is 0, so after this call the depth is 1!
   70121          22 :      help.incrementDepth();
   70122             : 
   70123             : #if 0
   70124             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   70125             :   // but it is not generally true that things can only be copied once!
   70126             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   70127             :   // AstAttribute* existingAttribute = const_cast<SgVariableDeclaration*>(this)->attribute["copied"];
   70128             :      bool previouslyCopied = const_cast<SgVariableDeclaration*>(this)->attribute.exists("copied");
   70129             :      if (previouslyCopied == true)
   70130             :         {
   70131             :           this->get_file_info()->display("Called from copy SgVariableDeclaration: debug");
   70132             :         }
   70133             :      ROSE_ASSERT(previouslyCopied == false);
   70134             : 
   70135             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   70136             :      AstAttribute* newAttribute = new AstAttribute();
   70137             :      ROSE_ASSERT(newAttribute != NULL);
   70138             : 
   70139             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   70140             :      const_cast<SgVariableDeclaration*>(this)->attribute.add("copied",newAttribute);
   70141             : #endif
   70142             : 
   70143             :   // Copy data members from base classes
   70144             :   // Copy constructor parameter data member: startOfConstruct_copy
   70145             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   70146             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   70147          22 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   70148          22 :      if ( p_startOfConstruct != NULL ) 
   70149             :         { 
   70150          22 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   70151             :         } 
   70152             :        else 
   70153             :         { 
   70154             :           startOfConstruct_copy = NULL; 
   70155             :         } 
   70156             :  
   70157             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   70158             : 
   70159             :   // Build an empty copy of this object (will be filled in, but 
   70160             :   // the parent can't be set and must be set by the caller)
   70161          22 :      result = new SgVariableDeclaration(  startOfConstruct_copy );
   70162          22 :      ROSE_ASSERT(result != NULL);
   70163             : 
   70164             :   // Copy data members of "this" class
   70165             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   70166             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   70167             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   70168          22 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   70169          22 :      if ( p_endOfConstruct != NULL ) 
   70170             :         { 
   70171          22 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   70172             :         } 
   70173             :        else 
   70174             :         { 
   70175             :           endOfConstruct_copy = NULL; 
   70176             :         } 
   70177             :   /* check for a valid pointer and delete if present */ 
   70178          22 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   70179             :   /* add assignment to result here */ 
   70180          22 :      result->p_endOfConstruct = endOfConstruct_copy; 
   70181             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   70182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   70183             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   70184          22 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   70185          22 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   70186             :         { 
   70187           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   70188             :         } 
   70189             :        else 
   70190             :         { 
   70191             :           attachedPreprocessingInfoPtr_copy = NULL; 
   70192             :         } 
   70193             :   /* check for a valid pointer and delete if present */ 
   70194          22 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   70195             :   /* add assignment to result here */ 
   70196          22 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   70197             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   70198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   70199             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   70200          22 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   70201          22 :      if ( p_attributeMechanism != NULL ) 
   70202             :         { 
   70203           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   70204             :         } 
   70205             :        else 
   70206             :         { 
   70207             :           attributeMechanism_copy = NULL; 
   70208             :         } 
   70209             :   /* check for a valid pointer and delete if present */ 
   70210          22 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   70211             :   /* add assignment to result here */ 
   70212          22 :      result->p_attributeMechanism = attributeMechanism_copy; 
   70213             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   70214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   70215             :   // case: toBeCopied == COPY_DATA for numeric_label
   70216          22 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   70217          22 :      result->p_numeric_label = numeric_label_copy; 
   70218             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   70219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   70220             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   70221          22 :      int source_sequence_value_copy = p_source_sequence_value; 
   70222          22 :      result->p_source_sequence_value = source_sequence_value_copy; 
   70223             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   70224             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   70225             :   // case: toBeCopied == COPY_DATA for decl_attributes
   70226          22 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   70227          22 :      result->p_decl_attributes = decl_attributes_copy; 
   70228             :   // Copy non-constructor parameter data member (access function): linkage_copy
   70229             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   70230             :   // case: toBeCopied == COPY_DATA for linkage
   70231          22 :      std::string linkage_copy = p_linkage; 
   70232          22 :      result->p_linkage = linkage_copy; 
   70233             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   70234             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   70235             :   // case: toBeCopied == COPY_DATA for declarationModifier
   70236          44 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   70237          22 :      result->p_declarationModifier = declarationModifier_copy; 
   70238             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   70239             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   70240             :   // case: toBeCopied == COPY_DATA for nameOnly
   70241          22 :      bool nameOnly_copy = p_nameOnly; 
   70242          22 :      result->p_nameOnly = nameOnly_copy; 
   70243             :   // Copy non-constructor parameter data member (access function): forward_copy
   70244             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   70245             :   // case: toBeCopied == COPY_DATA for forward
   70246          22 :      bool forward_copy = p_forward; 
   70247          22 :      result->p_forward = forward_copy; 
   70248             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   70249             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   70250             :   // case: toBeCopied == COPY_DATA for externBrace
   70251          22 :      bool externBrace_copy = p_externBrace; 
   70252          22 :      result->p_externBrace = externBrace_copy; 
   70253             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   70254             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   70255             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   70256          22 :      bool skipElaborateType_copy = p_skipElaborateType; 
   70257          22 :      result->p_skipElaborateType = skipElaborateType_copy; 
   70258             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   70259             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   70260             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   70261          22 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   70262          22 :      result->p_definingDeclaration = definingDeclaration_copy; 
   70263             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   70264             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   70265             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   70266          22 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   70267          22 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   70268             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   70269             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   70270             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   70271          44 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   70272          22 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   70273             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   70274             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   70275             :   // case: toBeCopied == COPY_DATA for binding_label
   70276          44 :      std::string binding_label_copy = p_binding_label; 
   70277          22 :      result->p_binding_label = binding_label_copy; 
   70278             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   70279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   70280             :   // case: toBeCopied == COPY_DATA for declarationScope
   70281          22 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   70282          22 :      result->p_declarationScope = declarationScope_copy; 
   70283             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   70284             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   70285             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   70286          22 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   70287          22 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   70288             :   // Copy non-constructor parameter data member (no access function): result->p_baseTypeDefiningDeclaration
   70289          22 :      SgDeclarationStatement* baseTypeDefiningDeclaration_copy; 
   70290             :   // case: not a listType for (using conditionalToCopyVariable)baseTypeDefiningDeclaration
   70291          22 :           if (get_baseTypeDefiningDeclaration() != NULL) 
   70292             :              { 
   70293           0 :                baseTypeDefiningDeclaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_baseTypeDefiningDeclaration())); 
   70294             :              } 
   70295             :             else 
   70296             :              { 
   70297             :                baseTypeDefiningDeclaration_copy = NULL; 
   70298             :              } 
   70299             :   /* check for a valid pointer and delete if present */ 
   70300          22 :      if (result->p_baseTypeDefiningDeclaration != NULL) delete result->p_baseTypeDefiningDeclaration; 
   70301          22 :      result->p_baseTypeDefiningDeclaration = baseTypeDefiningDeclaration_copy; 
   70302             :   // case: not a listType for (using conditionalToSetParent)baseTypeDefiningDeclaration
   70303          22 :           if ( (baseTypeDefiningDeclaration_copy != NULL) && (baseTypeDefiningDeclaration_copy->get_parent() == NULL) && (isSgType(baseTypeDefiningDeclaration_copy) == NULL) ) 
   70304             :              { 
   70305           0 :                baseTypeDefiningDeclaration_copy->set_parent(result); 
   70306             :              } 
   70307             :   // Copy non-constructor parameter data member (list access function): result->get_variables()
   70308          44 :      SgInitializedNamePtrList variables_copy; 
   70309             :   // case: listType for variables
   70310             :   // case: listType (typeIsPointerToList == false) for variables
   70311          22 :      SgInitializedNamePtrList::const_iterator source_variables_iterator = get_variables().begin(); 
   70312          44 :      for ( /* empty by design */; source_variables_iterator != get_variables().end(); ++source_variables_iterator) 
   70313             :         { 
   70314          22 :           SgInitializedName* source_list_element = *source_variables_iterator; 
   70315          22 :           SgInitializedName* copy_list_element = NULL; 
   70316          22 :           if (source_list_element != NULL) 
   70317             :              { 
   70318          22 :                copy_list_element = static_cast<SgInitializedName*>(help.copyAst(*source_variables_iterator)); 
   70319             :              } 
   70320             :             else 
   70321             :              { 
   70322             :                copy_list_element = NULL; 
   70323             :              } 
   70324          22 :           variables_copy.push_back(copy_list_element); 
   70325             :         } 
   70326          22 :      result->p_variables = variables_copy; 
   70327             :   // case: listType for variables
   70328             :   // case: listType (typeIsPointerToList == false) for variables
   70329          22 :      SgInitializedNamePtrList::const_iterator variables_iterator = result->get_variables().begin(); 
   70330          44 :      for ( /* empty by design */; variables_iterator != result->get_variables().end(); ++variables_iterator) 
   70331             :         { 
   70332          22 :           SgInitializedName* list_element = *variables_iterator; 
   70333          22 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   70334             :              { 
   70335          22 :                list_element->set_parent(result); 
   70336             :              } 
   70337             :         } 
   70338             :   // Copy non-constructor parameter data member (access function): variableDeclarationContainsBaseTypeDefiningDeclaration_copy
   70339             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for variableDeclarationContainsBaseTypeDefiningDeclaration
   70340             :   // case: toBeCopied == COPY_DATA for variableDeclarationContainsBaseTypeDefiningDeclaration
   70341          22 :      bool variableDeclarationContainsBaseTypeDefiningDeclaration_copy = p_variableDeclarationContainsBaseTypeDefiningDeclaration; 
   70342          22 :      result->p_variableDeclarationContainsBaseTypeDefiningDeclaration = variableDeclarationContainsBaseTypeDefiningDeclaration_copy; 
   70343             :   // Copy non-constructor parameter data member (access function): specialization_copy
   70344             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   70345             :   // case: toBeCopied == COPY_DATA for specialization
   70346          22 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   70347          22 :      result->p_specialization = specialization_copy; 
   70348             :   // Copy non-constructor parameter data member (no access function): result->p_requiresGlobalNameQualificationOnType
   70349             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresGlobalNameQualificationOnType
   70350             :   // case: toBeCopied == COPY_DATA for requiresGlobalNameQualificationOnType
   70351          22 :      bool requiresGlobalNameQualificationOnType_copy = p_requiresGlobalNameQualificationOnType; 
   70352          22 :      result->p_requiresGlobalNameQualificationOnType = requiresGlobalNameQualificationOnType_copy; 
   70353             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   70354             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   70355             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   70356          44 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   70357          22 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   70358             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   70359             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   70360             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   70361          44 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   70362          22 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   70363             :   // Copy non-constructor parameter data member (access function): gnu_extension_initialization_priority_copy
   70364             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_initialization_priority
   70365             :   // case: toBeCopied == COPY_DATA for gnu_extension_initialization_priority
   70366          22 :      unsigned short gnu_extension_initialization_priority_copy = p_gnu_extension_initialization_priority; 
   70367          22 :      result->p_gnu_extension_initialization_priority = gnu_extension_initialization_priority_copy; 
   70368             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   70369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   70370             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   70371          22 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   70372          22 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   70373             :   // Copy non-constructor parameter data member (access function): gnu_extension_declaration_attribute_copy
   70374             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_declaration_attribute
   70375             :   // case: toBeCopied == COPY_DATA for gnu_extension_declaration_attribute
   70376          22 :      SgVariableDeclaration::gnu_extension_declaration_attributes_enum gnu_extension_declaration_attribute_copy = p_gnu_extension_declaration_attribute; 
   70377          22 :      result->p_gnu_extension_declaration_attribute = gnu_extension_declaration_attribute_copy; 
   70378             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   70379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   70380             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   70381          22 :      int name_qualification_length_copy = p_name_qualification_length; 
   70382          22 :      result->p_name_qualification_length = name_qualification_length_copy; 
   70383             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   70384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   70385             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   70386          22 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   70387          22 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   70388             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   70389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   70390             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   70391          22 :      bool global_qualification_required_copy = p_global_qualification_required; 
   70392          22 :      result->p_global_qualification_required = global_qualification_required_copy; 
   70393             :   // Copy non-constructor parameter data member (access function): isAssociatedWithDeclarationList_copy
   70394             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAssociatedWithDeclarationList
   70395             :   // case: toBeCopied == COPY_DATA for isAssociatedWithDeclarationList
   70396          22 :      bool isAssociatedWithDeclarationList_copy = p_isAssociatedWithDeclarationList; 
   70397          22 :      result->p_isAssociatedWithDeclarationList = isAssociatedWithDeclarationList_copy; 
   70398             :   // Copy non-constructor parameter data member (access function): isFirstDeclarationOfDeclarationList_copy
   70399             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isFirstDeclarationOfDeclarationList
   70400             :   // case: toBeCopied == COPY_DATA for isFirstDeclarationOfDeclarationList
   70401          22 :      bool isFirstDeclarationOfDeclarationList_copy = p_isFirstDeclarationOfDeclarationList; 
   70402          22 :      result->p_isFirstDeclarationOfDeclarationList = isFirstDeclarationOfDeclarationList_copy; 
   70403             :   // Copy non-constructor parameter data member (access function): is_thread_local_copy
   70404             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_thread_local
   70405             :   // case: toBeCopied == COPY_DATA for is_thread_local
   70406          22 :      bool is_thread_local_copy = p_is_thread_local; 
   70407          22 :      result->p_is_thread_local = is_thread_local_copy; 
   70408             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   70409             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   70410             :   // case: toBeCopied == COPY_DATA for is_constexpr
   70411          22 :      bool is_constexpr_copy = p_is_constexpr; 
   70412          22 :      result->p_is_constexpr = is_constexpr_copy; 
   70413             :   // Copy non-constructor parameter data member (access function): builtFromUseOnly_copy
   70414             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for builtFromUseOnly
   70415             :   // case: toBeCopied == COPY_DATA for builtFromUseOnly
   70416          22 :      bool builtFromUseOnly_copy = p_builtFromUseOnly; 
   70417          22 :      result->p_builtFromUseOnly = builtFromUseOnly_copy; 
   70418             : 
   70419             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   70420             : 
   70421             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   70422             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   70423             :   // fixupCopy(result,help);
   70424             : 
   70425             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   70426             :   // the Sg_File_Info objects that are built for the new IR nodes.
   70427          22 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   70428          22 :      if (locatedNode != NULL)
   70429             :         {
   70430             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   70431          22 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   70432          22 :           ROSE_ASSERT(start != NULL);
   70433             : #if 0
   70434             :        // Debugging information
   70435             :           if (start->get_parent() == NULL)
   70436             :              {
   70437             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70438             :              }
   70439             : #endif
   70440          22 :           start->set_parent(locatedNode);
   70441          22 :           ROSE_ASSERT(start->get_parent() != NULL);
   70442             : 
   70443          22 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   70444             : 
   70445             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   70446             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   70447             :        // ROSE_ASSERT(end != NULL);
   70448          22 :           if (end == NULL)
   70449             :              {
   70450           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   70451             :              }
   70452             :             else
   70453             :              {
   70454             : #if 0
   70455             :             // Debugging information
   70456             :                if (end->get_parent() == NULL)
   70457             :                   {
   70458             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70459             :                   }
   70460             : #endif
   70461          22 :                end->set_parent(locatedNode);
   70462          22 :                ROSE_ASSERT(end->get_parent() != NULL);
   70463             :              }
   70464             : 
   70465          22 :           SgExpression* expression = isSgExpression(result);
   70466          22 :           if (isSgExpression(this) != NULL)
   70467             :              {
   70468           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   70469             : 
   70470             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   70471           0 :                if (operatorPosition != NULL)
   70472             :                   {
   70473             : #if 0
   70474             :                  // Debugging information
   70475             :                     if (operatorPosition->get_parent() == NULL)
   70476             :                        {
   70477             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70478             :                        }
   70479             : #endif
   70480           0 :                     operatorPosition->set_parent(expression);
   70481           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   70482             :                   }
   70483             :              }
   70484             :         }
   70485             : 
   70486             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   70487          22 :      SgInitializedName* initializedName = isSgInitializedName(result);
   70488          22 :      if (initializedName != NULL)
   70489             :         {
   70490             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   70491           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   70492           0 :           ROSE_ASSERT(start != NULL);
   70493             : #if 0
   70494             :        // Debugging information
   70495             :           if (start->get_parent() == NULL)
   70496             :              {
   70497             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70498             :              }
   70499             : #endif
   70500           0 :           start->set_parent(initializedName);
   70501           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   70502             : 
   70503             : #if 0
   70504             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   70505             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   70506             : 
   70507             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   70508             :        // ROSE_ASSERT(end != NULL);
   70509             :           if (end == NULL)
   70510             :              {
   70511             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   70512             :              }
   70513             :             else
   70514             :              {
   70515             :                if (end->get_parent() == NULL)
   70516             :                   {
   70517             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70518             :                   }
   70519             :                end->set_parent(initializedName);
   70520             :                ROSE_ASSERT(end->get_parent() != NULL);
   70521             :              }
   70522             : #endif
   70523             :         }
   70524             : 
   70525             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   70526          22 :      help.insertCopiedNodePair(this,result);
   70527             : 
   70528             :   // printf ("End of copy SgVariableDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   70529             : 
   70530             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   70531             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   70532          22 :      help.decrementDepth();
   70533             : 
   70534             :   // Test if this is the root of the copy!
   70535          22 :      if (help.get_depth() == 0)
   70536             :         {
   70537             :        // This is the original calling node.
   70538             : 
   70539             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   70540             :        // printf ("Calling SgVariableDeclaration::fixupCopy() (from root of AST being copied) \n");
   70541             : #if ALT_FIXUP_COPY
   70542             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   70543           4 :           fixupCopy_scopes (result,help);
   70544           4 :           fixupCopy_symbols (result,help);
   70545           4 :           fixupCopy_references (result,help);
   70546             : #else
   70547             :           fixupCopy(result,help);
   70548             : #endif
   70549             :        // Allow this to be called recursively, so accumulate the state.
   70550             :        // Also, clear the state in the SgCopyHelp object.
   70551             :        // help.clearState();
   70552             :         }
   70553             : 
   70554          44 :      return result;
   70555             :    }
   70556             : 
   70557             : 
   70558             : /* #line 70559 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   70559             : 
   70560             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   70561             : 
   70562           0 : SgNode* SgTemplateVariableDeclaration::copy ( SgCopyHelp& help) const
   70563             :    {
   70564           0 :      SgTemplateVariableDeclaration* result = NULL;
   70565             : 
   70566             :   // printf ("Copy SgTemplateVariableDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   70567             : 
   70568             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   70569             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   70570             :   // The default value of the depth is 0, so after this call the depth is 1!
   70571           0 :      help.incrementDepth();
   70572             : 
   70573             : #if 0
   70574             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   70575             :   // but it is not generally true that things can only be copied once!
   70576             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   70577             :   // AstAttribute* existingAttribute = const_cast<SgTemplateVariableDeclaration*>(this)->attribute["copied"];
   70578             :      bool previouslyCopied = const_cast<SgTemplateVariableDeclaration*>(this)->attribute.exists("copied");
   70579             :      if (previouslyCopied == true)
   70580             :         {
   70581             :           this->get_file_info()->display("Called from copy SgTemplateVariableDeclaration: debug");
   70582             :         }
   70583             :      ROSE_ASSERT(previouslyCopied == false);
   70584             : 
   70585             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   70586             :      AstAttribute* newAttribute = new AstAttribute();
   70587             :      ROSE_ASSERT(newAttribute != NULL);
   70588             : 
   70589             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   70590             :      const_cast<SgTemplateVariableDeclaration*>(this)->attribute.add("copied",newAttribute);
   70591             : #endif
   70592             : 
   70593             :   // Copy data members from base classes
   70594             :   // Copy constructor parameter data member: startOfConstruct_copy
   70595             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   70596             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   70597           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   70598           0 :      if ( p_startOfConstruct != NULL ) 
   70599             :         { 
   70600           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   70601             :         } 
   70602             :        else 
   70603             :         { 
   70604             :           startOfConstruct_copy = NULL; 
   70605             :         } 
   70606             :  
   70607             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   70608             : 
   70609             :   // Build an empty copy of this object (will be filled in, but 
   70610             :   // the parent can't be set and must be set by the caller)
   70611           0 :      result = new SgTemplateVariableDeclaration(  startOfConstruct_copy );
   70612           0 :      ROSE_ASSERT(result != NULL);
   70613             : 
   70614             :   // Copy data members of "this" class
   70615             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   70616             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   70617             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   70618           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   70619           0 :      if ( p_endOfConstruct != NULL ) 
   70620             :         { 
   70621           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   70622             :         } 
   70623             :        else 
   70624             :         { 
   70625             :           endOfConstruct_copy = NULL; 
   70626             :         } 
   70627             :   /* check for a valid pointer and delete if present */ 
   70628           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   70629             :   /* add assignment to result here */ 
   70630           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   70631             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   70632             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   70633             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   70634           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   70635           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   70636             :         { 
   70637           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   70638             :         } 
   70639             :        else 
   70640             :         { 
   70641             :           attachedPreprocessingInfoPtr_copy = NULL; 
   70642             :         } 
   70643             :   /* check for a valid pointer and delete if present */ 
   70644           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   70645             :   /* add assignment to result here */ 
   70646           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   70647             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   70648             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   70649             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   70650           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   70651           0 :      if ( p_attributeMechanism != NULL ) 
   70652             :         { 
   70653           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   70654             :         } 
   70655             :        else 
   70656             :         { 
   70657             :           attributeMechanism_copy = NULL; 
   70658             :         } 
   70659             :   /* check for a valid pointer and delete if present */ 
   70660           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   70661             :   /* add assignment to result here */ 
   70662           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   70663             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   70664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   70665             :   // case: toBeCopied == COPY_DATA for numeric_label
   70666           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   70667           0 :      result->p_numeric_label = numeric_label_copy; 
   70668             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   70669             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   70670             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   70671           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   70672           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   70673             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   70674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   70675             :   // case: toBeCopied == COPY_DATA for decl_attributes
   70676           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   70677           0 :      result->p_decl_attributes = decl_attributes_copy; 
   70678             :   // Copy non-constructor parameter data member (access function): linkage_copy
   70679             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   70680             :   // case: toBeCopied == COPY_DATA for linkage
   70681           0 :      std::string linkage_copy = p_linkage; 
   70682           0 :      result->p_linkage = linkage_copy; 
   70683             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   70684             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   70685             :   // case: toBeCopied == COPY_DATA for declarationModifier
   70686           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   70687           0 :      result->p_declarationModifier = declarationModifier_copy; 
   70688             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   70689             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   70690             :   // case: toBeCopied == COPY_DATA for nameOnly
   70691           0 :      bool nameOnly_copy = p_nameOnly; 
   70692           0 :      result->p_nameOnly = nameOnly_copy; 
   70693             :   // Copy non-constructor parameter data member (access function): forward_copy
   70694             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   70695             :   // case: toBeCopied == COPY_DATA for forward
   70696           0 :      bool forward_copy = p_forward; 
   70697           0 :      result->p_forward = forward_copy; 
   70698             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   70699             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   70700             :   // case: toBeCopied == COPY_DATA for externBrace
   70701           0 :      bool externBrace_copy = p_externBrace; 
   70702           0 :      result->p_externBrace = externBrace_copy; 
   70703             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   70704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   70705             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   70706           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   70707           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   70708             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   70709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   70710             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   70711           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   70712           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   70713             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   70714             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   70715             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   70716           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   70717           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   70718             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   70719             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   70720             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   70721           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   70722           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   70723             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   70724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   70725             :   // case: toBeCopied == COPY_DATA for binding_label
   70726           0 :      std::string binding_label_copy = p_binding_label; 
   70727           0 :      result->p_binding_label = binding_label_copy; 
   70728             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   70729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   70730             :   // case: toBeCopied == COPY_DATA for declarationScope
   70731           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   70732           0 :      result->p_declarationScope = declarationScope_copy; 
   70733             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   70734             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   70735             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   70736           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   70737           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   70738             :   // Copy non-constructor parameter data member (no access function): result->p_baseTypeDefiningDeclaration
   70739           0 :      SgDeclarationStatement* baseTypeDefiningDeclaration_copy; 
   70740             :   // case: not a listType for (using conditionalToCopyVariable)baseTypeDefiningDeclaration
   70741           0 :           if (get_baseTypeDefiningDeclaration() != NULL) 
   70742             :              { 
   70743           0 :                baseTypeDefiningDeclaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_baseTypeDefiningDeclaration())); 
   70744             :              } 
   70745             :             else 
   70746             :              { 
   70747             :                baseTypeDefiningDeclaration_copy = NULL; 
   70748             :              } 
   70749             :   /* check for a valid pointer and delete if present */ 
   70750           0 :      if (result->p_baseTypeDefiningDeclaration != NULL) delete result->p_baseTypeDefiningDeclaration; 
   70751           0 :      result->p_baseTypeDefiningDeclaration = baseTypeDefiningDeclaration_copy; 
   70752             :   // case: not a listType for (using conditionalToSetParent)baseTypeDefiningDeclaration
   70753           0 :           if ( (baseTypeDefiningDeclaration_copy != NULL) && (baseTypeDefiningDeclaration_copy->get_parent() == NULL) && (isSgType(baseTypeDefiningDeclaration_copy) == NULL) ) 
   70754             :              { 
   70755           0 :                baseTypeDefiningDeclaration_copy->set_parent(result); 
   70756             :              } 
   70757             :   // Copy non-constructor parameter data member (list access function): result->get_variables()
   70758           0 :      SgInitializedNamePtrList variables_copy; 
   70759             :   // case: listType for variables
   70760             :   // case: listType (typeIsPointerToList == false) for variables
   70761           0 :      SgInitializedNamePtrList::const_iterator source_variables_iterator = get_variables().begin(); 
   70762           0 :      for ( /* empty by design */; source_variables_iterator != get_variables().end(); ++source_variables_iterator) 
   70763             :         { 
   70764           0 :           SgInitializedName* source_list_element = *source_variables_iterator; 
   70765           0 :           SgInitializedName* copy_list_element = NULL; 
   70766           0 :           if (source_list_element != NULL) 
   70767             :              { 
   70768           0 :                copy_list_element = static_cast<SgInitializedName*>(help.copyAst(*source_variables_iterator)); 
   70769             :              } 
   70770             :             else 
   70771             :              { 
   70772             :                copy_list_element = NULL; 
   70773             :              } 
   70774           0 :           variables_copy.push_back(copy_list_element); 
   70775             :         } 
   70776           0 :      result->p_variables = variables_copy; 
   70777             :   // case: listType for variables
   70778             :   // case: listType (typeIsPointerToList == false) for variables
   70779           0 :      SgInitializedNamePtrList::const_iterator variables_iterator = result->get_variables().begin(); 
   70780           0 :      for ( /* empty by design */; variables_iterator != result->get_variables().end(); ++variables_iterator) 
   70781             :         { 
   70782           0 :           SgInitializedName* list_element = *variables_iterator; 
   70783           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   70784             :              { 
   70785           0 :                list_element->set_parent(result); 
   70786             :              } 
   70787             :         } 
   70788             :   // Copy non-constructor parameter data member (access function): variableDeclarationContainsBaseTypeDefiningDeclaration_copy
   70789             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for variableDeclarationContainsBaseTypeDefiningDeclaration
   70790             :   // case: toBeCopied == COPY_DATA for variableDeclarationContainsBaseTypeDefiningDeclaration
   70791           0 :      bool variableDeclarationContainsBaseTypeDefiningDeclaration_copy = p_variableDeclarationContainsBaseTypeDefiningDeclaration; 
   70792           0 :      result->p_variableDeclarationContainsBaseTypeDefiningDeclaration = variableDeclarationContainsBaseTypeDefiningDeclaration_copy; 
   70793             :   // Copy non-constructor parameter data member (access function): specialization_copy
   70794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   70795             :   // case: toBeCopied == COPY_DATA for specialization
   70796           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   70797           0 :      result->p_specialization = specialization_copy; 
   70798             :   // Copy non-constructor parameter data member (no access function): result->p_requiresGlobalNameQualificationOnType
   70799             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresGlobalNameQualificationOnType
   70800             :   // case: toBeCopied == COPY_DATA for requiresGlobalNameQualificationOnType
   70801           0 :      bool requiresGlobalNameQualificationOnType_copy = p_requiresGlobalNameQualificationOnType; 
   70802           0 :      result->p_requiresGlobalNameQualificationOnType = requiresGlobalNameQualificationOnType_copy; 
   70803             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   70804             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   70805             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   70806           0 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   70807           0 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   70808             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   70809             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   70810             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   70811           0 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   70812           0 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   70813             :   // Copy non-constructor parameter data member (access function): gnu_extension_initialization_priority_copy
   70814             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_initialization_priority
   70815             :   // case: toBeCopied == COPY_DATA for gnu_extension_initialization_priority
   70816           0 :      unsigned short gnu_extension_initialization_priority_copy = p_gnu_extension_initialization_priority; 
   70817           0 :      result->p_gnu_extension_initialization_priority = gnu_extension_initialization_priority_copy; 
   70818             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   70819             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   70820             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   70821           0 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   70822           0 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   70823             :   // Copy non-constructor parameter data member (access function): gnu_extension_declaration_attribute_copy
   70824             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_declaration_attribute
   70825             :   // case: toBeCopied == COPY_DATA for gnu_extension_declaration_attribute
   70826           0 :      SgVariableDeclaration::gnu_extension_declaration_attributes_enum gnu_extension_declaration_attribute_copy = p_gnu_extension_declaration_attribute; 
   70827           0 :      result->p_gnu_extension_declaration_attribute = gnu_extension_declaration_attribute_copy; 
   70828             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   70829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   70830             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   70831           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   70832           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   70833             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   70834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   70835             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   70836           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   70837           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   70838             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   70839             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   70840             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   70841           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   70842           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   70843             :   // Copy non-constructor parameter data member (access function): isAssociatedWithDeclarationList_copy
   70844             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAssociatedWithDeclarationList
   70845             :   // case: toBeCopied == COPY_DATA for isAssociatedWithDeclarationList
   70846           0 :      bool isAssociatedWithDeclarationList_copy = p_isAssociatedWithDeclarationList; 
   70847           0 :      result->p_isAssociatedWithDeclarationList = isAssociatedWithDeclarationList_copy; 
   70848             :   // Copy non-constructor parameter data member (access function): isFirstDeclarationOfDeclarationList_copy
   70849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isFirstDeclarationOfDeclarationList
   70850             :   // case: toBeCopied == COPY_DATA for isFirstDeclarationOfDeclarationList
   70851           0 :      bool isFirstDeclarationOfDeclarationList_copy = p_isFirstDeclarationOfDeclarationList; 
   70852           0 :      result->p_isFirstDeclarationOfDeclarationList = isFirstDeclarationOfDeclarationList_copy; 
   70853             :   // Copy non-constructor parameter data member (access function): is_thread_local_copy
   70854             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_thread_local
   70855             :   // case: toBeCopied == COPY_DATA for is_thread_local
   70856           0 :      bool is_thread_local_copy = p_is_thread_local; 
   70857           0 :      result->p_is_thread_local = is_thread_local_copy; 
   70858             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   70859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   70860             :   // case: toBeCopied == COPY_DATA for is_constexpr
   70861           0 :      bool is_constexpr_copy = p_is_constexpr; 
   70862           0 :      result->p_is_constexpr = is_constexpr_copy; 
   70863             :   // Copy non-constructor parameter data member (access function): builtFromUseOnly_copy
   70864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for builtFromUseOnly
   70865             :   // case: toBeCopied == COPY_DATA for builtFromUseOnly
   70866           0 :      bool builtFromUseOnly_copy = p_builtFromUseOnly; 
   70867           0 :      result->p_builtFromUseOnly = builtFromUseOnly_copy; 
   70868             :   // Copy non-constructor parameter data member (list access function): result->get_templateParameters()
   70869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateParameters
   70870             :   // case: toBeCopied == COPY_DATA for templateParameters
   70871           0 :      SgTemplateParameterPtrList templateParameters_copy = p_templateParameters; 
   70872           0 :      result->p_templateParameters = templateParameters_copy; 
   70873             :   // Copy non-constructor parameter data member (list access function): result->get_templateSpecializationArguments()
   70874             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateSpecializationArguments
   70875             :   // case: toBeCopied == COPY_DATA for templateSpecializationArguments
   70876           0 :      SgTemplateArgumentPtrList templateSpecializationArguments_copy = p_templateSpecializationArguments; 
   70877           0 :      result->p_templateSpecializationArguments = templateSpecializationArguments_copy; 
   70878             :   // Copy non-constructor parameter data member (access function): string_copy
   70879             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string
   70880             :   // case: toBeCopied == COPY_DATA for string
   70881           0 :      SgName string_copy = p_string; 
   70882           0 :      result->p_string = string_copy; 
   70883             :   // Copy non-constructor parameter data member (access function): nonreal_decl_scope_copy
   70884             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nonreal_decl_scope
   70885             :   // case: toBeCopied == COPY_DATA for nonreal_decl_scope
   70886           0 :      SgDeclarationScope* nonreal_decl_scope_copy = p_nonreal_decl_scope; 
   70887           0 :      result->p_nonreal_decl_scope = nonreal_decl_scope_copy; 
   70888             : 
   70889             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   70890             : 
   70891             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   70892             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   70893             :   // fixupCopy(result,help);
   70894             : 
   70895             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   70896             :   // the Sg_File_Info objects that are built for the new IR nodes.
   70897           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   70898           0 :      if (locatedNode != NULL)
   70899             :         {
   70900             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   70901           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   70902           0 :           ROSE_ASSERT(start != NULL);
   70903             : #if 0
   70904             :        // Debugging information
   70905             :           if (start->get_parent() == NULL)
   70906             :              {
   70907             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70908             :              }
   70909             : #endif
   70910           0 :           start->set_parent(locatedNode);
   70911           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   70912             : 
   70913           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   70914             : 
   70915             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   70916             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   70917             :        // ROSE_ASSERT(end != NULL);
   70918           0 :           if (end == NULL)
   70919             :              {
   70920           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   70921             :              }
   70922             :             else
   70923             :              {
   70924             : #if 0
   70925             :             // Debugging information
   70926             :                if (end->get_parent() == NULL)
   70927             :                   {
   70928             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70929             :                   }
   70930             : #endif
   70931           0 :                end->set_parent(locatedNode);
   70932           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   70933             :              }
   70934             : 
   70935           0 :           SgExpression* expression = isSgExpression(result);
   70936           0 :           if (isSgExpression(this) != NULL)
   70937             :              {
   70938           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   70939             : 
   70940             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   70941           0 :                if (operatorPosition != NULL)
   70942             :                   {
   70943             : #if 0
   70944             :                  // Debugging information
   70945             :                     if (operatorPosition->get_parent() == NULL)
   70946             :                        {
   70947             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70948             :                        }
   70949             : #endif
   70950           0 :                     operatorPosition->set_parent(expression);
   70951           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   70952             :                   }
   70953             :              }
   70954             :         }
   70955             : 
   70956             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   70957           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   70958           0 :      if (initializedName != NULL)
   70959             :         {
   70960             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   70961           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   70962           0 :           ROSE_ASSERT(start != NULL);
   70963             : #if 0
   70964             :        // Debugging information
   70965             :           if (start->get_parent() == NULL)
   70966             :              {
   70967             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70968             :              }
   70969             : #endif
   70970           0 :           start->set_parent(initializedName);
   70971           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   70972             : 
   70973             : #if 0
   70974             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   70975             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   70976             : 
   70977             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   70978             :        // ROSE_ASSERT(end != NULL);
   70979             :           if (end == NULL)
   70980             :              {
   70981             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   70982             :              }
   70983             :             else
   70984             :              {
   70985             :                if (end->get_parent() == NULL)
   70986             :                   {
   70987             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   70988             :                   }
   70989             :                end->set_parent(initializedName);
   70990             :                ROSE_ASSERT(end->get_parent() != NULL);
   70991             :              }
   70992             : #endif
   70993             :         }
   70994             : 
   70995             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   70996           0 :      help.insertCopiedNodePair(this,result);
   70997             : 
   70998             :   // printf ("End of copy SgTemplateVariableDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   70999             : 
   71000             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   71001             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   71002           0 :      help.decrementDepth();
   71003             : 
   71004             :   // Test if this is the root of the copy!
   71005           0 :      if (help.get_depth() == 0)
   71006             :         {
   71007             :        // This is the original calling node.
   71008             : 
   71009             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   71010             :        // printf ("Calling SgTemplateVariableDeclaration::fixupCopy() (from root of AST being copied) \n");
   71011             : #if ALT_FIXUP_COPY
   71012             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   71013           0 :           fixupCopy_scopes (result,help);
   71014           0 :           fixupCopy_symbols (result,help);
   71015           0 :           fixupCopy_references (result,help);
   71016             : #else
   71017             :           fixupCopy(result,help);
   71018             : #endif
   71019             :        // Allow this to be called recursively, so accumulate the state.
   71020             :        // Also, clear the state in the SgCopyHelp object.
   71021             :        // help.clearState();
   71022             :         }
   71023             : 
   71024           0 :      return result;
   71025             :    }
   71026             : 
   71027             : 
   71028             : /* #line 71029 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   71029             : 
   71030             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   71031             : 
   71032           0 : SgNode* SgVariableDefinition::copy ( SgCopyHelp& help) const
   71033             :    {
   71034           0 :      SgVariableDefinition* result = NULL;
   71035             : 
   71036             :   // printf ("Copy SgVariableDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   71037             : 
   71038             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   71039             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   71040             :   // The default value of the depth is 0, so after this call the depth is 1!
   71041           0 :      help.incrementDepth();
   71042             : 
   71043             : #if 0
   71044             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   71045             :   // but it is not generally true that things can only be copied once!
   71046             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   71047             :   // AstAttribute* existingAttribute = const_cast<SgVariableDefinition*>(this)->attribute["copied"];
   71048             :      bool previouslyCopied = const_cast<SgVariableDefinition*>(this)->attribute.exists("copied");
   71049             :      if (previouslyCopied == true)
   71050             :         {
   71051             :           this->get_file_info()->display("Called from copy SgVariableDefinition: debug");
   71052             :         }
   71053             :      ROSE_ASSERT(previouslyCopied == false);
   71054             : 
   71055             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   71056             :      AstAttribute* newAttribute = new AstAttribute();
   71057             :      ROSE_ASSERT(newAttribute != NULL);
   71058             : 
   71059             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   71060             :      const_cast<SgVariableDefinition*>(this)->attribute.add("copied",newAttribute);
   71061             : #endif
   71062             : 
   71063             :   // Copy data members from base classes
   71064             :   // Copy constructor parameter data member: startOfConstruct_copy
   71065             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   71066             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   71067           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   71068           0 :      if ( p_startOfConstruct != NULL ) 
   71069             :         { 
   71070           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   71071             :         } 
   71072             :        else 
   71073             :         { 
   71074             :           startOfConstruct_copy = NULL; 
   71075             :         } 
   71076             :   // Copy constructor parameter data member: vardefn_copy
   71077           0 :      SgInitializedName* vardefn_copy; 
   71078             :   // case: not a listType for (using conditionalToCopyVariable)vardefn
   71079           0 :           if (get_vardefn() != NULL) 
   71080             :              { 
   71081           0 :                vardefn_copy = static_cast<SgInitializedName*>(help.copyAst(get_vardefn())); 
   71082             :              } 
   71083             :             else 
   71084             :              { 
   71085             :                vardefn_copy = NULL; 
   71086             :              } 
   71087             :   // Copy constructor parameter data member: bitfield_copy
   71088           0 :      SgExpression* bitfield_copy; 
   71089             :   // case: not a listType for (using conditionalToCopyVariable)bitfield
   71090           0 :           if (get_bitfield() != NULL) 
   71091             :              { 
   71092           0 :                bitfield_copy = static_cast<SgExpression*>(help.copyAst(get_bitfield())); 
   71093             :              } 
   71094             :             else 
   71095             :              { 
   71096             :                bitfield_copy = NULL; 
   71097             :              } 
   71098             :  
   71099             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   71100             : 
   71101             :   // Build an empty copy of this object (will be filled in, but 
   71102             :   // the parent can't be set and must be set by the caller)
   71103           0 :      result = new SgVariableDefinition(  startOfConstruct_copy, vardefn_copy, bitfield_copy );
   71104           0 :      ROSE_ASSERT(result != NULL);
   71105             : 
   71106             :   // Copy data members of "this" class
   71107             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   71108             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   71109             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   71110           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   71111           0 :      if ( p_endOfConstruct != NULL ) 
   71112             :         { 
   71113           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   71114             :         } 
   71115             :        else 
   71116             :         { 
   71117             :           endOfConstruct_copy = NULL; 
   71118             :         } 
   71119             :   /* check for a valid pointer and delete if present */ 
   71120           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   71121             :   /* add assignment to result here */ 
   71122           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   71123             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   71124             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   71125             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   71126           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   71127           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   71128             :         { 
   71129           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   71130             :         } 
   71131             :        else 
   71132             :         { 
   71133             :           attachedPreprocessingInfoPtr_copy = NULL; 
   71134             :         } 
   71135             :   /* check for a valid pointer and delete if present */ 
   71136           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   71137             :   /* add assignment to result here */ 
   71138           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   71139             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   71140             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   71141             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   71142           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   71143           0 :      if ( p_attributeMechanism != NULL ) 
   71144             :         { 
   71145           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   71146             :         } 
   71147             :        else 
   71148             :         { 
   71149             :           attributeMechanism_copy = NULL; 
   71150             :         } 
   71151             :   /* check for a valid pointer and delete if present */ 
   71152           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   71153             :   /* add assignment to result here */ 
   71154           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   71155             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   71156             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   71157             :   // case: toBeCopied == COPY_DATA for numeric_label
   71158           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   71159           0 :      result->p_numeric_label = numeric_label_copy; 
   71160             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   71161             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   71162             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   71163           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   71164           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   71165             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   71166             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   71167             :   // case: toBeCopied == COPY_DATA for decl_attributes
   71168           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   71169           0 :      result->p_decl_attributes = decl_attributes_copy; 
   71170             :   // Copy non-constructor parameter data member (access function): linkage_copy
   71171             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   71172             :   // case: toBeCopied == COPY_DATA for linkage
   71173           0 :      std::string linkage_copy = p_linkage; 
   71174           0 :      result->p_linkage = linkage_copy; 
   71175             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   71176             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   71177             :   // case: toBeCopied == COPY_DATA for declarationModifier
   71178           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   71179           0 :      result->p_declarationModifier = declarationModifier_copy; 
   71180             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   71181             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   71182             :   // case: toBeCopied == COPY_DATA for nameOnly
   71183           0 :      bool nameOnly_copy = p_nameOnly; 
   71184           0 :      result->p_nameOnly = nameOnly_copy; 
   71185             :   // Copy non-constructor parameter data member (access function): forward_copy
   71186             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   71187             :   // case: toBeCopied == COPY_DATA for forward
   71188           0 :      bool forward_copy = p_forward; 
   71189           0 :      result->p_forward = forward_copy; 
   71190             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   71191             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   71192             :   // case: toBeCopied == COPY_DATA for externBrace
   71193           0 :      bool externBrace_copy = p_externBrace; 
   71194           0 :      result->p_externBrace = externBrace_copy; 
   71195             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   71196             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   71197             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   71198           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   71199           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   71200             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   71201             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   71202             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   71203           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   71204           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   71205             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   71206             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   71207             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   71208           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   71209           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   71210             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   71211             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   71212             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   71213           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   71214           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   71215             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   71216             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   71217             :   // case: toBeCopied == COPY_DATA for binding_label
   71218           0 :      std::string binding_label_copy = p_binding_label; 
   71219           0 :      result->p_binding_label = binding_label_copy; 
   71220             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   71221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   71222             :   // case: toBeCopied == COPY_DATA for declarationScope
   71223           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   71224           0 :      result->p_declarationScope = declarationScope_copy; 
   71225             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   71226             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   71227             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   71228           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   71229           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   71230             :   // case: not a listType for (using conditionalToSetParent)vardefn
   71231           0 :           if ( (vardefn_copy != NULL) && (vardefn_copy->get_parent() == NULL) && (isSgType(vardefn_copy) == NULL) ) 
   71232             :              { 
   71233           0 :                vardefn_copy->set_parent(result); 
   71234             :              } 
   71235             :   // case: not a listType for (using conditionalToSetParent)bitfield
   71236           0 :           if ( (bitfield_copy != NULL) && (bitfield_copy->get_parent() == NULL) && (isSgType(bitfield_copy) == NULL) ) 
   71237             :              { 
   71238           0 :                bitfield_copy->set_parent(result); 
   71239             :              } 
   71240             : 
   71241             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   71242             : 
   71243             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   71244             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   71245             :   // fixupCopy(result,help);
   71246             : 
   71247             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   71248             :   // the Sg_File_Info objects that are built for the new IR nodes.
   71249           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   71250           0 :      if (locatedNode != NULL)
   71251             :         {
   71252             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   71253           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   71254           0 :           ROSE_ASSERT(start != NULL);
   71255             : #if 0
   71256             :        // Debugging information
   71257             :           if (start->get_parent() == NULL)
   71258             :              {
   71259             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71260             :              }
   71261             : #endif
   71262           0 :           start->set_parent(locatedNode);
   71263           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   71264             : 
   71265           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   71266             : 
   71267             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   71268             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   71269             :        // ROSE_ASSERT(end != NULL);
   71270           0 :           if (end == NULL)
   71271             :              {
   71272           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   71273             :              }
   71274             :             else
   71275             :              {
   71276             : #if 0
   71277             :             // Debugging information
   71278             :                if (end->get_parent() == NULL)
   71279             :                   {
   71280             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71281             :                   }
   71282             : #endif
   71283           0 :                end->set_parent(locatedNode);
   71284           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   71285             :              }
   71286             : 
   71287           0 :           SgExpression* expression = isSgExpression(result);
   71288           0 :           if (isSgExpression(this) != NULL)
   71289             :              {
   71290           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   71291             : 
   71292             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   71293           0 :                if (operatorPosition != NULL)
   71294             :                   {
   71295             : #if 0
   71296             :                  // Debugging information
   71297             :                     if (operatorPosition->get_parent() == NULL)
   71298             :                        {
   71299             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71300             :                        }
   71301             : #endif
   71302           0 :                     operatorPosition->set_parent(expression);
   71303           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   71304             :                   }
   71305             :              }
   71306             :         }
   71307             : 
   71308             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   71309           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   71310           0 :      if (initializedName != NULL)
   71311             :         {
   71312             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   71313           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   71314           0 :           ROSE_ASSERT(start != NULL);
   71315             : #if 0
   71316             :        // Debugging information
   71317             :           if (start->get_parent() == NULL)
   71318             :              {
   71319             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71320             :              }
   71321             : #endif
   71322           0 :           start->set_parent(initializedName);
   71323           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   71324             : 
   71325             : #if 0
   71326             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   71327             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   71328             : 
   71329             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   71330             :        // ROSE_ASSERT(end != NULL);
   71331             :           if (end == NULL)
   71332             :              {
   71333             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   71334             :              }
   71335             :             else
   71336             :              {
   71337             :                if (end->get_parent() == NULL)
   71338             :                   {
   71339             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71340             :                   }
   71341             :                end->set_parent(initializedName);
   71342             :                ROSE_ASSERT(end->get_parent() != NULL);
   71343             :              }
   71344             : #endif
   71345             :         }
   71346             : 
   71347             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   71348           0 :      help.insertCopiedNodePair(this,result);
   71349             : 
   71350             :   // printf ("End of copy SgVariableDefinition = %p = %s \n",this,SageInterface::get_name(this).c_str());
   71351             : 
   71352             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   71353             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   71354           0 :      help.decrementDepth();
   71355             : 
   71356             :   // Test if this is the root of the copy!
   71357           0 :      if (help.get_depth() == 0)
   71358             :         {
   71359             :        // This is the original calling node.
   71360             : 
   71361             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   71362             :        // printf ("Calling SgVariableDefinition::fixupCopy() (from root of AST being copied) \n");
   71363             : #if ALT_FIXUP_COPY
   71364             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   71365           0 :           fixupCopy_scopes (result,help);
   71366           0 :           fixupCopy_symbols (result,help);
   71367           0 :           fixupCopy_references (result,help);
   71368             : #else
   71369             :           fixupCopy(result,help);
   71370             : #endif
   71371             :        // Allow this to be called recursively, so accumulate the state.
   71372             :        // Also, clear the state in the SgCopyHelp object.
   71373             :        // help.clearState();
   71374             :         }
   71375             : 
   71376           0 :      return result;
   71377             :    }
   71378             : 
   71379             : 
   71380             : /* #line 71381 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   71381             : 
   71382             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   71383             : 
   71384           0 : SgNode* SgClinkageDeclarationStatement::copy ( SgCopyHelp& help) const
   71385             :    {
   71386           0 :      SgClinkageDeclarationStatement* result = NULL;
   71387             : 
   71388             :   // printf ("Copy SgClinkageDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   71389             : 
   71390             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   71391             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   71392             :   // The default value of the depth is 0, so after this call the depth is 1!
   71393           0 :      help.incrementDepth();
   71394             : 
   71395             : #if 0
   71396             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   71397             :   // but it is not generally true that things can only be copied once!
   71398             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   71399             :   // AstAttribute* existingAttribute = const_cast<SgClinkageDeclarationStatement*>(this)->attribute["copied"];
   71400             :      bool previouslyCopied = const_cast<SgClinkageDeclarationStatement*>(this)->attribute.exists("copied");
   71401             :      if (previouslyCopied == true)
   71402             :         {
   71403             :           this->get_file_info()->display("Called from copy SgClinkageDeclarationStatement: debug");
   71404             :         }
   71405             :      ROSE_ASSERT(previouslyCopied == false);
   71406             : 
   71407             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   71408             :      AstAttribute* newAttribute = new AstAttribute();
   71409             :      ROSE_ASSERT(newAttribute != NULL);
   71410             : 
   71411             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   71412             :      const_cast<SgClinkageDeclarationStatement*>(this)->attribute.add("copied",newAttribute);
   71413             : #endif
   71414             : 
   71415             :   // Copy data members from base classes
   71416             :   // Copy constructor parameter data member: startOfConstruct_copy
   71417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   71418             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   71419           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   71420           0 :      if ( p_startOfConstruct != NULL ) 
   71421             :         { 
   71422           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   71423             :         } 
   71424             :        else 
   71425             :         { 
   71426             :           startOfConstruct_copy = NULL; 
   71427             :         } 
   71428             :  
   71429             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   71430             : 
   71431             :   // Build an empty copy of this object (will be filled in, but 
   71432             :   // the parent can't be set and must be set by the caller)
   71433           0 :      result = new SgClinkageDeclarationStatement(  startOfConstruct_copy );
   71434           0 :      ROSE_ASSERT(result != NULL);
   71435             : 
   71436             :   // Copy data members of "this" class
   71437             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   71438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   71439             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   71440           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   71441           0 :      if ( p_endOfConstruct != NULL ) 
   71442             :         { 
   71443           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   71444             :         } 
   71445             :        else 
   71446             :         { 
   71447             :           endOfConstruct_copy = NULL; 
   71448             :         } 
   71449             :   /* check for a valid pointer and delete if present */ 
   71450           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   71451             :   /* add assignment to result here */ 
   71452           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   71453             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   71454             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   71455             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   71456           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   71457           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   71458             :         { 
   71459           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   71460             :         } 
   71461             :        else 
   71462             :         { 
   71463             :           attachedPreprocessingInfoPtr_copy = NULL; 
   71464             :         } 
   71465             :   /* check for a valid pointer and delete if present */ 
   71466           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   71467             :   /* add assignment to result here */ 
   71468           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   71469             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   71470             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   71471             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   71472           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   71473           0 :      if ( p_attributeMechanism != NULL ) 
   71474             :         { 
   71475           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   71476             :         } 
   71477             :        else 
   71478             :         { 
   71479             :           attributeMechanism_copy = NULL; 
   71480             :         } 
   71481             :   /* check for a valid pointer and delete if present */ 
   71482           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   71483             :   /* add assignment to result here */ 
   71484           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   71485             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   71486             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   71487             :   // case: toBeCopied == COPY_DATA for numeric_label
   71488           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   71489           0 :      result->p_numeric_label = numeric_label_copy; 
   71490             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   71491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   71492             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   71493           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   71494           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   71495             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   71496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   71497             :   // case: toBeCopied == COPY_DATA for decl_attributes
   71498           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   71499           0 :      result->p_decl_attributes = decl_attributes_copy; 
   71500             :   // Copy non-constructor parameter data member (access function): linkage_copy
   71501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   71502             :   // case: toBeCopied == COPY_DATA for linkage
   71503           0 :      std::string linkage_copy = p_linkage; 
   71504           0 :      result->p_linkage = linkage_copy; 
   71505             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   71506             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   71507             :   // case: toBeCopied == COPY_DATA for declarationModifier
   71508           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   71509           0 :      result->p_declarationModifier = declarationModifier_copy; 
   71510             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   71511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   71512             :   // case: toBeCopied == COPY_DATA for nameOnly
   71513           0 :      bool nameOnly_copy = p_nameOnly; 
   71514           0 :      result->p_nameOnly = nameOnly_copy; 
   71515             :   // Copy non-constructor parameter data member (access function): forward_copy
   71516             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   71517             :   // case: toBeCopied == COPY_DATA for forward
   71518           0 :      bool forward_copy = p_forward; 
   71519           0 :      result->p_forward = forward_copy; 
   71520             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   71521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   71522             :   // case: toBeCopied == COPY_DATA for externBrace
   71523           0 :      bool externBrace_copy = p_externBrace; 
   71524           0 :      result->p_externBrace = externBrace_copy; 
   71525             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   71526             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   71527             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   71528           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   71529           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   71530             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   71531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   71532             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   71533           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   71534           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   71535             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   71536             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   71537             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   71538           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   71539           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   71540             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   71541             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   71542             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   71543           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   71544           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   71545             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   71546             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   71547             :   // case: toBeCopied == COPY_DATA for binding_label
   71548           0 :      std::string binding_label_copy = p_binding_label; 
   71549           0 :      result->p_binding_label = binding_label_copy; 
   71550             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   71551             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   71552             :   // case: toBeCopied == COPY_DATA for declarationScope
   71553           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   71554           0 :      result->p_declarationScope = declarationScope_copy; 
   71555             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   71556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   71557             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   71558           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   71559           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   71560             :   // Copy non-constructor parameter data member (no access function): result->p_languageSpecifier
   71561             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for languageSpecifier
   71562             :   // case: toBeCopied == COPY_DATA for languageSpecifier
   71563           0 :      std::string languageSpecifier_copy = p_languageSpecifier; 
   71564           0 :      result->p_languageSpecifier = languageSpecifier_copy; 
   71565             : 
   71566             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   71567             : 
   71568             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   71569             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   71570             :   // fixupCopy(result,help);
   71571             : 
   71572             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   71573             :   // the Sg_File_Info objects that are built for the new IR nodes.
   71574           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   71575           0 :      if (locatedNode != NULL)
   71576             :         {
   71577             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   71578           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   71579           0 :           ROSE_ASSERT(start != NULL);
   71580             : #if 0
   71581             :        // Debugging information
   71582             :           if (start->get_parent() == NULL)
   71583             :              {
   71584             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71585             :              }
   71586             : #endif
   71587           0 :           start->set_parent(locatedNode);
   71588           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   71589             : 
   71590           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   71591             : 
   71592             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   71593             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   71594             :        // ROSE_ASSERT(end != NULL);
   71595           0 :           if (end == NULL)
   71596             :              {
   71597           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   71598             :              }
   71599             :             else
   71600             :              {
   71601             : #if 0
   71602             :             // Debugging information
   71603             :                if (end->get_parent() == NULL)
   71604             :                   {
   71605             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71606             :                   }
   71607             : #endif
   71608           0 :                end->set_parent(locatedNode);
   71609           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   71610             :              }
   71611             : 
   71612           0 :           SgExpression* expression = isSgExpression(result);
   71613           0 :           if (isSgExpression(this) != NULL)
   71614             :              {
   71615           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   71616             : 
   71617             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   71618           0 :                if (operatorPosition != NULL)
   71619             :                   {
   71620             : #if 0
   71621             :                  // Debugging information
   71622             :                     if (operatorPosition->get_parent() == NULL)
   71623             :                        {
   71624             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71625             :                        }
   71626             : #endif
   71627           0 :                     operatorPosition->set_parent(expression);
   71628           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   71629             :                   }
   71630             :              }
   71631             :         }
   71632             : 
   71633             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   71634           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   71635           0 :      if (initializedName != NULL)
   71636             :         {
   71637             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   71638           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   71639           0 :           ROSE_ASSERT(start != NULL);
   71640             : #if 0
   71641             :        // Debugging information
   71642             :           if (start->get_parent() == NULL)
   71643             :              {
   71644             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71645             :              }
   71646             : #endif
   71647           0 :           start->set_parent(initializedName);
   71648           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   71649             : 
   71650             : #if 0
   71651             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   71652             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   71653             : 
   71654             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   71655             :        // ROSE_ASSERT(end != NULL);
   71656             :           if (end == NULL)
   71657             :              {
   71658             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   71659             :              }
   71660             :             else
   71661             :              {
   71662             :                if (end->get_parent() == NULL)
   71663             :                   {
   71664             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71665             :                   }
   71666             :                end->set_parent(initializedName);
   71667             :                ROSE_ASSERT(end->get_parent() != NULL);
   71668             :              }
   71669             : #endif
   71670             :         }
   71671             : 
   71672             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   71673           0 :      help.insertCopiedNodePair(this,result);
   71674             : 
   71675             :   // printf ("End of copy SgClinkageDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   71676             : 
   71677             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   71678             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   71679           0 :      help.decrementDepth();
   71680             : 
   71681             :   // Test if this is the root of the copy!
   71682           0 :      if (help.get_depth() == 0)
   71683             :         {
   71684             :        // This is the original calling node.
   71685             : 
   71686             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   71687             :        // printf ("Calling SgClinkageDeclarationStatement::fixupCopy() (from root of AST being copied) \n");
   71688             : #if ALT_FIXUP_COPY
   71689             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   71690           0 :           fixupCopy_scopes (result,help);
   71691           0 :           fixupCopy_symbols (result,help);
   71692           0 :           fixupCopy_references (result,help);
   71693             : #else
   71694             :           fixupCopy(result,help);
   71695             : #endif
   71696             :        // Allow this to be called recursively, so accumulate the state.
   71697             :        // Also, clear the state in the SgCopyHelp object.
   71698             :        // help.clearState();
   71699             :         }
   71700             : 
   71701           0 :      return result;
   71702             :    }
   71703             : 
   71704             : 
   71705             : /* #line 71706 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   71706             : 
   71707             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   71708             : 
   71709           0 : SgNode* SgClinkageStartStatement::copy ( SgCopyHelp& help) const
   71710             :    {
   71711           0 :      SgClinkageStartStatement* result = NULL;
   71712             : 
   71713             :   // printf ("Copy SgClinkageStartStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   71714             : 
   71715             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   71716             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   71717             :   // The default value of the depth is 0, so after this call the depth is 1!
   71718           0 :      help.incrementDepth();
   71719             : 
   71720             : #if 0
   71721             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   71722             :   // but it is not generally true that things can only be copied once!
   71723             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   71724             :   // AstAttribute* existingAttribute = const_cast<SgClinkageStartStatement*>(this)->attribute["copied"];
   71725             :      bool previouslyCopied = const_cast<SgClinkageStartStatement*>(this)->attribute.exists("copied");
   71726             :      if (previouslyCopied == true)
   71727             :         {
   71728             :           this->get_file_info()->display("Called from copy SgClinkageStartStatement: debug");
   71729             :         }
   71730             :      ROSE_ASSERT(previouslyCopied == false);
   71731             : 
   71732             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   71733             :      AstAttribute* newAttribute = new AstAttribute();
   71734             :      ROSE_ASSERT(newAttribute != NULL);
   71735             : 
   71736             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   71737             :      const_cast<SgClinkageStartStatement*>(this)->attribute.add("copied",newAttribute);
   71738             : #endif
   71739             : 
   71740             :   // Copy data members from base classes
   71741             :   // Copy constructor parameter data member: startOfConstruct_copy
   71742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   71743             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   71744           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   71745           0 :      if ( p_startOfConstruct != NULL ) 
   71746             :         { 
   71747           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   71748             :         } 
   71749             :        else 
   71750             :         { 
   71751             :           startOfConstruct_copy = NULL; 
   71752             :         } 
   71753             :  
   71754             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   71755             : 
   71756             :   // Build an empty copy of this object (will be filled in, but 
   71757             :   // the parent can't be set and must be set by the caller)
   71758           0 :      result = new SgClinkageStartStatement(  startOfConstruct_copy );
   71759           0 :      ROSE_ASSERT(result != NULL);
   71760             : 
   71761             :   // Copy data members of "this" class
   71762             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   71763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   71764             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   71765           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   71766           0 :      if ( p_endOfConstruct != NULL ) 
   71767             :         { 
   71768           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   71769             :         } 
   71770             :        else 
   71771             :         { 
   71772             :           endOfConstruct_copy = NULL; 
   71773             :         } 
   71774             :   /* check for a valid pointer and delete if present */ 
   71775           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   71776             :   /* add assignment to result here */ 
   71777           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   71778             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   71779             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   71780             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   71781           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   71782           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   71783             :         { 
   71784           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   71785             :         } 
   71786             :        else 
   71787             :         { 
   71788             :           attachedPreprocessingInfoPtr_copy = NULL; 
   71789             :         } 
   71790             :   /* check for a valid pointer and delete if present */ 
   71791           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   71792             :   /* add assignment to result here */ 
   71793           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   71794             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   71795             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   71796             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   71797           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   71798           0 :      if ( p_attributeMechanism != NULL ) 
   71799             :         { 
   71800           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   71801             :         } 
   71802             :        else 
   71803             :         { 
   71804             :           attributeMechanism_copy = NULL; 
   71805             :         } 
   71806             :   /* check for a valid pointer and delete if present */ 
   71807           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   71808             :   /* add assignment to result here */ 
   71809           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   71810             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   71811             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   71812             :   // case: toBeCopied == COPY_DATA for numeric_label
   71813           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   71814           0 :      result->p_numeric_label = numeric_label_copy; 
   71815             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   71816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   71817             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   71818           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   71819           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   71820             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   71821             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   71822             :   // case: toBeCopied == COPY_DATA for decl_attributes
   71823           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   71824           0 :      result->p_decl_attributes = decl_attributes_copy; 
   71825             :   // Copy non-constructor parameter data member (access function): linkage_copy
   71826             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   71827             :   // case: toBeCopied == COPY_DATA for linkage
   71828           0 :      std::string linkage_copy = p_linkage; 
   71829           0 :      result->p_linkage = linkage_copy; 
   71830             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   71831             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   71832             :   // case: toBeCopied == COPY_DATA for declarationModifier
   71833           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   71834           0 :      result->p_declarationModifier = declarationModifier_copy; 
   71835             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   71836             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   71837             :   // case: toBeCopied == COPY_DATA for nameOnly
   71838           0 :      bool nameOnly_copy = p_nameOnly; 
   71839           0 :      result->p_nameOnly = nameOnly_copy; 
   71840             :   // Copy non-constructor parameter data member (access function): forward_copy
   71841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   71842             :   // case: toBeCopied == COPY_DATA for forward
   71843           0 :      bool forward_copy = p_forward; 
   71844           0 :      result->p_forward = forward_copy; 
   71845             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   71846             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   71847             :   // case: toBeCopied == COPY_DATA for externBrace
   71848           0 :      bool externBrace_copy = p_externBrace; 
   71849           0 :      result->p_externBrace = externBrace_copy; 
   71850             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   71851             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   71852             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   71853           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   71854           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   71855             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   71856             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   71857             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   71858           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   71859           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   71860             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   71861             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   71862             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   71863           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   71864           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   71865             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   71866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   71867             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   71868           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   71869           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   71870             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   71871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   71872             :   // case: toBeCopied == COPY_DATA for binding_label
   71873           0 :      std::string binding_label_copy = p_binding_label; 
   71874           0 :      result->p_binding_label = binding_label_copy; 
   71875             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   71876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   71877             :   // case: toBeCopied == COPY_DATA for declarationScope
   71878           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   71879           0 :      result->p_declarationScope = declarationScope_copy; 
   71880             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   71881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   71882             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   71883           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   71884           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   71885             :   // Copy non-constructor parameter data member (no access function): result->p_languageSpecifier
   71886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for languageSpecifier
   71887             :   // case: toBeCopied == COPY_DATA for languageSpecifier
   71888           0 :      std::string languageSpecifier_copy = p_languageSpecifier; 
   71889           0 :      result->p_languageSpecifier = languageSpecifier_copy; 
   71890             : 
   71891             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   71892             : 
   71893             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   71894             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   71895             :   // fixupCopy(result,help);
   71896             : 
   71897             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   71898             :   // the Sg_File_Info objects that are built for the new IR nodes.
   71899           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   71900           0 :      if (locatedNode != NULL)
   71901             :         {
   71902             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   71903           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   71904           0 :           ROSE_ASSERT(start != NULL);
   71905             : #if 0
   71906             :        // Debugging information
   71907             :           if (start->get_parent() == NULL)
   71908             :              {
   71909             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71910             :              }
   71911             : #endif
   71912           0 :           start->set_parent(locatedNode);
   71913           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   71914             : 
   71915           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   71916             : 
   71917             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   71918             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   71919             :        // ROSE_ASSERT(end != NULL);
   71920           0 :           if (end == NULL)
   71921             :              {
   71922           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   71923             :              }
   71924             :             else
   71925             :              {
   71926             : #if 0
   71927             :             // Debugging information
   71928             :                if (end->get_parent() == NULL)
   71929             :                   {
   71930             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71931             :                   }
   71932             : #endif
   71933           0 :                end->set_parent(locatedNode);
   71934           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   71935             :              }
   71936             : 
   71937           0 :           SgExpression* expression = isSgExpression(result);
   71938           0 :           if (isSgExpression(this) != NULL)
   71939             :              {
   71940           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   71941             : 
   71942             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   71943           0 :                if (operatorPosition != NULL)
   71944             :                   {
   71945             : #if 0
   71946             :                  // Debugging information
   71947             :                     if (operatorPosition->get_parent() == NULL)
   71948             :                        {
   71949             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71950             :                        }
   71951             : #endif
   71952           0 :                     operatorPosition->set_parent(expression);
   71953           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   71954             :                   }
   71955             :              }
   71956             :         }
   71957             : 
   71958             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   71959           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   71960           0 :      if (initializedName != NULL)
   71961             :         {
   71962             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   71963           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   71964           0 :           ROSE_ASSERT(start != NULL);
   71965             : #if 0
   71966             :        // Debugging information
   71967             :           if (start->get_parent() == NULL)
   71968             :              {
   71969             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71970             :              }
   71971             : #endif
   71972           0 :           start->set_parent(initializedName);
   71973           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   71974             : 
   71975             : #if 0
   71976             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   71977             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   71978             : 
   71979             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   71980             :        // ROSE_ASSERT(end != NULL);
   71981             :           if (end == NULL)
   71982             :              {
   71983             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   71984             :              }
   71985             :             else
   71986             :              {
   71987             :                if (end->get_parent() == NULL)
   71988             :                   {
   71989             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   71990             :                   }
   71991             :                end->set_parent(initializedName);
   71992             :                ROSE_ASSERT(end->get_parent() != NULL);
   71993             :              }
   71994             : #endif
   71995             :         }
   71996             : 
   71997             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   71998           0 :      help.insertCopiedNodePair(this,result);
   71999             : 
   72000             :   // printf ("End of copy SgClinkageStartStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   72001             : 
   72002             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   72003             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   72004           0 :      help.decrementDepth();
   72005             : 
   72006             :   // Test if this is the root of the copy!
   72007           0 :      if (help.get_depth() == 0)
   72008             :         {
   72009             :        // This is the original calling node.
   72010             : 
   72011             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   72012             :        // printf ("Calling SgClinkageStartStatement::fixupCopy() (from root of AST being copied) \n");
   72013             : #if ALT_FIXUP_COPY
   72014             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   72015           0 :           fixupCopy_scopes (result,help);
   72016           0 :           fixupCopy_symbols (result,help);
   72017           0 :           fixupCopy_references (result,help);
   72018             : #else
   72019             :           fixupCopy(result,help);
   72020             : #endif
   72021             :        // Allow this to be called recursively, so accumulate the state.
   72022             :        // Also, clear the state in the SgCopyHelp object.
   72023             :        // help.clearState();
   72024             :         }
   72025             : 
   72026           0 :      return result;
   72027             :    }
   72028             : 
   72029             : 
   72030             : /* #line 72031 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   72031             : 
   72032             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   72033             : 
   72034           0 : SgNode* SgClinkageEndStatement::copy ( SgCopyHelp& help) const
   72035             :    {
   72036           0 :      SgClinkageEndStatement* result = NULL;
   72037             : 
   72038             :   // printf ("Copy SgClinkageEndStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   72039             : 
   72040             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   72041             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   72042             :   // The default value of the depth is 0, so after this call the depth is 1!
   72043           0 :      help.incrementDepth();
   72044             : 
   72045             : #if 0
   72046             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   72047             :   // but it is not generally true that things can only be copied once!
   72048             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   72049             :   // AstAttribute* existingAttribute = const_cast<SgClinkageEndStatement*>(this)->attribute["copied"];
   72050             :      bool previouslyCopied = const_cast<SgClinkageEndStatement*>(this)->attribute.exists("copied");
   72051             :      if (previouslyCopied == true)
   72052             :         {
   72053             :           this->get_file_info()->display("Called from copy SgClinkageEndStatement: debug");
   72054             :         }
   72055             :      ROSE_ASSERT(previouslyCopied == false);
   72056             : 
   72057             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   72058             :      AstAttribute* newAttribute = new AstAttribute();
   72059             :      ROSE_ASSERT(newAttribute != NULL);
   72060             : 
   72061             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   72062             :      const_cast<SgClinkageEndStatement*>(this)->attribute.add("copied",newAttribute);
   72063             : #endif
   72064             : 
   72065             :   // Copy data members from base classes
   72066             :   // Copy constructor parameter data member: startOfConstruct_copy
   72067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   72068             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   72069           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   72070           0 :      if ( p_startOfConstruct != NULL ) 
   72071             :         { 
   72072           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   72073             :         } 
   72074             :        else 
   72075             :         { 
   72076             :           startOfConstruct_copy = NULL; 
   72077             :         } 
   72078             :  
   72079             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   72080             : 
   72081             :   // Build an empty copy of this object (will be filled in, but 
   72082             :   // the parent can't be set and must be set by the caller)
   72083           0 :      result = new SgClinkageEndStatement(  startOfConstruct_copy );
   72084           0 :      ROSE_ASSERT(result != NULL);
   72085             : 
   72086             :   // Copy data members of "this" class
   72087             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   72088             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   72089             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   72090           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   72091           0 :      if ( p_endOfConstruct != NULL ) 
   72092             :         { 
   72093           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   72094             :         } 
   72095             :        else 
   72096             :         { 
   72097             :           endOfConstruct_copy = NULL; 
   72098             :         } 
   72099             :   /* check for a valid pointer and delete if present */ 
   72100           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   72101             :   /* add assignment to result here */ 
   72102           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   72103             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   72104             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   72105             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   72106           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   72107           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   72108             :         { 
   72109           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   72110             :         } 
   72111             :        else 
   72112             :         { 
   72113             :           attachedPreprocessingInfoPtr_copy = NULL; 
   72114             :         } 
   72115             :   /* check for a valid pointer and delete if present */ 
   72116           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   72117             :   /* add assignment to result here */ 
   72118           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   72119             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   72120             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   72121             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   72122           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   72123           0 :      if ( p_attributeMechanism != NULL ) 
   72124             :         { 
   72125           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   72126             :         } 
   72127             :        else 
   72128             :         { 
   72129             :           attributeMechanism_copy = NULL; 
   72130             :         } 
   72131             :   /* check for a valid pointer and delete if present */ 
   72132           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   72133             :   /* add assignment to result here */ 
   72134           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   72135             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   72136             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   72137             :   // case: toBeCopied == COPY_DATA for numeric_label
   72138           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   72139           0 :      result->p_numeric_label = numeric_label_copy; 
   72140             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   72141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   72142             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   72143           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   72144           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   72145             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   72146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   72147             :   // case: toBeCopied == COPY_DATA for decl_attributes
   72148           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   72149           0 :      result->p_decl_attributes = decl_attributes_copy; 
   72150             :   // Copy non-constructor parameter data member (access function): linkage_copy
   72151             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   72152             :   // case: toBeCopied == COPY_DATA for linkage
   72153           0 :      std::string linkage_copy = p_linkage; 
   72154           0 :      result->p_linkage = linkage_copy; 
   72155             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   72156             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   72157             :   // case: toBeCopied == COPY_DATA for declarationModifier
   72158           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   72159           0 :      result->p_declarationModifier = declarationModifier_copy; 
   72160             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   72161             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   72162             :   // case: toBeCopied == COPY_DATA for nameOnly
   72163           0 :      bool nameOnly_copy = p_nameOnly; 
   72164           0 :      result->p_nameOnly = nameOnly_copy; 
   72165             :   // Copy non-constructor parameter data member (access function): forward_copy
   72166             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   72167             :   // case: toBeCopied == COPY_DATA for forward
   72168           0 :      bool forward_copy = p_forward; 
   72169           0 :      result->p_forward = forward_copy; 
   72170             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   72171             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   72172             :   // case: toBeCopied == COPY_DATA for externBrace
   72173           0 :      bool externBrace_copy = p_externBrace; 
   72174           0 :      result->p_externBrace = externBrace_copy; 
   72175             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   72176             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   72177             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   72178           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   72179           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   72180             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   72181             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   72182             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   72183           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   72184           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   72185             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   72186             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   72187             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   72188           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   72189           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   72190             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   72191             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   72192             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   72193           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   72194           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   72195             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   72196             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   72197             :   // case: toBeCopied == COPY_DATA for binding_label
   72198           0 :      std::string binding_label_copy = p_binding_label; 
   72199           0 :      result->p_binding_label = binding_label_copy; 
   72200             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   72201             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   72202             :   // case: toBeCopied == COPY_DATA for declarationScope
   72203           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   72204           0 :      result->p_declarationScope = declarationScope_copy; 
   72205             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   72206             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   72207             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   72208           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   72209           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   72210             :   // Copy non-constructor parameter data member (no access function): result->p_languageSpecifier
   72211             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for languageSpecifier
   72212             :   // case: toBeCopied == COPY_DATA for languageSpecifier
   72213           0 :      std::string languageSpecifier_copy = p_languageSpecifier; 
   72214           0 :      result->p_languageSpecifier = languageSpecifier_copy; 
   72215             : 
   72216             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   72217             : 
   72218             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   72219             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   72220             :   // fixupCopy(result,help);
   72221             : 
   72222             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   72223             :   // the Sg_File_Info objects that are built for the new IR nodes.
   72224           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   72225           0 :      if (locatedNode != NULL)
   72226             :         {
   72227             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   72228           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   72229           0 :           ROSE_ASSERT(start != NULL);
   72230             : #if 0
   72231             :        // Debugging information
   72232             :           if (start->get_parent() == NULL)
   72233             :              {
   72234             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72235             :              }
   72236             : #endif
   72237           0 :           start->set_parent(locatedNode);
   72238           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   72239             : 
   72240           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   72241             : 
   72242             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   72243             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   72244             :        // ROSE_ASSERT(end != NULL);
   72245           0 :           if (end == NULL)
   72246             :              {
   72247           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   72248             :              }
   72249             :             else
   72250             :              {
   72251             : #if 0
   72252             :             // Debugging information
   72253             :                if (end->get_parent() == NULL)
   72254             :                   {
   72255             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72256             :                   }
   72257             : #endif
   72258           0 :                end->set_parent(locatedNode);
   72259           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   72260             :              }
   72261             : 
   72262           0 :           SgExpression* expression = isSgExpression(result);
   72263           0 :           if (isSgExpression(this) != NULL)
   72264             :              {
   72265           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   72266             : 
   72267             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   72268           0 :                if (operatorPosition != NULL)
   72269             :                   {
   72270             : #if 0
   72271             :                  // Debugging information
   72272             :                     if (operatorPosition->get_parent() == NULL)
   72273             :                        {
   72274             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72275             :                        }
   72276             : #endif
   72277           0 :                     operatorPosition->set_parent(expression);
   72278           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   72279             :                   }
   72280             :              }
   72281             :         }
   72282             : 
   72283             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   72284           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   72285           0 :      if (initializedName != NULL)
   72286             :         {
   72287             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   72288           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   72289           0 :           ROSE_ASSERT(start != NULL);
   72290             : #if 0
   72291             :        // Debugging information
   72292             :           if (start->get_parent() == NULL)
   72293             :              {
   72294             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72295             :              }
   72296             : #endif
   72297           0 :           start->set_parent(initializedName);
   72298           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   72299             : 
   72300             : #if 0
   72301             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   72302             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   72303             : 
   72304             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   72305             :        // ROSE_ASSERT(end != NULL);
   72306             :           if (end == NULL)
   72307             :              {
   72308             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   72309             :              }
   72310             :             else
   72311             :              {
   72312             :                if (end->get_parent() == NULL)
   72313             :                   {
   72314             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72315             :                   }
   72316             :                end->set_parent(initializedName);
   72317             :                ROSE_ASSERT(end->get_parent() != NULL);
   72318             :              }
   72319             : #endif
   72320             :         }
   72321             : 
   72322             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   72323           0 :      help.insertCopiedNodePair(this,result);
   72324             : 
   72325             :   // printf ("End of copy SgClinkageEndStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   72326             : 
   72327             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   72328             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   72329           0 :      help.decrementDepth();
   72330             : 
   72331             :   // Test if this is the root of the copy!
   72332           0 :      if (help.get_depth() == 0)
   72333             :         {
   72334             :        // This is the original calling node.
   72335             : 
   72336             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   72337             :        // printf ("Calling SgClinkageEndStatement::fixupCopy() (from root of AST being copied) \n");
   72338             : #if ALT_FIXUP_COPY
   72339             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   72340           0 :           fixupCopy_scopes (result,help);
   72341           0 :           fixupCopy_symbols (result,help);
   72342           0 :           fixupCopy_references (result,help);
   72343             : #else
   72344             :           fixupCopy(result,help);
   72345             : #endif
   72346             :        // Allow this to be called recursively, so accumulate the state.
   72347             :        // Also, clear the state in the SgCopyHelp object.
   72348             :        // help.clearState();
   72349             :         }
   72350             : 
   72351           0 :      return result;
   72352             :    }
   72353             : 
   72354             : 
   72355             : /* #line 72356 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   72356             : 
   72357             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   72358             : 
   72359           0 : SgNode* SgEnumDeclaration::copy ( SgCopyHelp& help) const
   72360             :    {
   72361           0 :      SgEnumDeclaration* result = NULL;
   72362             : 
   72363             :   // printf ("Copy SgEnumDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   72364             : 
   72365             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   72366             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   72367             :   // The default value of the depth is 0, so after this call the depth is 1!
   72368           0 :      help.incrementDepth();
   72369             : 
   72370             : #if 0
   72371             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   72372             :   // but it is not generally true that things can only be copied once!
   72373             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   72374             :   // AstAttribute* existingAttribute = const_cast<SgEnumDeclaration*>(this)->attribute["copied"];
   72375             :      bool previouslyCopied = const_cast<SgEnumDeclaration*>(this)->attribute.exists("copied");
   72376             :      if (previouslyCopied == true)
   72377             :         {
   72378             :           this->get_file_info()->display("Called from copy SgEnumDeclaration: debug");
   72379             :         }
   72380             :      ROSE_ASSERT(previouslyCopied == false);
   72381             : 
   72382             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   72383             :      AstAttribute* newAttribute = new AstAttribute();
   72384             :      ROSE_ASSERT(newAttribute != NULL);
   72385             : 
   72386             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   72387             :      const_cast<SgEnumDeclaration*>(this)->attribute.add("copied",newAttribute);
   72388             : #endif
   72389             : 
   72390             :   // Copy data members from base classes
   72391             :   // Copy constructor parameter data member: startOfConstruct_copy
   72392             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   72393             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   72394           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   72395           0 :      if ( p_startOfConstruct != NULL ) 
   72396             :         { 
   72397           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   72398             :         } 
   72399             :        else 
   72400             :         { 
   72401             :           startOfConstruct_copy = NULL; 
   72402             :         } 
   72403             :   // Copy constructor parameter data member: name_copy
   72404             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   72405             :   // case: toBeCopied == COPY_DATA for name
   72406           0 :      SgName name_copy = p_name; 
   72407             :   // Copy constructor parameter data member: type_copy
   72408             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   72409             :   // case: toBeCopied == CLONE_PTR for type
   72410           0 :      SgEnumType* type_copy = NULL; 
   72411           0 :      if ( p_type != NULL ) 
   72412             :         { 
   72413           0 :           type_copy = new SgEnumType( *p_type); 
   72414             :         } 
   72415             :        else 
   72416             :         { 
   72417             :           type_copy = NULL; 
   72418             :         } 
   72419             :  
   72420             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   72421             : 
   72422             :   // Build an empty copy of this object (will be filled in, but 
   72423             :   // the parent can't be set and must be set by the caller)
   72424           0 :      result = new SgEnumDeclaration(  startOfConstruct_copy, name_copy, type_copy );
   72425           0 :      ROSE_ASSERT(result != NULL);
   72426             : 
   72427             :   // Copy data members of "this" class
   72428             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   72429             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   72430             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   72431           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   72432           0 :      if ( p_endOfConstruct != NULL ) 
   72433             :         { 
   72434           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   72435             :         } 
   72436             :        else 
   72437             :         { 
   72438             :           endOfConstruct_copy = NULL; 
   72439             :         } 
   72440             :   /* check for a valid pointer and delete if present */ 
   72441           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   72442             :   /* add assignment to result here */ 
   72443           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   72444             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   72445             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   72446             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   72447           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   72448           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   72449             :         { 
   72450           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   72451             :         } 
   72452             :        else 
   72453             :         { 
   72454             :           attachedPreprocessingInfoPtr_copy = NULL; 
   72455             :         } 
   72456             :   /* check for a valid pointer and delete if present */ 
   72457           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   72458             :   /* add assignment to result here */ 
   72459           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   72460             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   72461             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   72462             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   72463           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   72464           0 :      if ( p_attributeMechanism != NULL ) 
   72465             :         { 
   72466           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   72467             :         } 
   72468             :        else 
   72469             :         { 
   72470             :           attributeMechanism_copy = NULL; 
   72471             :         } 
   72472             :   /* check for a valid pointer and delete if present */ 
   72473           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   72474             :   /* add assignment to result here */ 
   72475           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   72476             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   72477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   72478             :   // case: toBeCopied == COPY_DATA for numeric_label
   72479           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   72480           0 :      result->p_numeric_label = numeric_label_copy; 
   72481             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   72482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   72483             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   72484           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   72485           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   72486             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   72487             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   72488             :   // case: toBeCopied == COPY_DATA for decl_attributes
   72489           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   72490           0 :      result->p_decl_attributes = decl_attributes_copy; 
   72491             :   // Copy non-constructor parameter data member (access function): linkage_copy
   72492             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   72493             :   // case: toBeCopied == COPY_DATA for linkage
   72494           0 :      std::string linkage_copy = p_linkage; 
   72495           0 :      result->p_linkage = linkage_copy; 
   72496             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   72497             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   72498             :   // case: toBeCopied == COPY_DATA for declarationModifier
   72499           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   72500           0 :      result->p_declarationModifier = declarationModifier_copy; 
   72501             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   72502             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   72503             :   // case: toBeCopied == COPY_DATA for nameOnly
   72504           0 :      bool nameOnly_copy = p_nameOnly; 
   72505           0 :      result->p_nameOnly = nameOnly_copy; 
   72506             :   // Copy non-constructor parameter data member (access function): forward_copy
   72507             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   72508             :   // case: toBeCopied == COPY_DATA for forward
   72509           0 :      bool forward_copy = p_forward; 
   72510           0 :      result->p_forward = forward_copy; 
   72511             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   72512             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   72513             :   // case: toBeCopied == COPY_DATA for externBrace
   72514           0 :      bool externBrace_copy = p_externBrace; 
   72515           0 :      result->p_externBrace = externBrace_copy; 
   72516             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   72517             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   72518             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   72519           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   72520           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   72521             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   72522             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   72523             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   72524           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   72525           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   72526             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   72527             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   72528             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   72529           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   72530           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   72531             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   72532             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   72533             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   72534           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   72535           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   72536             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   72537             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   72538             :   // case: toBeCopied == COPY_DATA for binding_label
   72539           0 :      std::string binding_label_copy = p_binding_label; 
   72540           0 :      result->p_binding_label = binding_label_copy; 
   72541             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   72542             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   72543             :   // case: toBeCopied == COPY_DATA for declarationScope
   72544           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   72545           0 :      result->p_declarationScope = declarationScope_copy; 
   72546             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   72547             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   72548             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   72549           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   72550           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   72551             :   // Copy non-constructor parameter data member (access function): embedded_copy
   72552             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for embedded
   72553             :   // case: toBeCopied == COPY_DATA for embedded
   72554           0 :      bool embedded_copy = p_embedded; 
   72555           0 :      result->p_embedded = embedded_copy; 
   72556             :   // Copy non-constructor parameter data member (access function): adaParentType_copy
   72557             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for adaParentType
   72558             :   // case: toBeCopied == COPY_DATA for adaParentType
   72559           0 :      SgType* adaParentType_copy = p_adaParentType; 
   72560           0 :      result->p_adaParentType = adaParentType_copy; 
   72561             :   // Copy non-constructor parameter data member (list access function): result->get_enumerators()
   72562           0 :      SgInitializedNamePtrList enumerators_copy; 
   72563             :   // case: listType for enumerators
   72564             :   // case: listType (typeIsPointerToList == false) for enumerators
   72565           0 :      SgInitializedNamePtrList::const_iterator source_enumerators_iterator = get_enumerators().begin(); 
   72566           0 :      for ( /* empty by design */; source_enumerators_iterator != get_enumerators().end(); ++source_enumerators_iterator) 
   72567             :         { 
   72568           0 :           SgInitializedName* source_list_element = *source_enumerators_iterator; 
   72569           0 :           SgInitializedName* copy_list_element = NULL; 
   72570           0 :           if (source_list_element != NULL) 
   72571             :              { 
   72572           0 :                copy_list_element = static_cast<SgInitializedName*>(help.copyAst(*source_enumerators_iterator)); 
   72573             :              } 
   72574             :             else 
   72575             :              { 
   72576             :                copy_list_element = NULL; 
   72577             :              } 
   72578           0 :           enumerators_copy.push_back(copy_list_element); 
   72579             :         } 
   72580           0 :      result->p_enumerators = enumerators_copy; 
   72581             :   // case: listType for enumerators
   72582             :   // case: listType (typeIsPointerToList == false) for enumerators
   72583           0 :      SgInitializedNamePtrList::const_iterator enumerators_iterator = result->get_enumerators().begin(); 
   72584           0 :      for ( /* empty by design */; enumerators_iterator != result->get_enumerators().end(); ++enumerators_iterator) 
   72585             :         { 
   72586           0 :           SgInitializedName* list_element = *enumerators_iterator; 
   72587           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   72588             :              { 
   72589           0 :                list_element->set_parent(result); 
   72590             :              } 
   72591             :         } 
   72592             :   // Copy non-constructor parameter data member (access function): scope_copy
   72593             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   72594             :   // case: toBeCopied == COPY_DATA for scope
   72595           0 :      SgScopeStatement* scope_copy = p_scope; 
   72596           0 :      result->p_scope = scope_copy; 
   72597             :   // Copy non-constructor parameter data member (access function): isUnNamed_copy
   72598             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isUnNamed
   72599             :   // case: toBeCopied == COPY_DATA for isUnNamed
   72600           0 :      bool isUnNamed_copy = p_isUnNamed; 
   72601           0 :      result->p_isUnNamed = isUnNamed_copy; 
   72602             :   // Copy non-constructor parameter data member (access function): isAutonomousDeclaration_copy
   72603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAutonomousDeclaration
   72604             :   // case: toBeCopied == COPY_DATA for isAutonomousDeclaration
   72605           0 :      bool isAutonomousDeclaration_copy = p_isAutonomousDeclaration; 
   72606           0 :      result->p_isAutonomousDeclaration = isAutonomousDeclaration_copy; 
   72607             :   // Copy non-constructor parameter data member (access function): field_type_copy
   72608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for field_type
   72609             :   // case: toBeCopied == CLONE_PTR for field_type
   72610           0 :      SgType* field_type_copy = NULL; 
   72611           0 :      if ( p_field_type != NULL ) 
   72612             :         { 
   72613           0 :           field_type_copy = new SgType( *p_field_type); 
   72614             :         } 
   72615             :        else 
   72616             :         { 
   72617             :           field_type_copy = NULL; 
   72618             :         } 
   72619             :   /* check for a valid pointer and delete if present */ 
   72620           0 :      if (result->p_field_type != NULL) delete result->p_field_type; 
   72621             :   /* add assignment to result here */ 
   72622           0 :      result->p_field_type = field_type_copy; 
   72623             :   // Copy non-constructor parameter data member (access function): isScopedEnum_copy
   72624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isScopedEnum
   72625             :   // case: toBeCopied == COPY_DATA for isScopedEnum
   72626           0 :      bool isScopedEnum_copy = p_isScopedEnum; 
   72627           0 :      result->p_isScopedEnum = isScopedEnum_copy; 
   72628             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   72629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   72630             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   72631           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   72632           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   72633             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   72634             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   72635             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   72636           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   72637           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   72638             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   72639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   72640             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   72641           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   72642           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   72643             : 
   72644             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   72645             : 
   72646             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   72647             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   72648             :   // fixupCopy(result,help);
   72649             : 
   72650             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   72651             :   // the Sg_File_Info objects that are built for the new IR nodes.
   72652           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   72653           0 :      if (locatedNode != NULL)
   72654             :         {
   72655             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   72656           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   72657           0 :           ROSE_ASSERT(start != NULL);
   72658             : #if 0
   72659             :        // Debugging information
   72660             :           if (start->get_parent() == NULL)
   72661             :              {
   72662             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72663             :              }
   72664             : #endif
   72665           0 :           start->set_parent(locatedNode);
   72666           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   72667             : 
   72668           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   72669             : 
   72670             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   72671             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   72672             :        // ROSE_ASSERT(end != NULL);
   72673           0 :           if (end == NULL)
   72674             :              {
   72675           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   72676             :              }
   72677             :             else
   72678             :              {
   72679             : #if 0
   72680             :             // Debugging information
   72681             :                if (end->get_parent() == NULL)
   72682             :                   {
   72683             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72684             :                   }
   72685             : #endif
   72686           0 :                end->set_parent(locatedNode);
   72687           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   72688             :              }
   72689             : 
   72690           0 :           SgExpression* expression = isSgExpression(result);
   72691           0 :           if (isSgExpression(this) != NULL)
   72692             :              {
   72693           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   72694             : 
   72695             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   72696           0 :                if (operatorPosition != NULL)
   72697             :                   {
   72698             : #if 0
   72699             :                  // Debugging information
   72700             :                     if (operatorPosition->get_parent() == NULL)
   72701             :                        {
   72702             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72703             :                        }
   72704             : #endif
   72705           0 :                     operatorPosition->set_parent(expression);
   72706           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   72707             :                   }
   72708             :              }
   72709             :         }
   72710             : 
   72711             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   72712           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   72713           0 :      if (initializedName != NULL)
   72714             :         {
   72715             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   72716           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   72717           0 :           ROSE_ASSERT(start != NULL);
   72718             : #if 0
   72719             :        // Debugging information
   72720             :           if (start->get_parent() == NULL)
   72721             :              {
   72722             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72723             :              }
   72724             : #endif
   72725           0 :           start->set_parent(initializedName);
   72726           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   72727             : 
   72728             : #if 0
   72729             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   72730             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   72731             : 
   72732             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   72733             :        // ROSE_ASSERT(end != NULL);
   72734             :           if (end == NULL)
   72735             :              {
   72736             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   72737             :              }
   72738             :             else
   72739             :              {
   72740             :                if (end->get_parent() == NULL)
   72741             :                   {
   72742             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   72743             :                   }
   72744             :                end->set_parent(initializedName);
   72745             :                ROSE_ASSERT(end->get_parent() != NULL);
   72746             :              }
   72747             : #endif
   72748             :         }
   72749             : 
   72750             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   72751           0 :      help.insertCopiedNodePair(this,result);
   72752             : 
   72753             :   // printf ("End of copy SgEnumDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   72754             : 
   72755             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   72756             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   72757           0 :      help.decrementDepth();
   72758             : 
   72759             :   // Test if this is the root of the copy!
   72760           0 :      if (help.get_depth() == 0)
   72761             :         {
   72762             :        // This is the original calling node.
   72763             : 
   72764             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   72765             :        // printf ("Calling SgEnumDeclaration::fixupCopy() (from root of AST being copied) \n");
   72766             : #if ALT_FIXUP_COPY
   72767             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   72768           0 :           fixupCopy_scopes (result,help);
   72769           0 :           fixupCopy_symbols (result,help);
   72770           0 :           fixupCopy_references (result,help);
   72771             : #else
   72772             :           fixupCopy(result,help);
   72773             : #endif
   72774             :        // Allow this to be called recursively, so accumulate the state.
   72775             :        // Also, clear the state in the SgCopyHelp object.
   72776             :        // help.clearState();
   72777             :         }
   72778             : 
   72779           0 :      return result;
   72780             :    }
   72781             : 
   72782             : 
   72783             : /* #line 72784 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   72784             : 
   72785             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   72786             : 
   72787           0 : SgNode* SgAsmStmt::copy ( SgCopyHelp& help) const
   72788             :    {
   72789           0 :      SgAsmStmt* result = NULL;
   72790             : 
   72791             :   // printf ("Copy SgAsmStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   72792             : 
   72793             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   72794             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   72795             :   // The default value of the depth is 0, so after this call the depth is 1!
   72796           0 :      help.incrementDepth();
   72797             : 
   72798             : #if 0
   72799             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   72800             :   // but it is not generally true that things can only be copied once!
   72801             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   72802             :   // AstAttribute* existingAttribute = const_cast<SgAsmStmt*>(this)->attribute["copied"];
   72803             :      bool previouslyCopied = const_cast<SgAsmStmt*>(this)->attribute.exists("copied");
   72804             :      if (previouslyCopied == true)
   72805             :         {
   72806             :           this->get_file_info()->display("Called from copy SgAsmStmt: debug");
   72807             :         }
   72808             :      ROSE_ASSERT(previouslyCopied == false);
   72809             : 
   72810             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   72811             :      AstAttribute* newAttribute = new AstAttribute();
   72812             :      ROSE_ASSERT(newAttribute != NULL);
   72813             : 
   72814             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   72815             :      const_cast<SgAsmStmt*>(this)->attribute.add("copied",newAttribute);
   72816             : #endif
   72817             : 
   72818             :   // Copy data members from base classes
   72819             :   // Copy constructor parameter data member: startOfConstruct_copy
   72820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   72821             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   72822           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   72823           0 :      if ( p_startOfConstruct != NULL ) 
   72824             :         { 
   72825           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   72826             :         } 
   72827             :        else 
   72828             :         { 
   72829             :           startOfConstruct_copy = NULL; 
   72830             :         } 
   72831             :  
   72832             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   72833             : 
   72834             :   // Build an empty copy of this object (will be filled in, but 
   72835             :   // the parent can't be set and must be set by the caller)
   72836           0 :      result = new SgAsmStmt(  startOfConstruct_copy );
   72837           0 :      ROSE_ASSERT(result != NULL);
   72838             : 
   72839             :   // Copy data members of "this" class
   72840             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   72841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   72842             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   72843           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   72844           0 :      if ( p_endOfConstruct != NULL ) 
   72845             :         { 
   72846           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   72847             :         } 
   72848             :        else 
   72849             :         { 
   72850             :           endOfConstruct_copy = NULL; 
   72851             :         } 
   72852             :   /* check for a valid pointer and delete if present */ 
   72853           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   72854             :   /* add assignment to result here */ 
   72855           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   72856             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   72857             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   72858             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   72859           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   72860           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   72861             :         { 
   72862           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   72863             :         } 
   72864             :        else 
   72865             :         { 
   72866             :           attachedPreprocessingInfoPtr_copy = NULL; 
   72867             :         } 
   72868             :   /* check for a valid pointer and delete if present */ 
   72869           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   72870             :   /* add assignment to result here */ 
   72871           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   72872             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   72873             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   72874             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   72875           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   72876           0 :      if ( p_attributeMechanism != NULL ) 
   72877             :         { 
   72878           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   72879             :         } 
   72880             :        else 
   72881             :         { 
   72882             :           attributeMechanism_copy = NULL; 
   72883             :         } 
   72884             :   /* check for a valid pointer and delete if present */ 
   72885           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   72886             :   /* add assignment to result here */ 
   72887           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   72888             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   72889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   72890             :   // case: toBeCopied == COPY_DATA for numeric_label
   72891           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   72892           0 :      result->p_numeric_label = numeric_label_copy; 
   72893             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   72894             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   72895             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   72896           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   72897           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   72898             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   72899             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   72900             :   // case: toBeCopied == COPY_DATA for decl_attributes
   72901           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   72902           0 :      result->p_decl_attributes = decl_attributes_copy; 
   72903             :   // Copy non-constructor parameter data member (access function): linkage_copy
   72904             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   72905             :   // case: toBeCopied == COPY_DATA for linkage
   72906           0 :      std::string linkage_copy = p_linkage; 
   72907           0 :      result->p_linkage = linkage_copy; 
   72908             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   72909             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   72910             :   // case: toBeCopied == COPY_DATA for declarationModifier
   72911           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   72912           0 :      result->p_declarationModifier = declarationModifier_copy; 
   72913             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   72914             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   72915             :   // case: toBeCopied == COPY_DATA for nameOnly
   72916           0 :      bool nameOnly_copy = p_nameOnly; 
   72917           0 :      result->p_nameOnly = nameOnly_copy; 
   72918             :   // Copy non-constructor parameter data member (access function): forward_copy
   72919             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   72920             :   // case: toBeCopied == COPY_DATA for forward
   72921           0 :      bool forward_copy = p_forward; 
   72922           0 :      result->p_forward = forward_copy; 
   72923             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   72924             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   72925             :   // case: toBeCopied == COPY_DATA for externBrace
   72926           0 :      bool externBrace_copy = p_externBrace; 
   72927           0 :      result->p_externBrace = externBrace_copy; 
   72928             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   72929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   72930             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   72931           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   72932           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   72933             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   72934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   72935             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   72936           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   72937           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   72938             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   72939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   72940             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   72941           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   72942           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   72943             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   72944             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   72945             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   72946           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   72947           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   72948             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   72949             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   72950             :   // case: toBeCopied == COPY_DATA for binding_label
   72951           0 :      std::string binding_label_copy = p_binding_label; 
   72952           0 :      result->p_binding_label = binding_label_copy; 
   72953             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   72954             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   72955             :   // case: toBeCopied == COPY_DATA for declarationScope
   72956           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   72957           0 :      result->p_declarationScope = declarationScope_copy; 
   72958             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   72959             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   72960             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   72961           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   72962           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   72963             :   // Copy non-constructor parameter data member (access function): assemblyCode_copy
   72964             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for assemblyCode
   72965             :   // case: toBeCopied == COPY_DATA for assemblyCode
   72966           0 :      std::string assemblyCode_copy = p_assemblyCode; 
   72967           0 :      result->p_assemblyCode = assemblyCode_copy; 
   72968             :   // Copy non-constructor parameter data member (access function): useGnuExtendedFormat_copy
   72969             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for useGnuExtendedFormat
   72970             :   // case: toBeCopied == COPY_DATA for useGnuExtendedFormat
   72971           0 :      bool useGnuExtendedFormat_copy = p_useGnuExtendedFormat; 
   72972           0 :      result->p_useGnuExtendedFormat = useGnuExtendedFormat_copy; 
   72973             :   // Copy non-constructor parameter data member (no access function): result->p_operands
   72974           0 :      SgExpressionPtrList operands_copy; 
   72975             :   // case: listType for operands
   72976             :   // case: listType (typeIsPointerToList == false) for operands
   72977           0 :      SgExpressionPtrList::const_iterator source_operands_iterator = get_operands().begin(); 
   72978           0 :      for ( /* empty by design */; source_operands_iterator != get_operands().end(); ++source_operands_iterator) 
   72979             :         { 
   72980           0 :           SgExpression* source_list_element = *source_operands_iterator; 
   72981           0 :           SgExpression* copy_list_element = NULL; 
   72982           0 :           if (source_list_element != NULL) 
   72983             :              { 
   72984           0 :                copy_list_element = static_cast<SgExpression*>(help.copyAst(*source_operands_iterator)); 
   72985             :              } 
   72986             :             else 
   72987             :              { 
   72988             :                copy_list_element = NULL; 
   72989             :              } 
   72990           0 :           operands_copy.push_back(copy_list_element); 
   72991             :         } 
   72992           0 :      result->p_operands = operands_copy; 
   72993             :   // case: listType for operands
   72994             :   // case: listType (typeIsPointerToList == false) for operands
   72995           0 :      SgExpressionPtrList::const_iterator operands_iterator = result->get_operands().begin(); 
   72996           0 :      for ( /* empty by design */; operands_iterator != result->get_operands().end(); ++operands_iterator) 
   72997             :         { 
   72998           0 :           SgExpression* list_element = *operands_iterator; 
   72999           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   73000             :              { 
   73001           0 :                list_element->set_parent(result); 
   73002             :              } 
   73003             :         } 
   73004             :   // Copy non-constructor parameter data member (no access function): result->p_clobberRegisterList
   73005             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clobberRegisterList
   73006             :   // case: toBeCopied == COPY_DATA for clobberRegisterList
   73007           0 :      SgAsmStmt::AsmRegisterNameList clobberRegisterList_copy = p_clobberRegisterList; 
   73008           0 :      result->p_clobberRegisterList = clobberRegisterList_copy; 
   73009             :   // Copy non-constructor parameter data member (access function): isVolatile_copy
   73010             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isVolatile
   73011             :   // case: toBeCopied == COPY_DATA for isVolatile
   73012           0 :      bool isVolatile_copy = p_isVolatile; 
   73013           0 :      result->p_isVolatile = isVolatile_copy; 
   73014             : 
   73015             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   73016             : 
   73017             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   73018             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   73019             :   // fixupCopy(result,help);
   73020             : 
   73021             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   73022             :   // the Sg_File_Info objects that are built for the new IR nodes.
   73023           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   73024           0 :      if (locatedNode != NULL)
   73025             :         {
   73026             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   73027           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   73028           0 :           ROSE_ASSERT(start != NULL);
   73029             : #if 0
   73030             :        // Debugging information
   73031             :           if (start->get_parent() == NULL)
   73032             :              {
   73033             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73034             :              }
   73035             : #endif
   73036           0 :           start->set_parent(locatedNode);
   73037           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   73038             : 
   73039           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   73040             : 
   73041             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   73042             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   73043             :        // ROSE_ASSERT(end != NULL);
   73044           0 :           if (end == NULL)
   73045             :              {
   73046           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   73047             :              }
   73048             :             else
   73049             :              {
   73050             : #if 0
   73051             :             // Debugging information
   73052             :                if (end->get_parent() == NULL)
   73053             :                   {
   73054             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73055             :                   }
   73056             : #endif
   73057           0 :                end->set_parent(locatedNode);
   73058           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   73059             :              }
   73060             : 
   73061           0 :           SgExpression* expression = isSgExpression(result);
   73062           0 :           if (isSgExpression(this) != NULL)
   73063             :              {
   73064           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   73065             : 
   73066             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   73067           0 :                if (operatorPosition != NULL)
   73068             :                   {
   73069             : #if 0
   73070             :                  // Debugging information
   73071             :                     if (operatorPosition->get_parent() == NULL)
   73072             :                        {
   73073             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73074             :                        }
   73075             : #endif
   73076           0 :                     operatorPosition->set_parent(expression);
   73077           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   73078             :                   }
   73079             :              }
   73080             :         }
   73081             : 
   73082             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   73083           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   73084           0 :      if (initializedName != NULL)
   73085             :         {
   73086             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   73087           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   73088           0 :           ROSE_ASSERT(start != NULL);
   73089             : #if 0
   73090             :        // Debugging information
   73091             :           if (start->get_parent() == NULL)
   73092             :              {
   73093             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73094             :              }
   73095             : #endif
   73096           0 :           start->set_parent(initializedName);
   73097           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   73098             : 
   73099             : #if 0
   73100             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   73101             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   73102             : 
   73103             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   73104             :        // ROSE_ASSERT(end != NULL);
   73105             :           if (end == NULL)
   73106             :              {
   73107             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   73108             :              }
   73109             :             else
   73110             :              {
   73111             :                if (end->get_parent() == NULL)
   73112             :                   {
   73113             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73114             :                   }
   73115             :                end->set_parent(initializedName);
   73116             :                ROSE_ASSERT(end->get_parent() != NULL);
   73117             :              }
   73118             : #endif
   73119             :         }
   73120             : 
   73121             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   73122           0 :      help.insertCopiedNodePair(this,result);
   73123             : 
   73124             :   // printf ("End of copy SgAsmStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   73125             : 
   73126             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   73127             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   73128           0 :      help.decrementDepth();
   73129             : 
   73130             :   // Test if this is the root of the copy!
   73131           0 :      if (help.get_depth() == 0)
   73132             :         {
   73133             :        // This is the original calling node.
   73134             : 
   73135             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   73136             :        // printf ("Calling SgAsmStmt::fixupCopy() (from root of AST being copied) \n");
   73137             : #if ALT_FIXUP_COPY
   73138             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   73139           0 :           fixupCopy_scopes (result,help);
   73140           0 :           fixupCopy_symbols (result,help);
   73141           0 :           fixupCopy_references (result,help);
   73142             : #else
   73143             :           fixupCopy(result,help);
   73144             : #endif
   73145             :        // Allow this to be called recursively, so accumulate the state.
   73146             :        // Also, clear the state in the SgCopyHelp object.
   73147             :        // help.clearState();
   73148             :         }
   73149             : 
   73150           0 :      return result;
   73151             :    }
   73152             : 
   73153             : 
   73154             : /* #line 73155 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   73155             : 
   73156             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   73157             : 
   73158           0 : SgNode* SgAttributeSpecificationStatement::copy ( SgCopyHelp& help) const
   73159             :    {
   73160           0 :      SgAttributeSpecificationStatement* result = NULL;
   73161             : 
   73162             :   // printf ("Copy SgAttributeSpecificationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   73163             : 
   73164             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   73165             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   73166             :   // The default value of the depth is 0, so after this call the depth is 1!
   73167           0 :      help.incrementDepth();
   73168             : 
   73169             : #if 0
   73170             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   73171             :   // but it is not generally true that things can only be copied once!
   73172             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   73173             :   // AstAttribute* existingAttribute = const_cast<SgAttributeSpecificationStatement*>(this)->attribute["copied"];
   73174             :      bool previouslyCopied = const_cast<SgAttributeSpecificationStatement*>(this)->attribute.exists("copied");
   73175             :      if (previouslyCopied == true)
   73176             :         {
   73177             :           this->get_file_info()->display("Called from copy SgAttributeSpecificationStatement: debug");
   73178             :         }
   73179             :      ROSE_ASSERT(previouslyCopied == false);
   73180             : 
   73181             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   73182             :      AstAttribute* newAttribute = new AstAttribute();
   73183             :      ROSE_ASSERT(newAttribute != NULL);
   73184             : 
   73185             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   73186             :      const_cast<SgAttributeSpecificationStatement*>(this)->attribute.add("copied",newAttribute);
   73187             : #endif
   73188             : 
   73189             :   // Copy data members from base classes
   73190             :   // Copy constructor parameter data member: startOfConstruct_copy
   73191             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   73192             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   73193           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   73194           0 :      if ( p_startOfConstruct != NULL ) 
   73195             :         { 
   73196           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   73197             :         } 
   73198             :        else 
   73199             :         { 
   73200             :           startOfConstruct_copy = NULL; 
   73201             :         } 
   73202             :  
   73203             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   73204             : 
   73205             :   // Build an empty copy of this object (will be filled in, but 
   73206             :   // the parent can't be set and must be set by the caller)
   73207           0 :      result = new SgAttributeSpecificationStatement(  startOfConstruct_copy );
   73208           0 :      ROSE_ASSERT(result != NULL);
   73209             : 
   73210             :   // Copy data members of "this" class
   73211             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   73212             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   73213             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   73214           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   73215           0 :      if ( p_endOfConstruct != NULL ) 
   73216             :         { 
   73217           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   73218             :         } 
   73219             :        else 
   73220             :         { 
   73221             :           endOfConstruct_copy = NULL; 
   73222             :         } 
   73223             :   /* check for a valid pointer and delete if present */ 
   73224           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   73225             :   /* add assignment to result here */ 
   73226           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   73227             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   73228             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   73229             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   73230           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   73231           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   73232             :         { 
   73233           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   73234             :         } 
   73235             :        else 
   73236             :         { 
   73237             :           attachedPreprocessingInfoPtr_copy = NULL; 
   73238             :         } 
   73239             :   /* check for a valid pointer and delete if present */ 
   73240           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   73241             :   /* add assignment to result here */ 
   73242           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   73243             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   73244             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   73245             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   73246           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   73247           0 :      if ( p_attributeMechanism != NULL ) 
   73248             :         { 
   73249           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   73250             :         } 
   73251             :        else 
   73252             :         { 
   73253             :           attributeMechanism_copy = NULL; 
   73254             :         } 
   73255             :   /* check for a valid pointer and delete if present */ 
   73256           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   73257             :   /* add assignment to result here */ 
   73258           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   73259             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   73260             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   73261             :   // case: toBeCopied == COPY_DATA for numeric_label
   73262           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   73263           0 :      result->p_numeric_label = numeric_label_copy; 
   73264             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   73265             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   73266             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   73267           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   73268           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   73269             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   73270             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   73271             :   // case: toBeCopied == COPY_DATA for decl_attributes
   73272           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   73273           0 :      result->p_decl_attributes = decl_attributes_copy; 
   73274             :   // Copy non-constructor parameter data member (access function): linkage_copy
   73275             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   73276             :   // case: toBeCopied == COPY_DATA for linkage
   73277           0 :      std::string linkage_copy = p_linkage; 
   73278           0 :      result->p_linkage = linkage_copy; 
   73279             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   73280             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   73281             :   // case: toBeCopied == COPY_DATA for declarationModifier
   73282           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   73283           0 :      result->p_declarationModifier = declarationModifier_copy; 
   73284             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   73285             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   73286             :   // case: toBeCopied == COPY_DATA for nameOnly
   73287           0 :      bool nameOnly_copy = p_nameOnly; 
   73288           0 :      result->p_nameOnly = nameOnly_copy; 
   73289             :   // Copy non-constructor parameter data member (access function): forward_copy
   73290             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   73291             :   // case: toBeCopied == COPY_DATA for forward
   73292           0 :      bool forward_copy = p_forward; 
   73293           0 :      result->p_forward = forward_copy; 
   73294             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   73295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   73296             :   // case: toBeCopied == COPY_DATA for externBrace
   73297           0 :      bool externBrace_copy = p_externBrace; 
   73298           0 :      result->p_externBrace = externBrace_copy; 
   73299             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   73300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   73301             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   73302           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   73303           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   73304             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   73305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   73306             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   73307           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   73308           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   73309             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   73310             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   73311             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   73312           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   73313           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   73314             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   73315             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   73316             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   73317           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   73318           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   73319             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   73320             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   73321             :   // case: toBeCopied == COPY_DATA for binding_label
   73322           0 :      std::string binding_label_copy = p_binding_label; 
   73323           0 :      result->p_binding_label = binding_label_copy; 
   73324             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   73325             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   73326             :   // case: toBeCopied == COPY_DATA for declarationScope
   73327           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   73328           0 :      result->p_declarationScope = declarationScope_copy; 
   73329             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   73330             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   73331             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   73332           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   73333           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   73334             :   // Copy non-constructor parameter data member (no access function): result->p_name_list
   73335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_list
   73336             :   // case: toBeCopied == COPY_DATA for name_list
   73337           0 :      SgStringList name_list_copy = p_name_list; 
   73338           0 :      result->p_name_list = name_list_copy; 
   73339             :   // Copy non-constructor parameter data member (access function): attribute_kind_copy
   73340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attribute_kind
   73341             :   // case: toBeCopied == COPY_DATA for attribute_kind
   73342           0 :      SgAttributeSpecificationStatement::attribute_spec_enum attribute_kind_copy = p_attribute_kind; 
   73343           0 :      result->p_attribute_kind = attribute_kind_copy; 
   73344             :   // Copy non-constructor parameter data member (access function): intent_copy
   73345             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for intent
   73346             :   // case: toBeCopied == COPY_DATA for intent
   73347           0 :      int intent_copy = p_intent; 
   73348           0 :      result->p_intent = intent_copy; 
   73349             :   // Copy non-constructor parameter data member (access function): parameter_list_copy
   73350             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameter_list
   73351             :   // case: toBeCopied == COPY_DATA for parameter_list
   73352           0 :      SgExprListExp* parameter_list_copy = p_parameter_list; 
   73353           0 :      result->p_parameter_list = parameter_list_copy; 
   73354             :   // Copy non-constructor parameter data member (no access function): result->p_data_statement_group_list
   73355             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for data_statement_group_list
   73356             :   // case: toBeCopied == COPY_DATA for data_statement_group_list
   73357           0 :      SgDataStatementGroupPtrList data_statement_group_list_copy = p_data_statement_group_list; 
   73358           0 :      result->p_data_statement_group_list = data_statement_group_list_copy; 
   73359             :   // Copy non-constructor parameter data member (access function): bind_list_copy
   73360             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for bind_list
   73361             :   // case: toBeCopied == COPY_DATA for bind_list
   73362           0 :      SgExprListExp* bind_list_copy = p_bind_list; 
   73363           0 :      result->p_bind_list = bind_list_copy; 
   73364             :   // Copy non-constructor parameter data member (no access function): result->p_dimension_object_list
   73365             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for dimension_object_list
   73366             :   // case: toBeCopied == COPY_DATA for dimension_object_list
   73367           0 :      SgDimensionObjectPtrList dimension_object_list_copy = p_dimension_object_list; 
   73368           0 :      result->p_dimension_object_list = dimension_object_list_copy; 
   73369             : 
   73370             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   73371             : 
   73372             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   73373             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   73374             :   // fixupCopy(result,help);
   73375             : 
   73376             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   73377             :   // the Sg_File_Info objects that are built for the new IR nodes.
   73378           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   73379           0 :      if (locatedNode != NULL)
   73380             :         {
   73381             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   73382           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   73383           0 :           ROSE_ASSERT(start != NULL);
   73384             : #if 0
   73385             :        // Debugging information
   73386             :           if (start->get_parent() == NULL)
   73387             :              {
   73388             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73389             :              }
   73390             : #endif
   73391           0 :           start->set_parent(locatedNode);
   73392           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   73393             : 
   73394           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   73395             : 
   73396             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   73397             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   73398             :        // ROSE_ASSERT(end != NULL);
   73399           0 :           if (end == NULL)
   73400             :              {
   73401           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   73402             :              }
   73403             :             else
   73404             :              {
   73405             : #if 0
   73406             :             // Debugging information
   73407             :                if (end->get_parent() == NULL)
   73408             :                   {
   73409             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73410             :                   }
   73411             : #endif
   73412           0 :                end->set_parent(locatedNode);
   73413           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   73414             :              }
   73415             : 
   73416           0 :           SgExpression* expression = isSgExpression(result);
   73417           0 :           if (isSgExpression(this) != NULL)
   73418             :              {
   73419           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   73420             : 
   73421             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   73422           0 :                if (operatorPosition != NULL)
   73423             :                   {
   73424             : #if 0
   73425             :                  // Debugging information
   73426             :                     if (operatorPosition->get_parent() == NULL)
   73427             :                        {
   73428             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73429             :                        }
   73430             : #endif
   73431           0 :                     operatorPosition->set_parent(expression);
   73432           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   73433             :                   }
   73434             :              }
   73435             :         }
   73436             : 
   73437             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   73438           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   73439           0 :      if (initializedName != NULL)
   73440             :         {
   73441             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   73442           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   73443           0 :           ROSE_ASSERT(start != NULL);
   73444             : #if 0
   73445             :        // Debugging information
   73446             :           if (start->get_parent() == NULL)
   73447             :              {
   73448             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73449             :              }
   73450             : #endif
   73451           0 :           start->set_parent(initializedName);
   73452           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   73453             : 
   73454             : #if 0
   73455             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   73456             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   73457             : 
   73458             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   73459             :        // ROSE_ASSERT(end != NULL);
   73460             :           if (end == NULL)
   73461             :              {
   73462             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   73463             :              }
   73464             :             else
   73465             :              {
   73466             :                if (end->get_parent() == NULL)
   73467             :                   {
   73468             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73469             :                   }
   73470             :                end->set_parent(initializedName);
   73471             :                ROSE_ASSERT(end->get_parent() != NULL);
   73472             :              }
   73473             : #endif
   73474             :         }
   73475             : 
   73476             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   73477           0 :      help.insertCopiedNodePair(this,result);
   73478             : 
   73479             :   // printf ("End of copy SgAttributeSpecificationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   73480             : 
   73481             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   73482             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   73483           0 :      help.decrementDepth();
   73484             : 
   73485             :   // Test if this is the root of the copy!
   73486           0 :      if (help.get_depth() == 0)
   73487             :         {
   73488             :        // This is the original calling node.
   73489             : 
   73490             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   73491             :        // printf ("Calling SgAttributeSpecificationStatement::fixupCopy() (from root of AST being copied) \n");
   73492             : #if ALT_FIXUP_COPY
   73493             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   73494           0 :           fixupCopy_scopes (result,help);
   73495           0 :           fixupCopy_symbols (result,help);
   73496           0 :           fixupCopy_references (result,help);
   73497             : #else
   73498             :           fixupCopy(result,help);
   73499             : #endif
   73500             :        // Allow this to be called recursively, so accumulate the state.
   73501             :        // Also, clear the state in the SgCopyHelp object.
   73502             :        // help.clearState();
   73503             :         }
   73504             : 
   73505           0 :      return result;
   73506             :    }
   73507             : 
   73508             : 
   73509             : /* #line 73510 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   73510             : 
   73511             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   73512             : 
   73513           0 : SgNode* SgFormatStatement::copy ( SgCopyHelp& help) const
   73514             :    {
   73515           0 :      SgFormatStatement* result = NULL;
   73516             : 
   73517             :   // printf ("Copy SgFormatStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   73518             : 
   73519             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   73520             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   73521             :   // The default value of the depth is 0, so after this call the depth is 1!
   73522           0 :      help.incrementDepth();
   73523             : 
   73524             : #if 0
   73525             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   73526             :   // but it is not generally true that things can only be copied once!
   73527             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   73528             :   // AstAttribute* existingAttribute = const_cast<SgFormatStatement*>(this)->attribute["copied"];
   73529             :      bool previouslyCopied = const_cast<SgFormatStatement*>(this)->attribute.exists("copied");
   73530             :      if (previouslyCopied == true)
   73531             :         {
   73532             :           this->get_file_info()->display("Called from copy SgFormatStatement: debug");
   73533             :         }
   73534             :      ROSE_ASSERT(previouslyCopied == false);
   73535             : 
   73536             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   73537             :      AstAttribute* newAttribute = new AstAttribute();
   73538             :      ROSE_ASSERT(newAttribute != NULL);
   73539             : 
   73540             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   73541             :      const_cast<SgFormatStatement*>(this)->attribute.add("copied",newAttribute);
   73542             : #endif
   73543             : 
   73544             :   // Copy data members from base classes
   73545             :   // Copy constructor parameter data member: startOfConstruct_copy
   73546             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   73547             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   73548           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   73549           0 :      if ( p_startOfConstruct != NULL ) 
   73550             :         { 
   73551           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   73552             :         } 
   73553             :        else 
   73554             :         { 
   73555             :           startOfConstruct_copy = NULL; 
   73556             :         } 
   73557             :   // Copy constructor parameter data member: format_item_list_copy
   73558             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for format_item_list
   73559             :   // case: toBeCopied == COPY_DATA for format_item_list
   73560           0 :      SgFormatItemList* format_item_list_copy = p_format_item_list; 
   73561             :  
   73562             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   73563             : 
   73564             :   // Build an empty copy of this object (will be filled in, but 
   73565             :   // the parent can't be set and must be set by the caller)
   73566           0 :      result = new SgFormatStatement(  startOfConstruct_copy, format_item_list_copy );
   73567           0 :      ROSE_ASSERT(result != NULL);
   73568             : 
   73569             :   // Copy data members of "this" class
   73570             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   73571             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   73572             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   73573           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   73574           0 :      if ( p_endOfConstruct != NULL ) 
   73575             :         { 
   73576           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   73577             :         } 
   73578             :        else 
   73579             :         { 
   73580             :           endOfConstruct_copy = NULL; 
   73581             :         } 
   73582             :   /* check for a valid pointer and delete if present */ 
   73583           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   73584             :   /* add assignment to result here */ 
   73585           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   73586             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   73587             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   73588             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   73589           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   73590           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   73591             :         { 
   73592           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   73593             :         } 
   73594             :        else 
   73595             :         { 
   73596             :           attachedPreprocessingInfoPtr_copy = NULL; 
   73597             :         } 
   73598             :   /* check for a valid pointer and delete if present */ 
   73599           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   73600             :   /* add assignment to result here */ 
   73601           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   73602             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   73603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   73604             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   73605           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   73606           0 :      if ( p_attributeMechanism != NULL ) 
   73607             :         { 
   73608           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   73609             :         } 
   73610             :        else 
   73611             :         { 
   73612             :           attributeMechanism_copy = NULL; 
   73613             :         } 
   73614             :   /* check for a valid pointer and delete if present */ 
   73615           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   73616             :   /* add assignment to result here */ 
   73617           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   73618             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   73619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   73620             :   // case: toBeCopied == COPY_DATA for numeric_label
   73621           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   73622           0 :      result->p_numeric_label = numeric_label_copy; 
   73623             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   73624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   73625             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   73626           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   73627           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   73628             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   73629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   73630             :   // case: toBeCopied == COPY_DATA for decl_attributes
   73631           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   73632           0 :      result->p_decl_attributes = decl_attributes_copy; 
   73633             :   // Copy non-constructor parameter data member (access function): linkage_copy
   73634             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   73635             :   // case: toBeCopied == COPY_DATA for linkage
   73636           0 :      std::string linkage_copy = p_linkage; 
   73637           0 :      result->p_linkage = linkage_copy; 
   73638             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   73639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   73640             :   // case: toBeCopied == COPY_DATA for declarationModifier
   73641           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   73642           0 :      result->p_declarationModifier = declarationModifier_copy; 
   73643             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   73644             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   73645             :   // case: toBeCopied == COPY_DATA for nameOnly
   73646           0 :      bool nameOnly_copy = p_nameOnly; 
   73647           0 :      result->p_nameOnly = nameOnly_copy; 
   73648             :   // Copy non-constructor parameter data member (access function): forward_copy
   73649             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   73650             :   // case: toBeCopied == COPY_DATA for forward
   73651           0 :      bool forward_copy = p_forward; 
   73652           0 :      result->p_forward = forward_copy; 
   73653             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   73654             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   73655             :   // case: toBeCopied == COPY_DATA for externBrace
   73656           0 :      bool externBrace_copy = p_externBrace; 
   73657           0 :      result->p_externBrace = externBrace_copy; 
   73658             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   73659             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   73660             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   73661           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   73662           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   73663             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   73664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   73665             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   73666           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   73667           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   73668             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   73669             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   73670             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   73671           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   73672           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   73673             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   73674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   73675             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   73676           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   73677           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   73678             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   73679             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   73680             :   // case: toBeCopied == COPY_DATA for binding_label
   73681           0 :      std::string binding_label_copy = p_binding_label; 
   73682           0 :      result->p_binding_label = binding_label_copy; 
   73683             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   73684             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   73685             :   // case: toBeCopied == COPY_DATA for declarationScope
   73686           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   73687           0 :      result->p_declarationScope = declarationScope_copy; 
   73688             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   73689             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   73690             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   73691           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   73692           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   73693             : 
   73694             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   73695             : 
   73696             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   73697             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   73698             :   // fixupCopy(result,help);
   73699             : 
   73700             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   73701             :   // the Sg_File_Info objects that are built for the new IR nodes.
   73702           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   73703           0 :      if (locatedNode != NULL)
   73704             :         {
   73705             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   73706           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   73707           0 :           ROSE_ASSERT(start != NULL);
   73708             : #if 0
   73709             :        // Debugging information
   73710             :           if (start->get_parent() == NULL)
   73711             :              {
   73712             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73713             :              }
   73714             : #endif
   73715           0 :           start->set_parent(locatedNode);
   73716           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   73717             : 
   73718           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   73719             : 
   73720             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   73721             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   73722             :        // ROSE_ASSERT(end != NULL);
   73723           0 :           if (end == NULL)
   73724             :              {
   73725           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   73726             :              }
   73727             :             else
   73728             :              {
   73729             : #if 0
   73730             :             // Debugging information
   73731             :                if (end->get_parent() == NULL)
   73732             :                   {
   73733             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73734             :                   }
   73735             : #endif
   73736           0 :                end->set_parent(locatedNode);
   73737           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   73738             :              }
   73739             : 
   73740           0 :           SgExpression* expression = isSgExpression(result);
   73741           0 :           if (isSgExpression(this) != NULL)
   73742             :              {
   73743           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   73744             : 
   73745             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   73746           0 :                if (operatorPosition != NULL)
   73747             :                   {
   73748             : #if 0
   73749             :                  // Debugging information
   73750             :                     if (operatorPosition->get_parent() == NULL)
   73751             :                        {
   73752             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73753             :                        }
   73754             : #endif
   73755           0 :                     operatorPosition->set_parent(expression);
   73756           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   73757             :                   }
   73758             :              }
   73759             :         }
   73760             : 
   73761             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   73762           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   73763           0 :      if (initializedName != NULL)
   73764             :         {
   73765             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   73766           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   73767           0 :           ROSE_ASSERT(start != NULL);
   73768             : #if 0
   73769             :        // Debugging information
   73770             :           if (start->get_parent() == NULL)
   73771             :              {
   73772             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73773             :              }
   73774             : #endif
   73775           0 :           start->set_parent(initializedName);
   73776           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   73777             : 
   73778             : #if 0
   73779             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   73780             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   73781             : 
   73782             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   73783             :        // ROSE_ASSERT(end != NULL);
   73784             :           if (end == NULL)
   73785             :              {
   73786             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   73787             :              }
   73788             :             else
   73789             :              {
   73790             :                if (end->get_parent() == NULL)
   73791             :                   {
   73792             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   73793             :                   }
   73794             :                end->set_parent(initializedName);
   73795             :                ROSE_ASSERT(end->get_parent() != NULL);
   73796             :              }
   73797             : #endif
   73798             :         }
   73799             : 
   73800             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   73801           0 :      help.insertCopiedNodePair(this,result);
   73802             : 
   73803             :   // printf ("End of copy SgFormatStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   73804             : 
   73805             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   73806             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   73807           0 :      help.decrementDepth();
   73808             : 
   73809             :   // Test if this is the root of the copy!
   73810           0 :      if (help.get_depth() == 0)
   73811             :         {
   73812             :        // This is the original calling node.
   73813             : 
   73814             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   73815             :        // printf ("Calling SgFormatStatement::fixupCopy() (from root of AST being copied) \n");
   73816             : #if ALT_FIXUP_COPY
   73817             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   73818           0 :           fixupCopy_scopes (result,help);
   73819           0 :           fixupCopy_symbols (result,help);
   73820           0 :           fixupCopy_references (result,help);
   73821             : #else
   73822             :           fixupCopy(result,help);
   73823             : #endif
   73824             :        // Allow this to be called recursively, so accumulate the state.
   73825             :        // Also, clear the state in the SgCopyHelp object.
   73826             :        // help.clearState();
   73827             :         }
   73828             : 
   73829           0 :      return result;
   73830             :    }
   73831             : 
   73832             : 
   73833             : /* #line 73834 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   73834             : 
   73835             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   73836             : 
   73837           0 : SgNode* SgTemplateDeclaration::copy ( SgCopyHelp& help) const
   73838             :    {
   73839           0 :      SgTemplateDeclaration* result = NULL;
   73840             : 
   73841             :   // printf ("Copy SgTemplateDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   73842             : 
   73843             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   73844             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   73845             :   // The default value of the depth is 0, so after this call the depth is 1!
   73846           0 :      help.incrementDepth();
   73847             : 
   73848             : #if 0
   73849             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   73850             :   // but it is not generally true that things can only be copied once!
   73851             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   73852             :   // AstAttribute* existingAttribute = const_cast<SgTemplateDeclaration*>(this)->attribute["copied"];
   73853             :      bool previouslyCopied = const_cast<SgTemplateDeclaration*>(this)->attribute.exists("copied");
   73854             :      if (previouslyCopied == true)
   73855             :         {
   73856             :           this->get_file_info()->display("Called from copy SgTemplateDeclaration: debug");
   73857             :         }
   73858             :      ROSE_ASSERT(previouslyCopied == false);
   73859             : 
   73860             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   73861             :      AstAttribute* newAttribute = new AstAttribute();
   73862             :      ROSE_ASSERT(newAttribute != NULL);
   73863             : 
   73864             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   73865             :      const_cast<SgTemplateDeclaration*>(this)->attribute.add("copied",newAttribute);
   73866             : #endif
   73867             : 
   73868             :   // Copy data members from base classes
   73869             :   // Copy constructor parameter data member: startOfConstruct_copy
   73870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   73871             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   73872           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   73873           0 :      if ( p_startOfConstruct != NULL ) 
   73874             :         { 
   73875           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   73876             :         } 
   73877             :        else 
   73878             :         { 
   73879             :           startOfConstruct_copy = NULL; 
   73880             :         } 
   73881             :   // Copy constructor parameter data member: name_copy
   73882             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   73883             :   // case: toBeCopied == COPY_DATA for name
   73884           0 :      SgName name_copy = p_name; 
   73885             :  
   73886             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   73887             : 
   73888             :   // Build an empty copy of this object (will be filled in, but 
   73889             :   // the parent can't be set and must be set by the caller)
   73890           0 :      result = new SgTemplateDeclaration(  startOfConstruct_copy, name_copy );
   73891           0 :      ROSE_ASSERT(result != NULL);
   73892             : 
   73893             :   // Copy data members of "this" class
   73894             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   73895             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   73896             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   73897           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   73898           0 :      if ( p_endOfConstruct != NULL ) 
   73899             :         { 
   73900           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   73901             :         } 
   73902             :        else 
   73903             :         { 
   73904             :           endOfConstruct_copy = NULL; 
   73905             :         } 
   73906             :   /* check for a valid pointer and delete if present */ 
   73907           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   73908             :   /* add assignment to result here */ 
   73909           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   73910             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   73911             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   73912             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   73913           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   73914           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   73915             :         { 
   73916           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   73917             :         } 
   73918             :        else 
   73919             :         { 
   73920             :           attachedPreprocessingInfoPtr_copy = NULL; 
   73921             :         } 
   73922             :   /* check for a valid pointer and delete if present */ 
   73923           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   73924             :   /* add assignment to result here */ 
   73925           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   73926             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   73927             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   73928             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   73929           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   73930           0 :      if ( p_attributeMechanism != NULL ) 
   73931             :         { 
   73932           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   73933             :         } 
   73934             :        else 
   73935             :         { 
   73936             :           attributeMechanism_copy = NULL; 
   73937             :         } 
   73938             :   /* check for a valid pointer and delete if present */ 
   73939           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   73940             :   /* add assignment to result here */ 
   73941           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   73942             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   73943             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   73944             :   // case: toBeCopied == COPY_DATA for numeric_label
   73945           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   73946           0 :      result->p_numeric_label = numeric_label_copy; 
   73947             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   73948             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   73949             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   73950           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   73951           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   73952             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   73953             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   73954             :   // case: toBeCopied == COPY_DATA for decl_attributes
   73955           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   73956           0 :      result->p_decl_attributes = decl_attributes_copy; 
   73957             :   // Copy non-constructor parameter data member (access function): linkage_copy
   73958             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   73959             :   // case: toBeCopied == COPY_DATA for linkage
   73960           0 :      std::string linkage_copy = p_linkage; 
   73961           0 :      result->p_linkage = linkage_copy; 
   73962             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   73963             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   73964             :   // case: toBeCopied == COPY_DATA for declarationModifier
   73965           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   73966           0 :      result->p_declarationModifier = declarationModifier_copy; 
   73967             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   73968             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   73969             :   // case: toBeCopied == COPY_DATA for nameOnly
   73970           0 :      bool nameOnly_copy = p_nameOnly; 
   73971           0 :      result->p_nameOnly = nameOnly_copy; 
   73972             :   // Copy non-constructor parameter data member (access function): forward_copy
   73973             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   73974             :   // case: toBeCopied == COPY_DATA for forward
   73975           0 :      bool forward_copy = p_forward; 
   73976           0 :      result->p_forward = forward_copy; 
   73977             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   73978             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   73979             :   // case: toBeCopied == COPY_DATA for externBrace
   73980           0 :      bool externBrace_copy = p_externBrace; 
   73981           0 :      result->p_externBrace = externBrace_copy; 
   73982             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   73983             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   73984             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   73985           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   73986           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   73987             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   73988             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   73989             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   73990           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   73991           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   73992             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   73993             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   73994             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   73995           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   73996           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   73997             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   73998             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   73999             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   74000           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   74001           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   74002             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   74003             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   74004             :   // case: toBeCopied == COPY_DATA for binding_label
   74005           0 :      std::string binding_label_copy = p_binding_label; 
   74006           0 :      result->p_binding_label = binding_label_copy; 
   74007             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   74008             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   74009             :   // case: toBeCopied == COPY_DATA for declarationScope
   74010           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   74011           0 :      result->p_declarationScope = declarationScope_copy; 
   74012             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   74013             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   74014             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   74015           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   74016           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   74017             :   // Copy non-constructor parameter data member (access function): string_copy
   74018             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string
   74019             :   // case: toBeCopied == COPY_DATA for string
   74020           0 :      SgName string_copy = p_string; 
   74021           0 :      result->p_string = string_copy; 
   74022             :   // Copy non-constructor parameter data member (access function): template_kind_copy
   74023             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for template_kind
   74024             :   // case: toBeCopied == COPY_DATA for template_kind
   74025           0 :      SgTemplateDeclaration::template_type_enum template_kind_copy = p_template_kind; 
   74026           0 :      result->p_template_kind = template_kind_copy; 
   74027             :   // Copy non-constructor parameter data member (list access function): result->get_templateParameters()
   74028             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateParameters
   74029             :   // case: toBeCopied == COPY_DATA for templateParameters
   74030           0 :      SgTemplateParameterPtrList templateParameters_copy = p_templateParameters; 
   74031           0 :      result->p_templateParameters = templateParameters_copy; 
   74032             :   // Copy non-constructor parameter data member (access function): scope_copy
   74033             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   74034             :   // case: toBeCopied == COPY_DATA for scope
   74035           0 :      SgScopeStatement* scope_copy = p_scope; 
   74036           0 :      result->p_scope = scope_copy; 
   74037             :   // Copy non-constructor parameter data member (access function): nonreal_decl_scope_copy
   74038             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nonreal_decl_scope
   74039             :   // case: toBeCopied == COPY_DATA for nonreal_decl_scope
   74040           0 :      SgDeclarationScope* nonreal_decl_scope_copy = p_nonreal_decl_scope; 
   74041           0 :      result->p_nonreal_decl_scope = nonreal_decl_scope_copy; 
   74042             : 
   74043             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   74044             : 
   74045             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   74046             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   74047             :   // fixupCopy(result,help);
   74048             : 
   74049             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   74050             :   // the Sg_File_Info objects that are built for the new IR nodes.
   74051           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   74052           0 :      if (locatedNode != NULL)
   74053             :         {
   74054             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   74055           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   74056           0 :           ROSE_ASSERT(start != NULL);
   74057             : #if 0
   74058             :        // Debugging information
   74059             :           if (start->get_parent() == NULL)
   74060             :              {
   74061             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74062             :              }
   74063             : #endif
   74064           0 :           start->set_parent(locatedNode);
   74065           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   74066             : 
   74067           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   74068             : 
   74069             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   74070             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   74071             :        // ROSE_ASSERT(end != NULL);
   74072           0 :           if (end == NULL)
   74073             :              {
   74074           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   74075             :              }
   74076             :             else
   74077             :              {
   74078             : #if 0
   74079             :             // Debugging information
   74080             :                if (end->get_parent() == NULL)
   74081             :                   {
   74082             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74083             :                   }
   74084             : #endif
   74085           0 :                end->set_parent(locatedNode);
   74086           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   74087             :              }
   74088             : 
   74089           0 :           SgExpression* expression = isSgExpression(result);
   74090           0 :           if (isSgExpression(this) != NULL)
   74091             :              {
   74092           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   74093             : 
   74094             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   74095           0 :                if (operatorPosition != NULL)
   74096             :                   {
   74097             : #if 0
   74098             :                  // Debugging information
   74099             :                     if (operatorPosition->get_parent() == NULL)
   74100             :                        {
   74101             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74102             :                        }
   74103             : #endif
   74104           0 :                     operatorPosition->set_parent(expression);
   74105           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   74106             :                   }
   74107             :              }
   74108             :         }
   74109             : 
   74110             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   74111           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   74112           0 :      if (initializedName != NULL)
   74113             :         {
   74114             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   74115           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   74116           0 :           ROSE_ASSERT(start != NULL);
   74117             : #if 0
   74118             :        // Debugging information
   74119             :           if (start->get_parent() == NULL)
   74120             :              {
   74121             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74122             :              }
   74123             : #endif
   74124           0 :           start->set_parent(initializedName);
   74125           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   74126             : 
   74127             : #if 0
   74128             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   74129             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   74130             : 
   74131             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   74132             :        // ROSE_ASSERT(end != NULL);
   74133             :           if (end == NULL)
   74134             :              {
   74135             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   74136             :              }
   74137             :             else
   74138             :              {
   74139             :                if (end->get_parent() == NULL)
   74140             :                   {
   74141             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74142             :                   }
   74143             :                end->set_parent(initializedName);
   74144             :                ROSE_ASSERT(end->get_parent() != NULL);
   74145             :              }
   74146             : #endif
   74147             :         }
   74148             : 
   74149             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   74150           0 :      help.insertCopiedNodePair(this,result);
   74151             : 
   74152             :   // printf ("End of copy SgTemplateDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   74153             : 
   74154             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   74155             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   74156           0 :      help.decrementDepth();
   74157             : 
   74158             :   // Test if this is the root of the copy!
   74159           0 :      if (help.get_depth() == 0)
   74160             :         {
   74161             :        // This is the original calling node.
   74162             : 
   74163             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   74164             :        // printf ("Calling SgTemplateDeclaration::fixupCopy() (from root of AST being copied) \n");
   74165             : #if ALT_FIXUP_COPY
   74166             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   74167           0 :           fixupCopy_scopes (result,help);
   74168           0 :           fixupCopy_symbols (result,help);
   74169           0 :           fixupCopy_references (result,help);
   74170             : #else
   74171             :           fixupCopy(result,help);
   74172             : #endif
   74173             :        // Allow this to be called recursively, so accumulate the state.
   74174             :        // Also, clear the state in the SgCopyHelp object.
   74175             :        // help.clearState();
   74176             :         }
   74177             : 
   74178           0 :      return result;
   74179             :    }
   74180             : 
   74181             : 
   74182             : /* #line 74183 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   74183             : 
   74184             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   74185             : 
   74186           0 : SgNode* SgTemplateInstantiationDirectiveStatement::copy ( SgCopyHelp& help) const
   74187             :    {
   74188           0 :      SgTemplateInstantiationDirectiveStatement* result = NULL;
   74189             : 
   74190             :   // printf ("Copy SgTemplateInstantiationDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   74191             : 
   74192             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   74193             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   74194             :   // The default value of the depth is 0, so after this call the depth is 1!
   74195           0 :      help.incrementDepth();
   74196             : 
   74197             : #if 0
   74198             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   74199             :   // but it is not generally true that things can only be copied once!
   74200             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   74201             :   // AstAttribute* existingAttribute = const_cast<SgTemplateInstantiationDirectiveStatement*>(this)->attribute["copied"];
   74202             :      bool previouslyCopied = const_cast<SgTemplateInstantiationDirectiveStatement*>(this)->attribute.exists("copied");
   74203             :      if (previouslyCopied == true)
   74204             :         {
   74205             :           this->get_file_info()->display("Called from copy SgTemplateInstantiationDirectiveStatement: debug");
   74206             :         }
   74207             :      ROSE_ASSERT(previouslyCopied == false);
   74208             : 
   74209             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   74210             :      AstAttribute* newAttribute = new AstAttribute();
   74211             :      ROSE_ASSERT(newAttribute != NULL);
   74212             : 
   74213             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   74214             :      const_cast<SgTemplateInstantiationDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   74215             : #endif
   74216             : 
   74217             :   // Copy data members from base classes
   74218             :   // Copy constructor parameter data member: startOfConstruct_copy
   74219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   74220             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   74221           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   74222           0 :      if ( p_startOfConstruct != NULL ) 
   74223             :         { 
   74224           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   74225             :         } 
   74226             :        else 
   74227             :         { 
   74228             :           startOfConstruct_copy = NULL; 
   74229             :         } 
   74230             :   // Copy constructor parameter data member: declaration_copy
   74231           0 :      SgDeclarationStatement* declaration_copy; 
   74232             :   // case: not a listType for (using conditionalToCopyVariable)declaration
   74233           0 :           if (get_declaration() != NULL) 
   74234             :              { 
   74235           0 :                declaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_declaration())); 
   74236             :              } 
   74237             :             else 
   74238             :              { 
   74239             :                declaration_copy = NULL; 
   74240             :              } 
   74241             :  
   74242             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   74243             : 
   74244             :   // Build an empty copy of this object (will be filled in, but 
   74245             :   // the parent can't be set and must be set by the caller)
   74246           0 :      result = new SgTemplateInstantiationDirectiveStatement(  startOfConstruct_copy, declaration_copy );
   74247           0 :      ROSE_ASSERT(result != NULL);
   74248             : 
   74249             :   // Copy data members of "this" class
   74250             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   74251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   74252             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   74253           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   74254           0 :      if ( p_endOfConstruct != NULL ) 
   74255             :         { 
   74256           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   74257             :         } 
   74258             :        else 
   74259             :         { 
   74260             :           endOfConstruct_copy = NULL; 
   74261             :         } 
   74262             :   /* check for a valid pointer and delete if present */ 
   74263           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   74264             :   /* add assignment to result here */ 
   74265           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   74266             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   74267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   74268             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   74269           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   74270           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   74271             :         { 
   74272           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   74273             :         } 
   74274             :        else 
   74275             :         { 
   74276             :           attachedPreprocessingInfoPtr_copy = NULL; 
   74277             :         } 
   74278             :   /* check for a valid pointer and delete if present */ 
   74279           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   74280             :   /* add assignment to result here */ 
   74281           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   74282             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   74283             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   74284             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   74285           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   74286           0 :      if ( p_attributeMechanism != NULL ) 
   74287             :         { 
   74288           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   74289             :         } 
   74290             :        else 
   74291             :         { 
   74292             :           attributeMechanism_copy = NULL; 
   74293             :         } 
   74294             :   /* check for a valid pointer and delete if present */ 
   74295           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   74296             :   /* add assignment to result here */ 
   74297           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   74298             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   74299             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   74300             :   // case: toBeCopied == COPY_DATA for numeric_label
   74301           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   74302           0 :      result->p_numeric_label = numeric_label_copy; 
   74303             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   74304             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   74305             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   74306           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   74307           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   74308             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   74309             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   74310             :   // case: toBeCopied == COPY_DATA for decl_attributes
   74311           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   74312           0 :      result->p_decl_attributes = decl_attributes_copy; 
   74313             :   // Copy non-constructor parameter data member (access function): linkage_copy
   74314             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   74315             :   // case: toBeCopied == COPY_DATA for linkage
   74316           0 :      std::string linkage_copy = p_linkage; 
   74317           0 :      result->p_linkage = linkage_copy; 
   74318             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   74319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   74320             :   // case: toBeCopied == COPY_DATA for declarationModifier
   74321           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   74322           0 :      result->p_declarationModifier = declarationModifier_copy; 
   74323             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   74324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   74325             :   // case: toBeCopied == COPY_DATA for nameOnly
   74326           0 :      bool nameOnly_copy = p_nameOnly; 
   74327           0 :      result->p_nameOnly = nameOnly_copy; 
   74328             :   // Copy non-constructor parameter data member (access function): forward_copy
   74329             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   74330             :   // case: toBeCopied == COPY_DATA for forward
   74331           0 :      bool forward_copy = p_forward; 
   74332           0 :      result->p_forward = forward_copy; 
   74333             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   74334             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   74335             :   // case: toBeCopied == COPY_DATA for externBrace
   74336           0 :      bool externBrace_copy = p_externBrace; 
   74337           0 :      result->p_externBrace = externBrace_copy; 
   74338             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   74339             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   74340             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   74341           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   74342           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   74343             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   74344             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   74345             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   74346           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   74347           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   74348             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   74349             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   74350             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   74351           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   74352           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   74353             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   74354             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   74355             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   74356           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   74357           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   74358             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   74359             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   74360             :   // case: toBeCopied == COPY_DATA for binding_label
   74361           0 :      std::string binding_label_copy = p_binding_label; 
   74362           0 :      result->p_binding_label = binding_label_copy; 
   74363             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   74364             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   74365             :   // case: toBeCopied == COPY_DATA for declarationScope
   74366           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   74367           0 :      result->p_declarationScope = declarationScope_copy; 
   74368             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   74369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   74370             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   74371           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   74372           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   74373             :   // Copy non-constructor parameter data member (access function): do_not_instantiate_copy
   74374             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for do_not_instantiate
   74375             :   // case: toBeCopied == COPY_DATA for do_not_instantiate
   74376           0 :      bool do_not_instantiate_copy = p_do_not_instantiate; 
   74377           0 :      result->p_do_not_instantiate = do_not_instantiate_copy; 
   74378             :   // case: not a listType for (using conditionalToSetParent)declaration
   74379           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
   74380             :              { 
   74381           0 :                declaration_copy->set_parent(result); 
   74382             :              } 
   74383             : 
   74384             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   74385             : 
   74386             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   74387             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   74388             :   // fixupCopy(result,help);
   74389             : 
   74390             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   74391             :   // the Sg_File_Info objects that are built for the new IR nodes.
   74392           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   74393           0 :      if (locatedNode != NULL)
   74394             :         {
   74395             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   74396           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   74397           0 :           ROSE_ASSERT(start != NULL);
   74398             : #if 0
   74399             :        // Debugging information
   74400             :           if (start->get_parent() == NULL)
   74401             :              {
   74402             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74403             :              }
   74404             : #endif
   74405           0 :           start->set_parent(locatedNode);
   74406           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   74407             : 
   74408           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   74409             : 
   74410             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   74411             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   74412             :        // ROSE_ASSERT(end != NULL);
   74413           0 :           if (end == NULL)
   74414             :              {
   74415           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   74416             :              }
   74417             :             else
   74418             :              {
   74419             : #if 0
   74420             :             // Debugging information
   74421             :                if (end->get_parent() == NULL)
   74422             :                   {
   74423             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74424             :                   }
   74425             : #endif
   74426           0 :                end->set_parent(locatedNode);
   74427           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   74428             :              }
   74429             : 
   74430           0 :           SgExpression* expression = isSgExpression(result);
   74431           0 :           if (isSgExpression(this) != NULL)
   74432             :              {
   74433           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   74434             : 
   74435             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   74436           0 :                if (operatorPosition != NULL)
   74437             :                   {
   74438             : #if 0
   74439             :                  // Debugging information
   74440             :                     if (operatorPosition->get_parent() == NULL)
   74441             :                        {
   74442             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74443             :                        }
   74444             : #endif
   74445           0 :                     operatorPosition->set_parent(expression);
   74446           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   74447             :                   }
   74448             :              }
   74449             :         }
   74450             : 
   74451             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   74452           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   74453           0 :      if (initializedName != NULL)
   74454             :         {
   74455             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   74456           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   74457           0 :           ROSE_ASSERT(start != NULL);
   74458             : #if 0
   74459             :        // Debugging information
   74460             :           if (start->get_parent() == NULL)
   74461             :              {
   74462             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74463             :              }
   74464             : #endif
   74465           0 :           start->set_parent(initializedName);
   74466           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   74467             : 
   74468             : #if 0
   74469             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   74470             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   74471             : 
   74472             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   74473             :        // ROSE_ASSERT(end != NULL);
   74474             :           if (end == NULL)
   74475             :              {
   74476             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   74477             :              }
   74478             :             else
   74479             :              {
   74480             :                if (end->get_parent() == NULL)
   74481             :                   {
   74482             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74483             :                   }
   74484             :                end->set_parent(initializedName);
   74485             :                ROSE_ASSERT(end->get_parent() != NULL);
   74486             :              }
   74487             : #endif
   74488             :         }
   74489             : 
   74490             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   74491           0 :      help.insertCopiedNodePair(this,result);
   74492             : 
   74493             :   // printf ("End of copy SgTemplateInstantiationDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   74494             : 
   74495             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   74496             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   74497           0 :      help.decrementDepth();
   74498             : 
   74499             :   // Test if this is the root of the copy!
   74500           0 :      if (help.get_depth() == 0)
   74501             :         {
   74502             :        // This is the original calling node.
   74503             : 
   74504             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   74505             :        // printf ("Calling SgTemplateInstantiationDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   74506             : #if ALT_FIXUP_COPY
   74507             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   74508           0 :           fixupCopy_scopes (result,help);
   74509           0 :           fixupCopy_symbols (result,help);
   74510           0 :           fixupCopy_references (result,help);
   74511             : #else
   74512             :           fixupCopy(result,help);
   74513             : #endif
   74514             :        // Allow this to be called recursively, so accumulate the state.
   74515             :        // Also, clear the state in the SgCopyHelp object.
   74516             :        // help.clearState();
   74517             :         }
   74518             : 
   74519           0 :      return result;
   74520             :    }
   74521             : 
   74522             : 
   74523             : /* #line 74524 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   74524             : 
   74525             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   74526             : 
   74527           0 : SgNode* SgUseStatement::copy ( SgCopyHelp& help) const
   74528             :    {
   74529           0 :      SgUseStatement* result = NULL;
   74530             : 
   74531             :   // printf ("Copy SgUseStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   74532             : 
   74533             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   74534             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   74535             :   // The default value of the depth is 0, so after this call the depth is 1!
   74536           0 :      help.incrementDepth();
   74537             : 
   74538             : #if 0
   74539             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   74540             :   // but it is not generally true that things can only be copied once!
   74541             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   74542             :   // AstAttribute* existingAttribute = const_cast<SgUseStatement*>(this)->attribute["copied"];
   74543             :      bool previouslyCopied = const_cast<SgUseStatement*>(this)->attribute.exists("copied");
   74544             :      if (previouslyCopied == true)
   74545             :         {
   74546             :           this->get_file_info()->display("Called from copy SgUseStatement: debug");
   74547             :         }
   74548             :      ROSE_ASSERT(previouslyCopied == false);
   74549             : 
   74550             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   74551             :      AstAttribute* newAttribute = new AstAttribute();
   74552             :      ROSE_ASSERT(newAttribute != NULL);
   74553             : 
   74554             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   74555             :      const_cast<SgUseStatement*>(this)->attribute.add("copied",newAttribute);
   74556             : #endif
   74557             : 
   74558             :   // Copy data members from base classes
   74559             :   // Copy constructor parameter data member: startOfConstruct_copy
   74560             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   74561             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   74562           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   74563           0 :      if ( p_startOfConstruct != NULL ) 
   74564             :         { 
   74565           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   74566             :         } 
   74567             :        else 
   74568             :         { 
   74569             :           startOfConstruct_copy = NULL; 
   74570             :         } 
   74571             :   // Copy constructor parameter data member: name_copy
   74572             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   74573             :   // case: toBeCopied == COPY_DATA for name
   74574           0 :      SgName name_copy = p_name; 
   74575             :   // Copy constructor parameter data member: only_option_copy
   74576             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for only_option
   74577             :   // case: toBeCopied == COPY_DATA for only_option
   74578           0 :      bool only_option_copy = p_only_option; 
   74579             :   // Copy constructor parameter data member: module_nature_copy
   74580             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for module_nature
   74581             :   // case: toBeCopied == COPY_DATA for module_nature
   74582           0 :      std::string module_nature_copy = p_module_nature; 
   74583             :  
   74584             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   74585             : 
   74586             :   // Build an empty copy of this object (will be filled in, but 
   74587             :   // the parent can't be set and must be set by the caller)
   74588           0 :      result = new SgUseStatement(  startOfConstruct_copy, name_copy, only_option_copy, module_nature_copy );
   74589           0 :      ROSE_ASSERT(result != NULL);
   74590             : 
   74591             :   // Copy data members of "this" class
   74592             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   74593             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   74594             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   74595           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   74596           0 :      if ( p_endOfConstruct != NULL ) 
   74597             :         { 
   74598           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   74599             :         } 
   74600             :        else 
   74601             :         { 
   74602             :           endOfConstruct_copy = NULL; 
   74603             :         } 
   74604             :   /* check for a valid pointer and delete if present */ 
   74605           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   74606             :   /* add assignment to result here */ 
   74607           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   74608             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   74609             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   74610             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   74611           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   74612           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   74613             :         { 
   74614           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   74615             :         } 
   74616             :        else 
   74617             :         { 
   74618             :           attachedPreprocessingInfoPtr_copy = NULL; 
   74619             :         } 
   74620             :   /* check for a valid pointer and delete if present */ 
   74621           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   74622             :   /* add assignment to result here */ 
   74623           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   74624             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   74625             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   74626             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   74627           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   74628           0 :      if ( p_attributeMechanism != NULL ) 
   74629             :         { 
   74630           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   74631             :         } 
   74632             :        else 
   74633             :         { 
   74634             :           attributeMechanism_copy = NULL; 
   74635             :         } 
   74636             :   /* check for a valid pointer and delete if present */ 
   74637           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   74638             :   /* add assignment to result here */ 
   74639           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   74640             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   74641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   74642             :   // case: toBeCopied == COPY_DATA for numeric_label
   74643           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   74644           0 :      result->p_numeric_label = numeric_label_copy; 
   74645             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   74646             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   74647             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   74648           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   74649           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   74650             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   74651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   74652             :   // case: toBeCopied == COPY_DATA for decl_attributes
   74653           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   74654           0 :      result->p_decl_attributes = decl_attributes_copy; 
   74655             :   // Copy non-constructor parameter data member (access function): linkage_copy
   74656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   74657             :   // case: toBeCopied == COPY_DATA for linkage
   74658           0 :      std::string linkage_copy = p_linkage; 
   74659           0 :      result->p_linkage = linkage_copy; 
   74660             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   74661             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   74662             :   // case: toBeCopied == COPY_DATA for declarationModifier
   74663           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   74664           0 :      result->p_declarationModifier = declarationModifier_copy; 
   74665             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   74666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   74667             :   // case: toBeCopied == COPY_DATA for nameOnly
   74668           0 :      bool nameOnly_copy = p_nameOnly; 
   74669           0 :      result->p_nameOnly = nameOnly_copy; 
   74670             :   // Copy non-constructor parameter data member (access function): forward_copy
   74671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   74672             :   // case: toBeCopied == COPY_DATA for forward
   74673           0 :      bool forward_copy = p_forward; 
   74674           0 :      result->p_forward = forward_copy; 
   74675             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   74676             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   74677             :   // case: toBeCopied == COPY_DATA for externBrace
   74678           0 :      bool externBrace_copy = p_externBrace; 
   74679           0 :      result->p_externBrace = externBrace_copy; 
   74680             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   74681             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   74682             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   74683           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   74684           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   74685             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   74686             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   74687             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   74688           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   74689           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   74690             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   74691             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   74692             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   74693           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   74694           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   74695             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   74696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   74697             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   74698           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   74699           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   74700             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   74701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   74702             :   // case: toBeCopied == COPY_DATA for binding_label
   74703           0 :      std::string binding_label_copy = p_binding_label; 
   74704           0 :      result->p_binding_label = binding_label_copy; 
   74705             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   74706             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   74707             :   // case: toBeCopied == COPY_DATA for declarationScope
   74708           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   74709           0 :      result->p_declarationScope = declarationScope_copy; 
   74710             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   74711             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   74712             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   74713           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   74714           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   74715             :   // Copy non-constructor parameter data member (list access function): result->get_rename_list()
   74716           0 :      SgRenamePairPtrList rename_list_copy; 
   74717             :   // case: listType for rename_list
   74718             :   // case: listType (typeIsPointerToList == false) for rename_list
   74719           0 :      SgRenamePairPtrList::const_iterator source_rename_list_iterator = get_rename_list().begin(); 
   74720           0 :      for ( /* empty by design */; source_rename_list_iterator != get_rename_list().end(); ++source_rename_list_iterator) 
   74721             :         { 
   74722           0 :           SgRenamePair* source_list_element = *source_rename_list_iterator; 
   74723           0 :           SgRenamePair* copy_list_element = NULL; 
   74724           0 :           if (source_list_element != NULL) 
   74725             :              { 
   74726           0 :                copy_list_element = static_cast<SgRenamePair*>(help.copyAst(*source_rename_list_iterator)); 
   74727             :              } 
   74728             :             else 
   74729             :              { 
   74730             :                copy_list_element = NULL; 
   74731             :              } 
   74732           0 :           rename_list_copy.push_back(copy_list_element); 
   74733             :         } 
   74734           0 :      result->p_rename_list = rename_list_copy; 
   74735             :   // case: listType for rename_list
   74736             :   // case: listType (typeIsPointerToList == false) for rename_list
   74737           0 :      SgRenamePairPtrList::const_iterator rename_list_iterator = result->get_rename_list().begin(); 
   74738           0 :      for ( /* empty by design */; rename_list_iterator != result->get_rename_list().end(); ++rename_list_iterator) 
   74739             :         { 
   74740           0 :           SgRenamePair* list_element = *rename_list_iterator; 
   74741           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   74742             :              { 
   74743           0 :                list_element->set_parent(result); 
   74744             :              } 
   74745             :         } 
   74746             :   // Copy non-constructor parameter data member (access function): module_copy
   74747             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for module
   74748             :   // case: toBeCopied == COPY_DATA for module
   74749           0 :      SgModuleStatement* module_copy = p_module; 
   74750           0 :      result->p_module = module_copy; 
   74751             : 
   74752             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   74753             : 
   74754             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   74755             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   74756             :   // fixupCopy(result,help);
   74757             : 
   74758             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   74759             :   // the Sg_File_Info objects that are built for the new IR nodes.
   74760           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   74761           0 :      if (locatedNode != NULL)
   74762             :         {
   74763             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   74764           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   74765           0 :           ROSE_ASSERT(start != NULL);
   74766             : #if 0
   74767             :        // Debugging information
   74768             :           if (start->get_parent() == NULL)
   74769             :              {
   74770             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74771             :              }
   74772             : #endif
   74773           0 :           start->set_parent(locatedNode);
   74774           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   74775             : 
   74776           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   74777             : 
   74778             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   74779             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   74780             :        // ROSE_ASSERT(end != NULL);
   74781           0 :           if (end == NULL)
   74782             :              {
   74783           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   74784             :              }
   74785             :             else
   74786             :              {
   74787             : #if 0
   74788             :             // Debugging information
   74789             :                if (end->get_parent() == NULL)
   74790             :                   {
   74791             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74792             :                   }
   74793             : #endif
   74794           0 :                end->set_parent(locatedNode);
   74795           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   74796             :              }
   74797             : 
   74798           0 :           SgExpression* expression = isSgExpression(result);
   74799           0 :           if (isSgExpression(this) != NULL)
   74800             :              {
   74801           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   74802             : 
   74803             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   74804           0 :                if (operatorPosition != NULL)
   74805             :                   {
   74806             : #if 0
   74807             :                  // Debugging information
   74808             :                     if (operatorPosition->get_parent() == NULL)
   74809             :                        {
   74810             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74811             :                        }
   74812             : #endif
   74813           0 :                     operatorPosition->set_parent(expression);
   74814           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   74815             :                   }
   74816             :              }
   74817             :         }
   74818             : 
   74819             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   74820           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   74821           0 :      if (initializedName != NULL)
   74822             :         {
   74823             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   74824           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   74825           0 :           ROSE_ASSERT(start != NULL);
   74826             : #if 0
   74827             :        // Debugging information
   74828             :           if (start->get_parent() == NULL)
   74829             :              {
   74830             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74831             :              }
   74832             : #endif
   74833           0 :           start->set_parent(initializedName);
   74834           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   74835             : 
   74836             : #if 0
   74837             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   74838             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   74839             : 
   74840             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   74841             :        // ROSE_ASSERT(end != NULL);
   74842             :           if (end == NULL)
   74843             :              {
   74844             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   74845             :              }
   74846             :             else
   74847             :              {
   74848             :                if (end->get_parent() == NULL)
   74849             :                   {
   74850             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   74851             :                   }
   74852             :                end->set_parent(initializedName);
   74853             :                ROSE_ASSERT(end->get_parent() != NULL);
   74854             :              }
   74855             : #endif
   74856             :         }
   74857             : 
   74858             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   74859           0 :      help.insertCopiedNodePair(this,result);
   74860             : 
   74861             :   // printf ("End of copy SgUseStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   74862             : 
   74863             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   74864             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   74865           0 :      help.decrementDepth();
   74866             : 
   74867             :   // Test if this is the root of the copy!
   74868           0 :      if (help.get_depth() == 0)
   74869             :         {
   74870             :        // This is the original calling node.
   74871             : 
   74872             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   74873             :        // printf ("Calling SgUseStatement::fixupCopy() (from root of AST being copied) \n");
   74874             : #if ALT_FIXUP_COPY
   74875             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   74876           0 :           fixupCopy_scopes (result,help);
   74877           0 :           fixupCopy_symbols (result,help);
   74878           0 :           fixupCopy_references (result,help);
   74879             : #else
   74880             :           fixupCopy(result,help);
   74881             : #endif
   74882             :        // Allow this to be called recursively, so accumulate the state.
   74883             :        // Also, clear the state in the SgCopyHelp object.
   74884             :        // help.clearState();
   74885             :         }
   74886             : 
   74887           0 :      return result;
   74888             :    }
   74889             : 
   74890             : 
   74891             : /* #line 74892 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   74892             : 
   74893             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   74894             : 
   74895           0 : SgNode* SgParameterStatement::copy ( SgCopyHelp& help) const
   74896             :    {
   74897           0 :      SgParameterStatement* result = NULL;
   74898             : 
   74899             :   // printf ("Copy SgParameterStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   74900             : 
   74901             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   74902             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   74903             :   // The default value of the depth is 0, so after this call the depth is 1!
   74904           0 :      help.incrementDepth();
   74905             : 
   74906             : #if 0
   74907             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   74908             :   // but it is not generally true that things can only be copied once!
   74909             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   74910             :   // AstAttribute* existingAttribute = const_cast<SgParameterStatement*>(this)->attribute["copied"];
   74911             :      bool previouslyCopied = const_cast<SgParameterStatement*>(this)->attribute.exists("copied");
   74912             :      if (previouslyCopied == true)
   74913             :         {
   74914             :           this->get_file_info()->display("Called from copy SgParameterStatement: debug");
   74915             :         }
   74916             :      ROSE_ASSERT(previouslyCopied == false);
   74917             : 
   74918             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   74919             :      AstAttribute* newAttribute = new AstAttribute();
   74920             :      ROSE_ASSERT(newAttribute != NULL);
   74921             : 
   74922             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   74923             :      const_cast<SgParameterStatement*>(this)->attribute.add("copied",newAttribute);
   74924             : #endif
   74925             : 
   74926             :   // Copy data members from base classes
   74927             :   // Copy constructor parameter data member: startOfConstruct_copy
   74928             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   74929             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   74930           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   74931           0 :      if ( p_startOfConstruct != NULL ) 
   74932             :         { 
   74933           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   74934             :         } 
   74935             :        else 
   74936             :         { 
   74937             :           startOfConstruct_copy = NULL; 
   74938             :         } 
   74939             :  
   74940             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   74941             : 
   74942             :   // Build an empty copy of this object (will be filled in, but 
   74943             :   // the parent can't be set and must be set by the caller)
   74944           0 :      result = new SgParameterStatement(  startOfConstruct_copy );
   74945           0 :      ROSE_ASSERT(result != NULL);
   74946             : 
   74947             :   // Copy data members of "this" class
   74948             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   74949             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   74950             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   74951           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   74952           0 :      if ( p_endOfConstruct != NULL ) 
   74953             :         { 
   74954           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   74955             :         } 
   74956             :        else 
   74957             :         { 
   74958             :           endOfConstruct_copy = NULL; 
   74959             :         } 
   74960             :   /* check for a valid pointer and delete if present */ 
   74961           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   74962             :   /* add assignment to result here */ 
   74963           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   74964             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   74965             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   74966             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   74967           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   74968           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   74969             :         { 
   74970           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   74971             :         } 
   74972             :        else 
   74973             :         { 
   74974             :           attachedPreprocessingInfoPtr_copy = NULL; 
   74975             :         } 
   74976             :   /* check for a valid pointer and delete if present */ 
   74977           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   74978             :   /* add assignment to result here */ 
   74979           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   74980             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   74981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   74982             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   74983           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   74984           0 :      if ( p_attributeMechanism != NULL ) 
   74985             :         { 
   74986           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   74987             :         } 
   74988             :        else 
   74989             :         { 
   74990             :           attributeMechanism_copy = NULL; 
   74991             :         } 
   74992             :   /* check for a valid pointer and delete if present */ 
   74993           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   74994             :   /* add assignment to result here */ 
   74995           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   74996             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   74997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   74998             :   // case: toBeCopied == COPY_DATA for numeric_label
   74999           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   75000           0 :      result->p_numeric_label = numeric_label_copy; 
   75001             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   75002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   75003             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   75004           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   75005           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   75006             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   75007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   75008             :   // case: toBeCopied == COPY_DATA for decl_attributes
   75009           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   75010           0 :      result->p_decl_attributes = decl_attributes_copy; 
   75011             :   // Copy non-constructor parameter data member (access function): linkage_copy
   75012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   75013             :   // case: toBeCopied == COPY_DATA for linkage
   75014           0 :      std::string linkage_copy = p_linkage; 
   75015           0 :      result->p_linkage = linkage_copy; 
   75016             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   75017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   75018             :   // case: toBeCopied == COPY_DATA for declarationModifier
   75019           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   75020           0 :      result->p_declarationModifier = declarationModifier_copy; 
   75021             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   75022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   75023             :   // case: toBeCopied == COPY_DATA for nameOnly
   75024           0 :      bool nameOnly_copy = p_nameOnly; 
   75025           0 :      result->p_nameOnly = nameOnly_copy; 
   75026             :   // Copy non-constructor parameter data member (access function): forward_copy
   75027             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   75028             :   // case: toBeCopied == COPY_DATA for forward
   75029           0 :      bool forward_copy = p_forward; 
   75030           0 :      result->p_forward = forward_copy; 
   75031             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   75032             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   75033             :   // case: toBeCopied == COPY_DATA for externBrace
   75034           0 :      bool externBrace_copy = p_externBrace; 
   75035           0 :      result->p_externBrace = externBrace_copy; 
   75036             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   75037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   75038             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   75039           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   75040           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   75041             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   75042             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   75043             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   75044           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   75045           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   75046             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   75047             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   75048             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   75049           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   75050           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   75051             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   75052             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   75053             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   75054           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   75055           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   75056             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   75057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   75058             :   // case: toBeCopied == COPY_DATA for binding_label
   75059           0 :      std::string binding_label_copy = p_binding_label; 
   75060           0 :      result->p_binding_label = binding_label_copy; 
   75061             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   75062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   75063             :   // case: toBeCopied == COPY_DATA for declarationScope
   75064           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   75065           0 :      result->p_declarationScope = declarationScope_copy; 
   75066             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   75067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   75068             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   75069           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   75070           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   75071             : 
   75072             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   75073             : 
   75074             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   75075             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   75076             :   // fixupCopy(result,help);
   75077             : 
   75078             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   75079             :   // the Sg_File_Info objects that are built for the new IR nodes.
   75080           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   75081           0 :      if (locatedNode != NULL)
   75082             :         {
   75083             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   75084           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   75085           0 :           ROSE_ASSERT(start != NULL);
   75086             : #if 0
   75087             :        // Debugging information
   75088             :           if (start->get_parent() == NULL)
   75089             :              {
   75090             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75091             :              }
   75092             : #endif
   75093           0 :           start->set_parent(locatedNode);
   75094           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   75095             : 
   75096           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   75097             : 
   75098             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   75099             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   75100             :        // ROSE_ASSERT(end != NULL);
   75101           0 :           if (end == NULL)
   75102             :              {
   75103           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   75104             :              }
   75105             :             else
   75106             :              {
   75107             : #if 0
   75108             :             // Debugging information
   75109             :                if (end->get_parent() == NULL)
   75110             :                   {
   75111             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75112             :                   }
   75113             : #endif
   75114           0 :                end->set_parent(locatedNode);
   75115           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   75116             :              }
   75117             : 
   75118           0 :           SgExpression* expression = isSgExpression(result);
   75119           0 :           if (isSgExpression(this) != NULL)
   75120             :              {
   75121           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   75122             : 
   75123             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   75124           0 :                if (operatorPosition != NULL)
   75125             :                   {
   75126             : #if 0
   75127             :                  // Debugging information
   75128             :                     if (operatorPosition->get_parent() == NULL)
   75129             :                        {
   75130             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75131             :                        }
   75132             : #endif
   75133           0 :                     operatorPosition->set_parent(expression);
   75134           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   75135             :                   }
   75136             :              }
   75137             :         }
   75138             : 
   75139             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   75140           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   75141           0 :      if (initializedName != NULL)
   75142             :         {
   75143             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   75144           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   75145           0 :           ROSE_ASSERT(start != NULL);
   75146             : #if 0
   75147             :        // Debugging information
   75148             :           if (start->get_parent() == NULL)
   75149             :              {
   75150             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75151             :              }
   75152             : #endif
   75153           0 :           start->set_parent(initializedName);
   75154           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   75155             : 
   75156             : #if 0
   75157             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   75158             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   75159             : 
   75160             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   75161             :        // ROSE_ASSERT(end != NULL);
   75162             :           if (end == NULL)
   75163             :              {
   75164             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   75165             :              }
   75166             :             else
   75167             :              {
   75168             :                if (end->get_parent() == NULL)
   75169             :                   {
   75170             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75171             :                   }
   75172             :                end->set_parent(initializedName);
   75173             :                ROSE_ASSERT(end->get_parent() != NULL);
   75174             :              }
   75175             : #endif
   75176             :         }
   75177             : 
   75178             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   75179           0 :      help.insertCopiedNodePair(this,result);
   75180             : 
   75181             :   // printf ("End of copy SgParameterStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   75182             : 
   75183             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   75184             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   75185           0 :      help.decrementDepth();
   75186             : 
   75187             :   // Test if this is the root of the copy!
   75188           0 :      if (help.get_depth() == 0)
   75189             :         {
   75190             :        // This is the original calling node.
   75191             : 
   75192             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   75193             :        // printf ("Calling SgParameterStatement::fixupCopy() (from root of AST being copied) \n");
   75194             : #if ALT_FIXUP_COPY
   75195             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   75196           0 :           fixupCopy_scopes (result,help);
   75197           0 :           fixupCopy_symbols (result,help);
   75198           0 :           fixupCopy_references (result,help);
   75199             : #else
   75200             :           fixupCopy(result,help);
   75201             : #endif
   75202             :        // Allow this to be called recursively, so accumulate the state.
   75203             :        // Also, clear the state in the SgCopyHelp object.
   75204             :        // help.clearState();
   75205             :         }
   75206             : 
   75207           0 :      return result;
   75208             :    }
   75209             : 
   75210             : 
   75211             : /* #line 75212 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   75212             : 
   75213             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   75214             : 
   75215           0 : SgNode* SgNamespaceDeclarationStatement::copy ( SgCopyHelp& help) const
   75216             :    {
   75217           0 :      SgNamespaceDeclarationStatement* result = NULL;
   75218             : 
   75219             :   // printf ("Copy SgNamespaceDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   75220             : 
   75221             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   75222             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   75223             :   // The default value of the depth is 0, so after this call the depth is 1!
   75224           0 :      help.incrementDepth();
   75225             : 
   75226             : #if 0
   75227             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   75228             :   // but it is not generally true that things can only be copied once!
   75229             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   75230             :   // AstAttribute* existingAttribute = const_cast<SgNamespaceDeclarationStatement*>(this)->attribute["copied"];
   75231             :      bool previouslyCopied = const_cast<SgNamespaceDeclarationStatement*>(this)->attribute.exists("copied");
   75232             :      if (previouslyCopied == true)
   75233             :         {
   75234             :           this->get_file_info()->display("Called from copy SgNamespaceDeclarationStatement: debug");
   75235             :         }
   75236             :      ROSE_ASSERT(previouslyCopied == false);
   75237             : 
   75238             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   75239             :      AstAttribute* newAttribute = new AstAttribute();
   75240             :      ROSE_ASSERT(newAttribute != NULL);
   75241             : 
   75242             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   75243             :      const_cast<SgNamespaceDeclarationStatement*>(this)->attribute.add("copied",newAttribute);
   75244             : #endif
   75245             : 
   75246             :   // Copy data members from base classes
   75247             :   // Copy constructor parameter data member: startOfConstruct_copy
   75248             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   75249             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   75250           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   75251           0 :      if ( p_startOfConstruct != NULL ) 
   75252             :         { 
   75253           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   75254             :         } 
   75255             :        else 
   75256             :         { 
   75257             :           startOfConstruct_copy = NULL; 
   75258             :         } 
   75259             :   // Copy constructor parameter data member: name_copy
   75260             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   75261             :   // case: toBeCopied == COPY_DATA for name
   75262           0 :      SgName name_copy = p_name; 
   75263             :   // Copy constructor parameter data member: definition_copy
   75264           0 :      SgNamespaceDefinitionStatement* definition_copy; 
   75265             :   // case: not a listType for (using conditionalToCopyVariable)definition
   75266           0 :           if (get_definition() != NULL) 
   75267             :              { 
   75268           0 :                definition_copy = static_cast<SgNamespaceDefinitionStatement*>(help.copyAst(get_definition())); 
   75269             :              } 
   75270             :             else 
   75271             :              { 
   75272             :                definition_copy = NULL; 
   75273             :              } 
   75274             :   // Copy constructor parameter data member: isUnnamedNamespace_copy
   75275             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isUnnamedNamespace
   75276             :   // case: toBeCopied == COPY_DATA for isUnnamedNamespace
   75277           0 :      bool isUnnamedNamespace_copy = p_isUnnamedNamespace; 
   75278             :  
   75279             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   75280             : 
   75281             :   // Build an empty copy of this object (will be filled in, but 
   75282             :   // the parent can't be set and must be set by the caller)
   75283           0 :      result = new SgNamespaceDeclarationStatement(  startOfConstruct_copy, name_copy, definition_copy, isUnnamedNamespace_copy );
   75284           0 :      ROSE_ASSERT(result != NULL);
   75285             : 
   75286             :   // Copy data members of "this" class
   75287             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   75288             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   75289             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   75290           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   75291           0 :      if ( p_endOfConstruct != NULL ) 
   75292             :         { 
   75293           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   75294             :         } 
   75295             :        else 
   75296             :         { 
   75297             :           endOfConstruct_copy = NULL; 
   75298             :         } 
   75299             :   /* check for a valid pointer and delete if present */ 
   75300           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   75301             :   /* add assignment to result here */ 
   75302           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   75303             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   75304             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   75305             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   75306           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   75307           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   75308             :         { 
   75309           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   75310             :         } 
   75311             :        else 
   75312             :         { 
   75313             :           attachedPreprocessingInfoPtr_copy = NULL; 
   75314             :         } 
   75315             :   /* check for a valid pointer and delete if present */ 
   75316           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   75317             :   /* add assignment to result here */ 
   75318           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   75319             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   75320             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   75321             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   75322           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   75323           0 :      if ( p_attributeMechanism != NULL ) 
   75324             :         { 
   75325           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   75326             :         } 
   75327             :        else 
   75328             :         { 
   75329             :           attributeMechanism_copy = NULL; 
   75330             :         } 
   75331             :   /* check for a valid pointer and delete if present */ 
   75332           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   75333             :   /* add assignment to result here */ 
   75334           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   75335             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   75336             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   75337             :   // case: toBeCopied == COPY_DATA for numeric_label
   75338           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   75339           0 :      result->p_numeric_label = numeric_label_copy; 
   75340             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   75341             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   75342             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   75343           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   75344           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   75345             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   75346             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   75347             :   // case: toBeCopied == COPY_DATA for decl_attributes
   75348           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   75349           0 :      result->p_decl_attributes = decl_attributes_copy; 
   75350             :   // Copy non-constructor parameter data member (access function): linkage_copy
   75351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   75352             :   // case: toBeCopied == COPY_DATA for linkage
   75353           0 :      std::string linkage_copy = p_linkage; 
   75354           0 :      result->p_linkage = linkage_copy; 
   75355             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   75356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   75357             :   // case: toBeCopied == COPY_DATA for declarationModifier
   75358           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   75359           0 :      result->p_declarationModifier = declarationModifier_copy; 
   75360             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   75361             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   75362             :   // case: toBeCopied == COPY_DATA for nameOnly
   75363           0 :      bool nameOnly_copy = p_nameOnly; 
   75364           0 :      result->p_nameOnly = nameOnly_copy; 
   75365             :   // Copy non-constructor parameter data member (access function): forward_copy
   75366             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   75367             :   // case: toBeCopied == COPY_DATA for forward
   75368           0 :      bool forward_copy = p_forward; 
   75369           0 :      result->p_forward = forward_copy; 
   75370             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   75371             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   75372             :   // case: toBeCopied == COPY_DATA for externBrace
   75373           0 :      bool externBrace_copy = p_externBrace; 
   75374           0 :      result->p_externBrace = externBrace_copy; 
   75375             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   75376             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   75377             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   75378           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   75379           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   75380             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   75381             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   75382             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   75383           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   75384           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   75385             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   75386             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   75387             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   75388           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   75389           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   75390             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   75391             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   75392             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   75393           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   75394           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   75395             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   75396             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   75397             :   // case: toBeCopied == COPY_DATA for binding_label
   75398           0 :      std::string binding_label_copy = p_binding_label; 
   75399           0 :      result->p_binding_label = binding_label_copy; 
   75400             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   75401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   75402             :   // case: toBeCopied == COPY_DATA for declarationScope
   75403           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   75404           0 :      result->p_declarationScope = declarationScope_copy; 
   75405             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   75406             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   75407             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   75408           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   75409           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   75410             :   // Copy non-constructor parameter data member (access function): isInlinedNamespace_copy
   75411             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isInlinedNamespace
   75412             :   // case: toBeCopied == COPY_DATA for isInlinedNamespace
   75413           0 :      bool isInlinedNamespace_copy = p_isInlinedNamespace; 
   75414           0 :      result->p_isInlinedNamespace = isInlinedNamespace_copy; 
   75415             :   // case: not a listType for (using conditionalToSetParent)definition
   75416           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   75417             :              { 
   75418           0 :                definition_copy->set_parent(result); 
   75419             :              } 
   75420             : 
   75421             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   75422             : 
   75423             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   75424             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   75425             :   // fixupCopy(result,help);
   75426             : 
   75427             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   75428             :   // the Sg_File_Info objects that are built for the new IR nodes.
   75429           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   75430           0 :      if (locatedNode != NULL)
   75431             :         {
   75432             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   75433           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   75434           0 :           ROSE_ASSERT(start != NULL);
   75435             : #if 0
   75436             :        // Debugging information
   75437             :           if (start->get_parent() == NULL)
   75438             :              {
   75439             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75440             :              }
   75441             : #endif
   75442           0 :           start->set_parent(locatedNode);
   75443           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   75444             : 
   75445           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   75446             : 
   75447             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   75448             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   75449             :        // ROSE_ASSERT(end != NULL);
   75450           0 :           if (end == NULL)
   75451             :              {
   75452           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   75453             :              }
   75454             :             else
   75455             :              {
   75456             : #if 0
   75457             :             // Debugging information
   75458             :                if (end->get_parent() == NULL)
   75459             :                   {
   75460             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75461             :                   }
   75462             : #endif
   75463           0 :                end->set_parent(locatedNode);
   75464           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   75465             :              }
   75466             : 
   75467           0 :           SgExpression* expression = isSgExpression(result);
   75468           0 :           if (isSgExpression(this) != NULL)
   75469             :              {
   75470           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   75471             : 
   75472             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   75473           0 :                if (operatorPosition != NULL)
   75474             :                   {
   75475             : #if 0
   75476             :                  // Debugging information
   75477             :                     if (operatorPosition->get_parent() == NULL)
   75478             :                        {
   75479             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75480             :                        }
   75481             : #endif
   75482           0 :                     operatorPosition->set_parent(expression);
   75483           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   75484             :                   }
   75485             :              }
   75486             :         }
   75487             : 
   75488             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   75489           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   75490           0 :      if (initializedName != NULL)
   75491             :         {
   75492             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   75493           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   75494           0 :           ROSE_ASSERT(start != NULL);
   75495             : #if 0
   75496             :        // Debugging information
   75497             :           if (start->get_parent() == NULL)
   75498             :              {
   75499             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75500             :              }
   75501             : #endif
   75502           0 :           start->set_parent(initializedName);
   75503           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   75504             : 
   75505             : #if 0
   75506             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   75507             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   75508             : 
   75509             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   75510             :        // ROSE_ASSERT(end != NULL);
   75511             :           if (end == NULL)
   75512             :              {
   75513             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   75514             :              }
   75515             :             else
   75516             :              {
   75517             :                if (end->get_parent() == NULL)
   75518             :                   {
   75519             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75520             :                   }
   75521             :                end->set_parent(initializedName);
   75522             :                ROSE_ASSERT(end->get_parent() != NULL);
   75523             :              }
   75524             : #endif
   75525             :         }
   75526             : 
   75527             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   75528           0 :      help.insertCopiedNodePair(this,result);
   75529             : 
   75530             :   // printf ("End of copy SgNamespaceDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   75531             : 
   75532             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   75533             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   75534           0 :      help.decrementDepth();
   75535             : 
   75536             :   // Test if this is the root of the copy!
   75537           0 :      if (help.get_depth() == 0)
   75538             :         {
   75539             :        // This is the original calling node.
   75540             : 
   75541             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   75542             :        // printf ("Calling SgNamespaceDeclarationStatement::fixupCopy() (from root of AST being copied) \n");
   75543             : #if ALT_FIXUP_COPY
   75544             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   75545           0 :           fixupCopy_scopes (result,help);
   75546           0 :           fixupCopy_symbols (result,help);
   75547           0 :           fixupCopy_references (result,help);
   75548             : #else
   75549             :           fixupCopy(result,help);
   75550             : #endif
   75551             :        // Allow this to be called recursively, so accumulate the state.
   75552             :        // Also, clear the state in the SgCopyHelp object.
   75553             :        // help.clearState();
   75554             :         }
   75555             : 
   75556           0 :      return result;
   75557             :    }
   75558             : 
   75559             : 
   75560             : /* #line 75561 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   75561             : 
   75562             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   75563             : 
   75564           0 : SgNode* SgEquivalenceStatement::copy ( SgCopyHelp& help) const
   75565             :    {
   75566           0 :      SgEquivalenceStatement* result = NULL;
   75567             : 
   75568             :   // printf ("Copy SgEquivalenceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   75569             : 
   75570             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   75571             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   75572             :   // The default value of the depth is 0, so after this call the depth is 1!
   75573           0 :      help.incrementDepth();
   75574             : 
   75575             : #if 0
   75576             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   75577             :   // but it is not generally true that things can only be copied once!
   75578             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   75579             :   // AstAttribute* existingAttribute = const_cast<SgEquivalenceStatement*>(this)->attribute["copied"];
   75580             :      bool previouslyCopied = const_cast<SgEquivalenceStatement*>(this)->attribute.exists("copied");
   75581             :      if (previouslyCopied == true)
   75582             :         {
   75583             :           this->get_file_info()->display("Called from copy SgEquivalenceStatement: debug");
   75584             :         }
   75585             :      ROSE_ASSERT(previouslyCopied == false);
   75586             : 
   75587             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   75588             :      AstAttribute* newAttribute = new AstAttribute();
   75589             :      ROSE_ASSERT(newAttribute != NULL);
   75590             : 
   75591             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   75592             :      const_cast<SgEquivalenceStatement*>(this)->attribute.add("copied",newAttribute);
   75593             : #endif
   75594             : 
   75595             :   // Copy data members from base classes
   75596             :   // Copy constructor parameter data member: startOfConstruct_copy
   75597             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   75598             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   75599           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   75600           0 :      if ( p_startOfConstruct != NULL ) 
   75601             :         { 
   75602           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   75603             :         } 
   75604             :        else 
   75605             :         { 
   75606             :           startOfConstruct_copy = NULL; 
   75607             :         } 
   75608             :  
   75609             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   75610             : 
   75611             :   // Build an empty copy of this object (will be filled in, but 
   75612             :   // the parent can't be set and must be set by the caller)
   75613           0 :      result = new SgEquivalenceStatement(  startOfConstruct_copy );
   75614           0 :      ROSE_ASSERT(result != NULL);
   75615             : 
   75616             :   // Copy data members of "this" class
   75617             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   75618             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   75619             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   75620           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   75621           0 :      if ( p_endOfConstruct != NULL ) 
   75622             :         { 
   75623           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   75624             :         } 
   75625             :        else 
   75626             :         { 
   75627             :           endOfConstruct_copy = NULL; 
   75628             :         } 
   75629             :   /* check for a valid pointer and delete if present */ 
   75630           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   75631             :   /* add assignment to result here */ 
   75632           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   75633             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   75634             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   75635             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   75636           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   75637           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   75638             :         { 
   75639           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   75640             :         } 
   75641             :        else 
   75642             :         { 
   75643             :           attachedPreprocessingInfoPtr_copy = NULL; 
   75644             :         } 
   75645             :   /* check for a valid pointer and delete if present */ 
   75646           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   75647             :   /* add assignment to result here */ 
   75648           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   75649             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   75650             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   75651             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   75652           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   75653           0 :      if ( p_attributeMechanism != NULL ) 
   75654             :         { 
   75655           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   75656             :         } 
   75657             :        else 
   75658             :         { 
   75659             :           attributeMechanism_copy = NULL; 
   75660             :         } 
   75661             :   /* check for a valid pointer and delete if present */ 
   75662           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   75663             :   /* add assignment to result here */ 
   75664           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   75665             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   75666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   75667             :   // case: toBeCopied == COPY_DATA for numeric_label
   75668           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   75669           0 :      result->p_numeric_label = numeric_label_copy; 
   75670             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   75671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   75672             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   75673           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   75674           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   75675             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   75676             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   75677             :   // case: toBeCopied == COPY_DATA for decl_attributes
   75678           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   75679           0 :      result->p_decl_attributes = decl_attributes_copy; 
   75680             :   // Copy non-constructor parameter data member (access function): linkage_copy
   75681             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   75682             :   // case: toBeCopied == COPY_DATA for linkage
   75683           0 :      std::string linkage_copy = p_linkage; 
   75684           0 :      result->p_linkage = linkage_copy; 
   75685             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   75686             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   75687             :   // case: toBeCopied == COPY_DATA for declarationModifier
   75688           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   75689           0 :      result->p_declarationModifier = declarationModifier_copy; 
   75690             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   75691             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   75692             :   // case: toBeCopied == COPY_DATA for nameOnly
   75693           0 :      bool nameOnly_copy = p_nameOnly; 
   75694           0 :      result->p_nameOnly = nameOnly_copy; 
   75695             :   // Copy non-constructor parameter data member (access function): forward_copy
   75696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   75697             :   // case: toBeCopied == COPY_DATA for forward
   75698           0 :      bool forward_copy = p_forward; 
   75699           0 :      result->p_forward = forward_copy; 
   75700             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   75701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   75702             :   // case: toBeCopied == COPY_DATA for externBrace
   75703           0 :      bool externBrace_copy = p_externBrace; 
   75704           0 :      result->p_externBrace = externBrace_copy; 
   75705             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   75706             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   75707             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   75708           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   75709           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   75710             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   75711             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   75712             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   75713           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   75714           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   75715             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   75716             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   75717             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   75718           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   75719           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   75720             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   75721             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   75722             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   75723           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   75724           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   75725             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   75726             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   75727             :   // case: toBeCopied == COPY_DATA for binding_label
   75728           0 :      std::string binding_label_copy = p_binding_label; 
   75729           0 :      result->p_binding_label = binding_label_copy; 
   75730             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   75731             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   75732             :   // case: toBeCopied == COPY_DATA for declarationScope
   75733           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   75734           0 :      result->p_declarationScope = declarationScope_copy; 
   75735             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   75736             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   75737             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   75738           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   75739           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   75740             :   // Copy non-constructor parameter data member (access function): equivalence_set_list_copy
   75741             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for equivalence_set_list
   75742             :   // case: toBeCopied == COPY_DATA for equivalence_set_list
   75743           0 :      SgExprListExp* equivalence_set_list_copy = p_equivalence_set_list; 
   75744           0 :      result->p_equivalence_set_list = equivalence_set_list_copy; 
   75745             : 
   75746             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   75747             : 
   75748             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   75749             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   75750             :   // fixupCopy(result,help);
   75751             : 
   75752             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   75753             :   // the Sg_File_Info objects that are built for the new IR nodes.
   75754           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   75755           0 :      if (locatedNode != NULL)
   75756             :         {
   75757             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   75758           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   75759           0 :           ROSE_ASSERT(start != NULL);
   75760             : #if 0
   75761             :        // Debugging information
   75762             :           if (start->get_parent() == NULL)
   75763             :              {
   75764             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75765             :              }
   75766             : #endif
   75767           0 :           start->set_parent(locatedNode);
   75768           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   75769             : 
   75770           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   75771             : 
   75772             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   75773             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   75774             :        // ROSE_ASSERT(end != NULL);
   75775           0 :           if (end == NULL)
   75776             :              {
   75777           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   75778             :              }
   75779             :             else
   75780             :              {
   75781             : #if 0
   75782             :             // Debugging information
   75783             :                if (end->get_parent() == NULL)
   75784             :                   {
   75785             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75786             :                   }
   75787             : #endif
   75788           0 :                end->set_parent(locatedNode);
   75789           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   75790             :              }
   75791             : 
   75792           0 :           SgExpression* expression = isSgExpression(result);
   75793           0 :           if (isSgExpression(this) != NULL)
   75794             :              {
   75795           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   75796             : 
   75797             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   75798           0 :                if (operatorPosition != NULL)
   75799             :                   {
   75800             : #if 0
   75801             :                  // Debugging information
   75802             :                     if (operatorPosition->get_parent() == NULL)
   75803             :                        {
   75804             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75805             :                        }
   75806             : #endif
   75807           0 :                     operatorPosition->set_parent(expression);
   75808           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   75809             :                   }
   75810             :              }
   75811             :         }
   75812             : 
   75813             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   75814           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   75815           0 :      if (initializedName != NULL)
   75816             :         {
   75817             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   75818           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   75819           0 :           ROSE_ASSERT(start != NULL);
   75820             : #if 0
   75821             :        // Debugging information
   75822             :           if (start->get_parent() == NULL)
   75823             :              {
   75824             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75825             :              }
   75826             : #endif
   75827           0 :           start->set_parent(initializedName);
   75828           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   75829             : 
   75830             : #if 0
   75831             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   75832             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   75833             : 
   75834             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   75835             :        // ROSE_ASSERT(end != NULL);
   75836             :           if (end == NULL)
   75837             :              {
   75838             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   75839             :              }
   75840             :             else
   75841             :              {
   75842             :                if (end->get_parent() == NULL)
   75843             :                   {
   75844             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   75845             :                   }
   75846             :                end->set_parent(initializedName);
   75847             :                ROSE_ASSERT(end->get_parent() != NULL);
   75848             :              }
   75849             : #endif
   75850             :         }
   75851             : 
   75852             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   75853           0 :      help.insertCopiedNodePair(this,result);
   75854             : 
   75855             :   // printf ("End of copy SgEquivalenceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   75856             : 
   75857             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   75858             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   75859           0 :      help.decrementDepth();
   75860             : 
   75861             :   // Test if this is the root of the copy!
   75862           0 :      if (help.get_depth() == 0)
   75863             :         {
   75864             :        // This is the original calling node.
   75865             : 
   75866             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   75867             :        // printf ("Calling SgEquivalenceStatement::fixupCopy() (from root of AST being copied) \n");
   75868             : #if ALT_FIXUP_COPY
   75869             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   75870           0 :           fixupCopy_scopes (result,help);
   75871           0 :           fixupCopy_symbols (result,help);
   75872           0 :           fixupCopy_references (result,help);
   75873             : #else
   75874             :           fixupCopy(result,help);
   75875             : #endif
   75876             :        // Allow this to be called recursively, so accumulate the state.
   75877             :        // Also, clear the state in the SgCopyHelp object.
   75878             :        // help.clearState();
   75879             :         }
   75880             : 
   75881           0 :      return result;
   75882             :    }
   75883             : 
   75884             : 
   75885             : /* #line 75886 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   75886             : 
   75887             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   75888             : 
   75889           0 : SgNode* SgInterfaceStatement::copy ( SgCopyHelp& help) const
   75890             :    {
   75891           0 :      SgInterfaceStatement* result = NULL;
   75892             : 
   75893             :   // printf ("Copy SgInterfaceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   75894             : 
   75895             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   75896             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   75897             :   // The default value of the depth is 0, so after this call the depth is 1!
   75898           0 :      help.incrementDepth();
   75899             : 
   75900             : #if 0
   75901             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   75902             :   // but it is not generally true that things can only be copied once!
   75903             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   75904             :   // AstAttribute* existingAttribute = const_cast<SgInterfaceStatement*>(this)->attribute["copied"];
   75905             :      bool previouslyCopied = const_cast<SgInterfaceStatement*>(this)->attribute.exists("copied");
   75906             :      if (previouslyCopied == true)
   75907             :         {
   75908             :           this->get_file_info()->display("Called from copy SgInterfaceStatement: debug");
   75909             :         }
   75910             :      ROSE_ASSERT(previouslyCopied == false);
   75911             : 
   75912             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   75913             :      AstAttribute* newAttribute = new AstAttribute();
   75914             :      ROSE_ASSERT(newAttribute != NULL);
   75915             : 
   75916             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   75917             :      const_cast<SgInterfaceStatement*>(this)->attribute.add("copied",newAttribute);
   75918             : #endif
   75919             : 
   75920             :   // Copy data members from base classes
   75921             :   // Copy constructor parameter data member: startOfConstruct_copy
   75922             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   75923             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   75924           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   75925           0 :      if ( p_startOfConstruct != NULL ) 
   75926             :         { 
   75927           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   75928             :         } 
   75929             :        else 
   75930             :         { 
   75931             :           startOfConstruct_copy = NULL; 
   75932             :         } 
   75933             :   // Copy constructor parameter data member: name_copy
   75934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   75935             :   // case: toBeCopied == COPY_DATA for name
   75936           0 :      SgName name_copy = p_name; 
   75937             :   // Copy constructor parameter data member: generic_spec_copy
   75938             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for generic_spec
   75939             :   // case: toBeCopied == COPY_DATA for generic_spec
   75940           0 :      SgInterfaceStatement::generic_spec_enum generic_spec_copy = p_generic_spec; 
   75941             :  
   75942             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   75943             : 
   75944             :   // Build an empty copy of this object (will be filled in, but 
   75945             :   // the parent can't be set and must be set by the caller)
   75946           0 :      result = new SgInterfaceStatement(  startOfConstruct_copy, name_copy, generic_spec_copy );
   75947           0 :      ROSE_ASSERT(result != NULL);
   75948             : 
   75949             :   // Copy data members of "this" class
   75950             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   75951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   75952             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   75953           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   75954           0 :      if ( p_endOfConstruct != NULL ) 
   75955             :         { 
   75956           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   75957             :         } 
   75958             :        else 
   75959             :         { 
   75960             :           endOfConstruct_copy = NULL; 
   75961             :         } 
   75962             :   /* check for a valid pointer and delete if present */ 
   75963           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   75964             :   /* add assignment to result here */ 
   75965           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   75966             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   75967             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   75968             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   75969           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   75970           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   75971             :         { 
   75972           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   75973             :         } 
   75974             :        else 
   75975             :         { 
   75976             :           attachedPreprocessingInfoPtr_copy = NULL; 
   75977             :         } 
   75978             :   /* check for a valid pointer and delete if present */ 
   75979           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   75980             :   /* add assignment to result here */ 
   75981           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   75982             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   75983             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   75984             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   75985           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   75986           0 :      if ( p_attributeMechanism != NULL ) 
   75987             :         { 
   75988           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   75989             :         } 
   75990             :        else 
   75991             :         { 
   75992             :           attributeMechanism_copy = NULL; 
   75993             :         } 
   75994             :   /* check for a valid pointer and delete if present */ 
   75995           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   75996             :   /* add assignment to result here */ 
   75997           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   75998             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   75999             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   76000             :   // case: toBeCopied == COPY_DATA for numeric_label
   76001           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   76002           0 :      result->p_numeric_label = numeric_label_copy; 
   76003             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   76004             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   76005             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   76006           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   76007           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   76008             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   76009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   76010             :   // case: toBeCopied == COPY_DATA for decl_attributes
   76011           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   76012           0 :      result->p_decl_attributes = decl_attributes_copy; 
   76013             :   // Copy non-constructor parameter data member (access function): linkage_copy
   76014             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   76015             :   // case: toBeCopied == COPY_DATA for linkage
   76016           0 :      std::string linkage_copy = p_linkage; 
   76017           0 :      result->p_linkage = linkage_copy; 
   76018             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   76019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   76020             :   // case: toBeCopied == COPY_DATA for declarationModifier
   76021           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   76022           0 :      result->p_declarationModifier = declarationModifier_copy; 
   76023             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   76024             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   76025             :   // case: toBeCopied == COPY_DATA for nameOnly
   76026           0 :      bool nameOnly_copy = p_nameOnly; 
   76027           0 :      result->p_nameOnly = nameOnly_copy; 
   76028             :   // Copy non-constructor parameter data member (access function): forward_copy
   76029             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   76030             :   // case: toBeCopied == COPY_DATA for forward
   76031           0 :      bool forward_copy = p_forward; 
   76032           0 :      result->p_forward = forward_copy; 
   76033             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   76034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   76035             :   // case: toBeCopied == COPY_DATA for externBrace
   76036           0 :      bool externBrace_copy = p_externBrace; 
   76037           0 :      result->p_externBrace = externBrace_copy; 
   76038             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   76039             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   76040             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   76041           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   76042           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   76043             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   76044             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   76045             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   76046           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   76047           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   76048             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   76049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   76050             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   76051           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   76052           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   76053             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   76054             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   76055             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   76056           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   76057           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   76058             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   76059             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   76060             :   // case: toBeCopied == COPY_DATA for binding_label
   76061           0 :      std::string binding_label_copy = p_binding_label; 
   76062           0 :      result->p_binding_label = binding_label_copy; 
   76063             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   76064             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   76065             :   // case: toBeCopied == COPY_DATA for declarationScope
   76066           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   76067           0 :      result->p_declarationScope = declarationScope_copy; 
   76068             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   76069             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   76070             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   76071           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   76072           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   76073             :   // Copy non-constructor parameter data member (list access function): result->get_interface_body_list()
   76074           0 :      SgInterfaceBodyPtrList interface_body_list_copy; 
   76075             :   // case: listType for interface_body_list
   76076             :   // case: listType (typeIsPointerToList == false) for interface_body_list
   76077           0 :      SgInterfaceBodyPtrList::const_iterator source_interface_body_list_iterator = get_interface_body_list().begin(); 
   76078           0 :      for ( /* empty by design */; source_interface_body_list_iterator != get_interface_body_list().end(); ++source_interface_body_list_iterator) 
   76079             :         { 
   76080           0 :           SgInterfaceBody* source_list_element = *source_interface_body_list_iterator; 
   76081           0 :           SgInterfaceBody* copy_list_element = NULL; 
   76082           0 :           if (source_list_element != NULL) 
   76083             :              { 
   76084           0 :                copy_list_element = static_cast<SgInterfaceBody*>(help.copyAst(*source_interface_body_list_iterator)); 
   76085             :              } 
   76086             :             else 
   76087             :              { 
   76088             :                copy_list_element = NULL; 
   76089             :              } 
   76090           0 :           interface_body_list_copy.push_back(copy_list_element); 
   76091             :         } 
   76092           0 :      result->p_interface_body_list = interface_body_list_copy; 
   76093             :   // case: listType for interface_body_list
   76094             :   // case: listType (typeIsPointerToList == false) for interface_body_list
   76095           0 :      SgInterfaceBodyPtrList::const_iterator interface_body_list_iterator = result->get_interface_body_list().begin(); 
   76096           0 :      for ( /* empty by design */; interface_body_list_iterator != result->get_interface_body_list().end(); ++interface_body_list_iterator) 
   76097             :         { 
   76098           0 :           SgInterfaceBody* list_element = *interface_body_list_iterator; 
   76099           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   76100             :              { 
   76101           0 :                list_element->set_parent(result); 
   76102             :              } 
   76103             :         } 
   76104             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   76105             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   76106             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   76107           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   76108           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   76109             : 
   76110             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   76111             : 
   76112             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   76113             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   76114             :   // fixupCopy(result,help);
   76115             : 
   76116             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   76117             :   // the Sg_File_Info objects that are built for the new IR nodes.
   76118           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   76119           0 :      if (locatedNode != NULL)
   76120             :         {
   76121             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   76122           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   76123           0 :           ROSE_ASSERT(start != NULL);
   76124             : #if 0
   76125             :        // Debugging information
   76126             :           if (start->get_parent() == NULL)
   76127             :              {
   76128             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76129             :              }
   76130             : #endif
   76131           0 :           start->set_parent(locatedNode);
   76132           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   76133             : 
   76134           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   76135             : 
   76136             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   76137             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   76138             :        // ROSE_ASSERT(end != NULL);
   76139           0 :           if (end == NULL)
   76140             :              {
   76141           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   76142             :              }
   76143             :             else
   76144             :              {
   76145             : #if 0
   76146             :             // Debugging information
   76147             :                if (end->get_parent() == NULL)
   76148             :                   {
   76149             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76150             :                   }
   76151             : #endif
   76152           0 :                end->set_parent(locatedNode);
   76153           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   76154             :              }
   76155             : 
   76156           0 :           SgExpression* expression = isSgExpression(result);
   76157           0 :           if (isSgExpression(this) != NULL)
   76158             :              {
   76159           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   76160             : 
   76161             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   76162           0 :                if (operatorPosition != NULL)
   76163             :                   {
   76164             : #if 0
   76165             :                  // Debugging information
   76166             :                     if (operatorPosition->get_parent() == NULL)
   76167             :                        {
   76168             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76169             :                        }
   76170             : #endif
   76171           0 :                     operatorPosition->set_parent(expression);
   76172           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   76173             :                   }
   76174             :              }
   76175             :         }
   76176             : 
   76177             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   76178           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   76179           0 :      if (initializedName != NULL)
   76180             :         {
   76181             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   76182           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   76183           0 :           ROSE_ASSERT(start != NULL);
   76184             : #if 0
   76185             :        // Debugging information
   76186             :           if (start->get_parent() == NULL)
   76187             :              {
   76188             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76189             :              }
   76190             : #endif
   76191           0 :           start->set_parent(initializedName);
   76192           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   76193             : 
   76194             : #if 0
   76195             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   76196             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   76197             : 
   76198             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   76199             :        // ROSE_ASSERT(end != NULL);
   76200             :           if (end == NULL)
   76201             :              {
   76202             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   76203             :              }
   76204             :             else
   76205             :              {
   76206             :                if (end->get_parent() == NULL)
   76207             :                   {
   76208             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76209             :                   }
   76210             :                end->set_parent(initializedName);
   76211             :                ROSE_ASSERT(end->get_parent() != NULL);
   76212             :              }
   76213             : #endif
   76214             :         }
   76215             : 
   76216             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   76217           0 :      help.insertCopiedNodePair(this,result);
   76218             : 
   76219             :   // printf ("End of copy SgInterfaceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   76220             : 
   76221             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   76222             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   76223           0 :      help.decrementDepth();
   76224             : 
   76225             :   // Test if this is the root of the copy!
   76226           0 :      if (help.get_depth() == 0)
   76227             :         {
   76228             :        // This is the original calling node.
   76229             : 
   76230             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   76231             :        // printf ("Calling SgInterfaceStatement::fixupCopy() (from root of AST being copied) \n");
   76232             : #if ALT_FIXUP_COPY
   76233             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   76234           0 :           fixupCopy_scopes (result,help);
   76235           0 :           fixupCopy_symbols (result,help);
   76236           0 :           fixupCopy_references (result,help);
   76237             : #else
   76238             :           fixupCopy(result,help);
   76239             : #endif
   76240             :        // Allow this to be called recursively, so accumulate the state.
   76241             :        // Also, clear the state in the SgCopyHelp object.
   76242             :        // help.clearState();
   76243             :         }
   76244             : 
   76245           0 :      return result;
   76246             :    }
   76247             : 
   76248             : 
   76249             : /* #line 76250 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   76250             : 
   76251             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   76252             : 
   76253           0 : SgNode* SgNamespaceAliasDeclarationStatement::copy ( SgCopyHelp& help) const
   76254             :    {
   76255           0 :      SgNamespaceAliasDeclarationStatement* result = NULL;
   76256             : 
   76257             :   // printf ("Copy SgNamespaceAliasDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   76258             : 
   76259             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   76260             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   76261             :   // The default value of the depth is 0, so after this call the depth is 1!
   76262           0 :      help.incrementDepth();
   76263             : 
   76264             : #if 0
   76265             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   76266             :   // but it is not generally true that things can only be copied once!
   76267             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   76268             :   // AstAttribute* existingAttribute = const_cast<SgNamespaceAliasDeclarationStatement*>(this)->attribute["copied"];
   76269             :      bool previouslyCopied = const_cast<SgNamespaceAliasDeclarationStatement*>(this)->attribute.exists("copied");
   76270             :      if (previouslyCopied == true)
   76271             :         {
   76272             :           this->get_file_info()->display("Called from copy SgNamespaceAliasDeclarationStatement: debug");
   76273             :         }
   76274             :      ROSE_ASSERT(previouslyCopied == false);
   76275             : 
   76276             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   76277             :      AstAttribute* newAttribute = new AstAttribute();
   76278             :      ROSE_ASSERT(newAttribute != NULL);
   76279             : 
   76280             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   76281             :      const_cast<SgNamespaceAliasDeclarationStatement*>(this)->attribute.add("copied",newAttribute);
   76282             : #endif
   76283             : 
   76284             :   // Copy data members from base classes
   76285             :   // Copy constructor parameter data member: startOfConstruct_copy
   76286             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   76287             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   76288           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   76289           0 :      if ( p_startOfConstruct != NULL ) 
   76290             :         { 
   76291           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   76292             :         } 
   76293             :        else 
   76294             :         { 
   76295             :           startOfConstruct_copy = NULL; 
   76296             :         } 
   76297             :   // Copy constructor parameter data member: name_copy
   76298             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   76299             :   // case: toBeCopied == COPY_DATA for name
   76300           0 :      SgName name_copy = p_name; 
   76301             :   // Copy constructor parameter data member: namespaceDeclaration_copy
   76302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for namespaceDeclaration
   76303             :   // case: toBeCopied == COPY_DATA for namespaceDeclaration
   76304           0 :      SgNamespaceDeclarationStatement* namespaceDeclaration_copy = p_namespaceDeclaration; 
   76305             :  
   76306             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   76307             : 
   76308             :   // Build an empty copy of this object (will be filled in, but 
   76309             :   // the parent can't be set and must be set by the caller)
   76310           0 :      result = new SgNamespaceAliasDeclarationStatement(  startOfConstruct_copy, name_copy, namespaceDeclaration_copy );
   76311           0 :      ROSE_ASSERT(result != NULL);
   76312             : 
   76313             :   // Copy data members of "this" class
   76314             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   76315             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   76316             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   76317           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   76318           0 :      if ( p_endOfConstruct != NULL ) 
   76319             :         { 
   76320           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   76321             :         } 
   76322             :        else 
   76323             :         { 
   76324             :           endOfConstruct_copy = NULL; 
   76325             :         } 
   76326             :   /* check for a valid pointer and delete if present */ 
   76327           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   76328             :   /* add assignment to result here */ 
   76329           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   76330             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   76331             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   76332             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   76333           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   76334           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   76335             :         { 
   76336           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   76337             :         } 
   76338             :        else 
   76339             :         { 
   76340             :           attachedPreprocessingInfoPtr_copy = NULL; 
   76341             :         } 
   76342             :   /* check for a valid pointer and delete if present */ 
   76343           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   76344             :   /* add assignment to result here */ 
   76345           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   76346             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   76347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   76348             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   76349           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   76350           0 :      if ( p_attributeMechanism != NULL ) 
   76351             :         { 
   76352           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   76353             :         } 
   76354             :        else 
   76355             :         { 
   76356             :           attributeMechanism_copy = NULL; 
   76357             :         } 
   76358             :   /* check for a valid pointer and delete if present */ 
   76359           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   76360             :   /* add assignment to result here */ 
   76361           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   76362             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   76363             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   76364             :   // case: toBeCopied == COPY_DATA for numeric_label
   76365           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   76366           0 :      result->p_numeric_label = numeric_label_copy; 
   76367             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   76368             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   76369             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   76370           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   76371           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   76372             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   76373             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   76374             :   // case: toBeCopied == COPY_DATA for decl_attributes
   76375           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   76376           0 :      result->p_decl_attributes = decl_attributes_copy; 
   76377             :   // Copy non-constructor parameter data member (access function): linkage_copy
   76378             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   76379             :   // case: toBeCopied == COPY_DATA for linkage
   76380           0 :      std::string linkage_copy = p_linkage; 
   76381           0 :      result->p_linkage = linkage_copy; 
   76382             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   76383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   76384             :   // case: toBeCopied == COPY_DATA for declarationModifier
   76385           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   76386           0 :      result->p_declarationModifier = declarationModifier_copy; 
   76387             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   76388             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   76389             :   // case: toBeCopied == COPY_DATA for nameOnly
   76390           0 :      bool nameOnly_copy = p_nameOnly; 
   76391           0 :      result->p_nameOnly = nameOnly_copy; 
   76392             :   // Copy non-constructor parameter data member (access function): forward_copy
   76393             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   76394             :   // case: toBeCopied == COPY_DATA for forward
   76395           0 :      bool forward_copy = p_forward; 
   76396           0 :      result->p_forward = forward_copy; 
   76397             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   76398             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   76399             :   // case: toBeCopied == COPY_DATA for externBrace
   76400           0 :      bool externBrace_copy = p_externBrace; 
   76401           0 :      result->p_externBrace = externBrace_copy; 
   76402             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   76403             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   76404             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   76405           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   76406           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   76407             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   76408             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   76409             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   76410           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   76411           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   76412             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   76413             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   76414             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   76415           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   76416           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   76417             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   76418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   76419             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   76420           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   76421           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   76422             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   76423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   76424             :   // case: toBeCopied == COPY_DATA for binding_label
   76425           0 :      std::string binding_label_copy = p_binding_label; 
   76426           0 :      result->p_binding_label = binding_label_copy; 
   76427             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   76428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   76429             :   // case: toBeCopied == COPY_DATA for declarationScope
   76430           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   76431           0 :      result->p_declarationScope = declarationScope_copy; 
   76432             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   76433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   76434             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   76435           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   76436           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   76437             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   76438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   76439             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   76440           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   76441           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   76442             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   76443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   76444             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   76445           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   76446           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   76447             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   76448             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   76449             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   76450           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   76451           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   76452             :   // Copy non-constructor parameter data member (access function): is_alias_for_another_namespace_alias_copy
   76453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_alias_for_another_namespace_alias
   76454             :   // case: toBeCopied == COPY_DATA for is_alias_for_another_namespace_alias
   76455           0 :      bool is_alias_for_another_namespace_alias_copy = p_is_alias_for_another_namespace_alias; 
   76456           0 :      result->p_is_alias_for_another_namespace_alias = is_alias_for_another_namespace_alias_copy; 
   76457             :   // Copy non-constructor parameter data member (access function): namespaceAliasDeclaration_copy
   76458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for namespaceAliasDeclaration
   76459             :   // case: toBeCopied == COPY_DATA for namespaceAliasDeclaration
   76460           0 :      SgNamespaceAliasDeclarationStatement* namespaceAliasDeclaration_copy = p_namespaceAliasDeclaration; 
   76461           0 :      result->p_namespaceAliasDeclaration = namespaceAliasDeclaration_copy; 
   76462             : 
   76463             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   76464             : 
   76465             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   76466             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   76467             :   // fixupCopy(result,help);
   76468             : 
   76469             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   76470             :   // the Sg_File_Info objects that are built for the new IR nodes.
   76471           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   76472           0 :      if (locatedNode != NULL)
   76473             :         {
   76474             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   76475           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   76476           0 :           ROSE_ASSERT(start != NULL);
   76477             : #if 0
   76478             :        // Debugging information
   76479             :           if (start->get_parent() == NULL)
   76480             :              {
   76481             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76482             :              }
   76483             : #endif
   76484           0 :           start->set_parent(locatedNode);
   76485           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   76486             : 
   76487           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   76488             : 
   76489             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   76490             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   76491             :        // ROSE_ASSERT(end != NULL);
   76492           0 :           if (end == NULL)
   76493             :              {
   76494           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   76495             :              }
   76496             :             else
   76497             :              {
   76498             : #if 0
   76499             :             // Debugging information
   76500             :                if (end->get_parent() == NULL)
   76501             :                   {
   76502             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76503             :                   }
   76504             : #endif
   76505           0 :                end->set_parent(locatedNode);
   76506           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   76507             :              }
   76508             : 
   76509           0 :           SgExpression* expression = isSgExpression(result);
   76510           0 :           if (isSgExpression(this) != NULL)
   76511             :              {
   76512           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   76513             : 
   76514             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   76515           0 :                if (operatorPosition != NULL)
   76516             :                   {
   76517             : #if 0
   76518             :                  // Debugging information
   76519             :                     if (operatorPosition->get_parent() == NULL)
   76520             :                        {
   76521             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76522             :                        }
   76523             : #endif
   76524           0 :                     operatorPosition->set_parent(expression);
   76525           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   76526             :                   }
   76527             :              }
   76528             :         }
   76529             : 
   76530             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   76531           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   76532           0 :      if (initializedName != NULL)
   76533             :         {
   76534             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   76535           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   76536           0 :           ROSE_ASSERT(start != NULL);
   76537             : #if 0
   76538             :        // Debugging information
   76539             :           if (start->get_parent() == NULL)
   76540             :              {
   76541             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76542             :              }
   76543             : #endif
   76544           0 :           start->set_parent(initializedName);
   76545           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   76546             : 
   76547             : #if 0
   76548             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   76549             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   76550             : 
   76551             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   76552             :        // ROSE_ASSERT(end != NULL);
   76553             :           if (end == NULL)
   76554             :              {
   76555             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   76556             :              }
   76557             :             else
   76558             :              {
   76559             :                if (end->get_parent() == NULL)
   76560             :                   {
   76561             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76562             :                   }
   76563             :                end->set_parent(initializedName);
   76564             :                ROSE_ASSERT(end->get_parent() != NULL);
   76565             :              }
   76566             : #endif
   76567             :         }
   76568             : 
   76569             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   76570           0 :      help.insertCopiedNodePair(this,result);
   76571             : 
   76572             :   // printf ("End of copy SgNamespaceAliasDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   76573             : 
   76574             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   76575             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   76576           0 :      help.decrementDepth();
   76577             : 
   76578             :   // Test if this is the root of the copy!
   76579           0 :      if (help.get_depth() == 0)
   76580             :         {
   76581             :        // This is the original calling node.
   76582             : 
   76583             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   76584             :        // printf ("Calling SgNamespaceAliasDeclarationStatement::fixupCopy() (from root of AST being copied) \n");
   76585             : #if ALT_FIXUP_COPY
   76586             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   76587           0 :           fixupCopy_scopes (result,help);
   76588           0 :           fixupCopy_symbols (result,help);
   76589           0 :           fixupCopy_references (result,help);
   76590             : #else
   76591             :           fixupCopy(result,help);
   76592             : #endif
   76593             :        // Allow this to be called recursively, so accumulate the state.
   76594             :        // Also, clear the state in the SgCopyHelp object.
   76595             :        // help.clearState();
   76596             :         }
   76597             : 
   76598           0 :      return result;
   76599             :    }
   76600             : 
   76601             : 
   76602             : /* #line 76603 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   76603             : 
   76604             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   76605             : 
   76606           0 : SgNode* SgCommonBlock::copy ( SgCopyHelp& help) const
   76607             :    {
   76608           0 :      SgCommonBlock* result = NULL;
   76609             : 
   76610             :   // printf ("Copy SgCommonBlock = %p = %s \n",this,SageInterface::get_name(this).c_str());
   76611             : 
   76612             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   76613             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   76614             :   // The default value of the depth is 0, so after this call the depth is 1!
   76615           0 :      help.incrementDepth();
   76616             : 
   76617             : #if 0
   76618             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   76619             :   // but it is not generally true that things can only be copied once!
   76620             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   76621             :   // AstAttribute* existingAttribute = const_cast<SgCommonBlock*>(this)->attribute["copied"];
   76622             :      bool previouslyCopied = const_cast<SgCommonBlock*>(this)->attribute.exists("copied");
   76623             :      if (previouslyCopied == true)
   76624             :         {
   76625             :           this->get_file_info()->display("Called from copy SgCommonBlock: debug");
   76626             :         }
   76627             :      ROSE_ASSERT(previouslyCopied == false);
   76628             : 
   76629             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   76630             :      AstAttribute* newAttribute = new AstAttribute();
   76631             :      ROSE_ASSERT(newAttribute != NULL);
   76632             : 
   76633             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   76634             :      const_cast<SgCommonBlock*>(this)->attribute.add("copied",newAttribute);
   76635             : #endif
   76636             : 
   76637             :   // Copy data members from base classes
   76638             :   // Copy constructor parameter data member: startOfConstruct_copy
   76639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   76640             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   76641           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   76642           0 :      if ( p_startOfConstruct != NULL ) 
   76643             :         { 
   76644           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   76645             :         } 
   76646             :        else 
   76647             :         { 
   76648             :           startOfConstruct_copy = NULL; 
   76649             :         } 
   76650             :  
   76651             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   76652             : 
   76653             :   // Build an empty copy of this object (will be filled in, but 
   76654             :   // the parent can't be set and must be set by the caller)
   76655           0 :      result = new SgCommonBlock(  startOfConstruct_copy );
   76656           0 :      ROSE_ASSERT(result != NULL);
   76657             : 
   76658             :   // Copy data members of "this" class
   76659             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   76660             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   76661             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   76662           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   76663           0 :      if ( p_endOfConstruct != NULL ) 
   76664             :         { 
   76665           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   76666             :         } 
   76667             :        else 
   76668             :         { 
   76669             :           endOfConstruct_copy = NULL; 
   76670             :         } 
   76671             :   /* check for a valid pointer and delete if present */ 
   76672           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   76673             :   /* add assignment to result here */ 
   76674           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   76675             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   76676             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   76677             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   76678           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   76679           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   76680             :         { 
   76681           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   76682             :         } 
   76683             :        else 
   76684             :         { 
   76685             :           attachedPreprocessingInfoPtr_copy = NULL; 
   76686             :         } 
   76687             :   /* check for a valid pointer and delete if present */ 
   76688           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   76689             :   /* add assignment to result here */ 
   76690           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   76691             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   76692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   76693             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   76694           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   76695           0 :      if ( p_attributeMechanism != NULL ) 
   76696             :         { 
   76697           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   76698             :         } 
   76699             :        else 
   76700             :         { 
   76701             :           attributeMechanism_copy = NULL; 
   76702             :         } 
   76703             :   /* check for a valid pointer and delete if present */ 
   76704           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   76705             :   /* add assignment to result here */ 
   76706           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   76707             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   76708             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   76709             :   // case: toBeCopied == COPY_DATA for numeric_label
   76710           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   76711           0 :      result->p_numeric_label = numeric_label_copy; 
   76712             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   76713             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   76714             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   76715           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   76716           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   76717             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   76718             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   76719             :   // case: toBeCopied == COPY_DATA for decl_attributes
   76720           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   76721           0 :      result->p_decl_attributes = decl_attributes_copy; 
   76722             :   // Copy non-constructor parameter data member (access function): linkage_copy
   76723             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   76724             :   // case: toBeCopied == COPY_DATA for linkage
   76725           0 :      std::string linkage_copy = p_linkage; 
   76726           0 :      result->p_linkage = linkage_copy; 
   76727             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   76728             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   76729             :   // case: toBeCopied == COPY_DATA for declarationModifier
   76730           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   76731           0 :      result->p_declarationModifier = declarationModifier_copy; 
   76732             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   76733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   76734             :   // case: toBeCopied == COPY_DATA for nameOnly
   76735           0 :      bool nameOnly_copy = p_nameOnly; 
   76736           0 :      result->p_nameOnly = nameOnly_copy; 
   76737             :   // Copy non-constructor parameter data member (access function): forward_copy
   76738             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   76739             :   // case: toBeCopied == COPY_DATA for forward
   76740           0 :      bool forward_copy = p_forward; 
   76741           0 :      result->p_forward = forward_copy; 
   76742             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   76743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   76744             :   // case: toBeCopied == COPY_DATA for externBrace
   76745           0 :      bool externBrace_copy = p_externBrace; 
   76746           0 :      result->p_externBrace = externBrace_copy; 
   76747             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   76748             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   76749             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   76750           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   76751           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   76752             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   76753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   76754             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   76755           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   76756           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   76757             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   76758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   76759             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   76760           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   76761           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   76762             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   76763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   76764             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   76765           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   76766           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   76767             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   76768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   76769             :   // case: toBeCopied == COPY_DATA for binding_label
   76770           0 :      std::string binding_label_copy = p_binding_label; 
   76771           0 :      result->p_binding_label = binding_label_copy; 
   76772             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   76773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   76774             :   // case: toBeCopied == COPY_DATA for declarationScope
   76775           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   76776           0 :      result->p_declarationScope = declarationScope_copy; 
   76777             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   76778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   76779             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   76780           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   76781           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   76782             :   // Copy non-constructor parameter data member (no access function): result->p_block_list
   76783           0 :      SgCommonBlockObjectPtrList block_list_copy; 
   76784             :   // case: listType for block_list
   76785             :   // case: listType (typeIsPointerToList == false) for block_list
   76786           0 :      SgCommonBlockObjectPtrList::const_iterator source_block_list_iterator = get_block_list().begin(); 
   76787           0 :      for ( /* empty by design */; source_block_list_iterator != get_block_list().end(); ++source_block_list_iterator) 
   76788             :         { 
   76789           0 :           SgCommonBlockObject* source_list_element = *source_block_list_iterator; 
   76790           0 :           SgCommonBlockObject* copy_list_element = NULL; 
   76791           0 :           if (source_list_element != NULL) 
   76792             :              { 
   76793           0 :                copy_list_element = static_cast<SgCommonBlockObject*>(help.copyAst(*source_block_list_iterator)); 
   76794             :              } 
   76795             :             else 
   76796             :              { 
   76797             :                copy_list_element = NULL; 
   76798             :              } 
   76799           0 :           block_list_copy.push_back(copy_list_element); 
   76800             :         } 
   76801           0 :      result->p_block_list = block_list_copy; 
   76802             :   // case: listType for block_list
   76803             :   // case: listType (typeIsPointerToList == false) for block_list
   76804           0 :      SgCommonBlockObjectPtrList::const_iterator block_list_iterator = result->get_block_list().begin(); 
   76805           0 :      for ( /* empty by design */; block_list_iterator != result->get_block_list().end(); ++block_list_iterator) 
   76806             :         { 
   76807           0 :           SgCommonBlockObject* list_element = *block_list_iterator; 
   76808           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   76809             :              { 
   76810           0 :                list_element->set_parent(result); 
   76811             :              } 
   76812             :         } 
   76813             : 
   76814             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   76815             : 
   76816             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   76817             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   76818             :   // fixupCopy(result,help);
   76819             : 
   76820             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   76821             :   // the Sg_File_Info objects that are built for the new IR nodes.
   76822           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   76823           0 :      if (locatedNode != NULL)
   76824             :         {
   76825             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   76826           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   76827           0 :           ROSE_ASSERT(start != NULL);
   76828             : #if 0
   76829             :        // Debugging information
   76830             :           if (start->get_parent() == NULL)
   76831             :              {
   76832             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76833             :              }
   76834             : #endif
   76835           0 :           start->set_parent(locatedNode);
   76836           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   76837             : 
   76838           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   76839             : 
   76840             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   76841             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   76842             :        // ROSE_ASSERT(end != NULL);
   76843           0 :           if (end == NULL)
   76844             :              {
   76845           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   76846             :              }
   76847             :             else
   76848             :              {
   76849             : #if 0
   76850             :             // Debugging information
   76851             :                if (end->get_parent() == NULL)
   76852             :                   {
   76853             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76854             :                   }
   76855             : #endif
   76856           0 :                end->set_parent(locatedNode);
   76857           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   76858             :              }
   76859             : 
   76860           0 :           SgExpression* expression = isSgExpression(result);
   76861           0 :           if (isSgExpression(this) != NULL)
   76862             :              {
   76863           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   76864             : 
   76865             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   76866           0 :                if (operatorPosition != NULL)
   76867             :                   {
   76868             : #if 0
   76869             :                  // Debugging information
   76870             :                     if (operatorPosition->get_parent() == NULL)
   76871             :                        {
   76872             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76873             :                        }
   76874             : #endif
   76875           0 :                     operatorPosition->set_parent(expression);
   76876           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   76877             :                   }
   76878             :              }
   76879             :         }
   76880             : 
   76881             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   76882           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   76883           0 :      if (initializedName != NULL)
   76884             :         {
   76885             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   76886           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   76887           0 :           ROSE_ASSERT(start != NULL);
   76888             : #if 0
   76889             :        // Debugging information
   76890             :           if (start->get_parent() == NULL)
   76891             :              {
   76892             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76893             :              }
   76894             : #endif
   76895           0 :           start->set_parent(initializedName);
   76896           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   76897             : 
   76898             : #if 0
   76899             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   76900             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   76901             : 
   76902             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   76903             :        // ROSE_ASSERT(end != NULL);
   76904             :           if (end == NULL)
   76905             :              {
   76906             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   76907             :              }
   76908             :             else
   76909             :              {
   76910             :                if (end->get_parent() == NULL)
   76911             :                   {
   76912             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   76913             :                   }
   76914             :                end->set_parent(initializedName);
   76915             :                ROSE_ASSERT(end->get_parent() != NULL);
   76916             :              }
   76917             : #endif
   76918             :         }
   76919             : 
   76920             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   76921           0 :      help.insertCopiedNodePair(this,result);
   76922             : 
   76923             :   // printf ("End of copy SgCommonBlock = %p = %s \n",this,SageInterface::get_name(this).c_str());
   76924             : 
   76925             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   76926             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   76927           0 :      help.decrementDepth();
   76928             : 
   76929             :   // Test if this is the root of the copy!
   76930           0 :      if (help.get_depth() == 0)
   76931             :         {
   76932             :        // This is the original calling node.
   76933             : 
   76934             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   76935             :        // printf ("Calling SgCommonBlock::fixupCopy() (from root of AST being copied) \n");
   76936             : #if ALT_FIXUP_COPY
   76937             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   76938           0 :           fixupCopy_scopes (result,help);
   76939           0 :           fixupCopy_symbols (result,help);
   76940           0 :           fixupCopy_references (result,help);
   76941             : #else
   76942             :           fixupCopy(result,help);
   76943             : #endif
   76944             :        // Allow this to be called recursively, so accumulate the state.
   76945             :        // Also, clear the state in the SgCopyHelp object.
   76946             :        // help.clearState();
   76947             :         }
   76948             : 
   76949           0 :      return result;
   76950             :    }
   76951             : 
   76952             : 
   76953             : /* #line 76954 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   76954             : 
   76955             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   76956             : 
   76957           0 : SgNode* SgTypedefDeclaration::copy ( SgCopyHelp& help) const
   76958             :    {
   76959           0 :      SgTypedefDeclaration* result = NULL;
   76960             : 
   76961             :   // printf ("Copy SgTypedefDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   76962             : 
   76963             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   76964             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   76965             :   // The default value of the depth is 0, so after this call the depth is 1!
   76966           0 :      help.incrementDepth();
   76967             : 
   76968             : #if 0
   76969             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   76970             :   // but it is not generally true that things can only be copied once!
   76971             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   76972             :   // AstAttribute* existingAttribute = const_cast<SgTypedefDeclaration*>(this)->attribute["copied"];
   76973             :      bool previouslyCopied = const_cast<SgTypedefDeclaration*>(this)->attribute.exists("copied");
   76974             :      if (previouslyCopied == true)
   76975             :         {
   76976             :           this->get_file_info()->display("Called from copy SgTypedefDeclaration: debug");
   76977             :         }
   76978             :      ROSE_ASSERT(previouslyCopied == false);
   76979             : 
   76980             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   76981             :      AstAttribute* newAttribute = new AstAttribute();
   76982             :      ROSE_ASSERT(newAttribute != NULL);
   76983             : 
   76984             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   76985             :      const_cast<SgTypedefDeclaration*>(this)->attribute.add("copied",newAttribute);
   76986             : #endif
   76987             : 
   76988             :   // Copy data members from base classes
   76989             :   // Copy constructor parameter data member: startOfConstruct_copy
   76990             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   76991             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   76992           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   76993           0 :      if ( p_startOfConstruct != NULL ) 
   76994             :         { 
   76995           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   76996             :         } 
   76997             :        else 
   76998             :         { 
   76999             :           startOfConstruct_copy = NULL; 
   77000             :         } 
   77001             :   // Copy constructor parameter data member: name_copy
   77002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   77003             :   // case: toBeCopied == COPY_DATA for name
   77004           0 :      SgName name_copy = p_name; 
   77005             :   // Copy constructor parameter data member: base_type_copy
   77006             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   77007             :   // case: toBeCopied == COPY_DATA for base_type
   77008           0 :      SgType* base_type_copy = p_base_type; 
   77009             :   // Copy constructor parameter data member: type_copy
   77010             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   77011             :   // case: toBeCopied == CLONE_PTR for type
   77012           0 :      SgTypedefType* type_copy = NULL; 
   77013           0 :      if ( p_type != NULL ) 
   77014             :         { 
   77015           0 :           type_copy = new SgTypedefType( *p_type); 
   77016             :         } 
   77017             :        else 
   77018             :         { 
   77019             :           type_copy = NULL; 
   77020             :         } 
   77021             :   // Copy constructor parameter data member: declaration_copy
   77022           0 :      SgDeclarationStatement* declaration_copy; 
   77023             :   // case: not a listType for (using conditionalToCopyVariable)declaration
   77024           0 :           if (get_declaration() != NULL) 
   77025             :              { 
   77026           0 :                declaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_declaration())); 
   77027             :              } 
   77028             :             else 
   77029             :              { 
   77030             :                declaration_copy = NULL; 
   77031             :              } 
   77032             :   // Copy constructor parameter data member: parent_scope_copy
   77033             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parent_scope
   77034             :   // case: toBeCopied == COPY_DATA for parent_scope
   77035           0 :      SgSymbol* parent_scope_copy = p_parent_scope; 
   77036             :  
   77037             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   77038             : 
   77039             :   // Build an empty copy of this object (will be filled in, but 
   77040             :   // the parent can't be set and must be set by the caller)
   77041           0 :      result = new SgTypedefDeclaration(  startOfConstruct_copy, name_copy, base_type_copy, type_copy, declaration_copy, parent_scope_copy );
   77042           0 :      ROSE_ASSERT(result != NULL);
   77043             : 
   77044             :   // Copy data members of "this" class
   77045             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   77046             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   77047             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   77048           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   77049           0 :      if ( p_endOfConstruct != NULL ) 
   77050             :         { 
   77051           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   77052             :         } 
   77053             :        else 
   77054             :         { 
   77055             :           endOfConstruct_copy = NULL; 
   77056             :         } 
   77057             :   /* check for a valid pointer and delete if present */ 
   77058           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   77059             :   /* add assignment to result here */ 
   77060           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   77061             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   77062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   77063             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   77064           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   77065           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   77066             :         { 
   77067           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   77068             :         } 
   77069             :        else 
   77070             :         { 
   77071             :           attachedPreprocessingInfoPtr_copy = NULL; 
   77072             :         } 
   77073             :   /* check for a valid pointer and delete if present */ 
   77074           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   77075             :   /* add assignment to result here */ 
   77076           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   77077             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   77078             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   77079             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   77080           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   77081           0 :      if ( p_attributeMechanism != NULL ) 
   77082             :         { 
   77083           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   77084             :         } 
   77085             :        else 
   77086             :         { 
   77087             :           attributeMechanism_copy = NULL; 
   77088             :         } 
   77089             :   /* check for a valid pointer and delete if present */ 
   77090           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   77091             :   /* add assignment to result here */ 
   77092           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   77093             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   77094             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   77095             :   // case: toBeCopied == COPY_DATA for numeric_label
   77096           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   77097           0 :      result->p_numeric_label = numeric_label_copy; 
   77098             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   77099             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   77100             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   77101           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   77102           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   77103             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   77104             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   77105             :   // case: toBeCopied == COPY_DATA for decl_attributes
   77106           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   77107           0 :      result->p_decl_attributes = decl_attributes_copy; 
   77108             :   // Copy non-constructor parameter data member (access function): linkage_copy
   77109             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   77110             :   // case: toBeCopied == COPY_DATA for linkage
   77111           0 :      std::string linkage_copy = p_linkage; 
   77112           0 :      result->p_linkage = linkage_copy; 
   77113             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   77114             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   77115             :   // case: toBeCopied == COPY_DATA for declarationModifier
   77116           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   77117           0 :      result->p_declarationModifier = declarationModifier_copy; 
   77118             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   77119             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   77120             :   // case: toBeCopied == COPY_DATA for nameOnly
   77121           0 :      bool nameOnly_copy = p_nameOnly; 
   77122           0 :      result->p_nameOnly = nameOnly_copy; 
   77123             :   // Copy non-constructor parameter data member (access function): forward_copy
   77124             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   77125             :   // case: toBeCopied == COPY_DATA for forward
   77126           0 :      bool forward_copy = p_forward; 
   77127           0 :      result->p_forward = forward_copy; 
   77128             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   77129             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   77130             :   // case: toBeCopied == COPY_DATA for externBrace
   77131           0 :      bool externBrace_copy = p_externBrace; 
   77132           0 :      result->p_externBrace = externBrace_copy; 
   77133             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   77134             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   77135             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   77136           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   77137           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   77138             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   77139             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   77140             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   77141           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   77142           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   77143             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   77144             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   77145             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   77146           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   77147           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   77148             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   77149             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   77150             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   77151           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   77152           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   77153             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   77154             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   77155             :   // case: toBeCopied == COPY_DATA for binding_label
   77156           0 :      std::string binding_label_copy = p_binding_label; 
   77157           0 :      result->p_binding_label = binding_label_copy; 
   77158             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   77159             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   77160             :   // case: toBeCopied == COPY_DATA for declarationScope
   77161           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   77162           0 :      result->p_declarationScope = declarationScope_copy; 
   77163             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   77164             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   77165             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   77166           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   77167           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   77168             :   // Copy non-constructor parameter data member (access function): typedefBaseTypeContainsDefiningDeclaration_copy
   77169             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefBaseTypeContainsDefiningDeclaration
   77170             :   // case: toBeCopied == COPY_DATA for typedefBaseTypeContainsDefiningDeclaration
   77171           0 :      bool typedefBaseTypeContainsDefiningDeclaration_copy = p_typedefBaseTypeContainsDefiningDeclaration; 
   77172           0 :      result->p_typedefBaseTypeContainsDefiningDeclaration = typedefBaseTypeContainsDefiningDeclaration_copy; 
   77173             :   // Copy non-constructor parameter data member (access function): scope_copy
   77174             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   77175             :   // case: toBeCopied == COPY_DATA for scope
   77176           0 :      SgScopeStatement* scope_copy = p_scope; 
   77177           0 :      result->p_scope = scope_copy; 
   77178             :   // Copy non-constructor parameter data member (no access function): result->p_requiresGlobalNameQualificationOnType
   77179             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresGlobalNameQualificationOnType
   77180             :   // case: toBeCopied == COPY_DATA for requiresGlobalNameQualificationOnType
   77181           0 :      bool requiresGlobalNameQualificationOnType_copy = p_requiresGlobalNameQualificationOnType; 
   77182           0 :      result->p_requiresGlobalNameQualificationOnType = requiresGlobalNameQualificationOnType_copy; 
   77183             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_base_type
   77184             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_base_type
   77185             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_base_type
   77186           0 :      int name_qualification_length_for_base_type_copy = p_name_qualification_length_for_base_type; 
   77187           0 :      result->p_name_qualification_length_for_base_type = name_qualification_length_for_base_type_copy; 
   77188             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_base_type
   77189             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_base_type
   77190             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_base_type
   77191           0 :      bool type_elaboration_required_for_base_type_copy = p_type_elaboration_required_for_base_type; 
   77192           0 :      result->p_type_elaboration_required_for_base_type = type_elaboration_required_for_base_type_copy; 
   77193             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_base_type
   77194             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_base_type
   77195             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_base_type
   77196           0 :      bool global_qualification_required_for_base_type_copy = p_global_qualification_required_for_base_type; 
   77197           0 :      result->p_global_qualification_required_for_base_type = global_qualification_required_for_base_type_copy; 
   77198             :   // Copy non-constructor parameter data member (access function): isAutonomousDeclaration_copy
   77199             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAutonomousDeclaration
   77200             :   // case: toBeCopied == COPY_DATA for isAutonomousDeclaration
   77201           0 :      bool isAutonomousDeclaration_copy = p_isAutonomousDeclaration; 
   77202           0 :      result->p_isAutonomousDeclaration = isAutonomousDeclaration_copy; 
   77203             :   // Copy non-constructor parameter data member (access function): isAssociatedWithDeclarationList_copy
   77204             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAssociatedWithDeclarationList
   77205             :   // case: toBeCopied == COPY_DATA for isAssociatedWithDeclarationList
   77206           0 :      bool isAssociatedWithDeclarationList_copy = p_isAssociatedWithDeclarationList; 
   77207           0 :      result->p_isAssociatedWithDeclarationList = isAssociatedWithDeclarationList_copy; 
   77208             :   // Copy non-constructor parameter data member (access function): isFirstDeclarationOfDeclarationList_copy
   77209             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isFirstDeclarationOfDeclarationList
   77210             :   // case: toBeCopied == COPY_DATA for isFirstDeclarationOfDeclarationList
   77211           0 :      bool isFirstDeclarationOfDeclarationList_copy = p_isFirstDeclarationOfDeclarationList; 
   77212           0 :      result->p_isFirstDeclarationOfDeclarationList = isFirstDeclarationOfDeclarationList_copy; 
   77213             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   77214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   77215             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   77216           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   77217           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   77218             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   77219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   77220             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   77221           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   77222           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   77223             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   77224             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   77225             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   77226           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   77227           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   77228             :   // case: not a listType for (using conditionalToSetParent)declaration
   77229           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
   77230             :              { 
   77231           0 :                declaration_copy->set_parent(result); 
   77232             :              } 
   77233             : 
   77234             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   77235             : 
   77236             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   77237             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   77238             :   // fixupCopy(result,help);
   77239             : 
   77240             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   77241             :   // the Sg_File_Info objects that are built for the new IR nodes.
   77242           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   77243           0 :      if (locatedNode != NULL)
   77244             :         {
   77245             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   77246           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   77247           0 :           ROSE_ASSERT(start != NULL);
   77248             : #if 0
   77249             :        // Debugging information
   77250             :           if (start->get_parent() == NULL)
   77251             :              {
   77252             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77253             :              }
   77254             : #endif
   77255           0 :           start->set_parent(locatedNode);
   77256           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   77257             : 
   77258           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   77259             : 
   77260             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   77261             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   77262             :        // ROSE_ASSERT(end != NULL);
   77263           0 :           if (end == NULL)
   77264             :              {
   77265           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   77266             :              }
   77267             :             else
   77268             :              {
   77269             : #if 0
   77270             :             // Debugging information
   77271             :                if (end->get_parent() == NULL)
   77272             :                   {
   77273             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77274             :                   }
   77275             : #endif
   77276           0 :                end->set_parent(locatedNode);
   77277           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   77278             :              }
   77279             : 
   77280           0 :           SgExpression* expression = isSgExpression(result);
   77281           0 :           if (isSgExpression(this) != NULL)
   77282             :              {
   77283           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   77284             : 
   77285             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   77286           0 :                if (operatorPosition != NULL)
   77287             :                   {
   77288             : #if 0
   77289             :                  // Debugging information
   77290             :                     if (operatorPosition->get_parent() == NULL)
   77291             :                        {
   77292             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77293             :                        }
   77294             : #endif
   77295           0 :                     operatorPosition->set_parent(expression);
   77296           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   77297             :                   }
   77298             :              }
   77299             :         }
   77300             : 
   77301             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   77302           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   77303           0 :      if (initializedName != NULL)
   77304             :         {
   77305             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   77306           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   77307           0 :           ROSE_ASSERT(start != NULL);
   77308             : #if 0
   77309             :        // Debugging information
   77310             :           if (start->get_parent() == NULL)
   77311             :              {
   77312             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77313             :              }
   77314             : #endif
   77315           0 :           start->set_parent(initializedName);
   77316           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   77317             : 
   77318             : #if 0
   77319             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   77320             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   77321             : 
   77322             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   77323             :        // ROSE_ASSERT(end != NULL);
   77324             :           if (end == NULL)
   77325             :              {
   77326             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   77327             :              }
   77328             :             else
   77329             :              {
   77330             :                if (end->get_parent() == NULL)
   77331             :                   {
   77332             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77333             :                   }
   77334             :                end->set_parent(initializedName);
   77335             :                ROSE_ASSERT(end->get_parent() != NULL);
   77336             :              }
   77337             : #endif
   77338             :         }
   77339             : 
   77340             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   77341           0 :      help.insertCopiedNodePair(this,result);
   77342             : 
   77343             :   // printf ("End of copy SgTypedefDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   77344             : 
   77345             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   77346             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   77347           0 :      help.decrementDepth();
   77348             : 
   77349             :   // Test if this is the root of the copy!
   77350           0 :      if (help.get_depth() == 0)
   77351             :         {
   77352             :        // This is the original calling node.
   77353             : 
   77354             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   77355             :        // printf ("Calling SgTypedefDeclaration::fixupCopy() (from root of AST being copied) \n");
   77356             : #if ALT_FIXUP_COPY
   77357             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   77358           0 :           fixupCopy_scopes (result,help);
   77359           0 :           fixupCopy_symbols (result,help);
   77360           0 :           fixupCopy_references (result,help);
   77361             : #else
   77362             :           fixupCopy(result,help);
   77363             : #endif
   77364             :        // Allow this to be called recursively, so accumulate the state.
   77365             :        // Also, clear the state in the SgCopyHelp object.
   77366             :        // help.clearState();
   77367             :         }
   77368             : 
   77369           0 :      return result;
   77370             :    }
   77371             : 
   77372             : 
   77373             : /* #line 77374 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   77374             : 
   77375             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   77376             : 
   77377           0 : SgNode* SgTemplateTypedefDeclaration::copy ( SgCopyHelp& help) const
   77378             :    {
   77379           0 :      SgTemplateTypedefDeclaration* result = NULL;
   77380             : 
   77381             :   // printf ("Copy SgTemplateTypedefDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   77382             : 
   77383             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   77384             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   77385             :   // The default value of the depth is 0, so after this call the depth is 1!
   77386           0 :      help.incrementDepth();
   77387             : 
   77388             : #if 0
   77389             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   77390             :   // but it is not generally true that things can only be copied once!
   77391             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   77392             :   // AstAttribute* existingAttribute = const_cast<SgTemplateTypedefDeclaration*>(this)->attribute["copied"];
   77393             :      bool previouslyCopied = const_cast<SgTemplateTypedefDeclaration*>(this)->attribute.exists("copied");
   77394             :      if (previouslyCopied == true)
   77395             :         {
   77396             :           this->get_file_info()->display("Called from copy SgTemplateTypedefDeclaration: debug");
   77397             :         }
   77398             :      ROSE_ASSERT(previouslyCopied == false);
   77399             : 
   77400             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   77401             :      AstAttribute* newAttribute = new AstAttribute();
   77402             :      ROSE_ASSERT(newAttribute != NULL);
   77403             : 
   77404             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   77405             :      const_cast<SgTemplateTypedefDeclaration*>(this)->attribute.add("copied",newAttribute);
   77406             : #endif
   77407             : 
   77408             :   // Copy data members from base classes
   77409             :   // Copy constructor parameter data member: startOfConstruct_copy
   77410             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   77411             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   77412           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   77413           0 :      if ( p_startOfConstruct != NULL ) 
   77414             :         { 
   77415           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   77416             :         } 
   77417             :        else 
   77418             :         { 
   77419             :           startOfConstruct_copy = NULL; 
   77420             :         } 
   77421             :   // Copy constructor parameter data member: name_copy
   77422             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   77423             :   // case: toBeCopied == COPY_DATA for name
   77424           0 :      SgName name_copy = p_name; 
   77425             :   // Copy constructor parameter data member: base_type_copy
   77426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   77427             :   // case: toBeCopied == COPY_DATA for base_type
   77428           0 :      SgType* base_type_copy = p_base_type; 
   77429             :   // Copy constructor parameter data member: type_copy
   77430             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   77431             :   // case: toBeCopied == CLONE_PTR for type
   77432           0 :      SgTypedefType* type_copy = NULL; 
   77433           0 :      if ( p_type != NULL ) 
   77434             :         { 
   77435           0 :           type_copy = new SgTypedefType( *p_type); 
   77436             :         } 
   77437             :        else 
   77438             :         { 
   77439             :           type_copy = NULL; 
   77440             :         } 
   77441             :   // Copy constructor parameter data member: declaration_copy
   77442           0 :      SgDeclarationStatement* declaration_copy; 
   77443             :   // case: not a listType for (using conditionalToCopyVariable)declaration
   77444           0 :           if (get_declaration() != NULL) 
   77445             :              { 
   77446           0 :                declaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_declaration())); 
   77447             :              } 
   77448             :             else 
   77449             :              { 
   77450             :                declaration_copy = NULL; 
   77451             :              } 
   77452             :   // Copy constructor parameter data member: parent_scope_copy
   77453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parent_scope
   77454             :   // case: toBeCopied == COPY_DATA for parent_scope
   77455           0 :      SgSymbol* parent_scope_copy = p_parent_scope; 
   77456             :  
   77457             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   77458             : 
   77459             :   // Build an empty copy of this object (will be filled in, but 
   77460             :   // the parent can't be set and must be set by the caller)
   77461           0 :      result = new SgTemplateTypedefDeclaration(  startOfConstruct_copy, name_copy, base_type_copy, type_copy, declaration_copy, parent_scope_copy );
   77462           0 :      ROSE_ASSERT(result != NULL);
   77463             : 
   77464             :   // Copy data members of "this" class
   77465             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   77466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   77467             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   77468           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   77469           0 :      if ( p_endOfConstruct != NULL ) 
   77470             :         { 
   77471           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   77472             :         } 
   77473             :        else 
   77474             :         { 
   77475             :           endOfConstruct_copy = NULL; 
   77476             :         } 
   77477             :   /* check for a valid pointer and delete if present */ 
   77478           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   77479             :   /* add assignment to result here */ 
   77480           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   77481             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   77482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   77483             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   77484           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   77485           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   77486             :         { 
   77487           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   77488             :         } 
   77489             :        else 
   77490             :         { 
   77491             :           attachedPreprocessingInfoPtr_copy = NULL; 
   77492             :         } 
   77493             :   /* check for a valid pointer and delete if present */ 
   77494           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   77495             :   /* add assignment to result here */ 
   77496           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   77497             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   77498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   77499             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   77500           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   77501           0 :      if ( p_attributeMechanism != NULL ) 
   77502             :         { 
   77503           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   77504             :         } 
   77505             :        else 
   77506             :         { 
   77507             :           attributeMechanism_copy = NULL; 
   77508             :         } 
   77509             :   /* check for a valid pointer and delete if present */ 
   77510           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   77511             :   /* add assignment to result here */ 
   77512           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   77513             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   77514             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   77515             :   // case: toBeCopied == COPY_DATA for numeric_label
   77516           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   77517           0 :      result->p_numeric_label = numeric_label_copy; 
   77518             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   77519             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   77520             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   77521           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   77522           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   77523             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   77524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   77525             :   // case: toBeCopied == COPY_DATA for decl_attributes
   77526           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   77527           0 :      result->p_decl_attributes = decl_attributes_copy; 
   77528             :   // Copy non-constructor parameter data member (access function): linkage_copy
   77529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   77530             :   // case: toBeCopied == COPY_DATA for linkage
   77531           0 :      std::string linkage_copy = p_linkage; 
   77532           0 :      result->p_linkage = linkage_copy; 
   77533             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   77534             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   77535             :   // case: toBeCopied == COPY_DATA for declarationModifier
   77536           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   77537           0 :      result->p_declarationModifier = declarationModifier_copy; 
   77538             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   77539             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   77540             :   // case: toBeCopied == COPY_DATA for nameOnly
   77541           0 :      bool nameOnly_copy = p_nameOnly; 
   77542           0 :      result->p_nameOnly = nameOnly_copy; 
   77543             :   // Copy non-constructor parameter data member (access function): forward_copy
   77544             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   77545             :   // case: toBeCopied == COPY_DATA for forward
   77546           0 :      bool forward_copy = p_forward; 
   77547           0 :      result->p_forward = forward_copy; 
   77548             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   77549             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   77550             :   // case: toBeCopied == COPY_DATA for externBrace
   77551           0 :      bool externBrace_copy = p_externBrace; 
   77552           0 :      result->p_externBrace = externBrace_copy; 
   77553             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   77554             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   77555             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   77556           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   77557           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   77558             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   77559             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   77560             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   77561           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   77562           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   77563             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   77564             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   77565             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   77566           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   77567           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   77568             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   77569             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   77570             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   77571           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   77572           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   77573             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   77574             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   77575             :   // case: toBeCopied == COPY_DATA for binding_label
   77576           0 :      std::string binding_label_copy = p_binding_label; 
   77577           0 :      result->p_binding_label = binding_label_copy; 
   77578             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   77579             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   77580             :   // case: toBeCopied == COPY_DATA for declarationScope
   77581           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   77582           0 :      result->p_declarationScope = declarationScope_copy; 
   77583             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   77584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   77585             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   77586           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   77587           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   77588             :   // Copy non-constructor parameter data member (access function): typedefBaseTypeContainsDefiningDeclaration_copy
   77589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefBaseTypeContainsDefiningDeclaration
   77590             :   // case: toBeCopied == COPY_DATA for typedefBaseTypeContainsDefiningDeclaration
   77591           0 :      bool typedefBaseTypeContainsDefiningDeclaration_copy = p_typedefBaseTypeContainsDefiningDeclaration; 
   77592           0 :      result->p_typedefBaseTypeContainsDefiningDeclaration = typedefBaseTypeContainsDefiningDeclaration_copy; 
   77593             :   // Copy non-constructor parameter data member (access function): scope_copy
   77594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   77595             :   // case: toBeCopied == COPY_DATA for scope
   77596           0 :      SgScopeStatement* scope_copy = p_scope; 
   77597           0 :      result->p_scope = scope_copy; 
   77598             :   // Copy non-constructor parameter data member (no access function): result->p_requiresGlobalNameQualificationOnType
   77599             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresGlobalNameQualificationOnType
   77600             :   // case: toBeCopied == COPY_DATA for requiresGlobalNameQualificationOnType
   77601           0 :      bool requiresGlobalNameQualificationOnType_copy = p_requiresGlobalNameQualificationOnType; 
   77602           0 :      result->p_requiresGlobalNameQualificationOnType = requiresGlobalNameQualificationOnType_copy; 
   77603             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_base_type
   77604             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_base_type
   77605             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_base_type
   77606           0 :      int name_qualification_length_for_base_type_copy = p_name_qualification_length_for_base_type; 
   77607           0 :      result->p_name_qualification_length_for_base_type = name_qualification_length_for_base_type_copy; 
   77608             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_base_type
   77609             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_base_type
   77610             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_base_type
   77611           0 :      bool type_elaboration_required_for_base_type_copy = p_type_elaboration_required_for_base_type; 
   77612           0 :      result->p_type_elaboration_required_for_base_type = type_elaboration_required_for_base_type_copy; 
   77613             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_base_type
   77614             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_base_type
   77615             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_base_type
   77616           0 :      bool global_qualification_required_for_base_type_copy = p_global_qualification_required_for_base_type; 
   77617           0 :      result->p_global_qualification_required_for_base_type = global_qualification_required_for_base_type_copy; 
   77618             :   // Copy non-constructor parameter data member (access function): isAutonomousDeclaration_copy
   77619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAutonomousDeclaration
   77620             :   // case: toBeCopied == COPY_DATA for isAutonomousDeclaration
   77621           0 :      bool isAutonomousDeclaration_copy = p_isAutonomousDeclaration; 
   77622           0 :      result->p_isAutonomousDeclaration = isAutonomousDeclaration_copy; 
   77623             :   // Copy non-constructor parameter data member (access function): isAssociatedWithDeclarationList_copy
   77624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAssociatedWithDeclarationList
   77625             :   // case: toBeCopied == COPY_DATA for isAssociatedWithDeclarationList
   77626           0 :      bool isAssociatedWithDeclarationList_copy = p_isAssociatedWithDeclarationList; 
   77627           0 :      result->p_isAssociatedWithDeclarationList = isAssociatedWithDeclarationList_copy; 
   77628             :   // Copy non-constructor parameter data member (access function): isFirstDeclarationOfDeclarationList_copy
   77629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isFirstDeclarationOfDeclarationList
   77630             :   // case: toBeCopied == COPY_DATA for isFirstDeclarationOfDeclarationList
   77631           0 :      bool isFirstDeclarationOfDeclarationList_copy = p_isFirstDeclarationOfDeclarationList; 
   77632           0 :      result->p_isFirstDeclarationOfDeclarationList = isFirstDeclarationOfDeclarationList_copy; 
   77633             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   77634             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   77635             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   77636           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   77637           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   77638             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   77639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   77640             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   77641           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   77642           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   77643             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   77644             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   77645             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   77646           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   77647           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   77648             :   // Copy non-constructor parameter data member (list access function): result->get_templateParameters()
   77649             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateParameters
   77650             :   // case: toBeCopied == COPY_DATA for templateParameters
   77651           0 :      SgTemplateParameterPtrList templateParameters_copy = p_templateParameters; 
   77652           0 :      result->p_templateParameters = templateParameters_copy; 
   77653             :   // Copy non-constructor parameter data member (list access function): result->get_templateSpecializationArguments()
   77654             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateSpecializationArguments
   77655             :   // case: toBeCopied == COPY_DATA for templateSpecializationArguments
   77656           0 :      SgTemplateArgumentPtrList templateSpecializationArguments_copy = p_templateSpecializationArguments; 
   77657           0 :      result->p_templateSpecializationArguments = templateSpecializationArguments_copy; 
   77658             :   // Copy non-constructor parameter data member (access function): string_copy
   77659             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string
   77660             :   // case: toBeCopied == COPY_DATA for string
   77661           0 :      SgName string_copy = p_string; 
   77662           0 :      result->p_string = string_copy; 
   77663             :   // Copy non-constructor parameter data member (access function): nonreal_decl_scope_copy
   77664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nonreal_decl_scope
   77665             :   // case: toBeCopied == COPY_DATA for nonreal_decl_scope
   77666           0 :      SgDeclarationScope* nonreal_decl_scope_copy = p_nonreal_decl_scope; 
   77667           0 :      result->p_nonreal_decl_scope = nonreal_decl_scope_copy; 
   77668             :   // case: not a listType for (using conditionalToSetParent)declaration
   77669           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
   77670             :              { 
   77671           0 :                declaration_copy->set_parent(result); 
   77672             :              } 
   77673             : 
   77674             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   77675             : 
   77676             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   77677             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   77678             :   // fixupCopy(result,help);
   77679             : 
   77680             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   77681             :   // the Sg_File_Info objects that are built for the new IR nodes.
   77682           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   77683           0 :      if (locatedNode != NULL)
   77684             :         {
   77685             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   77686           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   77687           0 :           ROSE_ASSERT(start != NULL);
   77688             : #if 0
   77689             :        // Debugging information
   77690             :           if (start->get_parent() == NULL)
   77691             :              {
   77692             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77693             :              }
   77694             : #endif
   77695           0 :           start->set_parent(locatedNode);
   77696           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   77697             : 
   77698           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   77699             : 
   77700             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   77701             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   77702             :        // ROSE_ASSERT(end != NULL);
   77703           0 :           if (end == NULL)
   77704             :              {
   77705           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   77706             :              }
   77707             :             else
   77708             :              {
   77709             : #if 0
   77710             :             // Debugging information
   77711             :                if (end->get_parent() == NULL)
   77712             :                   {
   77713             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77714             :                   }
   77715             : #endif
   77716           0 :                end->set_parent(locatedNode);
   77717           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   77718             :              }
   77719             : 
   77720           0 :           SgExpression* expression = isSgExpression(result);
   77721           0 :           if (isSgExpression(this) != NULL)
   77722             :              {
   77723           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   77724             : 
   77725             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   77726           0 :                if (operatorPosition != NULL)
   77727             :                   {
   77728             : #if 0
   77729             :                  // Debugging information
   77730             :                     if (operatorPosition->get_parent() == NULL)
   77731             :                        {
   77732             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77733             :                        }
   77734             : #endif
   77735           0 :                     operatorPosition->set_parent(expression);
   77736           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   77737             :                   }
   77738             :              }
   77739             :         }
   77740             : 
   77741             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   77742           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   77743           0 :      if (initializedName != NULL)
   77744             :         {
   77745             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   77746           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   77747           0 :           ROSE_ASSERT(start != NULL);
   77748             : #if 0
   77749             :        // Debugging information
   77750             :           if (start->get_parent() == NULL)
   77751             :              {
   77752             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77753             :              }
   77754             : #endif
   77755           0 :           start->set_parent(initializedName);
   77756           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   77757             : 
   77758             : #if 0
   77759             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   77760             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   77761             : 
   77762             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   77763             :        // ROSE_ASSERT(end != NULL);
   77764             :           if (end == NULL)
   77765             :              {
   77766             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   77767             :              }
   77768             :             else
   77769             :              {
   77770             :                if (end->get_parent() == NULL)
   77771             :                   {
   77772             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   77773             :                   }
   77774             :                end->set_parent(initializedName);
   77775             :                ROSE_ASSERT(end->get_parent() != NULL);
   77776             :              }
   77777             : #endif
   77778             :         }
   77779             : 
   77780             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   77781           0 :      help.insertCopiedNodePair(this,result);
   77782             : 
   77783             :   // printf ("End of copy SgTemplateTypedefDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   77784             : 
   77785             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   77786             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   77787           0 :      help.decrementDepth();
   77788             : 
   77789             :   // Test if this is the root of the copy!
   77790           0 :      if (help.get_depth() == 0)
   77791             :         {
   77792             :        // This is the original calling node.
   77793             : 
   77794             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   77795             :        // printf ("Calling SgTemplateTypedefDeclaration::fixupCopy() (from root of AST being copied) \n");
   77796             : #if ALT_FIXUP_COPY
   77797             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   77798           0 :           fixupCopy_scopes (result,help);
   77799           0 :           fixupCopy_symbols (result,help);
   77800           0 :           fixupCopy_references (result,help);
   77801             : #else
   77802             :           fixupCopy(result,help);
   77803             : #endif
   77804             :        // Allow this to be called recursively, so accumulate the state.
   77805             :        // Also, clear the state in the SgCopyHelp object.
   77806             :        // help.clearState();
   77807             :         }
   77808             : 
   77809           0 :      return result;
   77810             :    }
   77811             : 
   77812             : 
   77813             : /* #line 77814 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   77814             : 
   77815             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   77816             : 
   77817           0 : SgNode* SgTemplateInstantiationTypedefDeclaration::copy ( SgCopyHelp& help) const
   77818             :    {
   77819           0 :      SgTemplateInstantiationTypedefDeclaration* result = NULL;
   77820             : 
   77821             :   // printf ("Copy SgTemplateInstantiationTypedefDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   77822             : 
   77823             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   77824             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   77825             :   // The default value of the depth is 0, so after this call the depth is 1!
   77826           0 :      help.incrementDepth();
   77827             : 
   77828             : #if 0
   77829             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   77830             :   // but it is not generally true that things can only be copied once!
   77831             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   77832             :   // AstAttribute* existingAttribute = const_cast<SgTemplateInstantiationTypedefDeclaration*>(this)->attribute["copied"];
   77833             :      bool previouslyCopied = const_cast<SgTemplateInstantiationTypedefDeclaration*>(this)->attribute.exists("copied");
   77834             :      if (previouslyCopied == true)
   77835             :         {
   77836             :           this->get_file_info()->display("Called from copy SgTemplateInstantiationTypedefDeclaration: debug");
   77837             :         }
   77838             :      ROSE_ASSERT(previouslyCopied == false);
   77839             : 
   77840             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   77841             :      AstAttribute* newAttribute = new AstAttribute();
   77842             :      ROSE_ASSERT(newAttribute != NULL);
   77843             : 
   77844             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   77845             :      const_cast<SgTemplateInstantiationTypedefDeclaration*>(this)->attribute.add("copied",newAttribute);
   77846             : #endif
   77847             : 
   77848             :   // Copy data members from base classes
   77849             :   // Copy constructor parameter data member: startOfConstruct_copy
   77850             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   77851             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   77852           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   77853           0 :      if ( p_startOfConstruct != NULL ) 
   77854             :         { 
   77855           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   77856             :         } 
   77857             :        else 
   77858             :         { 
   77859             :           startOfConstruct_copy = NULL; 
   77860             :         } 
   77861             :   // Copy constructor parameter data member: name_copy
   77862             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   77863             :   // case: toBeCopied == COPY_DATA for name
   77864           0 :      SgName name_copy = p_name; 
   77865             :   // Copy constructor parameter data member: base_type_copy
   77866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for base_type
   77867             :   // case: toBeCopied == COPY_DATA for base_type
   77868           0 :      SgType* base_type_copy = p_base_type; 
   77869             :   // Copy constructor parameter data member: type_copy
   77870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   77871             :   // case: toBeCopied == CLONE_PTR for type
   77872           0 :      SgTypedefType* type_copy = NULL; 
   77873           0 :      if ( p_type != NULL ) 
   77874             :         { 
   77875           0 :           type_copy = new SgTypedefType( *p_type); 
   77876             :         } 
   77877             :        else 
   77878             :         { 
   77879             :           type_copy = NULL; 
   77880             :         } 
   77881             :   // Copy constructor parameter data member: declaration_copy
   77882           0 :      SgDeclarationStatement* declaration_copy; 
   77883             :   // case: not a listType for (using conditionalToCopyVariable)declaration
   77884           0 :           if (get_declaration() != NULL) 
   77885             :              { 
   77886           0 :                declaration_copy = static_cast<SgDeclarationStatement*>(help.copyAst(get_declaration())); 
   77887             :              } 
   77888             :             else 
   77889             :              { 
   77890             :                declaration_copy = NULL; 
   77891             :              } 
   77892             :   // Copy constructor parameter data member: parent_scope_copy
   77893             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parent_scope
   77894             :   // case: toBeCopied == COPY_DATA for parent_scope
   77895           0 :      SgSymbol* parent_scope_copy = p_parent_scope; 
   77896             :   // Copy constructor parameter data member: templateDeclaration_copy
   77897             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateDeclaration
   77898             :   // case: toBeCopied == COPY_DATA for templateDeclaration
   77899           0 :      SgTemplateTypedefDeclaration* templateDeclaration_copy = p_templateDeclaration; 
   77900             :   // Copy constructor parameter data member: templateArguments_copy
   77901             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateArguments
   77902             :   // case: toBeCopied == COPY_DATA for templateArguments
   77903           0 :      SgTemplateArgumentPtrList templateArguments_copy = p_templateArguments; 
   77904             :  
   77905             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   77906             : 
   77907             :   // Build an empty copy of this object (will be filled in, but 
   77908             :   // the parent can't be set and must be set by the caller)
   77909           0 :      result = new SgTemplateInstantiationTypedefDeclaration(  startOfConstruct_copy, name_copy, base_type_copy, type_copy, declaration_copy, parent_scope_copy, templateDeclaration_copy, templateArguments_copy );
   77910           0 :      ROSE_ASSERT(result != NULL);
   77911             : 
   77912             :   // Copy data members of "this" class
   77913             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   77914             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   77915             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   77916           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   77917           0 :      if ( p_endOfConstruct != NULL ) 
   77918             :         { 
   77919           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   77920             :         } 
   77921             :        else 
   77922             :         { 
   77923             :           endOfConstruct_copy = NULL; 
   77924             :         } 
   77925             :   /* check for a valid pointer and delete if present */ 
   77926           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   77927             :   /* add assignment to result here */ 
   77928           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   77929             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   77930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   77931             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   77932           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   77933           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   77934             :         { 
   77935           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   77936             :         } 
   77937             :        else 
   77938             :         { 
   77939             :           attachedPreprocessingInfoPtr_copy = NULL; 
   77940             :         } 
   77941             :   /* check for a valid pointer and delete if present */ 
   77942           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   77943             :   /* add assignment to result here */ 
   77944           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   77945             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   77946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   77947             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   77948           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   77949           0 :      if ( p_attributeMechanism != NULL ) 
   77950             :         { 
   77951           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   77952             :         } 
   77953             :        else 
   77954             :         { 
   77955             :           attributeMechanism_copy = NULL; 
   77956             :         } 
   77957             :   /* check for a valid pointer and delete if present */ 
   77958           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   77959             :   /* add assignment to result here */ 
   77960           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   77961             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   77962             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   77963             :   // case: toBeCopied == COPY_DATA for numeric_label
   77964           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   77965           0 :      result->p_numeric_label = numeric_label_copy; 
   77966             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   77967             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   77968             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   77969           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   77970           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   77971             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   77972             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   77973             :   // case: toBeCopied == COPY_DATA for decl_attributes
   77974           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   77975           0 :      result->p_decl_attributes = decl_attributes_copy; 
   77976             :   // Copy non-constructor parameter data member (access function): linkage_copy
   77977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   77978             :   // case: toBeCopied == COPY_DATA for linkage
   77979           0 :      std::string linkage_copy = p_linkage; 
   77980           0 :      result->p_linkage = linkage_copy; 
   77981             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   77982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   77983             :   // case: toBeCopied == COPY_DATA for declarationModifier
   77984           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   77985           0 :      result->p_declarationModifier = declarationModifier_copy; 
   77986             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   77987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   77988             :   // case: toBeCopied == COPY_DATA for nameOnly
   77989           0 :      bool nameOnly_copy = p_nameOnly; 
   77990           0 :      result->p_nameOnly = nameOnly_copy; 
   77991             :   // Copy non-constructor parameter data member (access function): forward_copy
   77992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   77993             :   // case: toBeCopied == COPY_DATA for forward
   77994           0 :      bool forward_copy = p_forward; 
   77995           0 :      result->p_forward = forward_copy; 
   77996             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   77997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   77998             :   // case: toBeCopied == COPY_DATA for externBrace
   77999           0 :      bool externBrace_copy = p_externBrace; 
   78000           0 :      result->p_externBrace = externBrace_copy; 
   78001             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   78002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   78003             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   78004           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   78005           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   78006             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   78007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   78008             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   78009           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   78010           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   78011             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   78012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   78013             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   78014           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   78015           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   78016             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   78017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   78018             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   78019           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   78020           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   78021             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   78022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   78023             :   // case: toBeCopied == COPY_DATA for binding_label
   78024           0 :      std::string binding_label_copy = p_binding_label; 
   78025           0 :      result->p_binding_label = binding_label_copy; 
   78026             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   78027             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   78028             :   // case: toBeCopied == COPY_DATA for declarationScope
   78029           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   78030           0 :      result->p_declarationScope = declarationScope_copy; 
   78031             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   78032             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   78033             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   78034           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   78035           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   78036             :   // Copy non-constructor parameter data member (access function): typedefBaseTypeContainsDefiningDeclaration_copy
   78037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for typedefBaseTypeContainsDefiningDeclaration
   78038             :   // case: toBeCopied == COPY_DATA for typedefBaseTypeContainsDefiningDeclaration
   78039           0 :      bool typedefBaseTypeContainsDefiningDeclaration_copy = p_typedefBaseTypeContainsDefiningDeclaration; 
   78040           0 :      result->p_typedefBaseTypeContainsDefiningDeclaration = typedefBaseTypeContainsDefiningDeclaration_copy; 
   78041             :   // Copy non-constructor parameter data member (access function): scope_copy
   78042             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   78043             :   // case: toBeCopied == COPY_DATA for scope
   78044           0 :      SgScopeStatement* scope_copy = p_scope; 
   78045           0 :      result->p_scope = scope_copy; 
   78046             :   // Copy non-constructor parameter data member (no access function): result->p_requiresGlobalNameQualificationOnType
   78047             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresGlobalNameQualificationOnType
   78048             :   // case: toBeCopied == COPY_DATA for requiresGlobalNameQualificationOnType
   78049           0 :      bool requiresGlobalNameQualificationOnType_copy = p_requiresGlobalNameQualificationOnType; 
   78050           0 :      result->p_requiresGlobalNameQualificationOnType = requiresGlobalNameQualificationOnType_copy; 
   78051             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_base_type
   78052             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_base_type
   78053             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_base_type
   78054           0 :      int name_qualification_length_for_base_type_copy = p_name_qualification_length_for_base_type; 
   78055           0 :      result->p_name_qualification_length_for_base_type = name_qualification_length_for_base_type_copy; 
   78056             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_base_type
   78057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_base_type
   78058             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_base_type
   78059           0 :      bool type_elaboration_required_for_base_type_copy = p_type_elaboration_required_for_base_type; 
   78060           0 :      result->p_type_elaboration_required_for_base_type = type_elaboration_required_for_base_type_copy; 
   78061             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_base_type
   78062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_base_type
   78063             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_base_type
   78064           0 :      bool global_qualification_required_for_base_type_copy = p_global_qualification_required_for_base_type; 
   78065           0 :      result->p_global_qualification_required_for_base_type = global_qualification_required_for_base_type_copy; 
   78066             :   // Copy non-constructor parameter data member (access function): isAutonomousDeclaration_copy
   78067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAutonomousDeclaration
   78068             :   // case: toBeCopied == COPY_DATA for isAutonomousDeclaration
   78069           0 :      bool isAutonomousDeclaration_copy = p_isAutonomousDeclaration; 
   78070           0 :      result->p_isAutonomousDeclaration = isAutonomousDeclaration_copy; 
   78071             :   // Copy non-constructor parameter data member (access function): isAssociatedWithDeclarationList_copy
   78072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAssociatedWithDeclarationList
   78073             :   // case: toBeCopied == COPY_DATA for isAssociatedWithDeclarationList
   78074           0 :      bool isAssociatedWithDeclarationList_copy = p_isAssociatedWithDeclarationList; 
   78075           0 :      result->p_isAssociatedWithDeclarationList = isAssociatedWithDeclarationList_copy; 
   78076             :   // Copy non-constructor parameter data member (access function): isFirstDeclarationOfDeclarationList_copy
   78077             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isFirstDeclarationOfDeclarationList
   78078             :   // case: toBeCopied == COPY_DATA for isFirstDeclarationOfDeclarationList
   78079           0 :      bool isFirstDeclarationOfDeclarationList_copy = p_isFirstDeclarationOfDeclarationList; 
   78080           0 :      result->p_isFirstDeclarationOfDeclarationList = isFirstDeclarationOfDeclarationList_copy; 
   78081             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   78082             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   78083             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   78084           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   78085           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   78086             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   78087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   78088             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   78089           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   78090           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   78091             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   78092             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   78093             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   78094           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   78095           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   78096             :   // Copy non-constructor parameter data member (access function): templateName_copy
   78097             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateName
   78098             :   // case: toBeCopied == COPY_DATA for templateName
   78099           0 :      SgName templateName_copy = p_templateName; 
   78100           0 :      result->p_templateName = templateName_copy; 
   78101             :   // Copy non-constructor parameter data member (access function): templateHeader_copy
   78102             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateHeader
   78103             :   // case: toBeCopied == COPY_DATA for templateHeader
   78104           0 :      SgName templateHeader_copy = p_templateHeader; 
   78105           0 :      result->p_templateHeader = templateHeader_copy; 
   78106             :   // Copy non-constructor parameter data member (access function): nameResetFromMangledForm_copy
   78107             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameResetFromMangledForm
   78108             :   // case: toBeCopied == COPY_DATA for nameResetFromMangledForm
   78109           0 :      bool nameResetFromMangledForm_copy = p_nameResetFromMangledForm; 
   78110           0 :      result->p_nameResetFromMangledForm = nameResetFromMangledForm_copy; 
   78111             :   // case: not a listType for (using conditionalToSetParent)declaration
   78112           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
   78113             :              { 
   78114           0 :                declaration_copy->set_parent(result); 
   78115             :              } 
   78116             : 
   78117             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   78118             : 
   78119             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   78120             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   78121             :   // fixupCopy(result,help);
   78122             : 
   78123             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   78124             :   // the Sg_File_Info objects that are built for the new IR nodes.
   78125           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   78126           0 :      if (locatedNode != NULL)
   78127             :         {
   78128             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   78129           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   78130           0 :           ROSE_ASSERT(start != NULL);
   78131             : #if 0
   78132             :        // Debugging information
   78133             :           if (start->get_parent() == NULL)
   78134             :              {
   78135             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78136             :              }
   78137             : #endif
   78138           0 :           start->set_parent(locatedNode);
   78139           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   78140             : 
   78141           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   78142             : 
   78143             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   78144             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   78145             :        // ROSE_ASSERT(end != NULL);
   78146           0 :           if (end == NULL)
   78147             :              {
   78148           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   78149             :              }
   78150             :             else
   78151             :              {
   78152             : #if 0
   78153             :             // Debugging information
   78154             :                if (end->get_parent() == NULL)
   78155             :                   {
   78156             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78157             :                   }
   78158             : #endif
   78159           0 :                end->set_parent(locatedNode);
   78160           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   78161             :              }
   78162             : 
   78163           0 :           SgExpression* expression = isSgExpression(result);
   78164           0 :           if (isSgExpression(this) != NULL)
   78165             :              {
   78166           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   78167             : 
   78168             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   78169           0 :                if (operatorPosition != NULL)
   78170             :                   {
   78171             : #if 0
   78172             :                  // Debugging information
   78173             :                     if (operatorPosition->get_parent() == NULL)
   78174             :                        {
   78175             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78176             :                        }
   78177             : #endif
   78178           0 :                     operatorPosition->set_parent(expression);
   78179           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   78180             :                   }
   78181             :              }
   78182             :         }
   78183             : 
   78184             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   78185           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   78186           0 :      if (initializedName != NULL)
   78187             :         {
   78188             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   78189           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   78190           0 :           ROSE_ASSERT(start != NULL);
   78191             : #if 0
   78192             :        // Debugging information
   78193             :           if (start->get_parent() == NULL)
   78194             :              {
   78195             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78196             :              }
   78197             : #endif
   78198           0 :           start->set_parent(initializedName);
   78199           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   78200             : 
   78201             : #if 0
   78202             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   78203             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   78204             : 
   78205             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   78206             :        // ROSE_ASSERT(end != NULL);
   78207             :           if (end == NULL)
   78208             :              {
   78209             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   78210             :              }
   78211             :             else
   78212             :              {
   78213             :                if (end->get_parent() == NULL)
   78214             :                   {
   78215             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78216             :                   }
   78217             :                end->set_parent(initializedName);
   78218             :                ROSE_ASSERT(end->get_parent() != NULL);
   78219             :              }
   78220             : #endif
   78221             :         }
   78222             : 
   78223             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   78224           0 :      help.insertCopiedNodePair(this,result);
   78225             : 
   78226             :   // printf ("End of copy SgTemplateInstantiationTypedefDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   78227             : 
   78228             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   78229             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   78230           0 :      help.decrementDepth();
   78231             : 
   78232             :   // Test if this is the root of the copy!
   78233           0 :      if (help.get_depth() == 0)
   78234             :         {
   78235             :        // This is the original calling node.
   78236             : 
   78237             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   78238             :        // printf ("Calling SgTemplateInstantiationTypedefDeclaration::fixupCopy() (from root of AST being copied) \n");
   78239             : #if ALT_FIXUP_COPY
   78240             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   78241           0 :           fixupCopy_scopes (result,help);
   78242           0 :           fixupCopy_symbols (result,help);
   78243           0 :           fixupCopy_references (result,help);
   78244             : #else
   78245             :           fixupCopy(result,help);
   78246             : #endif
   78247             :        // Allow this to be called recursively, so accumulate the state.
   78248             :        // Also, clear the state in the SgCopyHelp object.
   78249             :        // help.clearState();
   78250             :         }
   78251             : 
   78252           0 :      return result;
   78253             :    }
   78254             : 
   78255             : 
   78256             : /* #line 78257 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   78257             : 
   78258             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   78259             : 
   78260           0 : SgNode* SgStatementFunctionStatement::copy ( SgCopyHelp& help) const
   78261             :    {
   78262           0 :      SgStatementFunctionStatement* result = NULL;
   78263             : 
   78264             :   // printf ("Copy SgStatementFunctionStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   78265             : 
   78266             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   78267             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   78268             :   // The default value of the depth is 0, so after this call the depth is 1!
   78269           0 :      help.incrementDepth();
   78270             : 
   78271             : #if 0
   78272             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   78273             :   // but it is not generally true that things can only be copied once!
   78274             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   78275             :   // AstAttribute* existingAttribute = const_cast<SgStatementFunctionStatement*>(this)->attribute["copied"];
   78276             :      bool previouslyCopied = const_cast<SgStatementFunctionStatement*>(this)->attribute.exists("copied");
   78277             :      if (previouslyCopied == true)
   78278             :         {
   78279             :           this->get_file_info()->display("Called from copy SgStatementFunctionStatement: debug");
   78280             :         }
   78281             :      ROSE_ASSERT(previouslyCopied == false);
   78282             : 
   78283             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   78284             :      AstAttribute* newAttribute = new AstAttribute();
   78285             :      ROSE_ASSERT(newAttribute != NULL);
   78286             : 
   78287             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   78288             :      const_cast<SgStatementFunctionStatement*>(this)->attribute.add("copied",newAttribute);
   78289             : #endif
   78290             : 
   78291             :   // Copy data members from base classes
   78292             :   // Copy constructor parameter data member: startOfConstruct_copy
   78293             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   78294             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   78295           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   78296           0 :      if ( p_startOfConstruct != NULL ) 
   78297             :         { 
   78298           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   78299             :         } 
   78300             :        else 
   78301             :         { 
   78302             :           startOfConstruct_copy = NULL; 
   78303             :         } 
   78304             :   // Copy constructor parameter data member: function_copy
   78305           0 :      SgFunctionDeclaration* function_copy; 
   78306             :   // case: not a listType for (using conditionalToCopyVariable)function
   78307           0 :           if (get_function() != NULL) 
   78308             :              { 
   78309           0 :                function_copy = static_cast<SgFunctionDeclaration*>(help.copyAst(get_function())); 
   78310             :              } 
   78311             :             else 
   78312             :              { 
   78313             :                function_copy = NULL; 
   78314             :              } 
   78315             :   // Copy constructor parameter data member: expression_copy
   78316           0 :      SgExpression* expression_copy; 
   78317             :   // case: not a listType for (using conditionalToCopyVariable)expression
   78318           0 :           if (get_expression() != NULL) 
   78319             :              { 
   78320           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   78321             :              } 
   78322             :             else 
   78323             :              { 
   78324             :                expression_copy = NULL; 
   78325             :              } 
   78326             :  
   78327             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   78328             : 
   78329             :   // Build an empty copy of this object (will be filled in, but 
   78330             :   // the parent can't be set and must be set by the caller)
   78331           0 :      result = new SgStatementFunctionStatement(  startOfConstruct_copy, function_copy, expression_copy );
   78332           0 :      ROSE_ASSERT(result != NULL);
   78333             : 
   78334             :   // Copy data members of "this" class
   78335             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   78336             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   78337             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   78338           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   78339           0 :      if ( p_endOfConstruct != NULL ) 
   78340             :         { 
   78341           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   78342             :         } 
   78343             :        else 
   78344             :         { 
   78345             :           endOfConstruct_copy = NULL; 
   78346             :         } 
   78347             :   /* check for a valid pointer and delete if present */ 
   78348           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   78349             :   /* add assignment to result here */ 
   78350           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   78351             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   78352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   78353             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   78354           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   78355           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   78356             :         { 
   78357           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   78358             :         } 
   78359             :        else 
   78360             :         { 
   78361             :           attachedPreprocessingInfoPtr_copy = NULL; 
   78362             :         } 
   78363             :   /* check for a valid pointer and delete if present */ 
   78364           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   78365             :   /* add assignment to result here */ 
   78366           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   78367             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   78368             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   78369             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   78370           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   78371           0 :      if ( p_attributeMechanism != NULL ) 
   78372             :         { 
   78373           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   78374             :         } 
   78375             :        else 
   78376             :         { 
   78377             :           attributeMechanism_copy = NULL; 
   78378             :         } 
   78379             :   /* check for a valid pointer and delete if present */ 
   78380           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   78381             :   /* add assignment to result here */ 
   78382           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   78383             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   78384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   78385             :   // case: toBeCopied == COPY_DATA for numeric_label
   78386           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   78387           0 :      result->p_numeric_label = numeric_label_copy; 
   78388             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   78389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   78390             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   78391           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   78392           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   78393             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   78394             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   78395             :   // case: toBeCopied == COPY_DATA for decl_attributes
   78396           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   78397           0 :      result->p_decl_attributes = decl_attributes_copy; 
   78398             :   // Copy non-constructor parameter data member (access function): linkage_copy
   78399             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   78400             :   // case: toBeCopied == COPY_DATA for linkage
   78401           0 :      std::string linkage_copy = p_linkage; 
   78402           0 :      result->p_linkage = linkage_copy; 
   78403             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   78404             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   78405             :   // case: toBeCopied == COPY_DATA for declarationModifier
   78406           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   78407           0 :      result->p_declarationModifier = declarationModifier_copy; 
   78408             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   78409             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   78410             :   // case: toBeCopied == COPY_DATA for nameOnly
   78411           0 :      bool nameOnly_copy = p_nameOnly; 
   78412           0 :      result->p_nameOnly = nameOnly_copy; 
   78413             :   // Copy non-constructor parameter data member (access function): forward_copy
   78414             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   78415             :   // case: toBeCopied == COPY_DATA for forward
   78416           0 :      bool forward_copy = p_forward; 
   78417           0 :      result->p_forward = forward_copy; 
   78418             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   78419             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   78420             :   // case: toBeCopied == COPY_DATA for externBrace
   78421           0 :      bool externBrace_copy = p_externBrace; 
   78422           0 :      result->p_externBrace = externBrace_copy; 
   78423             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   78424             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   78425             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   78426           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   78427           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   78428             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   78429             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   78430             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   78431           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   78432           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   78433             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   78434             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   78435             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   78436           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   78437           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   78438             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   78439             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   78440             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   78441           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   78442           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   78443             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   78444             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   78445             :   // case: toBeCopied == COPY_DATA for binding_label
   78446           0 :      std::string binding_label_copy = p_binding_label; 
   78447           0 :      result->p_binding_label = binding_label_copy; 
   78448             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   78449             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   78450             :   // case: toBeCopied == COPY_DATA for declarationScope
   78451           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   78452           0 :      result->p_declarationScope = declarationScope_copy; 
   78453             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   78454             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   78455             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   78456           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   78457           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   78458             :   // case: not a listType for (using conditionalToSetParent)function
   78459           0 :           if ( (function_copy != NULL) && (function_copy->get_parent() == NULL) && (isSgType(function_copy) == NULL) ) 
   78460             :              { 
   78461           0 :                function_copy->set_parent(result); 
   78462             :              } 
   78463             :   // case: not a listType for (using conditionalToSetParent)expression
   78464           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   78465             :              { 
   78466           0 :                expression_copy->set_parent(result); 
   78467             :              } 
   78468             : 
   78469             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   78470             : 
   78471             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   78472             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   78473             :   // fixupCopy(result,help);
   78474             : 
   78475             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   78476             :   // the Sg_File_Info objects that are built for the new IR nodes.
   78477           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   78478           0 :      if (locatedNode != NULL)
   78479             :         {
   78480             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   78481           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   78482           0 :           ROSE_ASSERT(start != NULL);
   78483             : #if 0
   78484             :        // Debugging information
   78485             :           if (start->get_parent() == NULL)
   78486             :              {
   78487             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78488             :              }
   78489             : #endif
   78490           0 :           start->set_parent(locatedNode);
   78491           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   78492             : 
   78493           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   78494             : 
   78495             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   78496             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   78497             :        // ROSE_ASSERT(end != NULL);
   78498           0 :           if (end == NULL)
   78499             :              {
   78500           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   78501             :              }
   78502             :             else
   78503             :              {
   78504             : #if 0
   78505             :             // Debugging information
   78506             :                if (end->get_parent() == NULL)
   78507             :                   {
   78508             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78509             :                   }
   78510             : #endif
   78511           0 :                end->set_parent(locatedNode);
   78512           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   78513             :              }
   78514             : 
   78515           0 :           SgExpression* expression = isSgExpression(result);
   78516           0 :           if (isSgExpression(this) != NULL)
   78517             :              {
   78518           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   78519             : 
   78520             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   78521           0 :                if (operatorPosition != NULL)
   78522             :                   {
   78523             : #if 0
   78524             :                  // Debugging information
   78525             :                     if (operatorPosition->get_parent() == NULL)
   78526             :                        {
   78527             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78528             :                        }
   78529             : #endif
   78530           0 :                     operatorPosition->set_parent(expression);
   78531           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   78532             :                   }
   78533             :              }
   78534             :         }
   78535             : 
   78536             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   78537           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   78538           0 :      if (initializedName != NULL)
   78539             :         {
   78540             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   78541           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   78542           0 :           ROSE_ASSERT(start != NULL);
   78543             : #if 0
   78544             :        // Debugging information
   78545             :           if (start->get_parent() == NULL)
   78546             :              {
   78547             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78548             :              }
   78549             : #endif
   78550           0 :           start->set_parent(initializedName);
   78551           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   78552             : 
   78553             : #if 0
   78554             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   78555             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   78556             : 
   78557             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   78558             :        // ROSE_ASSERT(end != NULL);
   78559             :           if (end == NULL)
   78560             :              {
   78561             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   78562             :              }
   78563             :             else
   78564             :              {
   78565             :                if (end->get_parent() == NULL)
   78566             :                   {
   78567             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78568             :                   }
   78569             :                end->set_parent(initializedName);
   78570             :                ROSE_ASSERT(end->get_parent() != NULL);
   78571             :              }
   78572             : #endif
   78573             :         }
   78574             : 
   78575             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   78576           0 :      help.insertCopiedNodePair(this,result);
   78577             : 
   78578             :   // printf ("End of copy SgStatementFunctionStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   78579             : 
   78580             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   78581             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   78582           0 :      help.decrementDepth();
   78583             : 
   78584             :   // Test if this is the root of the copy!
   78585           0 :      if (help.get_depth() == 0)
   78586             :         {
   78587             :        // This is the original calling node.
   78588             : 
   78589             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   78590             :        // printf ("Calling SgStatementFunctionStatement::fixupCopy() (from root of AST being copied) \n");
   78591             : #if ALT_FIXUP_COPY
   78592             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   78593           0 :           fixupCopy_scopes (result,help);
   78594           0 :           fixupCopy_symbols (result,help);
   78595           0 :           fixupCopy_references (result,help);
   78596             : #else
   78597             :           fixupCopy(result,help);
   78598             : #endif
   78599             :        // Allow this to be called recursively, so accumulate the state.
   78600             :        // Also, clear the state in the SgCopyHelp object.
   78601             :        // help.clearState();
   78602             :         }
   78603             : 
   78604           0 :      return result;
   78605             :    }
   78606             : 
   78607             : 
   78608             : /* #line 78609 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   78609             : 
   78610             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   78611             : 
   78612           0 : SgNode* SgCtorInitializerList::copy ( SgCopyHelp& help) const
   78613             :    {
   78614           0 :      SgCtorInitializerList* result = NULL;
   78615             : 
   78616             :   // printf ("Copy SgCtorInitializerList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   78617             : 
   78618             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   78619             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   78620             :   // The default value of the depth is 0, so after this call the depth is 1!
   78621           0 :      help.incrementDepth();
   78622             : 
   78623             : #if 0
   78624             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   78625             :   // but it is not generally true that things can only be copied once!
   78626             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   78627             :   // AstAttribute* existingAttribute = const_cast<SgCtorInitializerList*>(this)->attribute["copied"];
   78628             :      bool previouslyCopied = const_cast<SgCtorInitializerList*>(this)->attribute.exists("copied");
   78629             :      if (previouslyCopied == true)
   78630             :         {
   78631             :           this->get_file_info()->display("Called from copy SgCtorInitializerList: debug");
   78632             :         }
   78633             :      ROSE_ASSERT(previouslyCopied == false);
   78634             : 
   78635             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   78636             :      AstAttribute* newAttribute = new AstAttribute();
   78637             :      ROSE_ASSERT(newAttribute != NULL);
   78638             : 
   78639             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   78640             :      const_cast<SgCtorInitializerList*>(this)->attribute.add("copied",newAttribute);
   78641             : #endif
   78642             : 
   78643             :   // Copy data members from base classes
   78644             :   // Copy constructor parameter data member: startOfConstruct_copy
   78645             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   78646             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   78647           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   78648           0 :      if ( p_startOfConstruct != NULL ) 
   78649             :         { 
   78650           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   78651             :         } 
   78652             :        else 
   78653             :         { 
   78654             :           startOfConstruct_copy = NULL; 
   78655             :         } 
   78656             :  
   78657             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   78658             : 
   78659             :   // Build an empty copy of this object (will be filled in, but 
   78660             :   // the parent can't be set and must be set by the caller)
   78661           0 :      result = new SgCtorInitializerList(  startOfConstruct_copy );
   78662           0 :      ROSE_ASSERT(result != NULL);
   78663             : 
   78664             :   // Copy data members of "this" class
   78665             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   78666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   78667             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   78668           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   78669           0 :      if ( p_endOfConstruct != NULL ) 
   78670             :         { 
   78671           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   78672             :         } 
   78673             :        else 
   78674             :         { 
   78675             :           endOfConstruct_copy = NULL; 
   78676             :         } 
   78677             :   /* check for a valid pointer and delete if present */ 
   78678           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   78679             :   /* add assignment to result here */ 
   78680           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   78681             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   78682             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   78683             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   78684           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   78685           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   78686             :         { 
   78687           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   78688             :         } 
   78689             :        else 
   78690             :         { 
   78691             :           attachedPreprocessingInfoPtr_copy = NULL; 
   78692             :         } 
   78693             :   /* check for a valid pointer and delete if present */ 
   78694           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   78695             :   /* add assignment to result here */ 
   78696           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   78697             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   78698             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   78699             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   78700           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   78701           0 :      if ( p_attributeMechanism != NULL ) 
   78702             :         { 
   78703           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   78704             :         } 
   78705             :        else 
   78706             :         { 
   78707             :           attributeMechanism_copy = NULL; 
   78708             :         } 
   78709             :   /* check for a valid pointer and delete if present */ 
   78710           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   78711             :   /* add assignment to result here */ 
   78712           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   78713             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   78714             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   78715             :   // case: toBeCopied == COPY_DATA for numeric_label
   78716           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   78717           0 :      result->p_numeric_label = numeric_label_copy; 
   78718             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   78719             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   78720             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   78721           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   78722           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   78723             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   78724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   78725             :   // case: toBeCopied == COPY_DATA for decl_attributes
   78726           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   78727           0 :      result->p_decl_attributes = decl_attributes_copy; 
   78728             :   // Copy non-constructor parameter data member (access function): linkage_copy
   78729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   78730             :   // case: toBeCopied == COPY_DATA for linkage
   78731           0 :      std::string linkage_copy = p_linkage; 
   78732           0 :      result->p_linkage = linkage_copy; 
   78733             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   78734             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   78735             :   // case: toBeCopied == COPY_DATA for declarationModifier
   78736           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   78737           0 :      result->p_declarationModifier = declarationModifier_copy; 
   78738             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   78739             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   78740             :   // case: toBeCopied == COPY_DATA for nameOnly
   78741           0 :      bool nameOnly_copy = p_nameOnly; 
   78742           0 :      result->p_nameOnly = nameOnly_copy; 
   78743             :   // Copy non-constructor parameter data member (access function): forward_copy
   78744             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   78745             :   // case: toBeCopied == COPY_DATA for forward
   78746           0 :      bool forward_copy = p_forward; 
   78747           0 :      result->p_forward = forward_copy; 
   78748             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   78749             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   78750             :   // case: toBeCopied == COPY_DATA for externBrace
   78751           0 :      bool externBrace_copy = p_externBrace; 
   78752           0 :      result->p_externBrace = externBrace_copy; 
   78753             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   78754             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   78755             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   78756           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   78757           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   78758             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   78759             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   78760             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   78761           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   78762           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   78763             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   78764             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   78765             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   78766           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   78767           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   78768             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   78769             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   78770             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   78771           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   78772           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   78773             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   78774             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   78775             :   // case: toBeCopied == COPY_DATA for binding_label
   78776           0 :      std::string binding_label_copy = p_binding_label; 
   78777           0 :      result->p_binding_label = binding_label_copy; 
   78778             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   78779             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   78780             :   // case: toBeCopied == COPY_DATA for declarationScope
   78781           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   78782           0 :      result->p_declarationScope = declarationScope_copy; 
   78783             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   78784             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   78785             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   78786           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   78787           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   78788             :   // Copy non-constructor parameter data member (list access function): result->get_ctors()
   78789           0 :      SgInitializedNamePtrList ctors_copy; 
   78790             :   // case: listType for ctors
   78791             :   // case: listType (typeIsPointerToList == false) for ctors
   78792           0 :      SgInitializedNamePtrList::const_iterator source_ctors_iterator = get_ctors().begin(); 
   78793           0 :      for ( /* empty by design */; source_ctors_iterator != get_ctors().end(); ++source_ctors_iterator) 
   78794             :         { 
   78795           0 :           SgInitializedName* source_list_element = *source_ctors_iterator; 
   78796           0 :           SgInitializedName* copy_list_element = NULL; 
   78797           0 :           if (source_list_element != NULL) 
   78798             :              { 
   78799           0 :                copy_list_element = static_cast<SgInitializedName*>(help.copyAst(*source_ctors_iterator)); 
   78800             :              } 
   78801             :             else 
   78802             :              { 
   78803             :                copy_list_element = NULL; 
   78804             :              } 
   78805           0 :           ctors_copy.push_back(copy_list_element); 
   78806             :         } 
   78807           0 :      result->p_ctors = ctors_copy; 
   78808             :   // case: listType for ctors
   78809             :   // case: listType (typeIsPointerToList == false) for ctors
   78810           0 :      SgInitializedNamePtrList::const_iterator ctors_iterator = result->get_ctors().begin(); 
   78811           0 :      for ( /* empty by design */; ctors_iterator != result->get_ctors().end(); ++ctors_iterator) 
   78812             :         { 
   78813           0 :           SgInitializedName* list_element = *ctors_iterator; 
   78814           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   78815             :              { 
   78816           0 :                list_element->set_parent(result); 
   78817             :              } 
   78818             :         } 
   78819             : 
   78820             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   78821             : 
   78822             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   78823             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   78824             :   // fixupCopy(result,help);
   78825             : 
   78826             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   78827             :   // the Sg_File_Info objects that are built for the new IR nodes.
   78828           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   78829           0 :      if (locatedNode != NULL)
   78830             :         {
   78831             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   78832           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   78833           0 :           ROSE_ASSERT(start != NULL);
   78834             : #if 0
   78835             :        // Debugging information
   78836             :           if (start->get_parent() == NULL)
   78837             :              {
   78838             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78839             :              }
   78840             : #endif
   78841           0 :           start->set_parent(locatedNode);
   78842           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   78843             : 
   78844           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   78845             : 
   78846             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   78847             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   78848             :        // ROSE_ASSERT(end != NULL);
   78849           0 :           if (end == NULL)
   78850             :              {
   78851           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   78852             :              }
   78853             :             else
   78854             :              {
   78855             : #if 0
   78856             :             // Debugging information
   78857             :                if (end->get_parent() == NULL)
   78858             :                   {
   78859             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78860             :                   }
   78861             : #endif
   78862           0 :                end->set_parent(locatedNode);
   78863           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   78864             :              }
   78865             : 
   78866           0 :           SgExpression* expression = isSgExpression(result);
   78867           0 :           if (isSgExpression(this) != NULL)
   78868             :              {
   78869           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   78870             : 
   78871             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   78872           0 :                if (operatorPosition != NULL)
   78873             :                   {
   78874             : #if 0
   78875             :                  // Debugging information
   78876             :                     if (operatorPosition->get_parent() == NULL)
   78877             :                        {
   78878             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78879             :                        }
   78880             : #endif
   78881           0 :                     operatorPosition->set_parent(expression);
   78882           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   78883             :                   }
   78884             :              }
   78885             :         }
   78886             : 
   78887             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   78888           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   78889           0 :      if (initializedName != NULL)
   78890             :         {
   78891             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   78892           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   78893           0 :           ROSE_ASSERT(start != NULL);
   78894             : #if 0
   78895             :        // Debugging information
   78896             :           if (start->get_parent() == NULL)
   78897             :              {
   78898             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78899             :              }
   78900             : #endif
   78901           0 :           start->set_parent(initializedName);
   78902           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   78903             : 
   78904             : #if 0
   78905             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   78906             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   78907             : 
   78908             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   78909             :        // ROSE_ASSERT(end != NULL);
   78910             :           if (end == NULL)
   78911             :              {
   78912             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   78913             :              }
   78914             :             else
   78915             :              {
   78916             :                if (end->get_parent() == NULL)
   78917             :                   {
   78918             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   78919             :                   }
   78920             :                end->set_parent(initializedName);
   78921             :                ROSE_ASSERT(end->get_parent() != NULL);
   78922             :              }
   78923             : #endif
   78924             :         }
   78925             : 
   78926             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   78927           0 :      help.insertCopiedNodePair(this,result);
   78928             : 
   78929             :   // printf ("End of copy SgCtorInitializerList = %p = %s \n",this,SageInterface::get_name(this).c_str());
   78930             : 
   78931             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   78932             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   78933           0 :      help.decrementDepth();
   78934             : 
   78935             :   // Test if this is the root of the copy!
   78936           0 :      if (help.get_depth() == 0)
   78937             :         {
   78938             :        // This is the original calling node.
   78939             : 
   78940             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   78941             :        // printf ("Calling SgCtorInitializerList::fixupCopy() (from root of AST being copied) \n");
   78942             : #if ALT_FIXUP_COPY
   78943             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   78944           0 :           fixupCopy_scopes (result,help);
   78945           0 :           fixupCopy_symbols (result,help);
   78946           0 :           fixupCopy_references (result,help);
   78947             : #else
   78948             :           fixupCopy(result,help);
   78949             : #endif
   78950             :        // Allow this to be called recursively, so accumulate the state.
   78951             :        // Also, clear the state in the SgCopyHelp object.
   78952             :        // help.clearState();
   78953             :         }
   78954             : 
   78955           0 :      return result;
   78956             :    }
   78957             : 
   78958             : 
   78959             : /* #line 78960 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   78960             : 
   78961             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   78962             : 
   78963           0 : SgNode* SgPragmaDeclaration::copy ( SgCopyHelp& help) const
   78964             :    {
   78965           0 :      SgPragmaDeclaration* result = NULL;
   78966             : 
   78967             :   // printf ("Copy SgPragmaDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   78968             : 
   78969             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   78970             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   78971             :   // The default value of the depth is 0, so after this call the depth is 1!
   78972           0 :      help.incrementDepth();
   78973             : 
   78974             : #if 0
   78975             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   78976             :   // but it is not generally true that things can only be copied once!
   78977             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   78978             :   // AstAttribute* existingAttribute = const_cast<SgPragmaDeclaration*>(this)->attribute["copied"];
   78979             :      bool previouslyCopied = const_cast<SgPragmaDeclaration*>(this)->attribute.exists("copied");
   78980             :      if (previouslyCopied == true)
   78981             :         {
   78982             :           this->get_file_info()->display("Called from copy SgPragmaDeclaration: debug");
   78983             :         }
   78984             :      ROSE_ASSERT(previouslyCopied == false);
   78985             : 
   78986             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   78987             :      AstAttribute* newAttribute = new AstAttribute();
   78988             :      ROSE_ASSERT(newAttribute != NULL);
   78989             : 
   78990             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   78991             :      const_cast<SgPragmaDeclaration*>(this)->attribute.add("copied",newAttribute);
   78992             : #endif
   78993             : 
   78994             :   // Copy data members from base classes
   78995             :   // Copy constructor parameter data member: startOfConstruct_copy
   78996             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   78997             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   78998           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   78999           0 :      if ( p_startOfConstruct != NULL ) 
   79000             :         { 
   79001           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   79002             :         } 
   79003             :        else 
   79004             :         { 
   79005             :           startOfConstruct_copy = NULL; 
   79006             :         } 
   79007             :   // Copy constructor parameter data member: pragma_copy
   79008           0 :      SgPragma* pragma_copy; 
   79009             :   // case: not a listType for (using conditionalToCopyVariable)pragma
   79010           0 :           if (get_pragma() != NULL) 
   79011             :              { 
   79012           0 :                pragma_copy = static_cast<SgPragma*>(help.copyAst(get_pragma())); 
   79013             :              } 
   79014             :             else 
   79015             :              { 
   79016             :                pragma_copy = NULL; 
   79017             :              } 
   79018             :  
   79019             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   79020             : 
   79021             :   // Build an empty copy of this object (will be filled in, but 
   79022             :   // the parent can't be set and must be set by the caller)
   79023           0 :      result = new SgPragmaDeclaration(  startOfConstruct_copy, pragma_copy );
   79024           0 :      ROSE_ASSERT(result != NULL);
   79025             : 
   79026             :   // Copy data members of "this" class
   79027             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   79028             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   79029             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   79030           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   79031           0 :      if ( p_endOfConstruct != NULL ) 
   79032             :         { 
   79033           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   79034             :         } 
   79035             :        else 
   79036             :         { 
   79037             :           endOfConstruct_copy = NULL; 
   79038             :         } 
   79039             :   /* check for a valid pointer and delete if present */ 
   79040           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   79041             :   /* add assignment to result here */ 
   79042           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   79043             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   79044             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   79045             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   79046           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   79047           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   79048             :         { 
   79049           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   79050             :         } 
   79051             :        else 
   79052             :         { 
   79053             :           attachedPreprocessingInfoPtr_copy = NULL; 
   79054             :         } 
   79055             :   /* check for a valid pointer and delete if present */ 
   79056           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   79057             :   /* add assignment to result here */ 
   79058           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   79059             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   79060             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   79061             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   79062           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   79063           0 :      if ( p_attributeMechanism != NULL ) 
   79064             :         { 
   79065           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   79066             :         } 
   79067             :        else 
   79068             :         { 
   79069             :           attributeMechanism_copy = NULL; 
   79070             :         } 
   79071             :   /* check for a valid pointer and delete if present */ 
   79072           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   79073             :   /* add assignment to result here */ 
   79074           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   79075             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   79076             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   79077             :   // case: toBeCopied == COPY_DATA for numeric_label
   79078           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   79079           0 :      result->p_numeric_label = numeric_label_copy; 
   79080             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   79081             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   79082             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   79083           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   79084           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   79085             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   79086             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   79087             :   // case: toBeCopied == COPY_DATA for decl_attributes
   79088           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   79089           0 :      result->p_decl_attributes = decl_attributes_copy; 
   79090             :   // Copy non-constructor parameter data member (access function): linkage_copy
   79091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   79092             :   // case: toBeCopied == COPY_DATA for linkage
   79093           0 :      std::string linkage_copy = p_linkage; 
   79094           0 :      result->p_linkage = linkage_copy; 
   79095             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   79096             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   79097             :   // case: toBeCopied == COPY_DATA for declarationModifier
   79098           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   79099           0 :      result->p_declarationModifier = declarationModifier_copy; 
   79100             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   79101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   79102             :   // case: toBeCopied == COPY_DATA for nameOnly
   79103           0 :      bool nameOnly_copy = p_nameOnly; 
   79104           0 :      result->p_nameOnly = nameOnly_copy; 
   79105             :   // Copy non-constructor parameter data member (access function): forward_copy
   79106             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   79107             :   // case: toBeCopied == COPY_DATA for forward
   79108           0 :      bool forward_copy = p_forward; 
   79109           0 :      result->p_forward = forward_copy; 
   79110             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   79111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   79112             :   // case: toBeCopied == COPY_DATA for externBrace
   79113           0 :      bool externBrace_copy = p_externBrace; 
   79114           0 :      result->p_externBrace = externBrace_copy; 
   79115             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   79116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   79117             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   79118           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   79119           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   79120             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   79121             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   79122             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   79123           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   79124           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   79125             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   79126             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   79127             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   79128           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   79129           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   79130             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   79131             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   79132             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   79133           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   79134           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   79135             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   79136             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   79137             :   // case: toBeCopied == COPY_DATA for binding_label
   79138           0 :      std::string binding_label_copy = p_binding_label; 
   79139           0 :      result->p_binding_label = binding_label_copy; 
   79140             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   79141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   79142             :   // case: toBeCopied == COPY_DATA for declarationScope
   79143           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   79144           0 :      result->p_declarationScope = declarationScope_copy; 
   79145             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   79146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   79147             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   79148           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   79149           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   79150             :   // case: not a listType for (using conditionalToSetParent)pragma
   79151           0 :           if ( (pragma_copy != NULL) && (pragma_copy->get_parent() == NULL) && (isSgType(pragma_copy) == NULL) ) 
   79152             :              { 
   79153           0 :                pragma_copy->set_parent(result); 
   79154             :              } 
   79155             : 
   79156             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   79157             : 
   79158             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   79159             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   79160             :   // fixupCopy(result,help);
   79161             : 
   79162             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   79163             :   // the Sg_File_Info objects that are built for the new IR nodes.
   79164           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   79165           0 :      if (locatedNode != NULL)
   79166             :         {
   79167             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   79168           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   79169           0 :           ROSE_ASSERT(start != NULL);
   79170             : #if 0
   79171             :        // Debugging information
   79172             :           if (start->get_parent() == NULL)
   79173             :              {
   79174             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79175             :              }
   79176             : #endif
   79177           0 :           start->set_parent(locatedNode);
   79178           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   79179             : 
   79180           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   79181             : 
   79182             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   79183             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   79184             :        // ROSE_ASSERT(end != NULL);
   79185           0 :           if (end == NULL)
   79186             :              {
   79187           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   79188             :              }
   79189             :             else
   79190             :              {
   79191             : #if 0
   79192             :             // Debugging information
   79193             :                if (end->get_parent() == NULL)
   79194             :                   {
   79195             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79196             :                   }
   79197             : #endif
   79198           0 :                end->set_parent(locatedNode);
   79199           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   79200             :              }
   79201             : 
   79202           0 :           SgExpression* expression = isSgExpression(result);
   79203           0 :           if (isSgExpression(this) != NULL)
   79204             :              {
   79205           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   79206             : 
   79207             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   79208           0 :                if (operatorPosition != NULL)
   79209             :                   {
   79210             : #if 0
   79211             :                  // Debugging information
   79212             :                     if (operatorPosition->get_parent() == NULL)
   79213             :                        {
   79214             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79215             :                        }
   79216             : #endif
   79217           0 :                     operatorPosition->set_parent(expression);
   79218           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   79219             :                   }
   79220             :              }
   79221             :         }
   79222             : 
   79223             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   79224           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   79225           0 :      if (initializedName != NULL)
   79226             :         {
   79227             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   79228           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   79229           0 :           ROSE_ASSERT(start != NULL);
   79230             : #if 0
   79231             :        // Debugging information
   79232             :           if (start->get_parent() == NULL)
   79233             :              {
   79234             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79235             :              }
   79236             : #endif
   79237           0 :           start->set_parent(initializedName);
   79238           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   79239             : 
   79240             : #if 0
   79241             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   79242             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   79243             : 
   79244             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   79245             :        // ROSE_ASSERT(end != NULL);
   79246             :           if (end == NULL)
   79247             :              {
   79248             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   79249             :              }
   79250             :             else
   79251             :              {
   79252             :                if (end->get_parent() == NULL)
   79253             :                   {
   79254             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79255             :                   }
   79256             :                end->set_parent(initializedName);
   79257             :                ROSE_ASSERT(end->get_parent() != NULL);
   79258             :              }
   79259             : #endif
   79260             :         }
   79261             : 
   79262             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   79263           0 :      help.insertCopiedNodePair(this,result);
   79264             : 
   79265             :   // printf ("End of copy SgPragmaDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   79266             : 
   79267             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   79268             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   79269           0 :      help.decrementDepth();
   79270             : 
   79271             :   // Test if this is the root of the copy!
   79272           0 :      if (help.get_depth() == 0)
   79273             :         {
   79274             :        // This is the original calling node.
   79275             : 
   79276             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   79277             :        // printf ("Calling SgPragmaDeclaration::fixupCopy() (from root of AST being copied) \n");
   79278             : #if ALT_FIXUP_COPY
   79279             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   79280           0 :           fixupCopy_scopes (result,help);
   79281           0 :           fixupCopy_symbols (result,help);
   79282           0 :           fixupCopy_references (result,help);
   79283             : #else
   79284             :           fixupCopy(result,help);
   79285             : #endif
   79286             :        // Allow this to be called recursively, so accumulate the state.
   79287             :        // Also, clear the state in the SgCopyHelp object.
   79288             :        // help.clearState();
   79289             :         }
   79290             : 
   79291           0 :      return result;
   79292             :    }
   79293             : 
   79294             : 
   79295             : /* #line 79296 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   79296             : 
   79297             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   79298             : 
   79299           0 : SgNode* SgUsingDirectiveStatement::copy ( SgCopyHelp& help) const
   79300             :    {
   79301           0 :      SgUsingDirectiveStatement* result = NULL;
   79302             : 
   79303             :   // printf ("Copy SgUsingDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   79304             : 
   79305             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   79306             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   79307             :   // The default value of the depth is 0, so after this call the depth is 1!
   79308           0 :      help.incrementDepth();
   79309             : 
   79310             : #if 0
   79311             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   79312             :   // but it is not generally true that things can only be copied once!
   79313             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   79314             :   // AstAttribute* existingAttribute = const_cast<SgUsingDirectiveStatement*>(this)->attribute["copied"];
   79315             :      bool previouslyCopied = const_cast<SgUsingDirectiveStatement*>(this)->attribute.exists("copied");
   79316             :      if (previouslyCopied == true)
   79317             :         {
   79318             :           this->get_file_info()->display("Called from copy SgUsingDirectiveStatement: debug");
   79319             :         }
   79320             :      ROSE_ASSERT(previouslyCopied == false);
   79321             : 
   79322             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   79323             :      AstAttribute* newAttribute = new AstAttribute();
   79324             :      ROSE_ASSERT(newAttribute != NULL);
   79325             : 
   79326             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   79327             :      const_cast<SgUsingDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   79328             : #endif
   79329             : 
   79330             :   // Copy data members from base classes
   79331             :   // Copy constructor parameter data member: startOfConstruct_copy
   79332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   79333             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   79334           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   79335           0 :      if ( p_startOfConstruct != NULL ) 
   79336             :         { 
   79337           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   79338             :         } 
   79339             :        else 
   79340             :         { 
   79341             :           startOfConstruct_copy = NULL; 
   79342             :         } 
   79343             :   // Copy constructor parameter data member: namespaceDeclaration_copy
   79344             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for namespaceDeclaration
   79345             :   // case: toBeCopied == COPY_DATA for namespaceDeclaration
   79346           0 :      SgNamespaceDeclarationStatement* namespaceDeclaration_copy = p_namespaceDeclaration; 
   79347             :  
   79348             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   79349             : 
   79350             :   // Build an empty copy of this object (will be filled in, but 
   79351             :   // the parent can't be set and must be set by the caller)
   79352           0 :      result = new SgUsingDirectiveStatement(  startOfConstruct_copy, namespaceDeclaration_copy );
   79353           0 :      ROSE_ASSERT(result != NULL);
   79354             : 
   79355             :   // Copy data members of "this" class
   79356             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   79357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   79358             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   79359           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   79360           0 :      if ( p_endOfConstruct != NULL ) 
   79361             :         { 
   79362           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   79363             :         } 
   79364             :        else 
   79365             :         { 
   79366             :           endOfConstruct_copy = NULL; 
   79367             :         } 
   79368             :   /* check for a valid pointer and delete if present */ 
   79369           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   79370             :   /* add assignment to result here */ 
   79371           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   79372             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   79373             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   79374             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   79375           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   79376           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   79377             :         { 
   79378           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   79379             :         } 
   79380             :        else 
   79381             :         { 
   79382             :           attachedPreprocessingInfoPtr_copy = NULL; 
   79383             :         } 
   79384             :   /* check for a valid pointer and delete if present */ 
   79385           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   79386             :   /* add assignment to result here */ 
   79387           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   79388             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   79389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   79390             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   79391           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   79392           0 :      if ( p_attributeMechanism != NULL ) 
   79393             :         { 
   79394           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   79395             :         } 
   79396             :        else 
   79397             :         { 
   79398             :           attributeMechanism_copy = NULL; 
   79399             :         } 
   79400             :   /* check for a valid pointer and delete if present */ 
   79401           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   79402             :   /* add assignment to result here */ 
   79403           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   79404             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   79405             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   79406             :   // case: toBeCopied == COPY_DATA for numeric_label
   79407           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   79408           0 :      result->p_numeric_label = numeric_label_copy; 
   79409             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   79410             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   79411             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   79412           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   79413           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   79414             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   79415             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   79416             :   // case: toBeCopied == COPY_DATA for decl_attributes
   79417           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   79418           0 :      result->p_decl_attributes = decl_attributes_copy; 
   79419             :   // Copy non-constructor parameter data member (access function): linkage_copy
   79420             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   79421             :   // case: toBeCopied == COPY_DATA for linkage
   79422           0 :      std::string linkage_copy = p_linkage; 
   79423           0 :      result->p_linkage = linkage_copy; 
   79424             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   79425             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   79426             :   // case: toBeCopied == COPY_DATA for declarationModifier
   79427           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   79428           0 :      result->p_declarationModifier = declarationModifier_copy; 
   79429             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   79430             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   79431             :   // case: toBeCopied == COPY_DATA for nameOnly
   79432           0 :      bool nameOnly_copy = p_nameOnly; 
   79433           0 :      result->p_nameOnly = nameOnly_copy; 
   79434             :   // Copy non-constructor parameter data member (access function): forward_copy
   79435             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   79436             :   // case: toBeCopied == COPY_DATA for forward
   79437           0 :      bool forward_copy = p_forward; 
   79438           0 :      result->p_forward = forward_copy; 
   79439             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   79440             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   79441             :   // case: toBeCopied == COPY_DATA for externBrace
   79442           0 :      bool externBrace_copy = p_externBrace; 
   79443           0 :      result->p_externBrace = externBrace_copy; 
   79444             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   79445             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   79446             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   79447           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   79448           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   79449             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   79450             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   79451             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   79452           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   79453           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   79454             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   79455             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   79456             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   79457           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   79458           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   79459             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   79460             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   79461             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   79462           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   79463           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   79464             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   79465             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   79466             :   // case: toBeCopied == COPY_DATA for binding_label
   79467           0 :      std::string binding_label_copy = p_binding_label; 
   79468           0 :      result->p_binding_label = binding_label_copy; 
   79469             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   79470             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   79471             :   // case: toBeCopied == COPY_DATA for declarationScope
   79472           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   79473           0 :      result->p_declarationScope = declarationScope_copy; 
   79474             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   79475             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   79476             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   79477           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   79478           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   79479             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   79480             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   79481             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   79482           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   79483           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   79484             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   79485             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   79486             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   79487           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   79488           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   79489             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   79490             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   79491             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   79492           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   79493           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   79494             : 
   79495             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   79496             : 
   79497             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   79498             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   79499             :   // fixupCopy(result,help);
   79500             : 
   79501             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   79502             :   // the Sg_File_Info objects that are built for the new IR nodes.
   79503           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   79504           0 :      if (locatedNode != NULL)
   79505             :         {
   79506             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   79507           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   79508           0 :           ROSE_ASSERT(start != NULL);
   79509             : #if 0
   79510             :        // Debugging information
   79511             :           if (start->get_parent() == NULL)
   79512             :              {
   79513             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79514             :              }
   79515             : #endif
   79516           0 :           start->set_parent(locatedNode);
   79517           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   79518             : 
   79519           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   79520             : 
   79521             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   79522             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   79523             :        // ROSE_ASSERT(end != NULL);
   79524           0 :           if (end == NULL)
   79525             :              {
   79526           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   79527             :              }
   79528             :             else
   79529             :              {
   79530             : #if 0
   79531             :             // Debugging information
   79532             :                if (end->get_parent() == NULL)
   79533             :                   {
   79534             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79535             :                   }
   79536             : #endif
   79537           0 :                end->set_parent(locatedNode);
   79538           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   79539             :              }
   79540             : 
   79541           0 :           SgExpression* expression = isSgExpression(result);
   79542           0 :           if (isSgExpression(this) != NULL)
   79543             :              {
   79544           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   79545             : 
   79546             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   79547           0 :                if (operatorPosition != NULL)
   79548             :                   {
   79549             : #if 0
   79550             :                  // Debugging information
   79551             :                     if (operatorPosition->get_parent() == NULL)
   79552             :                        {
   79553             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79554             :                        }
   79555             : #endif
   79556           0 :                     operatorPosition->set_parent(expression);
   79557           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   79558             :                   }
   79559             :              }
   79560             :         }
   79561             : 
   79562             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   79563           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   79564           0 :      if (initializedName != NULL)
   79565             :         {
   79566             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   79567           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   79568           0 :           ROSE_ASSERT(start != NULL);
   79569             : #if 0
   79570             :        // Debugging information
   79571             :           if (start->get_parent() == NULL)
   79572             :              {
   79573             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79574             :              }
   79575             : #endif
   79576           0 :           start->set_parent(initializedName);
   79577           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   79578             : 
   79579             : #if 0
   79580             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   79581             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   79582             : 
   79583             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   79584             :        // ROSE_ASSERT(end != NULL);
   79585             :           if (end == NULL)
   79586             :              {
   79587             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   79588             :              }
   79589             :             else
   79590             :              {
   79591             :                if (end->get_parent() == NULL)
   79592             :                   {
   79593             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79594             :                   }
   79595             :                end->set_parent(initializedName);
   79596             :                ROSE_ASSERT(end->get_parent() != NULL);
   79597             :              }
   79598             : #endif
   79599             :         }
   79600             : 
   79601             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   79602           0 :      help.insertCopiedNodePair(this,result);
   79603             : 
   79604             :   // printf ("End of copy SgUsingDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   79605             : 
   79606             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   79607             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   79608           0 :      help.decrementDepth();
   79609             : 
   79610             :   // Test if this is the root of the copy!
   79611           0 :      if (help.get_depth() == 0)
   79612             :         {
   79613             :        // This is the original calling node.
   79614             : 
   79615             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   79616             :        // printf ("Calling SgUsingDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   79617             : #if ALT_FIXUP_COPY
   79618             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   79619           0 :           fixupCopy_scopes (result,help);
   79620           0 :           fixupCopy_symbols (result,help);
   79621           0 :           fixupCopy_references (result,help);
   79622             : #else
   79623             :           fixupCopy(result,help);
   79624             : #endif
   79625             :        // Allow this to be called recursively, so accumulate the state.
   79626             :        // Also, clear the state in the SgCopyHelp object.
   79627             :        // help.clearState();
   79628             :         }
   79629             : 
   79630           0 :      return result;
   79631             :    }
   79632             : 
   79633             : 
   79634             : /* #line 79635 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   79635             : 
   79636             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   79637             : 
   79638           0 : SgNode* SgClassDeclaration::copy ( SgCopyHelp& help) const
   79639             :    {
   79640           0 :      SgClassDeclaration* result = NULL;
   79641             : 
   79642             :   // printf ("Copy SgClassDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   79643             : 
   79644             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   79645             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   79646             :   // The default value of the depth is 0, so after this call the depth is 1!
   79647           0 :      help.incrementDepth();
   79648             : 
   79649             : #if 0
   79650             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   79651             :   // but it is not generally true that things can only be copied once!
   79652             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   79653             :   // AstAttribute* existingAttribute = const_cast<SgClassDeclaration*>(this)->attribute["copied"];
   79654             :      bool previouslyCopied = const_cast<SgClassDeclaration*>(this)->attribute.exists("copied");
   79655             :      if (previouslyCopied == true)
   79656             :         {
   79657             :           this->get_file_info()->display("Called from copy SgClassDeclaration: debug");
   79658             :         }
   79659             :      ROSE_ASSERT(previouslyCopied == false);
   79660             : 
   79661             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   79662             :      AstAttribute* newAttribute = new AstAttribute();
   79663             :      ROSE_ASSERT(newAttribute != NULL);
   79664             : 
   79665             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   79666             :      const_cast<SgClassDeclaration*>(this)->attribute.add("copied",newAttribute);
   79667             : #endif
   79668             : 
   79669             :   // Copy data members from base classes
   79670             :   // Copy constructor parameter data member: startOfConstruct_copy
   79671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   79672             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   79673           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   79674           0 :      if ( p_startOfConstruct != NULL ) 
   79675             :         { 
   79676           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   79677             :         } 
   79678             :        else 
   79679             :         { 
   79680             :           startOfConstruct_copy = NULL; 
   79681             :         } 
   79682             :   // Copy constructor parameter data member: name_copy
   79683             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   79684             :   // case: toBeCopied == COPY_DATA for name
   79685           0 :      SgName name_copy = p_name; 
   79686             :   // Copy constructor parameter data member: class_type_copy
   79687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_type
   79688             :   // case: toBeCopied == COPY_DATA for class_type
   79689           0 :      SgClassDeclaration::class_types class_type_copy = p_class_type; 
   79690             :   // Copy constructor parameter data member: type_copy
   79691             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   79692             :   // case: toBeCopied == CLONE_PTR for type
   79693           0 :      SgClassType* type_copy = NULL; 
   79694           0 :      if ( p_type != NULL ) 
   79695             :         { 
   79696           0 :           type_copy = new SgClassType( *p_type); 
   79697             :         } 
   79698             :        else 
   79699             :         { 
   79700             :           type_copy = NULL; 
   79701             :         } 
   79702             :   // Copy constructor parameter data member: definition_copy
   79703           0 :      SgClassDefinition* definition_copy; 
   79704             :   // case: not a listType for (using conditionalToCopyVariable)definition
   79705           0 :           if (get_definition() != NULL) 
   79706             :              { 
   79707           0 :                definition_copy = static_cast<SgClassDefinition*>(help.copyAst(get_definition())); 
   79708             :              } 
   79709             :             else 
   79710             :              { 
   79711             :                definition_copy = NULL; 
   79712             :              } 
   79713             :  
   79714             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   79715             : 
   79716             :   // Build an empty copy of this object (will be filled in, but 
   79717             :   // the parent can't be set and must be set by the caller)
   79718           0 :      result = new SgClassDeclaration(  startOfConstruct_copy, name_copy, class_type_copy, type_copy, definition_copy );
   79719           0 :      ROSE_ASSERT(result != NULL);
   79720             : 
   79721             :   // Copy data members of "this" class
   79722             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   79723             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   79724             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   79725           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   79726           0 :      if ( p_endOfConstruct != NULL ) 
   79727             :         { 
   79728           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   79729             :         } 
   79730             :        else 
   79731             :         { 
   79732             :           endOfConstruct_copy = NULL; 
   79733             :         } 
   79734             :   /* check for a valid pointer and delete if present */ 
   79735           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   79736             :   /* add assignment to result here */ 
   79737           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   79738             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   79739             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   79740             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   79741           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   79742           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   79743             :         { 
   79744           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   79745             :         } 
   79746             :        else 
   79747             :         { 
   79748             :           attachedPreprocessingInfoPtr_copy = NULL; 
   79749             :         } 
   79750             :   /* check for a valid pointer and delete if present */ 
   79751           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   79752             :   /* add assignment to result here */ 
   79753           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   79754             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   79755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   79756             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   79757           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   79758           0 :      if ( p_attributeMechanism != NULL ) 
   79759             :         { 
   79760           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   79761             :         } 
   79762             :        else 
   79763             :         { 
   79764             :           attributeMechanism_copy = NULL; 
   79765             :         } 
   79766             :   /* check for a valid pointer and delete if present */ 
   79767           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   79768             :   /* add assignment to result here */ 
   79769           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   79770             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   79771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   79772             :   // case: toBeCopied == COPY_DATA for numeric_label
   79773           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   79774           0 :      result->p_numeric_label = numeric_label_copy; 
   79775             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   79776             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   79777             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   79778           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   79779           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   79780             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   79781             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   79782             :   // case: toBeCopied == COPY_DATA for decl_attributes
   79783           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   79784           0 :      result->p_decl_attributes = decl_attributes_copy; 
   79785             :   // Copy non-constructor parameter data member (access function): linkage_copy
   79786             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   79787             :   // case: toBeCopied == COPY_DATA for linkage
   79788           0 :      std::string linkage_copy = p_linkage; 
   79789           0 :      result->p_linkage = linkage_copy; 
   79790             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   79791             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   79792             :   // case: toBeCopied == COPY_DATA for declarationModifier
   79793           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   79794           0 :      result->p_declarationModifier = declarationModifier_copy; 
   79795             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   79796             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   79797             :   // case: toBeCopied == COPY_DATA for nameOnly
   79798           0 :      bool nameOnly_copy = p_nameOnly; 
   79799           0 :      result->p_nameOnly = nameOnly_copy; 
   79800             :   // Copy non-constructor parameter data member (access function): forward_copy
   79801             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   79802             :   // case: toBeCopied == COPY_DATA for forward
   79803           0 :      bool forward_copy = p_forward; 
   79804           0 :      result->p_forward = forward_copy; 
   79805             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   79806             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   79807             :   // case: toBeCopied == COPY_DATA for externBrace
   79808           0 :      bool externBrace_copy = p_externBrace; 
   79809           0 :      result->p_externBrace = externBrace_copy; 
   79810             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   79811             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   79812             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   79813           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   79814           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   79815             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   79816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   79817             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   79818           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   79819           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   79820             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   79821             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   79822             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   79823           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   79824           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   79825             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   79826             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   79827             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   79828           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   79829           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   79830             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   79831             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   79832             :   // case: toBeCopied == COPY_DATA for binding_label
   79833           0 :      std::string binding_label_copy = p_binding_label; 
   79834           0 :      result->p_binding_label = binding_label_copy; 
   79835             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   79836             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   79837             :   // case: toBeCopied == COPY_DATA for declarationScope
   79838           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   79839           0 :      result->p_declarationScope = declarationScope_copy; 
   79840             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   79841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   79842             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   79843           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   79844           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   79845             :   // Copy non-constructor parameter data member (access function): scope_copy
   79846             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   79847             :   // case: toBeCopied == COPY_DATA for scope
   79848           0 :      SgScopeStatement* scope_copy = p_scope; 
   79849           0 :      result->p_scope = scope_copy; 
   79850             :   // Copy non-constructor parameter data member (access function): specialization_copy
   79851             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   79852             :   // case: toBeCopied == COPY_DATA for specialization
   79853           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   79854           0 :      result->p_specialization = specialization_copy; 
   79855             :   // Copy non-constructor parameter data member (access function): from_template_copy
   79856             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for from_template
   79857             :   // case: toBeCopied == COPY_DATA for from_template
   79858           0 :      bool from_template_copy = p_from_template; 
   79859           0 :      result->p_from_template = from_template_copy; 
   79860             :   // Copy non-constructor parameter data member (access function): fixupScope_copy
   79861             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fixupScope
   79862             :   // case: toBeCopied == COPY_DATA for fixupScope
   79863           0 :      bool fixupScope_copy = p_fixupScope; 
   79864           0 :      result->p_fixupScope = fixupScope_copy; 
   79865             :   // Copy non-constructor parameter data member (access function): isUnNamed_copy
   79866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isUnNamed
   79867             :   // case: toBeCopied == COPY_DATA for isUnNamed
   79868           0 :      bool isUnNamed_copy = p_isUnNamed; 
   79869           0 :      result->p_isUnNamed = isUnNamed_copy; 
   79870             :   // Copy non-constructor parameter data member (access function): explicit_annotation_interface_copy
   79871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_annotation_interface
   79872             :   // case: toBeCopied == COPY_DATA for explicit_annotation_interface
   79873           0 :      bool explicit_annotation_interface_copy = p_explicit_annotation_interface; 
   79874           0 :      result->p_explicit_annotation_interface = explicit_annotation_interface_copy; 
   79875             :   // Copy non-constructor parameter data member (access function): explicit_interface_copy
   79876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_interface
   79877             :   // case: toBeCopied == COPY_DATA for explicit_interface
   79878           0 :      bool explicit_interface_copy = p_explicit_interface; 
   79879           0 :      result->p_explicit_interface = explicit_interface_copy; 
   79880             :   // Copy non-constructor parameter data member (access function): explicit_enum_copy
   79881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_enum
   79882             :   // case: toBeCopied == COPY_DATA for explicit_enum
   79883           0 :      bool explicit_enum_copy = p_explicit_enum; 
   79884           0 :      result->p_explicit_enum = explicit_enum_copy; 
   79885             :   // Copy non-constructor parameter data member (access function): explicit_anonymous_copy
   79886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_anonymous
   79887             :   // case: toBeCopied == COPY_DATA for explicit_anonymous
   79888           0 :      bool explicit_anonymous_copy = p_explicit_anonymous; 
   79889           0 :      result->p_explicit_anonymous = explicit_anonymous_copy; 
   79890             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   79891           0 :      SgExprListExp* decoratorList_copy; 
   79892             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   79893           0 :           if (get_decoratorList() != NULL) 
   79894             :              { 
   79895           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   79896             :              } 
   79897             :             else 
   79898             :              { 
   79899             :                decoratorList_copy = NULL; 
   79900             :              } 
   79901             :   /* check for a valid pointer and delete if present */ 
   79902           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   79903           0 :      result->p_decoratorList = decoratorList_copy; 
   79904             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   79905           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   79906             :              { 
   79907           0 :                decoratorList_copy->set_parent(result); 
   79908             :              } 
   79909             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   79910             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   79911             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   79912           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   79913           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   79914             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   79915             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   79916             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   79917           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   79918           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   79919             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   79920             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   79921             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   79922           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   79923           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   79924             :   // Copy non-constructor parameter data member (access function): isAutonomousDeclaration_copy
   79925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAutonomousDeclaration
   79926             :   // case: toBeCopied == COPY_DATA for isAutonomousDeclaration
   79927           0 :      bool isAutonomousDeclaration_copy = p_isAutonomousDeclaration; 
   79928           0 :      result->p_isAutonomousDeclaration = isAutonomousDeclaration_copy; 
   79929             :   // Copy non-constructor parameter data member (access function): isRepresentingTemplateParameterInTemplateDeclaration_copy
   79930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isRepresentingTemplateParameterInTemplateDeclaration
   79931             :   // case: toBeCopied == COPY_DATA for isRepresentingTemplateParameterInTemplateDeclaration
   79932           0 :      bool isRepresentingTemplateParameterInTemplateDeclaration_copy = p_isRepresentingTemplateParameterInTemplateDeclaration; 
   79933           0 :      result->p_isRepresentingTemplateParameterInTemplateDeclaration = isRepresentingTemplateParameterInTemplateDeclaration_copy; 
   79934             :   // Copy non-constructor parameter data member (access function): adaParentType_copy
   79935             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for adaParentType
   79936             :   // case: toBeCopied == COPY_DATA for adaParentType
   79937           0 :      SgBaseClass* adaParentType_copy = p_adaParentType; 
   79938           0 :      result->p_adaParentType = adaParentType_copy; 
   79939             :   // case: not a listType for (using conditionalToSetParent)definition
   79940           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   79941             :              { 
   79942           0 :                definition_copy->set_parent(result); 
   79943             :              } 
   79944             : 
   79945             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   79946             : 
   79947             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   79948             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   79949             :   // fixupCopy(result,help);
   79950             : 
   79951             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   79952             :   // the Sg_File_Info objects that are built for the new IR nodes.
   79953           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   79954           0 :      if (locatedNode != NULL)
   79955             :         {
   79956             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   79957           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   79958           0 :           ROSE_ASSERT(start != NULL);
   79959             : #if 0
   79960             :        // Debugging information
   79961             :           if (start->get_parent() == NULL)
   79962             :              {
   79963             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79964             :              }
   79965             : #endif
   79966           0 :           start->set_parent(locatedNode);
   79967           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   79968             : 
   79969           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   79970             : 
   79971             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   79972             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   79973             :        // ROSE_ASSERT(end != NULL);
   79974           0 :           if (end == NULL)
   79975             :              {
   79976           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   79977             :              }
   79978             :             else
   79979             :              {
   79980             : #if 0
   79981             :             // Debugging information
   79982             :                if (end->get_parent() == NULL)
   79983             :                   {
   79984             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   79985             :                   }
   79986             : #endif
   79987           0 :                end->set_parent(locatedNode);
   79988           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   79989             :              }
   79990             : 
   79991           0 :           SgExpression* expression = isSgExpression(result);
   79992           0 :           if (isSgExpression(this) != NULL)
   79993             :              {
   79994           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   79995             : 
   79996             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   79997           0 :                if (operatorPosition != NULL)
   79998             :                   {
   79999             : #if 0
   80000             :                  // Debugging information
   80001             :                     if (operatorPosition->get_parent() == NULL)
   80002             :                        {
   80003             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80004             :                        }
   80005             : #endif
   80006           0 :                     operatorPosition->set_parent(expression);
   80007           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   80008             :                   }
   80009             :              }
   80010             :         }
   80011             : 
   80012             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   80013           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   80014           0 :      if (initializedName != NULL)
   80015             :         {
   80016             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   80017           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   80018           0 :           ROSE_ASSERT(start != NULL);
   80019             : #if 0
   80020             :        // Debugging information
   80021             :           if (start->get_parent() == NULL)
   80022             :              {
   80023             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80024             :              }
   80025             : #endif
   80026           0 :           start->set_parent(initializedName);
   80027           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   80028             : 
   80029             : #if 0
   80030             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   80031             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   80032             : 
   80033             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   80034             :        // ROSE_ASSERT(end != NULL);
   80035             :           if (end == NULL)
   80036             :              {
   80037             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   80038             :              }
   80039             :             else
   80040             :              {
   80041             :                if (end->get_parent() == NULL)
   80042             :                   {
   80043             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80044             :                   }
   80045             :                end->set_parent(initializedName);
   80046             :                ROSE_ASSERT(end->get_parent() != NULL);
   80047             :              }
   80048             : #endif
   80049             :         }
   80050             : 
   80051             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   80052           0 :      help.insertCopiedNodePair(this,result);
   80053             : 
   80054             :   // printf ("End of copy SgClassDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   80055             : 
   80056             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   80057             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   80058           0 :      help.decrementDepth();
   80059             : 
   80060             :   // Test if this is the root of the copy!
   80061           0 :      if (help.get_depth() == 0)
   80062             :         {
   80063             :        // This is the original calling node.
   80064             : 
   80065             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   80066             :        // printf ("Calling SgClassDeclaration::fixupCopy() (from root of AST being copied) \n");
   80067             : #if ALT_FIXUP_COPY
   80068             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   80069           0 :           fixupCopy_scopes (result,help);
   80070           0 :           fixupCopy_symbols (result,help);
   80071           0 :           fixupCopy_references (result,help);
   80072             : #else
   80073             :           fixupCopy(result,help);
   80074             : #endif
   80075             :        // Allow this to be called recursively, so accumulate the state.
   80076             :        // Also, clear the state in the SgCopyHelp object.
   80077             :        // help.clearState();
   80078             :         }
   80079             : 
   80080           0 :      return result;
   80081             :    }
   80082             : 
   80083             : 
   80084             : /* #line 80085 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   80085             : 
   80086             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   80087             : 
   80088           0 : SgNode* SgTemplateClassDeclaration::copy ( SgCopyHelp& help) const
   80089             :    {
   80090           0 :      SgTemplateClassDeclaration* result = NULL;
   80091             : 
   80092             :   // printf ("Copy SgTemplateClassDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   80093             : 
   80094             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   80095             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   80096             :   // The default value of the depth is 0, so after this call the depth is 1!
   80097           0 :      help.incrementDepth();
   80098             : 
   80099             : #if 0
   80100             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   80101             :   // but it is not generally true that things can only be copied once!
   80102             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   80103             :   // AstAttribute* existingAttribute = const_cast<SgTemplateClassDeclaration*>(this)->attribute["copied"];
   80104             :      bool previouslyCopied = const_cast<SgTemplateClassDeclaration*>(this)->attribute.exists("copied");
   80105             :      if (previouslyCopied == true)
   80106             :         {
   80107             :           this->get_file_info()->display("Called from copy SgTemplateClassDeclaration: debug");
   80108             :         }
   80109             :      ROSE_ASSERT(previouslyCopied == false);
   80110             : 
   80111             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   80112             :      AstAttribute* newAttribute = new AstAttribute();
   80113             :      ROSE_ASSERT(newAttribute != NULL);
   80114             : 
   80115             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   80116             :      const_cast<SgTemplateClassDeclaration*>(this)->attribute.add("copied",newAttribute);
   80117             : #endif
   80118             : 
   80119             :   // Copy data members from base classes
   80120             :   // Copy constructor parameter data member: startOfConstruct_copy
   80121             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   80122             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   80123           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   80124           0 :      if ( p_startOfConstruct != NULL ) 
   80125             :         { 
   80126           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   80127             :         } 
   80128             :        else 
   80129             :         { 
   80130             :           startOfConstruct_copy = NULL; 
   80131             :         } 
   80132             :   // Copy constructor parameter data member: name_copy
   80133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   80134             :   // case: toBeCopied == COPY_DATA for name
   80135           0 :      SgName name_copy = p_name; 
   80136             :   // Copy constructor parameter data member: class_type_copy
   80137             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_type
   80138             :   // case: toBeCopied == COPY_DATA for class_type
   80139           0 :      SgClassDeclaration::class_types class_type_copy = p_class_type; 
   80140             :   // Copy constructor parameter data member: type_copy
   80141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   80142             :   // case: toBeCopied == CLONE_PTR for type
   80143           0 :      SgClassType* type_copy = NULL; 
   80144           0 :      if ( p_type != NULL ) 
   80145             :         { 
   80146           0 :           type_copy = new SgClassType( *p_type); 
   80147             :         } 
   80148             :        else 
   80149             :         { 
   80150             :           type_copy = NULL; 
   80151             :         } 
   80152             :   // Copy constructor parameter data member: definition_copy
   80153           0 :      SgClassDefinition* definition_copy; 
   80154             :   // case: not a listType for (using conditionalToCopyVariable)definition
   80155           0 :           if (get_definition() != NULL) 
   80156             :              { 
   80157           0 :                definition_copy = static_cast<SgClassDefinition*>(help.copyAst(get_definition())); 
   80158             :              } 
   80159             :             else 
   80160             :              { 
   80161             :                definition_copy = NULL; 
   80162             :              } 
   80163             :  
   80164             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   80165             : 
   80166             :   // Build an empty copy of this object (will be filled in, but 
   80167             :   // the parent can't be set and must be set by the caller)
   80168           0 :      result = new SgTemplateClassDeclaration(  startOfConstruct_copy, name_copy, class_type_copy, type_copy, definition_copy );
   80169           0 :      ROSE_ASSERT(result != NULL);
   80170             : 
   80171             :   // Copy data members of "this" class
   80172             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   80173             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   80174             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   80175           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   80176           0 :      if ( p_endOfConstruct != NULL ) 
   80177             :         { 
   80178           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   80179             :         } 
   80180             :        else 
   80181             :         { 
   80182             :           endOfConstruct_copy = NULL; 
   80183             :         } 
   80184             :   /* check for a valid pointer and delete if present */ 
   80185           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   80186             :   /* add assignment to result here */ 
   80187           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   80188             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   80189             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   80190             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   80191           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   80192           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   80193             :         { 
   80194           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   80195             :         } 
   80196             :        else 
   80197             :         { 
   80198             :           attachedPreprocessingInfoPtr_copy = NULL; 
   80199             :         } 
   80200             :   /* check for a valid pointer and delete if present */ 
   80201           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   80202             :   /* add assignment to result here */ 
   80203           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   80204             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   80205             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   80206             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   80207           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   80208           0 :      if ( p_attributeMechanism != NULL ) 
   80209             :         { 
   80210           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   80211             :         } 
   80212             :        else 
   80213             :         { 
   80214             :           attributeMechanism_copy = NULL; 
   80215             :         } 
   80216             :   /* check for a valid pointer and delete if present */ 
   80217           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   80218             :   /* add assignment to result here */ 
   80219           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   80220             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   80221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   80222             :   // case: toBeCopied == COPY_DATA for numeric_label
   80223           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   80224           0 :      result->p_numeric_label = numeric_label_copy; 
   80225             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   80226             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   80227             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   80228           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   80229           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   80230             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   80231             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   80232             :   // case: toBeCopied == COPY_DATA for decl_attributes
   80233           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   80234           0 :      result->p_decl_attributes = decl_attributes_copy; 
   80235             :   // Copy non-constructor parameter data member (access function): linkage_copy
   80236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   80237             :   // case: toBeCopied == COPY_DATA for linkage
   80238           0 :      std::string linkage_copy = p_linkage; 
   80239           0 :      result->p_linkage = linkage_copy; 
   80240             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   80241             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   80242             :   // case: toBeCopied == COPY_DATA for declarationModifier
   80243           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   80244           0 :      result->p_declarationModifier = declarationModifier_copy; 
   80245             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   80246             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   80247             :   // case: toBeCopied == COPY_DATA for nameOnly
   80248           0 :      bool nameOnly_copy = p_nameOnly; 
   80249           0 :      result->p_nameOnly = nameOnly_copy; 
   80250             :   // Copy non-constructor parameter data member (access function): forward_copy
   80251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   80252             :   // case: toBeCopied == COPY_DATA for forward
   80253           0 :      bool forward_copy = p_forward; 
   80254           0 :      result->p_forward = forward_copy; 
   80255             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   80256             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   80257             :   // case: toBeCopied == COPY_DATA for externBrace
   80258           0 :      bool externBrace_copy = p_externBrace; 
   80259           0 :      result->p_externBrace = externBrace_copy; 
   80260             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   80261             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   80262             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   80263           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   80264           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   80265             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   80266             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   80267             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   80268           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   80269           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   80270             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   80271             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   80272             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   80273           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   80274           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   80275             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   80276             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   80277             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   80278           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   80279           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   80280             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   80281             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   80282             :   // case: toBeCopied == COPY_DATA for binding_label
   80283           0 :      std::string binding_label_copy = p_binding_label; 
   80284           0 :      result->p_binding_label = binding_label_copy; 
   80285             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   80286             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   80287             :   // case: toBeCopied == COPY_DATA for declarationScope
   80288           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   80289           0 :      result->p_declarationScope = declarationScope_copy; 
   80290             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   80291             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   80292             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   80293           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   80294           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   80295             :   // Copy non-constructor parameter data member (access function): scope_copy
   80296             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   80297             :   // case: toBeCopied == COPY_DATA for scope
   80298           0 :      SgScopeStatement* scope_copy = p_scope; 
   80299           0 :      result->p_scope = scope_copy; 
   80300             :   // Copy non-constructor parameter data member (access function): specialization_copy
   80301             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   80302             :   // case: toBeCopied == COPY_DATA for specialization
   80303           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   80304           0 :      result->p_specialization = specialization_copy; 
   80305             :   // Copy non-constructor parameter data member (access function): from_template_copy
   80306             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for from_template
   80307             :   // case: toBeCopied == COPY_DATA for from_template
   80308           0 :      bool from_template_copy = p_from_template; 
   80309           0 :      result->p_from_template = from_template_copy; 
   80310             :   // Copy non-constructor parameter data member (access function): fixupScope_copy
   80311             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fixupScope
   80312             :   // case: toBeCopied == COPY_DATA for fixupScope
   80313           0 :      bool fixupScope_copy = p_fixupScope; 
   80314           0 :      result->p_fixupScope = fixupScope_copy; 
   80315             :   // Copy non-constructor parameter data member (access function): isUnNamed_copy
   80316             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isUnNamed
   80317             :   // case: toBeCopied == COPY_DATA for isUnNamed
   80318           0 :      bool isUnNamed_copy = p_isUnNamed; 
   80319           0 :      result->p_isUnNamed = isUnNamed_copy; 
   80320             :   // Copy non-constructor parameter data member (access function): explicit_annotation_interface_copy
   80321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_annotation_interface
   80322             :   // case: toBeCopied == COPY_DATA for explicit_annotation_interface
   80323           0 :      bool explicit_annotation_interface_copy = p_explicit_annotation_interface; 
   80324           0 :      result->p_explicit_annotation_interface = explicit_annotation_interface_copy; 
   80325             :   // Copy non-constructor parameter data member (access function): explicit_interface_copy
   80326             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_interface
   80327             :   // case: toBeCopied == COPY_DATA for explicit_interface
   80328           0 :      bool explicit_interface_copy = p_explicit_interface; 
   80329           0 :      result->p_explicit_interface = explicit_interface_copy; 
   80330             :   // Copy non-constructor parameter data member (access function): explicit_enum_copy
   80331             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_enum
   80332             :   // case: toBeCopied == COPY_DATA for explicit_enum
   80333           0 :      bool explicit_enum_copy = p_explicit_enum; 
   80334           0 :      result->p_explicit_enum = explicit_enum_copy; 
   80335             :   // Copy non-constructor parameter data member (access function): explicit_anonymous_copy
   80336             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_anonymous
   80337             :   // case: toBeCopied == COPY_DATA for explicit_anonymous
   80338           0 :      bool explicit_anonymous_copy = p_explicit_anonymous; 
   80339           0 :      result->p_explicit_anonymous = explicit_anonymous_copy; 
   80340             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   80341           0 :      SgExprListExp* decoratorList_copy; 
   80342             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   80343           0 :           if (get_decoratorList() != NULL) 
   80344             :              { 
   80345           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   80346             :              } 
   80347             :             else 
   80348             :              { 
   80349             :                decoratorList_copy = NULL; 
   80350             :              } 
   80351             :   /* check for a valid pointer and delete if present */ 
   80352           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   80353           0 :      result->p_decoratorList = decoratorList_copy; 
   80354             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   80355           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   80356             :              { 
   80357           0 :                decoratorList_copy->set_parent(result); 
   80358             :              } 
   80359             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   80360             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   80361             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   80362           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   80363           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   80364             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   80365             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   80366             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   80367           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   80368           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   80369             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   80370             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   80371             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   80372           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   80373           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   80374             :   // Copy non-constructor parameter data member (access function): isAutonomousDeclaration_copy
   80375             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAutonomousDeclaration
   80376             :   // case: toBeCopied == COPY_DATA for isAutonomousDeclaration
   80377           0 :      bool isAutonomousDeclaration_copy = p_isAutonomousDeclaration; 
   80378           0 :      result->p_isAutonomousDeclaration = isAutonomousDeclaration_copy; 
   80379             :   // Copy non-constructor parameter data member (access function): isRepresentingTemplateParameterInTemplateDeclaration_copy
   80380             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isRepresentingTemplateParameterInTemplateDeclaration
   80381             :   // case: toBeCopied == COPY_DATA for isRepresentingTemplateParameterInTemplateDeclaration
   80382           0 :      bool isRepresentingTemplateParameterInTemplateDeclaration_copy = p_isRepresentingTemplateParameterInTemplateDeclaration; 
   80383           0 :      result->p_isRepresentingTemplateParameterInTemplateDeclaration = isRepresentingTemplateParameterInTemplateDeclaration_copy; 
   80384             :   // Copy non-constructor parameter data member (access function): adaParentType_copy
   80385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for adaParentType
   80386             :   // case: toBeCopied == COPY_DATA for adaParentType
   80387           0 :      SgBaseClass* adaParentType_copy = p_adaParentType; 
   80388           0 :      result->p_adaParentType = adaParentType_copy; 
   80389             :   // Copy non-constructor parameter data member (list access function): result->get_templateParameters()
   80390             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateParameters
   80391             :   // case: toBeCopied == COPY_DATA for templateParameters
   80392           0 :      SgTemplateParameterPtrList templateParameters_copy = p_templateParameters; 
   80393           0 :      result->p_templateParameters = templateParameters_copy; 
   80394             :   // Copy non-constructor parameter data member (list access function): result->get_templateSpecializationArguments()
   80395             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateSpecializationArguments
   80396             :   // case: toBeCopied == COPY_DATA for templateSpecializationArguments
   80397           0 :      SgTemplateArgumentPtrList templateSpecializationArguments_copy = p_templateSpecializationArguments; 
   80398           0 :      result->p_templateSpecializationArguments = templateSpecializationArguments_copy; 
   80399             :   // Copy non-constructor parameter data member (access function): string_copy
   80400             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string
   80401             :   // case: toBeCopied == COPY_DATA for string
   80402           0 :      SgName string_copy = p_string; 
   80403           0 :      result->p_string = string_copy; 
   80404             :   // Copy non-constructor parameter data member (access function): templateName_copy
   80405             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateName
   80406             :   // case: toBeCopied == COPY_DATA for templateName
   80407           0 :      SgName templateName_copy = p_templateName; 
   80408           0 :      result->p_templateName = templateName_copy; 
   80409             :   // Copy non-constructor parameter data member (access function): nonreal_decl_scope_copy
   80410             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nonreal_decl_scope
   80411             :   // case: toBeCopied == COPY_DATA for nonreal_decl_scope
   80412           0 :      SgDeclarationScope* nonreal_decl_scope_copy = p_nonreal_decl_scope; 
   80413           0 :      result->p_nonreal_decl_scope = nonreal_decl_scope_copy; 
   80414             :   // case: not a listType for (using conditionalToSetParent)definition
   80415           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   80416             :              { 
   80417           0 :                definition_copy->set_parent(result); 
   80418             :              } 
   80419             : 
   80420             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   80421             : 
   80422             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   80423             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   80424             :   // fixupCopy(result,help);
   80425             : 
   80426             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   80427             :   // the Sg_File_Info objects that are built for the new IR nodes.
   80428           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   80429           0 :      if (locatedNode != NULL)
   80430             :         {
   80431             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   80432           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   80433           0 :           ROSE_ASSERT(start != NULL);
   80434             : #if 0
   80435             :        // Debugging information
   80436             :           if (start->get_parent() == NULL)
   80437             :              {
   80438             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80439             :              }
   80440             : #endif
   80441           0 :           start->set_parent(locatedNode);
   80442           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   80443             : 
   80444           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   80445             : 
   80446             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   80447             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   80448             :        // ROSE_ASSERT(end != NULL);
   80449           0 :           if (end == NULL)
   80450             :              {
   80451           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   80452             :              }
   80453             :             else
   80454             :              {
   80455             : #if 0
   80456             :             // Debugging information
   80457             :                if (end->get_parent() == NULL)
   80458             :                   {
   80459             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80460             :                   }
   80461             : #endif
   80462           0 :                end->set_parent(locatedNode);
   80463           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   80464             :              }
   80465             : 
   80466           0 :           SgExpression* expression = isSgExpression(result);
   80467           0 :           if (isSgExpression(this) != NULL)
   80468             :              {
   80469           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   80470             : 
   80471             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   80472           0 :                if (operatorPosition != NULL)
   80473             :                   {
   80474             : #if 0
   80475             :                  // Debugging information
   80476             :                     if (operatorPosition->get_parent() == NULL)
   80477             :                        {
   80478             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80479             :                        }
   80480             : #endif
   80481           0 :                     operatorPosition->set_parent(expression);
   80482           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   80483             :                   }
   80484             :              }
   80485             :         }
   80486             : 
   80487             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   80488           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   80489           0 :      if (initializedName != NULL)
   80490             :         {
   80491             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   80492           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   80493           0 :           ROSE_ASSERT(start != NULL);
   80494             : #if 0
   80495             :        // Debugging information
   80496             :           if (start->get_parent() == NULL)
   80497             :              {
   80498             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80499             :              }
   80500             : #endif
   80501           0 :           start->set_parent(initializedName);
   80502           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   80503             : 
   80504             : #if 0
   80505             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   80506             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   80507             : 
   80508             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   80509             :        // ROSE_ASSERT(end != NULL);
   80510             :           if (end == NULL)
   80511             :              {
   80512             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   80513             :              }
   80514             :             else
   80515             :              {
   80516             :                if (end->get_parent() == NULL)
   80517             :                   {
   80518             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80519             :                   }
   80520             :                end->set_parent(initializedName);
   80521             :                ROSE_ASSERT(end->get_parent() != NULL);
   80522             :              }
   80523             : #endif
   80524             :         }
   80525             : 
   80526             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   80527           0 :      help.insertCopiedNodePair(this,result);
   80528             : 
   80529             :   // printf ("End of copy SgTemplateClassDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   80530             : 
   80531             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   80532             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   80533           0 :      help.decrementDepth();
   80534             : 
   80535             :   // Test if this is the root of the copy!
   80536           0 :      if (help.get_depth() == 0)
   80537             :         {
   80538             :        // This is the original calling node.
   80539             : 
   80540             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   80541             :        // printf ("Calling SgTemplateClassDeclaration::fixupCopy() (from root of AST being copied) \n");
   80542             : #if ALT_FIXUP_COPY
   80543             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   80544           0 :           fixupCopy_scopes (result,help);
   80545           0 :           fixupCopy_symbols (result,help);
   80546           0 :           fixupCopy_references (result,help);
   80547             : #else
   80548             :           fixupCopy(result,help);
   80549             : #endif
   80550             :        // Allow this to be called recursively, so accumulate the state.
   80551             :        // Also, clear the state in the SgCopyHelp object.
   80552             :        // help.clearState();
   80553             :         }
   80554             : 
   80555           0 :      return result;
   80556             :    }
   80557             : 
   80558             : 
   80559             : /* #line 80560 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   80560             : 
   80561             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   80562             : 
   80563           0 : SgNode* SgTemplateInstantiationDecl::copy ( SgCopyHelp& help) const
   80564             :    {
   80565           0 :      SgTemplateInstantiationDecl* result = NULL;
   80566             : 
   80567             :   // printf ("Copy SgTemplateInstantiationDecl = %p = %s \n",this,SageInterface::get_name(this).c_str());
   80568             : 
   80569             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   80570             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   80571             :   // The default value of the depth is 0, so after this call the depth is 1!
   80572           0 :      help.incrementDepth();
   80573             : 
   80574             : #if 0
   80575             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   80576             :   // but it is not generally true that things can only be copied once!
   80577             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   80578             :   // AstAttribute* existingAttribute = const_cast<SgTemplateInstantiationDecl*>(this)->attribute["copied"];
   80579             :      bool previouslyCopied = const_cast<SgTemplateInstantiationDecl*>(this)->attribute.exists("copied");
   80580             :      if (previouslyCopied == true)
   80581             :         {
   80582             :           this->get_file_info()->display("Called from copy SgTemplateInstantiationDecl: debug");
   80583             :         }
   80584             :      ROSE_ASSERT(previouslyCopied == false);
   80585             : 
   80586             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   80587             :      AstAttribute* newAttribute = new AstAttribute();
   80588             :      ROSE_ASSERT(newAttribute != NULL);
   80589             : 
   80590             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   80591             :      const_cast<SgTemplateInstantiationDecl*>(this)->attribute.add("copied",newAttribute);
   80592             : #endif
   80593             : 
   80594             :   // Copy data members from base classes
   80595             :   // Copy constructor parameter data member: startOfConstruct_copy
   80596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   80597             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   80598           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   80599           0 :      if ( p_startOfConstruct != NULL ) 
   80600             :         { 
   80601           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   80602             :         } 
   80603             :        else 
   80604             :         { 
   80605             :           startOfConstruct_copy = NULL; 
   80606             :         } 
   80607             :   // Copy constructor parameter data member: name_copy
   80608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   80609             :   // case: toBeCopied == COPY_DATA for name
   80610           0 :      SgName name_copy = p_name; 
   80611             :   // Copy constructor parameter data member: class_type_copy
   80612             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_type
   80613             :   // case: toBeCopied == COPY_DATA for class_type
   80614           0 :      SgClassDeclaration::class_types class_type_copy = p_class_type; 
   80615             :   // Copy constructor parameter data member: type_copy
   80616             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   80617             :   // case: toBeCopied == CLONE_PTR for type
   80618           0 :      SgClassType* type_copy = NULL; 
   80619           0 :      if ( p_type != NULL ) 
   80620             :         { 
   80621           0 :           type_copy = new SgClassType( *p_type); 
   80622             :         } 
   80623             :        else 
   80624             :         { 
   80625             :           type_copy = NULL; 
   80626             :         } 
   80627             :   // Copy constructor parameter data member: definition_copy
   80628           0 :      SgClassDefinition* definition_copy; 
   80629             :   // case: not a listType for (using conditionalToCopyVariable)definition
   80630           0 :           if (get_definition() != NULL) 
   80631             :              { 
   80632           0 :                definition_copy = static_cast<SgClassDefinition*>(help.copyAst(get_definition())); 
   80633             :              } 
   80634             :             else 
   80635             :              { 
   80636             :                definition_copy = NULL; 
   80637             :              } 
   80638             :   // Copy constructor parameter data member: templateDeclaration_copy
   80639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateDeclaration
   80640             :   // case: toBeCopied == COPY_DATA for templateDeclaration
   80641           0 :      SgTemplateClassDeclaration* templateDeclaration_copy = p_templateDeclaration; 
   80642             :   // Copy constructor parameter data member: templateArguments_copy
   80643             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateArguments
   80644             :   // case: toBeCopied == COPY_DATA for templateArguments
   80645           0 :      SgTemplateArgumentPtrList templateArguments_copy = p_templateArguments; 
   80646             :  
   80647             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   80648             : 
   80649             :   // Build an empty copy of this object (will be filled in, but 
   80650             :   // the parent can't be set and must be set by the caller)
   80651           0 :      result = new SgTemplateInstantiationDecl(  startOfConstruct_copy, name_copy, class_type_copy, type_copy, definition_copy, templateDeclaration_copy, templateArguments_copy );
   80652           0 :      ROSE_ASSERT(result != NULL);
   80653             : 
   80654             :   // Copy data members of "this" class
   80655             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   80656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   80657             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   80658           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   80659           0 :      if ( p_endOfConstruct != NULL ) 
   80660             :         { 
   80661           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   80662             :         } 
   80663             :        else 
   80664             :         { 
   80665             :           endOfConstruct_copy = NULL; 
   80666             :         } 
   80667             :   /* check for a valid pointer and delete if present */ 
   80668           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   80669             :   /* add assignment to result here */ 
   80670           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   80671             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   80672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   80673             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   80674           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   80675           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   80676             :         { 
   80677           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   80678             :         } 
   80679             :        else 
   80680             :         { 
   80681             :           attachedPreprocessingInfoPtr_copy = NULL; 
   80682             :         } 
   80683             :   /* check for a valid pointer and delete if present */ 
   80684           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   80685             :   /* add assignment to result here */ 
   80686           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   80687             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   80688             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   80689             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   80690           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   80691           0 :      if ( p_attributeMechanism != NULL ) 
   80692             :         { 
   80693           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   80694             :         } 
   80695             :        else 
   80696             :         { 
   80697             :           attributeMechanism_copy = NULL; 
   80698             :         } 
   80699             :   /* check for a valid pointer and delete if present */ 
   80700           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   80701             :   /* add assignment to result here */ 
   80702           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   80703             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   80704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   80705             :   // case: toBeCopied == COPY_DATA for numeric_label
   80706           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   80707           0 :      result->p_numeric_label = numeric_label_copy; 
   80708             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   80709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   80710             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   80711           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   80712           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   80713             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   80714             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   80715             :   // case: toBeCopied == COPY_DATA for decl_attributes
   80716           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   80717           0 :      result->p_decl_attributes = decl_attributes_copy; 
   80718             :   // Copy non-constructor parameter data member (access function): linkage_copy
   80719             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   80720             :   // case: toBeCopied == COPY_DATA for linkage
   80721           0 :      std::string linkage_copy = p_linkage; 
   80722           0 :      result->p_linkage = linkage_copy; 
   80723             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   80724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   80725             :   // case: toBeCopied == COPY_DATA for declarationModifier
   80726           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   80727           0 :      result->p_declarationModifier = declarationModifier_copy; 
   80728             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   80729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   80730             :   // case: toBeCopied == COPY_DATA for nameOnly
   80731           0 :      bool nameOnly_copy = p_nameOnly; 
   80732           0 :      result->p_nameOnly = nameOnly_copy; 
   80733             :   // Copy non-constructor parameter data member (access function): forward_copy
   80734             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   80735             :   // case: toBeCopied == COPY_DATA for forward
   80736           0 :      bool forward_copy = p_forward; 
   80737           0 :      result->p_forward = forward_copy; 
   80738             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   80739             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   80740             :   // case: toBeCopied == COPY_DATA for externBrace
   80741           0 :      bool externBrace_copy = p_externBrace; 
   80742           0 :      result->p_externBrace = externBrace_copy; 
   80743             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   80744             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   80745             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   80746           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   80747           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   80748             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   80749             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   80750             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   80751           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   80752           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   80753             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   80754             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   80755             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   80756           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   80757           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   80758             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   80759             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   80760             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   80761           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   80762           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   80763             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   80764             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   80765             :   // case: toBeCopied == COPY_DATA for binding_label
   80766           0 :      std::string binding_label_copy = p_binding_label; 
   80767           0 :      result->p_binding_label = binding_label_copy; 
   80768             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   80769             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   80770             :   // case: toBeCopied == COPY_DATA for declarationScope
   80771           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   80772           0 :      result->p_declarationScope = declarationScope_copy; 
   80773             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   80774             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   80775             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   80776           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   80777           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   80778             :   // Copy non-constructor parameter data member (access function): scope_copy
   80779             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   80780             :   // case: toBeCopied == COPY_DATA for scope
   80781           0 :      SgScopeStatement* scope_copy = p_scope; 
   80782           0 :      result->p_scope = scope_copy; 
   80783             :   // Copy non-constructor parameter data member (access function): specialization_copy
   80784             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   80785             :   // case: toBeCopied == COPY_DATA for specialization
   80786           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   80787           0 :      result->p_specialization = specialization_copy; 
   80788             :   // Copy non-constructor parameter data member (access function): from_template_copy
   80789             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for from_template
   80790             :   // case: toBeCopied == COPY_DATA for from_template
   80791           0 :      bool from_template_copy = p_from_template; 
   80792           0 :      result->p_from_template = from_template_copy; 
   80793             :   // Copy non-constructor parameter data member (access function): fixupScope_copy
   80794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fixupScope
   80795             :   // case: toBeCopied == COPY_DATA for fixupScope
   80796           0 :      bool fixupScope_copy = p_fixupScope; 
   80797           0 :      result->p_fixupScope = fixupScope_copy; 
   80798             :   // Copy non-constructor parameter data member (access function): isUnNamed_copy
   80799             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isUnNamed
   80800             :   // case: toBeCopied == COPY_DATA for isUnNamed
   80801           0 :      bool isUnNamed_copy = p_isUnNamed; 
   80802           0 :      result->p_isUnNamed = isUnNamed_copy; 
   80803             :   // Copy non-constructor parameter data member (access function): explicit_annotation_interface_copy
   80804             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_annotation_interface
   80805             :   // case: toBeCopied == COPY_DATA for explicit_annotation_interface
   80806           0 :      bool explicit_annotation_interface_copy = p_explicit_annotation_interface; 
   80807           0 :      result->p_explicit_annotation_interface = explicit_annotation_interface_copy; 
   80808             :   // Copy non-constructor parameter data member (access function): explicit_interface_copy
   80809             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_interface
   80810             :   // case: toBeCopied == COPY_DATA for explicit_interface
   80811           0 :      bool explicit_interface_copy = p_explicit_interface; 
   80812           0 :      result->p_explicit_interface = explicit_interface_copy; 
   80813             :   // Copy non-constructor parameter data member (access function): explicit_enum_copy
   80814             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_enum
   80815             :   // case: toBeCopied == COPY_DATA for explicit_enum
   80816           0 :      bool explicit_enum_copy = p_explicit_enum; 
   80817           0 :      result->p_explicit_enum = explicit_enum_copy; 
   80818             :   // Copy non-constructor parameter data member (access function): explicit_anonymous_copy
   80819             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_anonymous
   80820             :   // case: toBeCopied == COPY_DATA for explicit_anonymous
   80821           0 :      bool explicit_anonymous_copy = p_explicit_anonymous; 
   80822           0 :      result->p_explicit_anonymous = explicit_anonymous_copy; 
   80823             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   80824           0 :      SgExprListExp* decoratorList_copy; 
   80825             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   80826           0 :           if (get_decoratorList() != NULL) 
   80827             :              { 
   80828           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   80829             :              } 
   80830             :             else 
   80831             :              { 
   80832             :                decoratorList_copy = NULL; 
   80833             :              } 
   80834             :   /* check for a valid pointer and delete if present */ 
   80835           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   80836           0 :      result->p_decoratorList = decoratorList_copy; 
   80837             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   80838           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   80839             :              { 
   80840           0 :                decoratorList_copy->set_parent(result); 
   80841             :              } 
   80842             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   80843             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   80844             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   80845           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   80846           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   80847             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   80848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   80849             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   80850           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   80851           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   80852             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   80853             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   80854             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   80855           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   80856           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   80857             :   // Copy non-constructor parameter data member (access function): isAutonomousDeclaration_copy
   80858             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAutonomousDeclaration
   80859             :   // case: toBeCopied == COPY_DATA for isAutonomousDeclaration
   80860           0 :      bool isAutonomousDeclaration_copy = p_isAutonomousDeclaration; 
   80861           0 :      result->p_isAutonomousDeclaration = isAutonomousDeclaration_copy; 
   80862             :   // Copy non-constructor parameter data member (access function): isRepresentingTemplateParameterInTemplateDeclaration_copy
   80863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isRepresentingTemplateParameterInTemplateDeclaration
   80864             :   // case: toBeCopied == COPY_DATA for isRepresentingTemplateParameterInTemplateDeclaration
   80865           0 :      bool isRepresentingTemplateParameterInTemplateDeclaration_copy = p_isRepresentingTemplateParameterInTemplateDeclaration; 
   80866           0 :      result->p_isRepresentingTemplateParameterInTemplateDeclaration = isRepresentingTemplateParameterInTemplateDeclaration_copy; 
   80867             :   // Copy non-constructor parameter data member (access function): adaParentType_copy
   80868             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for adaParentType
   80869             :   // case: toBeCopied == COPY_DATA for adaParentType
   80870           0 :      SgBaseClass* adaParentType_copy = p_adaParentType; 
   80871           0 :      result->p_adaParentType = adaParentType_copy; 
   80872             :   // Copy non-constructor parameter data member (access function): templateName_copy
   80873             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateName
   80874             :   // case: toBeCopied == COPY_DATA for templateName
   80875           0 :      SgName templateName_copy = p_templateName; 
   80876           0 :      result->p_templateName = templateName_copy; 
   80877             :   // Copy non-constructor parameter data member (access function): templateHeader_copy
   80878             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateHeader
   80879             :   // case: toBeCopied == COPY_DATA for templateHeader
   80880           0 :      SgName templateHeader_copy = p_templateHeader; 
   80881           0 :      result->p_templateHeader = templateHeader_copy; 
   80882             :   // Copy non-constructor parameter data member (access function): nameResetFromMangledForm_copy
   80883             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameResetFromMangledForm
   80884             :   // case: toBeCopied == COPY_DATA for nameResetFromMangledForm
   80885           0 :      bool nameResetFromMangledForm_copy = p_nameResetFromMangledForm; 
   80886           0 :      result->p_nameResetFromMangledForm = nameResetFromMangledForm_copy; 
   80887             :   // case: not a listType for (using conditionalToSetParent)definition
   80888           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   80889             :              { 
   80890           0 :                definition_copy->set_parent(result); 
   80891             :              } 
   80892             : 
   80893             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   80894             : 
   80895             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   80896             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   80897             :   // fixupCopy(result,help);
   80898             : 
   80899             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   80900             :   // the Sg_File_Info objects that are built for the new IR nodes.
   80901           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   80902           0 :      if (locatedNode != NULL)
   80903             :         {
   80904             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   80905           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   80906           0 :           ROSE_ASSERT(start != NULL);
   80907             : #if 0
   80908             :        // Debugging information
   80909             :           if (start->get_parent() == NULL)
   80910             :              {
   80911             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80912             :              }
   80913             : #endif
   80914           0 :           start->set_parent(locatedNode);
   80915           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   80916             : 
   80917           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   80918             : 
   80919             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   80920             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   80921             :        // ROSE_ASSERT(end != NULL);
   80922           0 :           if (end == NULL)
   80923             :              {
   80924           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   80925             :              }
   80926             :             else
   80927             :              {
   80928             : #if 0
   80929             :             // Debugging information
   80930             :                if (end->get_parent() == NULL)
   80931             :                   {
   80932             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80933             :                   }
   80934             : #endif
   80935           0 :                end->set_parent(locatedNode);
   80936           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   80937             :              }
   80938             : 
   80939           0 :           SgExpression* expression = isSgExpression(result);
   80940           0 :           if (isSgExpression(this) != NULL)
   80941             :              {
   80942           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   80943             : 
   80944             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   80945           0 :                if (operatorPosition != NULL)
   80946             :                   {
   80947             : #if 0
   80948             :                  // Debugging information
   80949             :                     if (operatorPosition->get_parent() == NULL)
   80950             :                        {
   80951             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80952             :                        }
   80953             : #endif
   80954           0 :                     operatorPosition->set_parent(expression);
   80955           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   80956             :                   }
   80957             :              }
   80958             :         }
   80959             : 
   80960             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   80961           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   80962           0 :      if (initializedName != NULL)
   80963             :         {
   80964             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   80965           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   80966           0 :           ROSE_ASSERT(start != NULL);
   80967             : #if 0
   80968             :        // Debugging information
   80969             :           if (start->get_parent() == NULL)
   80970             :              {
   80971             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80972             :              }
   80973             : #endif
   80974           0 :           start->set_parent(initializedName);
   80975           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   80976             : 
   80977             : #if 0
   80978             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   80979             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   80980             : 
   80981             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   80982             :        // ROSE_ASSERT(end != NULL);
   80983             :           if (end == NULL)
   80984             :              {
   80985             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   80986             :              }
   80987             :             else
   80988             :              {
   80989             :                if (end->get_parent() == NULL)
   80990             :                   {
   80991             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   80992             :                   }
   80993             :                end->set_parent(initializedName);
   80994             :                ROSE_ASSERT(end->get_parent() != NULL);
   80995             :              }
   80996             : #endif
   80997             :         }
   80998             : 
   80999             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   81000           0 :      help.insertCopiedNodePair(this,result);
   81001             : 
   81002             :   // printf ("End of copy SgTemplateInstantiationDecl = %p = %s \n",this,SageInterface::get_name(this).c_str());
   81003             : 
   81004             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   81005             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   81006           0 :      help.decrementDepth();
   81007             : 
   81008             :   // Test if this is the root of the copy!
   81009           0 :      if (help.get_depth() == 0)
   81010             :         {
   81011             :        // This is the original calling node.
   81012             : 
   81013             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   81014             :        // printf ("Calling SgTemplateInstantiationDecl::fixupCopy() (from root of AST being copied) \n");
   81015             : #if ALT_FIXUP_COPY
   81016             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   81017           0 :           fixupCopy_scopes (result,help);
   81018           0 :           fixupCopy_symbols (result,help);
   81019           0 :           fixupCopy_references (result,help);
   81020             : #else
   81021             :           fixupCopy(result,help);
   81022             : #endif
   81023             :        // Allow this to be called recursively, so accumulate the state.
   81024             :        // Also, clear the state in the SgCopyHelp object.
   81025             :        // help.clearState();
   81026             :         }
   81027             : 
   81028           0 :      return result;
   81029             :    }
   81030             : 
   81031             : 
   81032             : /* #line 81033 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   81033             : 
   81034             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   81035             : 
   81036           0 : SgNode* SgDerivedTypeStatement::copy ( SgCopyHelp& help) const
   81037             :    {
   81038           0 :      SgDerivedTypeStatement* result = NULL;
   81039             : 
   81040             :   // printf ("Copy SgDerivedTypeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   81041             : 
   81042             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   81043             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   81044             :   // The default value of the depth is 0, so after this call the depth is 1!
   81045           0 :      help.incrementDepth();
   81046             : 
   81047             : #if 0
   81048             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   81049             :   // but it is not generally true that things can only be copied once!
   81050             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   81051             :   // AstAttribute* existingAttribute = const_cast<SgDerivedTypeStatement*>(this)->attribute["copied"];
   81052             :      bool previouslyCopied = const_cast<SgDerivedTypeStatement*>(this)->attribute.exists("copied");
   81053             :      if (previouslyCopied == true)
   81054             :         {
   81055             :           this->get_file_info()->display("Called from copy SgDerivedTypeStatement: debug");
   81056             :         }
   81057             :      ROSE_ASSERT(previouslyCopied == false);
   81058             : 
   81059             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   81060             :      AstAttribute* newAttribute = new AstAttribute();
   81061             :      ROSE_ASSERT(newAttribute != NULL);
   81062             : 
   81063             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   81064             :      const_cast<SgDerivedTypeStatement*>(this)->attribute.add("copied",newAttribute);
   81065             : #endif
   81066             : 
   81067             :   // Copy data members from base classes
   81068             :   // Copy constructor parameter data member: startOfConstruct_copy
   81069             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   81070             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   81071           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   81072           0 :      if ( p_startOfConstruct != NULL ) 
   81073             :         { 
   81074           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   81075             :         } 
   81076             :        else 
   81077             :         { 
   81078             :           startOfConstruct_copy = NULL; 
   81079             :         } 
   81080             :   // Copy constructor parameter data member: name_copy
   81081             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   81082             :   // case: toBeCopied == COPY_DATA for name
   81083           0 :      SgName name_copy = p_name; 
   81084             :   // Copy constructor parameter data member: class_type_copy
   81085             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_type
   81086             :   // case: toBeCopied == COPY_DATA for class_type
   81087           0 :      SgClassDeclaration::class_types class_type_copy = p_class_type; 
   81088             :   // Copy constructor parameter data member: type_copy
   81089             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   81090             :   // case: toBeCopied == CLONE_PTR for type
   81091           0 :      SgClassType* type_copy = NULL; 
   81092           0 :      if ( p_type != NULL ) 
   81093             :         { 
   81094           0 :           type_copy = new SgClassType( *p_type); 
   81095             :         } 
   81096             :        else 
   81097             :         { 
   81098             :           type_copy = NULL; 
   81099             :         } 
   81100             :   // Copy constructor parameter data member: definition_copy
   81101           0 :      SgClassDefinition* definition_copy; 
   81102             :   // case: not a listType for (using conditionalToCopyVariable)definition
   81103           0 :           if (get_definition() != NULL) 
   81104             :              { 
   81105           0 :                definition_copy = static_cast<SgClassDefinition*>(help.copyAst(get_definition())); 
   81106             :              } 
   81107             :             else 
   81108             :              { 
   81109             :                definition_copy = NULL; 
   81110             :              } 
   81111             :  
   81112             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   81113             : 
   81114             :   // Build an empty copy of this object (will be filled in, but 
   81115             :   // the parent can't be set and must be set by the caller)
   81116           0 :      result = new SgDerivedTypeStatement(  startOfConstruct_copy, name_copy, class_type_copy, type_copy, definition_copy );
   81117           0 :      ROSE_ASSERT(result != NULL);
   81118             : 
   81119             :   // Copy data members of "this" class
   81120             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   81121             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   81122             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   81123           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   81124           0 :      if ( p_endOfConstruct != NULL ) 
   81125             :         { 
   81126           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   81127             :         } 
   81128             :        else 
   81129             :         { 
   81130             :           endOfConstruct_copy = NULL; 
   81131             :         } 
   81132             :   /* check for a valid pointer and delete if present */ 
   81133           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   81134             :   /* add assignment to result here */ 
   81135           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   81136             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   81137             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   81138             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   81139           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   81140           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   81141             :         { 
   81142           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   81143             :         } 
   81144             :        else 
   81145             :         { 
   81146             :           attachedPreprocessingInfoPtr_copy = NULL; 
   81147             :         } 
   81148             :   /* check for a valid pointer and delete if present */ 
   81149           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   81150             :   /* add assignment to result here */ 
   81151           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   81152             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   81153             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   81154             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   81155           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   81156           0 :      if ( p_attributeMechanism != NULL ) 
   81157             :         { 
   81158           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   81159             :         } 
   81160             :        else 
   81161             :         { 
   81162             :           attributeMechanism_copy = NULL; 
   81163             :         } 
   81164             :   /* check for a valid pointer and delete if present */ 
   81165           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   81166             :   /* add assignment to result here */ 
   81167           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   81168             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   81169             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   81170             :   // case: toBeCopied == COPY_DATA for numeric_label
   81171           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   81172           0 :      result->p_numeric_label = numeric_label_copy; 
   81173             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   81174             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   81175             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   81176           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   81177           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   81178             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   81179             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   81180             :   // case: toBeCopied == COPY_DATA for decl_attributes
   81181           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   81182           0 :      result->p_decl_attributes = decl_attributes_copy; 
   81183             :   // Copy non-constructor parameter data member (access function): linkage_copy
   81184             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   81185             :   // case: toBeCopied == COPY_DATA for linkage
   81186           0 :      std::string linkage_copy = p_linkage; 
   81187           0 :      result->p_linkage = linkage_copy; 
   81188             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   81189             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   81190             :   // case: toBeCopied == COPY_DATA for declarationModifier
   81191           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   81192           0 :      result->p_declarationModifier = declarationModifier_copy; 
   81193             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   81194             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   81195             :   // case: toBeCopied == COPY_DATA for nameOnly
   81196           0 :      bool nameOnly_copy = p_nameOnly; 
   81197           0 :      result->p_nameOnly = nameOnly_copy; 
   81198             :   // Copy non-constructor parameter data member (access function): forward_copy
   81199             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   81200             :   // case: toBeCopied == COPY_DATA for forward
   81201           0 :      bool forward_copy = p_forward; 
   81202           0 :      result->p_forward = forward_copy; 
   81203             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   81204             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   81205             :   // case: toBeCopied == COPY_DATA for externBrace
   81206           0 :      bool externBrace_copy = p_externBrace; 
   81207           0 :      result->p_externBrace = externBrace_copy; 
   81208             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   81209             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   81210             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   81211           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   81212           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   81213             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   81214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   81215             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   81216           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   81217           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   81218             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   81219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   81220             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   81221           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   81222           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   81223             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   81224             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   81225             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   81226           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   81227           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   81228             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   81229             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   81230             :   // case: toBeCopied == COPY_DATA for binding_label
   81231           0 :      std::string binding_label_copy = p_binding_label; 
   81232           0 :      result->p_binding_label = binding_label_copy; 
   81233             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   81234             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   81235             :   // case: toBeCopied == COPY_DATA for declarationScope
   81236           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   81237           0 :      result->p_declarationScope = declarationScope_copy; 
   81238             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   81239             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   81240             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   81241           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   81242           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   81243             :   // Copy non-constructor parameter data member (access function): scope_copy
   81244             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   81245             :   // case: toBeCopied == COPY_DATA for scope
   81246           0 :      SgScopeStatement* scope_copy = p_scope; 
   81247           0 :      result->p_scope = scope_copy; 
   81248             :   // Copy non-constructor parameter data member (access function): specialization_copy
   81249             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   81250             :   // case: toBeCopied == COPY_DATA for specialization
   81251           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   81252           0 :      result->p_specialization = specialization_copy; 
   81253             :   // Copy non-constructor parameter data member (access function): from_template_copy
   81254             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for from_template
   81255             :   // case: toBeCopied == COPY_DATA for from_template
   81256           0 :      bool from_template_copy = p_from_template; 
   81257           0 :      result->p_from_template = from_template_copy; 
   81258             :   // Copy non-constructor parameter data member (access function): fixupScope_copy
   81259             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fixupScope
   81260             :   // case: toBeCopied == COPY_DATA for fixupScope
   81261           0 :      bool fixupScope_copy = p_fixupScope; 
   81262           0 :      result->p_fixupScope = fixupScope_copy; 
   81263             :   // Copy non-constructor parameter data member (access function): isUnNamed_copy
   81264             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isUnNamed
   81265             :   // case: toBeCopied == COPY_DATA for isUnNamed
   81266           0 :      bool isUnNamed_copy = p_isUnNamed; 
   81267           0 :      result->p_isUnNamed = isUnNamed_copy; 
   81268             :   // Copy non-constructor parameter data member (access function): explicit_annotation_interface_copy
   81269             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_annotation_interface
   81270             :   // case: toBeCopied == COPY_DATA for explicit_annotation_interface
   81271           0 :      bool explicit_annotation_interface_copy = p_explicit_annotation_interface; 
   81272           0 :      result->p_explicit_annotation_interface = explicit_annotation_interface_copy; 
   81273             :   // Copy non-constructor parameter data member (access function): explicit_interface_copy
   81274             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_interface
   81275             :   // case: toBeCopied == COPY_DATA for explicit_interface
   81276           0 :      bool explicit_interface_copy = p_explicit_interface; 
   81277           0 :      result->p_explicit_interface = explicit_interface_copy; 
   81278             :   // Copy non-constructor parameter data member (access function): explicit_enum_copy
   81279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_enum
   81280             :   // case: toBeCopied == COPY_DATA for explicit_enum
   81281           0 :      bool explicit_enum_copy = p_explicit_enum; 
   81282           0 :      result->p_explicit_enum = explicit_enum_copy; 
   81283             :   // Copy non-constructor parameter data member (access function): explicit_anonymous_copy
   81284             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_anonymous
   81285             :   // case: toBeCopied == COPY_DATA for explicit_anonymous
   81286           0 :      bool explicit_anonymous_copy = p_explicit_anonymous; 
   81287           0 :      result->p_explicit_anonymous = explicit_anonymous_copy; 
   81288             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   81289           0 :      SgExprListExp* decoratorList_copy; 
   81290             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   81291           0 :           if (get_decoratorList() != NULL) 
   81292             :              { 
   81293           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   81294             :              } 
   81295             :             else 
   81296             :              { 
   81297             :                decoratorList_copy = NULL; 
   81298             :              } 
   81299             :   /* check for a valid pointer and delete if present */ 
   81300           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   81301           0 :      result->p_decoratorList = decoratorList_copy; 
   81302             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   81303           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   81304             :              { 
   81305           0 :                decoratorList_copy->set_parent(result); 
   81306             :              } 
   81307             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   81308             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   81309             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   81310           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   81311           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   81312             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   81313             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   81314             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   81315           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   81316           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   81317             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   81318             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   81319             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   81320           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   81321           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   81322             :   // Copy non-constructor parameter data member (access function): isAutonomousDeclaration_copy
   81323             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAutonomousDeclaration
   81324             :   // case: toBeCopied == COPY_DATA for isAutonomousDeclaration
   81325           0 :      bool isAutonomousDeclaration_copy = p_isAutonomousDeclaration; 
   81326           0 :      result->p_isAutonomousDeclaration = isAutonomousDeclaration_copy; 
   81327             :   // Copy non-constructor parameter data member (access function): isRepresentingTemplateParameterInTemplateDeclaration_copy
   81328             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isRepresentingTemplateParameterInTemplateDeclaration
   81329             :   // case: toBeCopied == COPY_DATA for isRepresentingTemplateParameterInTemplateDeclaration
   81330           0 :      bool isRepresentingTemplateParameterInTemplateDeclaration_copy = p_isRepresentingTemplateParameterInTemplateDeclaration; 
   81331           0 :      result->p_isRepresentingTemplateParameterInTemplateDeclaration = isRepresentingTemplateParameterInTemplateDeclaration_copy; 
   81332             :   // Copy non-constructor parameter data member (access function): adaParentType_copy
   81333             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for adaParentType
   81334             :   // case: toBeCopied == COPY_DATA for adaParentType
   81335           0 :      SgBaseClass* adaParentType_copy = p_adaParentType; 
   81336           0 :      result->p_adaParentType = adaParentType_copy; 
   81337             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   81338             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   81339             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   81340           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   81341           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   81342             :   // case: not a listType for (using conditionalToSetParent)definition
   81343           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   81344             :              { 
   81345           0 :                definition_copy->set_parent(result); 
   81346             :              } 
   81347             : 
   81348             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   81349             : 
   81350             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   81351             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   81352             :   // fixupCopy(result,help);
   81353             : 
   81354             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   81355             :   // the Sg_File_Info objects that are built for the new IR nodes.
   81356           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   81357           0 :      if (locatedNode != NULL)
   81358             :         {
   81359             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   81360           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   81361           0 :           ROSE_ASSERT(start != NULL);
   81362             : #if 0
   81363             :        // Debugging information
   81364             :           if (start->get_parent() == NULL)
   81365             :              {
   81366             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81367             :              }
   81368             : #endif
   81369           0 :           start->set_parent(locatedNode);
   81370           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   81371             : 
   81372           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   81373             : 
   81374             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   81375             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   81376             :        // ROSE_ASSERT(end != NULL);
   81377           0 :           if (end == NULL)
   81378             :              {
   81379           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   81380             :              }
   81381             :             else
   81382             :              {
   81383             : #if 0
   81384             :             // Debugging information
   81385             :                if (end->get_parent() == NULL)
   81386             :                   {
   81387             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81388             :                   }
   81389             : #endif
   81390           0 :                end->set_parent(locatedNode);
   81391           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   81392             :              }
   81393             : 
   81394           0 :           SgExpression* expression = isSgExpression(result);
   81395           0 :           if (isSgExpression(this) != NULL)
   81396             :              {
   81397           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   81398             : 
   81399             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   81400           0 :                if (operatorPosition != NULL)
   81401             :                   {
   81402             : #if 0
   81403             :                  // Debugging information
   81404             :                     if (operatorPosition->get_parent() == NULL)
   81405             :                        {
   81406             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81407             :                        }
   81408             : #endif
   81409           0 :                     operatorPosition->set_parent(expression);
   81410           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   81411             :                   }
   81412             :              }
   81413             :         }
   81414             : 
   81415             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   81416           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   81417           0 :      if (initializedName != NULL)
   81418             :         {
   81419             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   81420           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   81421           0 :           ROSE_ASSERT(start != NULL);
   81422             : #if 0
   81423             :        // Debugging information
   81424             :           if (start->get_parent() == NULL)
   81425             :              {
   81426             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81427             :              }
   81428             : #endif
   81429           0 :           start->set_parent(initializedName);
   81430           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   81431             : 
   81432             : #if 0
   81433             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   81434             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   81435             : 
   81436             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   81437             :        // ROSE_ASSERT(end != NULL);
   81438             :           if (end == NULL)
   81439             :              {
   81440             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   81441             :              }
   81442             :             else
   81443             :              {
   81444             :                if (end->get_parent() == NULL)
   81445             :                   {
   81446             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81447             :                   }
   81448             :                end->set_parent(initializedName);
   81449             :                ROSE_ASSERT(end->get_parent() != NULL);
   81450             :              }
   81451             : #endif
   81452             :         }
   81453             : 
   81454             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   81455           0 :      help.insertCopiedNodePair(this,result);
   81456             : 
   81457             :   // printf ("End of copy SgDerivedTypeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   81458             : 
   81459             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   81460             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   81461           0 :      help.decrementDepth();
   81462             : 
   81463             :   // Test if this is the root of the copy!
   81464           0 :      if (help.get_depth() == 0)
   81465             :         {
   81466             :        // This is the original calling node.
   81467             : 
   81468             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   81469             :        // printf ("Calling SgDerivedTypeStatement::fixupCopy() (from root of AST being copied) \n");
   81470             : #if ALT_FIXUP_COPY
   81471             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   81472           0 :           fixupCopy_scopes (result,help);
   81473           0 :           fixupCopy_symbols (result,help);
   81474           0 :           fixupCopy_references (result,help);
   81475             : #else
   81476             :           fixupCopy(result,help);
   81477             : #endif
   81478             :        // Allow this to be called recursively, so accumulate the state.
   81479             :        // Also, clear the state in the SgCopyHelp object.
   81480             :        // help.clearState();
   81481             :         }
   81482             : 
   81483           0 :      return result;
   81484             :    }
   81485             : 
   81486             : 
   81487             : /* #line 81488 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   81488             : 
   81489             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   81490             : 
   81491           0 : SgNode* SgModuleStatement::copy ( SgCopyHelp& help) const
   81492             :    {
   81493           0 :      SgModuleStatement* result = NULL;
   81494             : 
   81495             :   // printf ("Copy SgModuleStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   81496             : 
   81497             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   81498             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   81499             :   // The default value of the depth is 0, so after this call the depth is 1!
   81500           0 :      help.incrementDepth();
   81501             : 
   81502             : #if 0
   81503             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   81504             :   // but it is not generally true that things can only be copied once!
   81505             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   81506             :   // AstAttribute* existingAttribute = const_cast<SgModuleStatement*>(this)->attribute["copied"];
   81507             :      bool previouslyCopied = const_cast<SgModuleStatement*>(this)->attribute.exists("copied");
   81508             :      if (previouslyCopied == true)
   81509             :         {
   81510             :           this->get_file_info()->display("Called from copy SgModuleStatement: debug");
   81511             :         }
   81512             :      ROSE_ASSERT(previouslyCopied == false);
   81513             : 
   81514             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   81515             :      AstAttribute* newAttribute = new AstAttribute();
   81516             :      ROSE_ASSERT(newAttribute != NULL);
   81517             : 
   81518             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   81519             :      const_cast<SgModuleStatement*>(this)->attribute.add("copied",newAttribute);
   81520             : #endif
   81521             : 
   81522             :   // Copy data members from base classes
   81523             :   // Copy constructor parameter data member: startOfConstruct_copy
   81524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   81525             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   81526           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   81527           0 :      if ( p_startOfConstruct != NULL ) 
   81528             :         { 
   81529           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   81530             :         } 
   81531             :        else 
   81532             :         { 
   81533             :           startOfConstruct_copy = NULL; 
   81534             :         } 
   81535             :   // Copy constructor parameter data member: name_copy
   81536             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   81537             :   // case: toBeCopied == COPY_DATA for name
   81538           0 :      SgName name_copy = p_name; 
   81539             :   // Copy constructor parameter data member: class_type_copy
   81540             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_type
   81541             :   // case: toBeCopied == COPY_DATA for class_type
   81542           0 :      SgClassDeclaration::class_types class_type_copy = p_class_type; 
   81543             :   // Copy constructor parameter data member: type_copy
   81544             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   81545             :   // case: toBeCopied == CLONE_PTR for type
   81546           0 :      SgClassType* type_copy = NULL; 
   81547           0 :      if ( p_type != NULL ) 
   81548             :         { 
   81549           0 :           type_copy = new SgClassType( *p_type); 
   81550             :         } 
   81551             :        else 
   81552             :         { 
   81553             :           type_copy = NULL; 
   81554             :         } 
   81555             :   // Copy constructor parameter data member: definition_copy
   81556           0 :      SgClassDefinition* definition_copy; 
   81557             :   // case: not a listType for (using conditionalToCopyVariable)definition
   81558           0 :           if (get_definition() != NULL) 
   81559             :              { 
   81560           0 :                definition_copy = static_cast<SgClassDefinition*>(help.copyAst(get_definition())); 
   81561             :              } 
   81562             :             else 
   81563             :              { 
   81564             :                definition_copy = NULL; 
   81565             :              } 
   81566             :  
   81567             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   81568             : 
   81569             :   // Build an empty copy of this object (will be filled in, but 
   81570             :   // the parent can't be set and must be set by the caller)
   81571           0 :      result = new SgModuleStatement(  startOfConstruct_copy, name_copy, class_type_copy, type_copy, definition_copy );
   81572           0 :      ROSE_ASSERT(result != NULL);
   81573             : 
   81574             :   // Copy data members of "this" class
   81575             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   81576             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   81577             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   81578           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   81579           0 :      if ( p_endOfConstruct != NULL ) 
   81580             :         { 
   81581           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   81582             :         } 
   81583             :        else 
   81584             :         { 
   81585             :           endOfConstruct_copy = NULL; 
   81586             :         } 
   81587             :   /* check for a valid pointer and delete if present */ 
   81588           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   81589             :   /* add assignment to result here */ 
   81590           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   81591             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   81592             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   81593             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   81594           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   81595           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   81596             :         { 
   81597           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   81598             :         } 
   81599             :        else 
   81600             :         { 
   81601             :           attachedPreprocessingInfoPtr_copy = NULL; 
   81602             :         } 
   81603             :   /* check for a valid pointer and delete if present */ 
   81604           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   81605             :   /* add assignment to result here */ 
   81606           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   81607             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   81608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   81609             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   81610           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   81611           0 :      if ( p_attributeMechanism != NULL ) 
   81612             :         { 
   81613           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   81614             :         } 
   81615             :        else 
   81616             :         { 
   81617             :           attributeMechanism_copy = NULL; 
   81618             :         } 
   81619             :   /* check for a valid pointer and delete if present */ 
   81620           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   81621             :   /* add assignment to result here */ 
   81622           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   81623             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   81624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   81625             :   // case: toBeCopied == COPY_DATA for numeric_label
   81626           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   81627           0 :      result->p_numeric_label = numeric_label_copy; 
   81628             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   81629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   81630             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   81631           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   81632           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   81633             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   81634             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   81635             :   // case: toBeCopied == COPY_DATA for decl_attributes
   81636           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   81637           0 :      result->p_decl_attributes = decl_attributes_copy; 
   81638             :   // Copy non-constructor parameter data member (access function): linkage_copy
   81639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   81640             :   // case: toBeCopied == COPY_DATA for linkage
   81641           0 :      std::string linkage_copy = p_linkage; 
   81642           0 :      result->p_linkage = linkage_copy; 
   81643             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   81644             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   81645             :   // case: toBeCopied == COPY_DATA for declarationModifier
   81646           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   81647           0 :      result->p_declarationModifier = declarationModifier_copy; 
   81648             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   81649             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   81650             :   // case: toBeCopied == COPY_DATA for nameOnly
   81651           0 :      bool nameOnly_copy = p_nameOnly; 
   81652           0 :      result->p_nameOnly = nameOnly_copy; 
   81653             :   // Copy non-constructor parameter data member (access function): forward_copy
   81654             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   81655             :   // case: toBeCopied == COPY_DATA for forward
   81656           0 :      bool forward_copy = p_forward; 
   81657           0 :      result->p_forward = forward_copy; 
   81658             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   81659             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   81660             :   // case: toBeCopied == COPY_DATA for externBrace
   81661           0 :      bool externBrace_copy = p_externBrace; 
   81662           0 :      result->p_externBrace = externBrace_copy; 
   81663             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   81664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   81665             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   81666           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   81667           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   81668             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   81669             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   81670             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   81671           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   81672           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   81673             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   81674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   81675             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   81676           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   81677           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   81678             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   81679             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   81680             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   81681           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   81682           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   81683             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   81684             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   81685             :   // case: toBeCopied == COPY_DATA for binding_label
   81686           0 :      std::string binding_label_copy = p_binding_label; 
   81687           0 :      result->p_binding_label = binding_label_copy; 
   81688             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   81689             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   81690             :   // case: toBeCopied == COPY_DATA for declarationScope
   81691           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   81692           0 :      result->p_declarationScope = declarationScope_copy; 
   81693             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   81694             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   81695             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   81696           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   81697           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   81698             :   // Copy non-constructor parameter data member (access function): scope_copy
   81699             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   81700             :   // case: toBeCopied == COPY_DATA for scope
   81701           0 :      SgScopeStatement* scope_copy = p_scope; 
   81702           0 :      result->p_scope = scope_copy; 
   81703             :   // Copy non-constructor parameter data member (access function): specialization_copy
   81704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   81705             :   // case: toBeCopied == COPY_DATA for specialization
   81706           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   81707           0 :      result->p_specialization = specialization_copy; 
   81708             :   // Copy non-constructor parameter data member (access function): from_template_copy
   81709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for from_template
   81710             :   // case: toBeCopied == COPY_DATA for from_template
   81711           0 :      bool from_template_copy = p_from_template; 
   81712           0 :      result->p_from_template = from_template_copy; 
   81713             :   // Copy non-constructor parameter data member (access function): fixupScope_copy
   81714             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fixupScope
   81715             :   // case: toBeCopied == COPY_DATA for fixupScope
   81716           0 :      bool fixupScope_copy = p_fixupScope; 
   81717           0 :      result->p_fixupScope = fixupScope_copy; 
   81718             :   // Copy non-constructor parameter data member (access function): isUnNamed_copy
   81719             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isUnNamed
   81720             :   // case: toBeCopied == COPY_DATA for isUnNamed
   81721           0 :      bool isUnNamed_copy = p_isUnNamed; 
   81722           0 :      result->p_isUnNamed = isUnNamed_copy; 
   81723             :   // Copy non-constructor parameter data member (access function): explicit_annotation_interface_copy
   81724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_annotation_interface
   81725             :   // case: toBeCopied == COPY_DATA for explicit_annotation_interface
   81726           0 :      bool explicit_annotation_interface_copy = p_explicit_annotation_interface; 
   81727           0 :      result->p_explicit_annotation_interface = explicit_annotation_interface_copy; 
   81728             :   // Copy non-constructor parameter data member (access function): explicit_interface_copy
   81729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_interface
   81730             :   // case: toBeCopied == COPY_DATA for explicit_interface
   81731           0 :      bool explicit_interface_copy = p_explicit_interface; 
   81732           0 :      result->p_explicit_interface = explicit_interface_copy; 
   81733             :   // Copy non-constructor parameter data member (access function): explicit_enum_copy
   81734             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_enum
   81735             :   // case: toBeCopied == COPY_DATA for explicit_enum
   81736           0 :      bool explicit_enum_copy = p_explicit_enum; 
   81737           0 :      result->p_explicit_enum = explicit_enum_copy; 
   81738             :   // Copy non-constructor parameter data member (access function): explicit_anonymous_copy
   81739             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_anonymous
   81740             :   // case: toBeCopied == COPY_DATA for explicit_anonymous
   81741           0 :      bool explicit_anonymous_copy = p_explicit_anonymous; 
   81742           0 :      result->p_explicit_anonymous = explicit_anonymous_copy; 
   81743             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   81744           0 :      SgExprListExp* decoratorList_copy; 
   81745             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   81746           0 :           if (get_decoratorList() != NULL) 
   81747             :              { 
   81748           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   81749             :              } 
   81750             :             else 
   81751             :              { 
   81752             :                decoratorList_copy = NULL; 
   81753             :              } 
   81754             :   /* check for a valid pointer and delete if present */ 
   81755           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   81756           0 :      result->p_decoratorList = decoratorList_copy; 
   81757             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   81758           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   81759             :              { 
   81760           0 :                decoratorList_copy->set_parent(result); 
   81761             :              } 
   81762             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   81763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   81764             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   81765           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   81766           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   81767             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   81768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   81769             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   81770           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   81771           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   81772             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   81773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   81774             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   81775           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   81776           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   81777             :   // Copy non-constructor parameter data member (access function): isAutonomousDeclaration_copy
   81778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAutonomousDeclaration
   81779             :   // case: toBeCopied == COPY_DATA for isAutonomousDeclaration
   81780           0 :      bool isAutonomousDeclaration_copy = p_isAutonomousDeclaration; 
   81781           0 :      result->p_isAutonomousDeclaration = isAutonomousDeclaration_copy; 
   81782             :   // Copy non-constructor parameter data member (access function): isRepresentingTemplateParameterInTemplateDeclaration_copy
   81783             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isRepresentingTemplateParameterInTemplateDeclaration
   81784             :   // case: toBeCopied == COPY_DATA for isRepresentingTemplateParameterInTemplateDeclaration
   81785           0 :      bool isRepresentingTemplateParameterInTemplateDeclaration_copy = p_isRepresentingTemplateParameterInTemplateDeclaration; 
   81786           0 :      result->p_isRepresentingTemplateParameterInTemplateDeclaration = isRepresentingTemplateParameterInTemplateDeclaration_copy; 
   81787             :   // Copy non-constructor parameter data member (access function): adaParentType_copy
   81788             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for adaParentType
   81789             :   // case: toBeCopied == COPY_DATA for adaParentType
   81790           0 :      SgBaseClass* adaParentType_copy = p_adaParentType; 
   81791           0 :      result->p_adaParentType = adaParentType_copy; 
   81792             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   81793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   81794             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   81795           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   81796           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   81797             :   // case: not a listType for (using conditionalToSetParent)definition
   81798           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   81799             :              { 
   81800           0 :                definition_copy->set_parent(result); 
   81801             :              } 
   81802             : 
   81803             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   81804             : 
   81805             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   81806             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   81807             :   // fixupCopy(result,help);
   81808             : 
   81809             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   81810             :   // the Sg_File_Info objects that are built for the new IR nodes.
   81811           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   81812           0 :      if (locatedNode != NULL)
   81813             :         {
   81814             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   81815           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   81816           0 :           ROSE_ASSERT(start != NULL);
   81817             : #if 0
   81818             :        // Debugging information
   81819             :           if (start->get_parent() == NULL)
   81820             :              {
   81821             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81822             :              }
   81823             : #endif
   81824           0 :           start->set_parent(locatedNode);
   81825           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   81826             : 
   81827           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   81828             : 
   81829             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   81830             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   81831             :        // ROSE_ASSERT(end != NULL);
   81832           0 :           if (end == NULL)
   81833             :              {
   81834           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   81835             :              }
   81836             :             else
   81837             :              {
   81838             : #if 0
   81839             :             // Debugging information
   81840             :                if (end->get_parent() == NULL)
   81841             :                   {
   81842             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81843             :                   }
   81844             : #endif
   81845           0 :                end->set_parent(locatedNode);
   81846           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   81847             :              }
   81848             : 
   81849           0 :           SgExpression* expression = isSgExpression(result);
   81850           0 :           if (isSgExpression(this) != NULL)
   81851             :              {
   81852           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   81853             : 
   81854             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   81855           0 :                if (operatorPosition != NULL)
   81856             :                   {
   81857             : #if 0
   81858             :                  // Debugging information
   81859             :                     if (operatorPosition->get_parent() == NULL)
   81860             :                        {
   81861             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81862             :                        }
   81863             : #endif
   81864           0 :                     operatorPosition->set_parent(expression);
   81865           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   81866             :                   }
   81867             :              }
   81868             :         }
   81869             : 
   81870             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   81871           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   81872           0 :      if (initializedName != NULL)
   81873             :         {
   81874             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   81875           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   81876           0 :           ROSE_ASSERT(start != NULL);
   81877             : #if 0
   81878             :        // Debugging information
   81879             :           if (start->get_parent() == NULL)
   81880             :              {
   81881             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81882             :              }
   81883             : #endif
   81884           0 :           start->set_parent(initializedName);
   81885           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   81886             : 
   81887             : #if 0
   81888             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   81889             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   81890             : 
   81891             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   81892             :        // ROSE_ASSERT(end != NULL);
   81893             :           if (end == NULL)
   81894             :              {
   81895             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   81896             :              }
   81897             :             else
   81898             :              {
   81899             :                if (end->get_parent() == NULL)
   81900             :                   {
   81901             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   81902             :                   }
   81903             :                end->set_parent(initializedName);
   81904             :                ROSE_ASSERT(end->get_parent() != NULL);
   81905             :              }
   81906             : #endif
   81907             :         }
   81908             : 
   81909             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   81910           0 :      help.insertCopiedNodePair(this,result);
   81911             : 
   81912             :   // printf ("End of copy SgModuleStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   81913             : 
   81914             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   81915             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   81916           0 :      help.decrementDepth();
   81917             : 
   81918             :   // Test if this is the root of the copy!
   81919           0 :      if (help.get_depth() == 0)
   81920             :         {
   81921             :        // This is the original calling node.
   81922             : 
   81923             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   81924             :        // printf ("Calling SgModuleStatement::fixupCopy() (from root of AST being copied) \n");
   81925             : #if ALT_FIXUP_COPY
   81926             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   81927           0 :           fixupCopy_scopes (result,help);
   81928           0 :           fixupCopy_symbols (result,help);
   81929           0 :           fixupCopy_references (result,help);
   81930             : #else
   81931             :           fixupCopy(result,help);
   81932             : #endif
   81933             :        // Allow this to be called recursively, so accumulate the state.
   81934             :        // Also, clear the state in the SgCopyHelp object.
   81935             :        // help.clearState();
   81936             :         }
   81937             : 
   81938           0 :      return result;
   81939             :    }
   81940             : 
   81941             : 
   81942             : /* #line 81943 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   81943             : 
   81944             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   81945             : 
   81946           0 : SgNode* SgImplicitStatement::copy ( SgCopyHelp& help) const
   81947             :    {
   81948           0 :      SgImplicitStatement* result = NULL;
   81949             : 
   81950             :   // printf ("Copy SgImplicitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   81951             : 
   81952             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   81953             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   81954             :   // The default value of the depth is 0, so after this call the depth is 1!
   81955           0 :      help.incrementDepth();
   81956             : 
   81957             : #if 0
   81958             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   81959             :   // but it is not generally true that things can only be copied once!
   81960             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   81961             :   // AstAttribute* existingAttribute = const_cast<SgImplicitStatement*>(this)->attribute["copied"];
   81962             :      bool previouslyCopied = const_cast<SgImplicitStatement*>(this)->attribute.exists("copied");
   81963             :      if (previouslyCopied == true)
   81964             :         {
   81965             :           this->get_file_info()->display("Called from copy SgImplicitStatement: debug");
   81966             :         }
   81967             :      ROSE_ASSERT(previouslyCopied == false);
   81968             : 
   81969             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   81970             :      AstAttribute* newAttribute = new AstAttribute();
   81971             :      ROSE_ASSERT(newAttribute != NULL);
   81972             : 
   81973             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   81974             :      const_cast<SgImplicitStatement*>(this)->attribute.add("copied",newAttribute);
   81975             : #endif
   81976             : 
   81977             :   // Copy data members from base classes
   81978             :   // Copy constructor parameter data member: startOfConstruct_copy
   81979             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   81980             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   81981           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   81982           0 :      if ( p_startOfConstruct != NULL ) 
   81983             :         { 
   81984           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   81985             :         } 
   81986             :        else 
   81987             :         { 
   81988             :           startOfConstruct_copy = NULL; 
   81989             :         } 
   81990             :   // Copy constructor parameter data member: implicit_none_copy
   81991             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for implicit_none
   81992             :   // case: toBeCopied == COPY_DATA for implicit_none
   81993           0 :      bool implicit_none_copy = p_implicit_none; 
   81994             :  
   81995             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   81996             : 
   81997             :   // Build an empty copy of this object (will be filled in, but 
   81998             :   // the parent can't be set and must be set by the caller)
   81999           0 :      result = new SgImplicitStatement(  startOfConstruct_copy, implicit_none_copy );
   82000           0 :      ROSE_ASSERT(result != NULL);
   82001             : 
   82002             :   // Copy data members of "this" class
   82003             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   82004             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   82005             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   82006           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   82007           0 :      if ( p_endOfConstruct != NULL ) 
   82008             :         { 
   82009           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   82010             :         } 
   82011             :        else 
   82012             :         { 
   82013             :           endOfConstruct_copy = NULL; 
   82014             :         } 
   82015             :   /* check for a valid pointer and delete if present */ 
   82016           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   82017             :   /* add assignment to result here */ 
   82018           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   82019             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   82020             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   82021             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   82022           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   82023           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   82024             :         { 
   82025           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   82026             :         } 
   82027             :        else 
   82028             :         { 
   82029             :           attachedPreprocessingInfoPtr_copy = NULL; 
   82030             :         } 
   82031             :   /* check for a valid pointer and delete if present */ 
   82032           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   82033             :   /* add assignment to result here */ 
   82034           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   82035             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   82036             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   82037             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   82038           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   82039           0 :      if ( p_attributeMechanism != NULL ) 
   82040             :         { 
   82041           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   82042             :         } 
   82043             :        else 
   82044             :         { 
   82045             :           attributeMechanism_copy = NULL; 
   82046             :         } 
   82047             :   /* check for a valid pointer and delete if present */ 
   82048           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   82049             :   /* add assignment to result here */ 
   82050           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   82051             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   82052             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   82053             :   // case: toBeCopied == COPY_DATA for numeric_label
   82054           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   82055           0 :      result->p_numeric_label = numeric_label_copy; 
   82056             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   82057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   82058             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   82059           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   82060           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   82061             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   82062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   82063             :   // case: toBeCopied == COPY_DATA for decl_attributes
   82064           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   82065           0 :      result->p_decl_attributes = decl_attributes_copy; 
   82066             :   // Copy non-constructor parameter data member (access function): linkage_copy
   82067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   82068             :   // case: toBeCopied == COPY_DATA for linkage
   82069           0 :      std::string linkage_copy = p_linkage; 
   82070           0 :      result->p_linkage = linkage_copy; 
   82071             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   82072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   82073             :   // case: toBeCopied == COPY_DATA for declarationModifier
   82074           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   82075           0 :      result->p_declarationModifier = declarationModifier_copy; 
   82076             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   82077             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   82078             :   // case: toBeCopied == COPY_DATA for nameOnly
   82079           0 :      bool nameOnly_copy = p_nameOnly; 
   82080           0 :      result->p_nameOnly = nameOnly_copy; 
   82081             :   // Copy non-constructor parameter data member (access function): forward_copy
   82082             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   82083             :   // case: toBeCopied == COPY_DATA for forward
   82084           0 :      bool forward_copy = p_forward; 
   82085           0 :      result->p_forward = forward_copy; 
   82086             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   82087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   82088             :   // case: toBeCopied == COPY_DATA for externBrace
   82089           0 :      bool externBrace_copy = p_externBrace; 
   82090           0 :      result->p_externBrace = externBrace_copy; 
   82091             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   82092             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   82093             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   82094           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   82095           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   82096             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   82097             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   82098             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   82099           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   82100           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   82101             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   82102             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   82103             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   82104           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   82105           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   82106             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   82107             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   82108             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   82109           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   82110           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   82111             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   82112             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   82113             :   // case: toBeCopied == COPY_DATA for binding_label
   82114           0 :      std::string binding_label_copy = p_binding_label; 
   82115           0 :      result->p_binding_label = binding_label_copy; 
   82116             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   82117             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   82118             :   // case: toBeCopied == COPY_DATA for declarationScope
   82119           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   82120           0 :      result->p_declarationScope = declarationScope_copy; 
   82121             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   82122             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   82123             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   82124           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   82125           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   82126             :   // Copy non-constructor parameter data member (access function): implicit_spec_copy
   82127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for implicit_spec
   82128             :   // case: toBeCopied == COPY_DATA for implicit_spec
   82129           0 :      SgImplicitStatement::implicit_spec_enum implicit_spec_copy = p_implicit_spec; 
   82130           0 :      result->p_implicit_spec = implicit_spec_copy; 
   82131             :   // Copy non-constructor parameter data member (list access function): result->get_variables()
   82132           0 :      SgInitializedNamePtrList variables_copy; 
   82133             :   // case: listType for variables
   82134             :   // case: listType (typeIsPointerToList == false) for variables
   82135           0 :      SgInitializedNamePtrList::const_iterator source_variables_iterator = get_variables().begin(); 
   82136           0 :      for ( /* empty by design */; source_variables_iterator != get_variables().end(); ++source_variables_iterator) 
   82137             :         { 
   82138           0 :           SgInitializedName* source_list_element = *source_variables_iterator; 
   82139           0 :           SgInitializedName* copy_list_element = NULL; 
   82140           0 :           if (source_list_element != NULL) 
   82141             :              { 
   82142           0 :                copy_list_element = static_cast<SgInitializedName*>(help.copyAst(*source_variables_iterator)); 
   82143             :              } 
   82144             :             else 
   82145             :              { 
   82146             :                copy_list_element = NULL; 
   82147             :              } 
   82148           0 :           variables_copy.push_back(copy_list_element); 
   82149             :         } 
   82150           0 :      result->p_variables = variables_copy; 
   82151             :   // case: listType for variables
   82152             :   // case: listType (typeIsPointerToList == false) for variables
   82153           0 :      SgInitializedNamePtrList::const_iterator variables_iterator = result->get_variables().begin(); 
   82154           0 :      for ( /* empty by design */; variables_iterator != result->get_variables().end(); ++variables_iterator) 
   82155             :         { 
   82156           0 :           SgInitializedName* list_element = *variables_iterator; 
   82157           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   82158             :              { 
   82159           0 :                list_element->set_parent(result); 
   82160             :              } 
   82161             :         } 
   82162             : 
   82163             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   82164             : 
   82165             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   82166             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   82167             :   // fixupCopy(result,help);
   82168             : 
   82169             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   82170             :   // the Sg_File_Info objects that are built for the new IR nodes.
   82171           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   82172           0 :      if (locatedNode != NULL)
   82173             :         {
   82174             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   82175           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   82176           0 :           ROSE_ASSERT(start != NULL);
   82177             : #if 0
   82178             :        // Debugging information
   82179             :           if (start->get_parent() == NULL)
   82180             :              {
   82181             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82182             :              }
   82183             : #endif
   82184           0 :           start->set_parent(locatedNode);
   82185           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   82186             : 
   82187           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   82188             : 
   82189             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   82190             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   82191             :        // ROSE_ASSERT(end != NULL);
   82192           0 :           if (end == NULL)
   82193             :              {
   82194           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   82195             :              }
   82196             :             else
   82197             :              {
   82198             : #if 0
   82199             :             // Debugging information
   82200             :                if (end->get_parent() == NULL)
   82201             :                   {
   82202             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82203             :                   }
   82204             : #endif
   82205           0 :                end->set_parent(locatedNode);
   82206           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   82207             :              }
   82208             : 
   82209           0 :           SgExpression* expression = isSgExpression(result);
   82210           0 :           if (isSgExpression(this) != NULL)
   82211             :              {
   82212           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   82213             : 
   82214             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   82215           0 :                if (operatorPosition != NULL)
   82216             :                   {
   82217             : #if 0
   82218             :                  // Debugging information
   82219             :                     if (operatorPosition->get_parent() == NULL)
   82220             :                        {
   82221             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82222             :                        }
   82223             : #endif
   82224           0 :                     operatorPosition->set_parent(expression);
   82225           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   82226             :                   }
   82227             :              }
   82228             :         }
   82229             : 
   82230             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   82231           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   82232           0 :      if (initializedName != NULL)
   82233             :         {
   82234             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   82235           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   82236           0 :           ROSE_ASSERT(start != NULL);
   82237             : #if 0
   82238             :        // Debugging information
   82239             :           if (start->get_parent() == NULL)
   82240             :              {
   82241             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82242             :              }
   82243             : #endif
   82244           0 :           start->set_parent(initializedName);
   82245           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   82246             : 
   82247             : #if 0
   82248             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   82249             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   82250             : 
   82251             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   82252             :        // ROSE_ASSERT(end != NULL);
   82253             :           if (end == NULL)
   82254             :              {
   82255             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   82256             :              }
   82257             :             else
   82258             :              {
   82259             :                if (end->get_parent() == NULL)
   82260             :                   {
   82261             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82262             :                   }
   82263             :                end->set_parent(initializedName);
   82264             :                ROSE_ASSERT(end->get_parent() != NULL);
   82265             :              }
   82266             : #endif
   82267             :         }
   82268             : 
   82269             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   82270           0 :      help.insertCopiedNodePair(this,result);
   82271             : 
   82272             :   // printf ("End of copy SgImplicitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   82273             : 
   82274             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   82275             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   82276           0 :      help.decrementDepth();
   82277             : 
   82278             :   // Test if this is the root of the copy!
   82279           0 :      if (help.get_depth() == 0)
   82280             :         {
   82281             :        // This is the original calling node.
   82282             : 
   82283             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   82284             :        // printf ("Calling SgImplicitStatement::fixupCopy() (from root of AST being copied) \n");
   82285             : #if ALT_FIXUP_COPY
   82286             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   82287           0 :           fixupCopy_scopes (result,help);
   82288           0 :           fixupCopy_symbols (result,help);
   82289           0 :           fixupCopy_references (result,help);
   82290             : #else
   82291             :           fixupCopy(result,help);
   82292             : #endif
   82293             :        // Allow this to be called recursively, so accumulate the state.
   82294             :        // Also, clear the state in the SgCopyHelp object.
   82295             :        // help.clearState();
   82296             :         }
   82297             : 
   82298           0 :      return result;
   82299             :    }
   82300             : 
   82301             : 
   82302             : /* #line 82303 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   82303             : 
   82304             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   82305             : 
   82306           0 : SgNode* SgUsingDeclarationStatement::copy ( SgCopyHelp& help) const
   82307             :    {
   82308           0 :      SgUsingDeclarationStatement* result = NULL;
   82309             : 
   82310             :   // printf ("Copy SgUsingDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   82311             : 
   82312             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   82313             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   82314             :   // The default value of the depth is 0, so after this call the depth is 1!
   82315           0 :      help.incrementDepth();
   82316             : 
   82317             : #if 0
   82318             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   82319             :   // but it is not generally true that things can only be copied once!
   82320             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   82321             :   // AstAttribute* existingAttribute = const_cast<SgUsingDeclarationStatement*>(this)->attribute["copied"];
   82322             :      bool previouslyCopied = const_cast<SgUsingDeclarationStatement*>(this)->attribute.exists("copied");
   82323             :      if (previouslyCopied == true)
   82324             :         {
   82325             :           this->get_file_info()->display("Called from copy SgUsingDeclarationStatement: debug");
   82326             :         }
   82327             :      ROSE_ASSERT(previouslyCopied == false);
   82328             : 
   82329             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   82330             :      AstAttribute* newAttribute = new AstAttribute();
   82331             :      ROSE_ASSERT(newAttribute != NULL);
   82332             : 
   82333             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   82334             :      const_cast<SgUsingDeclarationStatement*>(this)->attribute.add("copied",newAttribute);
   82335             : #endif
   82336             : 
   82337             :   // Copy data members from base classes
   82338             :   // Copy constructor parameter data member: startOfConstruct_copy
   82339             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   82340             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   82341           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   82342           0 :      if ( p_startOfConstruct != NULL ) 
   82343             :         { 
   82344           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   82345             :         } 
   82346             :        else 
   82347             :         { 
   82348             :           startOfConstruct_copy = NULL; 
   82349             :         } 
   82350             :   // Copy constructor parameter data member: declaration_copy
   82351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration
   82352             :   // case: toBeCopied == COPY_DATA for declaration
   82353           0 :      SgDeclarationStatement* declaration_copy = p_declaration; 
   82354             :   // Copy constructor parameter data member: initializedName_copy
   82355             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for initializedName
   82356             :   // case: toBeCopied == COPY_DATA for initializedName
   82357           0 :      SgInitializedName* initializedName_copy = p_initializedName; 
   82358             :  
   82359             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   82360             : 
   82361             :   // Build an empty copy of this object (will be filled in, but 
   82362             :   // the parent can't be set and must be set by the caller)
   82363           0 :      result = new SgUsingDeclarationStatement(  startOfConstruct_copy, declaration_copy, initializedName_copy );
   82364           0 :      ROSE_ASSERT(result != NULL);
   82365             : 
   82366             :   // Copy data members of "this" class
   82367             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   82368             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   82369             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   82370           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   82371           0 :      if ( p_endOfConstruct != NULL ) 
   82372             :         { 
   82373           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   82374             :         } 
   82375             :        else 
   82376             :         { 
   82377             :           endOfConstruct_copy = NULL; 
   82378             :         } 
   82379             :   /* check for a valid pointer and delete if present */ 
   82380           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   82381             :   /* add assignment to result here */ 
   82382           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   82383             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   82384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   82385             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   82386           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   82387           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   82388             :         { 
   82389           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   82390             :         } 
   82391             :        else 
   82392             :         { 
   82393             :           attachedPreprocessingInfoPtr_copy = NULL; 
   82394             :         } 
   82395             :   /* check for a valid pointer and delete if present */ 
   82396           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   82397             :   /* add assignment to result here */ 
   82398           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   82399             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   82400             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   82401             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   82402           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   82403           0 :      if ( p_attributeMechanism != NULL ) 
   82404             :         { 
   82405           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   82406             :         } 
   82407             :        else 
   82408             :         { 
   82409             :           attributeMechanism_copy = NULL; 
   82410             :         } 
   82411             :   /* check for a valid pointer and delete if present */ 
   82412           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   82413             :   /* add assignment to result here */ 
   82414           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   82415             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   82416             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   82417             :   // case: toBeCopied == COPY_DATA for numeric_label
   82418           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   82419           0 :      result->p_numeric_label = numeric_label_copy; 
   82420             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   82421             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   82422             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   82423           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   82424           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   82425             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   82426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   82427             :   // case: toBeCopied == COPY_DATA for decl_attributes
   82428           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   82429           0 :      result->p_decl_attributes = decl_attributes_copy; 
   82430             :   // Copy non-constructor parameter data member (access function): linkage_copy
   82431             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   82432             :   // case: toBeCopied == COPY_DATA for linkage
   82433           0 :      std::string linkage_copy = p_linkage; 
   82434           0 :      result->p_linkage = linkage_copy; 
   82435             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   82436             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   82437             :   // case: toBeCopied == COPY_DATA for declarationModifier
   82438           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   82439           0 :      result->p_declarationModifier = declarationModifier_copy; 
   82440             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   82441             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   82442             :   // case: toBeCopied == COPY_DATA for nameOnly
   82443           0 :      bool nameOnly_copy = p_nameOnly; 
   82444           0 :      result->p_nameOnly = nameOnly_copy; 
   82445             :   // Copy non-constructor parameter data member (access function): forward_copy
   82446             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   82447             :   // case: toBeCopied == COPY_DATA for forward
   82448           0 :      bool forward_copy = p_forward; 
   82449           0 :      result->p_forward = forward_copy; 
   82450             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   82451             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   82452             :   // case: toBeCopied == COPY_DATA for externBrace
   82453           0 :      bool externBrace_copy = p_externBrace; 
   82454           0 :      result->p_externBrace = externBrace_copy; 
   82455             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   82456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   82457             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   82458           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   82459           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   82460             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   82461             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   82462             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   82463           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   82464           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   82465             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   82466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   82467             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   82468           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   82469           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   82470             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   82471             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   82472             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   82473           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   82474           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   82475             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   82476             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   82477             :   // case: toBeCopied == COPY_DATA for binding_label
   82478           0 :      std::string binding_label_copy = p_binding_label; 
   82479           0 :      result->p_binding_label = binding_label_copy; 
   82480             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   82481             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   82482             :   // case: toBeCopied == COPY_DATA for declarationScope
   82483           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   82484           0 :      result->p_declarationScope = declarationScope_copy; 
   82485             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   82486             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   82487             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   82488           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   82489           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   82490             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   82491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   82492             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   82493           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   82494           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   82495             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   82496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   82497             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   82498           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   82499           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   82500             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   82501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   82502             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   82503           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   82504           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   82505             :   // Copy non-constructor parameter data member (access function): is_inheriting_constructor_copy
   82506             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_inheriting_constructor
   82507             :   // case: toBeCopied == COPY_DATA for is_inheriting_constructor
   82508           0 :      bool is_inheriting_constructor_copy = p_is_inheriting_constructor; 
   82509           0 :      result->p_is_inheriting_constructor = is_inheriting_constructor_copy; 
   82510             : 
   82511             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   82512             : 
   82513             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   82514             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   82515             :   // fixupCopy(result,help);
   82516             : 
   82517             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   82518             :   // the Sg_File_Info objects that are built for the new IR nodes.
   82519           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   82520           0 :      if (locatedNode != NULL)
   82521             :         {
   82522             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   82523           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   82524           0 :           ROSE_ASSERT(start != NULL);
   82525             : #if 0
   82526             :        // Debugging information
   82527             :           if (start->get_parent() == NULL)
   82528             :              {
   82529             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82530             :              }
   82531             : #endif
   82532           0 :           start->set_parent(locatedNode);
   82533           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   82534             : 
   82535           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   82536             : 
   82537             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   82538             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   82539             :        // ROSE_ASSERT(end != NULL);
   82540           0 :           if (end == NULL)
   82541             :              {
   82542           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   82543             :              }
   82544             :             else
   82545             :              {
   82546             : #if 0
   82547             :             // Debugging information
   82548             :                if (end->get_parent() == NULL)
   82549             :                   {
   82550             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82551             :                   }
   82552             : #endif
   82553           0 :                end->set_parent(locatedNode);
   82554           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   82555             :              }
   82556             : 
   82557           0 :           SgExpression* expression = isSgExpression(result);
   82558           0 :           if (isSgExpression(this) != NULL)
   82559             :              {
   82560           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   82561             : 
   82562             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   82563           0 :                if (operatorPosition != NULL)
   82564             :                   {
   82565             : #if 0
   82566             :                  // Debugging information
   82567             :                     if (operatorPosition->get_parent() == NULL)
   82568             :                        {
   82569             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82570             :                        }
   82571             : #endif
   82572           0 :                     operatorPosition->set_parent(expression);
   82573           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   82574             :                   }
   82575             :              }
   82576             :         }
   82577             : 
   82578             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   82579           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   82580           0 :      if (initializedName != NULL)
   82581             :         {
   82582             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   82583           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   82584           0 :           ROSE_ASSERT(start != NULL);
   82585             : #if 0
   82586             :        // Debugging information
   82587             :           if (start->get_parent() == NULL)
   82588             :              {
   82589             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82590             :              }
   82591             : #endif
   82592           0 :           start->set_parent(initializedName);
   82593           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   82594             : 
   82595             : #if 0
   82596             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   82597             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   82598             : 
   82599             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   82600             :        // ROSE_ASSERT(end != NULL);
   82601             :           if (end == NULL)
   82602             :              {
   82603             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   82604             :              }
   82605             :             else
   82606             :              {
   82607             :                if (end->get_parent() == NULL)
   82608             :                   {
   82609             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82610             :                   }
   82611             :                end->set_parent(initializedName);
   82612             :                ROSE_ASSERT(end->get_parent() != NULL);
   82613             :              }
   82614             : #endif
   82615             :         }
   82616             : 
   82617             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   82618           0 :      help.insertCopiedNodePair(this,result);
   82619             : 
   82620             :   // printf ("End of copy SgUsingDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   82621             : 
   82622             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   82623             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   82624           0 :      help.decrementDepth();
   82625             : 
   82626             :   // Test if this is the root of the copy!
   82627           0 :      if (help.get_depth() == 0)
   82628             :         {
   82629             :        // This is the original calling node.
   82630             : 
   82631             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   82632             :        // printf ("Calling SgUsingDeclarationStatement::fixupCopy() (from root of AST being copied) \n");
   82633             : #if ALT_FIXUP_COPY
   82634             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   82635           0 :           fixupCopy_scopes (result,help);
   82636           0 :           fixupCopy_symbols (result,help);
   82637           0 :           fixupCopy_references (result,help);
   82638             : #else
   82639             :           fixupCopy(result,help);
   82640             : #endif
   82641             :        // Allow this to be called recursively, so accumulate the state.
   82642             :        // Also, clear the state in the SgCopyHelp object.
   82643             :        // help.clearState();
   82644             :         }
   82645             : 
   82646           0 :      return result;
   82647             :    }
   82648             : 
   82649             : 
   82650             : /* #line 82651 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   82651             : 
   82652             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   82653             : 
   82654           0 : SgNode* SgNamelistStatement::copy ( SgCopyHelp& help) const
   82655             :    {
   82656           0 :      SgNamelistStatement* result = NULL;
   82657             : 
   82658             :   // printf ("Copy SgNamelistStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   82659             : 
   82660             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   82661             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   82662             :   // The default value of the depth is 0, so after this call the depth is 1!
   82663           0 :      help.incrementDepth();
   82664             : 
   82665             : #if 0
   82666             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   82667             :   // but it is not generally true that things can only be copied once!
   82668             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   82669             :   // AstAttribute* existingAttribute = const_cast<SgNamelistStatement*>(this)->attribute["copied"];
   82670             :      bool previouslyCopied = const_cast<SgNamelistStatement*>(this)->attribute.exists("copied");
   82671             :      if (previouslyCopied == true)
   82672             :         {
   82673             :           this->get_file_info()->display("Called from copy SgNamelistStatement: debug");
   82674             :         }
   82675             :      ROSE_ASSERT(previouslyCopied == false);
   82676             : 
   82677             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   82678             :      AstAttribute* newAttribute = new AstAttribute();
   82679             :      ROSE_ASSERT(newAttribute != NULL);
   82680             : 
   82681             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   82682             :      const_cast<SgNamelistStatement*>(this)->attribute.add("copied",newAttribute);
   82683             : #endif
   82684             : 
   82685             :   // Copy data members from base classes
   82686             :   // Copy constructor parameter data member: startOfConstruct_copy
   82687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   82688             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   82689           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   82690           0 :      if ( p_startOfConstruct != NULL ) 
   82691             :         { 
   82692           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   82693             :         } 
   82694             :        else 
   82695             :         { 
   82696             :           startOfConstruct_copy = NULL; 
   82697             :         } 
   82698             :  
   82699             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   82700             : 
   82701             :   // Build an empty copy of this object (will be filled in, but 
   82702             :   // the parent can't be set and must be set by the caller)
   82703           0 :      result = new SgNamelistStatement(  startOfConstruct_copy );
   82704           0 :      ROSE_ASSERT(result != NULL);
   82705             : 
   82706             :   // Copy data members of "this" class
   82707             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   82708             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   82709             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   82710           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   82711           0 :      if ( p_endOfConstruct != NULL ) 
   82712             :         { 
   82713           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   82714             :         } 
   82715             :        else 
   82716             :         { 
   82717             :           endOfConstruct_copy = NULL; 
   82718             :         } 
   82719             :   /* check for a valid pointer and delete if present */ 
   82720           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   82721             :   /* add assignment to result here */ 
   82722           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   82723             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   82724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   82725             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   82726           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   82727           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   82728             :         { 
   82729           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   82730             :         } 
   82731             :        else 
   82732             :         { 
   82733             :           attachedPreprocessingInfoPtr_copy = NULL; 
   82734             :         } 
   82735             :   /* check for a valid pointer and delete if present */ 
   82736           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   82737             :   /* add assignment to result here */ 
   82738           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   82739             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   82740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   82741             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   82742           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   82743           0 :      if ( p_attributeMechanism != NULL ) 
   82744             :         { 
   82745           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   82746             :         } 
   82747             :        else 
   82748             :         { 
   82749             :           attributeMechanism_copy = NULL; 
   82750             :         } 
   82751             :   /* check for a valid pointer and delete if present */ 
   82752           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   82753             :   /* add assignment to result here */ 
   82754           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   82755             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   82756             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   82757             :   // case: toBeCopied == COPY_DATA for numeric_label
   82758           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   82759           0 :      result->p_numeric_label = numeric_label_copy; 
   82760             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   82761             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   82762             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   82763           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   82764           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   82765             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   82766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   82767             :   // case: toBeCopied == COPY_DATA for decl_attributes
   82768           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   82769           0 :      result->p_decl_attributes = decl_attributes_copy; 
   82770             :   // Copy non-constructor parameter data member (access function): linkage_copy
   82771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   82772             :   // case: toBeCopied == COPY_DATA for linkage
   82773           0 :      std::string linkage_copy = p_linkage; 
   82774           0 :      result->p_linkage = linkage_copy; 
   82775             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   82776             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   82777             :   // case: toBeCopied == COPY_DATA for declarationModifier
   82778           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   82779           0 :      result->p_declarationModifier = declarationModifier_copy; 
   82780             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   82781             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   82782             :   // case: toBeCopied == COPY_DATA for nameOnly
   82783           0 :      bool nameOnly_copy = p_nameOnly; 
   82784           0 :      result->p_nameOnly = nameOnly_copy; 
   82785             :   // Copy non-constructor parameter data member (access function): forward_copy
   82786             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   82787             :   // case: toBeCopied == COPY_DATA for forward
   82788           0 :      bool forward_copy = p_forward; 
   82789           0 :      result->p_forward = forward_copy; 
   82790             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   82791             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   82792             :   // case: toBeCopied == COPY_DATA for externBrace
   82793           0 :      bool externBrace_copy = p_externBrace; 
   82794           0 :      result->p_externBrace = externBrace_copy; 
   82795             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   82796             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   82797             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   82798           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   82799           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   82800             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   82801             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   82802             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   82803           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   82804           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   82805             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   82806             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   82807             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   82808           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   82809           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   82810             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   82811             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   82812             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   82813           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   82814           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   82815             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   82816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   82817             :   // case: toBeCopied == COPY_DATA for binding_label
   82818           0 :      std::string binding_label_copy = p_binding_label; 
   82819           0 :      result->p_binding_label = binding_label_copy; 
   82820             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   82821             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   82822             :   // case: toBeCopied == COPY_DATA for declarationScope
   82823           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   82824           0 :      result->p_declarationScope = declarationScope_copy; 
   82825             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   82826             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   82827             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   82828           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   82829           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   82830             :   // Copy non-constructor parameter data member (no access function): result->p_group_list
   82831             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for group_list
   82832             :   // case: toBeCopied == COPY_DATA for group_list
   82833           0 :      SgNameGroupPtrList group_list_copy = p_group_list; 
   82834           0 :      result->p_group_list = group_list_copy; 
   82835             : 
   82836             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   82837             : 
   82838             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   82839             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   82840             :   // fixupCopy(result,help);
   82841             : 
   82842             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   82843             :   // the Sg_File_Info objects that are built for the new IR nodes.
   82844           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   82845           0 :      if (locatedNode != NULL)
   82846             :         {
   82847             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   82848           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   82849           0 :           ROSE_ASSERT(start != NULL);
   82850             : #if 0
   82851             :        // Debugging information
   82852             :           if (start->get_parent() == NULL)
   82853             :              {
   82854             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82855             :              }
   82856             : #endif
   82857           0 :           start->set_parent(locatedNode);
   82858           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   82859             : 
   82860           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   82861             : 
   82862             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   82863             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   82864             :        // ROSE_ASSERT(end != NULL);
   82865           0 :           if (end == NULL)
   82866             :              {
   82867           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   82868             :              }
   82869             :             else
   82870             :              {
   82871             : #if 0
   82872             :             // Debugging information
   82873             :                if (end->get_parent() == NULL)
   82874             :                   {
   82875             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82876             :                   }
   82877             : #endif
   82878           0 :                end->set_parent(locatedNode);
   82879           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   82880             :              }
   82881             : 
   82882           0 :           SgExpression* expression = isSgExpression(result);
   82883           0 :           if (isSgExpression(this) != NULL)
   82884             :              {
   82885           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   82886             : 
   82887             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   82888           0 :                if (operatorPosition != NULL)
   82889             :                   {
   82890             : #if 0
   82891             :                  // Debugging information
   82892             :                     if (operatorPosition->get_parent() == NULL)
   82893             :                        {
   82894             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82895             :                        }
   82896             : #endif
   82897           0 :                     operatorPosition->set_parent(expression);
   82898           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   82899             :                   }
   82900             :              }
   82901             :         }
   82902             : 
   82903             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   82904           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   82905           0 :      if (initializedName != NULL)
   82906             :         {
   82907             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   82908           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   82909           0 :           ROSE_ASSERT(start != NULL);
   82910             : #if 0
   82911             :        // Debugging information
   82912             :           if (start->get_parent() == NULL)
   82913             :              {
   82914             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82915             :              }
   82916             : #endif
   82917           0 :           start->set_parent(initializedName);
   82918           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   82919             : 
   82920             : #if 0
   82921             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   82922             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   82923             : 
   82924             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   82925             :        // ROSE_ASSERT(end != NULL);
   82926             :           if (end == NULL)
   82927             :              {
   82928             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   82929             :              }
   82930             :             else
   82931             :              {
   82932             :                if (end->get_parent() == NULL)
   82933             :                   {
   82934             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   82935             :                   }
   82936             :                end->set_parent(initializedName);
   82937             :                ROSE_ASSERT(end->get_parent() != NULL);
   82938             :              }
   82939             : #endif
   82940             :         }
   82941             : 
   82942             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   82943           0 :      help.insertCopiedNodePair(this,result);
   82944             : 
   82945             :   // printf ("End of copy SgNamelistStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   82946             : 
   82947             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   82948             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   82949           0 :      help.decrementDepth();
   82950             : 
   82951             :   // Test if this is the root of the copy!
   82952           0 :      if (help.get_depth() == 0)
   82953             :         {
   82954             :        // This is the original calling node.
   82955             : 
   82956             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   82957             :        // printf ("Calling SgNamelistStatement::fixupCopy() (from root of AST being copied) \n");
   82958             : #if ALT_FIXUP_COPY
   82959             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   82960           0 :           fixupCopy_scopes (result,help);
   82961           0 :           fixupCopy_symbols (result,help);
   82962           0 :           fixupCopy_references (result,help);
   82963             : #else
   82964             :           fixupCopy(result,help);
   82965             : #endif
   82966             :        // Allow this to be called recursively, so accumulate the state.
   82967             :        // Also, clear the state in the SgCopyHelp object.
   82968             :        // help.clearState();
   82969             :         }
   82970             : 
   82971           0 :      return result;
   82972             :    }
   82973             : 
   82974             : 
   82975             : /* #line 82976 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   82976             : 
   82977             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   82978             : 
   82979           0 : SgNode* SgImportStatement::copy ( SgCopyHelp& help) const
   82980             :    {
   82981           0 :      SgImportStatement* result = NULL;
   82982             : 
   82983             :   // printf ("Copy SgImportStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   82984             : 
   82985             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   82986             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   82987             :   // The default value of the depth is 0, so after this call the depth is 1!
   82988           0 :      help.incrementDepth();
   82989             : 
   82990             : #if 0
   82991             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   82992             :   // but it is not generally true that things can only be copied once!
   82993             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   82994             :   // AstAttribute* existingAttribute = const_cast<SgImportStatement*>(this)->attribute["copied"];
   82995             :      bool previouslyCopied = const_cast<SgImportStatement*>(this)->attribute.exists("copied");
   82996             :      if (previouslyCopied == true)
   82997             :         {
   82998             :           this->get_file_info()->display("Called from copy SgImportStatement: debug");
   82999             :         }
   83000             :      ROSE_ASSERT(previouslyCopied == false);
   83001             : 
   83002             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   83003             :      AstAttribute* newAttribute = new AstAttribute();
   83004             :      ROSE_ASSERT(newAttribute != NULL);
   83005             : 
   83006             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   83007             :      const_cast<SgImportStatement*>(this)->attribute.add("copied",newAttribute);
   83008             : #endif
   83009             : 
   83010             :   // Copy data members from base classes
   83011             :   // Copy constructor parameter data member: startOfConstruct_copy
   83012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   83013             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   83014           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   83015           0 :      if ( p_startOfConstruct != NULL ) 
   83016             :         { 
   83017           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   83018             :         } 
   83019             :        else 
   83020             :         { 
   83021             :           startOfConstruct_copy = NULL; 
   83022             :         } 
   83023             :  
   83024             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   83025             : 
   83026             :   // Build an empty copy of this object (will be filled in, but 
   83027             :   // the parent can't be set and must be set by the caller)
   83028           0 :      result = new SgImportStatement(  startOfConstruct_copy );
   83029           0 :      ROSE_ASSERT(result != NULL);
   83030             : 
   83031             :   // Copy data members of "this" class
   83032             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   83033             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   83034             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   83035           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   83036           0 :      if ( p_endOfConstruct != NULL ) 
   83037             :         { 
   83038           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   83039             :         } 
   83040             :        else 
   83041             :         { 
   83042             :           endOfConstruct_copy = NULL; 
   83043             :         } 
   83044             :   /* check for a valid pointer and delete if present */ 
   83045           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   83046             :   /* add assignment to result here */ 
   83047           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   83048             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   83049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   83050             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   83051           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   83052           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   83053             :         { 
   83054           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   83055             :         } 
   83056             :        else 
   83057             :         { 
   83058             :           attachedPreprocessingInfoPtr_copy = NULL; 
   83059             :         } 
   83060             :   /* check for a valid pointer and delete if present */ 
   83061           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   83062             :   /* add assignment to result here */ 
   83063           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   83064             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   83065             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   83066             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   83067           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   83068           0 :      if ( p_attributeMechanism != NULL ) 
   83069             :         { 
   83070           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   83071             :         } 
   83072             :        else 
   83073             :         { 
   83074             :           attributeMechanism_copy = NULL; 
   83075             :         } 
   83076             :   /* check for a valid pointer and delete if present */ 
   83077           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   83078             :   /* add assignment to result here */ 
   83079           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   83080             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   83081             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   83082             :   // case: toBeCopied == COPY_DATA for numeric_label
   83083           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   83084           0 :      result->p_numeric_label = numeric_label_copy; 
   83085             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   83086             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   83087             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   83088           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   83089           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   83090             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   83091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   83092             :   // case: toBeCopied == COPY_DATA for decl_attributes
   83093           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   83094           0 :      result->p_decl_attributes = decl_attributes_copy; 
   83095             :   // Copy non-constructor parameter data member (access function): linkage_copy
   83096             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   83097             :   // case: toBeCopied == COPY_DATA for linkage
   83098           0 :      std::string linkage_copy = p_linkage; 
   83099           0 :      result->p_linkage = linkage_copy; 
   83100             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   83101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   83102             :   // case: toBeCopied == COPY_DATA for declarationModifier
   83103           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   83104           0 :      result->p_declarationModifier = declarationModifier_copy; 
   83105             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   83106             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   83107             :   // case: toBeCopied == COPY_DATA for nameOnly
   83108           0 :      bool nameOnly_copy = p_nameOnly; 
   83109           0 :      result->p_nameOnly = nameOnly_copy; 
   83110             :   // Copy non-constructor parameter data member (access function): forward_copy
   83111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   83112             :   // case: toBeCopied == COPY_DATA for forward
   83113           0 :      bool forward_copy = p_forward; 
   83114           0 :      result->p_forward = forward_copy; 
   83115             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   83116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   83117             :   // case: toBeCopied == COPY_DATA for externBrace
   83118           0 :      bool externBrace_copy = p_externBrace; 
   83119           0 :      result->p_externBrace = externBrace_copy; 
   83120             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   83121             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   83122             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   83123           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   83124           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   83125             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   83126             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   83127             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   83128           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   83129           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   83130             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   83131             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   83132             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   83133           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   83134           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   83135             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   83136             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   83137             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   83138           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   83139           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   83140             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   83141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   83142             :   // case: toBeCopied == COPY_DATA for binding_label
   83143           0 :      std::string binding_label_copy = p_binding_label; 
   83144           0 :      result->p_binding_label = binding_label_copy; 
   83145             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   83146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   83147             :   // case: toBeCopied == COPY_DATA for declarationScope
   83148           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   83149           0 :      result->p_declarationScope = declarationScope_copy; 
   83150             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   83151             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   83152             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   83153           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   83154           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   83155             :   // Copy non-constructor parameter data member (no access function): result->p_import_list
   83156             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for import_list
   83157             :   // case: toBeCopied == COPY_DATA for import_list
   83158           0 :      SgExpressionPtrList import_list_copy = p_import_list; 
   83159           0 :      result->p_import_list = import_list_copy; 
   83160             : 
   83161             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   83162             : 
   83163             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   83164             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   83165             :   // fixupCopy(result,help);
   83166             : 
   83167             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   83168             :   // the Sg_File_Info objects that are built for the new IR nodes.
   83169           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   83170           0 :      if (locatedNode != NULL)
   83171             :         {
   83172             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   83173           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   83174           0 :           ROSE_ASSERT(start != NULL);
   83175             : #if 0
   83176             :        // Debugging information
   83177             :           if (start->get_parent() == NULL)
   83178             :              {
   83179             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83180             :              }
   83181             : #endif
   83182           0 :           start->set_parent(locatedNode);
   83183           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   83184             : 
   83185           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   83186             : 
   83187             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   83188             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   83189             :        // ROSE_ASSERT(end != NULL);
   83190           0 :           if (end == NULL)
   83191             :              {
   83192           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   83193             :              }
   83194             :             else
   83195             :              {
   83196             : #if 0
   83197             :             // Debugging information
   83198             :                if (end->get_parent() == NULL)
   83199             :                   {
   83200             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83201             :                   }
   83202             : #endif
   83203           0 :                end->set_parent(locatedNode);
   83204           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   83205             :              }
   83206             : 
   83207           0 :           SgExpression* expression = isSgExpression(result);
   83208           0 :           if (isSgExpression(this) != NULL)
   83209             :              {
   83210           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   83211             : 
   83212             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   83213           0 :                if (operatorPosition != NULL)
   83214             :                   {
   83215             : #if 0
   83216             :                  // Debugging information
   83217             :                     if (operatorPosition->get_parent() == NULL)
   83218             :                        {
   83219             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83220             :                        }
   83221             : #endif
   83222           0 :                     operatorPosition->set_parent(expression);
   83223           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   83224             :                   }
   83225             :              }
   83226             :         }
   83227             : 
   83228             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   83229           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   83230           0 :      if (initializedName != NULL)
   83231             :         {
   83232             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   83233           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   83234           0 :           ROSE_ASSERT(start != NULL);
   83235             : #if 0
   83236             :        // Debugging information
   83237             :           if (start->get_parent() == NULL)
   83238             :              {
   83239             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83240             :              }
   83241             : #endif
   83242           0 :           start->set_parent(initializedName);
   83243           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   83244             : 
   83245             : #if 0
   83246             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   83247             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   83248             : 
   83249             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   83250             :        // ROSE_ASSERT(end != NULL);
   83251             :           if (end == NULL)
   83252             :              {
   83253             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   83254             :              }
   83255             :             else
   83256             :              {
   83257             :                if (end->get_parent() == NULL)
   83258             :                   {
   83259             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83260             :                   }
   83261             :                end->set_parent(initializedName);
   83262             :                ROSE_ASSERT(end->get_parent() != NULL);
   83263             :              }
   83264             : #endif
   83265             :         }
   83266             : 
   83267             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   83268           0 :      help.insertCopiedNodePair(this,result);
   83269             : 
   83270             :   // printf ("End of copy SgImportStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   83271             : 
   83272             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   83273             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   83274           0 :      help.decrementDepth();
   83275             : 
   83276             :   // Test if this is the root of the copy!
   83277           0 :      if (help.get_depth() == 0)
   83278             :         {
   83279             :        // This is the original calling node.
   83280             : 
   83281             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   83282             :        // printf ("Calling SgImportStatement::fixupCopy() (from root of AST being copied) \n");
   83283             : #if ALT_FIXUP_COPY
   83284             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   83285           0 :           fixupCopy_scopes (result,help);
   83286           0 :           fixupCopy_symbols (result,help);
   83287           0 :           fixupCopy_references (result,help);
   83288             : #else
   83289             :           fixupCopy(result,help);
   83290             : #endif
   83291             :        // Allow this to be called recursively, so accumulate the state.
   83292             :        // Also, clear the state in the SgCopyHelp object.
   83293             :        // help.clearState();
   83294             :         }
   83295             : 
   83296           0 :      return result;
   83297             :    }
   83298             : 
   83299             : 
   83300             : /* #line 83301 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   83301             : 
   83302             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   83303             : 
   83304           5 : SgNode* SgFunctionDeclaration::copy ( SgCopyHelp& help) const
   83305             :    {
   83306           5 :      SgFunctionDeclaration* result = NULL;
   83307             : 
   83308             :   // printf ("Copy SgFunctionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   83309             : 
   83310             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   83311             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   83312             :   // The default value of the depth is 0, so after this call the depth is 1!
   83313           5 :      help.incrementDepth();
   83314             : 
   83315             : #if 0
   83316             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   83317             :   // but it is not generally true that things can only be copied once!
   83318             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   83319             :   // AstAttribute* existingAttribute = const_cast<SgFunctionDeclaration*>(this)->attribute["copied"];
   83320             :      bool previouslyCopied = const_cast<SgFunctionDeclaration*>(this)->attribute.exists("copied");
   83321             :      if (previouslyCopied == true)
   83322             :         {
   83323             :           this->get_file_info()->display("Called from copy SgFunctionDeclaration: debug");
   83324             :         }
   83325             :      ROSE_ASSERT(previouslyCopied == false);
   83326             : 
   83327             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   83328             :      AstAttribute* newAttribute = new AstAttribute();
   83329             :      ROSE_ASSERT(newAttribute != NULL);
   83330             : 
   83331             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   83332             :      const_cast<SgFunctionDeclaration*>(this)->attribute.add("copied",newAttribute);
   83333             : #endif
   83334             : 
   83335             :   // Copy data members from base classes
   83336             :   // Copy constructor parameter data member: startOfConstruct_copy
   83337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   83338             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   83339           5 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   83340           5 :      if ( p_startOfConstruct != NULL ) 
   83341             :         { 
   83342           5 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   83343             :         } 
   83344             :        else 
   83345             :         { 
   83346             :           startOfConstruct_copy = NULL; 
   83347             :         } 
   83348             :   // Copy constructor parameter data member: name_copy
   83349             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   83350             :   // case: toBeCopied == COPY_DATA for name
   83351           5 :      SgName name_copy = p_name; 
   83352             :   // Copy constructor parameter data member: type_copy
   83353             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   83354             :   // case: toBeCopied == COPY_DATA for type
   83355           5 :      SgFunctionType* type_copy = p_type; 
   83356             :   // Copy constructor parameter data member: definition_copy
   83357           5 :      SgFunctionDefinition* definition_copy; 
   83358             :   // case: not a listType for (using conditionalToCopyVariable)definition
   83359           5 :           if (get_definition() != NULL) 
   83360             :              { 
   83361           2 :                definition_copy = static_cast<SgFunctionDefinition*>(help.copyAst(get_definition())); 
   83362             :              } 
   83363             :             else 
   83364             :              { 
   83365             :                definition_copy = NULL; 
   83366             :              } 
   83367             :  
   83368             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   83369             : 
   83370             :   // Build an empty copy of this object (will be filled in, but 
   83371             :   // the parent can't be set and must be set by the caller)
   83372           5 :      result = new SgFunctionDeclaration(  startOfConstruct_copy, name_copy, type_copy, definition_copy );
   83373           5 :      ROSE_ASSERT(result != NULL);
   83374             : 
   83375             :   // Copy data members of "this" class
   83376             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   83377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   83378             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   83379           5 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   83380           5 :      if ( p_endOfConstruct != NULL ) 
   83381             :         { 
   83382           5 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   83383             :         } 
   83384             :        else 
   83385             :         { 
   83386             :           endOfConstruct_copy = NULL; 
   83387             :         } 
   83388             :   /* check for a valid pointer and delete if present */ 
   83389           5 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   83390             :   /* add assignment to result here */ 
   83391           5 :      result->p_endOfConstruct = endOfConstruct_copy; 
   83392             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   83393             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   83394             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   83395           5 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   83396           5 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   83397             :         { 
   83398           3 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   83399             :         } 
   83400             :        else 
   83401             :         { 
   83402             :           attachedPreprocessingInfoPtr_copy = NULL; 
   83403             :         } 
   83404             :   /* check for a valid pointer and delete if present */ 
   83405           5 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   83406             :   /* add assignment to result here */ 
   83407           5 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   83408             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   83409             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   83410             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   83411           5 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   83412           5 :      if ( p_attributeMechanism != NULL ) 
   83413             :         { 
   83414           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   83415             :         } 
   83416             :        else 
   83417             :         { 
   83418             :           attributeMechanism_copy = NULL; 
   83419             :         } 
   83420             :   /* check for a valid pointer and delete if present */ 
   83421           5 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   83422             :   /* add assignment to result here */ 
   83423           5 :      result->p_attributeMechanism = attributeMechanism_copy; 
   83424             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   83425             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   83426             :   // case: toBeCopied == COPY_DATA for numeric_label
   83427           5 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   83428           5 :      result->p_numeric_label = numeric_label_copy; 
   83429             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   83430             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   83431             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   83432           5 :      int source_sequence_value_copy = p_source_sequence_value; 
   83433           5 :      result->p_source_sequence_value = source_sequence_value_copy; 
   83434             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   83435             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   83436             :   // case: toBeCopied == COPY_DATA for decl_attributes
   83437           5 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   83438           5 :      result->p_decl_attributes = decl_attributes_copy; 
   83439             :   // Copy non-constructor parameter data member (access function): linkage_copy
   83440             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   83441             :   // case: toBeCopied == COPY_DATA for linkage
   83442          10 :      std::string linkage_copy = p_linkage; 
   83443           5 :      result->p_linkage = linkage_copy; 
   83444             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   83445             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   83446             :   // case: toBeCopied == COPY_DATA for declarationModifier
   83447          10 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   83448           5 :      result->p_declarationModifier = declarationModifier_copy; 
   83449             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   83450             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   83451             :   // case: toBeCopied == COPY_DATA for nameOnly
   83452           5 :      bool nameOnly_copy = p_nameOnly; 
   83453           5 :      result->p_nameOnly = nameOnly_copy; 
   83454             :   // Copy non-constructor parameter data member (access function): forward_copy
   83455             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   83456             :   // case: toBeCopied == COPY_DATA for forward
   83457           5 :      bool forward_copy = p_forward; 
   83458           5 :      result->p_forward = forward_copy; 
   83459             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   83460             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   83461             :   // case: toBeCopied == COPY_DATA for externBrace
   83462           5 :      bool externBrace_copy = p_externBrace; 
   83463           5 :      result->p_externBrace = externBrace_copy; 
   83464             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   83465             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   83466             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   83467           5 :      bool skipElaborateType_copy = p_skipElaborateType; 
   83468           5 :      result->p_skipElaborateType = skipElaborateType_copy; 
   83469             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   83470             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   83471             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   83472           5 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   83473           5 :      result->p_definingDeclaration = definingDeclaration_copy; 
   83474             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   83475             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   83476             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   83477           5 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   83478           5 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   83479             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   83480             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   83481             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   83482          10 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   83483           5 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   83484             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   83485             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   83486             :   // case: toBeCopied == COPY_DATA for binding_label
   83487          10 :      std::string binding_label_copy = p_binding_label; 
   83488           5 :      result->p_binding_label = binding_label_copy; 
   83489             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   83490             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   83491             :   // case: toBeCopied == COPY_DATA for declarationScope
   83492           5 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   83493           5 :      result->p_declarationScope = declarationScope_copy; 
   83494             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   83495             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   83496             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   83497           5 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   83498           5 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   83499             :   // Copy non-constructor parameter data member (access function): parameterList_copy
   83500           5 :      SgFunctionParameterList* parameterList_copy; 
   83501             :   // case: not a listType for (using conditionalToCopyVariable)parameterList
   83502           5 :           if (get_parameterList() != NULL) 
   83503             :              { 
   83504           5 :                parameterList_copy = static_cast<SgFunctionParameterList*>(help.copyAst(get_parameterList())); 
   83505             :              } 
   83506             :             else 
   83507             :              { 
   83508             :                parameterList_copy = NULL; 
   83509             :              } 
   83510             :   /* check for a valid pointer and delete if present */ 
   83511           5 :      if (result->p_parameterList != NULL) delete result->p_parameterList; 
   83512           5 :      result->p_parameterList = parameterList_copy; 
   83513             :   // case: not a listType for (using conditionalToSetParent)parameterList
   83514           5 :           if ( (parameterList_copy != NULL) && (parameterList_copy->get_parent() == NULL) && (isSgType(parameterList_copy) == NULL) ) 
   83515             :              { 
   83516           5 :                parameterList_copy->set_parent(result); 
   83517             :              } 
   83518             :   // Copy non-constructor parameter data member (list access function): result->get_functionModifier()
   83519             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionModifier
   83520             :   // case: toBeCopied == COPY_DATA for functionModifier
   83521          10 :      SgFunctionModifier functionModifier_copy = p_functionModifier; 
   83522           5 :      result->p_functionModifier = functionModifier_copy; 
   83523             :   // Copy non-constructor parameter data member (list access function): result->get_specialFunctionModifier()
   83524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialFunctionModifier
   83525             :   // case: toBeCopied == COPY_DATA for specialFunctionModifier
   83526           5 :      SgSpecialFunctionModifier specialFunctionModifier_copy = p_specialFunctionModifier; 
   83527           5 :      result->p_specialFunctionModifier = specialFunctionModifier_copy; 
   83528             :   // Copy non-constructor parameter data member (access function): exceptionSpecification_copy
   83529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exceptionSpecification
   83530             :   // case: toBeCopied == COPY_DATA for exceptionSpecification
   83531          10 :      SgTypePtrList exceptionSpecification_copy = p_exceptionSpecification; 
   83532           5 :      result->p_exceptionSpecification = exceptionSpecification_copy; 
   83533             :   // Copy non-constructor parameter data member (access function): named_in_end_statement_copy
   83534             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named_in_end_statement
   83535             :   // case: toBeCopied == COPY_DATA for named_in_end_statement
   83536           5 :      bool named_in_end_statement_copy = p_named_in_end_statement; 
   83537           5 :      result->p_named_in_end_statement = named_in_end_statement_copy; 
   83538             :   // Copy non-constructor parameter data member (access function): asm_name_copy
   83539             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_name
   83540             :   // case: toBeCopied == COPY_DATA for asm_name
   83541          10 :      std::string asm_name_copy = p_asm_name; 
   83542           5 :      result->p_asm_name = asm_name_copy; 
   83543             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   83544           5 :      SgExprListExp* decoratorList_copy; 
   83545             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   83546           5 :           if (get_decoratorList() != NULL) 
   83547             :              { 
   83548           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   83549             :              } 
   83550             :             else 
   83551             :              { 
   83552             :                decoratorList_copy = NULL; 
   83553             :              } 
   83554             :   /* check for a valid pointer and delete if present */ 
   83555           5 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   83556           5 :      result->p_decoratorList = decoratorList_copy; 
   83557             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   83558           5 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   83559             :              { 
   83560           0 :                decoratorList_copy->set_parent(result); 
   83561             :              } 
   83562             :   // Copy non-constructor parameter data member (access function): ada_formal_subprogram_decl_copy
   83563             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ada_formal_subprogram_decl
   83564             :   // case: toBeCopied == COPY_DATA for ada_formal_subprogram_decl
   83565           5 :      bool ada_formal_subprogram_decl_copy = p_ada_formal_subprogram_decl; 
   83566           5 :      result->p_ada_formal_subprogram_decl = ada_formal_subprogram_decl_copy; 
   83567             :   // Copy non-constructor parameter data member (access function): oldStyleDefinition_copy
   83568             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for oldStyleDefinition
   83569             :   // case: toBeCopied == COPY_DATA for oldStyleDefinition
   83570           5 :      bool oldStyleDefinition_copy = p_oldStyleDefinition; 
   83571           5 :      result->p_oldStyleDefinition = oldStyleDefinition_copy; 
   83572             :   // Copy non-constructor parameter data member (access function): scope_copy
   83573             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   83574             :   // case: toBeCopied == COPY_DATA for scope
   83575           5 :      SgScopeStatement* scope_copy = p_scope; 
   83576           5 :      result->p_scope = scope_copy; 
   83577             :   // Copy non-constructor parameter data member (access function): specialization_copy
   83578             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   83579             :   // case: toBeCopied == COPY_DATA for specialization
   83580           5 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   83581           5 :      result->p_specialization = specialization_copy; 
   83582             :   // Copy non-constructor parameter data member (no access function): result->p_requiresNameQualificationOnReturnType
   83583             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualificationOnReturnType
   83584             :   // case: toBeCopied == COPY_DATA for requiresNameQualificationOnReturnType
   83585           5 :      bool requiresNameQualificationOnReturnType_copy = p_requiresNameQualificationOnReturnType; 
   83586           5 :      result->p_requiresNameQualificationOnReturnType = requiresNameQualificationOnReturnType_copy; 
   83587             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   83588             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   83589             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   83590          10 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   83591           5 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   83592             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   83593             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   83594             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   83595          10 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   83596           5 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   83597             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   83598             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   83599             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   83600           5 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   83601           5 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   83602             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   83603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   83604             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   83605           5 :      int name_qualification_length_copy = p_name_qualification_length; 
   83606           5 :      result->p_name_qualification_length = name_qualification_length_copy; 
   83607             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   83608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   83609             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   83610           5 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   83611           5 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   83612             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   83613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   83614             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   83615           5 :      bool global_qualification_required_copy = p_global_qualification_required; 
   83616           5 :      result->p_global_qualification_required = global_qualification_required_copy; 
   83617             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_return_type
   83618             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_return_type
   83619             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_return_type
   83620           5 :      int name_qualification_length_for_return_type_copy = p_name_qualification_length_for_return_type; 
   83621           5 :      result->p_name_qualification_length_for_return_type = name_qualification_length_for_return_type_copy; 
   83622             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_return_type
   83623             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_return_type
   83624             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_return_type
   83625           5 :      bool type_elaboration_required_for_return_type_copy = p_type_elaboration_required_for_return_type; 
   83626           5 :      result->p_type_elaboration_required_for_return_type = type_elaboration_required_for_return_type_copy; 
   83627             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_return_type
   83628             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_return_type
   83629             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_return_type
   83630           5 :      bool global_qualification_required_for_return_type_copy = p_global_qualification_required_for_return_type; 
   83631           5 :      result->p_global_qualification_required_for_return_type = global_qualification_required_for_return_type_copy; 
   83632             :   // Copy non-constructor parameter data member (access function): prototypeIsWithoutParameters_copy
   83633             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prototypeIsWithoutParameters
   83634             :   // case: toBeCopied == COPY_DATA for prototypeIsWithoutParameters
   83635           5 :      bool prototypeIsWithoutParameters_copy = p_prototypeIsWithoutParameters; 
   83636           5 :      result->p_prototypeIsWithoutParameters = prototypeIsWithoutParameters_copy; 
   83637             :   // Copy non-constructor parameter data member (access function): gnu_regparm_attribute_copy
   83638             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_regparm_attribute
   83639             :   // case: toBeCopied == COPY_DATA for gnu_regparm_attribute
   83640           5 :      int gnu_regparm_attribute_copy = p_gnu_regparm_attribute; 
   83641           5 :      result->p_gnu_regparm_attribute = gnu_regparm_attribute_copy; 
   83642             :   // Copy non-constructor parameter data member (access function): type_syntax_copy
   83643             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax
   83644             :   // case: toBeCopied == COPY_DATA for type_syntax
   83645           5 :      SgFunctionType* type_syntax_copy = p_type_syntax; 
   83646           5 :      result->p_type_syntax = type_syntax_copy; 
   83647             :   // Copy non-constructor parameter data member (access function): type_syntax_is_available_copy
   83648             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax_is_available
   83649             :   // case: toBeCopied == COPY_DATA for type_syntax_is_available
   83650           5 :      bool type_syntax_is_available_copy = p_type_syntax_is_available; 
   83651           5 :      result->p_type_syntax_is_available = type_syntax_is_available_copy; 
   83652             :   // Copy non-constructor parameter data member (access function): parameterList_syntax_copy
   83653             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterList_syntax
   83654             :   // case: toBeCopied == COPY_DATA for parameterList_syntax
   83655           5 :      SgFunctionParameterList* parameterList_syntax_copy = p_parameterList_syntax; 
   83656           5 :      result->p_parameterList_syntax = parameterList_syntax_copy; 
   83657             :   // Copy non-constructor parameter data member (access function): using_C11_Noreturn_keyword_copy
   83658             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Noreturn_keyword
   83659             :   // case: toBeCopied == COPY_DATA for using_C11_Noreturn_keyword
   83660           5 :      bool using_C11_Noreturn_keyword_copy = p_using_C11_Noreturn_keyword; 
   83661           5 :      result->p_using_C11_Noreturn_keyword = using_C11_Noreturn_keyword_copy; 
   83662             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   83663             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   83664             :   // case: toBeCopied == COPY_DATA for is_constexpr
   83665           5 :      bool is_constexpr_copy = p_is_constexpr; 
   83666           5 :      result->p_is_constexpr = is_constexpr_copy; 
   83667             :   // Copy non-constructor parameter data member (access function): using_new_function_return_type_syntax_copy
   83668             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_new_function_return_type_syntax
   83669             :   // case: toBeCopied == COPY_DATA for using_new_function_return_type_syntax
   83670           5 :      bool using_new_function_return_type_syntax_copy = p_using_new_function_return_type_syntax; 
   83671           5 :      result->p_using_new_function_return_type_syntax = using_new_function_return_type_syntax_copy; 
   83672             :   // Copy non-constructor parameter data member (access function): functionParameterScope_copy
   83673             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionParameterScope
   83674             :   // case: toBeCopied == COPY_DATA for functionParameterScope
   83675           5 :      SgFunctionParameterScope* functionParameterScope_copy = p_functionParameterScope; 
   83676           5 :      result->p_functionParameterScope = functionParameterScope_copy; 
   83677             :   // Copy non-constructor parameter data member (access function): marked_as_edg_normalization_copy
   83678             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for marked_as_edg_normalization
   83679             :   // case: toBeCopied == COPY_DATA for marked_as_edg_normalization
   83680           5 :      bool marked_as_edg_normalization_copy = p_marked_as_edg_normalization; 
   83681           5 :      result->p_marked_as_edg_normalization = marked_as_edg_normalization_copy; 
   83682             :   // Copy non-constructor parameter data member (access function): is_implicit_function_copy
   83683             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_implicit_function
   83684             :   // case: toBeCopied == COPY_DATA for is_implicit_function
   83685           5 :      bool is_implicit_function_copy = p_is_implicit_function; 
   83686           5 :      result->p_is_implicit_function = is_implicit_function_copy; 
   83687             :   // case: not a listType for (using conditionalToSetParent)definition
   83688           5 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   83689             :              { 
   83690           2 :                definition_copy->set_parent(result); 
   83691             :              } 
   83692             : 
   83693             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   83694             : 
   83695             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   83696             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   83697             :   // fixupCopy(result,help);
   83698             : 
   83699             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   83700             :   // the Sg_File_Info objects that are built for the new IR nodes.
   83701           5 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   83702           5 :      if (locatedNode != NULL)
   83703             :         {
   83704             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   83705           5 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   83706           5 :           ROSE_ASSERT(start != NULL);
   83707             : #if 0
   83708             :        // Debugging information
   83709             :           if (start->get_parent() == NULL)
   83710             :              {
   83711             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83712             :              }
   83713             : #endif
   83714           5 :           start->set_parent(locatedNode);
   83715           5 :           ROSE_ASSERT(start->get_parent() != NULL);
   83716             : 
   83717           5 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   83718             : 
   83719             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   83720             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   83721             :        // ROSE_ASSERT(end != NULL);
   83722           5 :           if (end == NULL)
   83723             :              {
   83724           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   83725             :              }
   83726             :             else
   83727             :              {
   83728             : #if 0
   83729             :             // Debugging information
   83730             :                if (end->get_parent() == NULL)
   83731             :                   {
   83732             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83733             :                   }
   83734             : #endif
   83735           5 :                end->set_parent(locatedNode);
   83736           5 :                ROSE_ASSERT(end->get_parent() != NULL);
   83737             :              }
   83738             : 
   83739           5 :           SgExpression* expression = isSgExpression(result);
   83740           5 :           if (isSgExpression(this) != NULL)
   83741             :              {
   83742           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   83743             : 
   83744             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   83745           0 :                if (operatorPosition != NULL)
   83746             :                   {
   83747             : #if 0
   83748             :                  // Debugging information
   83749             :                     if (operatorPosition->get_parent() == NULL)
   83750             :                        {
   83751             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83752             :                        }
   83753             : #endif
   83754           0 :                     operatorPosition->set_parent(expression);
   83755           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   83756             :                   }
   83757             :              }
   83758             :         }
   83759             : 
   83760             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   83761           5 :      SgInitializedName* initializedName = isSgInitializedName(result);
   83762           5 :      if (initializedName != NULL)
   83763             :         {
   83764             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   83765           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   83766           0 :           ROSE_ASSERT(start != NULL);
   83767             : #if 0
   83768             :        // Debugging information
   83769             :           if (start->get_parent() == NULL)
   83770             :              {
   83771             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83772             :              }
   83773             : #endif
   83774           0 :           start->set_parent(initializedName);
   83775           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   83776             : 
   83777             : #if 0
   83778             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   83779             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   83780             : 
   83781             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   83782             :        // ROSE_ASSERT(end != NULL);
   83783             :           if (end == NULL)
   83784             :              {
   83785             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   83786             :              }
   83787             :             else
   83788             :              {
   83789             :                if (end->get_parent() == NULL)
   83790             :                   {
   83791             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   83792             :                   }
   83793             :                end->set_parent(initializedName);
   83794             :                ROSE_ASSERT(end->get_parent() != NULL);
   83795             :              }
   83796             : #endif
   83797             :         }
   83798             : 
   83799             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   83800           5 :      help.insertCopiedNodePair(this,result);
   83801             : 
   83802             :   // printf ("End of copy SgFunctionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   83803             : 
   83804             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   83805             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   83806           5 :      help.decrementDepth();
   83807             : 
   83808             :   // Test if this is the root of the copy!
   83809           5 :      if (help.get_depth() == 0)
   83810             :         {
   83811             :        // This is the original calling node.
   83812             : 
   83813             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   83814             :        // printf ("Calling SgFunctionDeclaration::fixupCopy() (from root of AST being copied) \n");
   83815             : #if ALT_FIXUP_COPY
   83816             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   83817           5 :           fixupCopy_scopes (result,help);
   83818           5 :           fixupCopy_symbols (result,help);
   83819           5 :           fixupCopy_references (result,help);
   83820             : #else
   83821             :           fixupCopy(result,help);
   83822             : #endif
   83823             :        // Allow this to be called recursively, so accumulate the state.
   83824             :        // Also, clear the state in the SgCopyHelp object.
   83825             :        // help.clearState();
   83826             :         }
   83827             : 
   83828          10 :      return result;
   83829             :    }
   83830             : 
   83831             : 
   83832             : /* #line 83833 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   83833             : 
   83834             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   83835             : 
   83836           0 : SgNode* SgTemplateFunctionDeclaration::copy ( SgCopyHelp& help) const
   83837             :    {
   83838           0 :      SgTemplateFunctionDeclaration* result = NULL;
   83839             : 
   83840             :   // printf ("Copy SgTemplateFunctionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   83841             : 
   83842             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   83843             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   83844             :   // The default value of the depth is 0, so after this call the depth is 1!
   83845           0 :      help.incrementDepth();
   83846             : 
   83847             : #if 0
   83848             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   83849             :   // but it is not generally true that things can only be copied once!
   83850             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   83851             :   // AstAttribute* existingAttribute = const_cast<SgTemplateFunctionDeclaration*>(this)->attribute["copied"];
   83852             :      bool previouslyCopied = const_cast<SgTemplateFunctionDeclaration*>(this)->attribute.exists("copied");
   83853             :      if (previouslyCopied == true)
   83854             :         {
   83855             :           this->get_file_info()->display("Called from copy SgTemplateFunctionDeclaration: debug");
   83856             :         }
   83857             :      ROSE_ASSERT(previouslyCopied == false);
   83858             : 
   83859             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   83860             :      AstAttribute* newAttribute = new AstAttribute();
   83861             :      ROSE_ASSERT(newAttribute != NULL);
   83862             : 
   83863             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   83864             :      const_cast<SgTemplateFunctionDeclaration*>(this)->attribute.add("copied",newAttribute);
   83865             : #endif
   83866             : 
   83867             :   // Copy data members from base classes
   83868             :   // Copy constructor parameter data member: startOfConstruct_copy
   83869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   83870             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   83871           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   83872           0 :      if ( p_startOfConstruct != NULL ) 
   83873             :         { 
   83874           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   83875             :         } 
   83876             :        else 
   83877             :         { 
   83878             :           startOfConstruct_copy = NULL; 
   83879             :         } 
   83880             :   // Copy constructor parameter data member: name_copy
   83881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   83882             :   // case: toBeCopied == COPY_DATA for name
   83883           0 :      SgName name_copy = p_name; 
   83884             :   // Copy constructor parameter data member: type_copy
   83885             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   83886             :   // case: toBeCopied == COPY_DATA for type
   83887           0 :      SgFunctionType* type_copy = p_type; 
   83888             :   // Copy constructor parameter data member: definition_copy
   83889           0 :      SgFunctionDefinition* definition_copy; 
   83890             :   // case: not a listType for (using conditionalToCopyVariable)definition
   83891           0 :           if (get_definition() != NULL) 
   83892             :              { 
   83893           0 :                definition_copy = static_cast<SgFunctionDefinition*>(help.copyAst(get_definition())); 
   83894             :              } 
   83895             :             else 
   83896             :              { 
   83897             :                definition_copy = NULL; 
   83898             :              } 
   83899             :  
   83900             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   83901             : 
   83902             :   // Build an empty copy of this object (will be filled in, but 
   83903             :   // the parent can't be set and must be set by the caller)
   83904           0 :      result = new SgTemplateFunctionDeclaration(  startOfConstruct_copy, name_copy, type_copy, definition_copy );
   83905           0 :      ROSE_ASSERT(result != NULL);
   83906             : 
   83907             :   // Copy data members of "this" class
   83908             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   83909             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   83910             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   83911           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   83912           0 :      if ( p_endOfConstruct != NULL ) 
   83913             :         { 
   83914           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   83915             :         } 
   83916             :        else 
   83917             :         { 
   83918             :           endOfConstruct_copy = NULL; 
   83919             :         } 
   83920             :   /* check for a valid pointer and delete if present */ 
   83921           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   83922             :   /* add assignment to result here */ 
   83923           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   83924             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   83925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   83926             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   83927           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   83928           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   83929             :         { 
   83930           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   83931             :         } 
   83932             :        else 
   83933             :         { 
   83934             :           attachedPreprocessingInfoPtr_copy = NULL; 
   83935             :         } 
   83936             :   /* check for a valid pointer and delete if present */ 
   83937           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   83938             :   /* add assignment to result here */ 
   83939           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   83940             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   83941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   83942             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   83943           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   83944           0 :      if ( p_attributeMechanism != NULL ) 
   83945             :         { 
   83946           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   83947             :         } 
   83948             :        else 
   83949             :         { 
   83950             :           attributeMechanism_copy = NULL; 
   83951             :         } 
   83952             :   /* check for a valid pointer and delete if present */ 
   83953           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   83954             :   /* add assignment to result here */ 
   83955           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   83956             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   83957             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   83958             :   // case: toBeCopied == COPY_DATA for numeric_label
   83959           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   83960           0 :      result->p_numeric_label = numeric_label_copy; 
   83961             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   83962             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   83963             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   83964           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   83965           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   83966             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   83967             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   83968             :   // case: toBeCopied == COPY_DATA for decl_attributes
   83969           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   83970           0 :      result->p_decl_attributes = decl_attributes_copy; 
   83971             :   // Copy non-constructor parameter data member (access function): linkage_copy
   83972             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   83973             :   // case: toBeCopied == COPY_DATA for linkage
   83974           0 :      std::string linkage_copy = p_linkage; 
   83975           0 :      result->p_linkage = linkage_copy; 
   83976             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   83977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   83978             :   // case: toBeCopied == COPY_DATA for declarationModifier
   83979           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   83980           0 :      result->p_declarationModifier = declarationModifier_copy; 
   83981             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   83982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   83983             :   // case: toBeCopied == COPY_DATA for nameOnly
   83984           0 :      bool nameOnly_copy = p_nameOnly; 
   83985           0 :      result->p_nameOnly = nameOnly_copy; 
   83986             :   // Copy non-constructor parameter data member (access function): forward_copy
   83987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   83988             :   // case: toBeCopied == COPY_DATA for forward
   83989           0 :      bool forward_copy = p_forward; 
   83990           0 :      result->p_forward = forward_copy; 
   83991             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   83992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   83993             :   // case: toBeCopied == COPY_DATA for externBrace
   83994           0 :      bool externBrace_copy = p_externBrace; 
   83995           0 :      result->p_externBrace = externBrace_copy; 
   83996             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   83997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   83998             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   83999           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   84000           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   84001             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   84002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   84003             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   84004           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   84005           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   84006             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   84007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   84008             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   84009           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   84010           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   84011             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   84012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   84013             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   84014           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   84015           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   84016             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   84017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   84018             :   // case: toBeCopied == COPY_DATA for binding_label
   84019           0 :      std::string binding_label_copy = p_binding_label; 
   84020           0 :      result->p_binding_label = binding_label_copy; 
   84021             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   84022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   84023             :   // case: toBeCopied == COPY_DATA for declarationScope
   84024           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   84025           0 :      result->p_declarationScope = declarationScope_copy; 
   84026             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   84027             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   84028             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   84029           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   84030           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   84031             :   // Copy non-constructor parameter data member (access function): parameterList_copy
   84032           0 :      SgFunctionParameterList* parameterList_copy; 
   84033             :   // case: not a listType for (using conditionalToCopyVariable)parameterList
   84034           0 :           if (get_parameterList() != NULL) 
   84035             :              { 
   84036           0 :                parameterList_copy = static_cast<SgFunctionParameterList*>(help.copyAst(get_parameterList())); 
   84037             :              } 
   84038             :             else 
   84039             :              { 
   84040             :                parameterList_copy = NULL; 
   84041             :              } 
   84042             :   /* check for a valid pointer and delete if present */ 
   84043           0 :      if (result->p_parameterList != NULL) delete result->p_parameterList; 
   84044           0 :      result->p_parameterList = parameterList_copy; 
   84045             :   // case: not a listType for (using conditionalToSetParent)parameterList
   84046           0 :           if ( (parameterList_copy != NULL) && (parameterList_copy->get_parent() == NULL) && (isSgType(parameterList_copy) == NULL) ) 
   84047             :              { 
   84048           0 :                parameterList_copy->set_parent(result); 
   84049             :              } 
   84050             :   // Copy non-constructor parameter data member (list access function): result->get_functionModifier()
   84051             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionModifier
   84052             :   // case: toBeCopied == COPY_DATA for functionModifier
   84053           0 :      SgFunctionModifier functionModifier_copy = p_functionModifier; 
   84054           0 :      result->p_functionModifier = functionModifier_copy; 
   84055             :   // Copy non-constructor parameter data member (list access function): result->get_specialFunctionModifier()
   84056             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialFunctionModifier
   84057             :   // case: toBeCopied == COPY_DATA for specialFunctionModifier
   84058           0 :      SgSpecialFunctionModifier specialFunctionModifier_copy = p_specialFunctionModifier; 
   84059           0 :      result->p_specialFunctionModifier = specialFunctionModifier_copy; 
   84060             :   // Copy non-constructor parameter data member (access function): exceptionSpecification_copy
   84061             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exceptionSpecification
   84062             :   // case: toBeCopied == COPY_DATA for exceptionSpecification
   84063           0 :      SgTypePtrList exceptionSpecification_copy = p_exceptionSpecification; 
   84064           0 :      result->p_exceptionSpecification = exceptionSpecification_copy; 
   84065             :   // Copy non-constructor parameter data member (access function): named_in_end_statement_copy
   84066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named_in_end_statement
   84067             :   // case: toBeCopied == COPY_DATA for named_in_end_statement
   84068           0 :      bool named_in_end_statement_copy = p_named_in_end_statement; 
   84069           0 :      result->p_named_in_end_statement = named_in_end_statement_copy; 
   84070             :   // Copy non-constructor parameter data member (access function): asm_name_copy
   84071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_name
   84072             :   // case: toBeCopied == COPY_DATA for asm_name
   84073           0 :      std::string asm_name_copy = p_asm_name; 
   84074           0 :      result->p_asm_name = asm_name_copy; 
   84075             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   84076           0 :      SgExprListExp* decoratorList_copy; 
   84077             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   84078           0 :           if (get_decoratorList() != NULL) 
   84079             :              { 
   84080           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   84081             :              } 
   84082             :             else 
   84083             :              { 
   84084             :                decoratorList_copy = NULL; 
   84085             :              } 
   84086             :   /* check for a valid pointer and delete if present */ 
   84087           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   84088           0 :      result->p_decoratorList = decoratorList_copy; 
   84089             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   84090           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   84091             :              { 
   84092           0 :                decoratorList_copy->set_parent(result); 
   84093             :              } 
   84094             :   // Copy non-constructor parameter data member (access function): ada_formal_subprogram_decl_copy
   84095             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ada_formal_subprogram_decl
   84096             :   // case: toBeCopied == COPY_DATA for ada_formal_subprogram_decl
   84097           0 :      bool ada_formal_subprogram_decl_copy = p_ada_formal_subprogram_decl; 
   84098           0 :      result->p_ada_formal_subprogram_decl = ada_formal_subprogram_decl_copy; 
   84099             :   // Copy non-constructor parameter data member (access function): oldStyleDefinition_copy
   84100             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for oldStyleDefinition
   84101             :   // case: toBeCopied == COPY_DATA for oldStyleDefinition
   84102           0 :      bool oldStyleDefinition_copy = p_oldStyleDefinition; 
   84103           0 :      result->p_oldStyleDefinition = oldStyleDefinition_copy; 
   84104             :   // Copy non-constructor parameter data member (access function): scope_copy
   84105             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   84106             :   // case: toBeCopied == COPY_DATA for scope
   84107           0 :      SgScopeStatement* scope_copy = p_scope; 
   84108           0 :      result->p_scope = scope_copy; 
   84109             :   // Copy non-constructor parameter data member (access function): specialization_copy
   84110             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   84111             :   // case: toBeCopied == COPY_DATA for specialization
   84112           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   84113           0 :      result->p_specialization = specialization_copy; 
   84114             :   // Copy non-constructor parameter data member (no access function): result->p_requiresNameQualificationOnReturnType
   84115             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualificationOnReturnType
   84116             :   // case: toBeCopied == COPY_DATA for requiresNameQualificationOnReturnType
   84117           0 :      bool requiresNameQualificationOnReturnType_copy = p_requiresNameQualificationOnReturnType; 
   84118           0 :      result->p_requiresNameQualificationOnReturnType = requiresNameQualificationOnReturnType_copy; 
   84119             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   84120             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   84121             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   84122           0 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   84123           0 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   84124             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   84125             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   84126             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   84127           0 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   84128           0 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   84129             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   84130             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   84131             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   84132           0 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   84133           0 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   84134             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   84135             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   84136             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   84137           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   84138           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   84139             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   84140             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   84141             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   84142           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   84143           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   84144             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   84145             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   84146             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   84147           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   84148           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   84149             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_return_type
   84150             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_return_type
   84151             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_return_type
   84152           0 :      int name_qualification_length_for_return_type_copy = p_name_qualification_length_for_return_type; 
   84153           0 :      result->p_name_qualification_length_for_return_type = name_qualification_length_for_return_type_copy; 
   84154             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_return_type
   84155             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_return_type
   84156             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_return_type
   84157           0 :      bool type_elaboration_required_for_return_type_copy = p_type_elaboration_required_for_return_type; 
   84158           0 :      result->p_type_elaboration_required_for_return_type = type_elaboration_required_for_return_type_copy; 
   84159             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_return_type
   84160             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_return_type
   84161             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_return_type
   84162           0 :      bool global_qualification_required_for_return_type_copy = p_global_qualification_required_for_return_type; 
   84163           0 :      result->p_global_qualification_required_for_return_type = global_qualification_required_for_return_type_copy; 
   84164             :   // Copy non-constructor parameter data member (access function): prototypeIsWithoutParameters_copy
   84165             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prototypeIsWithoutParameters
   84166             :   // case: toBeCopied == COPY_DATA for prototypeIsWithoutParameters
   84167           0 :      bool prototypeIsWithoutParameters_copy = p_prototypeIsWithoutParameters; 
   84168           0 :      result->p_prototypeIsWithoutParameters = prototypeIsWithoutParameters_copy; 
   84169             :   // Copy non-constructor parameter data member (access function): gnu_regparm_attribute_copy
   84170             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_regparm_attribute
   84171             :   // case: toBeCopied == COPY_DATA for gnu_regparm_attribute
   84172           0 :      int gnu_regparm_attribute_copy = p_gnu_regparm_attribute; 
   84173           0 :      result->p_gnu_regparm_attribute = gnu_regparm_attribute_copy; 
   84174             :   // Copy non-constructor parameter data member (access function): type_syntax_copy
   84175             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax
   84176             :   // case: toBeCopied == COPY_DATA for type_syntax
   84177           0 :      SgFunctionType* type_syntax_copy = p_type_syntax; 
   84178           0 :      result->p_type_syntax = type_syntax_copy; 
   84179             :   // Copy non-constructor parameter data member (access function): type_syntax_is_available_copy
   84180             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax_is_available
   84181             :   // case: toBeCopied == COPY_DATA for type_syntax_is_available
   84182           0 :      bool type_syntax_is_available_copy = p_type_syntax_is_available; 
   84183           0 :      result->p_type_syntax_is_available = type_syntax_is_available_copy; 
   84184             :   // Copy non-constructor parameter data member (access function): parameterList_syntax_copy
   84185             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterList_syntax
   84186             :   // case: toBeCopied == COPY_DATA for parameterList_syntax
   84187           0 :      SgFunctionParameterList* parameterList_syntax_copy = p_parameterList_syntax; 
   84188           0 :      result->p_parameterList_syntax = parameterList_syntax_copy; 
   84189             :   // Copy non-constructor parameter data member (access function): using_C11_Noreturn_keyword_copy
   84190             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Noreturn_keyword
   84191             :   // case: toBeCopied == COPY_DATA for using_C11_Noreturn_keyword
   84192           0 :      bool using_C11_Noreturn_keyword_copy = p_using_C11_Noreturn_keyword; 
   84193           0 :      result->p_using_C11_Noreturn_keyword = using_C11_Noreturn_keyword_copy; 
   84194             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   84195             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   84196             :   // case: toBeCopied == COPY_DATA for is_constexpr
   84197           0 :      bool is_constexpr_copy = p_is_constexpr; 
   84198           0 :      result->p_is_constexpr = is_constexpr_copy; 
   84199             :   // Copy non-constructor parameter data member (access function): using_new_function_return_type_syntax_copy
   84200             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_new_function_return_type_syntax
   84201             :   // case: toBeCopied == COPY_DATA for using_new_function_return_type_syntax
   84202           0 :      bool using_new_function_return_type_syntax_copy = p_using_new_function_return_type_syntax; 
   84203           0 :      result->p_using_new_function_return_type_syntax = using_new_function_return_type_syntax_copy; 
   84204             :   // Copy non-constructor parameter data member (access function): functionParameterScope_copy
   84205             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionParameterScope
   84206             :   // case: toBeCopied == COPY_DATA for functionParameterScope
   84207           0 :      SgFunctionParameterScope* functionParameterScope_copy = p_functionParameterScope; 
   84208           0 :      result->p_functionParameterScope = functionParameterScope_copy; 
   84209             :   // Copy non-constructor parameter data member (access function): marked_as_edg_normalization_copy
   84210             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for marked_as_edg_normalization
   84211             :   // case: toBeCopied == COPY_DATA for marked_as_edg_normalization
   84212           0 :      bool marked_as_edg_normalization_copy = p_marked_as_edg_normalization; 
   84213           0 :      result->p_marked_as_edg_normalization = marked_as_edg_normalization_copy; 
   84214             :   // Copy non-constructor parameter data member (access function): is_implicit_function_copy
   84215             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_implicit_function
   84216             :   // case: toBeCopied == COPY_DATA for is_implicit_function
   84217           0 :      bool is_implicit_function_copy = p_is_implicit_function; 
   84218           0 :      result->p_is_implicit_function = is_implicit_function_copy; 
   84219             :   // Copy non-constructor parameter data member (list access function): result->get_templateParameters()
   84220             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateParameters
   84221             :   // case: toBeCopied == COPY_DATA for templateParameters
   84222           0 :      SgTemplateParameterPtrList templateParameters_copy = p_templateParameters; 
   84223           0 :      result->p_templateParameters = templateParameters_copy; 
   84224             :   // Copy non-constructor parameter data member (list access function): result->get_templateSpecializationArguments()
   84225             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateSpecializationArguments
   84226             :   // case: toBeCopied == COPY_DATA for templateSpecializationArguments
   84227           0 :      SgTemplateArgumentPtrList templateSpecializationArguments_copy = p_templateSpecializationArguments; 
   84228           0 :      result->p_templateSpecializationArguments = templateSpecializationArguments_copy; 
   84229             :   // Copy non-constructor parameter data member (access function): string_copy
   84230             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string
   84231             :   // case: toBeCopied == COPY_DATA for string
   84232           0 :      SgName string_copy = p_string; 
   84233           0 :      result->p_string = string_copy; 
   84234             :   // Copy non-constructor parameter data member (access function): string_represents_function_body_copy
   84235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_represents_function_body
   84236             :   // case: toBeCopied == COPY_DATA for string_represents_function_body
   84237           0 :      bool string_represents_function_body_copy = p_string_represents_function_body; 
   84238           0 :      result->p_string_represents_function_body = string_represents_function_body_copy; 
   84239             :   // Copy non-constructor parameter data member (access function): nonreal_decl_scope_copy
   84240             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nonreal_decl_scope
   84241             :   // case: toBeCopied == COPY_DATA for nonreal_decl_scope
   84242           0 :      SgDeclarationScope* nonreal_decl_scope_copy = p_nonreal_decl_scope; 
   84243           0 :      result->p_nonreal_decl_scope = nonreal_decl_scope_copy; 
   84244             :   // case: not a listType for (using conditionalToSetParent)definition
   84245           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   84246             :              { 
   84247           0 :                definition_copy->set_parent(result); 
   84248             :              } 
   84249             : 
   84250             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   84251             : 
   84252             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   84253             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   84254             :   // fixupCopy(result,help);
   84255             : 
   84256             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   84257             :   // the Sg_File_Info objects that are built for the new IR nodes.
   84258           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   84259           0 :      if (locatedNode != NULL)
   84260             :         {
   84261             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   84262           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   84263           0 :           ROSE_ASSERT(start != NULL);
   84264             : #if 0
   84265             :        // Debugging information
   84266             :           if (start->get_parent() == NULL)
   84267             :              {
   84268             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84269             :              }
   84270             : #endif
   84271           0 :           start->set_parent(locatedNode);
   84272           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   84273             : 
   84274           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   84275             : 
   84276             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   84277             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   84278             :        // ROSE_ASSERT(end != NULL);
   84279           0 :           if (end == NULL)
   84280             :              {
   84281           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   84282             :              }
   84283             :             else
   84284             :              {
   84285             : #if 0
   84286             :             // Debugging information
   84287             :                if (end->get_parent() == NULL)
   84288             :                   {
   84289             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84290             :                   }
   84291             : #endif
   84292           0 :                end->set_parent(locatedNode);
   84293           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   84294             :              }
   84295             : 
   84296           0 :           SgExpression* expression = isSgExpression(result);
   84297           0 :           if (isSgExpression(this) != NULL)
   84298             :              {
   84299           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   84300             : 
   84301             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   84302           0 :                if (operatorPosition != NULL)
   84303             :                   {
   84304             : #if 0
   84305             :                  // Debugging information
   84306             :                     if (operatorPosition->get_parent() == NULL)
   84307             :                        {
   84308             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84309             :                        }
   84310             : #endif
   84311           0 :                     operatorPosition->set_parent(expression);
   84312           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   84313             :                   }
   84314             :              }
   84315             :         }
   84316             : 
   84317             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   84318           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   84319           0 :      if (initializedName != NULL)
   84320             :         {
   84321             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   84322           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   84323           0 :           ROSE_ASSERT(start != NULL);
   84324             : #if 0
   84325             :        // Debugging information
   84326             :           if (start->get_parent() == NULL)
   84327             :              {
   84328             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84329             :              }
   84330             : #endif
   84331           0 :           start->set_parent(initializedName);
   84332           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   84333             : 
   84334             : #if 0
   84335             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   84336             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   84337             : 
   84338             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   84339             :        // ROSE_ASSERT(end != NULL);
   84340             :           if (end == NULL)
   84341             :              {
   84342             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   84343             :              }
   84344             :             else
   84345             :              {
   84346             :                if (end->get_parent() == NULL)
   84347             :                   {
   84348             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84349             :                   }
   84350             :                end->set_parent(initializedName);
   84351             :                ROSE_ASSERT(end->get_parent() != NULL);
   84352             :              }
   84353             : #endif
   84354             :         }
   84355             : 
   84356             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   84357           0 :      help.insertCopiedNodePair(this,result);
   84358             : 
   84359             :   // printf ("End of copy SgTemplateFunctionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   84360             : 
   84361             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   84362             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   84363           0 :      help.decrementDepth();
   84364             : 
   84365             :   // Test if this is the root of the copy!
   84366           0 :      if (help.get_depth() == 0)
   84367             :         {
   84368             :        // This is the original calling node.
   84369             : 
   84370             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   84371             :        // printf ("Calling SgTemplateFunctionDeclaration::fixupCopy() (from root of AST being copied) \n");
   84372             : #if ALT_FIXUP_COPY
   84373             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   84374           0 :           fixupCopy_scopes (result,help);
   84375           0 :           fixupCopy_symbols (result,help);
   84376           0 :           fixupCopy_references (result,help);
   84377             : #else
   84378             :           fixupCopy(result,help);
   84379             : #endif
   84380             :        // Allow this to be called recursively, so accumulate the state.
   84381             :        // Also, clear the state in the SgCopyHelp object.
   84382             :        // help.clearState();
   84383             :         }
   84384             : 
   84385           0 :      return result;
   84386             :    }
   84387             : 
   84388             : 
   84389             : /* #line 84390 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   84390             : 
   84391             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   84392             : 
   84393           0 : SgNode* SgMemberFunctionDeclaration::copy ( SgCopyHelp& help) const
   84394             :    {
   84395           0 :      SgMemberFunctionDeclaration* result = NULL;
   84396             : 
   84397             :   // printf ("Copy SgMemberFunctionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   84398             : 
   84399             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   84400             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   84401             :   // The default value of the depth is 0, so after this call the depth is 1!
   84402           0 :      help.incrementDepth();
   84403             : 
   84404             : #if 0
   84405             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   84406             :   // but it is not generally true that things can only be copied once!
   84407             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   84408             :   // AstAttribute* existingAttribute = const_cast<SgMemberFunctionDeclaration*>(this)->attribute["copied"];
   84409             :      bool previouslyCopied = const_cast<SgMemberFunctionDeclaration*>(this)->attribute.exists("copied");
   84410             :      if (previouslyCopied == true)
   84411             :         {
   84412             :           this->get_file_info()->display("Called from copy SgMemberFunctionDeclaration: debug");
   84413             :         }
   84414             :      ROSE_ASSERT(previouslyCopied == false);
   84415             : 
   84416             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   84417             :      AstAttribute* newAttribute = new AstAttribute();
   84418             :      ROSE_ASSERT(newAttribute != NULL);
   84419             : 
   84420             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   84421             :      const_cast<SgMemberFunctionDeclaration*>(this)->attribute.add("copied",newAttribute);
   84422             : #endif
   84423             : 
   84424             :   // Copy data members from base classes
   84425             :   // Copy constructor parameter data member: startOfConstruct_copy
   84426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   84427             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   84428           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   84429           0 :      if ( p_startOfConstruct != NULL ) 
   84430             :         { 
   84431           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   84432             :         } 
   84433             :        else 
   84434             :         { 
   84435             :           startOfConstruct_copy = NULL; 
   84436             :         } 
   84437             :   // Copy constructor parameter data member: name_copy
   84438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   84439             :   // case: toBeCopied == COPY_DATA for name
   84440           0 :      SgName name_copy = p_name; 
   84441             :   // Copy constructor parameter data member: type_copy
   84442             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   84443             :   // case: toBeCopied == COPY_DATA for type
   84444           0 :      SgFunctionType* type_copy = p_type; 
   84445             :   // Copy constructor parameter data member: definition_copy
   84446           0 :      SgFunctionDefinition* definition_copy; 
   84447             :   // case: not a listType for (using conditionalToCopyVariable)definition
   84448           0 :           if (get_definition() != NULL) 
   84449             :              { 
   84450           0 :                definition_copy = static_cast<SgFunctionDefinition*>(help.copyAst(get_definition())); 
   84451             :              } 
   84452             :             else 
   84453             :              { 
   84454             :                definition_copy = NULL; 
   84455             :              } 
   84456             :  
   84457             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   84458             : 
   84459             :   // Build an empty copy of this object (will be filled in, but 
   84460             :   // the parent can't be set and must be set by the caller)
   84461           0 :      result = new SgMemberFunctionDeclaration(  startOfConstruct_copy, name_copy, type_copy, definition_copy );
   84462           0 :      ROSE_ASSERT(result != NULL);
   84463             : 
   84464             :   // Copy data members of "this" class
   84465             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   84466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   84467             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   84468           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   84469           0 :      if ( p_endOfConstruct != NULL ) 
   84470             :         { 
   84471           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   84472             :         } 
   84473             :        else 
   84474             :         { 
   84475             :           endOfConstruct_copy = NULL; 
   84476             :         } 
   84477             :   /* check for a valid pointer and delete if present */ 
   84478           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   84479             :   /* add assignment to result here */ 
   84480           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   84481             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   84482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   84483             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   84484           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   84485           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   84486             :         { 
   84487           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   84488             :         } 
   84489             :        else 
   84490             :         { 
   84491             :           attachedPreprocessingInfoPtr_copy = NULL; 
   84492             :         } 
   84493             :   /* check for a valid pointer and delete if present */ 
   84494           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   84495             :   /* add assignment to result here */ 
   84496           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   84497             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   84498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   84499             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   84500           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   84501           0 :      if ( p_attributeMechanism != NULL ) 
   84502             :         { 
   84503           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   84504             :         } 
   84505             :        else 
   84506             :         { 
   84507             :           attributeMechanism_copy = NULL; 
   84508             :         } 
   84509             :   /* check for a valid pointer and delete if present */ 
   84510           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   84511             :   /* add assignment to result here */ 
   84512           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   84513             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   84514             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   84515             :   // case: toBeCopied == COPY_DATA for numeric_label
   84516           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   84517           0 :      result->p_numeric_label = numeric_label_copy; 
   84518             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   84519             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   84520             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   84521           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   84522           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   84523             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   84524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   84525             :   // case: toBeCopied == COPY_DATA for decl_attributes
   84526           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   84527           0 :      result->p_decl_attributes = decl_attributes_copy; 
   84528             :   // Copy non-constructor parameter data member (access function): linkage_copy
   84529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   84530             :   // case: toBeCopied == COPY_DATA for linkage
   84531           0 :      std::string linkage_copy = p_linkage; 
   84532           0 :      result->p_linkage = linkage_copy; 
   84533             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   84534             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   84535             :   // case: toBeCopied == COPY_DATA for declarationModifier
   84536           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   84537           0 :      result->p_declarationModifier = declarationModifier_copy; 
   84538             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   84539             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   84540             :   // case: toBeCopied == COPY_DATA for nameOnly
   84541           0 :      bool nameOnly_copy = p_nameOnly; 
   84542           0 :      result->p_nameOnly = nameOnly_copy; 
   84543             :   // Copy non-constructor parameter data member (access function): forward_copy
   84544             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   84545             :   // case: toBeCopied == COPY_DATA for forward
   84546           0 :      bool forward_copy = p_forward; 
   84547           0 :      result->p_forward = forward_copy; 
   84548             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   84549             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   84550             :   // case: toBeCopied == COPY_DATA for externBrace
   84551           0 :      bool externBrace_copy = p_externBrace; 
   84552           0 :      result->p_externBrace = externBrace_copy; 
   84553             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   84554             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   84555             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   84556           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   84557           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   84558             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   84559             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   84560             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   84561           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   84562           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   84563             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   84564             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   84565             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   84566           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   84567           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   84568             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   84569             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   84570             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   84571           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   84572           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   84573             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   84574             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   84575             :   // case: toBeCopied == COPY_DATA for binding_label
   84576           0 :      std::string binding_label_copy = p_binding_label; 
   84577           0 :      result->p_binding_label = binding_label_copy; 
   84578             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   84579             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   84580             :   // case: toBeCopied == COPY_DATA for declarationScope
   84581           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   84582           0 :      result->p_declarationScope = declarationScope_copy; 
   84583             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   84584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   84585             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   84586           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   84587           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   84588             :   // Copy non-constructor parameter data member (access function): parameterList_copy
   84589           0 :      SgFunctionParameterList* parameterList_copy; 
   84590             :   // case: not a listType for (using conditionalToCopyVariable)parameterList
   84591           0 :           if (get_parameterList() != NULL) 
   84592             :              { 
   84593           0 :                parameterList_copy = static_cast<SgFunctionParameterList*>(help.copyAst(get_parameterList())); 
   84594             :              } 
   84595             :             else 
   84596             :              { 
   84597             :                parameterList_copy = NULL; 
   84598             :              } 
   84599             :   /* check for a valid pointer and delete if present */ 
   84600           0 :      if (result->p_parameterList != NULL) delete result->p_parameterList; 
   84601           0 :      result->p_parameterList = parameterList_copy; 
   84602             :   // case: not a listType for (using conditionalToSetParent)parameterList
   84603           0 :           if ( (parameterList_copy != NULL) && (parameterList_copy->get_parent() == NULL) && (isSgType(parameterList_copy) == NULL) ) 
   84604             :              { 
   84605           0 :                parameterList_copy->set_parent(result); 
   84606             :              } 
   84607             :   // Copy non-constructor parameter data member (list access function): result->get_functionModifier()
   84608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionModifier
   84609             :   // case: toBeCopied == COPY_DATA for functionModifier
   84610           0 :      SgFunctionModifier functionModifier_copy = p_functionModifier; 
   84611           0 :      result->p_functionModifier = functionModifier_copy; 
   84612             :   // Copy non-constructor parameter data member (list access function): result->get_specialFunctionModifier()
   84613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialFunctionModifier
   84614             :   // case: toBeCopied == COPY_DATA for specialFunctionModifier
   84615           0 :      SgSpecialFunctionModifier specialFunctionModifier_copy = p_specialFunctionModifier; 
   84616           0 :      result->p_specialFunctionModifier = specialFunctionModifier_copy; 
   84617             :   // Copy non-constructor parameter data member (access function): exceptionSpecification_copy
   84618             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exceptionSpecification
   84619             :   // case: toBeCopied == COPY_DATA for exceptionSpecification
   84620           0 :      SgTypePtrList exceptionSpecification_copy = p_exceptionSpecification; 
   84621           0 :      result->p_exceptionSpecification = exceptionSpecification_copy; 
   84622             :   // Copy non-constructor parameter data member (access function): named_in_end_statement_copy
   84623             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named_in_end_statement
   84624             :   // case: toBeCopied == COPY_DATA for named_in_end_statement
   84625           0 :      bool named_in_end_statement_copy = p_named_in_end_statement; 
   84626           0 :      result->p_named_in_end_statement = named_in_end_statement_copy; 
   84627             :   // Copy non-constructor parameter data member (access function): asm_name_copy
   84628             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_name
   84629             :   // case: toBeCopied == COPY_DATA for asm_name
   84630           0 :      std::string asm_name_copy = p_asm_name; 
   84631           0 :      result->p_asm_name = asm_name_copy; 
   84632             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   84633           0 :      SgExprListExp* decoratorList_copy; 
   84634             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   84635           0 :           if (get_decoratorList() != NULL) 
   84636             :              { 
   84637           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   84638             :              } 
   84639             :             else 
   84640             :              { 
   84641             :                decoratorList_copy = NULL; 
   84642             :              } 
   84643             :   /* check for a valid pointer and delete if present */ 
   84644           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   84645           0 :      result->p_decoratorList = decoratorList_copy; 
   84646             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   84647           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   84648             :              { 
   84649           0 :                decoratorList_copy->set_parent(result); 
   84650             :              } 
   84651             :   // Copy non-constructor parameter data member (access function): ada_formal_subprogram_decl_copy
   84652             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ada_formal_subprogram_decl
   84653             :   // case: toBeCopied == COPY_DATA for ada_formal_subprogram_decl
   84654           0 :      bool ada_formal_subprogram_decl_copy = p_ada_formal_subprogram_decl; 
   84655           0 :      result->p_ada_formal_subprogram_decl = ada_formal_subprogram_decl_copy; 
   84656             :   // Copy non-constructor parameter data member (access function): oldStyleDefinition_copy
   84657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for oldStyleDefinition
   84658             :   // case: toBeCopied == COPY_DATA for oldStyleDefinition
   84659           0 :      bool oldStyleDefinition_copy = p_oldStyleDefinition; 
   84660           0 :      result->p_oldStyleDefinition = oldStyleDefinition_copy; 
   84661             :   // Copy non-constructor parameter data member (access function): scope_copy
   84662             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   84663             :   // case: toBeCopied == COPY_DATA for scope
   84664           0 :      SgScopeStatement* scope_copy = p_scope; 
   84665           0 :      result->p_scope = scope_copy; 
   84666             :   // Copy non-constructor parameter data member (access function): specialization_copy
   84667             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   84668             :   // case: toBeCopied == COPY_DATA for specialization
   84669           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   84670           0 :      result->p_specialization = specialization_copy; 
   84671             :   // Copy non-constructor parameter data member (no access function): result->p_requiresNameQualificationOnReturnType
   84672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualificationOnReturnType
   84673             :   // case: toBeCopied == COPY_DATA for requiresNameQualificationOnReturnType
   84674           0 :      bool requiresNameQualificationOnReturnType_copy = p_requiresNameQualificationOnReturnType; 
   84675           0 :      result->p_requiresNameQualificationOnReturnType = requiresNameQualificationOnReturnType_copy; 
   84676             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   84677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   84678             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   84679           0 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   84680           0 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   84681             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   84682             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   84683             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   84684           0 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   84685           0 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   84686             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   84687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   84688             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   84689           0 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   84690           0 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   84691             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   84692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   84693             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   84694           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   84695           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   84696             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   84697             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   84698             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   84699           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   84700           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   84701             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   84702             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   84703             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   84704           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   84705           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   84706             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_return_type
   84707             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_return_type
   84708             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_return_type
   84709           0 :      int name_qualification_length_for_return_type_copy = p_name_qualification_length_for_return_type; 
   84710           0 :      result->p_name_qualification_length_for_return_type = name_qualification_length_for_return_type_copy; 
   84711             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_return_type
   84712             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_return_type
   84713             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_return_type
   84714           0 :      bool type_elaboration_required_for_return_type_copy = p_type_elaboration_required_for_return_type; 
   84715           0 :      result->p_type_elaboration_required_for_return_type = type_elaboration_required_for_return_type_copy; 
   84716             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_return_type
   84717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_return_type
   84718             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_return_type
   84719           0 :      bool global_qualification_required_for_return_type_copy = p_global_qualification_required_for_return_type; 
   84720           0 :      result->p_global_qualification_required_for_return_type = global_qualification_required_for_return_type_copy; 
   84721             :   // Copy non-constructor parameter data member (access function): prototypeIsWithoutParameters_copy
   84722             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prototypeIsWithoutParameters
   84723             :   // case: toBeCopied == COPY_DATA for prototypeIsWithoutParameters
   84724           0 :      bool prototypeIsWithoutParameters_copy = p_prototypeIsWithoutParameters; 
   84725           0 :      result->p_prototypeIsWithoutParameters = prototypeIsWithoutParameters_copy; 
   84726             :   // Copy non-constructor parameter data member (access function): gnu_regparm_attribute_copy
   84727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_regparm_attribute
   84728             :   // case: toBeCopied == COPY_DATA for gnu_regparm_attribute
   84729           0 :      int gnu_regparm_attribute_copy = p_gnu_regparm_attribute; 
   84730           0 :      result->p_gnu_regparm_attribute = gnu_regparm_attribute_copy; 
   84731             :   // Copy non-constructor parameter data member (access function): type_syntax_copy
   84732             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax
   84733             :   // case: toBeCopied == COPY_DATA for type_syntax
   84734           0 :      SgFunctionType* type_syntax_copy = p_type_syntax; 
   84735           0 :      result->p_type_syntax = type_syntax_copy; 
   84736             :   // Copy non-constructor parameter data member (access function): type_syntax_is_available_copy
   84737             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax_is_available
   84738             :   // case: toBeCopied == COPY_DATA for type_syntax_is_available
   84739           0 :      bool type_syntax_is_available_copy = p_type_syntax_is_available; 
   84740           0 :      result->p_type_syntax_is_available = type_syntax_is_available_copy; 
   84741             :   // Copy non-constructor parameter data member (access function): parameterList_syntax_copy
   84742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterList_syntax
   84743             :   // case: toBeCopied == COPY_DATA for parameterList_syntax
   84744           0 :      SgFunctionParameterList* parameterList_syntax_copy = p_parameterList_syntax; 
   84745           0 :      result->p_parameterList_syntax = parameterList_syntax_copy; 
   84746             :   // Copy non-constructor parameter data member (access function): using_C11_Noreturn_keyword_copy
   84747             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Noreturn_keyword
   84748             :   // case: toBeCopied == COPY_DATA for using_C11_Noreturn_keyword
   84749           0 :      bool using_C11_Noreturn_keyword_copy = p_using_C11_Noreturn_keyword; 
   84750           0 :      result->p_using_C11_Noreturn_keyword = using_C11_Noreturn_keyword_copy; 
   84751             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   84752             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   84753             :   // case: toBeCopied == COPY_DATA for is_constexpr
   84754           0 :      bool is_constexpr_copy = p_is_constexpr; 
   84755           0 :      result->p_is_constexpr = is_constexpr_copy; 
   84756             :   // Copy non-constructor parameter data member (access function): using_new_function_return_type_syntax_copy
   84757             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_new_function_return_type_syntax
   84758             :   // case: toBeCopied == COPY_DATA for using_new_function_return_type_syntax
   84759           0 :      bool using_new_function_return_type_syntax_copy = p_using_new_function_return_type_syntax; 
   84760           0 :      result->p_using_new_function_return_type_syntax = using_new_function_return_type_syntax_copy; 
   84761             :   // Copy non-constructor parameter data member (access function): functionParameterScope_copy
   84762             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionParameterScope
   84763             :   // case: toBeCopied == COPY_DATA for functionParameterScope
   84764           0 :      SgFunctionParameterScope* functionParameterScope_copy = p_functionParameterScope; 
   84765           0 :      result->p_functionParameterScope = functionParameterScope_copy; 
   84766             :   // Copy non-constructor parameter data member (access function): marked_as_edg_normalization_copy
   84767             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for marked_as_edg_normalization
   84768             :   // case: toBeCopied == COPY_DATA for marked_as_edg_normalization
   84769           0 :      bool marked_as_edg_normalization_copy = p_marked_as_edg_normalization; 
   84770           0 :      result->p_marked_as_edg_normalization = marked_as_edg_normalization_copy; 
   84771             :   // Copy non-constructor parameter data member (access function): is_implicit_function_copy
   84772             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_implicit_function
   84773             :   // case: toBeCopied == COPY_DATA for is_implicit_function
   84774           0 :      bool is_implicit_function_copy = p_is_implicit_function; 
   84775           0 :      result->p_is_implicit_function = is_implicit_function_copy; 
   84776             :   // Copy non-constructor parameter data member (no access function): result->p_associatedClassDeclaration
   84777             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for associatedClassDeclaration
   84778             :   // case: toBeCopied == COPY_DATA for associatedClassDeclaration
   84779           0 :      SgDeclarationStatement* associatedClassDeclaration_copy = p_associatedClassDeclaration; 
   84780           0 :      result->p_associatedClassDeclaration = associatedClassDeclaration_copy; 
   84781             :   // case: not a listType for (using conditionalToSetParent)definition
   84782           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   84783             :              { 
   84784           0 :                definition_copy->set_parent(result); 
   84785             :              } 
   84786             : 
   84787             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   84788             : 
   84789             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   84790             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   84791             :   // fixupCopy(result,help);
   84792             : 
   84793             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   84794             :   // the Sg_File_Info objects that are built for the new IR nodes.
   84795           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   84796           0 :      if (locatedNode != NULL)
   84797             :         {
   84798             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   84799           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   84800           0 :           ROSE_ASSERT(start != NULL);
   84801             : #if 0
   84802             :        // Debugging information
   84803             :           if (start->get_parent() == NULL)
   84804             :              {
   84805             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84806             :              }
   84807             : #endif
   84808           0 :           start->set_parent(locatedNode);
   84809           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   84810             : 
   84811           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   84812             : 
   84813             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   84814             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   84815             :        // ROSE_ASSERT(end != NULL);
   84816           0 :           if (end == NULL)
   84817             :              {
   84818           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   84819             :              }
   84820             :             else
   84821             :              {
   84822             : #if 0
   84823             :             // Debugging information
   84824             :                if (end->get_parent() == NULL)
   84825             :                   {
   84826             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84827             :                   }
   84828             : #endif
   84829           0 :                end->set_parent(locatedNode);
   84830           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   84831             :              }
   84832             : 
   84833           0 :           SgExpression* expression = isSgExpression(result);
   84834           0 :           if (isSgExpression(this) != NULL)
   84835             :              {
   84836           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   84837             : 
   84838             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   84839           0 :                if (operatorPosition != NULL)
   84840             :                   {
   84841             : #if 0
   84842             :                  // Debugging information
   84843             :                     if (operatorPosition->get_parent() == NULL)
   84844             :                        {
   84845             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84846             :                        }
   84847             : #endif
   84848           0 :                     operatorPosition->set_parent(expression);
   84849           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   84850             :                   }
   84851             :              }
   84852             :         }
   84853             : 
   84854             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   84855           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   84856           0 :      if (initializedName != NULL)
   84857             :         {
   84858             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   84859           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   84860           0 :           ROSE_ASSERT(start != NULL);
   84861             : #if 0
   84862             :        // Debugging information
   84863             :           if (start->get_parent() == NULL)
   84864             :              {
   84865             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84866             :              }
   84867             : #endif
   84868           0 :           start->set_parent(initializedName);
   84869           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   84870             : 
   84871             : #if 0
   84872             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   84873             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   84874             : 
   84875             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   84876             :        // ROSE_ASSERT(end != NULL);
   84877             :           if (end == NULL)
   84878             :              {
   84879             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   84880             :              }
   84881             :             else
   84882             :              {
   84883             :                if (end->get_parent() == NULL)
   84884             :                   {
   84885             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   84886             :                   }
   84887             :                end->set_parent(initializedName);
   84888             :                ROSE_ASSERT(end->get_parent() != NULL);
   84889             :              }
   84890             : #endif
   84891             :         }
   84892             : 
   84893             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   84894           0 :      help.insertCopiedNodePair(this,result);
   84895             : 
   84896             :   // printf ("End of copy SgMemberFunctionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   84897             : 
   84898             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   84899             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   84900           0 :      help.decrementDepth();
   84901             : 
   84902             :   // Test if this is the root of the copy!
   84903           0 :      if (help.get_depth() == 0)
   84904             :         {
   84905             :        // This is the original calling node.
   84906             : 
   84907             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   84908             :        // printf ("Calling SgMemberFunctionDeclaration::fixupCopy() (from root of AST being copied) \n");
   84909             : #if ALT_FIXUP_COPY
   84910             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   84911           0 :           fixupCopy_scopes (result,help);
   84912           0 :           fixupCopy_symbols (result,help);
   84913           0 :           fixupCopy_references (result,help);
   84914             : #else
   84915             :           fixupCopy(result,help);
   84916             : #endif
   84917             :        // Allow this to be called recursively, so accumulate the state.
   84918             :        // Also, clear the state in the SgCopyHelp object.
   84919             :        // help.clearState();
   84920             :         }
   84921             : 
   84922           0 :      return result;
   84923             :    }
   84924             : 
   84925             : 
   84926             : /* #line 84927 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   84927             : 
   84928             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   84929             : 
   84930           0 : SgNode* SgTemplateMemberFunctionDeclaration::copy ( SgCopyHelp& help) const
   84931             :    {
   84932           0 :      SgTemplateMemberFunctionDeclaration* result = NULL;
   84933             : 
   84934             :   // printf ("Copy SgTemplateMemberFunctionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   84935             : 
   84936             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   84937             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   84938             :   // The default value of the depth is 0, so after this call the depth is 1!
   84939           0 :      help.incrementDepth();
   84940             : 
   84941             : #if 0
   84942             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   84943             :   // but it is not generally true that things can only be copied once!
   84944             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   84945             :   // AstAttribute* existingAttribute = const_cast<SgTemplateMemberFunctionDeclaration*>(this)->attribute["copied"];
   84946             :      bool previouslyCopied = const_cast<SgTemplateMemberFunctionDeclaration*>(this)->attribute.exists("copied");
   84947             :      if (previouslyCopied == true)
   84948             :         {
   84949             :           this->get_file_info()->display("Called from copy SgTemplateMemberFunctionDeclaration: debug");
   84950             :         }
   84951             :      ROSE_ASSERT(previouslyCopied == false);
   84952             : 
   84953             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   84954             :      AstAttribute* newAttribute = new AstAttribute();
   84955             :      ROSE_ASSERT(newAttribute != NULL);
   84956             : 
   84957             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   84958             :      const_cast<SgTemplateMemberFunctionDeclaration*>(this)->attribute.add("copied",newAttribute);
   84959             : #endif
   84960             : 
   84961             :   // Copy data members from base classes
   84962             :   // Copy constructor parameter data member: startOfConstruct_copy
   84963             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   84964             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   84965           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   84966           0 :      if ( p_startOfConstruct != NULL ) 
   84967             :         { 
   84968           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   84969             :         } 
   84970             :        else 
   84971             :         { 
   84972             :           startOfConstruct_copy = NULL; 
   84973             :         } 
   84974             :   // Copy constructor parameter data member: name_copy
   84975             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   84976             :   // case: toBeCopied == COPY_DATA for name
   84977           0 :      SgName name_copy = p_name; 
   84978             :   // Copy constructor parameter data member: type_copy
   84979             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   84980             :   // case: toBeCopied == COPY_DATA for type
   84981           0 :      SgFunctionType* type_copy = p_type; 
   84982             :   // Copy constructor parameter data member: definition_copy
   84983           0 :      SgFunctionDefinition* definition_copy; 
   84984             :   // case: not a listType for (using conditionalToCopyVariable)definition
   84985           0 :           if (get_definition() != NULL) 
   84986             :              { 
   84987           0 :                definition_copy = static_cast<SgFunctionDefinition*>(help.copyAst(get_definition())); 
   84988             :              } 
   84989             :             else 
   84990             :              { 
   84991             :                definition_copy = NULL; 
   84992             :              } 
   84993             :  
   84994             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   84995             : 
   84996             :   // Build an empty copy of this object (will be filled in, but 
   84997             :   // the parent can't be set and must be set by the caller)
   84998           0 :      result = new SgTemplateMemberFunctionDeclaration(  startOfConstruct_copy, name_copy, type_copy, definition_copy );
   84999           0 :      ROSE_ASSERT(result != NULL);
   85000             : 
   85001             :   // Copy data members of "this" class
   85002             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   85003             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   85004             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   85005           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   85006           0 :      if ( p_endOfConstruct != NULL ) 
   85007             :         { 
   85008           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   85009             :         } 
   85010             :        else 
   85011             :         { 
   85012             :           endOfConstruct_copy = NULL; 
   85013             :         } 
   85014             :   /* check for a valid pointer and delete if present */ 
   85015           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   85016             :   /* add assignment to result here */ 
   85017           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   85018             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   85019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   85020             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   85021           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   85022           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   85023             :         { 
   85024           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   85025             :         } 
   85026             :        else 
   85027             :         { 
   85028             :           attachedPreprocessingInfoPtr_copy = NULL; 
   85029             :         } 
   85030             :   /* check for a valid pointer and delete if present */ 
   85031           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   85032             :   /* add assignment to result here */ 
   85033           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   85034             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   85035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   85036             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   85037           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   85038           0 :      if ( p_attributeMechanism != NULL ) 
   85039             :         { 
   85040           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   85041             :         } 
   85042             :        else 
   85043             :         { 
   85044             :           attributeMechanism_copy = NULL; 
   85045             :         } 
   85046             :   /* check for a valid pointer and delete if present */ 
   85047           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   85048             :   /* add assignment to result here */ 
   85049           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   85050             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   85051             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   85052             :   // case: toBeCopied == COPY_DATA for numeric_label
   85053           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   85054           0 :      result->p_numeric_label = numeric_label_copy; 
   85055             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   85056             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   85057             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   85058           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   85059           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   85060             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   85061             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   85062             :   // case: toBeCopied == COPY_DATA for decl_attributes
   85063           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   85064           0 :      result->p_decl_attributes = decl_attributes_copy; 
   85065             :   // Copy non-constructor parameter data member (access function): linkage_copy
   85066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   85067             :   // case: toBeCopied == COPY_DATA for linkage
   85068           0 :      std::string linkage_copy = p_linkage; 
   85069           0 :      result->p_linkage = linkage_copy; 
   85070             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   85071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   85072             :   // case: toBeCopied == COPY_DATA for declarationModifier
   85073           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   85074           0 :      result->p_declarationModifier = declarationModifier_copy; 
   85075             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   85076             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   85077             :   // case: toBeCopied == COPY_DATA for nameOnly
   85078           0 :      bool nameOnly_copy = p_nameOnly; 
   85079           0 :      result->p_nameOnly = nameOnly_copy; 
   85080             :   // Copy non-constructor parameter data member (access function): forward_copy
   85081             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   85082             :   // case: toBeCopied == COPY_DATA for forward
   85083           0 :      bool forward_copy = p_forward; 
   85084           0 :      result->p_forward = forward_copy; 
   85085             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   85086             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   85087             :   // case: toBeCopied == COPY_DATA for externBrace
   85088           0 :      bool externBrace_copy = p_externBrace; 
   85089           0 :      result->p_externBrace = externBrace_copy; 
   85090             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   85091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   85092             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   85093           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   85094           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   85095             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   85096             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   85097             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   85098           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   85099           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   85100             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   85101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   85102             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   85103           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   85104           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   85105             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   85106             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   85107             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   85108           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   85109           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   85110             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   85111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   85112             :   // case: toBeCopied == COPY_DATA for binding_label
   85113           0 :      std::string binding_label_copy = p_binding_label; 
   85114           0 :      result->p_binding_label = binding_label_copy; 
   85115             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   85116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   85117             :   // case: toBeCopied == COPY_DATA for declarationScope
   85118           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   85119           0 :      result->p_declarationScope = declarationScope_copy; 
   85120             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   85121             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   85122             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   85123           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   85124           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   85125             :   // Copy non-constructor parameter data member (access function): parameterList_copy
   85126           0 :      SgFunctionParameterList* parameterList_copy; 
   85127             :   // case: not a listType for (using conditionalToCopyVariable)parameterList
   85128           0 :           if (get_parameterList() != NULL) 
   85129             :              { 
   85130           0 :                parameterList_copy = static_cast<SgFunctionParameterList*>(help.copyAst(get_parameterList())); 
   85131             :              } 
   85132             :             else 
   85133             :              { 
   85134             :                parameterList_copy = NULL; 
   85135             :              } 
   85136             :   /* check for a valid pointer and delete if present */ 
   85137           0 :      if (result->p_parameterList != NULL) delete result->p_parameterList; 
   85138           0 :      result->p_parameterList = parameterList_copy; 
   85139             :   // case: not a listType for (using conditionalToSetParent)parameterList
   85140           0 :           if ( (parameterList_copy != NULL) && (parameterList_copy->get_parent() == NULL) && (isSgType(parameterList_copy) == NULL) ) 
   85141             :              { 
   85142           0 :                parameterList_copy->set_parent(result); 
   85143             :              } 
   85144             :   // Copy non-constructor parameter data member (list access function): result->get_functionModifier()
   85145             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionModifier
   85146             :   // case: toBeCopied == COPY_DATA for functionModifier
   85147           0 :      SgFunctionModifier functionModifier_copy = p_functionModifier; 
   85148           0 :      result->p_functionModifier = functionModifier_copy; 
   85149             :   // Copy non-constructor parameter data member (list access function): result->get_specialFunctionModifier()
   85150             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialFunctionModifier
   85151             :   // case: toBeCopied == COPY_DATA for specialFunctionModifier
   85152           0 :      SgSpecialFunctionModifier specialFunctionModifier_copy = p_specialFunctionModifier; 
   85153           0 :      result->p_specialFunctionModifier = specialFunctionModifier_copy; 
   85154             :   // Copy non-constructor parameter data member (access function): exceptionSpecification_copy
   85155             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exceptionSpecification
   85156             :   // case: toBeCopied == COPY_DATA for exceptionSpecification
   85157           0 :      SgTypePtrList exceptionSpecification_copy = p_exceptionSpecification; 
   85158           0 :      result->p_exceptionSpecification = exceptionSpecification_copy; 
   85159             :   // Copy non-constructor parameter data member (access function): named_in_end_statement_copy
   85160             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named_in_end_statement
   85161             :   // case: toBeCopied == COPY_DATA for named_in_end_statement
   85162           0 :      bool named_in_end_statement_copy = p_named_in_end_statement; 
   85163           0 :      result->p_named_in_end_statement = named_in_end_statement_copy; 
   85164             :   // Copy non-constructor parameter data member (access function): asm_name_copy
   85165             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_name
   85166             :   // case: toBeCopied == COPY_DATA for asm_name
   85167           0 :      std::string asm_name_copy = p_asm_name; 
   85168           0 :      result->p_asm_name = asm_name_copy; 
   85169             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   85170           0 :      SgExprListExp* decoratorList_copy; 
   85171             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   85172           0 :           if (get_decoratorList() != NULL) 
   85173             :              { 
   85174           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   85175             :              } 
   85176             :             else 
   85177             :              { 
   85178             :                decoratorList_copy = NULL; 
   85179             :              } 
   85180             :   /* check for a valid pointer and delete if present */ 
   85181           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   85182           0 :      result->p_decoratorList = decoratorList_copy; 
   85183             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   85184           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   85185             :              { 
   85186           0 :                decoratorList_copy->set_parent(result); 
   85187             :              } 
   85188             :   // Copy non-constructor parameter data member (access function): ada_formal_subprogram_decl_copy
   85189             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ada_formal_subprogram_decl
   85190             :   // case: toBeCopied == COPY_DATA for ada_formal_subprogram_decl
   85191           0 :      bool ada_formal_subprogram_decl_copy = p_ada_formal_subprogram_decl; 
   85192           0 :      result->p_ada_formal_subprogram_decl = ada_formal_subprogram_decl_copy; 
   85193             :   // Copy non-constructor parameter data member (access function): oldStyleDefinition_copy
   85194             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for oldStyleDefinition
   85195             :   // case: toBeCopied == COPY_DATA for oldStyleDefinition
   85196           0 :      bool oldStyleDefinition_copy = p_oldStyleDefinition; 
   85197           0 :      result->p_oldStyleDefinition = oldStyleDefinition_copy; 
   85198             :   // Copy non-constructor parameter data member (access function): scope_copy
   85199             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   85200             :   // case: toBeCopied == COPY_DATA for scope
   85201           0 :      SgScopeStatement* scope_copy = p_scope; 
   85202           0 :      result->p_scope = scope_copy; 
   85203             :   // Copy non-constructor parameter data member (access function): specialization_copy
   85204             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   85205             :   // case: toBeCopied == COPY_DATA for specialization
   85206           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   85207           0 :      result->p_specialization = specialization_copy; 
   85208             :   // Copy non-constructor parameter data member (no access function): result->p_requiresNameQualificationOnReturnType
   85209             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualificationOnReturnType
   85210             :   // case: toBeCopied == COPY_DATA for requiresNameQualificationOnReturnType
   85211           0 :      bool requiresNameQualificationOnReturnType_copy = p_requiresNameQualificationOnReturnType; 
   85212           0 :      result->p_requiresNameQualificationOnReturnType = requiresNameQualificationOnReturnType_copy; 
   85213             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   85214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   85215             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   85216           0 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   85217           0 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   85218             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   85219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   85220             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   85221           0 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   85222           0 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   85223             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   85224             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   85225             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   85226           0 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   85227           0 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   85228             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   85229             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   85230             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   85231           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   85232           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   85233             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   85234             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   85235             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   85236           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   85237           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   85238             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   85239             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   85240             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   85241           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   85242           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   85243             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_return_type
   85244             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_return_type
   85245             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_return_type
   85246           0 :      int name_qualification_length_for_return_type_copy = p_name_qualification_length_for_return_type; 
   85247           0 :      result->p_name_qualification_length_for_return_type = name_qualification_length_for_return_type_copy; 
   85248             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_return_type
   85249             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_return_type
   85250             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_return_type
   85251           0 :      bool type_elaboration_required_for_return_type_copy = p_type_elaboration_required_for_return_type; 
   85252           0 :      result->p_type_elaboration_required_for_return_type = type_elaboration_required_for_return_type_copy; 
   85253             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_return_type
   85254             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_return_type
   85255             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_return_type
   85256           0 :      bool global_qualification_required_for_return_type_copy = p_global_qualification_required_for_return_type; 
   85257           0 :      result->p_global_qualification_required_for_return_type = global_qualification_required_for_return_type_copy; 
   85258             :   // Copy non-constructor parameter data member (access function): prototypeIsWithoutParameters_copy
   85259             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prototypeIsWithoutParameters
   85260             :   // case: toBeCopied == COPY_DATA for prototypeIsWithoutParameters
   85261           0 :      bool prototypeIsWithoutParameters_copy = p_prototypeIsWithoutParameters; 
   85262           0 :      result->p_prototypeIsWithoutParameters = prototypeIsWithoutParameters_copy; 
   85263             :   // Copy non-constructor parameter data member (access function): gnu_regparm_attribute_copy
   85264             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_regparm_attribute
   85265             :   // case: toBeCopied == COPY_DATA for gnu_regparm_attribute
   85266           0 :      int gnu_regparm_attribute_copy = p_gnu_regparm_attribute; 
   85267           0 :      result->p_gnu_regparm_attribute = gnu_regparm_attribute_copy; 
   85268             :   // Copy non-constructor parameter data member (access function): type_syntax_copy
   85269             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax
   85270             :   // case: toBeCopied == COPY_DATA for type_syntax
   85271           0 :      SgFunctionType* type_syntax_copy = p_type_syntax; 
   85272           0 :      result->p_type_syntax = type_syntax_copy; 
   85273             :   // Copy non-constructor parameter data member (access function): type_syntax_is_available_copy
   85274             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax_is_available
   85275             :   // case: toBeCopied == COPY_DATA for type_syntax_is_available
   85276           0 :      bool type_syntax_is_available_copy = p_type_syntax_is_available; 
   85277           0 :      result->p_type_syntax_is_available = type_syntax_is_available_copy; 
   85278             :   // Copy non-constructor parameter data member (access function): parameterList_syntax_copy
   85279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterList_syntax
   85280             :   // case: toBeCopied == COPY_DATA for parameterList_syntax
   85281           0 :      SgFunctionParameterList* parameterList_syntax_copy = p_parameterList_syntax; 
   85282           0 :      result->p_parameterList_syntax = parameterList_syntax_copy; 
   85283             :   // Copy non-constructor parameter data member (access function): using_C11_Noreturn_keyword_copy
   85284             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Noreturn_keyword
   85285             :   // case: toBeCopied == COPY_DATA for using_C11_Noreturn_keyword
   85286           0 :      bool using_C11_Noreturn_keyword_copy = p_using_C11_Noreturn_keyword; 
   85287           0 :      result->p_using_C11_Noreturn_keyword = using_C11_Noreturn_keyword_copy; 
   85288             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   85289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   85290             :   // case: toBeCopied == COPY_DATA for is_constexpr
   85291           0 :      bool is_constexpr_copy = p_is_constexpr; 
   85292           0 :      result->p_is_constexpr = is_constexpr_copy; 
   85293             :   // Copy non-constructor parameter data member (access function): using_new_function_return_type_syntax_copy
   85294             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_new_function_return_type_syntax
   85295             :   // case: toBeCopied == COPY_DATA for using_new_function_return_type_syntax
   85296           0 :      bool using_new_function_return_type_syntax_copy = p_using_new_function_return_type_syntax; 
   85297           0 :      result->p_using_new_function_return_type_syntax = using_new_function_return_type_syntax_copy; 
   85298             :   // Copy non-constructor parameter data member (access function): functionParameterScope_copy
   85299             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionParameterScope
   85300             :   // case: toBeCopied == COPY_DATA for functionParameterScope
   85301           0 :      SgFunctionParameterScope* functionParameterScope_copy = p_functionParameterScope; 
   85302           0 :      result->p_functionParameterScope = functionParameterScope_copy; 
   85303             :   // Copy non-constructor parameter data member (access function): marked_as_edg_normalization_copy
   85304             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for marked_as_edg_normalization
   85305             :   // case: toBeCopied == COPY_DATA for marked_as_edg_normalization
   85306           0 :      bool marked_as_edg_normalization_copy = p_marked_as_edg_normalization; 
   85307           0 :      result->p_marked_as_edg_normalization = marked_as_edg_normalization_copy; 
   85308             :   // Copy non-constructor parameter data member (access function): is_implicit_function_copy
   85309             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_implicit_function
   85310             :   // case: toBeCopied == COPY_DATA for is_implicit_function
   85311           0 :      bool is_implicit_function_copy = p_is_implicit_function; 
   85312           0 :      result->p_is_implicit_function = is_implicit_function_copy; 
   85313             :   // Copy non-constructor parameter data member (no access function): result->p_associatedClassDeclaration
   85314             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for associatedClassDeclaration
   85315             :   // case: toBeCopied == COPY_DATA for associatedClassDeclaration
   85316           0 :      SgDeclarationStatement* associatedClassDeclaration_copy = p_associatedClassDeclaration; 
   85317           0 :      result->p_associatedClassDeclaration = associatedClassDeclaration_copy; 
   85318             :   // Copy non-constructor parameter data member (list access function): result->get_templateParameters()
   85319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateParameters
   85320             :   // case: toBeCopied == COPY_DATA for templateParameters
   85321           0 :      SgTemplateParameterPtrList templateParameters_copy = p_templateParameters; 
   85322           0 :      result->p_templateParameters = templateParameters_copy; 
   85323             :   // Copy non-constructor parameter data member (list access function): result->get_templateSpecializationArguments()
   85324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateSpecializationArguments
   85325             :   // case: toBeCopied == COPY_DATA for templateSpecializationArguments
   85326           0 :      SgTemplateArgumentPtrList templateSpecializationArguments_copy = p_templateSpecializationArguments; 
   85327           0 :      result->p_templateSpecializationArguments = templateSpecializationArguments_copy; 
   85328             :   // Copy non-constructor parameter data member (access function): string_copy
   85329             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string
   85330             :   // case: toBeCopied == COPY_DATA for string
   85331           0 :      SgName string_copy = p_string; 
   85332           0 :      result->p_string = string_copy; 
   85333             :   // Copy non-constructor parameter data member (access function): string_represents_function_body_copy
   85334             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_represents_function_body
   85335             :   // case: toBeCopied == COPY_DATA for string_represents_function_body
   85336           0 :      bool string_represents_function_body_copy = p_string_represents_function_body; 
   85337           0 :      result->p_string_represents_function_body = string_represents_function_body_copy; 
   85338             :   // Copy non-constructor parameter data member (access function): nonreal_decl_scope_copy
   85339             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nonreal_decl_scope
   85340             :   // case: toBeCopied == COPY_DATA for nonreal_decl_scope
   85341           0 :      SgDeclarationScope* nonreal_decl_scope_copy = p_nonreal_decl_scope; 
   85342           0 :      result->p_nonreal_decl_scope = nonreal_decl_scope_copy; 
   85343             :   // case: not a listType for (using conditionalToSetParent)definition
   85344           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   85345             :              { 
   85346           0 :                definition_copy->set_parent(result); 
   85347             :              } 
   85348             : 
   85349             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   85350             : 
   85351             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   85352             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   85353             :   // fixupCopy(result,help);
   85354             : 
   85355             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   85356             :   // the Sg_File_Info objects that are built for the new IR nodes.
   85357           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   85358           0 :      if (locatedNode != NULL)
   85359             :         {
   85360             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   85361           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   85362           0 :           ROSE_ASSERT(start != NULL);
   85363             : #if 0
   85364             :        // Debugging information
   85365             :           if (start->get_parent() == NULL)
   85366             :              {
   85367             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   85368             :              }
   85369             : #endif
   85370           0 :           start->set_parent(locatedNode);
   85371           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   85372             : 
   85373           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   85374             : 
   85375             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   85376             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   85377             :        // ROSE_ASSERT(end != NULL);
   85378           0 :           if (end == NULL)
   85379             :              {
   85380           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   85381             :              }
   85382             :             else
   85383             :              {
   85384             : #if 0
   85385             :             // Debugging information
   85386             :                if (end->get_parent() == NULL)
   85387             :                   {
   85388             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   85389             :                   }
   85390             : #endif
   85391           0 :                end->set_parent(locatedNode);
   85392           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   85393             :              }
   85394             : 
   85395           0 :           SgExpression* expression = isSgExpression(result);
   85396           0 :           if (isSgExpression(this) != NULL)
   85397             :              {
   85398           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   85399             : 
   85400             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   85401           0 :                if (operatorPosition != NULL)
   85402             :                   {
   85403             : #if 0
   85404             :                  // Debugging information
   85405             :                     if (operatorPosition->get_parent() == NULL)
   85406             :                        {
   85407             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   85408             :                        }
   85409             : #endif
   85410           0 :                     operatorPosition->set_parent(expression);
   85411           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   85412             :                   }
   85413             :              }
   85414             :         }
   85415             : 
   85416             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   85417           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   85418           0 :      if (initializedName != NULL)
   85419             :         {
   85420             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   85421           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   85422           0 :           ROSE_ASSERT(start != NULL);
   85423             : #if 0
   85424             :        // Debugging information
   85425             :           if (start->get_parent() == NULL)
   85426             :              {
   85427             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   85428             :              }
   85429             : #endif
   85430           0 :           start->set_parent(initializedName);
   85431           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   85432             : 
   85433             : #if 0
   85434             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   85435             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   85436             : 
   85437             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   85438             :        // ROSE_ASSERT(end != NULL);
   85439             :           if (end == NULL)
   85440             :              {
   85441             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   85442             :              }
   85443             :             else
   85444             :              {
   85445             :                if (end->get_parent() == NULL)
   85446             :                   {
   85447             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   85448             :                   }
   85449             :                end->set_parent(initializedName);
   85450             :                ROSE_ASSERT(end->get_parent() != NULL);
   85451             :              }
   85452             : #endif
   85453             :         }
   85454             : 
   85455             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   85456           0 :      help.insertCopiedNodePair(this,result);
   85457             : 
   85458             :   // printf ("End of copy SgTemplateMemberFunctionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   85459             : 
   85460             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   85461             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   85462           0 :      help.decrementDepth();
   85463             : 
   85464             :   // Test if this is the root of the copy!
   85465           0 :      if (help.get_depth() == 0)
   85466             :         {
   85467             :        // This is the original calling node.
   85468             : 
   85469             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   85470             :        // printf ("Calling SgTemplateMemberFunctionDeclaration::fixupCopy() (from root of AST being copied) \n");
   85471             : #if ALT_FIXUP_COPY
   85472             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   85473           0 :           fixupCopy_scopes (result,help);
   85474           0 :           fixupCopy_symbols (result,help);
   85475           0 :           fixupCopy_references (result,help);
   85476             : #else
   85477             :           fixupCopy(result,help);
   85478             : #endif
   85479             :        // Allow this to be called recursively, so accumulate the state.
   85480             :        // Also, clear the state in the SgCopyHelp object.
   85481             :        // help.clearState();
   85482             :         }
   85483             : 
   85484           0 :      return result;
   85485             :    }
   85486             : 
   85487             : 
   85488             : /* #line 85489 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   85489             : 
   85490             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   85491             : 
   85492           0 : SgNode* SgTemplateInstantiationMemberFunctionDecl::copy ( SgCopyHelp& help) const
   85493             :    {
   85494           0 :      SgTemplateInstantiationMemberFunctionDecl* result = NULL;
   85495             : 
   85496             :   // printf ("Copy SgTemplateInstantiationMemberFunctionDecl = %p = %s \n",this,SageInterface::get_name(this).c_str());
   85497             : 
   85498             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   85499             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   85500             :   // The default value of the depth is 0, so after this call the depth is 1!
   85501           0 :      help.incrementDepth();
   85502             : 
   85503             : #if 0
   85504             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   85505             :   // but it is not generally true that things can only be copied once!
   85506             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   85507             :   // AstAttribute* existingAttribute = const_cast<SgTemplateInstantiationMemberFunctionDecl*>(this)->attribute["copied"];
   85508             :      bool previouslyCopied = const_cast<SgTemplateInstantiationMemberFunctionDecl*>(this)->attribute.exists("copied");
   85509             :      if (previouslyCopied == true)
   85510             :         {
   85511             :           this->get_file_info()->display("Called from copy SgTemplateInstantiationMemberFunctionDecl: debug");
   85512             :         }
   85513             :      ROSE_ASSERT(previouslyCopied == false);
   85514             : 
   85515             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   85516             :      AstAttribute* newAttribute = new AstAttribute();
   85517             :      ROSE_ASSERT(newAttribute != NULL);
   85518             : 
   85519             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   85520             :      const_cast<SgTemplateInstantiationMemberFunctionDecl*>(this)->attribute.add("copied",newAttribute);
   85521             : #endif
   85522             : 
   85523             :   // Copy data members from base classes
   85524             :   // Copy constructor parameter data member: startOfConstruct_copy
   85525             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   85526             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   85527           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   85528           0 :      if ( p_startOfConstruct != NULL ) 
   85529             :         { 
   85530           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   85531             :         } 
   85532             :        else 
   85533             :         { 
   85534             :           startOfConstruct_copy = NULL; 
   85535             :         } 
   85536             :   // Copy constructor parameter data member: name_copy
   85537             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   85538             :   // case: toBeCopied == COPY_DATA for name
   85539           0 :      SgName name_copy = p_name; 
   85540             :   // Copy constructor parameter data member: type_copy
   85541             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   85542             :   // case: toBeCopied == COPY_DATA for type
   85543           0 :      SgFunctionType* type_copy = p_type; 
   85544             :   // Copy constructor parameter data member: definition_copy
   85545           0 :      SgFunctionDefinition* definition_copy; 
   85546             :   // case: not a listType for (using conditionalToCopyVariable)definition
   85547           0 :           if (get_definition() != NULL) 
   85548             :              { 
   85549           0 :                definition_copy = static_cast<SgFunctionDefinition*>(help.copyAst(get_definition())); 
   85550             :              } 
   85551             :             else 
   85552             :              { 
   85553             :                definition_copy = NULL; 
   85554             :              } 
   85555             :   // Copy constructor parameter data member: templateDeclaration_copy
   85556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateDeclaration
   85557             :   // case: toBeCopied == COPY_DATA for templateDeclaration
   85558           0 :      SgTemplateMemberFunctionDeclaration* templateDeclaration_copy = p_templateDeclaration; 
   85559             :   // Copy constructor parameter data member: templateArguments_copy
   85560             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateArguments
   85561             :   // case: toBeCopied == COPY_DATA for templateArguments
   85562           0 :      SgTemplateArgumentPtrList templateArguments_copy = p_templateArguments; 
   85563             :  
   85564             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   85565             : 
   85566             :   // Build an empty copy of this object (will be filled in, but 
   85567             :   // the parent can't be set and must be set by the caller)
   85568           0 :      result = new SgTemplateInstantiationMemberFunctionDecl(  startOfConstruct_copy, name_copy, type_copy, definition_copy, templateDeclaration_copy, templateArguments_copy );
   85569           0 :      ROSE_ASSERT(result != NULL);
   85570             : 
   85571             :   // Copy data members of "this" class
   85572             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   85573             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   85574             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   85575           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   85576           0 :      if ( p_endOfConstruct != NULL ) 
   85577             :         { 
   85578           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   85579             :         } 
   85580             :        else 
   85581             :         { 
   85582             :           endOfConstruct_copy = NULL; 
   85583             :         } 
   85584             :   /* check for a valid pointer and delete if present */ 
   85585           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   85586             :   /* add assignment to result here */ 
   85587           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   85588             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   85589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   85590             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   85591           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   85592           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   85593             :         { 
   85594           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   85595             :         } 
   85596             :        else 
   85597             :         { 
   85598             :           attachedPreprocessingInfoPtr_copy = NULL; 
   85599             :         } 
   85600             :   /* check for a valid pointer and delete if present */ 
   85601           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   85602             :   /* add assignment to result here */ 
   85603           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   85604             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   85605             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   85606             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   85607           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   85608           0 :      if ( p_attributeMechanism != NULL ) 
   85609             :         { 
   85610           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   85611             :         } 
   85612             :        else 
   85613             :         { 
   85614             :           attributeMechanism_copy = NULL; 
   85615             :         } 
   85616             :   /* check for a valid pointer and delete if present */ 
   85617           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   85618             :   /* add assignment to result here */ 
   85619           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   85620             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   85621             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   85622             :   // case: toBeCopied == COPY_DATA for numeric_label
   85623           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   85624           0 :      result->p_numeric_label = numeric_label_copy; 
   85625             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   85626             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   85627             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   85628           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   85629           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   85630             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   85631             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   85632             :   // case: toBeCopied == COPY_DATA for decl_attributes
   85633           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   85634           0 :      result->p_decl_attributes = decl_attributes_copy; 
   85635             :   // Copy non-constructor parameter data member (access function): linkage_copy
   85636             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   85637             :   // case: toBeCopied == COPY_DATA for linkage
   85638           0 :      std::string linkage_copy = p_linkage; 
   85639           0 :      result->p_linkage = linkage_copy; 
   85640             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   85641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   85642             :   // case: toBeCopied == COPY_DATA for declarationModifier
   85643           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   85644           0 :      result->p_declarationModifier = declarationModifier_copy; 
   85645             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   85646             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   85647             :   // case: toBeCopied == COPY_DATA for nameOnly
   85648           0 :      bool nameOnly_copy = p_nameOnly; 
   85649           0 :      result->p_nameOnly = nameOnly_copy; 
   85650             :   // Copy non-constructor parameter data member (access function): forward_copy
   85651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   85652             :   // case: toBeCopied == COPY_DATA for forward
   85653           0 :      bool forward_copy = p_forward; 
   85654           0 :      result->p_forward = forward_copy; 
   85655             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   85656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   85657             :   // case: toBeCopied == COPY_DATA for externBrace
   85658           0 :      bool externBrace_copy = p_externBrace; 
   85659           0 :      result->p_externBrace = externBrace_copy; 
   85660             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   85661             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   85662             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   85663           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   85664           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   85665             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   85666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   85667             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   85668           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   85669           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   85670             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   85671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   85672             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   85673           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   85674           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   85675             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   85676             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   85677             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   85678           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   85679           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   85680             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   85681             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   85682             :   // case: toBeCopied == COPY_DATA for binding_label
   85683           0 :      std::string binding_label_copy = p_binding_label; 
   85684           0 :      result->p_binding_label = binding_label_copy; 
   85685             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   85686             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   85687             :   // case: toBeCopied == COPY_DATA for declarationScope
   85688           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   85689           0 :      result->p_declarationScope = declarationScope_copy; 
   85690             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   85691             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   85692             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   85693           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   85694           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   85695             :   // Copy non-constructor parameter data member (access function): parameterList_copy
   85696           0 :      SgFunctionParameterList* parameterList_copy; 
   85697             :   // case: not a listType for (using conditionalToCopyVariable)parameterList
   85698           0 :           if (get_parameterList() != NULL) 
   85699             :              { 
   85700           0 :                parameterList_copy = static_cast<SgFunctionParameterList*>(help.copyAst(get_parameterList())); 
   85701             :              } 
   85702             :             else 
   85703             :              { 
   85704             :                parameterList_copy = NULL; 
   85705             :              } 
   85706             :   /* check for a valid pointer and delete if present */ 
   85707           0 :      if (result->p_parameterList != NULL) delete result->p_parameterList; 
   85708           0 :      result->p_parameterList = parameterList_copy; 
   85709             :   // case: not a listType for (using conditionalToSetParent)parameterList
   85710           0 :           if ( (parameterList_copy != NULL) && (parameterList_copy->get_parent() == NULL) && (isSgType(parameterList_copy) == NULL) ) 
   85711             :              { 
   85712           0 :                parameterList_copy->set_parent(result); 
   85713             :              } 
   85714             :   // Copy non-constructor parameter data member (list access function): result->get_functionModifier()
   85715             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionModifier
   85716             :   // case: toBeCopied == COPY_DATA for functionModifier
   85717           0 :      SgFunctionModifier functionModifier_copy = p_functionModifier; 
   85718           0 :      result->p_functionModifier = functionModifier_copy; 
   85719             :   // Copy non-constructor parameter data member (list access function): result->get_specialFunctionModifier()
   85720             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialFunctionModifier
   85721             :   // case: toBeCopied == COPY_DATA for specialFunctionModifier
   85722           0 :      SgSpecialFunctionModifier specialFunctionModifier_copy = p_specialFunctionModifier; 
   85723           0 :      result->p_specialFunctionModifier = specialFunctionModifier_copy; 
   85724             :   // Copy non-constructor parameter data member (access function): exceptionSpecification_copy
   85725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exceptionSpecification
   85726             :   // case: toBeCopied == COPY_DATA for exceptionSpecification
   85727           0 :      SgTypePtrList exceptionSpecification_copy = p_exceptionSpecification; 
   85728           0 :      result->p_exceptionSpecification = exceptionSpecification_copy; 
   85729             :   // Copy non-constructor parameter data member (access function): named_in_end_statement_copy
   85730             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named_in_end_statement
   85731             :   // case: toBeCopied == COPY_DATA for named_in_end_statement
   85732           0 :      bool named_in_end_statement_copy = p_named_in_end_statement; 
   85733           0 :      result->p_named_in_end_statement = named_in_end_statement_copy; 
   85734             :   // Copy non-constructor parameter data member (access function): asm_name_copy
   85735             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_name
   85736             :   // case: toBeCopied == COPY_DATA for asm_name
   85737           0 :      std::string asm_name_copy = p_asm_name; 
   85738           0 :      result->p_asm_name = asm_name_copy; 
   85739             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   85740           0 :      SgExprListExp* decoratorList_copy; 
   85741             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   85742           0 :           if (get_decoratorList() != NULL) 
   85743             :              { 
   85744           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   85745             :              } 
   85746             :             else 
   85747             :              { 
   85748             :                decoratorList_copy = NULL; 
   85749             :              } 
   85750             :   /* check for a valid pointer and delete if present */ 
   85751           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   85752           0 :      result->p_decoratorList = decoratorList_copy; 
   85753             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   85754           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   85755             :              { 
   85756           0 :                decoratorList_copy->set_parent(result); 
   85757             :              } 
   85758             :   // Copy non-constructor parameter data member (access function): ada_formal_subprogram_decl_copy
   85759             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ada_formal_subprogram_decl
   85760             :   // case: toBeCopied == COPY_DATA for ada_formal_subprogram_decl
   85761           0 :      bool ada_formal_subprogram_decl_copy = p_ada_formal_subprogram_decl; 
   85762           0 :      result->p_ada_formal_subprogram_decl = ada_formal_subprogram_decl_copy; 
   85763             :   // Copy non-constructor parameter data member (access function): oldStyleDefinition_copy
   85764             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for oldStyleDefinition
   85765             :   // case: toBeCopied == COPY_DATA for oldStyleDefinition
   85766           0 :      bool oldStyleDefinition_copy = p_oldStyleDefinition; 
   85767           0 :      result->p_oldStyleDefinition = oldStyleDefinition_copy; 
   85768             :   // Copy non-constructor parameter data member (access function): scope_copy
   85769             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   85770             :   // case: toBeCopied == COPY_DATA for scope
   85771           0 :      SgScopeStatement* scope_copy = p_scope; 
   85772           0 :      result->p_scope = scope_copy; 
   85773             :   // Copy non-constructor parameter data member (access function): specialization_copy
   85774             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   85775             :   // case: toBeCopied == COPY_DATA for specialization
   85776           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   85777           0 :      result->p_specialization = specialization_copy; 
   85778             :   // Copy non-constructor parameter data member (no access function): result->p_requiresNameQualificationOnReturnType
   85779             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualificationOnReturnType
   85780             :   // case: toBeCopied == COPY_DATA for requiresNameQualificationOnReturnType
   85781           0 :      bool requiresNameQualificationOnReturnType_copy = p_requiresNameQualificationOnReturnType; 
   85782           0 :      result->p_requiresNameQualificationOnReturnType = requiresNameQualificationOnReturnType_copy; 
   85783             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   85784             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   85785             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   85786           0 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   85787           0 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   85788             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   85789             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   85790             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   85791           0 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   85792           0 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   85793             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   85794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   85795             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   85796           0 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   85797           0 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   85798             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   85799             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   85800             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   85801           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   85802           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   85803             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   85804             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   85805             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   85806           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   85807           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   85808             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   85809             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   85810             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   85811           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   85812           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   85813             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_return_type
   85814             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_return_type
   85815             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_return_type
   85816           0 :      int name_qualification_length_for_return_type_copy = p_name_qualification_length_for_return_type; 
   85817           0 :      result->p_name_qualification_length_for_return_type = name_qualification_length_for_return_type_copy; 
   85818             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_return_type
   85819             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_return_type
   85820             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_return_type
   85821           0 :      bool type_elaboration_required_for_return_type_copy = p_type_elaboration_required_for_return_type; 
   85822           0 :      result->p_type_elaboration_required_for_return_type = type_elaboration_required_for_return_type_copy; 
   85823             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_return_type
   85824             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_return_type
   85825             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_return_type
   85826           0 :      bool global_qualification_required_for_return_type_copy = p_global_qualification_required_for_return_type; 
   85827           0 :      result->p_global_qualification_required_for_return_type = global_qualification_required_for_return_type_copy; 
   85828             :   // Copy non-constructor parameter data member (access function): prototypeIsWithoutParameters_copy
   85829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prototypeIsWithoutParameters
   85830             :   // case: toBeCopied == COPY_DATA for prototypeIsWithoutParameters
   85831           0 :      bool prototypeIsWithoutParameters_copy = p_prototypeIsWithoutParameters; 
   85832           0 :      result->p_prototypeIsWithoutParameters = prototypeIsWithoutParameters_copy; 
   85833             :   // Copy non-constructor parameter data member (access function): gnu_regparm_attribute_copy
   85834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_regparm_attribute
   85835             :   // case: toBeCopied == COPY_DATA for gnu_regparm_attribute
   85836           0 :      int gnu_regparm_attribute_copy = p_gnu_regparm_attribute; 
   85837           0 :      result->p_gnu_regparm_attribute = gnu_regparm_attribute_copy; 
   85838             :   // Copy non-constructor parameter data member (access function): type_syntax_copy
   85839             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax
   85840             :   // case: toBeCopied == COPY_DATA for type_syntax
   85841           0 :      SgFunctionType* type_syntax_copy = p_type_syntax; 
   85842           0 :      result->p_type_syntax = type_syntax_copy; 
   85843             :   // Copy non-constructor parameter data member (access function): type_syntax_is_available_copy
   85844             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax_is_available
   85845             :   // case: toBeCopied == COPY_DATA for type_syntax_is_available
   85846           0 :      bool type_syntax_is_available_copy = p_type_syntax_is_available; 
   85847           0 :      result->p_type_syntax_is_available = type_syntax_is_available_copy; 
   85848             :   // Copy non-constructor parameter data member (access function): parameterList_syntax_copy
   85849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterList_syntax
   85850             :   // case: toBeCopied == COPY_DATA for parameterList_syntax
   85851           0 :      SgFunctionParameterList* parameterList_syntax_copy = p_parameterList_syntax; 
   85852           0 :      result->p_parameterList_syntax = parameterList_syntax_copy; 
   85853             :   // Copy non-constructor parameter data member (access function): using_C11_Noreturn_keyword_copy
   85854             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Noreturn_keyword
   85855             :   // case: toBeCopied == COPY_DATA for using_C11_Noreturn_keyword
   85856           0 :      bool using_C11_Noreturn_keyword_copy = p_using_C11_Noreturn_keyword; 
   85857           0 :      result->p_using_C11_Noreturn_keyword = using_C11_Noreturn_keyword_copy; 
   85858             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   85859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   85860             :   // case: toBeCopied == COPY_DATA for is_constexpr
   85861           0 :      bool is_constexpr_copy = p_is_constexpr; 
   85862           0 :      result->p_is_constexpr = is_constexpr_copy; 
   85863             :   // Copy non-constructor parameter data member (access function): using_new_function_return_type_syntax_copy
   85864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_new_function_return_type_syntax
   85865             :   // case: toBeCopied == COPY_DATA for using_new_function_return_type_syntax
   85866           0 :      bool using_new_function_return_type_syntax_copy = p_using_new_function_return_type_syntax; 
   85867           0 :      result->p_using_new_function_return_type_syntax = using_new_function_return_type_syntax_copy; 
   85868             :   // Copy non-constructor parameter data member (access function): functionParameterScope_copy
   85869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionParameterScope
   85870             :   // case: toBeCopied == COPY_DATA for functionParameterScope
   85871           0 :      SgFunctionParameterScope* functionParameterScope_copy = p_functionParameterScope; 
   85872           0 :      result->p_functionParameterScope = functionParameterScope_copy; 
   85873             :   // Copy non-constructor parameter data member (access function): marked_as_edg_normalization_copy
   85874             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for marked_as_edg_normalization
   85875             :   // case: toBeCopied == COPY_DATA for marked_as_edg_normalization
   85876           0 :      bool marked_as_edg_normalization_copy = p_marked_as_edg_normalization; 
   85877           0 :      result->p_marked_as_edg_normalization = marked_as_edg_normalization_copy; 
   85878             :   // Copy non-constructor parameter data member (access function): is_implicit_function_copy
   85879             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_implicit_function
   85880             :   // case: toBeCopied == COPY_DATA for is_implicit_function
   85881           0 :      bool is_implicit_function_copy = p_is_implicit_function; 
   85882           0 :      result->p_is_implicit_function = is_implicit_function_copy; 
   85883             :   // Copy non-constructor parameter data member (no access function): result->p_associatedClassDeclaration
   85884             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for associatedClassDeclaration
   85885             :   // case: toBeCopied == COPY_DATA for associatedClassDeclaration
   85886           0 :      SgDeclarationStatement* associatedClassDeclaration_copy = p_associatedClassDeclaration; 
   85887           0 :      result->p_associatedClassDeclaration = associatedClassDeclaration_copy; 
   85888             :   // Copy non-constructor parameter data member (access function): templateName_copy
   85889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateName
   85890             :   // case: toBeCopied == COPY_DATA for templateName
   85891           0 :      SgName templateName_copy = p_templateName; 
   85892           0 :      result->p_templateName = templateName_copy; 
   85893             :   // Copy non-constructor parameter data member (access function): nameResetFromMangledForm_copy
   85894             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameResetFromMangledForm
   85895             :   // case: toBeCopied == COPY_DATA for nameResetFromMangledForm
   85896           0 :      bool nameResetFromMangledForm_copy = p_nameResetFromMangledForm; 
   85897           0 :      result->p_nameResetFromMangledForm = nameResetFromMangledForm_copy; 
   85898             :   // Copy non-constructor parameter data member (access function): template_argument_list_is_explicit_copy
   85899             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for template_argument_list_is_explicit
   85900             :   // case: toBeCopied == COPY_DATA for template_argument_list_is_explicit
   85901           0 :      bool template_argument_list_is_explicit_copy = p_template_argument_list_is_explicit; 
   85902           0 :      result->p_template_argument_list_is_explicit = template_argument_list_is_explicit_copy; 
   85903             :   // case: not a listType for (using conditionalToSetParent)definition
   85904           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   85905             :              { 
   85906           0 :                definition_copy->set_parent(result); 
   85907             :              } 
   85908             : 
   85909             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   85910             : 
   85911             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   85912             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   85913             :   // fixupCopy(result,help);
   85914             : 
   85915             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   85916             :   // the Sg_File_Info objects that are built for the new IR nodes.
   85917           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   85918           0 :      if (locatedNode != NULL)
   85919             :         {
   85920             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   85921           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   85922           0 :           ROSE_ASSERT(start != NULL);
   85923             : #if 0
   85924             :        // Debugging information
   85925             :           if (start->get_parent() == NULL)
   85926             :              {
   85927             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   85928             :              }
   85929             : #endif
   85930           0 :           start->set_parent(locatedNode);
   85931           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   85932             : 
   85933           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   85934             : 
   85935             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   85936             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   85937             :        // ROSE_ASSERT(end != NULL);
   85938           0 :           if (end == NULL)
   85939             :              {
   85940           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   85941             :              }
   85942             :             else
   85943             :              {
   85944             : #if 0
   85945             :             // Debugging information
   85946             :                if (end->get_parent() == NULL)
   85947             :                   {
   85948             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   85949             :                   }
   85950             : #endif
   85951           0 :                end->set_parent(locatedNode);
   85952           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   85953             :              }
   85954             : 
   85955           0 :           SgExpression* expression = isSgExpression(result);
   85956           0 :           if (isSgExpression(this) != NULL)
   85957             :              {
   85958           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   85959             : 
   85960             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   85961           0 :                if (operatorPosition != NULL)
   85962             :                   {
   85963             : #if 0
   85964             :                  // Debugging information
   85965             :                     if (operatorPosition->get_parent() == NULL)
   85966             :                        {
   85967             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   85968             :                        }
   85969             : #endif
   85970           0 :                     operatorPosition->set_parent(expression);
   85971           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   85972             :                   }
   85973             :              }
   85974             :         }
   85975             : 
   85976             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   85977           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   85978           0 :      if (initializedName != NULL)
   85979             :         {
   85980             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   85981           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   85982           0 :           ROSE_ASSERT(start != NULL);
   85983             : #if 0
   85984             :        // Debugging information
   85985             :           if (start->get_parent() == NULL)
   85986             :              {
   85987             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   85988             :              }
   85989             : #endif
   85990           0 :           start->set_parent(initializedName);
   85991           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   85992             : 
   85993             : #if 0
   85994             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   85995             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   85996             : 
   85997             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   85998             :        // ROSE_ASSERT(end != NULL);
   85999             :           if (end == NULL)
   86000             :              {
   86001             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   86002             :              }
   86003             :             else
   86004             :              {
   86005             :                if (end->get_parent() == NULL)
   86006             :                   {
   86007             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   86008             :                   }
   86009             :                end->set_parent(initializedName);
   86010             :                ROSE_ASSERT(end->get_parent() != NULL);
   86011             :              }
   86012             : #endif
   86013             :         }
   86014             : 
   86015             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   86016           0 :      help.insertCopiedNodePair(this,result);
   86017             : 
   86018             :   // printf ("End of copy SgTemplateInstantiationMemberFunctionDecl = %p = %s \n",this,SageInterface::get_name(this).c_str());
   86019             : 
   86020             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   86021             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   86022           0 :      help.decrementDepth();
   86023             : 
   86024             :   // Test if this is the root of the copy!
   86025           0 :      if (help.get_depth() == 0)
   86026             :         {
   86027             :        // This is the original calling node.
   86028             : 
   86029             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   86030             :        // printf ("Calling SgTemplateInstantiationMemberFunctionDecl::fixupCopy() (from root of AST being copied) \n");
   86031             : #if ALT_FIXUP_COPY
   86032             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   86033           0 :           fixupCopy_scopes (result,help);
   86034           0 :           fixupCopy_symbols (result,help);
   86035           0 :           fixupCopy_references (result,help);
   86036             : #else
   86037             :           fixupCopy(result,help);
   86038             : #endif
   86039             :        // Allow this to be called recursively, so accumulate the state.
   86040             :        // Also, clear the state in the SgCopyHelp object.
   86041             :        // help.clearState();
   86042             :         }
   86043             : 
   86044           0 :      return result;
   86045             :    }
   86046             : 
   86047             : 
   86048             : /* #line 86049 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   86049             : 
   86050             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   86051             : 
   86052           0 : SgNode* SgTemplateInstantiationFunctionDecl::copy ( SgCopyHelp& help) const
   86053             :    {
   86054           0 :      SgTemplateInstantiationFunctionDecl* result = NULL;
   86055             : 
   86056             :   // printf ("Copy SgTemplateInstantiationFunctionDecl = %p = %s \n",this,SageInterface::get_name(this).c_str());
   86057             : 
   86058             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   86059             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   86060             :   // The default value of the depth is 0, so after this call the depth is 1!
   86061           0 :      help.incrementDepth();
   86062             : 
   86063             : #if 0
   86064             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   86065             :   // but it is not generally true that things can only be copied once!
   86066             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   86067             :   // AstAttribute* existingAttribute = const_cast<SgTemplateInstantiationFunctionDecl*>(this)->attribute["copied"];
   86068             :      bool previouslyCopied = const_cast<SgTemplateInstantiationFunctionDecl*>(this)->attribute.exists("copied");
   86069             :      if (previouslyCopied == true)
   86070             :         {
   86071             :           this->get_file_info()->display("Called from copy SgTemplateInstantiationFunctionDecl: debug");
   86072             :         }
   86073             :      ROSE_ASSERT(previouslyCopied == false);
   86074             : 
   86075             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   86076             :      AstAttribute* newAttribute = new AstAttribute();
   86077             :      ROSE_ASSERT(newAttribute != NULL);
   86078             : 
   86079             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   86080             :      const_cast<SgTemplateInstantiationFunctionDecl*>(this)->attribute.add("copied",newAttribute);
   86081             : #endif
   86082             : 
   86083             :   // Copy data members from base classes
   86084             :   // Copy constructor parameter data member: startOfConstruct_copy
   86085             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   86086             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   86087           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   86088           0 :      if ( p_startOfConstruct != NULL ) 
   86089             :         { 
   86090           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   86091             :         } 
   86092             :        else 
   86093             :         { 
   86094             :           startOfConstruct_copy = NULL; 
   86095             :         } 
   86096             :   // Copy constructor parameter data member: name_copy
   86097             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   86098             :   // case: toBeCopied == COPY_DATA for name
   86099           0 :      SgName name_copy = p_name; 
   86100             :   // Copy constructor parameter data member: type_copy
   86101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   86102             :   // case: toBeCopied == COPY_DATA for type
   86103           0 :      SgFunctionType* type_copy = p_type; 
   86104             :   // Copy constructor parameter data member: definition_copy
   86105           0 :      SgFunctionDefinition* definition_copy; 
   86106             :   // case: not a listType for (using conditionalToCopyVariable)definition
   86107           0 :           if (get_definition() != NULL) 
   86108             :              { 
   86109           0 :                definition_copy = static_cast<SgFunctionDefinition*>(help.copyAst(get_definition())); 
   86110             :              } 
   86111             :             else 
   86112             :              { 
   86113             :                definition_copy = NULL; 
   86114             :              } 
   86115             :   // Copy constructor parameter data member: templateDeclaration_copy
   86116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateDeclaration
   86117             :   // case: toBeCopied == COPY_DATA for templateDeclaration
   86118           0 :      SgTemplateFunctionDeclaration* templateDeclaration_copy = p_templateDeclaration; 
   86119             :   // Copy constructor parameter data member: templateArguments_copy
   86120             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateArguments
   86121             :   // case: toBeCopied == COPY_DATA for templateArguments
   86122           0 :      SgTemplateArgumentPtrList templateArguments_copy = p_templateArguments; 
   86123             :  
   86124             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   86125             : 
   86126             :   // Build an empty copy of this object (will be filled in, but 
   86127             :   // the parent can't be set and must be set by the caller)
   86128           0 :      result = new SgTemplateInstantiationFunctionDecl(  startOfConstruct_copy, name_copy, type_copy, definition_copy, templateDeclaration_copy, templateArguments_copy );
   86129           0 :      ROSE_ASSERT(result != NULL);
   86130             : 
   86131             :   // Copy data members of "this" class
   86132             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   86133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   86134             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   86135           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   86136           0 :      if ( p_endOfConstruct != NULL ) 
   86137             :         { 
   86138           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   86139             :         } 
   86140             :        else 
   86141             :         { 
   86142             :           endOfConstruct_copy = NULL; 
   86143             :         } 
   86144             :   /* check for a valid pointer and delete if present */ 
   86145           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   86146             :   /* add assignment to result here */ 
   86147           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   86148             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   86149             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   86150             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   86151           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   86152           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   86153             :         { 
   86154           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   86155             :         } 
   86156             :        else 
   86157             :         { 
   86158             :           attachedPreprocessingInfoPtr_copy = NULL; 
   86159             :         } 
   86160             :   /* check for a valid pointer and delete if present */ 
   86161           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   86162             :   /* add assignment to result here */ 
   86163           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   86164             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   86165             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   86166             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   86167           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   86168           0 :      if ( p_attributeMechanism != NULL ) 
   86169             :         { 
   86170           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   86171             :         } 
   86172             :        else 
   86173             :         { 
   86174             :           attributeMechanism_copy = NULL; 
   86175             :         } 
   86176             :   /* check for a valid pointer and delete if present */ 
   86177           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   86178             :   /* add assignment to result here */ 
   86179           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   86180             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   86181             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   86182             :   // case: toBeCopied == COPY_DATA for numeric_label
   86183           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   86184           0 :      result->p_numeric_label = numeric_label_copy; 
   86185             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   86186             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   86187             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   86188           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   86189           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   86190             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   86191             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   86192             :   // case: toBeCopied == COPY_DATA for decl_attributes
   86193           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   86194           0 :      result->p_decl_attributes = decl_attributes_copy; 
   86195             :   // Copy non-constructor parameter data member (access function): linkage_copy
   86196             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   86197             :   // case: toBeCopied == COPY_DATA for linkage
   86198           0 :      std::string linkage_copy = p_linkage; 
   86199           0 :      result->p_linkage = linkage_copy; 
   86200             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   86201             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   86202             :   // case: toBeCopied == COPY_DATA for declarationModifier
   86203           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   86204           0 :      result->p_declarationModifier = declarationModifier_copy; 
   86205             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   86206             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   86207             :   // case: toBeCopied == COPY_DATA for nameOnly
   86208           0 :      bool nameOnly_copy = p_nameOnly; 
   86209           0 :      result->p_nameOnly = nameOnly_copy; 
   86210             :   // Copy non-constructor parameter data member (access function): forward_copy
   86211             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   86212             :   // case: toBeCopied == COPY_DATA for forward
   86213           0 :      bool forward_copy = p_forward; 
   86214           0 :      result->p_forward = forward_copy; 
   86215             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   86216             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   86217             :   // case: toBeCopied == COPY_DATA for externBrace
   86218           0 :      bool externBrace_copy = p_externBrace; 
   86219           0 :      result->p_externBrace = externBrace_copy; 
   86220             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   86221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   86222             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   86223           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   86224           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   86225             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   86226             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   86227             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   86228           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   86229           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   86230             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   86231             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   86232             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   86233           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   86234           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   86235             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   86236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   86237             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   86238           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   86239           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   86240             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   86241             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   86242             :   // case: toBeCopied == COPY_DATA for binding_label
   86243           0 :      std::string binding_label_copy = p_binding_label; 
   86244           0 :      result->p_binding_label = binding_label_copy; 
   86245             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   86246             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   86247             :   // case: toBeCopied == COPY_DATA for declarationScope
   86248           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   86249           0 :      result->p_declarationScope = declarationScope_copy; 
   86250             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   86251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   86252             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   86253           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   86254           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   86255             :   // Copy non-constructor parameter data member (access function): parameterList_copy
   86256           0 :      SgFunctionParameterList* parameterList_copy; 
   86257             :   // case: not a listType for (using conditionalToCopyVariable)parameterList
   86258           0 :           if (get_parameterList() != NULL) 
   86259             :              { 
   86260           0 :                parameterList_copy = static_cast<SgFunctionParameterList*>(help.copyAst(get_parameterList())); 
   86261             :              } 
   86262             :             else 
   86263             :              { 
   86264             :                parameterList_copy = NULL; 
   86265             :              } 
   86266             :   /* check for a valid pointer and delete if present */ 
   86267           0 :      if (result->p_parameterList != NULL) delete result->p_parameterList; 
   86268           0 :      result->p_parameterList = parameterList_copy; 
   86269             :   // case: not a listType for (using conditionalToSetParent)parameterList
   86270           0 :           if ( (parameterList_copy != NULL) && (parameterList_copy->get_parent() == NULL) && (isSgType(parameterList_copy) == NULL) ) 
   86271             :              { 
   86272           0 :                parameterList_copy->set_parent(result); 
   86273             :              } 
   86274             :   // Copy non-constructor parameter data member (list access function): result->get_functionModifier()
   86275             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionModifier
   86276             :   // case: toBeCopied == COPY_DATA for functionModifier
   86277           0 :      SgFunctionModifier functionModifier_copy = p_functionModifier; 
   86278           0 :      result->p_functionModifier = functionModifier_copy; 
   86279             :   // Copy non-constructor parameter data member (list access function): result->get_specialFunctionModifier()
   86280             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialFunctionModifier
   86281             :   // case: toBeCopied == COPY_DATA for specialFunctionModifier
   86282           0 :      SgSpecialFunctionModifier specialFunctionModifier_copy = p_specialFunctionModifier; 
   86283           0 :      result->p_specialFunctionModifier = specialFunctionModifier_copy; 
   86284             :   // Copy non-constructor parameter data member (access function): exceptionSpecification_copy
   86285             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exceptionSpecification
   86286             :   // case: toBeCopied == COPY_DATA for exceptionSpecification
   86287           0 :      SgTypePtrList exceptionSpecification_copy = p_exceptionSpecification; 
   86288           0 :      result->p_exceptionSpecification = exceptionSpecification_copy; 
   86289             :   // Copy non-constructor parameter data member (access function): named_in_end_statement_copy
   86290             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named_in_end_statement
   86291             :   // case: toBeCopied == COPY_DATA for named_in_end_statement
   86292           0 :      bool named_in_end_statement_copy = p_named_in_end_statement; 
   86293           0 :      result->p_named_in_end_statement = named_in_end_statement_copy; 
   86294             :   // Copy non-constructor parameter data member (access function): asm_name_copy
   86295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_name
   86296             :   // case: toBeCopied == COPY_DATA for asm_name
   86297           0 :      std::string asm_name_copy = p_asm_name; 
   86298           0 :      result->p_asm_name = asm_name_copy; 
   86299             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   86300           0 :      SgExprListExp* decoratorList_copy; 
   86301             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   86302           0 :           if (get_decoratorList() != NULL) 
   86303             :              { 
   86304           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   86305             :              } 
   86306             :             else 
   86307             :              { 
   86308             :                decoratorList_copy = NULL; 
   86309             :              } 
   86310             :   /* check for a valid pointer and delete if present */ 
   86311           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   86312           0 :      result->p_decoratorList = decoratorList_copy; 
   86313             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   86314           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   86315             :              { 
   86316           0 :                decoratorList_copy->set_parent(result); 
   86317             :              } 
   86318             :   // Copy non-constructor parameter data member (access function): ada_formal_subprogram_decl_copy
   86319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ada_formal_subprogram_decl
   86320             :   // case: toBeCopied == COPY_DATA for ada_formal_subprogram_decl
   86321           0 :      bool ada_formal_subprogram_decl_copy = p_ada_formal_subprogram_decl; 
   86322           0 :      result->p_ada_formal_subprogram_decl = ada_formal_subprogram_decl_copy; 
   86323             :   // Copy non-constructor parameter data member (access function): oldStyleDefinition_copy
   86324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for oldStyleDefinition
   86325             :   // case: toBeCopied == COPY_DATA for oldStyleDefinition
   86326           0 :      bool oldStyleDefinition_copy = p_oldStyleDefinition; 
   86327           0 :      result->p_oldStyleDefinition = oldStyleDefinition_copy; 
   86328             :   // Copy non-constructor parameter data member (access function): scope_copy
   86329             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   86330             :   // case: toBeCopied == COPY_DATA for scope
   86331           0 :      SgScopeStatement* scope_copy = p_scope; 
   86332           0 :      result->p_scope = scope_copy; 
   86333             :   // Copy non-constructor parameter data member (access function): specialization_copy
   86334             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   86335             :   // case: toBeCopied == COPY_DATA for specialization
   86336           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   86337           0 :      result->p_specialization = specialization_copy; 
   86338             :   // Copy non-constructor parameter data member (no access function): result->p_requiresNameQualificationOnReturnType
   86339             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualificationOnReturnType
   86340             :   // case: toBeCopied == COPY_DATA for requiresNameQualificationOnReturnType
   86341           0 :      bool requiresNameQualificationOnReturnType_copy = p_requiresNameQualificationOnReturnType; 
   86342           0 :      result->p_requiresNameQualificationOnReturnType = requiresNameQualificationOnReturnType_copy; 
   86343             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   86344             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   86345             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   86346           0 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   86347           0 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   86348             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   86349             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   86350             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   86351           0 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   86352           0 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   86353             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   86354             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   86355             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   86356           0 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   86357           0 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   86358             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   86359             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   86360             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   86361           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   86362           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   86363             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   86364             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   86365             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   86366           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   86367           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   86368             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   86369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   86370             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   86371           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   86372           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   86373             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_return_type
   86374             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_return_type
   86375             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_return_type
   86376           0 :      int name_qualification_length_for_return_type_copy = p_name_qualification_length_for_return_type; 
   86377           0 :      result->p_name_qualification_length_for_return_type = name_qualification_length_for_return_type_copy; 
   86378             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_return_type
   86379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_return_type
   86380             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_return_type
   86381           0 :      bool type_elaboration_required_for_return_type_copy = p_type_elaboration_required_for_return_type; 
   86382           0 :      result->p_type_elaboration_required_for_return_type = type_elaboration_required_for_return_type_copy; 
   86383             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_return_type
   86384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_return_type
   86385             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_return_type
   86386           0 :      bool global_qualification_required_for_return_type_copy = p_global_qualification_required_for_return_type; 
   86387           0 :      result->p_global_qualification_required_for_return_type = global_qualification_required_for_return_type_copy; 
   86388             :   // Copy non-constructor parameter data member (access function): prototypeIsWithoutParameters_copy
   86389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prototypeIsWithoutParameters
   86390             :   // case: toBeCopied == COPY_DATA for prototypeIsWithoutParameters
   86391           0 :      bool prototypeIsWithoutParameters_copy = p_prototypeIsWithoutParameters; 
   86392           0 :      result->p_prototypeIsWithoutParameters = prototypeIsWithoutParameters_copy; 
   86393             :   // Copy non-constructor parameter data member (access function): gnu_regparm_attribute_copy
   86394             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_regparm_attribute
   86395             :   // case: toBeCopied == COPY_DATA for gnu_regparm_attribute
   86396           0 :      int gnu_regparm_attribute_copy = p_gnu_regparm_attribute; 
   86397           0 :      result->p_gnu_regparm_attribute = gnu_regparm_attribute_copy; 
   86398             :   // Copy non-constructor parameter data member (access function): type_syntax_copy
   86399             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax
   86400             :   // case: toBeCopied == COPY_DATA for type_syntax
   86401           0 :      SgFunctionType* type_syntax_copy = p_type_syntax; 
   86402           0 :      result->p_type_syntax = type_syntax_copy; 
   86403             :   // Copy non-constructor parameter data member (access function): type_syntax_is_available_copy
   86404             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax_is_available
   86405             :   // case: toBeCopied == COPY_DATA for type_syntax_is_available
   86406           0 :      bool type_syntax_is_available_copy = p_type_syntax_is_available; 
   86407           0 :      result->p_type_syntax_is_available = type_syntax_is_available_copy; 
   86408             :   // Copy non-constructor parameter data member (access function): parameterList_syntax_copy
   86409             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterList_syntax
   86410             :   // case: toBeCopied == COPY_DATA for parameterList_syntax
   86411           0 :      SgFunctionParameterList* parameterList_syntax_copy = p_parameterList_syntax; 
   86412           0 :      result->p_parameterList_syntax = parameterList_syntax_copy; 
   86413             :   // Copy non-constructor parameter data member (access function): using_C11_Noreturn_keyword_copy
   86414             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Noreturn_keyword
   86415             :   // case: toBeCopied == COPY_DATA for using_C11_Noreturn_keyword
   86416           0 :      bool using_C11_Noreturn_keyword_copy = p_using_C11_Noreturn_keyword; 
   86417           0 :      result->p_using_C11_Noreturn_keyword = using_C11_Noreturn_keyword_copy; 
   86418             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   86419             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   86420             :   // case: toBeCopied == COPY_DATA for is_constexpr
   86421           0 :      bool is_constexpr_copy = p_is_constexpr; 
   86422           0 :      result->p_is_constexpr = is_constexpr_copy; 
   86423             :   // Copy non-constructor parameter data member (access function): using_new_function_return_type_syntax_copy
   86424             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_new_function_return_type_syntax
   86425             :   // case: toBeCopied == COPY_DATA for using_new_function_return_type_syntax
   86426           0 :      bool using_new_function_return_type_syntax_copy = p_using_new_function_return_type_syntax; 
   86427           0 :      result->p_using_new_function_return_type_syntax = using_new_function_return_type_syntax_copy; 
   86428             :   // Copy non-constructor parameter data member (access function): functionParameterScope_copy
   86429             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionParameterScope
   86430             :   // case: toBeCopied == COPY_DATA for functionParameterScope
   86431           0 :      SgFunctionParameterScope* functionParameterScope_copy = p_functionParameterScope; 
   86432           0 :      result->p_functionParameterScope = functionParameterScope_copy; 
   86433             :   // Copy non-constructor parameter data member (access function): marked_as_edg_normalization_copy
   86434             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for marked_as_edg_normalization
   86435             :   // case: toBeCopied == COPY_DATA for marked_as_edg_normalization
   86436           0 :      bool marked_as_edg_normalization_copy = p_marked_as_edg_normalization; 
   86437           0 :      result->p_marked_as_edg_normalization = marked_as_edg_normalization_copy; 
   86438             :   // Copy non-constructor parameter data member (access function): is_implicit_function_copy
   86439             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_implicit_function
   86440             :   // case: toBeCopied == COPY_DATA for is_implicit_function
   86441           0 :      bool is_implicit_function_copy = p_is_implicit_function; 
   86442           0 :      result->p_is_implicit_function = is_implicit_function_copy; 
   86443             :   // Copy non-constructor parameter data member (access function): templateName_copy
   86444             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateName
   86445             :   // case: toBeCopied == COPY_DATA for templateName
   86446           0 :      SgName templateName_copy = p_templateName; 
   86447           0 :      result->p_templateName = templateName_copy; 
   86448             :   // Copy non-constructor parameter data member (access function): nameResetFromMangledForm_copy
   86449             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameResetFromMangledForm
   86450             :   // case: toBeCopied == COPY_DATA for nameResetFromMangledForm
   86451           0 :      bool nameResetFromMangledForm_copy = p_nameResetFromMangledForm; 
   86452           0 :      result->p_nameResetFromMangledForm = nameResetFromMangledForm_copy; 
   86453             :   // Copy non-constructor parameter data member (access function): template_argument_list_is_explicit_copy
   86454             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for template_argument_list_is_explicit
   86455             :   // case: toBeCopied == COPY_DATA for template_argument_list_is_explicit
   86456           0 :      bool template_argument_list_is_explicit_copy = p_template_argument_list_is_explicit; 
   86457           0 :      result->p_template_argument_list_is_explicit = template_argument_list_is_explicit_copy; 
   86458             :   // case: not a listType for (using conditionalToSetParent)definition
   86459           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   86460             :              { 
   86461           0 :                definition_copy->set_parent(result); 
   86462             :              } 
   86463             : 
   86464             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   86465             : 
   86466             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   86467             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   86468             :   // fixupCopy(result,help);
   86469             : 
   86470             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   86471             :   // the Sg_File_Info objects that are built for the new IR nodes.
   86472           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   86473           0 :      if (locatedNode != NULL)
   86474             :         {
   86475             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   86476           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   86477           0 :           ROSE_ASSERT(start != NULL);
   86478             : #if 0
   86479             :        // Debugging information
   86480             :           if (start->get_parent() == NULL)
   86481             :              {
   86482             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   86483             :              }
   86484             : #endif
   86485           0 :           start->set_parent(locatedNode);
   86486           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   86487             : 
   86488           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   86489             : 
   86490             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   86491             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   86492             :        // ROSE_ASSERT(end != NULL);
   86493           0 :           if (end == NULL)
   86494             :              {
   86495           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   86496             :              }
   86497             :             else
   86498             :              {
   86499             : #if 0
   86500             :             // Debugging information
   86501             :                if (end->get_parent() == NULL)
   86502             :                   {
   86503             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   86504             :                   }
   86505             : #endif
   86506           0 :                end->set_parent(locatedNode);
   86507           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   86508             :              }
   86509             : 
   86510           0 :           SgExpression* expression = isSgExpression(result);
   86511           0 :           if (isSgExpression(this) != NULL)
   86512             :              {
   86513           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   86514             : 
   86515             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   86516           0 :                if (operatorPosition != NULL)
   86517             :                   {
   86518             : #if 0
   86519             :                  // Debugging information
   86520             :                     if (operatorPosition->get_parent() == NULL)
   86521             :                        {
   86522             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   86523             :                        }
   86524             : #endif
   86525           0 :                     operatorPosition->set_parent(expression);
   86526           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   86527             :                   }
   86528             :              }
   86529             :         }
   86530             : 
   86531             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   86532           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   86533           0 :      if (initializedName != NULL)
   86534             :         {
   86535             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   86536           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   86537           0 :           ROSE_ASSERT(start != NULL);
   86538             : #if 0
   86539             :        // Debugging information
   86540             :           if (start->get_parent() == NULL)
   86541             :              {
   86542             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   86543             :              }
   86544             : #endif
   86545           0 :           start->set_parent(initializedName);
   86546           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   86547             : 
   86548             : #if 0
   86549             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   86550             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   86551             : 
   86552             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   86553             :        // ROSE_ASSERT(end != NULL);
   86554             :           if (end == NULL)
   86555             :              {
   86556             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   86557             :              }
   86558             :             else
   86559             :              {
   86560             :                if (end->get_parent() == NULL)
   86561             :                   {
   86562             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   86563             :                   }
   86564             :                end->set_parent(initializedName);
   86565             :                ROSE_ASSERT(end->get_parent() != NULL);
   86566             :              }
   86567             : #endif
   86568             :         }
   86569             : 
   86570             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   86571           0 :      help.insertCopiedNodePair(this,result);
   86572             : 
   86573             :   // printf ("End of copy SgTemplateInstantiationFunctionDecl = %p = %s \n",this,SageInterface::get_name(this).c_str());
   86574             : 
   86575             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   86576             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   86577           0 :      help.decrementDepth();
   86578             : 
   86579             :   // Test if this is the root of the copy!
   86580           0 :      if (help.get_depth() == 0)
   86581             :         {
   86582             :        // This is the original calling node.
   86583             : 
   86584             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   86585             :        // printf ("Calling SgTemplateInstantiationFunctionDecl::fixupCopy() (from root of AST being copied) \n");
   86586             : #if ALT_FIXUP_COPY
   86587             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   86588           0 :           fixupCopy_scopes (result,help);
   86589           0 :           fixupCopy_symbols (result,help);
   86590           0 :           fixupCopy_references (result,help);
   86591             : #else
   86592             :           fixupCopy(result,help);
   86593             : #endif
   86594             :        // Allow this to be called recursively, so accumulate the state.
   86595             :        // Also, clear the state in the SgCopyHelp object.
   86596             :        // help.clearState();
   86597             :         }
   86598             : 
   86599           0 :      return result;
   86600             :    }
   86601             : 
   86602             : 
   86603             : /* #line 86604 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   86604             : 
   86605             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   86606             : 
   86607           0 : SgNode* SgProgramHeaderStatement::copy ( SgCopyHelp& help) const
   86608             :    {
   86609           0 :      SgProgramHeaderStatement* result = NULL;
   86610             : 
   86611             :   // printf ("Copy SgProgramHeaderStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   86612             : 
   86613             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   86614             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   86615             :   // The default value of the depth is 0, so after this call the depth is 1!
   86616           0 :      help.incrementDepth();
   86617             : 
   86618             : #if 0
   86619             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   86620             :   // but it is not generally true that things can only be copied once!
   86621             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   86622             :   // AstAttribute* existingAttribute = const_cast<SgProgramHeaderStatement*>(this)->attribute["copied"];
   86623             :      bool previouslyCopied = const_cast<SgProgramHeaderStatement*>(this)->attribute.exists("copied");
   86624             :      if (previouslyCopied == true)
   86625             :         {
   86626             :           this->get_file_info()->display("Called from copy SgProgramHeaderStatement: debug");
   86627             :         }
   86628             :      ROSE_ASSERT(previouslyCopied == false);
   86629             : 
   86630             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   86631             :      AstAttribute* newAttribute = new AstAttribute();
   86632             :      ROSE_ASSERT(newAttribute != NULL);
   86633             : 
   86634             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   86635             :      const_cast<SgProgramHeaderStatement*>(this)->attribute.add("copied",newAttribute);
   86636             : #endif
   86637             : 
   86638             :   // Copy data members from base classes
   86639             :   // Copy constructor parameter data member: startOfConstruct_copy
   86640             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   86641             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   86642           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   86643           0 :      if ( p_startOfConstruct != NULL ) 
   86644             :         { 
   86645           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   86646             :         } 
   86647             :        else 
   86648             :         { 
   86649             :           startOfConstruct_copy = NULL; 
   86650             :         } 
   86651             :   // Copy constructor parameter data member: name_copy
   86652             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   86653             :   // case: toBeCopied == COPY_DATA for name
   86654           0 :      SgName name_copy = p_name; 
   86655             :   // Copy constructor parameter data member: type_copy
   86656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   86657             :   // case: toBeCopied == COPY_DATA for type
   86658           0 :      SgFunctionType* type_copy = p_type; 
   86659             :   // Copy constructor parameter data member: definition_copy
   86660           0 :      SgFunctionDefinition* definition_copy; 
   86661             :   // case: not a listType for (using conditionalToCopyVariable)definition
   86662           0 :           if (get_definition() != NULL) 
   86663             :              { 
   86664           0 :                definition_copy = static_cast<SgFunctionDefinition*>(help.copyAst(get_definition())); 
   86665             :              } 
   86666             :             else 
   86667             :              { 
   86668             :                definition_copy = NULL; 
   86669             :              } 
   86670             :  
   86671             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   86672             : 
   86673             :   // Build an empty copy of this object (will be filled in, but 
   86674             :   // the parent can't be set and must be set by the caller)
   86675           0 :      result = new SgProgramHeaderStatement(  startOfConstruct_copy, name_copy, type_copy, definition_copy );
   86676           0 :      ROSE_ASSERT(result != NULL);
   86677             : 
   86678             :   // Copy data members of "this" class
   86679             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   86680             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   86681             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   86682           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   86683           0 :      if ( p_endOfConstruct != NULL ) 
   86684             :         { 
   86685           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   86686             :         } 
   86687             :        else 
   86688             :         { 
   86689             :           endOfConstruct_copy = NULL; 
   86690             :         } 
   86691             :   /* check for a valid pointer and delete if present */ 
   86692           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   86693             :   /* add assignment to result here */ 
   86694           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   86695             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   86696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   86697             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   86698           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   86699           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   86700             :         { 
   86701           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   86702             :         } 
   86703             :        else 
   86704             :         { 
   86705             :           attachedPreprocessingInfoPtr_copy = NULL; 
   86706             :         } 
   86707             :   /* check for a valid pointer and delete if present */ 
   86708           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   86709             :   /* add assignment to result here */ 
   86710           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   86711             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   86712             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   86713             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   86714           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   86715           0 :      if ( p_attributeMechanism != NULL ) 
   86716             :         { 
   86717           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   86718             :         } 
   86719             :        else 
   86720             :         { 
   86721             :           attributeMechanism_copy = NULL; 
   86722             :         } 
   86723             :   /* check for a valid pointer and delete if present */ 
   86724           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   86725             :   /* add assignment to result here */ 
   86726           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   86727             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   86728             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   86729             :   // case: toBeCopied == COPY_DATA for numeric_label
   86730           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   86731           0 :      result->p_numeric_label = numeric_label_copy; 
   86732             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   86733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   86734             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   86735           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   86736           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   86737             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   86738             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   86739             :   // case: toBeCopied == COPY_DATA for decl_attributes
   86740           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   86741           0 :      result->p_decl_attributes = decl_attributes_copy; 
   86742             :   // Copy non-constructor parameter data member (access function): linkage_copy
   86743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   86744             :   // case: toBeCopied == COPY_DATA for linkage
   86745           0 :      std::string linkage_copy = p_linkage; 
   86746           0 :      result->p_linkage = linkage_copy; 
   86747             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   86748             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   86749             :   // case: toBeCopied == COPY_DATA for declarationModifier
   86750           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   86751           0 :      result->p_declarationModifier = declarationModifier_copy; 
   86752             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   86753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   86754             :   // case: toBeCopied == COPY_DATA for nameOnly
   86755           0 :      bool nameOnly_copy = p_nameOnly; 
   86756           0 :      result->p_nameOnly = nameOnly_copy; 
   86757             :   // Copy non-constructor parameter data member (access function): forward_copy
   86758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   86759             :   // case: toBeCopied == COPY_DATA for forward
   86760           0 :      bool forward_copy = p_forward; 
   86761           0 :      result->p_forward = forward_copy; 
   86762             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   86763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   86764             :   // case: toBeCopied == COPY_DATA for externBrace
   86765           0 :      bool externBrace_copy = p_externBrace; 
   86766           0 :      result->p_externBrace = externBrace_copy; 
   86767             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   86768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   86769             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   86770           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   86771           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   86772             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   86773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   86774             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   86775           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   86776           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   86777             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   86778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   86779             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   86780           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   86781           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   86782             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   86783             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   86784             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   86785           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   86786           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   86787             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   86788             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   86789             :   // case: toBeCopied == COPY_DATA for binding_label
   86790           0 :      std::string binding_label_copy = p_binding_label; 
   86791           0 :      result->p_binding_label = binding_label_copy; 
   86792             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   86793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   86794             :   // case: toBeCopied == COPY_DATA for declarationScope
   86795           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   86796           0 :      result->p_declarationScope = declarationScope_copy; 
   86797             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   86798             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   86799             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   86800           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   86801           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   86802             :   // Copy non-constructor parameter data member (access function): parameterList_copy
   86803           0 :      SgFunctionParameterList* parameterList_copy; 
   86804             :   // case: not a listType for (using conditionalToCopyVariable)parameterList
   86805           0 :           if (get_parameterList() != NULL) 
   86806             :              { 
   86807           0 :                parameterList_copy = static_cast<SgFunctionParameterList*>(help.copyAst(get_parameterList())); 
   86808             :              } 
   86809             :             else 
   86810             :              { 
   86811             :                parameterList_copy = NULL; 
   86812             :              } 
   86813             :   /* check for a valid pointer and delete if present */ 
   86814           0 :      if (result->p_parameterList != NULL) delete result->p_parameterList; 
   86815           0 :      result->p_parameterList = parameterList_copy; 
   86816             :   // case: not a listType for (using conditionalToSetParent)parameterList
   86817           0 :           if ( (parameterList_copy != NULL) && (parameterList_copy->get_parent() == NULL) && (isSgType(parameterList_copy) == NULL) ) 
   86818             :              { 
   86819           0 :                parameterList_copy->set_parent(result); 
   86820             :              } 
   86821             :   // Copy non-constructor parameter data member (list access function): result->get_functionModifier()
   86822             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionModifier
   86823             :   // case: toBeCopied == COPY_DATA for functionModifier
   86824           0 :      SgFunctionModifier functionModifier_copy = p_functionModifier; 
   86825           0 :      result->p_functionModifier = functionModifier_copy; 
   86826             :   // Copy non-constructor parameter data member (list access function): result->get_specialFunctionModifier()
   86827             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialFunctionModifier
   86828             :   // case: toBeCopied == COPY_DATA for specialFunctionModifier
   86829           0 :      SgSpecialFunctionModifier specialFunctionModifier_copy = p_specialFunctionModifier; 
   86830           0 :      result->p_specialFunctionModifier = specialFunctionModifier_copy; 
   86831             :   // Copy non-constructor parameter data member (access function): exceptionSpecification_copy
   86832             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exceptionSpecification
   86833             :   // case: toBeCopied == COPY_DATA for exceptionSpecification
   86834           0 :      SgTypePtrList exceptionSpecification_copy = p_exceptionSpecification; 
   86835           0 :      result->p_exceptionSpecification = exceptionSpecification_copy; 
   86836             :   // Copy non-constructor parameter data member (access function): named_in_end_statement_copy
   86837             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named_in_end_statement
   86838             :   // case: toBeCopied == COPY_DATA for named_in_end_statement
   86839           0 :      bool named_in_end_statement_copy = p_named_in_end_statement; 
   86840           0 :      result->p_named_in_end_statement = named_in_end_statement_copy; 
   86841             :   // Copy non-constructor parameter data member (access function): asm_name_copy
   86842             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_name
   86843             :   // case: toBeCopied == COPY_DATA for asm_name
   86844           0 :      std::string asm_name_copy = p_asm_name; 
   86845           0 :      result->p_asm_name = asm_name_copy; 
   86846             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   86847           0 :      SgExprListExp* decoratorList_copy; 
   86848             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   86849           0 :           if (get_decoratorList() != NULL) 
   86850             :              { 
   86851           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   86852             :              } 
   86853             :             else 
   86854             :              { 
   86855             :                decoratorList_copy = NULL; 
   86856             :              } 
   86857             :   /* check for a valid pointer and delete if present */ 
   86858           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   86859           0 :      result->p_decoratorList = decoratorList_copy; 
   86860             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   86861           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   86862             :              { 
   86863           0 :                decoratorList_copy->set_parent(result); 
   86864             :              } 
   86865             :   // Copy non-constructor parameter data member (access function): ada_formal_subprogram_decl_copy
   86866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ada_formal_subprogram_decl
   86867             :   // case: toBeCopied == COPY_DATA for ada_formal_subprogram_decl
   86868           0 :      bool ada_formal_subprogram_decl_copy = p_ada_formal_subprogram_decl; 
   86869           0 :      result->p_ada_formal_subprogram_decl = ada_formal_subprogram_decl_copy; 
   86870             :   // Copy non-constructor parameter data member (access function): oldStyleDefinition_copy
   86871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for oldStyleDefinition
   86872             :   // case: toBeCopied == COPY_DATA for oldStyleDefinition
   86873           0 :      bool oldStyleDefinition_copy = p_oldStyleDefinition; 
   86874           0 :      result->p_oldStyleDefinition = oldStyleDefinition_copy; 
   86875             :   // Copy non-constructor parameter data member (access function): scope_copy
   86876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   86877             :   // case: toBeCopied == COPY_DATA for scope
   86878           0 :      SgScopeStatement* scope_copy = p_scope; 
   86879           0 :      result->p_scope = scope_copy; 
   86880             :   // Copy non-constructor parameter data member (access function): specialization_copy
   86881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   86882             :   // case: toBeCopied == COPY_DATA for specialization
   86883           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   86884           0 :      result->p_specialization = specialization_copy; 
   86885             :   // Copy non-constructor parameter data member (no access function): result->p_requiresNameQualificationOnReturnType
   86886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualificationOnReturnType
   86887             :   // case: toBeCopied == COPY_DATA for requiresNameQualificationOnReturnType
   86888           0 :      bool requiresNameQualificationOnReturnType_copy = p_requiresNameQualificationOnReturnType; 
   86889           0 :      result->p_requiresNameQualificationOnReturnType = requiresNameQualificationOnReturnType_copy; 
   86890             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   86891             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   86892             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   86893           0 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   86894           0 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   86895             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   86896             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   86897             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   86898           0 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   86899           0 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   86900             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   86901             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   86902             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   86903           0 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   86904           0 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   86905             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   86906             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   86907             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   86908           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   86909           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   86910             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   86911             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   86912             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   86913           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   86914           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   86915             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   86916             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   86917             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   86918           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   86919           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   86920             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_return_type
   86921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_return_type
   86922             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_return_type
   86923           0 :      int name_qualification_length_for_return_type_copy = p_name_qualification_length_for_return_type; 
   86924           0 :      result->p_name_qualification_length_for_return_type = name_qualification_length_for_return_type_copy; 
   86925             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_return_type
   86926             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_return_type
   86927             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_return_type
   86928           0 :      bool type_elaboration_required_for_return_type_copy = p_type_elaboration_required_for_return_type; 
   86929           0 :      result->p_type_elaboration_required_for_return_type = type_elaboration_required_for_return_type_copy; 
   86930             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_return_type
   86931             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_return_type
   86932             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_return_type
   86933           0 :      bool global_qualification_required_for_return_type_copy = p_global_qualification_required_for_return_type; 
   86934           0 :      result->p_global_qualification_required_for_return_type = global_qualification_required_for_return_type_copy; 
   86935             :   // Copy non-constructor parameter data member (access function): prototypeIsWithoutParameters_copy
   86936             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prototypeIsWithoutParameters
   86937             :   // case: toBeCopied == COPY_DATA for prototypeIsWithoutParameters
   86938           0 :      bool prototypeIsWithoutParameters_copy = p_prototypeIsWithoutParameters; 
   86939           0 :      result->p_prototypeIsWithoutParameters = prototypeIsWithoutParameters_copy; 
   86940             :   // Copy non-constructor parameter data member (access function): gnu_regparm_attribute_copy
   86941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_regparm_attribute
   86942             :   // case: toBeCopied == COPY_DATA for gnu_regparm_attribute
   86943           0 :      int gnu_regparm_attribute_copy = p_gnu_regparm_attribute; 
   86944           0 :      result->p_gnu_regparm_attribute = gnu_regparm_attribute_copy; 
   86945             :   // Copy non-constructor parameter data member (access function): type_syntax_copy
   86946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax
   86947             :   // case: toBeCopied == COPY_DATA for type_syntax
   86948           0 :      SgFunctionType* type_syntax_copy = p_type_syntax; 
   86949           0 :      result->p_type_syntax = type_syntax_copy; 
   86950             :   // Copy non-constructor parameter data member (access function): type_syntax_is_available_copy
   86951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax_is_available
   86952             :   // case: toBeCopied == COPY_DATA for type_syntax_is_available
   86953           0 :      bool type_syntax_is_available_copy = p_type_syntax_is_available; 
   86954           0 :      result->p_type_syntax_is_available = type_syntax_is_available_copy; 
   86955             :   // Copy non-constructor parameter data member (access function): parameterList_syntax_copy
   86956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterList_syntax
   86957             :   // case: toBeCopied == COPY_DATA for parameterList_syntax
   86958           0 :      SgFunctionParameterList* parameterList_syntax_copy = p_parameterList_syntax; 
   86959           0 :      result->p_parameterList_syntax = parameterList_syntax_copy; 
   86960             :   // Copy non-constructor parameter data member (access function): using_C11_Noreturn_keyword_copy
   86961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Noreturn_keyword
   86962             :   // case: toBeCopied == COPY_DATA for using_C11_Noreturn_keyword
   86963           0 :      bool using_C11_Noreturn_keyword_copy = p_using_C11_Noreturn_keyword; 
   86964           0 :      result->p_using_C11_Noreturn_keyword = using_C11_Noreturn_keyword_copy; 
   86965             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   86966             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   86967             :   // case: toBeCopied == COPY_DATA for is_constexpr
   86968           0 :      bool is_constexpr_copy = p_is_constexpr; 
   86969           0 :      result->p_is_constexpr = is_constexpr_copy; 
   86970             :   // Copy non-constructor parameter data member (access function): using_new_function_return_type_syntax_copy
   86971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_new_function_return_type_syntax
   86972             :   // case: toBeCopied == COPY_DATA for using_new_function_return_type_syntax
   86973           0 :      bool using_new_function_return_type_syntax_copy = p_using_new_function_return_type_syntax; 
   86974           0 :      result->p_using_new_function_return_type_syntax = using_new_function_return_type_syntax_copy; 
   86975             :   // Copy non-constructor parameter data member (access function): functionParameterScope_copy
   86976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionParameterScope
   86977             :   // case: toBeCopied == COPY_DATA for functionParameterScope
   86978           0 :      SgFunctionParameterScope* functionParameterScope_copy = p_functionParameterScope; 
   86979           0 :      result->p_functionParameterScope = functionParameterScope_copy; 
   86980             :   // Copy non-constructor parameter data member (access function): marked_as_edg_normalization_copy
   86981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for marked_as_edg_normalization
   86982             :   // case: toBeCopied == COPY_DATA for marked_as_edg_normalization
   86983           0 :      bool marked_as_edg_normalization_copy = p_marked_as_edg_normalization; 
   86984           0 :      result->p_marked_as_edg_normalization = marked_as_edg_normalization_copy; 
   86985             :   // Copy non-constructor parameter data member (access function): is_implicit_function_copy
   86986             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_implicit_function
   86987             :   // case: toBeCopied == COPY_DATA for is_implicit_function
   86988           0 :      bool is_implicit_function_copy = p_is_implicit_function; 
   86989           0 :      result->p_is_implicit_function = is_implicit_function_copy; 
   86990             :   // Copy non-constructor parameter data member (access function): program_statement_explicit_copy
   86991             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for program_statement_explicit
   86992             :   // case: toBeCopied == COPY_DATA for program_statement_explicit
   86993           0 :      bool program_statement_explicit_copy = p_program_statement_explicit; 
   86994           0 :      result->p_program_statement_explicit = program_statement_explicit_copy; 
   86995             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   86996             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   86997             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   86998           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   86999           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   87000             :   // case: not a listType for (using conditionalToSetParent)definition
   87001           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   87002             :              { 
   87003           0 :                definition_copy->set_parent(result); 
   87004             :              } 
   87005             : 
   87006             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   87007             : 
   87008             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   87009             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   87010             :   // fixupCopy(result,help);
   87011             : 
   87012             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   87013             :   // the Sg_File_Info objects that are built for the new IR nodes.
   87014           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   87015           0 :      if (locatedNode != NULL)
   87016             :         {
   87017             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   87018           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   87019           0 :           ROSE_ASSERT(start != NULL);
   87020             : #if 0
   87021             :        // Debugging information
   87022             :           if (start->get_parent() == NULL)
   87023             :              {
   87024             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87025             :              }
   87026             : #endif
   87027           0 :           start->set_parent(locatedNode);
   87028           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   87029             : 
   87030           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   87031             : 
   87032             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   87033             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   87034             :        // ROSE_ASSERT(end != NULL);
   87035           0 :           if (end == NULL)
   87036             :              {
   87037           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   87038             :              }
   87039             :             else
   87040             :              {
   87041             : #if 0
   87042             :             // Debugging information
   87043             :                if (end->get_parent() == NULL)
   87044             :                   {
   87045             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87046             :                   }
   87047             : #endif
   87048           0 :                end->set_parent(locatedNode);
   87049           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   87050             :              }
   87051             : 
   87052           0 :           SgExpression* expression = isSgExpression(result);
   87053           0 :           if (isSgExpression(this) != NULL)
   87054             :              {
   87055           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   87056             : 
   87057             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   87058           0 :                if (operatorPosition != NULL)
   87059             :                   {
   87060             : #if 0
   87061             :                  // Debugging information
   87062             :                     if (operatorPosition->get_parent() == NULL)
   87063             :                        {
   87064             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87065             :                        }
   87066             : #endif
   87067           0 :                     operatorPosition->set_parent(expression);
   87068           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   87069             :                   }
   87070             :              }
   87071             :         }
   87072             : 
   87073             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   87074           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   87075           0 :      if (initializedName != NULL)
   87076             :         {
   87077             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   87078           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   87079           0 :           ROSE_ASSERT(start != NULL);
   87080             : #if 0
   87081             :        // Debugging information
   87082             :           if (start->get_parent() == NULL)
   87083             :              {
   87084             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87085             :              }
   87086             : #endif
   87087           0 :           start->set_parent(initializedName);
   87088           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   87089             : 
   87090             : #if 0
   87091             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   87092             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   87093             : 
   87094             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   87095             :        // ROSE_ASSERT(end != NULL);
   87096             :           if (end == NULL)
   87097             :              {
   87098             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   87099             :              }
   87100             :             else
   87101             :              {
   87102             :                if (end->get_parent() == NULL)
   87103             :                   {
   87104             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87105             :                   }
   87106             :                end->set_parent(initializedName);
   87107             :                ROSE_ASSERT(end->get_parent() != NULL);
   87108             :              }
   87109             : #endif
   87110             :         }
   87111             : 
   87112             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   87113           0 :      help.insertCopiedNodePair(this,result);
   87114             : 
   87115             :   // printf ("End of copy SgProgramHeaderStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   87116             : 
   87117             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   87118             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   87119           0 :      help.decrementDepth();
   87120             : 
   87121             :   // Test if this is the root of the copy!
   87122           0 :      if (help.get_depth() == 0)
   87123             :         {
   87124             :        // This is the original calling node.
   87125             : 
   87126             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   87127             :        // printf ("Calling SgProgramHeaderStatement::fixupCopy() (from root of AST being copied) \n");
   87128             : #if ALT_FIXUP_COPY
   87129             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   87130           0 :           fixupCopy_scopes (result,help);
   87131           0 :           fixupCopy_symbols (result,help);
   87132           0 :           fixupCopy_references (result,help);
   87133             : #else
   87134             :           fixupCopy(result,help);
   87135             : #endif
   87136             :        // Allow this to be called recursively, so accumulate the state.
   87137             :        // Also, clear the state in the SgCopyHelp object.
   87138             :        // help.clearState();
   87139             :         }
   87140             : 
   87141           0 :      return result;
   87142             :    }
   87143             : 
   87144             : 
   87145             : /* #line 87146 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   87146             : 
   87147             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   87148             : 
   87149           0 : SgNode* SgProcedureHeaderStatement::copy ( SgCopyHelp& help) const
   87150             :    {
   87151           0 :      SgProcedureHeaderStatement* result = NULL;
   87152             : 
   87153             :   // printf ("Copy SgProcedureHeaderStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   87154             : 
   87155             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   87156             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   87157             :   // The default value of the depth is 0, so after this call the depth is 1!
   87158           0 :      help.incrementDepth();
   87159             : 
   87160             : #if 0
   87161             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   87162             :   // but it is not generally true that things can only be copied once!
   87163             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   87164             :   // AstAttribute* existingAttribute = const_cast<SgProcedureHeaderStatement*>(this)->attribute["copied"];
   87165             :      bool previouslyCopied = const_cast<SgProcedureHeaderStatement*>(this)->attribute.exists("copied");
   87166             :      if (previouslyCopied == true)
   87167             :         {
   87168             :           this->get_file_info()->display("Called from copy SgProcedureHeaderStatement: debug");
   87169             :         }
   87170             :      ROSE_ASSERT(previouslyCopied == false);
   87171             : 
   87172             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   87173             :      AstAttribute* newAttribute = new AstAttribute();
   87174             :      ROSE_ASSERT(newAttribute != NULL);
   87175             : 
   87176             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   87177             :      const_cast<SgProcedureHeaderStatement*>(this)->attribute.add("copied",newAttribute);
   87178             : #endif
   87179             : 
   87180             :   // Copy data members from base classes
   87181             :   // Copy constructor parameter data member: startOfConstruct_copy
   87182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   87183             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   87184           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   87185           0 :      if ( p_startOfConstruct != NULL ) 
   87186             :         { 
   87187           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   87188             :         } 
   87189             :        else 
   87190             :         { 
   87191             :           startOfConstruct_copy = NULL; 
   87192             :         } 
   87193             :   // Copy constructor parameter data member: name_copy
   87194             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   87195             :   // case: toBeCopied == COPY_DATA for name
   87196           0 :      SgName name_copy = p_name; 
   87197             :   // Copy constructor parameter data member: type_copy
   87198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   87199             :   // case: toBeCopied == COPY_DATA for type
   87200           0 :      SgFunctionType* type_copy = p_type; 
   87201             :   // Copy constructor parameter data member: definition_copy
   87202           0 :      SgFunctionDefinition* definition_copy; 
   87203             :   // case: not a listType for (using conditionalToCopyVariable)definition
   87204           0 :           if (get_definition() != NULL) 
   87205             :              { 
   87206           0 :                definition_copy = static_cast<SgFunctionDefinition*>(help.copyAst(get_definition())); 
   87207             :              } 
   87208             :             else 
   87209             :              { 
   87210             :                definition_copy = NULL; 
   87211             :              } 
   87212             :  
   87213             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   87214             : 
   87215             :   // Build an empty copy of this object (will be filled in, but 
   87216             :   // the parent can't be set and must be set by the caller)
   87217           0 :      result = new SgProcedureHeaderStatement(  startOfConstruct_copy, name_copy, type_copy, definition_copy );
   87218           0 :      ROSE_ASSERT(result != NULL);
   87219             : 
   87220             :   // Copy data members of "this" class
   87221             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   87222             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   87223             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   87224           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   87225           0 :      if ( p_endOfConstruct != NULL ) 
   87226             :         { 
   87227           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   87228             :         } 
   87229             :        else 
   87230             :         { 
   87231             :           endOfConstruct_copy = NULL; 
   87232             :         } 
   87233             :   /* check for a valid pointer and delete if present */ 
   87234           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   87235             :   /* add assignment to result here */ 
   87236           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   87237             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   87238             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   87239             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   87240           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   87241           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   87242             :         { 
   87243           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   87244             :         } 
   87245             :        else 
   87246             :         { 
   87247             :           attachedPreprocessingInfoPtr_copy = NULL; 
   87248             :         } 
   87249             :   /* check for a valid pointer and delete if present */ 
   87250           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   87251             :   /* add assignment to result here */ 
   87252           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   87253             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   87254             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   87255             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   87256           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   87257           0 :      if ( p_attributeMechanism != NULL ) 
   87258             :         { 
   87259           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   87260             :         } 
   87261             :        else 
   87262             :         { 
   87263             :           attributeMechanism_copy = NULL; 
   87264             :         } 
   87265             :   /* check for a valid pointer and delete if present */ 
   87266           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   87267             :   /* add assignment to result here */ 
   87268           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   87269             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   87270             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   87271             :   // case: toBeCopied == COPY_DATA for numeric_label
   87272           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   87273           0 :      result->p_numeric_label = numeric_label_copy; 
   87274             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   87275             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   87276             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   87277           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   87278           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   87279             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   87280             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   87281             :   // case: toBeCopied == COPY_DATA for decl_attributes
   87282           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   87283           0 :      result->p_decl_attributes = decl_attributes_copy; 
   87284             :   // Copy non-constructor parameter data member (access function): linkage_copy
   87285             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   87286             :   // case: toBeCopied == COPY_DATA for linkage
   87287           0 :      std::string linkage_copy = p_linkage; 
   87288           0 :      result->p_linkage = linkage_copy; 
   87289             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   87290             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   87291             :   // case: toBeCopied == COPY_DATA for declarationModifier
   87292           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   87293           0 :      result->p_declarationModifier = declarationModifier_copy; 
   87294             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   87295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   87296             :   // case: toBeCopied == COPY_DATA for nameOnly
   87297           0 :      bool nameOnly_copy = p_nameOnly; 
   87298           0 :      result->p_nameOnly = nameOnly_copy; 
   87299             :   // Copy non-constructor parameter data member (access function): forward_copy
   87300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   87301             :   // case: toBeCopied == COPY_DATA for forward
   87302           0 :      bool forward_copy = p_forward; 
   87303           0 :      result->p_forward = forward_copy; 
   87304             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   87305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   87306             :   // case: toBeCopied == COPY_DATA for externBrace
   87307           0 :      bool externBrace_copy = p_externBrace; 
   87308           0 :      result->p_externBrace = externBrace_copy; 
   87309             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   87310             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   87311             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   87312           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   87313           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   87314             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   87315             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   87316             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   87317           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   87318           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   87319             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   87320             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   87321             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   87322           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   87323           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   87324             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   87325             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   87326             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   87327           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   87328           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   87329             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   87330             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   87331             :   // case: toBeCopied == COPY_DATA for binding_label
   87332           0 :      std::string binding_label_copy = p_binding_label; 
   87333           0 :      result->p_binding_label = binding_label_copy; 
   87334             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   87335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   87336             :   // case: toBeCopied == COPY_DATA for declarationScope
   87337           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   87338           0 :      result->p_declarationScope = declarationScope_copy; 
   87339             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   87340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   87341             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   87342           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   87343           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   87344             :   // Copy non-constructor parameter data member (access function): parameterList_copy
   87345           0 :      SgFunctionParameterList* parameterList_copy; 
   87346             :   // case: not a listType for (using conditionalToCopyVariable)parameterList
   87347           0 :           if (get_parameterList() != NULL) 
   87348             :              { 
   87349           0 :                parameterList_copy = static_cast<SgFunctionParameterList*>(help.copyAst(get_parameterList())); 
   87350             :              } 
   87351             :             else 
   87352             :              { 
   87353             :                parameterList_copy = NULL; 
   87354             :              } 
   87355             :   /* check for a valid pointer and delete if present */ 
   87356           0 :      if (result->p_parameterList != NULL) delete result->p_parameterList; 
   87357           0 :      result->p_parameterList = parameterList_copy; 
   87358             :   // case: not a listType for (using conditionalToSetParent)parameterList
   87359           0 :           if ( (parameterList_copy != NULL) && (parameterList_copy->get_parent() == NULL) && (isSgType(parameterList_copy) == NULL) ) 
   87360             :              { 
   87361           0 :                parameterList_copy->set_parent(result); 
   87362             :              } 
   87363             :   // Copy non-constructor parameter data member (list access function): result->get_functionModifier()
   87364             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionModifier
   87365             :   // case: toBeCopied == COPY_DATA for functionModifier
   87366           0 :      SgFunctionModifier functionModifier_copy = p_functionModifier; 
   87367           0 :      result->p_functionModifier = functionModifier_copy; 
   87368             :   // Copy non-constructor parameter data member (list access function): result->get_specialFunctionModifier()
   87369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialFunctionModifier
   87370             :   // case: toBeCopied == COPY_DATA for specialFunctionModifier
   87371           0 :      SgSpecialFunctionModifier specialFunctionModifier_copy = p_specialFunctionModifier; 
   87372           0 :      result->p_specialFunctionModifier = specialFunctionModifier_copy; 
   87373             :   // Copy non-constructor parameter data member (access function): exceptionSpecification_copy
   87374             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exceptionSpecification
   87375             :   // case: toBeCopied == COPY_DATA for exceptionSpecification
   87376           0 :      SgTypePtrList exceptionSpecification_copy = p_exceptionSpecification; 
   87377           0 :      result->p_exceptionSpecification = exceptionSpecification_copy; 
   87378             :   // Copy non-constructor parameter data member (access function): named_in_end_statement_copy
   87379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named_in_end_statement
   87380             :   // case: toBeCopied == COPY_DATA for named_in_end_statement
   87381           0 :      bool named_in_end_statement_copy = p_named_in_end_statement; 
   87382           0 :      result->p_named_in_end_statement = named_in_end_statement_copy; 
   87383             :   // Copy non-constructor parameter data member (access function): asm_name_copy
   87384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_name
   87385             :   // case: toBeCopied == COPY_DATA for asm_name
   87386           0 :      std::string asm_name_copy = p_asm_name; 
   87387           0 :      result->p_asm_name = asm_name_copy; 
   87388             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   87389           0 :      SgExprListExp* decoratorList_copy; 
   87390             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   87391           0 :           if (get_decoratorList() != NULL) 
   87392             :              { 
   87393           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   87394             :              } 
   87395             :             else 
   87396             :              { 
   87397             :                decoratorList_copy = NULL; 
   87398             :              } 
   87399             :   /* check for a valid pointer and delete if present */ 
   87400           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   87401           0 :      result->p_decoratorList = decoratorList_copy; 
   87402             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   87403           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   87404             :              { 
   87405           0 :                decoratorList_copy->set_parent(result); 
   87406             :              } 
   87407             :   // Copy non-constructor parameter data member (access function): ada_formal_subprogram_decl_copy
   87408             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ada_formal_subprogram_decl
   87409             :   // case: toBeCopied == COPY_DATA for ada_formal_subprogram_decl
   87410           0 :      bool ada_formal_subprogram_decl_copy = p_ada_formal_subprogram_decl; 
   87411           0 :      result->p_ada_formal_subprogram_decl = ada_formal_subprogram_decl_copy; 
   87412             :   // Copy non-constructor parameter data member (access function): oldStyleDefinition_copy
   87413             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for oldStyleDefinition
   87414             :   // case: toBeCopied == COPY_DATA for oldStyleDefinition
   87415           0 :      bool oldStyleDefinition_copy = p_oldStyleDefinition; 
   87416           0 :      result->p_oldStyleDefinition = oldStyleDefinition_copy; 
   87417             :   // Copy non-constructor parameter data member (access function): scope_copy
   87418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   87419             :   // case: toBeCopied == COPY_DATA for scope
   87420           0 :      SgScopeStatement* scope_copy = p_scope; 
   87421           0 :      result->p_scope = scope_copy; 
   87422             :   // Copy non-constructor parameter data member (access function): specialization_copy
   87423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   87424             :   // case: toBeCopied == COPY_DATA for specialization
   87425           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   87426           0 :      result->p_specialization = specialization_copy; 
   87427             :   // Copy non-constructor parameter data member (no access function): result->p_requiresNameQualificationOnReturnType
   87428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualificationOnReturnType
   87429             :   // case: toBeCopied == COPY_DATA for requiresNameQualificationOnReturnType
   87430           0 :      bool requiresNameQualificationOnReturnType_copy = p_requiresNameQualificationOnReturnType; 
   87431           0 :      result->p_requiresNameQualificationOnReturnType = requiresNameQualificationOnReturnType_copy; 
   87432             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   87433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   87434             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   87435           0 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   87436           0 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   87437             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   87438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   87439             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   87440           0 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   87441           0 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   87442             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   87443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   87444             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   87445           0 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   87446           0 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   87447             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   87448             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   87449             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   87450           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   87451           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   87452             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   87453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   87454             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   87455           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   87456           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   87457             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   87458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   87459             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   87460           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   87461           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   87462             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_return_type
   87463             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_return_type
   87464             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_return_type
   87465           0 :      int name_qualification_length_for_return_type_copy = p_name_qualification_length_for_return_type; 
   87466           0 :      result->p_name_qualification_length_for_return_type = name_qualification_length_for_return_type_copy; 
   87467             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_return_type
   87468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_return_type
   87469             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_return_type
   87470           0 :      bool type_elaboration_required_for_return_type_copy = p_type_elaboration_required_for_return_type; 
   87471           0 :      result->p_type_elaboration_required_for_return_type = type_elaboration_required_for_return_type_copy; 
   87472             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_return_type
   87473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_return_type
   87474             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_return_type
   87475           0 :      bool global_qualification_required_for_return_type_copy = p_global_qualification_required_for_return_type; 
   87476           0 :      result->p_global_qualification_required_for_return_type = global_qualification_required_for_return_type_copy; 
   87477             :   // Copy non-constructor parameter data member (access function): prototypeIsWithoutParameters_copy
   87478             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prototypeIsWithoutParameters
   87479             :   // case: toBeCopied == COPY_DATA for prototypeIsWithoutParameters
   87480           0 :      bool prototypeIsWithoutParameters_copy = p_prototypeIsWithoutParameters; 
   87481           0 :      result->p_prototypeIsWithoutParameters = prototypeIsWithoutParameters_copy; 
   87482             :   // Copy non-constructor parameter data member (access function): gnu_regparm_attribute_copy
   87483             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_regparm_attribute
   87484             :   // case: toBeCopied == COPY_DATA for gnu_regparm_attribute
   87485           0 :      int gnu_regparm_attribute_copy = p_gnu_regparm_attribute; 
   87486           0 :      result->p_gnu_regparm_attribute = gnu_regparm_attribute_copy; 
   87487             :   // Copy non-constructor parameter data member (access function): type_syntax_copy
   87488             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax
   87489             :   // case: toBeCopied == COPY_DATA for type_syntax
   87490           0 :      SgFunctionType* type_syntax_copy = p_type_syntax; 
   87491           0 :      result->p_type_syntax = type_syntax_copy; 
   87492             :   // Copy non-constructor parameter data member (access function): type_syntax_is_available_copy
   87493             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax_is_available
   87494             :   // case: toBeCopied == COPY_DATA for type_syntax_is_available
   87495           0 :      bool type_syntax_is_available_copy = p_type_syntax_is_available; 
   87496           0 :      result->p_type_syntax_is_available = type_syntax_is_available_copy; 
   87497             :   // Copy non-constructor parameter data member (access function): parameterList_syntax_copy
   87498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterList_syntax
   87499             :   // case: toBeCopied == COPY_DATA for parameterList_syntax
   87500           0 :      SgFunctionParameterList* parameterList_syntax_copy = p_parameterList_syntax; 
   87501           0 :      result->p_parameterList_syntax = parameterList_syntax_copy; 
   87502             :   // Copy non-constructor parameter data member (access function): using_C11_Noreturn_keyword_copy
   87503             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Noreturn_keyword
   87504             :   // case: toBeCopied == COPY_DATA for using_C11_Noreturn_keyword
   87505           0 :      bool using_C11_Noreturn_keyword_copy = p_using_C11_Noreturn_keyword; 
   87506           0 :      result->p_using_C11_Noreturn_keyword = using_C11_Noreturn_keyword_copy; 
   87507             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   87508             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   87509             :   // case: toBeCopied == COPY_DATA for is_constexpr
   87510           0 :      bool is_constexpr_copy = p_is_constexpr; 
   87511           0 :      result->p_is_constexpr = is_constexpr_copy; 
   87512             :   // Copy non-constructor parameter data member (access function): using_new_function_return_type_syntax_copy
   87513             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_new_function_return_type_syntax
   87514             :   // case: toBeCopied == COPY_DATA for using_new_function_return_type_syntax
   87515           0 :      bool using_new_function_return_type_syntax_copy = p_using_new_function_return_type_syntax; 
   87516           0 :      result->p_using_new_function_return_type_syntax = using_new_function_return_type_syntax_copy; 
   87517             :   // Copy non-constructor parameter data member (access function): functionParameterScope_copy
   87518             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionParameterScope
   87519             :   // case: toBeCopied == COPY_DATA for functionParameterScope
   87520           0 :      SgFunctionParameterScope* functionParameterScope_copy = p_functionParameterScope; 
   87521           0 :      result->p_functionParameterScope = functionParameterScope_copy; 
   87522             :   // Copy non-constructor parameter data member (access function): marked_as_edg_normalization_copy
   87523             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for marked_as_edg_normalization
   87524             :   // case: toBeCopied == COPY_DATA for marked_as_edg_normalization
   87525           0 :      bool marked_as_edg_normalization_copy = p_marked_as_edg_normalization; 
   87526           0 :      result->p_marked_as_edg_normalization = marked_as_edg_normalization_copy; 
   87527             :   // Copy non-constructor parameter data member (access function): is_implicit_function_copy
   87528             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_implicit_function
   87529             :   // case: toBeCopied == COPY_DATA for is_implicit_function
   87530           0 :      bool is_implicit_function_copy = p_is_implicit_function; 
   87531           0 :      result->p_is_implicit_function = is_implicit_function_copy; 
   87532             :   // Copy non-constructor parameter data member (access function): subprogram_kind_copy
   87533             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for subprogram_kind
   87534             :   // case: toBeCopied == COPY_DATA for subprogram_kind
   87535           0 :      SgProcedureHeaderStatement::subprogram_kind_enum subprogram_kind_copy = p_subprogram_kind; 
   87536           0 :      result->p_subprogram_kind = subprogram_kind_copy; 
   87537             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
   87538             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
   87539             :   // case: toBeCopied == COPY_DATA for end_numeric_label
   87540           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
   87541           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
   87542             :   // Copy non-constructor parameter data member (access function): result_name_copy
   87543           0 :      SgInitializedName* result_name_copy; 
   87544             :   // case: not a listType for (using conditionalToCopyVariable)result_name
   87545           0 :           if (get_result_name() != NULL) 
   87546             :              { 
   87547           0 :                result_name_copy = static_cast<SgInitializedName*>(help.copyAst(get_result_name())); 
   87548             :              } 
   87549             :             else 
   87550             :              { 
   87551             :                result_name_copy = NULL; 
   87552             :              } 
   87553             :   /* check for a valid pointer and delete if present */ 
   87554           0 :      if (result->p_result_name != NULL) delete result->p_result_name; 
   87555           0 :      result->p_result_name = result_name_copy; 
   87556             :   // case: not a listType for (using conditionalToSetParent)result_name
   87557           0 :           if ( (result_name_copy != NULL) && (result_name_copy->get_parent() == NULL) && (isSgType(result_name_copy) == NULL) ) 
   87558             :              { 
   87559           0 :                result_name_copy->set_parent(result); 
   87560             :              } 
   87561             :   // case: not a listType for (using conditionalToSetParent)definition
   87562           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   87563             :              { 
   87564           0 :                definition_copy->set_parent(result); 
   87565             :              } 
   87566             : 
   87567             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   87568             : 
   87569             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   87570             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   87571             :   // fixupCopy(result,help);
   87572             : 
   87573             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   87574             :   // the Sg_File_Info objects that are built for the new IR nodes.
   87575           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   87576           0 :      if (locatedNode != NULL)
   87577             :         {
   87578             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   87579           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   87580           0 :           ROSE_ASSERT(start != NULL);
   87581             : #if 0
   87582             :        // Debugging information
   87583             :           if (start->get_parent() == NULL)
   87584             :              {
   87585             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87586             :              }
   87587             : #endif
   87588           0 :           start->set_parent(locatedNode);
   87589           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   87590             : 
   87591           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   87592             : 
   87593             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   87594             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   87595             :        // ROSE_ASSERT(end != NULL);
   87596           0 :           if (end == NULL)
   87597             :              {
   87598           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   87599             :              }
   87600             :             else
   87601             :              {
   87602             : #if 0
   87603             :             // Debugging information
   87604             :                if (end->get_parent() == NULL)
   87605             :                   {
   87606             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87607             :                   }
   87608             : #endif
   87609           0 :                end->set_parent(locatedNode);
   87610           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   87611             :              }
   87612             : 
   87613           0 :           SgExpression* expression = isSgExpression(result);
   87614           0 :           if (isSgExpression(this) != NULL)
   87615             :              {
   87616           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   87617             : 
   87618             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   87619           0 :                if (operatorPosition != NULL)
   87620             :                   {
   87621             : #if 0
   87622             :                  // Debugging information
   87623             :                     if (operatorPosition->get_parent() == NULL)
   87624             :                        {
   87625             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87626             :                        }
   87627             : #endif
   87628           0 :                     operatorPosition->set_parent(expression);
   87629           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   87630             :                   }
   87631             :              }
   87632             :         }
   87633             : 
   87634             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   87635           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   87636           0 :      if (initializedName != NULL)
   87637             :         {
   87638             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   87639           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   87640           0 :           ROSE_ASSERT(start != NULL);
   87641             : #if 0
   87642             :        // Debugging information
   87643             :           if (start->get_parent() == NULL)
   87644             :              {
   87645             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87646             :              }
   87647             : #endif
   87648           0 :           start->set_parent(initializedName);
   87649           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   87650             : 
   87651             : #if 0
   87652             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   87653             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   87654             : 
   87655             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   87656             :        // ROSE_ASSERT(end != NULL);
   87657             :           if (end == NULL)
   87658             :              {
   87659             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   87660             :              }
   87661             :             else
   87662             :              {
   87663             :                if (end->get_parent() == NULL)
   87664             :                   {
   87665             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   87666             :                   }
   87667             :                end->set_parent(initializedName);
   87668             :                ROSE_ASSERT(end->get_parent() != NULL);
   87669             :              }
   87670             : #endif
   87671             :         }
   87672             : 
   87673             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   87674           0 :      help.insertCopiedNodePair(this,result);
   87675             : 
   87676             :   // printf ("End of copy SgProcedureHeaderStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   87677             : 
   87678             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   87679             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   87680           0 :      help.decrementDepth();
   87681             : 
   87682             :   // Test if this is the root of the copy!
   87683           0 :      if (help.get_depth() == 0)
   87684             :         {
   87685             :        // This is the original calling node.
   87686             : 
   87687             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   87688             :        // printf ("Calling SgProcedureHeaderStatement::fixupCopy() (from root of AST being copied) \n");
   87689             : #if ALT_FIXUP_COPY
   87690             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   87691           0 :           fixupCopy_scopes (result,help);
   87692           0 :           fixupCopy_symbols (result,help);
   87693           0 :           fixupCopy_references (result,help);
   87694             : #else
   87695             :           fixupCopy(result,help);
   87696             : #endif
   87697             :        // Allow this to be called recursively, so accumulate the state.
   87698             :        // Also, clear the state in the SgCopyHelp object.
   87699             :        // help.clearState();
   87700             :         }
   87701             : 
   87702           0 :      return result;
   87703             :    }
   87704             : 
   87705             : 
   87706             : /* #line 87707 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   87707             : 
   87708             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   87709             : 
   87710           0 : SgNode* SgEntryStatement::copy ( SgCopyHelp& help) const
   87711             :    {
   87712           0 :      SgEntryStatement* result = NULL;
   87713             : 
   87714             :   // printf ("Copy SgEntryStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   87715             : 
   87716             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   87717             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   87718             :   // The default value of the depth is 0, so after this call the depth is 1!
   87719           0 :      help.incrementDepth();
   87720             : 
   87721             : #if 0
   87722             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   87723             :   // but it is not generally true that things can only be copied once!
   87724             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   87725             :   // AstAttribute* existingAttribute = const_cast<SgEntryStatement*>(this)->attribute["copied"];
   87726             :      bool previouslyCopied = const_cast<SgEntryStatement*>(this)->attribute.exists("copied");
   87727             :      if (previouslyCopied == true)
   87728             :         {
   87729             :           this->get_file_info()->display("Called from copy SgEntryStatement: debug");
   87730             :         }
   87731             :      ROSE_ASSERT(previouslyCopied == false);
   87732             : 
   87733             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   87734             :      AstAttribute* newAttribute = new AstAttribute();
   87735             :      ROSE_ASSERT(newAttribute != NULL);
   87736             : 
   87737             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   87738             :      const_cast<SgEntryStatement*>(this)->attribute.add("copied",newAttribute);
   87739             : #endif
   87740             : 
   87741             :   // Copy data members from base classes
   87742             :   // Copy constructor parameter data member: startOfConstruct_copy
   87743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   87744             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   87745           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   87746           0 :      if ( p_startOfConstruct != NULL ) 
   87747             :         { 
   87748           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   87749             :         } 
   87750             :        else 
   87751             :         { 
   87752             :           startOfConstruct_copy = NULL; 
   87753             :         } 
   87754             :   // Copy constructor parameter data member: name_copy
   87755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   87756             :   // case: toBeCopied == COPY_DATA for name
   87757           0 :      SgName name_copy = p_name; 
   87758             :   // Copy constructor parameter data member: type_copy
   87759             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   87760             :   // case: toBeCopied == COPY_DATA for type
   87761           0 :      SgFunctionType* type_copy = p_type; 
   87762             :   // Copy constructor parameter data member: definition_copy
   87763           0 :      SgFunctionDefinition* definition_copy; 
   87764             :   // case: not a listType for (using conditionalToCopyVariable)definition
   87765           0 :           if (get_definition() != NULL) 
   87766             :              { 
   87767           0 :                definition_copy = static_cast<SgFunctionDefinition*>(help.copyAst(get_definition())); 
   87768             :              } 
   87769             :             else 
   87770             :              { 
   87771             :                definition_copy = NULL; 
   87772             :              } 
   87773             :  
   87774             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   87775             : 
   87776             :   // Build an empty copy of this object (will be filled in, but 
   87777             :   // the parent can't be set and must be set by the caller)
   87778           0 :      result = new SgEntryStatement(  startOfConstruct_copy, name_copy, type_copy, definition_copy );
   87779           0 :      ROSE_ASSERT(result != NULL);
   87780             : 
   87781             :   // Copy data members of "this" class
   87782             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   87783             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   87784             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   87785           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   87786           0 :      if ( p_endOfConstruct != NULL ) 
   87787             :         { 
   87788           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   87789             :         } 
   87790             :        else 
   87791             :         { 
   87792             :           endOfConstruct_copy = NULL; 
   87793             :         } 
   87794             :   /* check for a valid pointer and delete if present */ 
   87795           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   87796             :   /* add assignment to result here */ 
   87797           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   87798             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   87799             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   87800             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   87801           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   87802           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   87803             :         { 
   87804           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   87805             :         } 
   87806             :        else 
   87807             :         { 
   87808             :           attachedPreprocessingInfoPtr_copy = NULL; 
   87809             :         } 
   87810             :   /* check for a valid pointer and delete if present */ 
   87811           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   87812             :   /* add assignment to result here */ 
   87813           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   87814             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   87815             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   87816             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   87817           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   87818           0 :      if ( p_attributeMechanism != NULL ) 
   87819             :         { 
   87820           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   87821             :         } 
   87822             :        else 
   87823             :         { 
   87824             :           attributeMechanism_copy = NULL; 
   87825             :         } 
   87826             :   /* check for a valid pointer and delete if present */ 
   87827           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   87828             :   /* add assignment to result here */ 
   87829           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   87830             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   87831             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   87832             :   // case: toBeCopied == COPY_DATA for numeric_label
   87833           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   87834           0 :      result->p_numeric_label = numeric_label_copy; 
   87835             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   87836             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   87837             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   87838           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   87839           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   87840             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   87841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   87842             :   // case: toBeCopied == COPY_DATA for decl_attributes
   87843           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   87844           0 :      result->p_decl_attributes = decl_attributes_copy; 
   87845             :   // Copy non-constructor parameter data member (access function): linkage_copy
   87846             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   87847             :   // case: toBeCopied == COPY_DATA for linkage
   87848           0 :      std::string linkage_copy = p_linkage; 
   87849           0 :      result->p_linkage = linkage_copy; 
   87850             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   87851             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   87852             :   // case: toBeCopied == COPY_DATA for declarationModifier
   87853           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   87854           0 :      result->p_declarationModifier = declarationModifier_copy; 
   87855             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   87856             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   87857             :   // case: toBeCopied == COPY_DATA for nameOnly
   87858           0 :      bool nameOnly_copy = p_nameOnly; 
   87859           0 :      result->p_nameOnly = nameOnly_copy; 
   87860             :   // Copy non-constructor parameter data member (access function): forward_copy
   87861             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   87862             :   // case: toBeCopied == COPY_DATA for forward
   87863           0 :      bool forward_copy = p_forward; 
   87864           0 :      result->p_forward = forward_copy; 
   87865             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   87866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   87867             :   // case: toBeCopied == COPY_DATA for externBrace
   87868           0 :      bool externBrace_copy = p_externBrace; 
   87869           0 :      result->p_externBrace = externBrace_copy; 
   87870             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   87871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   87872             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   87873           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   87874           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   87875             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   87876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   87877             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   87878           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   87879           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   87880             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   87881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   87882             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   87883           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   87884           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   87885             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   87886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   87887             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   87888           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   87889           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   87890             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   87891             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   87892             :   // case: toBeCopied == COPY_DATA for binding_label
   87893           0 :      std::string binding_label_copy = p_binding_label; 
   87894           0 :      result->p_binding_label = binding_label_copy; 
   87895             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   87896             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   87897             :   // case: toBeCopied == COPY_DATA for declarationScope
   87898           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   87899           0 :      result->p_declarationScope = declarationScope_copy; 
   87900             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   87901             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   87902             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   87903           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   87904           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   87905             :   // Copy non-constructor parameter data member (access function): parameterList_copy
   87906           0 :      SgFunctionParameterList* parameterList_copy; 
   87907             :   // case: not a listType for (using conditionalToCopyVariable)parameterList
   87908           0 :           if (get_parameterList() != NULL) 
   87909             :              { 
   87910           0 :                parameterList_copy = static_cast<SgFunctionParameterList*>(help.copyAst(get_parameterList())); 
   87911             :              } 
   87912             :             else 
   87913             :              { 
   87914             :                parameterList_copy = NULL; 
   87915             :              } 
   87916             :   /* check for a valid pointer and delete if present */ 
   87917           0 :      if (result->p_parameterList != NULL) delete result->p_parameterList; 
   87918           0 :      result->p_parameterList = parameterList_copy; 
   87919             :   // case: not a listType for (using conditionalToSetParent)parameterList
   87920           0 :           if ( (parameterList_copy != NULL) && (parameterList_copy->get_parent() == NULL) && (isSgType(parameterList_copy) == NULL) ) 
   87921             :              { 
   87922           0 :                parameterList_copy->set_parent(result); 
   87923             :              } 
   87924             :   // Copy non-constructor parameter data member (list access function): result->get_functionModifier()
   87925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionModifier
   87926             :   // case: toBeCopied == COPY_DATA for functionModifier
   87927           0 :      SgFunctionModifier functionModifier_copy = p_functionModifier; 
   87928           0 :      result->p_functionModifier = functionModifier_copy; 
   87929             :   // Copy non-constructor parameter data member (list access function): result->get_specialFunctionModifier()
   87930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialFunctionModifier
   87931             :   // case: toBeCopied == COPY_DATA for specialFunctionModifier
   87932           0 :      SgSpecialFunctionModifier specialFunctionModifier_copy = p_specialFunctionModifier; 
   87933           0 :      result->p_specialFunctionModifier = specialFunctionModifier_copy; 
   87934             :   // Copy non-constructor parameter data member (access function): exceptionSpecification_copy
   87935             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exceptionSpecification
   87936             :   // case: toBeCopied == COPY_DATA for exceptionSpecification
   87937           0 :      SgTypePtrList exceptionSpecification_copy = p_exceptionSpecification; 
   87938           0 :      result->p_exceptionSpecification = exceptionSpecification_copy; 
   87939             :   // Copy non-constructor parameter data member (access function): named_in_end_statement_copy
   87940             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named_in_end_statement
   87941             :   // case: toBeCopied == COPY_DATA for named_in_end_statement
   87942           0 :      bool named_in_end_statement_copy = p_named_in_end_statement; 
   87943           0 :      result->p_named_in_end_statement = named_in_end_statement_copy; 
   87944             :   // Copy non-constructor parameter data member (access function): asm_name_copy
   87945             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asm_name
   87946             :   // case: toBeCopied == COPY_DATA for asm_name
   87947           0 :      std::string asm_name_copy = p_asm_name; 
   87948           0 :      result->p_asm_name = asm_name_copy; 
   87949             :   // Copy non-constructor parameter data member (access function): decoratorList_copy
   87950           0 :      SgExprListExp* decoratorList_copy; 
   87951             :   // case: not a listType for (using conditionalToCopyVariable)decoratorList
   87952           0 :           if (get_decoratorList() != NULL) 
   87953             :              { 
   87954           0 :                decoratorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_decoratorList())); 
   87955             :              } 
   87956             :             else 
   87957             :              { 
   87958             :                decoratorList_copy = NULL; 
   87959             :              } 
   87960             :   /* check for a valid pointer and delete if present */ 
   87961           0 :      if (result->p_decoratorList != NULL) delete result->p_decoratorList; 
   87962           0 :      result->p_decoratorList = decoratorList_copy; 
   87963             :   // case: not a listType for (using conditionalToSetParent)decoratorList
   87964           0 :           if ( (decoratorList_copy != NULL) && (decoratorList_copy->get_parent() == NULL) && (isSgType(decoratorList_copy) == NULL) ) 
   87965             :              { 
   87966           0 :                decoratorList_copy->set_parent(result); 
   87967             :              } 
   87968             :   // Copy non-constructor parameter data member (access function): ada_formal_subprogram_decl_copy
   87969             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for ada_formal_subprogram_decl
   87970             :   // case: toBeCopied == COPY_DATA for ada_formal_subprogram_decl
   87971           0 :      bool ada_formal_subprogram_decl_copy = p_ada_formal_subprogram_decl; 
   87972           0 :      result->p_ada_formal_subprogram_decl = ada_formal_subprogram_decl_copy; 
   87973             :   // Copy non-constructor parameter data member (access function): oldStyleDefinition_copy
   87974             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for oldStyleDefinition
   87975             :   // case: toBeCopied == COPY_DATA for oldStyleDefinition
   87976           0 :      bool oldStyleDefinition_copy = p_oldStyleDefinition; 
   87977           0 :      result->p_oldStyleDefinition = oldStyleDefinition_copy; 
   87978             :   // Copy non-constructor parameter data member (access function): scope_copy
   87979             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   87980             :   // case: toBeCopied == COPY_DATA for scope
   87981           0 :      SgScopeStatement* scope_copy = p_scope; 
   87982           0 :      result->p_scope = scope_copy; 
   87983             :   // Copy non-constructor parameter data member (access function): specialization_copy
   87984             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specialization
   87985             :   // case: toBeCopied == COPY_DATA for specialization
   87986           0 :      SgDeclarationStatement::template_specialization_enum specialization_copy = p_specialization; 
   87987           0 :      result->p_specialization = specialization_copy; 
   87988             :   // Copy non-constructor parameter data member (no access function): result->p_requiresNameQualificationOnReturnType
   87989             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualificationOnReturnType
   87990             :   // case: toBeCopied == COPY_DATA for requiresNameQualificationOnReturnType
   87991           0 :      bool requiresNameQualificationOnReturnType_copy = p_requiresNameQualificationOnReturnType; 
   87992           0 :      result->p_requiresNameQualificationOnReturnType = requiresNameQualificationOnReturnType_copy; 
   87993             :   // Copy non-constructor parameter data member (access function): gnu_extension_section_copy
   87994             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_section
   87995             :   // case: toBeCopied == COPY_DATA for gnu_extension_section
   87996           0 :      std::string gnu_extension_section_copy = p_gnu_extension_section; 
   87997           0 :      result->p_gnu_extension_section = gnu_extension_section_copy; 
   87998             :   // Copy non-constructor parameter data member (access function): gnu_extension_alias_copy
   87999             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_alias
   88000             :   // case: toBeCopied == COPY_DATA for gnu_extension_alias
   88001           0 :      std::string gnu_extension_alias_copy = p_gnu_extension_alias; 
   88002           0 :      result->p_gnu_extension_alias = gnu_extension_alias_copy; 
   88003             :   // Copy non-constructor parameter data member (access function): gnu_extension_visability_copy
   88004             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_visability
   88005             :   // case: toBeCopied == COPY_DATA for gnu_extension_visability
   88006           0 :      SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability_copy = p_gnu_extension_visability; 
   88007           0 :      result->p_gnu_extension_visability = gnu_extension_visability_copy; 
   88008             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
   88009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
   88010             :   // case: toBeCopied == COPY_DATA for name_qualification_length
   88011           0 :      int name_qualification_length_copy = p_name_qualification_length; 
   88012           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
   88013             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
   88014             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
   88015             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
   88016           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
   88017           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
   88018             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
   88019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
   88020             :   // case: toBeCopied == COPY_DATA for global_qualification_required
   88021           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
   88022           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
   88023             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_return_type
   88024             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_return_type
   88025             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_return_type
   88026           0 :      int name_qualification_length_for_return_type_copy = p_name_qualification_length_for_return_type; 
   88027           0 :      result->p_name_qualification_length_for_return_type = name_qualification_length_for_return_type_copy; 
   88028             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_return_type
   88029             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_return_type
   88030             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_return_type
   88031           0 :      bool type_elaboration_required_for_return_type_copy = p_type_elaboration_required_for_return_type; 
   88032           0 :      result->p_type_elaboration_required_for_return_type = type_elaboration_required_for_return_type_copy; 
   88033             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_return_type
   88034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_return_type
   88035             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_return_type
   88036           0 :      bool global_qualification_required_for_return_type_copy = p_global_qualification_required_for_return_type; 
   88037           0 :      result->p_global_qualification_required_for_return_type = global_qualification_required_for_return_type_copy; 
   88038             :   // Copy non-constructor parameter data member (access function): prototypeIsWithoutParameters_copy
   88039             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for prototypeIsWithoutParameters
   88040             :   // case: toBeCopied == COPY_DATA for prototypeIsWithoutParameters
   88041           0 :      bool prototypeIsWithoutParameters_copy = p_prototypeIsWithoutParameters; 
   88042           0 :      result->p_prototypeIsWithoutParameters = prototypeIsWithoutParameters_copy; 
   88043             :   // Copy non-constructor parameter data member (access function): gnu_regparm_attribute_copy
   88044             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_regparm_attribute
   88045             :   // case: toBeCopied == COPY_DATA for gnu_regparm_attribute
   88046           0 :      int gnu_regparm_attribute_copy = p_gnu_regparm_attribute; 
   88047           0 :      result->p_gnu_regparm_attribute = gnu_regparm_attribute_copy; 
   88048             :   // Copy non-constructor parameter data member (access function): type_syntax_copy
   88049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax
   88050             :   // case: toBeCopied == COPY_DATA for type_syntax
   88051           0 :      SgFunctionType* type_syntax_copy = p_type_syntax; 
   88052           0 :      result->p_type_syntax = type_syntax_copy; 
   88053             :   // Copy non-constructor parameter data member (access function): type_syntax_is_available_copy
   88054             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_syntax_is_available
   88055             :   // case: toBeCopied == COPY_DATA for type_syntax_is_available
   88056           0 :      bool type_syntax_is_available_copy = p_type_syntax_is_available; 
   88057           0 :      result->p_type_syntax_is_available = type_syntax_is_available_copy; 
   88058             :   // Copy non-constructor parameter data member (access function): parameterList_syntax_copy
   88059             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameterList_syntax
   88060             :   // case: toBeCopied == COPY_DATA for parameterList_syntax
   88061           0 :      SgFunctionParameterList* parameterList_syntax_copy = p_parameterList_syntax; 
   88062           0 :      result->p_parameterList_syntax = parameterList_syntax_copy; 
   88063             :   // Copy non-constructor parameter data member (access function): using_C11_Noreturn_keyword_copy
   88064             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_C11_Noreturn_keyword
   88065             :   // case: toBeCopied == COPY_DATA for using_C11_Noreturn_keyword
   88066           0 :      bool using_C11_Noreturn_keyword_copy = p_using_C11_Noreturn_keyword; 
   88067           0 :      result->p_using_C11_Noreturn_keyword = using_C11_Noreturn_keyword_copy; 
   88068             :   // Copy non-constructor parameter data member (access function): is_constexpr_copy
   88069             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_constexpr
   88070             :   // case: toBeCopied == COPY_DATA for is_constexpr
   88071           0 :      bool is_constexpr_copy = p_is_constexpr; 
   88072           0 :      result->p_is_constexpr = is_constexpr_copy; 
   88073             :   // Copy non-constructor parameter data member (access function): using_new_function_return_type_syntax_copy
   88074             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for using_new_function_return_type_syntax
   88075             :   // case: toBeCopied == COPY_DATA for using_new_function_return_type_syntax
   88076           0 :      bool using_new_function_return_type_syntax_copy = p_using_new_function_return_type_syntax; 
   88077           0 :      result->p_using_new_function_return_type_syntax = using_new_function_return_type_syntax_copy; 
   88078             :   // Copy non-constructor parameter data member (access function): functionParameterScope_copy
   88079             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for functionParameterScope
   88080             :   // case: toBeCopied == COPY_DATA for functionParameterScope
   88081           0 :      SgFunctionParameterScope* functionParameterScope_copy = p_functionParameterScope; 
   88082           0 :      result->p_functionParameterScope = functionParameterScope_copy; 
   88083             :   // Copy non-constructor parameter data member (access function): marked_as_edg_normalization_copy
   88084             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for marked_as_edg_normalization
   88085             :   // case: toBeCopied == COPY_DATA for marked_as_edg_normalization
   88086           0 :      bool marked_as_edg_normalization_copy = p_marked_as_edg_normalization; 
   88087           0 :      result->p_marked_as_edg_normalization = marked_as_edg_normalization_copy; 
   88088             :   // Copy non-constructor parameter data member (access function): is_implicit_function_copy
   88089             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_implicit_function
   88090             :   // case: toBeCopied == COPY_DATA for is_implicit_function
   88091           0 :      bool is_implicit_function_copy = p_is_implicit_function; 
   88092           0 :      result->p_is_implicit_function = is_implicit_function_copy; 
   88093             :   // Copy non-constructor parameter data member (access function): result_name_copy
   88094           0 :      SgInitializedName* result_name_copy; 
   88095             :   // case: not a listType for (using conditionalToCopyVariable)result_name
   88096           0 :           if (get_result_name() != NULL) 
   88097             :              { 
   88098           0 :                result_name_copy = static_cast<SgInitializedName*>(help.copyAst(get_result_name())); 
   88099             :              } 
   88100             :             else 
   88101             :              { 
   88102             :                result_name_copy = NULL; 
   88103             :              } 
   88104             :   /* check for a valid pointer and delete if present */ 
   88105           0 :      if (result->p_result_name != NULL) delete result->p_result_name; 
   88106           0 :      result->p_result_name = result_name_copy; 
   88107             :   // case: not a listType for (using conditionalToSetParent)result_name
   88108           0 :           if ( (result_name_copy != NULL) && (result_name_copy->get_parent() == NULL) && (isSgType(result_name_copy) == NULL) ) 
   88109             :              { 
   88110           0 :                result_name_copy->set_parent(result); 
   88111             :              } 
   88112             :   // case: not a listType for (using conditionalToSetParent)definition
   88113           0 :           if ( (definition_copy != NULL) && (definition_copy->get_parent() == NULL) && (isSgType(definition_copy) == NULL) ) 
   88114             :              { 
   88115           0 :                definition_copy->set_parent(result); 
   88116             :              } 
   88117             : 
   88118             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   88119             : 
   88120             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   88121             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   88122             :   // fixupCopy(result,help);
   88123             : 
   88124             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   88125             :   // the Sg_File_Info objects that are built for the new IR nodes.
   88126           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   88127           0 :      if (locatedNode != NULL)
   88128             :         {
   88129             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   88130           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   88131           0 :           ROSE_ASSERT(start != NULL);
   88132             : #if 0
   88133             :        // Debugging information
   88134             :           if (start->get_parent() == NULL)
   88135             :              {
   88136             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88137             :              }
   88138             : #endif
   88139           0 :           start->set_parent(locatedNode);
   88140           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   88141             : 
   88142           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   88143             : 
   88144             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   88145             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   88146             :        // ROSE_ASSERT(end != NULL);
   88147           0 :           if (end == NULL)
   88148             :              {
   88149           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   88150             :              }
   88151             :             else
   88152             :              {
   88153             : #if 0
   88154             :             // Debugging information
   88155             :                if (end->get_parent() == NULL)
   88156             :                   {
   88157             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88158             :                   }
   88159             : #endif
   88160           0 :                end->set_parent(locatedNode);
   88161           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   88162             :              }
   88163             : 
   88164           0 :           SgExpression* expression = isSgExpression(result);
   88165           0 :           if (isSgExpression(this) != NULL)
   88166             :              {
   88167           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   88168             : 
   88169             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   88170           0 :                if (operatorPosition != NULL)
   88171             :                   {
   88172             : #if 0
   88173             :                  // Debugging information
   88174             :                     if (operatorPosition->get_parent() == NULL)
   88175             :                        {
   88176             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88177             :                        }
   88178             : #endif
   88179           0 :                     operatorPosition->set_parent(expression);
   88180           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   88181             :                   }
   88182             :              }
   88183             :         }
   88184             : 
   88185             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   88186           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   88187           0 :      if (initializedName != NULL)
   88188             :         {
   88189             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   88190           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   88191           0 :           ROSE_ASSERT(start != NULL);
   88192             : #if 0
   88193             :        // Debugging information
   88194             :           if (start->get_parent() == NULL)
   88195             :              {
   88196             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88197             :              }
   88198             : #endif
   88199           0 :           start->set_parent(initializedName);
   88200           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   88201             : 
   88202             : #if 0
   88203             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   88204             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   88205             : 
   88206             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   88207             :        // ROSE_ASSERT(end != NULL);
   88208             :           if (end == NULL)
   88209             :              {
   88210             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   88211             :              }
   88212             :             else
   88213             :              {
   88214             :                if (end->get_parent() == NULL)
   88215             :                   {
   88216             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88217             :                   }
   88218             :                end->set_parent(initializedName);
   88219             :                ROSE_ASSERT(end->get_parent() != NULL);
   88220             :              }
   88221             : #endif
   88222             :         }
   88223             : 
   88224             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   88225           0 :      help.insertCopiedNodePair(this,result);
   88226             : 
   88227             :   // printf ("End of copy SgEntryStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   88228             : 
   88229             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   88230             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   88231           0 :      help.decrementDepth();
   88232             : 
   88233             :   // Test if this is the root of the copy!
   88234           0 :      if (help.get_depth() == 0)
   88235             :         {
   88236             :        // This is the original calling node.
   88237             : 
   88238             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   88239             :        // printf ("Calling SgEntryStatement::fixupCopy() (from root of AST being copied) \n");
   88240             : #if ALT_FIXUP_COPY
   88241             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   88242           0 :           fixupCopy_scopes (result,help);
   88243           0 :           fixupCopy_symbols (result,help);
   88244           0 :           fixupCopy_references (result,help);
   88245             : #else
   88246             :           fixupCopy(result,help);
   88247             : #endif
   88248             :        // Allow this to be called recursively, so accumulate the state.
   88249             :        // Also, clear the state in the SgCopyHelp object.
   88250             :        // help.clearState();
   88251             :         }
   88252             : 
   88253           0 :      return result;
   88254             :    }
   88255             : 
   88256             : 
   88257             : /* #line 88258 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   88258             : 
   88259             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   88260             : 
   88261           0 : SgNode* SgContainsStatement::copy ( SgCopyHelp& help) const
   88262             :    {
   88263           0 :      SgContainsStatement* result = NULL;
   88264             : 
   88265             :   // printf ("Copy SgContainsStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   88266             : 
   88267             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   88268             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   88269             :   // The default value of the depth is 0, so after this call the depth is 1!
   88270           0 :      help.incrementDepth();
   88271             : 
   88272             : #if 0
   88273             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   88274             :   // but it is not generally true that things can only be copied once!
   88275             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   88276             :   // AstAttribute* existingAttribute = const_cast<SgContainsStatement*>(this)->attribute["copied"];
   88277             :      bool previouslyCopied = const_cast<SgContainsStatement*>(this)->attribute.exists("copied");
   88278             :      if (previouslyCopied == true)
   88279             :         {
   88280             :           this->get_file_info()->display("Called from copy SgContainsStatement: debug");
   88281             :         }
   88282             :      ROSE_ASSERT(previouslyCopied == false);
   88283             : 
   88284             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   88285             :      AstAttribute* newAttribute = new AstAttribute();
   88286             :      ROSE_ASSERT(newAttribute != NULL);
   88287             : 
   88288             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   88289             :      const_cast<SgContainsStatement*>(this)->attribute.add("copied",newAttribute);
   88290             : #endif
   88291             : 
   88292             :   // Copy data members from base classes
   88293             :   // Copy constructor parameter data member: startOfConstruct_copy
   88294             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   88295             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   88296           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   88297           0 :      if ( p_startOfConstruct != NULL ) 
   88298             :         { 
   88299           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   88300             :         } 
   88301             :        else 
   88302             :         { 
   88303             :           startOfConstruct_copy = NULL; 
   88304             :         } 
   88305             :  
   88306             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   88307             : 
   88308             :   // Build an empty copy of this object (will be filled in, but 
   88309             :   // the parent can't be set and must be set by the caller)
   88310           0 :      result = new SgContainsStatement(  startOfConstruct_copy );
   88311           0 :      ROSE_ASSERT(result != NULL);
   88312             : 
   88313             :   // Copy data members of "this" class
   88314             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   88315             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   88316             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   88317           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   88318           0 :      if ( p_endOfConstruct != NULL ) 
   88319             :         { 
   88320           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   88321             :         } 
   88322             :        else 
   88323             :         { 
   88324             :           endOfConstruct_copy = NULL; 
   88325             :         } 
   88326             :   /* check for a valid pointer and delete if present */ 
   88327           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   88328             :   /* add assignment to result here */ 
   88329           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   88330             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   88331             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   88332             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   88333           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   88334           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   88335             :         { 
   88336           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   88337             :         } 
   88338             :        else 
   88339             :         { 
   88340             :           attachedPreprocessingInfoPtr_copy = NULL; 
   88341             :         } 
   88342             :   /* check for a valid pointer and delete if present */ 
   88343           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   88344             :   /* add assignment to result here */ 
   88345           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   88346             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   88347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   88348             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   88349           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   88350           0 :      if ( p_attributeMechanism != NULL ) 
   88351             :         { 
   88352           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   88353             :         } 
   88354             :        else 
   88355             :         { 
   88356             :           attributeMechanism_copy = NULL; 
   88357             :         } 
   88358             :   /* check for a valid pointer and delete if present */ 
   88359           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   88360             :   /* add assignment to result here */ 
   88361           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   88362             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   88363             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   88364             :   // case: toBeCopied == COPY_DATA for numeric_label
   88365           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   88366           0 :      result->p_numeric_label = numeric_label_copy; 
   88367             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   88368             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   88369             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   88370           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   88371           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   88372             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   88373             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   88374             :   // case: toBeCopied == COPY_DATA for decl_attributes
   88375           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   88376           0 :      result->p_decl_attributes = decl_attributes_copy; 
   88377             :   // Copy non-constructor parameter data member (access function): linkage_copy
   88378             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   88379             :   // case: toBeCopied == COPY_DATA for linkage
   88380           0 :      std::string linkage_copy = p_linkage; 
   88381           0 :      result->p_linkage = linkage_copy; 
   88382             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   88383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   88384             :   // case: toBeCopied == COPY_DATA for declarationModifier
   88385           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   88386           0 :      result->p_declarationModifier = declarationModifier_copy; 
   88387             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   88388             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   88389             :   // case: toBeCopied == COPY_DATA for nameOnly
   88390           0 :      bool nameOnly_copy = p_nameOnly; 
   88391           0 :      result->p_nameOnly = nameOnly_copy; 
   88392             :   // Copy non-constructor parameter data member (access function): forward_copy
   88393             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   88394             :   // case: toBeCopied == COPY_DATA for forward
   88395           0 :      bool forward_copy = p_forward; 
   88396           0 :      result->p_forward = forward_copy; 
   88397             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   88398             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   88399             :   // case: toBeCopied == COPY_DATA for externBrace
   88400           0 :      bool externBrace_copy = p_externBrace; 
   88401           0 :      result->p_externBrace = externBrace_copy; 
   88402             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   88403             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   88404             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   88405           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   88406           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   88407             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   88408             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   88409             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   88410           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   88411           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   88412             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   88413             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   88414             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   88415           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   88416           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   88417             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   88418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   88419             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   88420           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   88421           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   88422             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   88423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   88424             :   // case: toBeCopied == COPY_DATA for binding_label
   88425           0 :      std::string binding_label_copy = p_binding_label; 
   88426           0 :      result->p_binding_label = binding_label_copy; 
   88427             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   88428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   88429             :   // case: toBeCopied == COPY_DATA for declarationScope
   88430           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   88431           0 :      result->p_declarationScope = declarationScope_copy; 
   88432             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   88433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   88434             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   88435           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   88436           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   88437             : 
   88438             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   88439             : 
   88440             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   88441             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   88442             :   // fixupCopy(result,help);
   88443             : 
   88444             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   88445             :   // the Sg_File_Info objects that are built for the new IR nodes.
   88446           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   88447           0 :      if (locatedNode != NULL)
   88448             :         {
   88449             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   88450           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   88451           0 :           ROSE_ASSERT(start != NULL);
   88452             : #if 0
   88453             :        // Debugging information
   88454             :           if (start->get_parent() == NULL)
   88455             :              {
   88456             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88457             :              }
   88458             : #endif
   88459           0 :           start->set_parent(locatedNode);
   88460           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   88461             : 
   88462           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   88463             : 
   88464             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   88465             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   88466             :        // ROSE_ASSERT(end != NULL);
   88467           0 :           if (end == NULL)
   88468             :              {
   88469           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   88470             :              }
   88471             :             else
   88472             :              {
   88473             : #if 0
   88474             :             // Debugging information
   88475             :                if (end->get_parent() == NULL)
   88476             :                   {
   88477             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88478             :                   }
   88479             : #endif
   88480           0 :                end->set_parent(locatedNode);
   88481           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   88482             :              }
   88483             : 
   88484           0 :           SgExpression* expression = isSgExpression(result);
   88485           0 :           if (isSgExpression(this) != NULL)
   88486             :              {
   88487           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   88488             : 
   88489             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   88490           0 :                if (operatorPosition != NULL)
   88491             :                   {
   88492             : #if 0
   88493             :                  // Debugging information
   88494             :                     if (operatorPosition->get_parent() == NULL)
   88495             :                        {
   88496             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88497             :                        }
   88498             : #endif
   88499           0 :                     operatorPosition->set_parent(expression);
   88500           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   88501             :                   }
   88502             :              }
   88503             :         }
   88504             : 
   88505             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   88506           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   88507           0 :      if (initializedName != NULL)
   88508             :         {
   88509             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   88510           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   88511           0 :           ROSE_ASSERT(start != NULL);
   88512             : #if 0
   88513             :        // Debugging information
   88514             :           if (start->get_parent() == NULL)
   88515             :              {
   88516             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88517             :              }
   88518             : #endif
   88519           0 :           start->set_parent(initializedName);
   88520           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   88521             : 
   88522             : #if 0
   88523             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   88524             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   88525             : 
   88526             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   88527             :        // ROSE_ASSERT(end != NULL);
   88528             :           if (end == NULL)
   88529             :              {
   88530             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   88531             :              }
   88532             :             else
   88533             :              {
   88534             :                if (end->get_parent() == NULL)
   88535             :                   {
   88536             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88537             :                   }
   88538             :                end->set_parent(initializedName);
   88539             :                ROSE_ASSERT(end->get_parent() != NULL);
   88540             :              }
   88541             : #endif
   88542             :         }
   88543             : 
   88544             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   88545           0 :      help.insertCopiedNodePair(this,result);
   88546             : 
   88547             :   // printf ("End of copy SgContainsStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   88548             : 
   88549             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   88550             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   88551           0 :      help.decrementDepth();
   88552             : 
   88553             :   // Test if this is the root of the copy!
   88554           0 :      if (help.get_depth() == 0)
   88555             :         {
   88556             :        // This is the original calling node.
   88557             : 
   88558             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   88559             :        // printf ("Calling SgContainsStatement::fixupCopy() (from root of AST being copied) \n");
   88560             : #if ALT_FIXUP_COPY
   88561             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   88562           0 :           fixupCopy_scopes (result,help);
   88563           0 :           fixupCopy_symbols (result,help);
   88564           0 :           fixupCopy_references (result,help);
   88565             : #else
   88566             :           fixupCopy(result,help);
   88567             : #endif
   88568             :        // Allow this to be called recursively, so accumulate the state.
   88569             :        // Also, clear the state in the SgCopyHelp object.
   88570             :        // help.clearState();
   88571             :         }
   88572             : 
   88573           0 :      return result;
   88574             :    }
   88575             : 
   88576             : 
   88577             : /* #line 88578 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   88578             : 
   88579             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   88580             : 
   88581           0 : SgNode* SgC_PreprocessorDirectiveStatement::copy ( SgCopyHelp& help) const
   88582             :    {
   88583           0 :      SgC_PreprocessorDirectiveStatement* result = NULL;
   88584             : 
   88585             :   // printf ("Copy SgC_PreprocessorDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   88586             : 
   88587             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   88588             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   88589             :   // The default value of the depth is 0, so after this call the depth is 1!
   88590           0 :      help.incrementDepth();
   88591             : 
   88592             : #if 0
   88593             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   88594             :   // but it is not generally true that things can only be copied once!
   88595             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   88596             :   // AstAttribute* existingAttribute = const_cast<SgC_PreprocessorDirectiveStatement*>(this)->attribute["copied"];
   88597             :      bool previouslyCopied = const_cast<SgC_PreprocessorDirectiveStatement*>(this)->attribute.exists("copied");
   88598             :      if (previouslyCopied == true)
   88599             :         {
   88600             :           this->get_file_info()->display("Called from copy SgC_PreprocessorDirectiveStatement: debug");
   88601             :         }
   88602             :      ROSE_ASSERT(previouslyCopied == false);
   88603             : 
   88604             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   88605             :      AstAttribute* newAttribute = new AstAttribute();
   88606             :      ROSE_ASSERT(newAttribute != NULL);
   88607             : 
   88608             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   88609             :      const_cast<SgC_PreprocessorDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   88610             : #endif
   88611             : 
   88612             :   // Copy data members from base classes
   88613             :   // Copy constructor parameter data member: startOfConstruct_copy
   88614             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   88615             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   88616           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   88617           0 :      if ( p_startOfConstruct != NULL ) 
   88618             :         { 
   88619           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   88620             :         } 
   88621             :        else 
   88622             :         { 
   88623             :           startOfConstruct_copy = NULL; 
   88624             :         } 
   88625             :  
   88626             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   88627             : 
   88628             :   // Build an empty copy of this object (will be filled in, but 
   88629             :   // the parent can't be set and must be set by the caller)
   88630           0 :      result = new SgC_PreprocessorDirectiveStatement(  startOfConstruct_copy );
   88631           0 :      ROSE_ASSERT(result != NULL);
   88632             : 
   88633             :   // Copy data members of "this" class
   88634             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   88635             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   88636             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   88637           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   88638           0 :      if ( p_endOfConstruct != NULL ) 
   88639             :         { 
   88640           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   88641             :         } 
   88642             :        else 
   88643             :         { 
   88644             :           endOfConstruct_copy = NULL; 
   88645             :         } 
   88646             :   /* check for a valid pointer and delete if present */ 
   88647           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   88648             :   /* add assignment to result here */ 
   88649           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   88650             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   88651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   88652             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   88653           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   88654           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   88655             :         { 
   88656           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   88657             :         } 
   88658             :        else 
   88659             :         { 
   88660             :           attachedPreprocessingInfoPtr_copy = NULL; 
   88661             :         } 
   88662             :   /* check for a valid pointer and delete if present */ 
   88663           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   88664             :   /* add assignment to result here */ 
   88665           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   88666             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   88667             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   88668             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   88669           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   88670           0 :      if ( p_attributeMechanism != NULL ) 
   88671             :         { 
   88672           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   88673             :         } 
   88674             :        else 
   88675             :         { 
   88676             :           attributeMechanism_copy = NULL; 
   88677             :         } 
   88678             :   /* check for a valid pointer and delete if present */ 
   88679           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   88680             :   /* add assignment to result here */ 
   88681           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   88682             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   88683             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   88684             :   // case: toBeCopied == COPY_DATA for numeric_label
   88685           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   88686           0 :      result->p_numeric_label = numeric_label_copy; 
   88687             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   88688             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   88689             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   88690           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   88691           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   88692             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   88693             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   88694             :   // case: toBeCopied == COPY_DATA for decl_attributes
   88695           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   88696           0 :      result->p_decl_attributes = decl_attributes_copy; 
   88697             :   // Copy non-constructor parameter data member (access function): linkage_copy
   88698             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   88699             :   // case: toBeCopied == COPY_DATA for linkage
   88700           0 :      std::string linkage_copy = p_linkage; 
   88701           0 :      result->p_linkage = linkage_copy; 
   88702             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   88703             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   88704             :   // case: toBeCopied == COPY_DATA for declarationModifier
   88705           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   88706           0 :      result->p_declarationModifier = declarationModifier_copy; 
   88707             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   88708             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   88709             :   // case: toBeCopied == COPY_DATA for nameOnly
   88710           0 :      bool nameOnly_copy = p_nameOnly; 
   88711           0 :      result->p_nameOnly = nameOnly_copy; 
   88712             :   // Copy non-constructor parameter data member (access function): forward_copy
   88713             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   88714             :   // case: toBeCopied == COPY_DATA for forward
   88715           0 :      bool forward_copy = p_forward; 
   88716           0 :      result->p_forward = forward_copy; 
   88717             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   88718             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   88719             :   // case: toBeCopied == COPY_DATA for externBrace
   88720           0 :      bool externBrace_copy = p_externBrace; 
   88721           0 :      result->p_externBrace = externBrace_copy; 
   88722             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   88723             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   88724             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   88725           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   88726           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   88727             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   88728             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   88729             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   88730           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   88731           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   88732             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   88733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   88734             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   88735           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   88736           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   88737             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   88738             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   88739             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   88740           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   88741           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   88742             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   88743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   88744             :   // case: toBeCopied == COPY_DATA for binding_label
   88745           0 :      std::string binding_label_copy = p_binding_label; 
   88746           0 :      result->p_binding_label = binding_label_copy; 
   88747             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   88748             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   88749             :   // case: toBeCopied == COPY_DATA for declarationScope
   88750           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   88751           0 :      result->p_declarationScope = declarationScope_copy; 
   88752             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   88753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   88754             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   88755           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   88756           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   88757             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   88758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   88759             :   // case: toBeCopied == COPY_DATA for directiveString
   88760           0 :      std::string directiveString_copy = p_directiveString; 
   88761           0 :      result->p_directiveString = directiveString_copy; 
   88762             : 
   88763             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   88764             : 
   88765             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   88766             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   88767             :   // fixupCopy(result,help);
   88768             : 
   88769             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   88770             :   // the Sg_File_Info objects that are built for the new IR nodes.
   88771           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   88772           0 :      if (locatedNode != NULL)
   88773             :         {
   88774             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   88775           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   88776           0 :           ROSE_ASSERT(start != NULL);
   88777             : #if 0
   88778             :        // Debugging information
   88779             :           if (start->get_parent() == NULL)
   88780             :              {
   88781             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88782             :              }
   88783             : #endif
   88784           0 :           start->set_parent(locatedNode);
   88785           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   88786             : 
   88787           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   88788             : 
   88789             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   88790             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   88791             :        // ROSE_ASSERT(end != NULL);
   88792           0 :           if (end == NULL)
   88793             :              {
   88794           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   88795             :              }
   88796             :             else
   88797             :              {
   88798             : #if 0
   88799             :             // Debugging information
   88800             :                if (end->get_parent() == NULL)
   88801             :                   {
   88802             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88803             :                   }
   88804             : #endif
   88805           0 :                end->set_parent(locatedNode);
   88806           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   88807             :              }
   88808             : 
   88809           0 :           SgExpression* expression = isSgExpression(result);
   88810           0 :           if (isSgExpression(this) != NULL)
   88811             :              {
   88812           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   88813             : 
   88814             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   88815           0 :                if (operatorPosition != NULL)
   88816             :                   {
   88817             : #if 0
   88818             :                  // Debugging information
   88819             :                     if (operatorPosition->get_parent() == NULL)
   88820             :                        {
   88821             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88822             :                        }
   88823             : #endif
   88824           0 :                     operatorPosition->set_parent(expression);
   88825           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   88826             :                   }
   88827             :              }
   88828             :         }
   88829             : 
   88830             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   88831           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   88832           0 :      if (initializedName != NULL)
   88833             :         {
   88834             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   88835           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   88836           0 :           ROSE_ASSERT(start != NULL);
   88837             : #if 0
   88838             :        // Debugging information
   88839             :           if (start->get_parent() == NULL)
   88840             :              {
   88841             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88842             :              }
   88843             : #endif
   88844           0 :           start->set_parent(initializedName);
   88845           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   88846             : 
   88847             : #if 0
   88848             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   88849             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   88850             : 
   88851             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   88852             :        // ROSE_ASSERT(end != NULL);
   88853             :           if (end == NULL)
   88854             :              {
   88855             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   88856             :              }
   88857             :             else
   88858             :              {
   88859             :                if (end->get_parent() == NULL)
   88860             :                   {
   88861             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   88862             :                   }
   88863             :                end->set_parent(initializedName);
   88864             :                ROSE_ASSERT(end->get_parent() != NULL);
   88865             :              }
   88866             : #endif
   88867             :         }
   88868             : 
   88869             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   88870           0 :      help.insertCopiedNodePair(this,result);
   88871             : 
   88872             :   // printf ("End of copy SgC_PreprocessorDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   88873             : 
   88874             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   88875             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   88876           0 :      help.decrementDepth();
   88877             : 
   88878             :   // Test if this is the root of the copy!
   88879           0 :      if (help.get_depth() == 0)
   88880             :         {
   88881             :        // This is the original calling node.
   88882             : 
   88883             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   88884             :        // printf ("Calling SgC_PreprocessorDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   88885             : #if ALT_FIXUP_COPY
   88886             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   88887           0 :           fixupCopy_scopes (result,help);
   88888           0 :           fixupCopy_symbols (result,help);
   88889           0 :           fixupCopy_references (result,help);
   88890             : #else
   88891             :           fixupCopy(result,help);
   88892             : #endif
   88893             :        // Allow this to be called recursively, so accumulate the state.
   88894             :        // Also, clear the state in the SgCopyHelp object.
   88895             :        // help.clearState();
   88896             :         }
   88897             : 
   88898           0 :      return result;
   88899             :    }
   88900             : 
   88901             : 
   88902             : /* #line 88903 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   88903             : 
   88904             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   88905             : 
   88906           0 : SgNode* SgIncludeDirectiveStatement::copy ( SgCopyHelp& help) const
   88907             :    {
   88908           0 :      SgIncludeDirectiveStatement* result = NULL;
   88909             : 
   88910             :   // printf ("Copy SgIncludeDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   88911             : 
   88912             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   88913             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   88914             :   // The default value of the depth is 0, so after this call the depth is 1!
   88915           0 :      help.incrementDepth();
   88916             : 
   88917             : #if 0
   88918             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   88919             :   // but it is not generally true that things can only be copied once!
   88920             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   88921             :   // AstAttribute* existingAttribute = const_cast<SgIncludeDirectiveStatement*>(this)->attribute["copied"];
   88922             :      bool previouslyCopied = const_cast<SgIncludeDirectiveStatement*>(this)->attribute.exists("copied");
   88923             :      if (previouslyCopied == true)
   88924             :         {
   88925             :           this->get_file_info()->display("Called from copy SgIncludeDirectiveStatement: debug");
   88926             :         }
   88927             :      ROSE_ASSERT(previouslyCopied == false);
   88928             : 
   88929             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   88930             :      AstAttribute* newAttribute = new AstAttribute();
   88931             :      ROSE_ASSERT(newAttribute != NULL);
   88932             : 
   88933             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   88934             :      const_cast<SgIncludeDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   88935             : #endif
   88936             : 
   88937             :   // Copy data members from base classes
   88938             :   // Copy constructor parameter data member: startOfConstruct_copy
   88939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   88940             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   88941           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   88942           0 :      if ( p_startOfConstruct != NULL ) 
   88943             :         { 
   88944           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   88945             :         } 
   88946             :        else 
   88947             :         { 
   88948             :           startOfConstruct_copy = NULL; 
   88949             :         } 
   88950             :  
   88951             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   88952             : 
   88953             :   // Build an empty copy of this object (will be filled in, but 
   88954             :   // the parent can't be set and must be set by the caller)
   88955           0 :      result = new SgIncludeDirectiveStatement(  startOfConstruct_copy );
   88956           0 :      ROSE_ASSERT(result != NULL);
   88957             : 
   88958             :   // Copy data members of "this" class
   88959             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   88960             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   88961             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   88962           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   88963           0 :      if ( p_endOfConstruct != NULL ) 
   88964             :         { 
   88965           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   88966             :         } 
   88967             :        else 
   88968             :         { 
   88969             :           endOfConstruct_copy = NULL; 
   88970             :         } 
   88971             :   /* check for a valid pointer and delete if present */ 
   88972           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   88973             :   /* add assignment to result here */ 
   88974           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   88975             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   88976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   88977             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   88978           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   88979           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   88980             :         { 
   88981           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   88982             :         } 
   88983             :        else 
   88984             :         { 
   88985             :           attachedPreprocessingInfoPtr_copy = NULL; 
   88986             :         } 
   88987             :   /* check for a valid pointer and delete if present */ 
   88988           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   88989             :   /* add assignment to result here */ 
   88990           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   88991             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   88992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   88993             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   88994           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   88995           0 :      if ( p_attributeMechanism != NULL ) 
   88996             :         { 
   88997           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   88998             :         } 
   88999             :        else 
   89000             :         { 
   89001             :           attributeMechanism_copy = NULL; 
   89002             :         } 
   89003             :   /* check for a valid pointer and delete if present */ 
   89004           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   89005             :   /* add assignment to result here */ 
   89006           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   89007             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   89008             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   89009             :   // case: toBeCopied == COPY_DATA for numeric_label
   89010           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   89011           0 :      result->p_numeric_label = numeric_label_copy; 
   89012             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   89013             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   89014             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   89015           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   89016           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   89017             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   89018             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   89019             :   // case: toBeCopied == COPY_DATA for decl_attributes
   89020           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   89021           0 :      result->p_decl_attributes = decl_attributes_copy; 
   89022             :   // Copy non-constructor parameter data member (access function): linkage_copy
   89023             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   89024             :   // case: toBeCopied == COPY_DATA for linkage
   89025           0 :      std::string linkage_copy = p_linkage; 
   89026           0 :      result->p_linkage = linkage_copy; 
   89027             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   89028             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   89029             :   // case: toBeCopied == COPY_DATA for declarationModifier
   89030           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   89031           0 :      result->p_declarationModifier = declarationModifier_copy; 
   89032             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   89033             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   89034             :   // case: toBeCopied == COPY_DATA for nameOnly
   89035           0 :      bool nameOnly_copy = p_nameOnly; 
   89036           0 :      result->p_nameOnly = nameOnly_copy; 
   89037             :   // Copy non-constructor parameter data member (access function): forward_copy
   89038             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   89039             :   // case: toBeCopied == COPY_DATA for forward
   89040           0 :      bool forward_copy = p_forward; 
   89041           0 :      result->p_forward = forward_copy; 
   89042             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   89043             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   89044             :   // case: toBeCopied == COPY_DATA for externBrace
   89045           0 :      bool externBrace_copy = p_externBrace; 
   89046           0 :      result->p_externBrace = externBrace_copy; 
   89047             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   89048             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   89049             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   89050           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   89051           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   89052             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   89053             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   89054             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   89055           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   89056           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   89057             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   89058             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   89059             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   89060           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   89061           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   89062             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   89063             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   89064             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   89065           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   89066           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   89067             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   89068             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   89069             :   // case: toBeCopied == COPY_DATA for binding_label
   89070           0 :      std::string binding_label_copy = p_binding_label; 
   89071           0 :      result->p_binding_label = binding_label_copy; 
   89072             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   89073             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   89074             :   // case: toBeCopied == COPY_DATA for declarationScope
   89075           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   89076           0 :      result->p_declarationScope = declarationScope_copy; 
   89077             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   89078             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   89079             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   89080           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   89081           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   89082             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   89083             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   89084             :   // case: toBeCopied == COPY_DATA for directiveString
   89085           0 :      std::string directiveString_copy = p_directiveString; 
   89086           0 :      result->p_directiveString = directiveString_copy; 
   89087             :   // Copy non-constructor parameter data member (access function): headerFileBody_copy
   89088           0 :      SgHeaderFileBody* headerFileBody_copy; 
   89089             :   // case: not a listType for (using conditionalToCopyVariable)headerFileBody
   89090           0 :           if (get_headerFileBody() != NULL) 
   89091             :              { 
   89092           0 :                headerFileBody_copy = static_cast<SgHeaderFileBody*>(help.copyAst(get_headerFileBody())); 
   89093             :              } 
   89094             :             else 
   89095             :              { 
   89096             :                headerFileBody_copy = NULL; 
   89097             :              } 
   89098             :   /* check for a valid pointer and delete if present */ 
   89099           0 :      if (result->p_headerFileBody != NULL) delete result->p_headerFileBody; 
   89100           0 :      result->p_headerFileBody = headerFileBody_copy; 
   89101             :   // case: not a listType for (using conditionalToSetParent)headerFileBody
   89102           0 :           if ( (headerFileBody_copy != NULL) && (headerFileBody_copy->get_parent() == NULL) && (isSgType(headerFileBody_copy) == NULL) ) 
   89103             :              { 
   89104           0 :                headerFileBody_copy->set_parent(result); 
   89105             :              } 
   89106             :   // Copy non-constructor parameter data member (access function): include_file_heirarchy_copy
   89107             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for include_file_heirarchy
   89108             :   // case: toBeCopied == COPY_DATA for include_file_heirarchy
   89109           0 :      SgIncludeFile* include_file_heirarchy_copy = p_include_file_heirarchy; 
   89110           0 :      result->p_include_file_heirarchy = include_file_heirarchy_copy; 
   89111             :   // Copy non-constructor parameter data member (access function): name_used_in_include_directive_copy
   89112             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_used_in_include_directive
   89113             :   // case: toBeCopied == COPY_DATA for name_used_in_include_directive
   89114           0 :      std::string name_used_in_include_directive_copy = p_name_used_in_include_directive; 
   89115           0 :      result->p_name_used_in_include_directive = name_used_in_include_directive_copy; 
   89116             : 
   89117             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   89118             : 
   89119             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   89120             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   89121             :   // fixupCopy(result,help);
   89122             : 
   89123             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   89124             :   // the Sg_File_Info objects that are built for the new IR nodes.
   89125           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   89126           0 :      if (locatedNode != NULL)
   89127             :         {
   89128             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   89129           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   89130           0 :           ROSE_ASSERT(start != NULL);
   89131             : #if 0
   89132             :        // Debugging information
   89133             :           if (start->get_parent() == NULL)
   89134             :              {
   89135             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89136             :              }
   89137             : #endif
   89138           0 :           start->set_parent(locatedNode);
   89139           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   89140             : 
   89141           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   89142             : 
   89143             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   89144             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   89145             :        // ROSE_ASSERT(end != NULL);
   89146           0 :           if (end == NULL)
   89147             :              {
   89148           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   89149             :              }
   89150             :             else
   89151             :              {
   89152             : #if 0
   89153             :             // Debugging information
   89154             :                if (end->get_parent() == NULL)
   89155             :                   {
   89156             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89157             :                   }
   89158             : #endif
   89159           0 :                end->set_parent(locatedNode);
   89160           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   89161             :              }
   89162             : 
   89163           0 :           SgExpression* expression = isSgExpression(result);
   89164           0 :           if (isSgExpression(this) != NULL)
   89165             :              {
   89166           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   89167             : 
   89168             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   89169           0 :                if (operatorPosition != NULL)
   89170             :                   {
   89171             : #if 0
   89172             :                  // Debugging information
   89173             :                     if (operatorPosition->get_parent() == NULL)
   89174             :                        {
   89175             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89176             :                        }
   89177             : #endif
   89178           0 :                     operatorPosition->set_parent(expression);
   89179           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   89180             :                   }
   89181             :              }
   89182             :         }
   89183             : 
   89184             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   89185           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   89186           0 :      if (initializedName != NULL)
   89187             :         {
   89188             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   89189           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   89190           0 :           ROSE_ASSERT(start != NULL);
   89191             : #if 0
   89192             :        // Debugging information
   89193             :           if (start->get_parent() == NULL)
   89194             :              {
   89195             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89196             :              }
   89197             : #endif
   89198           0 :           start->set_parent(initializedName);
   89199           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   89200             : 
   89201             : #if 0
   89202             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   89203             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   89204             : 
   89205             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   89206             :        // ROSE_ASSERT(end != NULL);
   89207             :           if (end == NULL)
   89208             :              {
   89209             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   89210             :              }
   89211             :             else
   89212             :              {
   89213             :                if (end->get_parent() == NULL)
   89214             :                   {
   89215             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89216             :                   }
   89217             :                end->set_parent(initializedName);
   89218             :                ROSE_ASSERT(end->get_parent() != NULL);
   89219             :              }
   89220             : #endif
   89221             :         }
   89222             : 
   89223             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   89224           0 :      help.insertCopiedNodePair(this,result);
   89225             : 
   89226             :   // printf ("End of copy SgIncludeDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   89227             : 
   89228             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   89229             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   89230           0 :      help.decrementDepth();
   89231             : 
   89232             :   // Test if this is the root of the copy!
   89233           0 :      if (help.get_depth() == 0)
   89234             :         {
   89235             :        // This is the original calling node.
   89236             : 
   89237             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   89238             :        // printf ("Calling SgIncludeDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   89239             : #if ALT_FIXUP_COPY
   89240             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   89241           0 :           fixupCopy_scopes (result,help);
   89242           0 :           fixupCopy_symbols (result,help);
   89243           0 :           fixupCopy_references (result,help);
   89244             : #else
   89245             :           fixupCopy(result,help);
   89246             : #endif
   89247             :        // Allow this to be called recursively, so accumulate the state.
   89248             :        // Also, clear the state in the SgCopyHelp object.
   89249             :        // help.clearState();
   89250             :         }
   89251             : 
   89252           0 :      return result;
   89253             :    }
   89254             : 
   89255             : 
   89256             : /* #line 89257 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   89257             : 
   89258             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   89259             : 
   89260           0 : SgNode* SgDefineDirectiveStatement::copy ( SgCopyHelp& help) const
   89261             :    {
   89262           0 :      SgDefineDirectiveStatement* result = NULL;
   89263             : 
   89264             :   // printf ("Copy SgDefineDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   89265             : 
   89266             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   89267             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   89268             :   // The default value of the depth is 0, so after this call the depth is 1!
   89269           0 :      help.incrementDepth();
   89270             : 
   89271             : #if 0
   89272             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   89273             :   // but it is not generally true that things can only be copied once!
   89274             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   89275             :   // AstAttribute* existingAttribute = const_cast<SgDefineDirectiveStatement*>(this)->attribute["copied"];
   89276             :      bool previouslyCopied = const_cast<SgDefineDirectiveStatement*>(this)->attribute.exists("copied");
   89277             :      if (previouslyCopied == true)
   89278             :         {
   89279             :           this->get_file_info()->display("Called from copy SgDefineDirectiveStatement: debug");
   89280             :         }
   89281             :      ROSE_ASSERT(previouslyCopied == false);
   89282             : 
   89283             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   89284             :      AstAttribute* newAttribute = new AstAttribute();
   89285             :      ROSE_ASSERT(newAttribute != NULL);
   89286             : 
   89287             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   89288             :      const_cast<SgDefineDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   89289             : #endif
   89290             : 
   89291             :   // Copy data members from base classes
   89292             :   // Copy constructor parameter data member: startOfConstruct_copy
   89293             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   89294             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   89295           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   89296           0 :      if ( p_startOfConstruct != NULL ) 
   89297             :         { 
   89298           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   89299             :         } 
   89300             :        else 
   89301             :         { 
   89302             :           startOfConstruct_copy = NULL; 
   89303             :         } 
   89304             :  
   89305             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   89306             : 
   89307             :   // Build an empty copy of this object (will be filled in, but 
   89308             :   // the parent can't be set and must be set by the caller)
   89309           0 :      result = new SgDefineDirectiveStatement(  startOfConstruct_copy );
   89310           0 :      ROSE_ASSERT(result != NULL);
   89311             : 
   89312             :   // Copy data members of "this" class
   89313             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   89314             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   89315             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   89316           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   89317           0 :      if ( p_endOfConstruct != NULL ) 
   89318             :         { 
   89319           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   89320             :         } 
   89321             :        else 
   89322             :         { 
   89323             :           endOfConstruct_copy = NULL; 
   89324             :         } 
   89325             :   /* check for a valid pointer and delete if present */ 
   89326           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   89327             :   /* add assignment to result here */ 
   89328           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   89329             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   89330             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   89331             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   89332           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   89333           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   89334             :         { 
   89335           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   89336             :         } 
   89337             :        else 
   89338             :         { 
   89339             :           attachedPreprocessingInfoPtr_copy = NULL; 
   89340             :         } 
   89341             :   /* check for a valid pointer and delete if present */ 
   89342           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   89343             :   /* add assignment to result here */ 
   89344           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   89345             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   89346             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   89347             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   89348           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   89349           0 :      if ( p_attributeMechanism != NULL ) 
   89350             :         { 
   89351           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   89352             :         } 
   89353             :        else 
   89354             :         { 
   89355             :           attributeMechanism_copy = NULL; 
   89356             :         } 
   89357             :   /* check for a valid pointer and delete if present */ 
   89358           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   89359             :   /* add assignment to result here */ 
   89360           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   89361             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   89362             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   89363             :   // case: toBeCopied == COPY_DATA for numeric_label
   89364           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   89365           0 :      result->p_numeric_label = numeric_label_copy; 
   89366             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   89367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   89368             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   89369           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   89370           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   89371             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   89372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   89373             :   // case: toBeCopied == COPY_DATA for decl_attributes
   89374           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   89375           0 :      result->p_decl_attributes = decl_attributes_copy; 
   89376             :   // Copy non-constructor parameter data member (access function): linkage_copy
   89377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   89378             :   // case: toBeCopied == COPY_DATA for linkage
   89379           0 :      std::string linkage_copy = p_linkage; 
   89380           0 :      result->p_linkage = linkage_copy; 
   89381             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   89382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   89383             :   // case: toBeCopied == COPY_DATA for declarationModifier
   89384           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   89385           0 :      result->p_declarationModifier = declarationModifier_copy; 
   89386             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   89387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   89388             :   // case: toBeCopied == COPY_DATA for nameOnly
   89389           0 :      bool nameOnly_copy = p_nameOnly; 
   89390           0 :      result->p_nameOnly = nameOnly_copy; 
   89391             :   // Copy non-constructor parameter data member (access function): forward_copy
   89392             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   89393             :   // case: toBeCopied == COPY_DATA for forward
   89394           0 :      bool forward_copy = p_forward; 
   89395           0 :      result->p_forward = forward_copy; 
   89396             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   89397             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   89398             :   // case: toBeCopied == COPY_DATA for externBrace
   89399           0 :      bool externBrace_copy = p_externBrace; 
   89400           0 :      result->p_externBrace = externBrace_copy; 
   89401             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   89402             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   89403             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   89404           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   89405           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   89406             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   89407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   89408             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   89409           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   89410           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   89411             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   89412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   89413             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   89414           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   89415           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   89416             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   89417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   89418             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   89419           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   89420           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   89421             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   89422             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   89423             :   // case: toBeCopied == COPY_DATA for binding_label
   89424           0 :      std::string binding_label_copy = p_binding_label; 
   89425           0 :      result->p_binding_label = binding_label_copy; 
   89426             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   89427             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   89428             :   // case: toBeCopied == COPY_DATA for declarationScope
   89429           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   89430           0 :      result->p_declarationScope = declarationScope_copy; 
   89431             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   89432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   89433             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   89434           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   89435           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   89436             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   89437             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   89438             :   // case: toBeCopied == COPY_DATA for directiveString
   89439           0 :      std::string directiveString_copy = p_directiveString; 
   89440           0 :      result->p_directiveString = directiveString_copy; 
   89441             : 
   89442             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   89443             : 
   89444             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   89445             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   89446             :   // fixupCopy(result,help);
   89447             : 
   89448             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   89449             :   // the Sg_File_Info objects that are built for the new IR nodes.
   89450           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   89451           0 :      if (locatedNode != NULL)
   89452             :         {
   89453             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   89454           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   89455           0 :           ROSE_ASSERT(start != NULL);
   89456             : #if 0
   89457             :        // Debugging information
   89458             :           if (start->get_parent() == NULL)
   89459             :              {
   89460             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89461             :              }
   89462             : #endif
   89463           0 :           start->set_parent(locatedNode);
   89464           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   89465             : 
   89466           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   89467             : 
   89468             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   89469             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   89470             :        // ROSE_ASSERT(end != NULL);
   89471           0 :           if (end == NULL)
   89472             :              {
   89473           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   89474             :              }
   89475             :             else
   89476             :              {
   89477             : #if 0
   89478             :             // Debugging information
   89479             :                if (end->get_parent() == NULL)
   89480             :                   {
   89481             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89482             :                   }
   89483             : #endif
   89484           0 :                end->set_parent(locatedNode);
   89485           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   89486             :              }
   89487             : 
   89488           0 :           SgExpression* expression = isSgExpression(result);
   89489           0 :           if (isSgExpression(this) != NULL)
   89490             :              {
   89491           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   89492             : 
   89493             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   89494           0 :                if (operatorPosition != NULL)
   89495             :                   {
   89496             : #if 0
   89497             :                  // Debugging information
   89498             :                     if (operatorPosition->get_parent() == NULL)
   89499             :                        {
   89500             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89501             :                        }
   89502             : #endif
   89503           0 :                     operatorPosition->set_parent(expression);
   89504           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   89505             :                   }
   89506             :              }
   89507             :         }
   89508             : 
   89509             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   89510           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   89511           0 :      if (initializedName != NULL)
   89512             :         {
   89513             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   89514           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   89515           0 :           ROSE_ASSERT(start != NULL);
   89516             : #if 0
   89517             :        // Debugging information
   89518             :           if (start->get_parent() == NULL)
   89519             :              {
   89520             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89521             :              }
   89522             : #endif
   89523           0 :           start->set_parent(initializedName);
   89524           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   89525             : 
   89526             : #if 0
   89527             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   89528             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   89529             : 
   89530             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   89531             :        // ROSE_ASSERT(end != NULL);
   89532             :           if (end == NULL)
   89533             :              {
   89534             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   89535             :              }
   89536             :             else
   89537             :              {
   89538             :                if (end->get_parent() == NULL)
   89539             :                   {
   89540             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89541             :                   }
   89542             :                end->set_parent(initializedName);
   89543             :                ROSE_ASSERT(end->get_parent() != NULL);
   89544             :              }
   89545             : #endif
   89546             :         }
   89547             : 
   89548             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   89549           0 :      help.insertCopiedNodePair(this,result);
   89550             : 
   89551             :   // printf ("End of copy SgDefineDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   89552             : 
   89553             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   89554             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   89555           0 :      help.decrementDepth();
   89556             : 
   89557             :   // Test if this is the root of the copy!
   89558           0 :      if (help.get_depth() == 0)
   89559             :         {
   89560             :        // This is the original calling node.
   89561             : 
   89562             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   89563             :        // printf ("Calling SgDefineDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   89564             : #if ALT_FIXUP_COPY
   89565             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   89566           0 :           fixupCopy_scopes (result,help);
   89567           0 :           fixupCopy_symbols (result,help);
   89568           0 :           fixupCopy_references (result,help);
   89569             : #else
   89570             :           fixupCopy(result,help);
   89571             : #endif
   89572             :        // Allow this to be called recursively, so accumulate the state.
   89573             :        // Also, clear the state in the SgCopyHelp object.
   89574             :        // help.clearState();
   89575             :         }
   89576             : 
   89577           0 :      return result;
   89578             :    }
   89579             : 
   89580             : 
   89581             : /* #line 89582 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   89582             : 
   89583             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   89584             : 
   89585           0 : SgNode* SgUndefDirectiveStatement::copy ( SgCopyHelp& help) const
   89586             :    {
   89587           0 :      SgUndefDirectiveStatement* result = NULL;
   89588             : 
   89589             :   // printf ("Copy SgUndefDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   89590             : 
   89591             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   89592             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   89593             :   // The default value of the depth is 0, so after this call the depth is 1!
   89594           0 :      help.incrementDepth();
   89595             : 
   89596             : #if 0
   89597             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   89598             :   // but it is not generally true that things can only be copied once!
   89599             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   89600             :   // AstAttribute* existingAttribute = const_cast<SgUndefDirectiveStatement*>(this)->attribute["copied"];
   89601             :      bool previouslyCopied = const_cast<SgUndefDirectiveStatement*>(this)->attribute.exists("copied");
   89602             :      if (previouslyCopied == true)
   89603             :         {
   89604             :           this->get_file_info()->display("Called from copy SgUndefDirectiveStatement: debug");
   89605             :         }
   89606             :      ROSE_ASSERT(previouslyCopied == false);
   89607             : 
   89608             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   89609             :      AstAttribute* newAttribute = new AstAttribute();
   89610             :      ROSE_ASSERT(newAttribute != NULL);
   89611             : 
   89612             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   89613             :      const_cast<SgUndefDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   89614             : #endif
   89615             : 
   89616             :   // Copy data members from base classes
   89617             :   // Copy constructor parameter data member: startOfConstruct_copy
   89618             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   89619             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   89620           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   89621           0 :      if ( p_startOfConstruct != NULL ) 
   89622             :         { 
   89623           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   89624             :         } 
   89625             :        else 
   89626             :         { 
   89627             :           startOfConstruct_copy = NULL; 
   89628             :         } 
   89629             :  
   89630             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   89631             : 
   89632             :   // Build an empty copy of this object (will be filled in, but 
   89633             :   // the parent can't be set and must be set by the caller)
   89634           0 :      result = new SgUndefDirectiveStatement(  startOfConstruct_copy );
   89635           0 :      ROSE_ASSERT(result != NULL);
   89636             : 
   89637             :   // Copy data members of "this" class
   89638             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   89639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   89640             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   89641           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   89642           0 :      if ( p_endOfConstruct != NULL ) 
   89643             :         { 
   89644           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   89645             :         } 
   89646             :        else 
   89647             :         { 
   89648             :           endOfConstruct_copy = NULL; 
   89649             :         } 
   89650             :   /* check for a valid pointer and delete if present */ 
   89651           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   89652             :   /* add assignment to result here */ 
   89653           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   89654             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   89655             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   89656             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   89657           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   89658           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   89659             :         { 
   89660           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   89661             :         } 
   89662             :        else 
   89663             :         { 
   89664             :           attachedPreprocessingInfoPtr_copy = NULL; 
   89665             :         } 
   89666             :   /* check for a valid pointer and delete if present */ 
   89667           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   89668             :   /* add assignment to result here */ 
   89669           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   89670             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   89671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   89672             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   89673           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   89674           0 :      if ( p_attributeMechanism != NULL ) 
   89675             :         { 
   89676           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   89677             :         } 
   89678             :        else 
   89679             :         { 
   89680             :           attributeMechanism_copy = NULL; 
   89681             :         } 
   89682             :   /* check for a valid pointer and delete if present */ 
   89683           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   89684             :   /* add assignment to result here */ 
   89685           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   89686             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   89687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   89688             :   // case: toBeCopied == COPY_DATA for numeric_label
   89689           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   89690           0 :      result->p_numeric_label = numeric_label_copy; 
   89691             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   89692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   89693             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   89694           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   89695           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   89696             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   89697             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   89698             :   // case: toBeCopied == COPY_DATA for decl_attributes
   89699           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   89700           0 :      result->p_decl_attributes = decl_attributes_copy; 
   89701             :   // Copy non-constructor parameter data member (access function): linkage_copy
   89702             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   89703             :   // case: toBeCopied == COPY_DATA for linkage
   89704           0 :      std::string linkage_copy = p_linkage; 
   89705           0 :      result->p_linkage = linkage_copy; 
   89706             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   89707             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   89708             :   // case: toBeCopied == COPY_DATA for declarationModifier
   89709           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   89710           0 :      result->p_declarationModifier = declarationModifier_copy; 
   89711             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   89712             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   89713             :   // case: toBeCopied == COPY_DATA for nameOnly
   89714           0 :      bool nameOnly_copy = p_nameOnly; 
   89715           0 :      result->p_nameOnly = nameOnly_copy; 
   89716             :   // Copy non-constructor parameter data member (access function): forward_copy
   89717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   89718             :   // case: toBeCopied == COPY_DATA for forward
   89719           0 :      bool forward_copy = p_forward; 
   89720           0 :      result->p_forward = forward_copy; 
   89721             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   89722             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   89723             :   // case: toBeCopied == COPY_DATA for externBrace
   89724           0 :      bool externBrace_copy = p_externBrace; 
   89725           0 :      result->p_externBrace = externBrace_copy; 
   89726             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   89727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   89728             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   89729           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   89730           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   89731             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   89732             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   89733             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   89734           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   89735           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   89736             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   89737             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   89738             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   89739           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   89740           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   89741             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   89742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   89743             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   89744           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   89745           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   89746             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   89747             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   89748             :   // case: toBeCopied == COPY_DATA for binding_label
   89749           0 :      std::string binding_label_copy = p_binding_label; 
   89750           0 :      result->p_binding_label = binding_label_copy; 
   89751             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   89752             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   89753             :   // case: toBeCopied == COPY_DATA for declarationScope
   89754           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   89755           0 :      result->p_declarationScope = declarationScope_copy; 
   89756             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   89757             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   89758             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   89759           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   89760           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   89761             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   89762             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   89763             :   // case: toBeCopied == COPY_DATA for directiveString
   89764           0 :      std::string directiveString_copy = p_directiveString; 
   89765           0 :      result->p_directiveString = directiveString_copy; 
   89766             : 
   89767             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   89768             : 
   89769             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   89770             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   89771             :   // fixupCopy(result,help);
   89772             : 
   89773             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   89774             :   // the Sg_File_Info objects that are built for the new IR nodes.
   89775           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   89776           0 :      if (locatedNode != NULL)
   89777             :         {
   89778             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   89779           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   89780           0 :           ROSE_ASSERT(start != NULL);
   89781             : #if 0
   89782             :        // Debugging information
   89783             :           if (start->get_parent() == NULL)
   89784             :              {
   89785             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89786             :              }
   89787             : #endif
   89788           0 :           start->set_parent(locatedNode);
   89789           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   89790             : 
   89791           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   89792             : 
   89793             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   89794             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   89795             :        // ROSE_ASSERT(end != NULL);
   89796           0 :           if (end == NULL)
   89797             :              {
   89798           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   89799             :              }
   89800             :             else
   89801             :              {
   89802             : #if 0
   89803             :             // Debugging information
   89804             :                if (end->get_parent() == NULL)
   89805             :                   {
   89806             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89807             :                   }
   89808             : #endif
   89809           0 :                end->set_parent(locatedNode);
   89810           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   89811             :              }
   89812             : 
   89813           0 :           SgExpression* expression = isSgExpression(result);
   89814           0 :           if (isSgExpression(this) != NULL)
   89815             :              {
   89816           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   89817             : 
   89818             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   89819           0 :                if (operatorPosition != NULL)
   89820             :                   {
   89821             : #if 0
   89822             :                  // Debugging information
   89823             :                     if (operatorPosition->get_parent() == NULL)
   89824             :                        {
   89825             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89826             :                        }
   89827             : #endif
   89828           0 :                     operatorPosition->set_parent(expression);
   89829           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   89830             :                   }
   89831             :              }
   89832             :         }
   89833             : 
   89834             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   89835           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   89836           0 :      if (initializedName != NULL)
   89837             :         {
   89838             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   89839           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   89840           0 :           ROSE_ASSERT(start != NULL);
   89841             : #if 0
   89842             :        // Debugging information
   89843             :           if (start->get_parent() == NULL)
   89844             :              {
   89845             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89846             :              }
   89847             : #endif
   89848           0 :           start->set_parent(initializedName);
   89849           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   89850             : 
   89851             : #if 0
   89852             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   89853             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   89854             : 
   89855             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   89856             :        // ROSE_ASSERT(end != NULL);
   89857             :           if (end == NULL)
   89858             :              {
   89859             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   89860             :              }
   89861             :             else
   89862             :              {
   89863             :                if (end->get_parent() == NULL)
   89864             :                   {
   89865             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   89866             :                   }
   89867             :                end->set_parent(initializedName);
   89868             :                ROSE_ASSERT(end->get_parent() != NULL);
   89869             :              }
   89870             : #endif
   89871             :         }
   89872             : 
   89873             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   89874           0 :      help.insertCopiedNodePair(this,result);
   89875             : 
   89876             :   // printf ("End of copy SgUndefDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   89877             : 
   89878             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   89879             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   89880           0 :      help.decrementDepth();
   89881             : 
   89882             :   // Test if this is the root of the copy!
   89883           0 :      if (help.get_depth() == 0)
   89884             :         {
   89885             :        // This is the original calling node.
   89886             : 
   89887             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   89888             :        // printf ("Calling SgUndefDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   89889             : #if ALT_FIXUP_COPY
   89890             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   89891           0 :           fixupCopy_scopes (result,help);
   89892           0 :           fixupCopy_symbols (result,help);
   89893           0 :           fixupCopy_references (result,help);
   89894             : #else
   89895             :           fixupCopy(result,help);
   89896             : #endif
   89897             :        // Allow this to be called recursively, so accumulate the state.
   89898             :        // Also, clear the state in the SgCopyHelp object.
   89899             :        // help.clearState();
   89900             :         }
   89901             : 
   89902           0 :      return result;
   89903             :    }
   89904             : 
   89905             : 
   89906             : /* #line 89907 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   89907             : 
   89908             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   89909             : 
   89910           0 : SgNode* SgIfdefDirectiveStatement::copy ( SgCopyHelp& help) const
   89911             :    {
   89912           0 :      SgIfdefDirectiveStatement* result = NULL;
   89913             : 
   89914             :   // printf ("Copy SgIfdefDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   89915             : 
   89916             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   89917             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   89918             :   // The default value of the depth is 0, so after this call the depth is 1!
   89919           0 :      help.incrementDepth();
   89920             : 
   89921             : #if 0
   89922             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   89923             :   // but it is not generally true that things can only be copied once!
   89924             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   89925             :   // AstAttribute* existingAttribute = const_cast<SgIfdefDirectiveStatement*>(this)->attribute["copied"];
   89926             :      bool previouslyCopied = const_cast<SgIfdefDirectiveStatement*>(this)->attribute.exists("copied");
   89927             :      if (previouslyCopied == true)
   89928             :         {
   89929             :           this->get_file_info()->display("Called from copy SgIfdefDirectiveStatement: debug");
   89930             :         }
   89931             :      ROSE_ASSERT(previouslyCopied == false);
   89932             : 
   89933             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   89934             :      AstAttribute* newAttribute = new AstAttribute();
   89935             :      ROSE_ASSERT(newAttribute != NULL);
   89936             : 
   89937             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   89938             :      const_cast<SgIfdefDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   89939             : #endif
   89940             : 
   89941             :   // Copy data members from base classes
   89942             :   // Copy constructor parameter data member: startOfConstruct_copy
   89943             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   89944             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   89945           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   89946           0 :      if ( p_startOfConstruct != NULL ) 
   89947             :         { 
   89948           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   89949             :         } 
   89950             :        else 
   89951             :         { 
   89952             :           startOfConstruct_copy = NULL; 
   89953             :         } 
   89954             :  
   89955             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   89956             : 
   89957             :   // Build an empty copy of this object (will be filled in, but 
   89958             :   // the parent can't be set and must be set by the caller)
   89959           0 :      result = new SgIfdefDirectiveStatement(  startOfConstruct_copy );
   89960           0 :      ROSE_ASSERT(result != NULL);
   89961             : 
   89962             :   // Copy data members of "this" class
   89963             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   89964             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   89965             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   89966           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   89967           0 :      if ( p_endOfConstruct != NULL ) 
   89968             :         { 
   89969           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   89970             :         } 
   89971             :        else 
   89972             :         { 
   89973             :           endOfConstruct_copy = NULL; 
   89974             :         } 
   89975             :   /* check for a valid pointer and delete if present */ 
   89976           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   89977             :   /* add assignment to result here */ 
   89978           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   89979             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   89980             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   89981             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   89982           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   89983           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   89984             :         { 
   89985           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   89986             :         } 
   89987             :        else 
   89988             :         { 
   89989             :           attachedPreprocessingInfoPtr_copy = NULL; 
   89990             :         } 
   89991             :   /* check for a valid pointer and delete if present */ 
   89992           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   89993             :   /* add assignment to result here */ 
   89994           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   89995             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   89996             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   89997             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   89998           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   89999           0 :      if ( p_attributeMechanism != NULL ) 
   90000             :         { 
   90001           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   90002             :         } 
   90003             :        else 
   90004             :         { 
   90005             :           attributeMechanism_copy = NULL; 
   90006             :         } 
   90007             :   /* check for a valid pointer and delete if present */ 
   90008           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   90009             :   /* add assignment to result here */ 
   90010           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   90011             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   90012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   90013             :   // case: toBeCopied == COPY_DATA for numeric_label
   90014           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   90015           0 :      result->p_numeric_label = numeric_label_copy; 
   90016             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   90017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   90018             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   90019           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   90020           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   90021             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   90022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   90023             :   // case: toBeCopied == COPY_DATA for decl_attributes
   90024           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   90025           0 :      result->p_decl_attributes = decl_attributes_copy; 
   90026             :   // Copy non-constructor parameter data member (access function): linkage_copy
   90027             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   90028             :   // case: toBeCopied == COPY_DATA for linkage
   90029           0 :      std::string linkage_copy = p_linkage; 
   90030           0 :      result->p_linkage = linkage_copy; 
   90031             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   90032             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   90033             :   // case: toBeCopied == COPY_DATA for declarationModifier
   90034           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   90035           0 :      result->p_declarationModifier = declarationModifier_copy; 
   90036             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   90037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   90038             :   // case: toBeCopied == COPY_DATA for nameOnly
   90039           0 :      bool nameOnly_copy = p_nameOnly; 
   90040           0 :      result->p_nameOnly = nameOnly_copy; 
   90041             :   // Copy non-constructor parameter data member (access function): forward_copy
   90042             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   90043             :   // case: toBeCopied == COPY_DATA for forward
   90044           0 :      bool forward_copy = p_forward; 
   90045           0 :      result->p_forward = forward_copy; 
   90046             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   90047             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   90048             :   // case: toBeCopied == COPY_DATA for externBrace
   90049           0 :      bool externBrace_copy = p_externBrace; 
   90050           0 :      result->p_externBrace = externBrace_copy; 
   90051             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   90052             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   90053             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   90054           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   90055           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   90056             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   90057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   90058             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   90059           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   90060           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   90061             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   90062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   90063             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   90064           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   90065           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   90066             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   90067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   90068             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   90069           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   90070           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   90071             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   90072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   90073             :   // case: toBeCopied == COPY_DATA for binding_label
   90074           0 :      std::string binding_label_copy = p_binding_label; 
   90075           0 :      result->p_binding_label = binding_label_copy; 
   90076             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   90077             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   90078             :   // case: toBeCopied == COPY_DATA for declarationScope
   90079           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   90080           0 :      result->p_declarationScope = declarationScope_copy; 
   90081             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   90082             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   90083             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   90084           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   90085           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   90086             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   90087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   90088             :   // case: toBeCopied == COPY_DATA for directiveString
   90089           0 :      std::string directiveString_copy = p_directiveString; 
   90090           0 :      result->p_directiveString = directiveString_copy; 
   90091             : 
   90092             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   90093             : 
   90094             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   90095             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   90096             :   // fixupCopy(result,help);
   90097             : 
   90098             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   90099             :   // the Sg_File_Info objects that are built for the new IR nodes.
   90100           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   90101           0 :      if (locatedNode != NULL)
   90102             :         {
   90103             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   90104           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   90105           0 :           ROSE_ASSERT(start != NULL);
   90106             : #if 0
   90107             :        // Debugging information
   90108             :           if (start->get_parent() == NULL)
   90109             :              {
   90110             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90111             :              }
   90112             : #endif
   90113           0 :           start->set_parent(locatedNode);
   90114           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   90115             : 
   90116           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   90117             : 
   90118             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   90119             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   90120             :        // ROSE_ASSERT(end != NULL);
   90121           0 :           if (end == NULL)
   90122             :              {
   90123           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   90124             :              }
   90125             :             else
   90126             :              {
   90127             : #if 0
   90128             :             // Debugging information
   90129             :                if (end->get_parent() == NULL)
   90130             :                   {
   90131             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90132             :                   }
   90133             : #endif
   90134           0 :                end->set_parent(locatedNode);
   90135           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   90136             :              }
   90137             : 
   90138           0 :           SgExpression* expression = isSgExpression(result);
   90139           0 :           if (isSgExpression(this) != NULL)
   90140             :              {
   90141           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   90142             : 
   90143             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   90144           0 :                if (operatorPosition != NULL)
   90145             :                   {
   90146             : #if 0
   90147             :                  // Debugging information
   90148             :                     if (operatorPosition->get_parent() == NULL)
   90149             :                        {
   90150             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90151             :                        }
   90152             : #endif
   90153           0 :                     operatorPosition->set_parent(expression);
   90154           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   90155             :                   }
   90156             :              }
   90157             :         }
   90158             : 
   90159             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   90160           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   90161           0 :      if (initializedName != NULL)
   90162             :         {
   90163             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   90164           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   90165           0 :           ROSE_ASSERT(start != NULL);
   90166             : #if 0
   90167             :        // Debugging information
   90168             :           if (start->get_parent() == NULL)
   90169             :              {
   90170             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90171             :              }
   90172             : #endif
   90173           0 :           start->set_parent(initializedName);
   90174           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   90175             : 
   90176             : #if 0
   90177             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   90178             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   90179             : 
   90180             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   90181             :        // ROSE_ASSERT(end != NULL);
   90182             :           if (end == NULL)
   90183             :              {
   90184             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   90185             :              }
   90186             :             else
   90187             :              {
   90188             :                if (end->get_parent() == NULL)
   90189             :                   {
   90190             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90191             :                   }
   90192             :                end->set_parent(initializedName);
   90193             :                ROSE_ASSERT(end->get_parent() != NULL);
   90194             :              }
   90195             : #endif
   90196             :         }
   90197             : 
   90198             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   90199           0 :      help.insertCopiedNodePair(this,result);
   90200             : 
   90201             :   // printf ("End of copy SgIfdefDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   90202             : 
   90203             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   90204             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   90205           0 :      help.decrementDepth();
   90206             : 
   90207             :   // Test if this is the root of the copy!
   90208           0 :      if (help.get_depth() == 0)
   90209             :         {
   90210             :        // This is the original calling node.
   90211             : 
   90212             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   90213             :        // printf ("Calling SgIfdefDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   90214             : #if ALT_FIXUP_COPY
   90215             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   90216           0 :           fixupCopy_scopes (result,help);
   90217           0 :           fixupCopy_symbols (result,help);
   90218           0 :           fixupCopy_references (result,help);
   90219             : #else
   90220             :           fixupCopy(result,help);
   90221             : #endif
   90222             :        // Allow this to be called recursively, so accumulate the state.
   90223             :        // Also, clear the state in the SgCopyHelp object.
   90224             :        // help.clearState();
   90225             :         }
   90226             : 
   90227           0 :      return result;
   90228             :    }
   90229             : 
   90230             : 
   90231             : /* #line 90232 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   90232             : 
   90233             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   90234             : 
   90235           0 : SgNode* SgIfndefDirectiveStatement::copy ( SgCopyHelp& help) const
   90236             :    {
   90237           0 :      SgIfndefDirectiveStatement* result = NULL;
   90238             : 
   90239             :   // printf ("Copy SgIfndefDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   90240             : 
   90241             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   90242             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   90243             :   // The default value of the depth is 0, so after this call the depth is 1!
   90244           0 :      help.incrementDepth();
   90245             : 
   90246             : #if 0
   90247             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   90248             :   // but it is not generally true that things can only be copied once!
   90249             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   90250             :   // AstAttribute* existingAttribute = const_cast<SgIfndefDirectiveStatement*>(this)->attribute["copied"];
   90251             :      bool previouslyCopied = const_cast<SgIfndefDirectiveStatement*>(this)->attribute.exists("copied");
   90252             :      if (previouslyCopied == true)
   90253             :         {
   90254             :           this->get_file_info()->display("Called from copy SgIfndefDirectiveStatement: debug");
   90255             :         }
   90256             :      ROSE_ASSERT(previouslyCopied == false);
   90257             : 
   90258             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   90259             :      AstAttribute* newAttribute = new AstAttribute();
   90260             :      ROSE_ASSERT(newAttribute != NULL);
   90261             : 
   90262             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   90263             :      const_cast<SgIfndefDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   90264             : #endif
   90265             : 
   90266             :   // Copy data members from base classes
   90267             :   // Copy constructor parameter data member: startOfConstruct_copy
   90268             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   90269             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   90270           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   90271           0 :      if ( p_startOfConstruct != NULL ) 
   90272             :         { 
   90273           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   90274             :         } 
   90275             :        else 
   90276             :         { 
   90277             :           startOfConstruct_copy = NULL; 
   90278             :         } 
   90279             :  
   90280             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   90281             : 
   90282             :   // Build an empty copy of this object (will be filled in, but 
   90283             :   // the parent can't be set and must be set by the caller)
   90284           0 :      result = new SgIfndefDirectiveStatement(  startOfConstruct_copy );
   90285           0 :      ROSE_ASSERT(result != NULL);
   90286             : 
   90287             :   // Copy data members of "this" class
   90288             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   90289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   90290             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   90291           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   90292           0 :      if ( p_endOfConstruct != NULL ) 
   90293             :         { 
   90294           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   90295             :         } 
   90296             :        else 
   90297             :         { 
   90298             :           endOfConstruct_copy = NULL; 
   90299             :         } 
   90300             :   /* check for a valid pointer and delete if present */ 
   90301           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   90302             :   /* add assignment to result here */ 
   90303           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   90304             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   90305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   90306             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   90307           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   90308           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   90309             :         { 
   90310           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   90311             :         } 
   90312             :        else 
   90313             :         { 
   90314             :           attachedPreprocessingInfoPtr_copy = NULL; 
   90315             :         } 
   90316             :   /* check for a valid pointer and delete if present */ 
   90317           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   90318             :   /* add assignment to result here */ 
   90319           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   90320             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   90321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   90322             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   90323           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   90324           0 :      if ( p_attributeMechanism != NULL ) 
   90325             :         { 
   90326           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   90327             :         } 
   90328             :        else 
   90329             :         { 
   90330             :           attributeMechanism_copy = NULL; 
   90331             :         } 
   90332             :   /* check for a valid pointer and delete if present */ 
   90333           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   90334             :   /* add assignment to result here */ 
   90335           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   90336             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   90337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   90338             :   // case: toBeCopied == COPY_DATA for numeric_label
   90339           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   90340           0 :      result->p_numeric_label = numeric_label_copy; 
   90341             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   90342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   90343             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   90344           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   90345           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   90346             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   90347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   90348             :   // case: toBeCopied == COPY_DATA for decl_attributes
   90349           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   90350           0 :      result->p_decl_attributes = decl_attributes_copy; 
   90351             :   // Copy non-constructor parameter data member (access function): linkage_copy
   90352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   90353             :   // case: toBeCopied == COPY_DATA for linkage
   90354           0 :      std::string linkage_copy = p_linkage; 
   90355           0 :      result->p_linkage = linkage_copy; 
   90356             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   90357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   90358             :   // case: toBeCopied == COPY_DATA for declarationModifier
   90359           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   90360           0 :      result->p_declarationModifier = declarationModifier_copy; 
   90361             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   90362             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   90363             :   // case: toBeCopied == COPY_DATA for nameOnly
   90364           0 :      bool nameOnly_copy = p_nameOnly; 
   90365           0 :      result->p_nameOnly = nameOnly_copy; 
   90366             :   // Copy non-constructor parameter data member (access function): forward_copy
   90367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   90368             :   // case: toBeCopied == COPY_DATA for forward
   90369           0 :      bool forward_copy = p_forward; 
   90370           0 :      result->p_forward = forward_copy; 
   90371             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   90372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   90373             :   // case: toBeCopied == COPY_DATA for externBrace
   90374           0 :      bool externBrace_copy = p_externBrace; 
   90375           0 :      result->p_externBrace = externBrace_copy; 
   90376             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   90377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   90378             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   90379           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   90380           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   90381             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   90382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   90383             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   90384           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   90385           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   90386             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   90387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   90388             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   90389           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   90390           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   90391             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   90392             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   90393             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   90394           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   90395           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   90396             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   90397             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   90398             :   // case: toBeCopied == COPY_DATA for binding_label
   90399           0 :      std::string binding_label_copy = p_binding_label; 
   90400           0 :      result->p_binding_label = binding_label_copy; 
   90401             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   90402             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   90403             :   // case: toBeCopied == COPY_DATA for declarationScope
   90404           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   90405           0 :      result->p_declarationScope = declarationScope_copy; 
   90406             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   90407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   90408             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   90409           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   90410           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   90411             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   90412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   90413             :   // case: toBeCopied == COPY_DATA for directiveString
   90414           0 :      std::string directiveString_copy = p_directiveString; 
   90415           0 :      result->p_directiveString = directiveString_copy; 
   90416             : 
   90417             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   90418             : 
   90419             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   90420             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   90421             :   // fixupCopy(result,help);
   90422             : 
   90423             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   90424             :   // the Sg_File_Info objects that are built for the new IR nodes.
   90425           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   90426           0 :      if (locatedNode != NULL)
   90427             :         {
   90428             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   90429           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   90430           0 :           ROSE_ASSERT(start != NULL);
   90431             : #if 0
   90432             :        // Debugging information
   90433             :           if (start->get_parent() == NULL)
   90434             :              {
   90435             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90436             :              }
   90437             : #endif
   90438           0 :           start->set_parent(locatedNode);
   90439           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   90440             : 
   90441           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   90442             : 
   90443             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   90444             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   90445             :        // ROSE_ASSERT(end != NULL);
   90446           0 :           if (end == NULL)
   90447             :              {
   90448           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   90449             :              }
   90450             :             else
   90451             :              {
   90452             : #if 0
   90453             :             // Debugging information
   90454             :                if (end->get_parent() == NULL)
   90455             :                   {
   90456             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90457             :                   }
   90458             : #endif
   90459           0 :                end->set_parent(locatedNode);
   90460           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   90461             :              }
   90462             : 
   90463           0 :           SgExpression* expression = isSgExpression(result);
   90464           0 :           if (isSgExpression(this) != NULL)
   90465             :              {
   90466           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   90467             : 
   90468             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   90469           0 :                if (operatorPosition != NULL)
   90470             :                   {
   90471             : #if 0
   90472             :                  // Debugging information
   90473             :                     if (operatorPosition->get_parent() == NULL)
   90474             :                        {
   90475             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90476             :                        }
   90477             : #endif
   90478           0 :                     operatorPosition->set_parent(expression);
   90479           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   90480             :                   }
   90481             :              }
   90482             :         }
   90483             : 
   90484             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   90485           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   90486           0 :      if (initializedName != NULL)
   90487             :         {
   90488             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   90489           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   90490           0 :           ROSE_ASSERT(start != NULL);
   90491             : #if 0
   90492             :        // Debugging information
   90493             :           if (start->get_parent() == NULL)
   90494             :              {
   90495             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90496             :              }
   90497             : #endif
   90498           0 :           start->set_parent(initializedName);
   90499           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   90500             : 
   90501             : #if 0
   90502             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   90503             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   90504             : 
   90505             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   90506             :        // ROSE_ASSERT(end != NULL);
   90507             :           if (end == NULL)
   90508             :              {
   90509             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   90510             :              }
   90511             :             else
   90512             :              {
   90513             :                if (end->get_parent() == NULL)
   90514             :                   {
   90515             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90516             :                   }
   90517             :                end->set_parent(initializedName);
   90518             :                ROSE_ASSERT(end->get_parent() != NULL);
   90519             :              }
   90520             : #endif
   90521             :         }
   90522             : 
   90523             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   90524           0 :      help.insertCopiedNodePair(this,result);
   90525             : 
   90526             :   // printf ("End of copy SgIfndefDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   90527             : 
   90528             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   90529             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   90530           0 :      help.decrementDepth();
   90531             : 
   90532             :   // Test if this is the root of the copy!
   90533           0 :      if (help.get_depth() == 0)
   90534             :         {
   90535             :        // This is the original calling node.
   90536             : 
   90537             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   90538             :        // printf ("Calling SgIfndefDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   90539             : #if ALT_FIXUP_COPY
   90540             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   90541           0 :           fixupCopy_scopes (result,help);
   90542           0 :           fixupCopy_symbols (result,help);
   90543           0 :           fixupCopy_references (result,help);
   90544             : #else
   90545             :           fixupCopy(result,help);
   90546             : #endif
   90547             :        // Allow this to be called recursively, so accumulate the state.
   90548             :        // Also, clear the state in the SgCopyHelp object.
   90549             :        // help.clearState();
   90550             :         }
   90551             : 
   90552           0 :      return result;
   90553             :    }
   90554             : 
   90555             : 
   90556             : /* #line 90557 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   90557             : 
   90558             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   90559             : 
   90560           0 : SgNode* SgIfDirectiveStatement::copy ( SgCopyHelp& help) const
   90561             :    {
   90562           0 :      SgIfDirectiveStatement* result = NULL;
   90563             : 
   90564             :   // printf ("Copy SgIfDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   90565             : 
   90566             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   90567             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   90568             :   // The default value of the depth is 0, so after this call the depth is 1!
   90569           0 :      help.incrementDepth();
   90570             : 
   90571             : #if 0
   90572             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   90573             :   // but it is not generally true that things can only be copied once!
   90574             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   90575             :   // AstAttribute* existingAttribute = const_cast<SgIfDirectiveStatement*>(this)->attribute["copied"];
   90576             :      bool previouslyCopied = const_cast<SgIfDirectiveStatement*>(this)->attribute.exists("copied");
   90577             :      if (previouslyCopied == true)
   90578             :         {
   90579             :           this->get_file_info()->display("Called from copy SgIfDirectiveStatement: debug");
   90580             :         }
   90581             :      ROSE_ASSERT(previouslyCopied == false);
   90582             : 
   90583             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   90584             :      AstAttribute* newAttribute = new AstAttribute();
   90585             :      ROSE_ASSERT(newAttribute != NULL);
   90586             : 
   90587             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   90588             :      const_cast<SgIfDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   90589             : #endif
   90590             : 
   90591             :   // Copy data members from base classes
   90592             :   // Copy constructor parameter data member: startOfConstruct_copy
   90593             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   90594             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   90595           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   90596           0 :      if ( p_startOfConstruct != NULL ) 
   90597             :         { 
   90598           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   90599             :         } 
   90600             :        else 
   90601             :         { 
   90602             :           startOfConstruct_copy = NULL; 
   90603             :         } 
   90604             :  
   90605             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   90606             : 
   90607             :   // Build an empty copy of this object (will be filled in, but 
   90608             :   // the parent can't be set and must be set by the caller)
   90609           0 :      result = new SgIfDirectiveStatement(  startOfConstruct_copy );
   90610           0 :      ROSE_ASSERT(result != NULL);
   90611             : 
   90612             :   // Copy data members of "this" class
   90613             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   90614             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   90615             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   90616           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   90617           0 :      if ( p_endOfConstruct != NULL ) 
   90618             :         { 
   90619           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   90620             :         } 
   90621             :        else 
   90622             :         { 
   90623             :           endOfConstruct_copy = NULL; 
   90624             :         } 
   90625             :   /* check for a valid pointer and delete if present */ 
   90626           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   90627             :   /* add assignment to result here */ 
   90628           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   90629             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   90630             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   90631             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   90632           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   90633           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   90634             :         { 
   90635           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   90636             :         } 
   90637             :        else 
   90638             :         { 
   90639             :           attachedPreprocessingInfoPtr_copy = NULL; 
   90640             :         } 
   90641             :   /* check for a valid pointer and delete if present */ 
   90642           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   90643             :   /* add assignment to result here */ 
   90644           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   90645             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   90646             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   90647             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   90648           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   90649           0 :      if ( p_attributeMechanism != NULL ) 
   90650             :         { 
   90651           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   90652             :         } 
   90653             :        else 
   90654             :         { 
   90655             :           attributeMechanism_copy = NULL; 
   90656             :         } 
   90657             :   /* check for a valid pointer and delete if present */ 
   90658           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   90659             :   /* add assignment to result here */ 
   90660           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   90661             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   90662             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   90663             :   // case: toBeCopied == COPY_DATA for numeric_label
   90664           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   90665           0 :      result->p_numeric_label = numeric_label_copy; 
   90666             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   90667             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   90668             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   90669           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   90670           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   90671             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   90672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   90673             :   // case: toBeCopied == COPY_DATA for decl_attributes
   90674           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   90675           0 :      result->p_decl_attributes = decl_attributes_copy; 
   90676             :   // Copy non-constructor parameter data member (access function): linkage_copy
   90677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   90678             :   // case: toBeCopied == COPY_DATA for linkage
   90679           0 :      std::string linkage_copy = p_linkage; 
   90680           0 :      result->p_linkage = linkage_copy; 
   90681             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   90682             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   90683             :   // case: toBeCopied == COPY_DATA for declarationModifier
   90684           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   90685           0 :      result->p_declarationModifier = declarationModifier_copy; 
   90686             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   90687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   90688             :   // case: toBeCopied == COPY_DATA for nameOnly
   90689           0 :      bool nameOnly_copy = p_nameOnly; 
   90690           0 :      result->p_nameOnly = nameOnly_copy; 
   90691             :   // Copy non-constructor parameter data member (access function): forward_copy
   90692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   90693             :   // case: toBeCopied == COPY_DATA for forward
   90694           0 :      bool forward_copy = p_forward; 
   90695           0 :      result->p_forward = forward_copy; 
   90696             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   90697             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   90698             :   // case: toBeCopied == COPY_DATA for externBrace
   90699           0 :      bool externBrace_copy = p_externBrace; 
   90700           0 :      result->p_externBrace = externBrace_copy; 
   90701             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   90702             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   90703             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   90704           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   90705           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   90706             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   90707             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   90708             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   90709           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   90710           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   90711             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   90712             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   90713             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   90714           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   90715           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   90716             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   90717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   90718             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   90719           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   90720           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   90721             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   90722             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   90723             :   // case: toBeCopied == COPY_DATA for binding_label
   90724           0 :      std::string binding_label_copy = p_binding_label; 
   90725           0 :      result->p_binding_label = binding_label_copy; 
   90726             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   90727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   90728             :   // case: toBeCopied == COPY_DATA for declarationScope
   90729           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   90730           0 :      result->p_declarationScope = declarationScope_copy; 
   90731             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   90732             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   90733             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   90734           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   90735           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   90736             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   90737             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   90738             :   // case: toBeCopied == COPY_DATA for directiveString
   90739           0 :      std::string directiveString_copy = p_directiveString; 
   90740           0 :      result->p_directiveString = directiveString_copy; 
   90741             : 
   90742             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   90743             : 
   90744             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   90745             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   90746             :   // fixupCopy(result,help);
   90747             : 
   90748             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   90749             :   // the Sg_File_Info objects that are built for the new IR nodes.
   90750           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   90751           0 :      if (locatedNode != NULL)
   90752             :         {
   90753             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   90754           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   90755           0 :           ROSE_ASSERT(start != NULL);
   90756             : #if 0
   90757             :        // Debugging information
   90758             :           if (start->get_parent() == NULL)
   90759             :              {
   90760             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90761             :              }
   90762             : #endif
   90763           0 :           start->set_parent(locatedNode);
   90764           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   90765             : 
   90766           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   90767             : 
   90768             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   90769             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   90770             :        // ROSE_ASSERT(end != NULL);
   90771           0 :           if (end == NULL)
   90772             :              {
   90773           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   90774             :              }
   90775             :             else
   90776             :              {
   90777             : #if 0
   90778             :             // Debugging information
   90779             :                if (end->get_parent() == NULL)
   90780             :                   {
   90781             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90782             :                   }
   90783             : #endif
   90784           0 :                end->set_parent(locatedNode);
   90785           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   90786             :              }
   90787             : 
   90788           0 :           SgExpression* expression = isSgExpression(result);
   90789           0 :           if (isSgExpression(this) != NULL)
   90790             :              {
   90791           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   90792             : 
   90793             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   90794           0 :                if (operatorPosition != NULL)
   90795             :                   {
   90796             : #if 0
   90797             :                  // Debugging information
   90798             :                     if (operatorPosition->get_parent() == NULL)
   90799             :                        {
   90800             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90801             :                        }
   90802             : #endif
   90803           0 :                     operatorPosition->set_parent(expression);
   90804           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   90805             :                   }
   90806             :              }
   90807             :         }
   90808             : 
   90809             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   90810           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   90811           0 :      if (initializedName != NULL)
   90812             :         {
   90813             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   90814           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   90815           0 :           ROSE_ASSERT(start != NULL);
   90816             : #if 0
   90817             :        // Debugging information
   90818             :           if (start->get_parent() == NULL)
   90819             :              {
   90820             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90821             :              }
   90822             : #endif
   90823           0 :           start->set_parent(initializedName);
   90824           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   90825             : 
   90826             : #if 0
   90827             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   90828             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   90829             : 
   90830             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   90831             :        // ROSE_ASSERT(end != NULL);
   90832             :           if (end == NULL)
   90833             :              {
   90834             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   90835             :              }
   90836             :             else
   90837             :              {
   90838             :                if (end->get_parent() == NULL)
   90839             :                   {
   90840             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   90841             :                   }
   90842             :                end->set_parent(initializedName);
   90843             :                ROSE_ASSERT(end->get_parent() != NULL);
   90844             :              }
   90845             : #endif
   90846             :         }
   90847             : 
   90848             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   90849           0 :      help.insertCopiedNodePair(this,result);
   90850             : 
   90851             :   // printf ("End of copy SgIfDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   90852             : 
   90853             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   90854             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   90855           0 :      help.decrementDepth();
   90856             : 
   90857             :   // Test if this is the root of the copy!
   90858           0 :      if (help.get_depth() == 0)
   90859             :         {
   90860             :        // This is the original calling node.
   90861             : 
   90862             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   90863             :        // printf ("Calling SgIfDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   90864             : #if ALT_FIXUP_COPY
   90865             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   90866           0 :           fixupCopy_scopes (result,help);
   90867           0 :           fixupCopy_symbols (result,help);
   90868           0 :           fixupCopy_references (result,help);
   90869             : #else
   90870             :           fixupCopy(result,help);
   90871             : #endif
   90872             :        // Allow this to be called recursively, so accumulate the state.
   90873             :        // Also, clear the state in the SgCopyHelp object.
   90874             :        // help.clearState();
   90875             :         }
   90876             : 
   90877           0 :      return result;
   90878             :    }
   90879             : 
   90880             : 
   90881             : /* #line 90882 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   90882             : 
   90883             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   90884             : 
   90885           0 : SgNode* SgDeadIfDirectiveStatement::copy ( SgCopyHelp& help) const
   90886             :    {
   90887           0 :      SgDeadIfDirectiveStatement* result = NULL;
   90888             : 
   90889             :   // printf ("Copy SgDeadIfDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   90890             : 
   90891             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   90892             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   90893             :   // The default value of the depth is 0, so after this call the depth is 1!
   90894           0 :      help.incrementDepth();
   90895             : 
   90896             : #if 0
   90897             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   90898             :   // but it is not generally true that things can only be copied once!
   90899             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   90900             :   // AstAttribute* existingAttribute = const_cast<SgDeadIfDirectiveStatement*>(this)->attribute["copied"];
   90901             :      bool previouslyCopied = const_cast<SgDeadIfDirectiveStatement*>(this)->attribute.exists("copied");
   90902             :      if (previouslyCopied == true)
   90903             :         {
   90904             :           this->get_file_info()->display("Called from copy SgDeadIfDirectiveStatement: debug");
   90905             :         }
   90906             :      ROSE_ASSERT(previouslyCopied == false);
   90907             : 
   90908             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   90909             :      AstAttribute* newAttribute = new AstAttribute();
   90910             :      ROSE_ASSERT(newAttribute != NULL);
   90911             : 
   90912             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   90913             :      const_cast<SgDeadIfDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   90914             : #endif
   90915             : 
   90916             :   // Copy data members from base classes
   90917             :   // Copy constructor parameter data member: startOfConstruct_copy
   90918             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   90919             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   90920           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   90921           0 :      if ( p_startOfConstruct != NULL ) 
   90922             :         { 
   90923           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   90924             :         } 
   90925             :        else 
   90926             :         { 
   90927             :           startOfConstruct_copy = NULL; 
   90928             :         } 
   90929             :  
   90930             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   90931             : 
   90932             :   // Build an empty copy of this object (will be filled in, but 
   90933             :   // the parent can't be set and must be set by the caller)
   90934           0 :      result = new SgDeadIfDirectiveStatement(  startOfConstruct_copy );
   90935           0 :      ROSE_ASSERT(result != NULL);
   90936             : 
   90937             :   // Copy data members of "this" class
   90938             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   90939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   90940             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   90941           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   90942           0 :      if ( p_endOfConstruct != NULL ) 
   90943             :         { 
   90944           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   90945             :         } 
   90946             :        else 
   90947             :         { 
   90948             :           endOfConstruct_copy = NULL; 
   90949             :         } 
   90950             :   /* check for a valid pointer and delete if present */ 
   90951           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   90952             :   /* add assignment to result here */ 
   90953           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   90954             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   90955             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   90956             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   90957           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   90958           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   90959             :         { 
   90960           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   90961             :         } 
   90962             :        else 
   90963             :         { 
   90964             :           attachedPreprocessingInfoPtr_copy = NULL; 
   90965             :         } 
   90966             :   /* check for a valid pointer and delete if present */ 
   90967           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   90968             :   /* add assignment to result here */ 
   90969           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   90970             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   90971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   90972             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   90973           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   90974           0 :      if ( p_attributeMechanism != NULL ) 
   90975             :         { 
   90976           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   90977             :         } 
   90978             :        else 
   90979             :         { 
   90980             :           attributeMechanism_copy = NULL; 
   90981             :         } 
   90982             :   /* check for a valid pointer and delete if present */ 
   90983           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   90984             :   /* add assignment to result here */ 
   90985           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   90986             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   90987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   90988             :   // case: toBeCopied == COPY_DATA for numeric_label
   90989           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   90990           0 :      result->p_numeric_label = numeric_label_copy; 
   90991             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   90992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   90993             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   90994           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   90995           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   90996             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   90997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   90998             :   // case: toBeCopied == COPY_DATA for decl_attributes
   90999           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   91000           0 :      result->p_decl_attributes = decl_attributes_copy; 
   91001             :   // Copy non-constructor parameter data member (access function): linkage_copy
   91002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   91003             :   // case: toBeCopied == COPY_DATA for linkage
   91004           0 :      std::string linkage_copy = p_linkage; 
   91005           0 :      result->p_linkage = linkage_copy; 
   91006             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   91007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   91008             :   // case: toBeCopied == COPY_DATA for declarationModifier
   91009           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   91010           0 :      result->p_declarationModifier = declarationModifier_copy; 
   91011             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   91012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   91013             :   // case: toBeCopied == COPY_DATA for nameOnly
   91014           0 :      bool nameOnly_copy = p_nameOnly; 
   91015           0 :      result->p_nameOnly = nameOnly_copy; 
   91016             :   // Copy non-constructor parameter data member (access function): forward_copy
   91017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   91018             :   // case: toBeCopied == COPY_DATA for forward
   91019           0 :      bool forward_copy = p_forward; 
   91020           0 :      result->p_forward = forward_copy; 
   91021             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   91022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   91023             :   // case: toBeCopied == COPY_DATA for externBrace
   91024           0 :      bool externBrace_copy = p_externBrace; 
   91025           0 :      result->p_externBrace = externBrace_copy; 
   91026             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   91027             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   91028             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   91029           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   91030           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   91031             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   91032             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   91033             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   91034           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   91035           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   91036             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   91037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   91038             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   91039           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   91040           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   91041             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   91042             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   91043             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   91044           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   91045           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   91046             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   91047             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   91048             :   // case: toBeCopied == COPY_DATA for binding_label
   91049           0 :      std::string binding_label_copy = p_binding_label; 
   91050           0 :      result->p_binding_label = binding_label_copy; 
   91051             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   91052             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   91053             :   // case: toBeCopied == COPY_DATA for declarationScope
   91054           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   91055           0 :      result->p_declarationScope = declarationScope_copy; 
   91056             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   91057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   91058             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   91059           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   91060           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   91061             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   91062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   91063             :   // case: toBeCopied == COPY_DATA for directiveString
   91064           0 :      std::string directiveString_copy = p_directiveString; 
   91065           0 :      result->p_directiveString = directiveString_copy; 
   91066             : 
   91067             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   91068             : 
   91069             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   91070             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   91071             :   // fixupCopy(result,help);
   91072             : 
   91073             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   91074             :   // the Sg_File_Info objects that are built for the new IR nodes.
   91075           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   91076           0 :      if (locatedNode != NULL)
   91077             :         {
   91078             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   91079           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   91080           0 :           ROSE_ASSERT(start != NULL);
   91081             : #if 0
   91082             :        // Debugging information
   91083             :           if (start->get_parent() == NULL)
   91084             :              {
   91085             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91086             :              }
   91087             : #endif
   91088           0 :           start->set_parent(locatedNode);
   91089           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   91090             : 
   91091           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   91092             : 
   91093             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   91094             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   91095             :        // ROSE_ASSERT(end != NULL);
   91096           0 :           if (end == NULL)
   91097             :              {
   91098           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   91099             :              }
   91100             :             else
   91101             :              {
   91102             : #if 0
   91103             :             // Debugging information
   91104             :                if (end->get_parent() == NULL)
   91105             :                   {
   91106             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91107             :                   }
   91108             : #endif
   91109           0 :                end->set_parent(locatedNode);
   91110           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   91111             :              }
   91112             : 
   91113           0 :           SgExpression* expression = isSgExpression(result);
   91114           0 :           if (isSgExpression(this) != NULL)
   91115             :              {
   91116           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   91117             : 
   91118             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   91119           0 :                if (operatorPosition != NULL)
   91120             :                   {
   91121             : #if 0
   91122             :                  // Debugging information
   91123             :                     if (operatorPosition->get_parent() == NULL)
   91124             :                        {
   91125             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91126             :                        }
   91127             : #endif
   91128           0 :                     operatorPosition->set_parent(expression);
   91129           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   91130             :                   }
   91131             :              }
   91132             :         }
   91133             : 
   91134             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   91135           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   91136           0 :      if (initializedName != NULL)
   91137             :         {
   91138             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   91139           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   91140           0 :           ROSE_ASSERT(start != NULL);
   91141             : #if 0
   91142             :        // Debugging information
   91143             :           if (start->get_parent() == NULL)
   91144             :              {
   91145             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91146             :              }
   91147             : #endif
   91148           0 :           start->set_parent(initializedName);
   91149           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   91150             : 
   91151             : #if 0
   91152             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   91153             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   91154             : 
   91155             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   91156             :        // ROSE_ASSERT(end != NULL);
   91157             :           if (end == NULL)
   91158             :              {
   91159             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   91160             :              }
   91161             :             else
   91162             :              {
   91163             :                if (end->get_parent() == NULL)
   91164             :                   {
   91165             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91166             :                   }
   91167             :                end->set_parent(initializedName);
   91168             :                ROSE_ASSERT(end->get_parent() != NULL);
   91169             :              }
   91170             : #endif
   91171             :         }
   91172             : 
   91173             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   91174           0 :      help.insertCopiedNodePair(this,result);
   91175             : 
   91176             :   // printf ("End of copy SgDeadIfDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   91177             : 
   91178             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   91179             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   91180           0 :      help.decrementDepth();
   91181             : 
   91182             :   // Test if this is the root of the copy!
   91183           0 :      if (help.get_depth() == 0)
   91184             :         {
   91185             :        // This is the original calling node.
   91186             : 
   91187             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   91188             :        // printf ("Calling SgDeadIfDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   91189             : #if ALT_FIXUP_COPY
   91190             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   91191           0 :           fixupCopy_scopes (result,help);
   91192           0 :           fixupCopy_symbols (result,help);
   91193           0 :           fixupCopy_references (result,help);
   91194             : #else
   91195             :           fixupCopy(result,help);
   91196             : #endif
   91197             :        // Allow this to be called recursively, so accumulate the state.
   91198             :        // Also, clear the state in the SgCopyHelp object.
   91199             :        // help.clearState();
   91200             :         }
   91201             : 
   91202           0 :      return result;
   91203             :    }
   91204             : 
   91205             : 
   91206             : /* #line 91207 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   91207             : 
   91208             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   91209             : 
   91210           0 : SgNode* SgElseDirectiveStatement::copy ( SgCopyHelp& help) const
   91211             :    {
   91212           0 :      SgElseDirectiveStatement* result = NULL;
   91213             : 
   91214             :   // printf ("Copy SgElseDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   91215             : 
   91216             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   91217             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   91218             :   // The default value of the depth is 0, so after this call the depth is 1!
   91219           0 :      help.incrementDepth();
   91220             : 
   91221             : #if 0
   91222             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   91223             :   // but it is not generally true that things can only be copied once!
   91224             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   91225             :   // AstAttribute* existingAttribute = const_cast<SgElseDirectiveStatement*>(this)->attribute["copied"];
   91226             :      bool previouslyCopied = const_cast<SgElseDirectiveStatement*>(this)->attribute.exists("copied");
   91227             :      if (previouslyCopied == true)
   91228             :         {
   91229             :           this->get_file_info()->display("Called from copy SgElseDirectiveStatement: debug");
   91230             :         }
   91231             :      ROSE_ASSERT(previouslyCopied == false);
   91232             : 
   91233             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   91234             :      AstAttribute* newAttribute = new AstAttribute();
   91235             :      ROSE_ASSERT(newAttribute != NULL);
   91236             : 
   91237             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   91238             :      const_cast<SgElseDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   91239             : #endif
   91240             : 
   91241             :   // Copy data members from base classes
   91242             :   // Copy constructor parameter data member: startOfConstruct_copy
   91243             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   91244             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   91245           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   91246           0 :      if ( p_startOfConstruct != NULL ) 
   91247             :         { 
   91248           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   91249             :         } 
   91250             :        else 
   91251             :         { 
   91252             :           startOfConstruct_copy = NULL; 
   91253             :         } 
   91254             :  
   91255             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   91256             : 
   91257             :   // Build an empty copy of this object (will be filled in, but 
   91258             :   // the parent can't be set and must be set by the caller)
   91259           0 :      result = new SgElseDirectiveStatement(  startOfConstruct_copy );
   91260           0 :      ROSE_ASSERT(result != NULL);
   91261             : 
   91262             :   // Copy data members of "this" class
   91263             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   91264             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   91265             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   91266           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   91267           0 :      if ( p_endOfConstruct != NULL ) 
   91268             :         { 
   91269           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   91270             :         } 
   91271             :        else 
   91272             :         { 
   91273             :           endOfConstruct_copy = NULL; 
   91274             :         } 
   91275             :   /* check for a valid pointer and delete if present */ 
   91276           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   91277             :   /* add assignment to result here */ 
   91278           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   91279             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   91280             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   91281             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   91282           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   91283           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   91284             :         { 
   91285           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   91286             :         } 
   91287             :        else 
   91288             :         { 
   91289             :           attachedPreprocessingInfoPtr_copy = NULL; 
   91290             :         } 
   91291             :   /* check for a valid pointer and delete if present */ 
   91292           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   91293             :   /* add assignment to result here */ 
   91294           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   91295             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   91296             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   91297             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   91298           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   91299           0 :      if ( p_attributeMechanism != NULL ) 
   91300             :         { 
   91301           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   91302             :         } 
   91303             :        else 
   91304             :         { 
   91305             :           attributeMechanism_copy = NULL; 
   91306             :         } 
   91307             :   /* check for a valid pointer and delete if present */ 
   91308           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   91309             :   /* add assignment to result here */ 
   91310           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   91311             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   91312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   91313             :   // case: toBeCopied == COPY_DATA for numeric_label
   91314           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   91315           0 :      result->p_numeric_label = numeric_label_copy; 
   91316             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   91317             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   91318             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   91319           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   91320           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   91321             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   91322             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   91323             :   // case: toBeCopied == COPY_DATA for decl_attributes
   91324           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   91325           0 :      result->p_decl_attributes = decl_attributes_copy; 
   91326             :   // Copy non-constructor parameter data member (access function): linkage_copy
   91327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   91328             :   // case: toBeCopied == COPY_DATA for linkage
   91329           0 :      std::string linkage_copy = p_linkage; 
   91330           0 :      result->p_linkage = linkage_copy; 
   91331             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   91332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   91333             :   // case: toBeCopied == COPY_DATA for declarationModifier
   91334           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   91335           0 :      result->p_declarationModifier = declarationModifier_copy; 
   91336             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   91337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   91338             :   // case: toBeCopied == COPY_DATA for nameOnly
   91339           0 :      bool nameOnly_copy = p_nameOnly; 
   91340           0 :      result->p_nameOnly = nameOnly_copy; 
   91341             :   // Copy non-constructor parameter data member (access function): forward_copy
   91342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   91343             :   // case: toBeCopied == COPY_DATA for forward
   91344           0 :      bool forward_copy = p_forward; 
   91345           0 :      result->p_forward = forward_copy; 
   91346             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   91347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   91348             :   // case: toBeCopied == COPY_DATA for externBrace
   91349           0 :      bool externBrace_copy = p_externBrace; 
   91350           0 :      result->p_externBrace = externBrace_copy; 
   91351             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   91352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   91353             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   91354           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   91355           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   91356             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   91357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   91358             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   91359           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   91360           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   91361             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   91362             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   91363             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   91364           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   91365           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   91366             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   91367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   91368             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   91369           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   91370           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   91371             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   91372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   91373             :   // case: toBeCopied == COPY_DATA for binding_label
   91374           0 :      std::string binding_label_copy = p_binding_label; 
   91375           0 :      result->p_binding_label = binding_label_copy; 
   91376             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   91377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   91378             :   // case: toBeCopied == COPY_DATA for declarationScope
   91379           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   91380           0 :      result->p_declarationScope = declarationScope_copy; 
   91381             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   91382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   91383             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   91384           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   91385           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   91386             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   91387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   91388             :   // case: toBeCopied == COPY_DATA for directiveString
   91389           0 :      std::string directiveString_copy = p_directiveString; 
   91390           0 :      result->p_directiveString = directiveString_copy; 
   91391             : 
   91392             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   91393             : 
   91394             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   91395             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   91396             :   // fixupCopy(result,help);
   91397             : 
   91398             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   91399             :   // the Sg_File_Info objects that are built for the new IR nodes.
   91400           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   91401           0 :      if (locatedNode != NULL)
   91402             :         {
   91403             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   91404           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   91405           0 :           ROSE_ASSERT(start != NULL);
   91406             : #if 0
   91407             :        // Debugging information
   91408             :           if (start->get_parent() == NULL)
   91409             :              {
   91410             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91411             :              }
   91412             : #endif
   91413           0 :           start->set_parent(locatedNode);
   91414           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   91415             : 
   91416           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   91417             : 
   91418             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   91419             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   91420             :        // ROSE_ASSERT(end != NULL);
   91421           0 :           if (end == NULL)
   91422             :              {
   91423           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   91424             :              }
   91425             :             else
   91426             :              {
   91427             : #if 0
   91428             :             // Debugging information
   91429             :                if (end->get_parent() == NULL)
   91430             :                   {
   91431             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91432             :                   }
   91433             : #endif
   91434           0 :                end->set_parent(locatedNode);
   91435           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   91436             :              }
   91437             : 
   91438           0 :           SgExpression* expression = isSgExpression(result);
   91439           0 :           if (isSgExpression(this) != NULL)
   91440             :              {
   91441           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   91442             : 
   91443             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   91444           0 :                if (operatorPosition != NULL)
   91445             :                   {
   91446             : #if 0
   91447             :                  // Debugging information
   91448             :                     if (operatorPosition->get_parent() == NULL)
   91449             :                        {
   91450             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91451             :                        }
   91452             : #endif
   91453           0 :                     operatorPosition->set_parent(expression);
   91454           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   91455             :                   }
   91456             :              }
   91457             :         }
   91458             : 
   91459             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   91460           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   91461           0 :      if (initializedName != NULL)
   91462             :         {
   91463             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   91464           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   91465           0 :           ROSE_ASSERT(start != NULL);
   91466             : #if 0
   91467             :        // Debugging information
   91468             :           if (start->get_parent() == NULL)
   91469             :              {
   91470             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91471             :              }
   91472             : #endif
   91473           0 :           start->set_parent(initializedName);
   91474           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   91475             : 
   91476             : #if 0
   91477             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   91478             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   91479             : 
   91480             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   91481             :        // ROSE_ASSERT(end != NULL);
   91482             :           if (end == NULL)
   91483             :              {
   91484             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   91485             :              }
   91486             :             else
   91487             :              {
   91488             :                if (end->get_parent() == NULL)
   91489             :                   {
   91490             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91491             :                   }
   91492             :                end->set_parent(initializedName);
   91493             :                ROSE_ASSERT(end->get_parent() != NULL);
   91494             :              }
   91495             : #endif
   91496             :         }
   91497             : 
   91498             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   91499           0 :      help.insertCopiedNodePair(this,result);
   91500             : 
   91501             :   // printf ("End of copy SgElseDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   91502             : 
   91503             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   91504             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   91505           0 :      help.decrementDepth();
   91506             : 
   91507             :   // Test if this is the root of the copy!
   91508           0 :      if (help.get_depth() == 0)
   91509             :         {
   91510             :        // This is the original calling node.
   91511             : 
   91512             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   91513             :        // printf ("Calling SgElseDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   91514             : #if ALT_FIXUP_COPY
   91515             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   91516           0 :           fixupCopy_scopes (result,help);
   91517           0 :           fixupCopy_symbols (result,help);
   91518           0 :           fixupCopy_references (result,help);
   91519             : #else
   91520             :           fixupCopy(result,help);
   91521             : #endif
   91522             :        // Allow this to be called recursively, so accumulate the state.
   91523             :        // Also, clear the state in the SgCopyHelp object.
   91524             :        // help.clearState();
   91525             :         }
   91526             : 
   91527           0 :      return result;
   91528             :    }
   91529             : 
   91530             : 
   91531             : /* #line 91532 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   91532             : 
   91533             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   91534             : 
   91535           0 : SgNode* SgElseifDirectiveStatement::copy ( SgCopyHelp& help) const
   91536             :    {
   91537           0 :      SgElseifDirectiveStatement* result = NULL;
   91538             : 
   91539             :   // printf ("Copy SgElseifDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   91540             : 
   91541             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   91542             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   91543             :   // The default value of the depth is 0, so after this call the depth is 1!
   91544           0 :      help.incrementDepth();
   91545             : 
   91546             : #if 0
   91547             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   91548             :   // but it is not generally true that things can only be copied once!
   91549             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   91550             :   // AstAttribute* existingAttribute = const_cast<SgElseifDirectiveStatement*>(this)->attribute["copied"];
   91551             :      bool previouslyCopied = const_cast<SgElseifDirectiveStatement*>(this)->attribute.exists("copied");
   91552             :      if (previouslyCopied == true)
   91553             :         {
   91554             :           this->get_file_info()->display("Called from copy SgElseifDirectiveStatement: debug");
   91555             :         }
   91556             :      ROSE_ASSERT(previouslyCopied == false);
   91557             : 
   91558             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   91559             :      AstAttribute* newAttribute = new AstAttribute();
   91560             :      ROSE_ASSERT(newAttribute != NULL);
   91561             : 
   91562             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   91563             :      const_cast<SgElseifDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   91564             : #endif
   91565             : 
   91566             :   // Copy data members from base classes
   91567             :   // Copy constructor parameter data member: startOfConstruct_copy
   91568             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   91569             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   91570           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   91571           0 :      if ( p_startOfConstruct != NULL ) 
   91572             :         { 
   91573           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   91574             :         } 
   91575             :        else 
   91576             :         { 
   91577             :           startOfConstruct_copy = NULL; 
   91578             :         } 
   91579             :  
   91580             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   91581             : 
   91582             :   // Build an empty copy of this object (will be filled in, but 
   91583             :   // the parent can't be set and must be set by the caller)
   91584           0 :      result = new SgElseifDirectiveStatement(  startOfConstruct_copy );
   91585           0 :      ROSE_ASSERT(result != NULL);
   91586             : 
   91587             :   // Copy data members of "this" class
   91588             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   91589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   91590             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   91591           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   91592           0 :      if ( p_endOfConstruct != NULL ) 
   91593             :         { 
   91594           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   91595             :         } 
   91596             :        else 
   91597             :         { 
   91598             :           endOfConstruct_copy = NULL; 
   91599             :         } 
   91600             :   /* check for a valid pointer and delete if present */ 
   91601           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   91602             :   /* add assignment to result here */ 
   91603           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   91604             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   91605             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   91606             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   91607           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   91608           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   91609             :         { 
   91610           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   91611             :         } 
   91612             :        else 
   91613             :         { 
   91614             :           attachedPreprocessingInfoPtr_copy = NULL; 
   91615             :         } 
   91616             :   /* check for a valid pointer and delete if present */ 
   91617           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   91618             :   /* add assignment to result here */ 
   91619           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   91620             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   91621             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   91622             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   91623           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   91624           0 :      if ( p_attributeMechanism != NULL ) 
   91625             :         { 
   91626           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   91627             :         } 
   91628             :        else 
   91629             :         { 
   91630             :           attributeMechanism_copy = NULL; 
   91631             :         } 
   91632             :   /* check for a valid pointer and delete if present */ 
   91633           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   91634             :   /* add assignment to result here */ 
   91635           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   91636             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   91637             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   91638             :   // case: toBeCopied == COPY_DATA for numeric_label
   91639           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   91640           0 :      result->p_numeric_label = numeric_label_copy; 
   91641             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   91642             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   91643             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   91644           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   91645           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   91646             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   91647             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   91648             :   // case: toBeCopied == COPY_DATA for decl_attributes
   91649           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   91650           0 :      result->p_decl_attributes = decl_attributes_copy; 
   91651             :   // Copy non-constructor parameter data member (access function): linkage_copy
   91652             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   91653             :   // case: toBeCopied == COPY_DATA for linkage
   91654           0 :      std::string linkage_copy = p_linkage; 
   91655           0 :      result->p_linkage = linkage_copy; 
   91656             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   91657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   91658             :   // case: toBeCopied == COPY_DATA for declarationModifier
   91659           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   91660           0 :      result->p_declarationModifier = declarationModifier_copy; 
   91661             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   91662             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   91663             :   // case: toBeCopied == COPY_DATA for nameOnly
   91664           0 :      bool nameOnly_copy = p_nameOnly; 
   91665           0 :      result->p_nameOnly = nameOnly_copy; 
   91666             :   // Copy non-constructor parameter data member (access function): forward_copy
   91667             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   91668             :   // case: toBeCopied == COPY_DATA for forward
   91669           0 :      bool forward_copy = p_forward; 
   91670           0 :      result->p_forward = forward_copy; 
   91671             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   91672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   91673             :   // case: toBeCopied == COPY_DATA for externBrace
   91674           0 :      bool externBrace_copy = p_externBrace; 
   91675           0 :      result->p_externBrace = externBrace_copy; 
   91676             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   91677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   91678             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   91679           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   91680           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   91681             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   91682             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   91683             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   91684           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   91685           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   91686             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   91687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   91688             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   91689           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   91690           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   91691             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   91692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   91693             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   91694           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   91695           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   91696             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   91697             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   91698             :   // case: toBeCopied == COPY_DATA for binding_label
   91699           0 :      std::string binding_label_copy = p_binding_label; 
   91700           0 :      result->p_binding_label = binding_label_copy; 
   91701             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   91702             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   91703             :   // case: toBeCopied == COPY_DATA for declarationScope
   91704           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   91705           0 :      result->p_declarationScope = declarationScope_copy; 
   91706             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   91707             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   91708             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   91709           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   91710           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   91711             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   91712             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   91713             :   // case: toBeCopied == COPY_DATA for directiveString
   91714           0 :      std::string directiveString_copy = p_directiveString; 
   91715           0 :      result->p_directiveString = directiveString_copy; 
   91716             : 
   91717             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   91718             : 
   91719             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   91720             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   91721             :   // fixupCopy(result,help);
   91722             : 
   91723             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   91724             :   // the Sg_File_Info objects that are built for the new IR nodes.
   91725           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   91726           0 :      if (locatedNode != NULL)
   91727             :         {
   91728             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   91729           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   91730           0 :           ROSE_ASSERT(start != NULL);
   91731             : #if 0
   91732             :        // Debugging information
   91733             :           if (start->get_parent() == NULL)
   91734             :              {
   91735             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91736             :              }
   91737             : #endif
   91738           0 :           start->set_parent(locatedNode);
   91739           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   91740             : 
   91741           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   91742             : 
   91743             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   91744             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   91745             :        // ROSE_ASSERT(end != NULL);
   91746           0 :           if (end == NULL)
   91747             :              {
   91748           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   91749             :              }
   91750             :             else
   91751             :              {
   91752             : #if 0
   91753             :             // Debugging information
   91754             :                if (end->get_parent() == NULL)
   91755             :                   {
   91756             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91757             :                   }
   91758             : #endif
   91759           0 :                end->set_parent(locatedNode);
   91760           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   91761             :              }
   91762             : 
   91763           0 :           SgExpression* expression = isSgExpression(result);
   91764           0 :           if (isSgExpression(this) != NULL)
   91765             :              {
   91766           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   91767             : 
   91768             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   91769           0 :                if (operatorPosition != NULL)
   91770             :                   {
   91771             : #if 0
   91772             :                  // Debugging information
   91773             :                     if (operatorPosition->get_parent() == NULL)
   91774             :                        {
   91775             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91776             :                        }
   91777             : #endif
   91778           0 :                     operatorPosition->set_parent(expression);
   91779           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   91780             :                   }
   91781             :              }
   91782             :         }
   91783             : 
   91784             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   91785           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   91786           0 :      if (initializedName != NULL)
   91787             :         {
   91788             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   91789           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   91790           0 :           ROSE_ASSERT(start != NULL);
   91791             : #if 0
   91792             :        // Debugging information
   91793             :           if (start->get_parent() == NULL)
   91794             :              {
   91795             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91796             :              }
   91797             : #endif
   91798           0 :           start->set_parent(initializedName);
   91799           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   91800             : 
   91801             : #if 0
   91802             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   91803             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   91804             : 
   91805             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   91806             :        // ROSE_ASSERT(end != NULL);
   91807             :           if (end == NULL)
   91808             :              {
   91809             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   91810             :              }
   91811             :             else
   91812             :              {
   91813             :                if (end->get_parent() == NULL)
   91814             :                   {
   91815             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   91816             :                   }
   91817             :                end->set_parent(initializedName);
   91818             :                ROSE_ASSERT(end->get_parent() != NULL);
   91819             :              }
   91820             : #endif
   91821             :         }
   91822             : 
   91823             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   91824           0 :      help.insertCopiedNodePair(this,result);
   91825             : 
   91826             :   // printf ("End of copy SgElseifDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   91827             : 
   91828             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   91829             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   91830           0 :      help.decrementDepth();
   91831             : 
   91832             :   // Test if this is the root of the copy!
   91833           0 :      if (help.get_depth() == 0)
   91834             :         {
   91835             :        // This is the original calling node.
   91836             : 
   91837             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   91838             :        // printf ("Calling SgElseifDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   91839             : #if ALT_FIXUP_COPY
   91840             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   91841           0 :           fixupCopy_scopes (result,help);
   91842           0 :           fixupCopy_symbols (result,help);
   91843           0 :           fixupCopy_references (result,help);
   91844             : #else
   91845             :           fixupCopy(result,help);
   91846             : #endif
   91847             :        // Allow this to be called recursively, so accumulate the state.
   91848             :        // Also, clear the state in the SgCopyHelp object.
   91849             :        // help.clearState();
   91850             :         }
   91851             : 
   91852           0 :      return result;
   91853             :    }
   91854             : 
   91855             : 
   91856             : /* #line 91857 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   91857             : 
   91858             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   91859             : 
   91860           0 : SgNode* SgEndifDirectiveStatement::copy ( SgCopyHelp& help) const
   91861             :    {
   91862           0 :      SgEndifDirectiveStatement* result = NULL;
   91863             : 
   91864             :   // printf ("Copy SgEndifDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   91865             : 
   91866             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   91867             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   91868             :   // The default value of the depth is 0, so after this call the depth is 1!
   91869           0 :      help.incrementDepth();
   91870             : 
   91871             : #if 0
   91872             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   91873             :   // but it is not generally true that things can only be copied once!
   91874             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   91875             :   // AstAttribute* existingAttribute = const_cast<SgEndifDirectiveStatement*>(this)->attribute["copied"];
   91876             :      bool previouslyCopied = const_cast<SgEndifDirectiveStatement*>(this)->attribute.exists("copied");
   91877             :      if (previouslyCopied == true)
   91878             :         {
   91879             :           this->get_file_info()->display("Called from copy SgEndifDirectiveStatement: debug");
   91880             :         }
   91881             :      ROSE_ASSERT(previouslyCopied == false);
   91882             : 
   91883             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   91884             :      AstAttribute* newAttribute = new AstAttribute();
   91885             :      ROSE_ASSERT(newAttribute != NULL);
   91886             : 
   91887             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   91888             :      const_cast<SgEndifDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   91889             : #endif
   91890             : 
   91891             :   // Copy data members from base classes
   91892             :   // Copy constructor parameter data member: startOfConstruct_copy
   91893             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   91894             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   91895           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   91896           0 :      if ( p_startOfConstruct != NULL ) 
   91897             :         { 
   91898           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   91899             :         } 
   91900             :        else 
   91901             :         { 
   91902             :           startOfConstruct_copy = NULL; 
   91903             :         } 
   91904             :  
   91905             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   91906             : 
   91907             :   // Build an empty copy of this object (will be filled in, but 
   91908             :   // the parent can't be set and must be set by the caller)
   91909           0 :      result = new SgEndifDirectiveStatement(  startOfConstruct_copy );
   91910           0 :      ROSE_ASSERT(result != NULL);
   91911             : 
   91912             :   // Copy data members of "this" class
   91913             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   91914             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   91915             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   91916           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   91917           0 :      if ( p_endOfConstruct != NULL ) 
   91918             :         { 
   91919           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   91920             :         } 
   91921             :        else 
   91922             :         { 
   91923             :           endOfConstruct_copy = NULL; 
   91924             :         } 
   91925             :   /* check for a valid pointer and delete if present */ 
   91926           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   91927             :   /* add assignment to result here */ 
   91928           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   91929             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   91930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   91931             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   91932           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   91933           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   91934             :         { 
   91935           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   91936             :         } 
   91937             :        else 
   91938             :         { 
   91939             :           attachedPreprocessingInfoPtr_copy = NULL; 
   91940             :         } 
   91941             :   /* check for a valid pointer and delete if present */ 
   91942           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   91943             :   /* add assignment to result here */ 
   91944           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   91945             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   91946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   91947             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   91948           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   91949           0 :      if ( p_attributeMechanism != NULL ) 
   91950             :         { 
   91951           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   91952             :         } 
   91953             :        else 
   91954             :         { 
   91955             :           attributeMechanism_copy = NULL; 
   91956             :         } 
   91957             :   /* check for a valid pointer and delete if present */ 
   91958           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   91959             :   /* add assignment to result here */ 
   91960           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   91961             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   91962             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   91963             :   // case: toBeCopied == COPY_DATA for numeric_label
   91964           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   91965           0 :      result->p_numeric_label = numeric_label_copy; 
   91966             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   91967             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   91968             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   91969           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   91970           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   91971             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   91972             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   91973             :   // case: toBeCopied == COPY_DATA for decl_attributes
   91974           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   91975           0 :      result->p_decl_attributes = decl_attributes_copy; 
   91976             :   // Copy non-constructor parameter data member (access function): linkage_copy
   91977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   91978             :   // case: toBeCopied == COPY_DATA for linkage
   91979           0 :      std::string linkage_copy = p_linkage; 
   91980           0 :      result->p_linkage = linkage_copy; 
   91981             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   91982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   91983             :   // case: toBeCopied == COPY_DATA for declarationModifier
   91984           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   91985           0 :      result->p_declarationModifier = declarationModifier_copy; 
   91986             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   91987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   91988             :   // case: toBeCopied == COPY_DATA for nameOnly
   91989           0 :      bool nameOnly_copy = p_nameOnly; 
   91990           0 :      result->p_nameOnly = nameOnly_copy; 
   91991             :   // Copy non-constructor parameter data member (access function): forward_copy
   91992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   91993             :   // case: toBeCopied == COPY_DATA for forward
   91994           0 :      bool forward_copy = p_forward; 
   91995           0 :      result->p_forward = forward_copy; 
   91996             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   91997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   91998             :   // case: toBeCopied == COPY_DATA for externBrace
   91999           0 :      bool externBrace_copy = p_externBrace; 
   92000           0 :      result->p_externBrace = externBrace_copy; 
   92001             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   92002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   92003             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   92004           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   92005           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   92006             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   92007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   92008             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   92009           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   92010           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   92011             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   92012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   92013             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   92014           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   92015           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   92016             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   92017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   92018             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   92019           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   92020           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   92021             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   92022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   92023             :   // case: toBeCopied == COPY_DATA for binding_label
   92024           0 :      std::string binding_label_copy = p_binding_label; 
   92025           0 :      result->p_binding_label = binding_label_copy; 
   92026             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   92027             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   92028             :   // case: toBeCopied == COPY_DATA for declarationScope
   92029           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   92030           0 :      result->p_declarationScope = declarationScope_copy; 
   92031             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   92032             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   92033             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   92034           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   92035           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   92036             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   92037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   92038             :   // case: toBeCopied == COPY_DATA for directiveString
   92039           0 :      std::string directiveString_copy = p_directiveString; 
   92040           0 :      result->p_directiveString = directiveString_copy; 
   92041             : 
   92042             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   92043             : 
   92044             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   92045             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   92046             :   // fixupCopy(result,help);
   92047             : 
   92048             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   92049             :   // the Sg_File_Info objects that are built for the new IR nodes.
   92050           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   92051           0 :      if (locatedNode != NULL)
   92052             :         {
   92053             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   92054           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   92055           0 :           ROSE_ASSERT(start != NULL);
   92056             : #if 0
   92057             :        // Debugging information
   92058             :           if (start->get_parent() == NULL)
   92059             :              {
   92060             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92061             :              }
   92062             : #endif
   92063           0 :           start->set_parent(locatedNode);
   92064           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   92065             : 
   92066           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   92067             : 
   92068             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   92069             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   92070             :        // ROSE_ASSERT(end != NULL);
   92071           0 :           if (end == NULL)
   92072             :              {
   92073           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   92074             :              }
   92075             :             else
   92076             :              {
   92077             : #if 0
   92078             :             // Debugging information
   92079             :                if (end->get_parent() == NULL)
   92080             :                   {
   92081             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92082             :                   }
   92083             : #endif
   92084           0 :                end->set_parent(locatedNode);
   92085           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   92086             :              }
   92087             : 
   92088           0 :           SgExpression* expression = isSgExpression(result);
   92089           0 :           if (isSgExpression(this) != NULL)
   92090             :              {
   92091           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   92092             : 
   92093             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   92094           0 :                if (operatorPosition != NULL)
   92095             :                   {
   92096             : #if 0
   92097             :                  // Debugging information
   92098             :                     if (operatorPosition->get_parent() == NULL)
   92099             :                        {
   92100             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92101             :                        }
   92102             : #endif
   92103           0 :                     operatorPosition->set_parent(expression);
   92104           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   92105             :                   }
   92106             :              }
   92107             :         }
   92108             : 
   92109             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   92110           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   92111           0 :      if (initializedName != NULL)
   92112             :         {
   92113             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   92114           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   92115           0 :           ROSE_ASSERT(start != NULL);
   92116             : #if 0
   92117             :        // Debugging information
   92118             :           if (start->get_parent() == NULL)
   92119             :              {
   92120             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92121             :              }
   92122             : #endif
   92123           0 :           start->set_parent(initializedName);
   92124           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   92125             : 
   92126             : #if 0
   92127             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   92128             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   92129             : 
   92130             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   92131             :        // ROSE_ASSERT(end != NULL);
   92132             :           if (end == NULL)
   92133             :              {
   92134             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   92135             :              }
   92136             :             else
   92137             :              {
   92138             :                if (end->get_parent() == NULL)
   92139             :                   {
   92140             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92141             :                   }
   92142             :                end->set_parent(initializedName);
   92143             :                ROSE_ASSERT(end->get_parent() != NULL);
   92144             :              }
   92145             : #endif
   92146             :         }
   92147             : 
   92148             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   92149           0 :      help.insertCopiedNodePair(this,result);
   92150             : 
   92151             :   // printf ("End of copy SgEndifDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   92152             : 
   92153             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   92154             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   92155           0 :      help.decrementDepth();
   92156             : 
   92157             :   // Test if this is the root of the copy!
   92158           0 :      if (help.get_depth() == 0)
   92159             :         {
   92160             :        // This is the original calling node.
   92161             : 
   92162             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   92163             :        // printf ("Calling SgEndifDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   92164             : #if ALT_FIXUP_COPY
   92165             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   92166           0 :           fixupCopy_scopes (result,help);
   92167           0 :           fixupCopy_symbols (result,help);
   92168           0 :           fixupCopy_references (result,help);
   92169             : #else
   92170             :           fixupCopy(result,help);
   92171             : #endif
   92172             :        // Allow this to be called recursively, so accumulate the state.
   92173             :        // Also, clear the state in the SgCopyHelp object.
   92174             :        // help.clearState();
   92175             :         }
   92176             : 
   92177           0 :      return result;
   92178             :    }
   92179             : 
   92180             : 
   92181             : /* #line 92182 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   92182             : 
   92183             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   92184             : 
   92185           0 : SgNode* SgLineDirectiveStatement::copy ( SgCopyHelp& help) const
   92186             :    {
   92187           0 :      SgLineDirectiveStatement* result = NULL;
   92188             : 
   92189             :   // printf ("Copy SgLineDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   92190             : 
   92191             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   92192             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   92193             :   // The default value of the depth is 0, so after this call the depth is 1!
   92194           0 :      help.incrementDepth();
   92195             : 
   92196             : #if 0
   92197             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   92198             :   // but it is not generally true that things can only be copied once!
   92199             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   92200             :   // AstAttribute* existingAttribute = const_cast<SgLineDirectiveStatement*>(this)->attribute["copied"];
   92201             :      bool previouslyCopied = const_cast<SgLineDirectiveStatement*>(this)->attribute.exists("copied");
   92202             :      if (previouslyCopied == true)
   92203             :         {
   92204             :           this->get_file_info()->display("Called from copy SgLineDirectiveStatement: debug");
   92205             :         }
   92206             :      ROSE_ASSERT(previouslyCopied == false);
   92207             : 
   92208             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   92209             :      AstAttribute* newAttribute = new AstAttribute();
   92210             :      ROSE_ASSERT(newAttribute != NULL);
   92211             : 
   92212             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   92213             :      const_cast<SgLineDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   92214             : #endif
   92215             : 
   92216             :   // Copy data members from base classes
   92217             :   // Copy constructor parameter data member: startOfConstruct_copy
   92218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   92219             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   92220           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   92221           0 :      if ( p_startOfConstruct != NULL ) 
   92222             :         { 
   92223           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   92224             :         } 
   92225             :        else 
   92226             :         { 
   92227             :           startOfConstruct_copy = NULL; 
   92228             :         } 
   92229             :  
   92230             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   92231             : 
   92232             :   // Build an empty copy of this object (will be filled in, but 
   92233             :   // the parent can't be set and must be set by the caller)
   92234           0 :      result = new SgLineDirectiveStatement(  startOfConstruct_copy );
   92235           0 :      ROSE_ASSERT(result != NULL);
   92236             : 
   92237             :   // Copy data members of "this" class
   92238             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   92239             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   92240             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   92241           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   92242           0 :      if ( p_endOfConstruct != NULL ) 
   92243             :         { 
   92244           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   92245             :         } 
   92246             :        else 
   92247             :         { 
   92248             :           endOfConstruct_copy = NULL; 
   92249             :         } 
   92250             :   /* check for a valid pointer and delete if present */ 
   92251           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   92252             :   /* add assignment to result here */ 
   92253           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   92254             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   92255             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   92256             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   92257           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   92258           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   92259             :         { 
   92260           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   92261             :         } 
   92262             :        else 
   92263             :         { 
   92264             :           attachedPreprocessingInfoPtr_copy = NULL; 
   92265             :         } 
   92266             :   /* check for a valid pointer and delete if present */ 
   92267           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   92268             :   /* add assignment to result here */ 
   92269           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   92270             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   92271             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   92272             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   92273           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   92274           0 :      if ( p_attributeMechanism != NULL ) 
   92275             :         { 
   92276           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   92277             :         } 
   92278             :        else 
   92279             :         { 
   92280             :           attributeMechanism_copy = NULL; 
   92281             :         } 
   92282             :   /* check for a valid pointer and delete if present */ 
   92283           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   92284             :   /* add assignment to result here */ 
   92285           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   92286             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   92287             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   92288             :   // case: toBeCopied == COPY_DATA for numeric_label
   92289           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   92290           0 :      result->p_numeric_label = numeric_label_copy; 
   92291             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   92292             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   92293             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   92294           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   92295           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   92296             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   92297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   92298             :   // case: toBeCopied == COPY_DATA for decl_attributes
   92299           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   92300           0 :      result->p_decl_attributes = decl_attributes_copy; 
   92301             :   // Copy non-constructor parameter data member (access function): linkage_copy
   92302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   92303             :   // case: toBeCopied == COPY_DATA for linkage
   92304           0 :      std::string linkage_copy = p_linkage; 
   92305           0 :      result->p_linkage = linkage_copy; 
   92306             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   92307             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   92308             :   // case: toBeCopied == COPY_DATA for declarationModifier
   92309           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   92310           0 :      result->p_declarationModifier = declarationModifier_copy; 
   92311             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   92312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   92313             :   // case: toBeCopied == COPY_DATA for nameOnly
   92314           0 :      bool nameOnly_copy = p_nameOnly; 
   92315           0 :      result->p_nameOnly = nameOnly_copy; 
   92316             :   // Copy non-constructor parameter data member (access function): forward_copy
   92317             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   92318             :   // case: toBeCopied == COPY_DATA for forward
   92319           0 :      bool forward_copy = p_forward; 
   92320           0 :      result->p_forward = forward_copy; 
   92321             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   92322             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   92323             :   // case: toBeCopied == COPY_DATA for externBrace
   92324           0 :      bool externBrace_copy = p_externBrace; 
   92325           0 :      result->p_externBrace = externBrace_copy; 
   92326             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   92327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   92328             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   92329           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   92330           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   92331             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   92332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   92333             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   92334           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   92335           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   92336             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   92337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   92338             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   92339           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   92340           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   92341             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   92342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   92343             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   92344           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   92345           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   92346             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   92347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   92348             :   // case: toBeCopied == COPY_DATA for binding_label
   92349           0 :      std::string binding_label_copy = p_binding_label; 
   92350           0 :      result->p_binding_label = binding_label_copy; 
   92351             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   92352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   92353             :   // case: toBeCopied == COPY_DATA for declarationScope
   92354           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   92355           0 :      result->p_declarationScope = declarationScope_copy; 
   92356             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   92357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   92358             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   92359           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   92360           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   92361             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   92362             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   92363             :   // case: toBeCopied == COPY_DATA for directiveString
   92364           0 :      std::string directiveString_copy = p_directiveString; 
   92365           0 :      result->p_directiveString = directiveString_copy; 
   92366             : 
   92367             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   92368             : 
   92369             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   92370             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   92371             :   // fixupCopy(result,help);
   92372             : 
   92373             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   92374             :   // the Sg_File_Info objects that are built for the new IR nodes.
   92375           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   92376           0 :      if (locatedNode != NULL)
   92377             :         {
   92378             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   92379           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   92380           0 :           ROSE_ASSERT(start != NULL);
   92381             : #if 0
   92382             :        // Debugging information
   92383             :           if (start->get_parent() == NULL)
   92384             :              {
   92385             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92386             :              }
   92387             : #endif
   92388           0 :           start->set_parent(locatedNode);
   92389           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   92390             : 
   92391           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   92392             : 
   92393             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   92394             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   92395             :        // ROSE_ASSERT(end != NULL);
   92396           0 :           if (end == NULL)
   92397             :              {
   92398           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   92399             :              }
   92400             :             else
   92401             :              {
   92402             : #if 0
   92403             :             // Debugging information
   92404             :                if (end->get_parent() == NULL)
   92405             :                   {
   92406             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92407             :                   }
   92408             : #endif
   92409           0 :                end->set_parent(locatedNode);
   92410           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   92411             :              }
   92412             : 
   92413           0 :           SgExpression* expression = isSgExpression(result);
   92414           0 :           if (isSgExpression(this) != NULL)
   92415             :              {
   92416           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   92417             : 
   92418             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   92419           0 :                if (operatorPosition != NULL)
   92420             :                   {
   92421             : #if 0
   92422             :                  // Debugging information
   92423             :                     if (operatorPosition->get_parent() == NULL)
   92424             :                        {
   92425             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92426             :                        }
   92427             : #endif
   92428           0 :                     operatorPosition->set_parent(expression);
   92429           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   92430             :                   }
   92431             :              }
   92432             :         }
   92433             : 
   92434             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   92435           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   92436           0 :      if (initializedName != NULL)
   92437             :         {
   92438             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   92439           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   92440           0 :           ROSE_ASSERT(start != NULL);
   92441             : #if 0
   92442             :        // Debugging information
   92443             :           if (start->get_parent() == NULL)
   92444             :              {
   92445             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92446             :              }
   92447             : #endif
   92448           0 :           start->set_parent(initializedName);
   92449           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   92450             : 
   92451             : #if 0
   92452             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   92453             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   92454             : 
   92455             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   92456             :        // ROSE_ASSERT(end != NULL);
   92457             :           if (end == NULL)
   92458             :              {
   92459             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   92460             :              }
   92461             :             else
   92462             :              {
   92463             :                if (end->get_parent() == NULL)
   92464             :                   {
   92465             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92466             :                   }
   92467             :                end->set_parent(initializedName);
   92468             :                ROSE_ASSERT(end->get_parent() != NULL);
   92469             :              }
   92470             : #endif
   92471             :         }
   92472             : 
   92473             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   92474           0 :      help.insertCopiedNodePair(this,result);
   92475             : 
   92476             :   // printf ("End of copy SgLineDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   92477             : 
   92478             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   92479             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   92480           0 :      help.decrementDepth();
   92481             : 
   92482             :   // Test if this is the root of the copy!
   92483           0 :      if (help.get_depth() == 0)
   92484             :         {
   92485             :        // This is the original calling node.
   92486             : 
   92487             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   92488             :        // printf ("Calling SgLineDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   92489             : #if ALT_FIXUP_COPY
   92490             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   92491           0 :           fixupCopy_scopes (result,help);
   92492           0 :           fixupCopy_symbols (result,help);
   92493           0 :           fixupCopy_references (result,help);
   92494             : #else
   92495             :           fixupCopy(result,help);
   92496             : #endif
   92497             :        // Allow this to be called recursively, so accumulate the state.
   92498             :        // Also, clear the state in the SgCopyHelp object.
   92499             :        // help.clearState();
   92500             :         }
   92501             : 
   92502           0 :      return result;
   92503             :    }
   92504             : 
   92505             : 
   92506             : /* #line 92507 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   92507             : 
   92508             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   92509             : 
   92510           0 : SgNode* SgWarningDirectiveStatement::copy ( SgCopyHelp& help) const
   92511             :    {
   92512           0 :      SgWarningDirectiveStatement* result = NULL;
   92513             : 
   92514             :   // printf ("Copy SgWarningDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   92515             : 
   92516             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   92517             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   92518             :   // The default value of the depth is 0, so after this call the depth is 1!
   92519           0 :      help.incrementDepth();
   92520             : 
   92521             : #if 0
   92522             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   92523             :   // but it is not generally true that things can only be copied once!
   92524             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   92525             :   // AstAttribute* existingAttribute = const_cast<SgWarningDirectiveStatement*>(this)->attribute["copied"];
   92526             :      bool previouslyCopied = const_cast<SgWarningDirectiveStatement*>(this)->attribute.exists("copied");
   92527             :      if (previouslyCopied == true)
   92528             :         {
   92529             :           this->get_file_info()->display("Called from copy SgWarningDirectiveStatement: debug");
   92530             :         }
   92531             :      ROSE_ASSERT(previouslyCopied == false);
   92532             : 
   92533             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   92534             :      AstAttribute* newAttribute = new AstAttribute();
   92535             :      ROSE_ASSERT(newAttribute != NULL);
   92536             : 
   92537             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   92538             :      const_cast<SgWarningDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   92539             : #endif
   92540             : 
   92541             :   // Copy data members from base classes
   92542             :   // Copy constructor parameter data member: startOfConstruct_copy
   92543             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   92544             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   92545           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   92546           0 :      if ( p_startOfConstruct != NULL ) 
   92547             :         { 
   92548           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   92549             :         } 
   92550             :        else 
   92551             :         { 
   92552             :           startOfConstruct_copy = NULL; 
   92553             :         } 
   92554             :  
   92555             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   92556             : 
   92557             :   // Build an empty copy of this object (will be filled in, but 
   92558             :   // the parent can't be set and must be set by the caller)
   92559           0 :      result = new SgWarningDirectiveStatement(  startOfConstruct_copy );
   92560           0 :      ROSE_ASSERT(result != NULL);
   92561             : 
   92562             :   // Copy data members of "this" class
   92563             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   92564             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   92565             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   92566           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   92567           0 :      if ( p_endOfConstruct != NULL ) 
   92568             :         { 
   92569           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   92570             :         } 
   92571             :        else 
   92572             :         { 
   92573             :           endOfConstruct_copy = NULL; 
   92574             :         } 
   92575             :   /* check for a valid pointer and delete if present */ 
   92576           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   92577             :   /* add assignment to result here */ 
   92578           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   92579             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   92580             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   92581             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   92582           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   92583           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   92584             :         { 
   92585           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   92586             :         } 
   92587             :        else 
   92588             :         { 
   92589             :           attachedPreprocessingInfoPtr_copy = NULL; 
   92590             :         } 
   92591             :   /* check for a valid pointer and delete if present */ 
   92592           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   92593             :   /* add assignment to result here */ 
   92594           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   92595             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   92596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   92597             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   92598           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   92599           0 :      if ( p_attributeMechanism != NULL ) 
   92600             :         { 
   92601           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   92602             :         } 
   92603             :        else 
   92604             :         { 
   92605             :           attributeMechanism_copy = NULL; 
   92606             :         } 
   92607             :   /* check for a valid pointer and delete if present */ 
   92608           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   92609             :   /* add assignment to result here */ 
   92610           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   92611             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   92612             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   92613             :   // case: toBeCopied == COPY_DATA for numeric_label
   92614           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   92615           0 :      result->p_numeric_label = numeric_label_copy; 
   92616             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   92617             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   92618             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   92619           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   92620           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   92621             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   92622             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   92623             :   // case: toBeCopied == COPY_DATA for decl_attributes
   92624           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   92625           0 :      result->p_decl_attributes = decl_attributes_copy; 
   92626             :   // Copy non-constructor parameter data member (access function): linkage_copy
   92627             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   92628             :   // case: toBeCopied == COPY_DATA for linkage
   92629           0 :      std::string linkage_copy = p_linkage; 
   92630           0 :      result->p_linkage = linkage_copy; 
   92631             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   92632             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   92633             :   // case: toBeCopied == COPY_DATA for declarationModifier
   92634           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   92635           0 :      result->p_declarationModifier = declarationModifier_copy; 
   92636             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   92637             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   92638             :   // case: toBeCopied == COPY_DATA for nameOnly
   92639           0 :      bool nameOnly_copy = p_nameOnly; 
   92640           0 :      result->p_nameOnly = nameOnly_copy; 
   92641             :   // Copy non-constructor parameter data member (access function): forward_copy
   92642             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   92643             :   // case: toBeCopied == COPY_DATA for forward
   92644           0 :      bool forward_copy = p_forward; 
   92645           0 :      result->p_forward = forward_copy; 
   92646             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   92647             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   92648             :   // case: toBeCopied == COPY_DATA for externBrace
   92649           0 :      bool externBrace_copy = p_externBrace; 
   92650           0 :      result->p_externBrace = externBrace_copy; 
   92651             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   92652             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   92653             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   92654           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   92655           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   92656             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   92657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   92658             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   92659           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   92660           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   92661             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   92662             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   92663             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   92664           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   92665           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   92666             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   92667             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   92668             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   92669           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   92670           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   92671             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   92672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   92673             :   // case: toBeCopied == COPY_DATA for binding_label
   92674           0 :      std::string binding_label_copy = p_binding_label; 
   92675           0 :      result->p_binding_label = binding_label_copy; 
   92676             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   92677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   92678             :   // case: toBeCopied == COPY_DATA for declarationScope
   92679           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   92680           0 :      result->p_declarationScope = declarationScope_copy; 
   92681             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   92682             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   92683             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   92684           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   92685           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   92686             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   92687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   92688             :   // case: toBeCopied == COPY_DATA for directiveString
   92689           0 :      std::string directiveString_copy = p_directiveString; 
   92690           0 :      result->p_directiveString = directiveString_copy; 
   92691             : 
   92692             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   92693             : 
   92694             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   92695             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   92696             :   // fixupCopy(result,help);
   92697             : 
   92698             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   92699             :   // the Sg_File_Info objects that are built for the new IR nodes.
   92700           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   92701           0 :      if (locatedNode != NULL)
   92702             :         {
   92703             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   92704           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   92705           0 :           ROSE_ASSERT(start != NULL);
   92706             : #if 0
   92707             :        // Debugging information
   92708             :           if (start->get_parent() == NULL)
   92709             :              {
   92710             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92711             :              }
   92712             : #endif
   92713           0 :           start->set_parent(locatedNode);
   92714           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   92715             : 
   92716           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   92717             : 
   92718             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   92719             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   92720             :        // ROSE_ASSERT(end != NULL);
   92721           0 :           if (end == NULL)
   92722             :              {
   92723           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   92724             :              }
   92725             :             else
   92726             :              {
   92727             : #if 0
   92728             :             // Debugging information
   92729             :                if (end->get_parent() == NULL)
   92730             :                   {
   92731             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92732             :                   }
   92733             : #endif
   92734           0 :                end->set_parent(locatedNode);
   92735           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   92736             :              }
   92737             : 
   92738           0 :           SgExpression* expression = isSgExpression(result);
   92739           0 :           if (isSgExpression(this) != NULL)
   92740             :              {
   92741           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   92742             : 
   92743             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   92744           0 :                if (operatorPosition != NULL)
   92745             :                   {
   92746             : #if 0
   92747             :                  // Debugging information
   92748             :                     if (operatorPosition->get_parent() == NULL)
   92749             :                        {
   92750             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92751             :                        }
   92752             : #endif
   92753           0 :                     operatorPosition->set_parent(expression);
   92754           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   92755             :                   }
   92756             :              }
   92757             :         }
   92758             : 
   92759             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   92760           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   92761           0 :      if (initializedName != NULL)
   92762             :         {
   92763             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   92764           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   92765           0 :           ROSE_ASSERT(start != NULL);
   92766             : #if 0
   92767             :        // Debugging information
   92768             :           if (start->get_parent() == NULL)
   92769             :              {
   92770             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92771             :              }
   92772             : #endif
   92773           0 :           start->set_parent(initializedName);
   92774           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   92775             : 
   92776             : #if 0
   92777             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   92778             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   92779             : 
   92780             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   92781             :        // ROSE_ASSERT(end != NULL);
   92782             :           if (end == NULL)
   92783             :              {
   92784             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   92785             :              }
   92786             :             else
   92787             :              {
   92788             :                if (end->get_parent() == NULL)
   92789             :                   {
   92790             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   92791             :                   }
   92792             :                end->set_parent(initializedName);
   92793             :                ROSE_ASSERT(end->get_parent() != NULL);
   92794             :              }
   92795             : #endif
   92796             :         }
   92797             : 
   92798             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   92799           0 :      help.insertCopiedNodePair(this,result);
   92800             : 
   92801             :   // printf ("End of copy SgWarningDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   92802             : 
   92803             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   92804             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   92805           0 :      help.decrementDepth();
   92806             : 
   92807             :   // Test if this is the root of the copy!
   92808           0 :      if (help.get_depth() == 0)
   92809             :         {
   92810             :        // This is the original calling node.
   92811             : 
   92812             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   92813             :        // printf ("Calling SgWarningDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   92814             : #if ALT_FIXUP_COPY
   92815             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   92816           0 :           fixupCopy_scopes (result,help);
   92817           0 :           fixupCopy_symbols (result,help);
   92818           0 :           fixupCopy_references (result,help);
   92819             : #else
   92820             :           fixupCopy(result,help);
   92821             : #endif
   92822             :        // Allow this to be called recursively, so accumulate the state.
   92823             :        // Also, clear the state in the SgCopyHelp object.
   92824             :        // help.clearState();
   92825             :         }
   92826             : 
   92827           0 :      return result;
   92828             :    }
   92829             : 
   92830             : 
   92831             : /* #line 92832 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   92832             : 
   92833             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   92834             : 
   92835           0 : SgNode* SgErrorDirectiveStatement::copy ( SgCopyHelp& help) const
   92836             :    {
   92837           0 :      SgErrorDirectiveStatement* result = NULL;
   92838             : 
   92839             :   // printf ("Copy SgErrorDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   92840             : 
   92841             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   92842             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   92843             :   // The default value of the depth is 0, so after this call the depth is 1!
   92844           0 :      help.incrementDepth();
   92845             : 
   92846             : #if 0
   92847             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   92848             :   // but it is not generally true that things can only be copied once!
   92849             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   92850             :   // AstAttribute* existingAttribute = const_cast<SgErrorDirectiveStatement*>(this)->attribute["copied"];
   92851             :      bool previouslyCopied = const_cast<SgErrorDirectiveStatement*>(this)->attribute.exists("copied");
   92852             :      if (previouslyCopied == true)
   92853             :         {
   92854             :           this->get_file_info()->display("Called from copy SgErrorDirectiveStatement: debug");
   92855             :         }
   92856             :      ROSE_ASSERT(previouslyCopied == false);
   92857             : 
   92858             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   92859             :      AstAttribute* newAttribute = new AstAttribute();
   92860             :      ROSE_ASSERT(newAttribute != NULL);
   92861             : 
   92862             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   92863             :      const_cast<SgErrorDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   92864             : #endif
   92865             : 
   92866             :   // Copy data members from base classes
   92867             :   // Copy constructor parameter data member: startOfConstruct_copy
   92868             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   92869             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   92870           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   92871           0 :      if ( p_startOfConstruct != NULL ) 
   92872             :         { 
   92873           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   92874             :         } 
   92875             :        else 
   92876             :         { 
   92877             :           startOfConstruct_copy = NULL; 
   92878             :         } 
   92879             :  
   92880             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   92881             : 
   92882             :   // Build an empty copy of this object (will be filled in, but 
   92883             :   // the parent can't be set and must be set by the caller)
   92884           0 :      result = new SgErrorDirectiveStatement(  startOfConstruct_copy );
   92885           0 :      ROSE_ASSERT(result != NULL);
   92886             : 
   92887             :   // Copy data members of "this" class
   92888             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   92889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   92890             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   92891           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   92892           0 :      if ( p_endOfConstruct != NULL ) 
   92893             :         { 
   92894           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   92895             :         } 
   92896             :        else 
   92897             :         { 
   92898             :           endOfConstruct_copy = NULL; 
   92899             :         } 
   92900             :   /* check for a valid pointer and delete if present */ 
   92901           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   92902             :   /* add assignment to result here */ 
   92903           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   92904             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   92905             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   92906             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   92907           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   92908           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   92909             :         { 
   92910           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   92911             :         } 
   92912             :        else 
   92913             :         { 
   92914             :           attachedPreprocessingInfoPtr_copy = NULL; 
   92915             :         } 
   92916             :   /* check for a valid pointer and delete if present */ 
   92917           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   92918             :   /* add assignment to result here */ 
   92919           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   92920             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   92921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   92922             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   92923           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   92924           0 :      if ( p_attributeMechanism != NULL ) 
   92925             :         { 
   92926           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   92927             :         } 
   92928             :        else 
   92929             :         { 
   92930             :           attributeMechanism_copy = NULL; 
   92931             :         } 
   92932             :   /* check for a valid pointer and delete if present */ 
   92933           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   92934             :   /* add assignment to result here */ 
   92935           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   92936             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   92937             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   92938             :   // case: toBeCopied == COPY_DATA for numeric_label
   92939           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   92940           0 :      result->p_numeric_label = numeric_label_copy; 
   92941             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   92942             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   92943             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   92944           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   92945           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   92946             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   92947             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   92948             :   // case: toBeCopied == COPY_DATA for decl_attributes
   92949           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   92950           0 :      result->p_decl_attributes = decl_attributes_copy; 
   92951             :   // Copy non-constructor parameter data member (access function): linkage_copy
   92952             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   92953             :   // case: toBeCopied == COPY_DATA for linkage
   92954           0 :      std::string linkage_copy = p_linkage; 
   92955           0 :      result->p_linkage = linkage_copy; 
   92956             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   92957             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   92958             :   // case: toBeCopied == COPY_DATA for declarationModifier
   92959           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   92960           0 :      result->p_declarationModifier = declarationModifier_copy; 
   92961             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   92962             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   92963             :   // case: toBeCopied == COPY_DATA for nameOnly
   92964           0 :      bool nameOnly_copy = p_nameOnly; 
   92965           0 :      result->p_nameOnly = nameOnly_copy; 
   92966             :   // Copy non-constructor parameter data member (access function): forward_copy
   92967             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   92968             :   // case: toBeCopied == COPY_DATA for forward
   92969           0 :      bool forward_copy = p_forward; 
   92970           0 :      result->p_forward = forward_copy; 
   92971             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   92972             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   92973             :   // case: toBeCopied == COPY_DATA for externBrace
   92974           0 :      bool externBrace_copy = p_externBrace; 
   92975           0 :      result->p_externBrace = externBrace_copy; 
   92976             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   92977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   92978             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   92979           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   92980           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   92981             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   92982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   92983             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   92984           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   92985           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   92986             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   92987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   92988             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   92989           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   92990           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   92991             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   92992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   92993             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   92994           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   92995           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   92996             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   92997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   92998             :   // case: toBeCopied == COPY_DATA for binding_label
   92999           0 :      std::string binding_label_copy = p_binding_label; 
   93000           0 :      result->p_binding_label = binding_label_copy; 
   93001             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   93002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   93003             :   // case: toBeCopied == COPY_DATA for declarationScope
   93004           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   93005           0 :      result->p_declarationScope = declarationScope_copy; 
   93006             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   93007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   93008             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   93009           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   93010           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   93011             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   93012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   93013             :   // case: toBeCopied == COPY_DATA for directiveString
   93014           0 :      std::string directiveString_copy = p_directiveString; 
   93015           0 :      result->p_directiveString = directiveString_copy; 
   93016             : 
   93017             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93018             : 
   93019             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   93020             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   93021             :   // fixupCopy(result,help);
   93022             : 
   93023             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   93024             :   // the Sg_File_Info objects that are built for the new IR nodes.
   93025           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   93026           0 :      if (locatedNode != NULL)
   93027             :         {
   93028             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   93029           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   93030           0 :           ROSE_ASSERT(start != NULL);
   93031             : #if 0
   93032             :        // Debugging information
   93033             :           if (start->get_parent() == NULL)
   93034             :              {
   93035             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93036             :              }
   93037             : #endif
   93038           0 :           start->set_parent(locatedNode);
   93039           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   93040             : 
   93041           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   93042             : 
   93043             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   93044             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   93045             :        // ROSE_ASSERT(end != NULL);
   93046           0 :           if (end == NULL)
   93047             :              {
   93048           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   93049             :              }
   93050             :             else
   93051             :              {
   93052             : #if 0
   93053             :             // Debugging information
   93054             :                if (end->get_parent() == NULL)
   93055             :                   {
   93056             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93057             :                   }
   93058             : #endif
   93059           0 :                end->set_parent(locatedNode);
   93060           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   93061             :              }
   93062             : 
   93063           0 :           SgExpression* expression = isSgExpression(result);
   93064           0 :           if (isSgExpression(this) != NULL)
   93065             :              {
   93066           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   93067             : 
   93068             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   93069           0 :                if (operatorPosition != NULL)
   93070             :                   {
   93071             : #if 0
   93072             :                  // Debugging information
   93073             :                     if (operatorPosition->get_parent() == NULL)
   93074             :                        {
   93075             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93076             :                        }
   93077             : #endif
   93078           0 :                     operatorPosition->set_parent(expression);
   93079           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   93080             :                   }
   93081             :              }
   93082             :         }
   93083             : 
   93084             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   93085           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   93086           0 :      if (initializedName != NULL)
   93087             :         {
   93088             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   93089           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   93090           0 :           ROSE_ASSERT(start != NULL);
   93091             : #if 0
   93092             :        // Debugging information
   93093             :           if (start->get_parent() == NULL)
   93094             :              {
   93095             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93096             :              }
   93097             : #endif
   93098           0 :           start->set_parent(initializedName);
   93099           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   93100             : 
   93101             : #if 0
   93102             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   93103             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   93104             : 
   93105             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   93106             :        // ROSE_ASSERT(end != NULL);
   93107             :           if (end == NULL)
   93108             :              {
   93109             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   93110             :              }
   93111             :             else
   93112             :              {
   93113             :                if (end->get_parent() == NULL)
   93114             :                   {
   93115             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93116             :                   }
   93117             :                end->set_parent(initializedName);
   93118             :                ROSE_ASSERT(end->get_parent() != NULL);
   93119             :              }
   93120             : #endif
   93121             :         }
   93122             : 
   93123             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   93124           0 :      help.insertCopiedNodePair(this,result);
   93125             : 
   93126             :   // printf ("End of copy SgErrorDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   93127             : 
   93128             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   93129             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   93130           0 :      help.decrementDepth();
   93131             : 
   93132             :   // Test if this is the root of the copy!
   93133           0 :      if (help.get_depth() == 0)
   93134             :         {
   93135             :        // This is the original calling node.
   93136             : 
   93137             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   93138             :        // printf ("Calling SgErrorDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   93139             : #if ALT_FIXUP_COPY
   93140             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   93141           0 :           fixupCopy_scopes (result,help);
   93142           0 :           fixupCopy_symbols (result,help);
   93143           0 :           fixupCopy_references (result,help);
   93144             : #else
   93145             :           fixupCopy(result,help);
   93146             : #endif
   93147             :        // Allow this to be called recursively, so accumulate the state.
   93148             :        // Also, clear the state in the SgCopyHelp object.
   93149             :        // help.clearState();
   93150             :         }
   93151             : 
   93152           0 :      return result;
   93153             :    }
   93154             : 
   93155             : 
   93156             : /* #line 93157 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   93157             : 
   93158             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93159             : 
   93160           0 : SgNode* SgEmptyDirectiveStatement::copy ( SgCopyHelp& help) const
   93161             :    {
   93162           0 :      SgEmptyDirectiveStatement* result = NULL;
   93163             : 
   93164             :   // printf ("Copy SgEmptyDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   93165             : 
   93166             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   93167             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   93168             :   // The default value of the depth is 0, so after this call the depth is 1!
   93169           0 :      help.incrementDepth();
   93170             : 
   93171             : #if 0
   93172             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   93173             :   // but it is not generally true that things can only be copied once!
   93174             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   93175             :   // AstAttribute* existingAttribute = const_cast<SgEmptyDirectiveStatement*>(this)->attribute["copied"];
   93176             :      bool previouslyCopied = const_cast<SgEmptyDirectiveStatement*>(this)->attribute.exists("copied");
   93177             :      if (previouslyCopied == true)
   93178             :         {
   93179             :           this->get_file_info()->display("Called from copy SgEmptyDirectiveStatement: debug");
   93180             :         }
   93181             :      ROSE_ASSERT(previouslyCopied == false);
   93182             : 
   93183             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   93184             :      AstAttribute* newAttribute = new AstAttribute();
   93185             :      ROSE_ASSERT(newAttribute != NULL);
   93186             : 
   93187             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   93188             :      const_cast<SgEmptyDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   93189             : #endif
   93190             : 
   93191             :   // Copy data members from base classes
   93192             :   // Copy constructor parameter data member: startOfConstruct_copy
   93193             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   93194             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   93195           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   93196           0 :      if ( p_startOfConstruct != NULL ) 
   93197             :         { 
   93198           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   93199             :         } 
   93200             :        else 
   93201             :         { 
   93202             :           startOfConstruct_copy = NULL; 
   93203             :         } 
   93204             :  
   93205             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93206             : 
   93207             :   // Build an empty copy of this object (will be filled in, but 
   93208             :   // the parent can't be set and must be set by the caller)
   93209           0 :      result = new SgEmptyDirectiveStatement(  startOfConstruct_copy );
   93210           0 :      ROSE_ASSERT(result != NULL);
   93211             : 
   93212             :   // Copy data members of "this" class
   93213             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   93214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   93215             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   93216           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   93217           0 :      if ( p_endOfConstruct != NULL ) 
   93218             :         { 
   93219           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   93220             :         } 
   93221             :        else 
   93222             :         { 
   93223             :           endOfConstruct_copy = NULL; 
   93224             :         } 
   93225             :   /* check for a valid pointer and delete if present */ 
   93226           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   93227             :   /* add assignment to result here */ 
   93228           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   93229             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   93230             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   93231             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   93232           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   93233           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   93234             :         { 
   93235           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   93236             :         } 
   93237             :        else 
   93238             :         { 
   93239             :           attachedPreprocessingInfoPtr_copy = NULL; 
   93240             :         } 
   93241             :   /* check for a valid pointer and delete if present */ 
   93242           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   93243             :   /* add assignment to result here */ 
   93244           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   93245             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   93246             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   93247             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   93248           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   93249           0 :      if ( p_attributeMechanism != NULL ) 
   93250             :         { 
   93251           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   93252             :         } 
   93253             :        else 
   93254             :         { 
   93255             :           attributeMechanism_copy = NULL; 
   93256             :         } 
   93257             :   /* check for a valid pointer and delete if present */ 
   93258           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   93259             :   /* add assignment to result here */ 
   93260           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   93261             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   93262             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   93263             :   // case: toBeCopied == COPY_DATA for numeric_label
   93264           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   93265           0 :      result->p_numeric_label = numeric_label_copy; 
   93266             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   93267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   93268             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   93269           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   93270           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   93271             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   93272             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   93273             :   // case: toBeCopied == COPY_DATA for decl_attributes
   93274           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   93275           0 :      result->p_decl_attributes = decl_attributes_copy; 
   93276             :   // Copy non-constructor parameter data member (access function): linkage_copy
   93277             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   93278             :   // case: toBeCopied == COPY_DATA for linkage
   93279           0 :      std::string linkage_copy = p_linkage; 
   93280           0 :      result->p_linkage = linkage_copy; 
   93281             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   93282             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   93283             :   // case: toBeCopied == COPY_DATA for declarationModifier
   93284           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   93285           0 :      result->p_declarationModifier = declarationModifier_copy; 
   93286             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   93287             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   93288             :   // case: toBeCopied == COPY_DATA for nameOnly
   93289           0 :      bool nameOnly_copy = p_nameOnly; 
   93290           0 :      result->p_nameOnly = nameOnly_copy; 
   93291             :   // Copy non-constructor parameter data member (access function): forward_copy
   93292             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   93293             :   // case: toBeCopied == COPY_DATA for forward
   93294           0 :      bool forward_copy = p_forward; 
   93295           0 :      result->p_forward = forward_copy; 
   93296             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   93297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   93298             :   // case: toBeCopied == COPY_DATA for externBrace
   93299           0 :      bool externBrace_copy = p_externBrace; 
   93300           0 :      result->p_externBrace = externBrace_copy; 
   93301             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   93302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   93303             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   93304           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   93305           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   93306             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   93307             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   93308             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   93309           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   93310           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   93311             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   93312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   93313             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   93314           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   93315           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   93316             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   93317             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   93318             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   93319           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   93320           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   93321             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   93322             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   93323             :   // case: toBeCopied == COPY_DATA for binding_label
   93324           0 :      std::string binding_label_copy = p_binding_label; 
   93325           0 :      result->p_binding_label = binding_label_copy; 
   93326             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   93327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   93328             :   // case: toBeCopied == COPY_DATA for declarationScope
   93329           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   93330           0 :      result->p_declarationScope = declarationScope_copy; 
   93331             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   93332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   93333             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   93334           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   93335           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   93336             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   93337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   93338             :   // case: toBeCopied == COPY_DATA for directiveString
   93339           0 :      std::string directiveString_copy = p_directiveString; 
   93340           0 :      result->p_directiveString = directiveString_copy; 
   93341             : 
   93342             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93343             : 
   93344             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   93345             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   93346             :   // fixupCopy(result,help);
   93347             : 
   93348             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   93349             :   // the Sg_File_Info objects that are built for the new IR nodes.
   93350           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   93351           0 :      if (locatedNode != NULL)
   93352             :         {
   93353             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   93354           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   93355           0 :           ROSE_ASSERT(start != NULL);
   93356             : #if 0
   93357             :        // Debugging information
   93358             :           if (start->get_parent() == NULL)
   93359             :              {
   93360             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93361             :              }
   93362             : #endif
   93363           0 :           start->set_parent(locatedNode);
   93364           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   93365             : 
   93366           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   93367             : 
   93368             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   93369             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   93370             :        // ROSE_ASSERT(end != NULL);
   93371           0 :           if (end == NULL)
   93372             :              {
   93373           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   93374             :              }
   93375             :             else
   93376             :              {
   93377             : #if 0
   93378             :             // Debugging information
   93379             :                if (end->get_parent() == NULL)
   93380             :                   {
   93381             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93382             :                   }
   93383             : #endif
   93384           0 :                end->set_parent(locatedNode);
   93385           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   93386             :              }
   93387             : 
   93388           0 :           SgExpression* expression = isSgExpression(result);
   93389           0 :           if (isSgExpression(this) != NULL)
   93390             :              {
   93391           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   93392             : 
   93393             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   93394           0 :                if (operatorPosition != NULL)
   93395             :                   {
   93396             : #if 0
   93397             :                  // Debugging information
   93398             :                     if (operatorPosition->get_parent() == NULL)
   93399             :                        {
   93400             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93401             :                        }
   93402             : #endif
   93403           0 :                     operatorPosition->set_parent(expression);
   93404           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   93405             :                   }
   93406             :              }
   93407             :         }
   93408             : 
   93409             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   93410           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   93411           0 :      if (initializedName != NULL)
   93412             :         {
   93413             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   93414           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   93415           0 :           ROSE_ASSERT(start != NULL);
   93416             : #if 0
   93417             :        // Debugging information
   93418             :           if (start->get_parent() == NULL)
   93419             :              {
   93420             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93421             :              }
   93422             : #endif
   93423           0 :           start->set_parent(initializedName);
   93424           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   93425             : 
   93426             : #if 0
   93427             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   93428             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   93429             : 
   93430             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   93431             :        // ROSE_ASSERT(end != NULL);
   93432             :           if (end == NULL)
   93433             :              {
   93434             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   93435             :              }
   93436             :             else
   93437             :              {
   93438             :                if (end->get_parent() == NULL)
   93439             :                   {
   93440             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93441             :                   }
   93442             :                end->set_parent(initializedName);
   93443             :                ROSE_ASSERT(end->get_parent() != NULL);
   93444             :              }
   93445             : #endif
   93446             :         }
   93447             : 
   93448             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   93449           0 :      help.insertCopiedNodePair(this,result);
   93450             : 
   93451             :   // printf ("End of copy SgEmptyDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   93452             : 
   93453             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   93454             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   93455           0 :      help.decrementDepth();
   93456             : 
   93457             :   // Test if this is the root of the copy!
   93458           0 :      if (help.get_depth() == 0)
   93459             :         {
   93460             :        // This is the original calling node.
   93461             : 
   93462             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   93463             :        // printf ("Calling SgEmptyDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   93464             : #if ALT_FIXUP_COPY
   93465             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   93466           0 :           fixupCopy_scopes (result,help);
   93467           0 :           fixupCopy_symbols (result,help);
   93468           0 :           fixupCopy_references (result,help);
   93469             : #else
   93470             :           fixupCopy(result,help);
   93471             : #endif
   93472             :        // Allow this to be called recursively, so accumulate the state.
   93473             :        // Also, clear the state in the SgCopyHelp object.
   93474             :        // help.clearState();
   93475             :         }
   93476             : 
   93477           0 :      return result;
   93478             :    }
   93479             : 
   93480             : 
   93481             : /* #line 93482 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   93482             : 
   93483             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93484             : 
   93485           0 : SgNode* SgIncludeNextDirectiveStatement::copy ( SgCopyHelp& help) const
   93486             :    {
   93487           0 :      SgIncludeNextDirectiveStatement* result = NULL;
   93488             : 
   93489             :   // printf ("Copy SgIncludeNextDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   93490             : 
   93491             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   93492             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   93493             :   // The default value of the depth is 0, so after this call the depth is 1!
   93494           0 :      help.incrementDepth();
   93495             : 
   93496             : #if 0
   93497             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   93498             :   // but it is not generally true that things can only be copied once!
   93499             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   93500             :   // AstAttribute* existingAttribute = const_cast<SgIncludeNextDirectiveStatement*>(this)->attribute["copied"];
   93501             :      bool previouslyCopied = const_cast<SgIncludeNextDirectiveStatement*>(this)->attribute.exists("copied");
   93502             :      if (previouslyCopied == true)
   93503             :         {
   93504             :           this->get_file_info()->display("Called from copy SgIncludeNextDirectiveStatement: debug");
   93505             :         }
   93506             :      ROSE_ASSERT(previouslyCopied == false);
   93507             : 
   93508             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   93509             :      AstAttribute* newAttribute = new AstAttribute();
   93510             :      ROSE_ASSERT(newAttribute != NULL);
   93511             : 
   93512             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   93513             :      const_cast<SgIncludeNextDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   93514             : #endif
   93515             : 
   93516             :   // Copy data members from base classes
   93517             :   // Copy constructor parameter data member: startOfConstruct_copy
   93518             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   93519             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   93520           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   93521           0 :      if ( p_startOfConstruct != NULL ) 
   93522             :         { 
   93523           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   93524             :         } 
   93525             :        else 
   93526             :         { 
   93527             :           startOfConstruct_copy = NULL; 
   93528             :         } 
   93529             :  
   93530             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93531             : 
   93532             :   // Build an empty copy of this object (will be filled in, but 
   93533             :   // the parent can't be set and must be set by the caller)
   93534           0 :      result = new SgIncludeNextDirectiveStatement(  startOfConstruct_copy );
   93535           0 :      ROSE_ASSERT(result != NULL);
   93536             : 
   93537             :   // Copy data members of "this" class
   93538             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   93539             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   93540             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   93541           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   93542           0 :      if ( p_endOfConstruct != NULL ) 
   93543             :         { 
   93544           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   93545             :         } 
   93546             :        else 
   93547             :         { 
   93548             :           endOfConstruct_copy = NULL; 
   93549             :         } 
   93550             :   /* check for a valid pointer and delete if present */ 
   93551           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   93552             :   /* add assignment to result here */ 
   93553           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   93554             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   93555             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   93556             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   93557           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   93558           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   93559             :         { 
   93560           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   93561             :         } 
   93562             :        else 
   93563             :         { 
   93564             :           attachedPreprocessingInfoPtr_copy = NULL; 
   93565             :         } 
   93566             :   /* check for a valid pointer and delete if present */ 
   93567           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   93568             :   /* add assignment to result here */ 
   93569           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   93570             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   93571             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   93572             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   93573           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   93574           0 :      if ( p_attributeMechanism != NULL ) 
   93575             :         { 
   93576           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   93577             :         } 
   93578             :        else 
   93579             :         { 
   93580             :           attributeMechanism_copy = NULL; 
   93581             :         } 
   93582             :   /* check for a valid pointer and delete if present */ 
   93583           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   93584             :   /* add assignment to result here */ 
   93585           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   93586             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   93587             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   93588             :   // case: toBeCopied == COPY_DATA for numeric_label
   93589           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   93590           0 :      result->p_numeric_label = numeric_label_copy; 
   93591             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   93592             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   93593             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   93594           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   93595           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   93596             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   93597             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   93598             :   // case: toBeCopied == COPY_DATA for decl_attributes
   93599           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   93600           0 :      result->p_decl_attributes = decl_attributes_copy; 
   93601             :   // Copy non-constructor parameter data member (access function): linkage_copy
   93602             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   93603             :   // case: toBeCopied == COPY_DATA for linkage
   93604           0 :      std::string linkage_copy = p_linkage; 
   93605           0 :      result->p_linkage = linkage_copy; 
   93606             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   93607             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   93608             :   // case: toBeCopied == COPY_DATA for declarationModifier
   93609           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   93610           0 :      result->p_declarationModifier = declarationModifier_copy; 
   93611             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   93612             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   93613             :   // case: toBeCopied == COPY_DATA for nameOnly
   93614           0 :      bool nameOnly_copy = p_nameOnly; 
   93615           0 :      result->p_nameOnly = nameOnly_copy; 
   93616             :   // Copy non-constructor parameter data member (access function): forward_copy
   93617             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   93618             :   // case: toBeCopied == COPY_DATA for forward
   93619           0 :      bool forward_copy = p_forward; 
   93620           0 :      result->p_forward = forward_copy; 
   93621             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   93622             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   93623             :   // case: toBeCopied == COPY_DATA for externBrace
   93624           0 :      bool externBrace_copy = p_externBrace; 
   93625           0 :      result->p_externBrace = externBrace_copy; 
   93626             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   93627             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   93628             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   93629           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   93630           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   93631             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   93632             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   93633             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   93634           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   93635           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   93636             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   93637             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   93638             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   93639           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   93640           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   93641             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   93642             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   93643             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   93644           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   93645           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   93646             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   93647             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   93648             :   // case: toBeCopied == COPY_DATA for binding_label
   93649           0 :      std::string binding_label_copy = p_binding_label; 
   93650           0 :      result->p_binding_label = binding_label_copy; 
   93651             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   93652             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   93653             :   // case: toBeCopied == COPY_DATA for declarationScope
   93654           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   93655           0 :      result->p_declarationScope = declarationScope_copy; 
   93656             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   93657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   93658             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   93659           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   93660           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   93661             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   93662             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   93663             :   // case: toBeCopied == COPY_DATA for directiveString
   93664           0 :      std::string directiveString_copy = p_directiveString; 
   93665           0 :      result->p_directiveString = directiveString_copy; 
   93666             : 
   93667             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93668             : 
   93669             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   93670             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   93671             :   // fixupCopy(result,help);
   93672             : 
   93673             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   93674             :   // the Sg_File_Info objects that are built for the new IR nodes.
   93675           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   93676           0 :      if (locatedNode != NULL)
   93677             :         {
   93678             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   93679           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   93680           0 :           ROSE_ASSERT(start != NULL);
   93681             : #if 0
   93682             :        // Debugging information
   93683             :           if (start->get_parent() == NULL)
   93684             :              {
   93685             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93686             :              }
   93687             : #endif
   93688           0 :           start->set_parent(locatedNode);
   93689           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   93690             : 
   93691           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   93692             : 
   93693             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   93694             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   93695             :        // ROSE_ASSERT(end != NULL);
   93696           0 :           if (end == NULL)
   93697             :              {
   93698           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   93699             :              }
   93700             :             else
   93701             :              {
   93702             : #if 0
   93703             :             // Debugging information
   93704             :                if (end->get_parent() == NULL)
   93705             :                   {
   93706             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93707             :                   }
   93708             : #endif
   93709           0 :                end->set_parent(locatedNode);
   93710           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   93711             :              }
   93712             : 
   93713           0 :           SgExpression* expression = isSgExpression(result);
   93714           0 :           if (isSgExpression(this) != NULL)
   93715             :              {
   93716           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   93717             : 
   93718             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   93719           0 :                if (operatorPosition != NULL)
   93720             :                   {
   93721             : #if 0
   93722             :                  // Debugging information
   93723             :                     if (operatorPosition->get_parent() == NULL)
   93724             :                        {
   93725             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93726             :                        }
   93727             : #endif
   93728           0 :                     operatorPosition->set_parent(expression);
   93729           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   93730             :                   }
   93731             :              }
   93732             :         }
   93733             : 
   93734             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   93735           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   93736           0 :      if (initializedName != NULL)
   93737             :         {
   93738             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   93739           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   93740           0 :           ROSE_ASSERT(start != NULL);
   93741             : #if 0
   93742             :        // Debugging information
   93743             :           if (start->get_parent() == NULL)
   93744             :              {
   93745             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93746             :              }
   93747             : #endif
   93748           0 :           start->set_parent(initializedName);
   93749           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   93750             : 
   93751             : #if 0
   93752             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   93753             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   93754             : 
   93755             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   93756             :        // ROSE_ASSERT(end != NULL);
   93757             :           if (end == NULL)
   93758             :              {
   93759             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   93760             :              }
   93761             :             else
   93762             :              {
   93763             :                if (end->get_parent() == NULL)
   93764             :                   {
   93765             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   93766             :                   }
   93767             :                end->set_parent(initializedName);
   93768             :                ROSE_ASSERT(end->get_parent() != NULL);
   93769             :              }
   93770             : #endif
   93771             :         }
   93772             : 
   93773             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   93774           0 :      help.insertCopiedNodePair(this,result);
   93775             : 
   93776             :   // printf ("End of copy SgIncludeNextDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   93777             : 
   93778             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   93779             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   93780           0 :      help.decrementDepth();
   93781             : 
   93782             :   // Test if this is the root of the copy!
   93783           0 :      if (help.get_depth() == 0)
   93784             :         {
   93785             :        // This is the original calling node.
   93786             : 
   93787             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   93788             :        // printf ("Calling SgIncludeNextDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   93789             : #if ALT_FIXUP_COPY
   93790             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   93791           0 :           fixupCopy_scopes (result,help);
   93792           0 :           fixupCopy_symbols (result,help);
   93793           0 :           fixupCopy_references (result,help);
   93794             : #else
   93795             :           fixupCopy(result,help);
   93796             : #endif
   93797             :        // Allow this to be called recursively, so accumulate the state.
   93798             :        // Also, clear the state in the SgCopyHelp object.
   93799             :        // help.clearState();
   93800             :         }
   93801             : 
   93802           0 :      return result;
   93803             :    }
   93804             : 
   93805             : 
   93806             : /* #line 93807 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   93807             : 
   93808             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93809             : 
   93810           0 : SgNode* SgIdentDirectiveStatement::copy ( SgCopyHelp& help) const
   93811             :    {
   93812           0 :      SgIdentDirectiveStatement* result = NULL;
   93813             : 
   93814             :   // printf ("Copy SgIdentDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   93815             : 
   93816             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   93817             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   93818             :   // The default value of the depth is 0, so after this call the depth is 1!
   93819           0 :      help.incrementDepth();
   93820             : 
   93821             : #if 0
   93822             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   93823             :   // but it is not generally true that things can only be copied once!
   93824             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   93825             :   // AstAttribute* existingAttribute = const_cast<SgIdentDirectiveStatement*>(this)->attribute["copied"];
   93826             :      bool previouslyCopied = const_cast<SgIdentDirectiveStatement*>(this)->attribute.exists("copied");
   93827             :      if (previouslyCopied == true)
   93828             :         {
   93829             :           this->get_file_info()->display("Called from copy SgIdentDirectiveStatement: debug");
   93830             :         }
   93831             :      ROSE_ASSERT(previouslyCopied == false);
   93832             : 
   93833             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   93834             :      AstAttribute* newAttribute = new AstAttribute();
   93835             :      ROSE_ASSERT(newAttribute != NULL);
   93836             : 
   93837             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   93838             :      const_cast<SgIdentDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   93839             : #endif
   93840             : 
   93841             :   // Copy data members from base classes
   93842             :   // Copy constructor parameter data member: startOfConstruct_copy
   93843             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   93844             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   93845           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   93846           0 :      if ( p_startOfConstruct != NULL ) 
   93847             :         { 
   93848           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   93849             :         } 
   93850             :        else 
   93851             :         { 
   93852             :           startOfConstruct_copy = NULL; 
   93853             :         } 
   93854             :  
   93855             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93856             : 
   93857             :   // Build an empty copy of this object (will be filled in, but 
   93858             :   // the parent can't be set and must be set by the caller)
   93859           0 :      result = new SgIdentDirectiveStatement(  startOfConstruct_copy );
   93860           0 :      ROSE_ASSERT(result != NULL);
   93861             : 
   93862             :   // Copy data members of "this" class
   93863             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   93864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   93865             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   93866           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   93867           0 :      if ( p_endOfConstruct != NULL ) 
   93868             :         { 
   93869           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   93870             :         } 
   93871             :        else 
   93872             :         { 
   93873             :           endOfConstruct_copy = NULL; 
   93874             :         } 
   93875             :   /* check for a valid pointer and delete if present */ 
   93876           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   93877             :   /* add assignment to result here */ 
   93878           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   93879             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   93880             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   93881             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   93882           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   93883           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   93884             :         { 
   93885           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   93886             :         } 
   93887             :        else 
   93888             :         { 
   93889             :           attachedPreprocessingInfoPtr_copy = NULL; 
   93890             :         } 
   93891             :   /* check for a valid pointer and delete if present */ 
   93892           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   93893             :   /* add assignment to result here */ 
   93894           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   93895             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   93896             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   93897             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   93898           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   93899           0 :      if ( p_attributeMechanism != NULL ) 
   93900             :         { 
   93901           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   93902             :         } 
   93903             :        else 
   93904             :         { 
   93905             :           attributeMechanism_copy = NULL; 
   93906             :         } 
   93907             :   /* check for a valid pointer and delete if present */ 
   93908           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   93909             :   /* add assignment to result here */ 
   93910           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   93911             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   93912             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   93913             :   // case: toBeCopied == COPY_DATA for numeric_label
   93914           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   93915           0 :      result->p_numeric_label = numeric_label_copy; 
   93916             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   93917             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   93918             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   93919           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   93920           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   93921             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   93922             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   93923             :   // case: toBeCopied == COPY_DATA for decl_attributes
   93924           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   93925           0 :      result->p_decl_attributes = decl_attributes_copy; 
   93926             :   // Copy non-constructor parameter data member (access function): linkage_copy
   93927             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   93928             :   // case: toBeCopied == COPY_DATA for linkage
   93929           0 :      std::string linkage_copy = p_linkage; 
   93930           0 :      result->p_linkage = linkage_copy; 
   93931             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   93932             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   93933             :   // case: toBeCopied == COPY_DATA for declarationModifier
   93934           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   93935           0 :      result->p_declarationModifier = declarationModifier_copy; 
   93936             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   93937             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   93938             :   // case: toBeCopied == COPY_DATA for nameOnly
   93939           0 :      bool nameOnly_copy = p_nameOnly; 
   93940           0 :      result->p_nameOnly = nameOnly_copy; 
   93941             :   // Copy non-constructor parameter data member (access function): forward_copy
   93942             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   93943             :   // case: toBeCopied == COPY_DATA for forward
   93944           0 :      bool forward_copy = p_forward; 
   93945           0 :      result->p_forward = forward_copy; 
   93946             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   93947             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   93948             :   // case: toBeCopied == COPY_DATA for externBrace
   93949           0 :      bool externBrace_copy = p_externBrace; 
   93950           0 :      result->p_externBrace = externBrace_copy; 
   93951             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   93952             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   93953             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   93954           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   93955           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   93956             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   93957             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   93958             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   93959           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   93960           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   93961             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   93962             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   93963             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   93964           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   93965           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   93966             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   93967             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   93968             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   93969           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   93970           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   93971             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   93972             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   93973             :   // case: toBeCopied == COPY_DATA for binding_label
   93974           0 :      std::string binding_label_copy = p_binding_label; 
   93975           0 :      result->p_binding_label = binding_label_copy; 
   93976             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   93977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   93978             :   // case: toBeCopied == COPY_DATA for declarationScope
   93979           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   93980           0 :      result->p_declarationScope = declarationScope_copy; 
   93981             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   93982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   93983             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   93984           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   93985           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   93986             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   93987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   93988             :   // case: toBeCopied == COPY_DATA for directiveString
   93989           0 :      std::string directiveString_copy = p_directiveString; 
   93990           0 :      result->p_directiveString = directiveString_copy; 
   93991             : 
   93992             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   93993             : 
   93994             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   93995             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   93996             :   // fixupCopy(result,help);
   93997             : 
   93998             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   93999             :   // the Sg_File_Info objects that are built for the new IR nodes.
   94000           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   94001           0 :      if (locatedNode != NULL)
   94002             :         {
   94003             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   94004           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   94005           0 :           ROSE_ASSERT(start != NULL);
   94006             : #if 0
   94007             :        // Debugging information
   94008             :           if (start->get_parent() == NULL)
   94009             :              {
   94010             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94011             :              }
   94012             : #endif
   94013           0 :           start->set_parent(locatedNode);
   94014           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   94015             : 
   94016           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   94017             : 
   94018             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   94019             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   94020             :        // ROSE_ASSERT(end != NULL);
   94021           0 :           if (end == NULL)
   94022             :              {
   94023           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   94024             :              }
   94025             :             else
   94026             :              {
   94027             : #if 0
   94028             :             // Debugging information
   94029             :                if (end->get_parent() == NULL)
   94030             :                   {
   94031             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94032             :                   }
   94033             : #endif
   94034           0 :                end->set_parent(locatedNode);
   94035           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   94036             :              }
   94037             : 
   94038           0 :           SgExpression* expression = isSgExpression(result);
   94039           0 :           if (isSgExpression(this) != NULL)
   94040             :              {
   94041           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   94042             : 
   94043             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   94044           0 :                if (operatorPosition != NULL)
   94045             :                   {
   94046             : #if 0
   94047             :                  // Debugging information
   94048             :                     if (operatorPosition->get_parent() == NULL)
   94049             :                        {
   94050             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94051             :                        }
   94052             : #endif
   94053           0 :                     operatorPosition->set_parent(expression);
   94054           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   94055             :                   }
   94056             :              }
   94057             :         }
   94058             : 
   94059             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   94060           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   94061           0 :      if (initializedName != NULL)
   94062             :         {
   94063             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   94064           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   94065           0 :           ROSE_ASSERT(start != NULL);
   94066             : #if 0
   94067             :        // Debugging information
   94068             :           if (start->get_parent() == NULL)
   94069             :              {
   94070             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94071             :              }
   94072             : #endif
   94073           0 :           start->set_parent(initializedName);
   94074           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   94075             : 
   94076             : #if 0
   94077             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   94078             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   94079             : 
   94080             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   94081             :        // ROSE_ASSERT(end != NULL);
   94082             :           if (end == NULL)
   94083             :              {
   94084             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   94085             :              }
   94086             :             else
   94087             :              {
   94088             :                if (end->get_parent() == NULL)
   94089             :                   {
   94090             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94091             :                   }
   94092             :                end->set_parent(initializedName);
   94093             :                ROSE_ASSERT(end->get_parent() != NULL);
   94094             :              }
   94095             : #endif
   94096             :         }
   94097             : 
   94098             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   94099           0 :      help.insertCopiedNodePair(this,result);
   94100             : 
   94101             :   // printf ("End of copy SgIdentDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   94102             : 
   94103             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   94104             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   94105           0 :      help.decrementDepth();
   94106             : 
   94107             :   // Test if this is the root of the copy!
   94108           0 :      if (help.get_depth() == 0)
   94109             :         {
   94110             :        // This is the original calling node.
   94111             : 
   94112             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   94113             :        // printf ("Calling SgIdentDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   94114             : #if ALT_FIXUP_COPY
   94115             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   94116           0 :           fixupCopy_scopes (result,help);
   94117           0 :           fixupCopy_symbols (result,help);
   94118           0 :           fixupCopy_references (result,help);
   94119             : #else
   94120             :           fixupCopy(result,help);
   94121             : #endif
   94122             :        // Allow this to be called recursively, so accumulate the state.
   94123             :        // Also, clear the state in the SgCopyHelp object.
   94124             :        // help.clearState();
   94125             :         }
   94126             : 
   94127           0 :      return result;
   94128             :    }
   94129             : 
   94130             : 
   94131             : /* #line 94132 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   94132             : 
   94133             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   94134             : 
   94135           0 : SgNode* SgLinemarkerDirectiveStatement::copy ( SgCopyHelp& help) const
   94136             :    {
   94137           0 :      SgLinemarkerDirectiveStatement* result = NULL;
   94138             : 
   94139             :   // printf ("Copy SgLinemarkerDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   94140             : 
   94141             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   94142             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   94143             :   // The default value of the depth is 0, so after this call the depth is 1!
   94144           0 :      help.incrementDepth();
   94145             : 
   94146             : #if 0
   94147             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   94148             :   // but it is not generally true that things can only be copied once!
   94149             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   94150             :   // AstAttribute* existingAttribute = const_cast<SgLinemarkerDirectiveStatement*>(this)->attribute["copied"];
   94151             :      bool previouslyCopied = const_cast<SgLinemarkerDirectiveStatement*>(this)->attribute.exists("copied");
   94152             :      if (previouslyCopied == true)
   94153             :         {
   94154             :           this->get_file_info()->display("Called from copy SgLinemarkerDirectiveStatement: debug");
   94155             :         }
   94156             :      ROSE_ASSERT(previouslyCopied == false);
   94157             : 
   94158             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   94159             :      AstAttribute* newAttribute = new AstAttribute();
   94160             :      ROSE_ASSERT(newAttribute != NULL);
   94161             : 
   94162             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   94163             :      const_cast<SgLinemarkerDirectiveStatement*>(this)->attribute.add("copied",newAttribute);
   94164             : #endif
   94165             : 
   94166             :   // Copy data members from base classes
   94167             :   // Copy constructor parameter data member: startOfConstruct_copy
   94168             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   94169             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   94170           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   94171           0 :      if ( p_startOfConstruct != NULL ) 
   94172             :         { 
   94173           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   94174             :         } 
   94175             :        else 
   94176             :         { 
   94177             :           startOfConstruct_copy = NULL; 
   94178             :         } 
   94179             :  
   94180             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   94181             : 
   94182             :   // Build an empty copy of this object (will be filled in, but 
   94183             :   // the parent can't be set and must be set by the caller)
   94184           0 :      result = new SgLinemarkerDirectiveStatement(  startOfConstruct_copy );
   94185           0 :      ROSE_ASSERT(result != NULL);
   94186             : 
   94187             :   // Copy data members of "this" class
   94188             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   94189             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   94190             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   94191           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   94192           0 :      if ( p_endOfConstruct != NULL ) 
   94193             :         { 
   94194           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   94195             :         } 
   94196             :        else 
   94197             :         { 
   94198             :           endOfConstruct_copy = NULL; 
   94199             :         } 
   94200             :   /* check for a valid pointer and delete if present */ 
   94201           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   94202             :   /* add assignment to result here */ 
   94203           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   94204             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   94205             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   94206             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   94207           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   94208           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   94209             :         { 
   94210           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   94211             :         } 
   94212             :        else 
   94213             :         { 
   94214             :           attachedPreprocessingInfoPtr_copy = NULL; 
   94215             :         } 
   94216             :   /* check for a valid pointer and delete if present */ 
   94217           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   94218             :   /* add assignment to result here */ 
   94219           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   94220             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   94221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   94222             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   94223           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   94224           0 :      if ( p_attributeMechanism != NULL ) 
   94225             :         { 
   94226           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   94227             :         } 
   94228             :        else 
   94229             :         { 
   94230             :           attributeMechanism_copy = NULL; 
   94231             :         } 
   94232             :   /* check for a valid pointer and delete if present */ 
   94233           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   94234             :   /* add assignment to result here */ 
   94235           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   94236             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   94237             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   94238             :   // case: toBeCopied == COPY_DATA for numeric_label
   94239           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   94240           0 :      result->p_numeric_label = numeric_label_copy; 
   94241             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   94242             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   94243             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   94244           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   94245           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   94246             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   94247             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   94248             :   // case: toBeCopied == COPY_DATA for decl_attributes
   94249           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   94250           0 :      result->p_decl_attributes = decl_attributes_copy; 
   94251             :   // Copy non-constructor parameter data member (access function): linkage_copy
   94252             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   94253             :   // case: toBeCopied == COPY_DATA for linkage
   94254           0 :      std::string linkage_copy = p_linkage; 
   94255           0 :      result->p_linkage = linkage_copy; 
   94256             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   94257             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   94258             :   // case: toBeCopied == COPY_DATA for declarationModifier
   94259           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   94260           0 :      result->p_declarationModifier = declarationModifier_copy; 
   94261             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   94262             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   94263             :   // case: toBeCopied == COPY_DATA for nameOnly
   94264           0 :      bool nameOnly_copy = p_nameOnly; 
   94265           0 :      result->p_nameOnly = nameOnly_copy; 
   94266             :   // Copy non-constructor parameter data member (access function): forward_copy
   94267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   94268             :   // case: toBeCopied == COPY_DATA for forward
   94269           0 :      bool forward_copy = p_forward; 
   94270           0 :      result->p_forward = forward_copy; 
   94271             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   94272             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   94273             :   // case: toBeCopied == COPY_DATA for externBrace
   94274           0 :      bool externBrace_copy = p_externBrace; 
   94275           0 :      result->p_externBrace = externBrace_copy; 
   94276             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   94277             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   94278             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   94279           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   94280           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   94281             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   94282             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   94283             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   94284           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   94285           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   94286             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   94287             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   94288             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   94289           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   94290           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   94291             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   94292             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   94293             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   94294           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   94295           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   94296             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   94297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   94298             :   // case: toBeCopied == COPY_DATA for binding_label
   94299           0 :      std::string binding_label_copy = p_binding_label; 
   94300           0 :      result->p_binding_label = binding_label_copy; 
   94301             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   94302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   94303             :   // case: toBeCopied == COPY_DATA for declarationScope
   94304           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   94305           0 :      result->p_declarationScope = declarationScope_copy; 
   94306             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   94307             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   94308             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   94309           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   94310           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   94311             :   // Copy non-constructor parameter data member (access function): directiveString_copy
   94312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for directiveString
   94313             :   // case: toBeCopied == COPY_DATA for directiveString
   94314           0 :      std::string directiveString_copy = p_directiveString; 
   94315           0 :      result->p_directiveString = directiveString_copy; 
   94316             :   // Copy non-constructor parameter data member (access function): linenumber_copy
   94317             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linenumber
   94318             :   // case: toBeCopied == COPY_DATA for linenumber
   94319           0 :      int linenumber_copy = p_linenumber; 
   94320           0 :      result->p_linenumber = linenumber_copy; 
   94321             :   // Copy non-constructor parameter data member (access function): filename_copy
   94322             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for filename
   94323             :   // case: toBeCopied == COPY_DATA for filename
   94324           0 :      std::string filename_copy = p_filename; 
   94325           0 :      result->p_filename = filename_copy; 
   94326             :   // Copy non-constructor parameter data member (list access function): result->get_flaglist()
   94327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for flaglist
   94328             :   // case: toBeCopied == COPY_DATA for flaglist
   94329           0 :      SgUnsignedCharList flaglist_copy = p_flaglist; 
   94330           0 :      result->p_flaglist = flaglist_copy; 
   94331             : 
   94332             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   94333             : 
   94334             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   94335             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   94336             :   // fixupCopy(result,help);
   94337             : 
   94338             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   94339             :   // the Sg_File_Info objects that are built for the new IR nodes.
   94340           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   94341           0 :      if (locatedNode != NULL)
   94342             :         {
   94343             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   94344           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   94345           0 :           ROSE_ASSERT(start != NULL);
   94346             : #if 0
   94347             :        // Debugging information
   94348             :           if (start->get_parent() == NULL)
   94349             :              {
   94350             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94351             :              }
   94352             : #endif
   94353           0 :           start->set_parent(locatedNode);
   94354           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   94355             : 
   94356           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   94357             : 
   94358             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   94359             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   94360             :        // ROSE_ASSERT(end != NULL);
   94361           0 :           if (end == NULL)
   94362             :              {
   94363           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   94364             :              }
   94365             :             else
   94366             :              {
   94367             : #if 0
   94368             :             // Debugging information
   94369             :                if (end->get_parent() == NULL)
   94370             :                   {
   94371             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94372             :                   }
   94373             : #endif
   94374           0 :                end->set_parent(locatedNode);
   94375           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   94376             :              }
   94377             : 
   94378           0 :           SgExpression* expression = isSgExpression(result);
   94379           0 :           if (isSgExpression(this) != NULL)
   94380             :              {
   94381           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   94382             : 
   94383             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   94384           0 :                if (operatorPosition != NULL)
   94385             :                   {
   94386             : #if 0
   94387             :                  // Debugging information
   94388             :                     if (operatorPosition->get_parent() == NULL)
   94389             :                        {
   94390             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94391             :                        }
   94392             : #endif
   94393           0 :                     operatorPosition->set_parent(expression);
   94394           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   94395             :                   }
   94396             :              }
   94397             :         }
   94398             : 
   94399             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   94400           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   94401           0 :      if (initializedName != NULL)
   94402             :         {
   94403             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   94404           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   94405           0 :           ROSE_ASSERT(start != NULL);
   94406             : #if 0
   94407             :        // Debugging information
   94408             :           if (start->get_parent() == NULL)
   94409             :              {
   94410             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94411             :              }
   94412             : #endif
   94413           0 :           start->set_parent(initializedName);
   94414           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   94415             : 
   94416             : #if 0
   94417             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   94418             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   94419             : 
   94420             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   94421             :        // ROSE_ASSERT(end != NULL);
   94422             :           if (end == NULL)
   94423             :              {
   94424             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   94425             :              }
   94426             :             else
   94427             :              {
   94428             :                if (end->get_parent() == NULL)
   94429             :                   {
   94430             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94431             :                   }
   94432             :                end->set_parent(initializedName);
   94433             :                ROSE_ASSERT(end->get_parent() != NULL);
   94434             :              }
   94435             : #endif
   94436             :         }
   94437             : 
   94438             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   94439           0 :      help.insertCopiedNodePair(this,result);
   94440             : 
   94441             :   // printf ("End of copy SgLinemarkerDirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   94442             : 
   94443             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   94444             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   94445           0 :      help.decrementDepth();
   94446             : 
   94447             :   // Test if this is the root of the copy!
   94448           0 :      if (help.get_depth() == 0)
   94449             :         {
   94450             :        // This is the original calling node.
   94451             : 
   94452             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   94453             :        // printf ("Calling SgLinemarkerDirectiveStatement::fixupCopy() (from root of AST being copied) \n");
   94454             : #if ALT_FIXUP_COPY
   94455             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   94456           0 :           fixupCopy_scopes (result,help);
   94457           0 :           fixupCopy_symbols (result,help);
   94458           0 :           fixupCopy_references (result,help);
   94459             : #else
   94460             :           fixupCopy(result,help);
   94461             : #endif
   94462             :        // Allow this to be called recursively, so accumulate the state.
   94463             :        // Also, clear the state in the SgCopyHelp object.
   94464             :        // help.clearState();
   94465             :         }
   94466             : 
   94467           0 :      return result;
   94468             :    }
   94469             : 
   94470             : 
   94471             : /* #line 94472 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   94472             : 
   94473             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   94474             : 
   94475           0 : SgNode* SgOmpThreadprivateStatement::copy ( SgCopyHelp& help) const
   94476             :    {
   94477           0 :      SgOmpThreadprivateStatement* result = NULL;
   94478             : 
   94479             :   // printf ("Copy SgOmpThreadprivateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   94480             : 
   94481             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   94482             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   94483             :   // The default value of the depth is 0, so after this call the depth is 1!
   94484           0 :      help.incrementDepth();
   94485             : 
   94486             : #if 0
   94487             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   94488             :   // but it is not generally true that things can only be copied once!
   94489             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   94490             :   // AstAttribute* existingAttribute = const_cast<SgOmpThreadprivateStatement*>(this)->attribute["copied"];
   94491             :      bool previouslyCopied = const_cast<SgOmpThreadprivateStatement*>(this)->attribute.exists("copied");
   94492             :      if (previouslyCopied == true)
   94493             :         {
   94494             :           this->get_file_info()->display("Called from copy SgOmpThreadprivateStatement: debug");
   94495             :         }
   94496             :      ROSE_ASSERT(previouslyCopied == false);
   94497             : 
   94498             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   94499             :      AstAttribute* newAttribute = new AstAttribute();
   94500             :      ROSE_ASSERT(newAttribute != NULL);
   94501             : 
   94502             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   94503             :      const_cast<SgOmpThreadprivateStatement*>(this)->attribute.add("copied",newAttribute);
   94504             : #endif
   94505             : 
   94506             :   // Copy data members from base classes
   94507             :   // Copy constructor parameter data member: startOfConstruct_copy
   94508             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   94509             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   94510           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   94511           0 :      if ( p_startOfConstruct != NULL ) 
   94512             :         { 
   94513           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   94514             :         } 
   94515             :        else 
   94516             :         { 
   94517             :           startOfConstruct_copy = NULL; 
   94518             :         } 
   94519             :  
   94520             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   94521             : 
   94522             :   // Build an empty copy of this object (will be filled in, but 
   94523             :   // the parent can't be set and must be set by the caller)
   94524           0 :      result = new SgOmpThreadprivateStatement(  startOfConstruct_copy );
   94525           0 :      ROSE_ASSERT(result != NULL);
   94526             : 
   94527             :   // Copy data members of "this" class
   94528             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   94529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   94530             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   94531           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   94532           0 :      if ( p_endOfConstruct != NULL ) 
   94533             :         { 
   94534           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   94535             :         } 
   94536             :        else 
   94537             :         { 
   94538             :           endOfConstruct_copy = NULL; 
   94539             :         } 
   94540             :   /* check for a valid pointer and delete if present */ 
   94541           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   94542             :   /* add assignment to result here */ 
   94543           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   94544             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   94545             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   94546             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   94547           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   94548           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   94549             :         { 
   94550           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   94551             :         } 
   94552             :        else 
   94553             :         { 
   94554             :           attachedPreprocessingInfoPtr_copy = NULL; 
   94555             :         } 
   94556             :   /* check for a valid pointer and delete if present */ 
   94557           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   94558             :   /* add assignment to result here */ 
   94559           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   94560             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   94561             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   94562             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   94563           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   94564           0 :      if ( p_attributeMechanism != NULL ) 
   94565             :         { 
   94566           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   94567             :         } 
   94568             :        else 
   94569             :         { 
   94570             :           attributeMechanism_copy = NULL; 
   94571             :         } 
   94572             :   /* check for a valid pointer and delete if present */ 
   94573           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   94574             :   /* add assignment to result here */ 
   94575           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   94576             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   94577             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   94578             :   // case: toBeCopied == COPY_DATA for numeric_label
   94579           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   94580           0 :      result->p_numeric_label = numeric_label_copy; 
   94581             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   94582             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   94583             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   94584           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   94585           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   94586             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   94587             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   94588             :   // case: toBeCopied == COPY_DATA for decl_attributes
   94589           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   94590           0 :      result->p_decl_attributes = decl_attributes_copy; 
   94591             :   // Copy non-constructor parameter data member (access function): linkage_copy
   94592             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   94593             :   // case: toBeCopied == COPY_DATA for linkage
   94594           0 :      std::string linkage_copy = p_linkage; 
   94595           0 :      result->p_linkage = linkage_copy; 
   94596             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   94597             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   94598             :   // case: toBeCopied == COPY_DATA for declarationModifier
   94599           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   94600           0 :      result->p_declarationModifier = declarationModifier_copy; 
   94601             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   94602             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   94603             :   // case: toBeCopied == COPY_DATA for nameOnly
   94604           0 :      bool nameOnly_copy = p_nameOnly; 
   94605           0 :      result->p_nameOnly = nameOnly_copy; 
   94606             :   // Copy non-constructor parameter data member (access function): forward_copy
   94607             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   94608             :   // case: toBeCopied == COPY_DATA for forward
   94609           0 :      bool forward_copy = p_forward; 
   94610           0 :      result->p_forward = forward_copy; 
   94611             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   94612             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   94613             :   // case: toBeCopied == COPY_DATA for externBrace
   94614           0 :      bool externBrace_copy = p_externBrace; 
   94615           0 :      result->p_externBrace = externBrace_copy; 
   94616             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   94617             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   94618             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   94619           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   94620           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   94621             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   94622             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   94623             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   94624           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   94625           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   94626             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   94627             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   94628             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   94629           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   94630           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   94631             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   94632             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   94633             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   94634           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   94635           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   94636             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   94637             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   94638             :   // case: toBeCopied == COPY_DATA for binding_label
   94639           0 :      std::string binding_label_copy = p_binding_label; 
   94640           0 :      result->p_binding_label = binding_label_copy; 
   94641             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   94642             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   94643             :   // case: toBeCopied == COPY_DATA for declarationScope
   94644           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   94645           0 :      result->p_declarationScope = declarationScope_copy; 
   94646             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   94647             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   94648             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   94649           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   94650           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   94651             :   // Copy non-constructor parameter data member (list access function): result->get_variables()
   94652           0 :      SgVarRefExpPtrList variables_copy; 
   94653             :   // case: listType for variables
   94654             :   // case: listType (typeIsPointerToList == false) for variables
   94655           0 :      SgVarRefExpPtrList::const_iterator source_variables_iterator = get_variables().begin(); 
   94656           0 :      for ( /* empty by design */; source_variables_iterator != get_variables().end(); ++source_variables_iterator) 
   94657             :         { 
   94658           0 :           SgVarRefExp* source_list_element = *source_variables_iterator; 
   94659           0 :           SgVarRefExp* copy_list_element = NULL; 
   94660           0 :           if (source_list_element != NULL) 
   94661             :              { 
   94662           0 :                copy_list_element = static_cast<SgVarRefExp*>(help.copyAst(*source_variables_iterator)); 
   94663             :              } 
   94664             :             else 
   94665             :              { 
   94666             :                copy_list_element = NULL; 
   94667             :              } 
   94668           0 :           variables_copy.push_back(copy_list_element); 
   94669             :         } 
   94670           0 :      result->p_variables = variables_copy; 
   94671             :   // case: listType for variables
   94672             :   // case: listType (typeIsPointerToList == false) for variables
   94673           0 :      SgVarRefExpPtrList::const_iterator variables_iterator = result->get_variables().begin(); 
   94674           0 :      for ( /* empty by design */; variables_iterator != result->get_variables().end(); ++variables_iterator) 
   94675             :         { 
   94676           0 :           SgVarRefExp* list_element = *variables_iterator; 
   94677           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   94678             :              { 
   94679           0 :                list_element->set_parent(result); 
   94680             :              } 
   94681             :         } 
   94682             : 
   94683             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   94684             : 
   94685             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   94686             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   94687             :   // fixupCopy(result,help);
   94688             : 
   94689             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   94690             :   // the Sg_File_Info objects that are built for the new IR nodes.
   94691           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   94692           0 :      if (locatedNode != NULL)
   94693             :         {
   94694             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   94695           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   94696           0 :           ROSE_ASSERT(start != NULL);
   94697             : #if 0
   94698             :        // Debugging information
   94699             :           if (start->get_parent() == NULL)
   94700             :              {
   94701             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94702             :              }
   94703             : #endif
   94704           0 :           start->set_parent(locatedNode);
   94705           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   94706             : 
   94707           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   94708             : 
   94709             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   94710             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   94711             :        // ROSE_ASSERT(end != NULL);
   94712           0 :           if (end == NULL)
   94713             :              {
   94714           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   94715             :              }
   94716             :             else
   94717             :              {
   94718             : #if 0
   94719             :             // Debugging information
   94720             :                if (end->get_parent() == NULL)
   94721             :                   {
   94722             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94723             :                   }
   94724             : #endif
   94725           0 :                end->set_parent(locatedNode);
   94726           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   94727             :              }
   94728             : 
   94729           0 :           SgExpression* expression = isSgExpression(result);
   94730           0 :           if (isSgExpression(this) != NULL)
   94731             :              {
   94732           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   94733             : 
   94734             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   94735           0 :                if (operatorPosition != NULL)
   94736             :                   {
   94737             : #if 0
   94738             :                  // Debugging information
   94739             :                     if (operatorPosition->get_parent() == NULL)
   94740             :                        {
   94741             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94742             :                        }
   94743             : #endif
   94744           0 :                     operatorPosition->set_parent(expression);
   94745           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   94746             :                   }
   94747             :              }
   94748             :         }
   94749             : 
   94750             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   94751           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   94752           0 :      if (initializedName != NULL)
   94753             :         {
   94754             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   94755           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   94756           0 :           ROSE_ASSERT(start != NULL);
   94757             : #if 0
   94758             :        // Debugging information
   94759             :           if (start->get_parent() == NULL)
   94760             :              {
   94761             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94762             :              }
   94763             : #endif
   94764           0 :           start->set_parent(initializedName);
   94765           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   94766             : 
   94767             : #if 0
   94768             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   94769             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   94770             : 
   94771             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   94772             :        // ROSE_ASSERT(end != NULL);
   94773             :           if (end == NULL)
   94774             :              {
   94775             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   94776             :              }
   94777             :             else
   94778             :              {
   94779             :                if (end->get_parent() == NULL)
   94780             :                   {
   94781             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   94782             :                   }
   94783             :                end->set_parent(initializedName);
   94784             :                ROSE_ASSERT(end->get_parent() != NULL);
   94785             :              }
   94786             : #endif
   94787             :         }
   94788             : 
   94789             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   94790           0 :      help.insertCopiedNodePair(this,result);
   94791             : 
   94792             :   // printf ("End of copy SgOmpThreadprivateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   94793             : 
   94794             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   94795             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   94796           0 :      help.decrementDepth();
   94797             : 
   94798             :   // Test if this is the root of the copy!
   94799           0 :      if (help.get_depth() == 0)
   94800             :         {
   94801             :        // This is the original calling node.
   94802             : 
   94803             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   94804             :        // printf ("Calling SgOmpThreadprivateStatement::fixupCopy() (from root of AST being copied) \n");
   94805             : #if ALT_FIXUP_COPY
   94806             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   94807           0 :           fixupCopy_scopes (result,help);
   94808           0 :           fixupCopy_symbols (result,help);
   94809           0 :           fixupCopy_references (result,help);
   94810             : #else
   94811             :           fixupCopy(result,help);
   94812             : #endif
   94813             :        // Allow this to be called recursively, so accumulate the state.
   94814             :        // Also, clear the state in the SgCopyHelp object.
   94815             :        // help.clearState();
   94816             :         }
   94817             : 
   94818           0 :      return result;
   94819             :    }
   94820             : 
   94821             : 
   94822             : /* #line 94823 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   94823             : 
   94824             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   94825             : 
   94826           0 : SgNode* SgOmpRequiresStatement::copy ( SgCopyHelp& help) const
   94827             :    {
   94828           0 :      SgOmpRequiresStatement* result = NULL;
   94829             : 
   94830             :   // printf ("Copy SgOmpRequiresStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   94831             : 
   94832             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   94833             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   94834             :   // The default value of the depth is 0, so after this call the depth is 1!
   94835           0 :      help.incrementDepth();
   94836             : 
   94837             : #if 0
   94838             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   94839             :   // but it is not generally true that things can only be copied once!
   94840             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   94841             :   // AstAttribute* existingAttribute = const_cast<SgOmpRequiresStatement*>(this)->attribute["copied"];
   94842             :      bool previouslyCopied = const_cast<SgOmpRequiresStatement*>(this)->attribute.exists("copied");
   94843             :      if (previouslyCopied == true)
   94844             :         {
   94845             :           this->get_file_info()->display("Called from copy SgOmpRequiresStatement: debug");
   94846             :         }
   94847             :      ROSE_ASSERT(previouslyCopied == false);
   94848             : 
   94849             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   94850             :      AstAttribute* newAttribute = new AstAttribute();
   94851             :      ROSE_ASSERT(newAttribute != NULL);
   94852             : 
   94853             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   94854             :      const_cast<SgOmpRequiresStatement*>(this)->attribute.add("copied",newAttribute);
   94855             : #endif
   94856             : 
   94857             :   // Copy data members from base classes
   94858             :   // Copy constructor parameter data member: startOfConstruct_copy
   94859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   94860             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   94861           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   94862           0 :      if ( p_startOfConstruct != NULL ) 
   94863             :         { 
   94864           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   94865             :         } 
   94866             :        else 
   94867             :         { 
   94868             :           startOfConstruct_copy = NULL; 
   94869             :         } 
   94870             :  
   94871             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   94872             : 
   94873             :   // Build an empty copy of this object (will be filled in, but 
   94874             :   // the parent can't be set and must be set by the caller)
   94875           0 :      result = new SgOmpRequiresStatement(  startOfConstruct_copy );
   94876           0 :      ROSE_ASSERT(result != NULL);
   94877             : 
   94878             :   // Copy data members of "this" class
   94879             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   94880             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   94881             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   94882           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   94883           0 :      if ( p_endOfConstruct != NULL ) 
   94884             :         { 
   94885           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   94886             :         } 
   94887             :        else 
   94888             :         { 
   94889             :           endOfConstruct_copy = NULL; 
   94890             :         } 
   94891             :   /* check for a valid pointer and delete if present */ 
   94892           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   94893             :   /* add assignment to result here */ 
   94894           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   94895             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   94896             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   94897             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   94898           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   94899           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   94900             :         { 
   94901           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   94902             :         } 
   94903             :        else 
   94904             :         { 
   94905             :           attachedPreprocessingInfoPtr_copy = NULL; 
   94906             :         } 
   94907             :   /* check for a valid pointer and delete if present */ 
   94908           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   94909             :   /* add assignment to result here */ 
   94910           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   94911             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   94912             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   94913             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   94914           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   94915           0 :      if ( p_attributeMechanism != NULL ) 
   94916             :         { 
   94917           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   94918             :         } 
   94919             :        else 
   94920             :         { 
   94921             :           attributeMechanism_copy = NULL; 
   94922             :         } 
   94923             :   /* check for a valid pointer and delete if present */ 
   94924           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   94925             :   /* add assignment to result here */ 
   94926           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   94927             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   94928             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   94929             :   // case: toBeCopied == COPY_DATA for numeric_label
   94930           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   94931           0 :      result->p_numeric_label = numeric_label_copy; 
   94932             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   94933             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   94934             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   94935           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   94936           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   94937             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   94938             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   94939             :   // case: toBeCopied == COPY_DATA for decl_attributes
   94940           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   94941           0 :      result->p_decl_attributes = decl_attributes_copy; 
   94942             :   // Copy non-constructor parameter data member (access function): linkage_copy
   94943             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   94944             :   // case: toBeCopied == COPY_DATA for linkage
   94945           0 :      std::string linkage_copy = p_linkage; 
   94946           0 :      result->p_linkage = linkage_copy; 
   94947             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   94948             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   94949             :   // case: toBeCopied == COPY_DATA for declarationModifier
   94950           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   94951           0 :      result->p_declarationModifier = declarationModifier_copy; 
   94952             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   94953             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   94954             :   // case: toBeCopied == COPY_DATA for nameOnly
   94955           0 :      bool nameOnly_copy = p_nameOnly; 
   94956           0 :      result->p_nameOnly = nameOnly_copy; 
   94957             :   // Copy non-constructor parameter data member (access function): forward_copy
   94958             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   94959             :   // case: toBeCopied == COPY_DATA for forward
   94960           0 :      bool forward_copy = p_forward; 
   94961           0 :      result->p_forward = forward_copy; 
   94962             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   94963             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   94964             :   // case: toBeCopied == COPY_DATA for externBrace
   94965           0 :      bool externBrace_copy = p_externBrace; 
   94966           0 :      result->p_externBrace = externBrace_copy; 
   94967             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   94968             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   94969             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   94970           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   94971           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   94972             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   94973             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   94974             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   94975           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   94976           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   94977             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   94978             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   94979             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   94980           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   94981           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   94982             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   94983             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   94984             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   94985           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   94986           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   94987             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   94988             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   94989             :   // case: toBeCopied == COPY_DATA for binding_label
   94990           0 :      std::string binding_label_copy = p_binding_label; 
   94991           0 :      result->p_binding_label = binding_label_copy; 
   94992             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   94993             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   94994             :   // case: toBeCopied == COPY_DATA for declarationScope
   94995           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   94996           0 :      result->p_declarationScope = declarationScope_copy; 
   94997             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   94998             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   94999             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   95000           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   95001           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   95002             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
   95003           0 :      SgOmpClausePtrList clauses_copy; 
   95004             :   // case: listType for clauses
   95005             :   // case: listType (typeIsPointerToList == false) for clauses
   95006           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
   95007           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
   95008             :         { 
   95009           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
   95010           0 :           SgOmpClause* copy_list_element = NULL; 
   95011           0 :           if (source_list_element != NULL) 
   95012             :              { 
   95013           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
   95014             :              } 
   95015             :             else 
   95016             :              { 
   95017             :                copy_list_element = NULL; 
   95018             :              } 
   95019           0 :           clauses_copy.push_back(copy_list_element); 
   95020             :         } 
   95021           0 :      result->p_clauses = clauses_copy; 
   95022             :   // case: listType for clauses
   95023             :   // case: listType (typeIsPointerToList == false) for clauses
   95024           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
   95025           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
   95026             :         { 
   95027           0 :           SgOmpClause* list_element = *clauses_iterator; 
   95028           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   95029             :              { 
   95030           0 :                list_element->set_parent(result); 
   95031             :              } 
   95032             :         } 
   95033             : 
   95034             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   95035             : 
   95036             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   95037             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   95038             :   // fixupCopy(result,help);
   95039             : 
   95040             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   95041             :   // the Sg_File_Info objects that are built for the new IR nodes.
   95042           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   95043           0 :      if (locatedNode != NULL)
   95044             :         {
   95045             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   95046           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   95047           0 :           ROSE_ASSERT(start != NULL);
   95048             : #if 0
   95049             :        // Debugging information
   95050             :           if (start->get_parent() == NULL)
   95051             :              {
   95052             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95053             :              }
   95054             : #endif
   95055           0 :           start->set_parent(locatedNode);
   95056           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   95057             : 
   95058           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   95059             : 
   95060             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   95061             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   95062             :        // ROSE_ASSERT(end != NULL);
   95063           0 :           if (end == NULL)
   95064             :              {
   95065           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   95066             :              }
   95067             :             else
   95068             :              {
   95069             : #if 0
   95070             :             // Debugging information
   95071             :                if (end->get_parent() == NULL)
   95072             :                   {
   95073             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95074             :                   }
   95075             : #endif
   95076           0 :                end->set_parent(locatedNode);
   95077           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   95078             :              }
   95079             : 
   95080           0 :           SgExpression* expression = isSgExpression(result);
   95081           0 :           if (isSgExpression(this) != NULL)
   95082             :              {
   95083           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   95084             : 
   95085             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   95086           0 :                if (operatorPosition != NULL)
   95087             :                   {
   95088             : #if 0
   95089             :                  // Debugging information
   95090             :                     if (operatorPosition->get_parent() == NULL)
   95091             :                        {
   95092             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95093             :                        }
   95094             : #endif
   95095           0 :                     operatorPosition->set_parent(expression);
   95096           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   95097             :                   }
   95098             :              }
   95099             :         }
   95100             : 
   95101             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   95102           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   95103           0 :      if (initializedName != NULL)
   95104             :         {
   95105             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   95106           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   95107           0 :           ROSE_ASSERT(start != NULL);
   95108             : #if 0
   95109             :        // Debugging information
   95110             :           if (start->get_parent() == NULL)
   95111             :              {
   95112             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95113             :              }
   95114             : #endif
   95115           0 :           start->set_parent(initializedName);
   95116           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   95117             : 
   95118             : #if 0
   95119             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   95120             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   95121             : 
   95122             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   95123             :        // ROSE_ASSERT(end != NULL);
   95124             :           if (end == NULL)
   95125             :              {
   95126             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   95127             :              }
   95128             :             else
   95129             :              {
   95130             :                if (end->get_parent() == NULL)
   95131             :                   {
   95132             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95133             :                   }
   95134             :                end->set_parent(initializedName);
   95135             :                ROSE_ASSERT(end->get_parent() != NULL);
   95136             :              }
   95137             : #endif
   95138             :         }
   95139             : 
   95140             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   95141           0 :      help.insertCopiedNodePair(this,result);
   95142             : 
   95143             :   // printf ("End of copy SgOmpRequiresStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   95144             : 
   95145             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   95146             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   95147           0 :      help.decrementDepth();
   95148             : 
   95149             :   // Test if this is the root of the copy!
   95150           0 :      if (help.get_depth() == 0)
   95151             :         {
   95152             :        // This is the original calling node.
   95153             : 
   95154             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   95155             :        // printf ("Calling SgOmpRequiresStatement::fixupCopy() (from root of AST being copied) \n");
   95156             : #if ALT_FIXUP_COPY
   95157             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   95158           0 :           fixupCopy_scopes (result,help);
   95159           0 :           fixupCopy_symbols (result,help);
   95160           0 :           fixupCopy_references (result,help);
   95161             : #else
   95162             :           fixupCopy(result,help);
   95163             : #endif
   95164             :        // Allow this to be called recursively, so accumulate the state.
   95165             :        // Also, clear the state in the SgCopyHelp object.
   95166             :        // help.clearState();
   95167             :         }
   95168             : 
   95169           0 :      return result;
   95170             :    }
   95171             : 
   95172             : 
   95173             : /* #line 95174 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   95174             : 
   95175             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   95176             : 
   95177           0 : SgNode* SgFortranIncludeLine::copy ( SgCopyHelp& help) const
   95178             :    {
   95179           0 :      SgFortranIncludeLine* result = NULL;
   95180             : 
   95181             :   // printf ("Copy SgFortranIncludeLine = %p = %s \n",this,SageInterface::get_name(this).c_str());
   95182             : 
   95183             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   95184             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   95185             :   // The default value of the depth is 0, so after this call the depth is 1!
   95186           0 :      help.incrementDepth();
   95187             : 
   95188             : #if 0
   95189             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   95190             :   // but it is not generally true that things can only be copied once!
   95191             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   95192             :   // AstAttribute* existingAttribute = const_cast<SgFortranIncludeLine*>(this)->attribute["copied"];
   95193             :      bool previouslyCopied = const_cast<SgFortranIncludeLine*>(this)->attribute.exists("copied");
   95194             :      if (previouslyCopied == true)
   95195             :         {
   95196             :           this->get_file_info()->display("Called from copy SgFortranIncludeLine: debug");
   95197             :         }
   95198             :      ROSE_ASSERT(previouslyCopied == false);
   95199             : 
   95200             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   95201             :      AstAttribute* newAttribute = new AstAttribute();
   95202             :      ROSE_ASSERT(newAttribute != NULL);
   95203             : 
   95204             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   95205             :      const_cast<SgFortranIncludeLine*>(this)->attribute.add("copied",newAttribute);
   95206             : #endif
   95207             : 
   95208             :   // Copy data members from base classes
   95209             :   // Copy constructor parameter data member: startOfConstruct_copy
   95210             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   95211             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   95212           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   95213           0 :      if ( p_startOfConstruct != NULL ) 
   95214             :         { 
   95215           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   95216             :         } 
   95217             :        else 
   95218             :         { 
   95219             :           startOfConstruct_copy = NULL; 
   95220             :         } 
   95221             :   // Copy constructor parameter data member: filename_copy
   95222             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for filename
   95223             :   // case: toBeCopied == COPY_DATA for filename
   95224           0 :      std::string filename_copy = p_filename; 
   95225             :  
   95226             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   95227             : 
   95228             :   // Build an empty copy of this object (will be filled in, but 
   95229             :   // the parent can't be set and must be set by the caller)
   95230           0 :      result = new SgFortranIncludeLine(  startOfConstruct_copy, filename_copy );
   95231           0 :      ROSE_ASSERT(result != NULL);
   95232             : 
   95233             :   // Copy data members of "this" class
   95234             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   95235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   95236             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   95237           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   95238           0 :      if ( p_endOfConstruct != NULL ) 
   95239             :         { 
   95240           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   95241             :         } 
   95242             :        else 
   95243             :         { 
   95244             :           endOfConstruct_copy = NULL; 
   95245             :         } 
   95246             :   /* check for a valid pointer and delete if present */ 
   95247           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   95248             :   /* add assignment to result here */ 
   95249           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   95250             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   95251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   95252             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   95253           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   95254           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   95255             :         { 
   95256           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   95257             :         } 
   95258             :        else 
   95259             :         { 
   95260             :           attachedPreprocessingInfoPtr_copy = NULL; 
   95261             :         } 
   95262             :   /* check for a valid pointer and delete if present */ 
   95263           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   95264             :   /* add assignment to result here */ 
   95265           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   95266             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   95267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   95268             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   95269           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   95270           0 :      if ( p_attributeMechanism != NULL ) 
   95271             :         { 
   95272           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   95273             :         } 
   95274             :        else 
   95275             :         { 
   95276             :           attributeMechanism_copy = NULL; 
   95277             :         } 
   95278             :   /* check for a valid pointer and delete if present */ 
   95279           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   95280             :   /* add assignment to result here */ 
   95281           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   95282             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   95283             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   95284             :   // case: toBeCopied == COPY_DATA for numeric_label
   95285           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   95286           0 :      result->p_numeric_label = numeric_label_copy; 
   95287             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   95288             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   95289             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   95290           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   95291           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   95292             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   95293             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   95294             :   // case: toBeCopied == COPY_DATA for decl_attributes
   95295           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   95296           0 :      result->p_decl_attributes = decl_attributes_copy; 
   95297             :   // Copy non-constructor parameter data member (access function): linkage_copy
   95298             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   95299             :   // case: toBeCopied == COPY_DATA for linkage
   95300           0 :      std::string linkage_copy = p_linkage; 
   95301           0 :      result->p_linkage = linkage_copy; 
   95302             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   95303             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   95304             :   // case: toBeCopied == COPY_DATA for declarationModifier
   95305           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   95306           0 :      result->p_declarationModifier = declarationModifier_copy; 
   95307             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   95308             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   95309             :   // case: toBeCopied == COPY_DATA for nameOnly
   95310           0 :      bool nameOnly_copy = p_nameOnly; 
   95311           0 :      result->p_nameOnly = nameOnly_copy; 
   95312             :   // Copy non-constructor parameter data member (access function): forward_copy
   95313             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   95314             :   // case: toBeCopied == COPY_DATA for forward
   95315           0 :      bool forward_copy = p_forward; 
   95316           0 :      result->p_forward = forward_copy; 
   95317             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   95318             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   95319             :   // case: toBeCopied == COPY_DATA for externBrace
   95320           0 :      bool externBrace_copy = p_externBrace; 
   95321           0 :      result->p_externBrace = externBrace_copy; 
   95322             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   95323             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   95324             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   95325           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   95326           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   95327             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   95328             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   95329             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   95330           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   95331           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   95332             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   95333             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   95334             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   95335           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   95336           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   95337             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   95338             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   95339             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   95340           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   95341           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   95342             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   95343             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   95344             :   // case: toBeCopied == COPY_DATA for binding_label
   95345           0 :      std::string binding_label_copy = p_binding_label; 
   95346           0 :      result->p_binding_label = binding_label_copy; 
   95347             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   95348             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   95349             :   // case: toBeCopied == COPY_DATA for declarationScope
   95350           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   95351           0 :      result->p_declarationScope = declarationScope_copy; 
   95352             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   95353             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   95354             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   95355           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   95356           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   95357             : 
   95358             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   95359             : 
   95360             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   95361             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   95362             :   // fixupCopy(result,help);
   95363             : 
   95364             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   95365             :   // the Sg_File_Info objects that are built for the new IR nodes.
   95366           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   95367           0 :      if (locatedNode != NULL)
   95368             :         {
   95369             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   95370           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   95371           0 :           ROSE_ASSERT(start != NULL);
   95372             : #if 0
   95373             :        // Debugging information
   95374             :           if (start->get_parent() == NULL)
   95375             :              {
   95376             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95377             :              }
   95378             : #endif
   95379           0 :           start->set_parent(locatedNode);
   95380           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   95381             : 
   95382           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   95383             : 
   95384             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   95385             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   95386             :        // ROSE_ASSERT(end != NULL);
   95387           0 :           if (end == NULL)
   95388             :              {
   95389           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   95390             :              }
   95391             :             else
   95392             :              {
   95393             : #if 0
   95394             :             // Debugging information
   95395             :                if (end->get_parent() == NULL)
   95396             :                   {
   95397             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95398             :                   }
   95399             : #endif
   95400           0 :                end->set_parent(locatedNode);
   95401           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   95402             :              }
   95403             : 
   95404           0 :           SgExpression* expression = isSgExpression(result);
   95405           0 :           if (isSgExpression(this) != NULL)
   95406             :              {
   95407           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   95408             : 
   95409             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   95410           0 :                if (operatorPosition != NULL)
   95411             :                   {
   95412             : #if 0
   95413             :                  // Debugging information
   95414             :                     if (operatorPosition->get_parent() == NULL)
   95415             :                        {
   95416             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95417             :                        }
   95418             : #endif
   95419           0 :                     operatorPosition->set_parent(expression);
   95420           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   95421             :                   }
   95422             :              }
   95423             :         }
   95424             : 
   95425             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   95426           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   95427           0 :      if (initializedName != NULL)
   95428             :         {
   95429             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   95430           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   95431           0 :           ROSE_ASSERT(start != NULL);
   95432             : #if 0
   95433             :        // Debugging information
   95434             :           if (start->get_parent() == NULL)
   95435             :              {
   95436             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95437             :              }
   95438             : #endif
   95439           0 :           start->set_parent(initializedName);
   95440           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   95441             : 
   95442             : #if 0
   95443             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   95444             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   95445             : 
   95446             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   95447             :        // ROSE_ASSERT(end != NULL);
   95448             :           if (end == NULL)
   95449             :              {
   95450             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   95451             :              }
   95452             :             else
   95453             :              {
   95454             :                if (end->get_parent() == NULL)
   95455             :                   {
   95456             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95457             :                   }
   95458             :                end->set_parent(initializedName);
   95459             :                ROSE_ASSERT(end->get_parent() != NULL);
   95460             :              }
   95461             : #endif
   95462             :         }
   95463             : 
   95464             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   95465           0 :      help.insertCopiedNodePair(this,result);
   95466             : 
   95467             :   // printf ("End of copy SgFortranIncludeLine = %p = %s \n",this,SageInterface::get_name(this).c_str());
   95468             : 
   95469             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   95470             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   95471           0 :      help.decrementDepth();
   95472             : 
   95473             :   // Test if this is the root of the copy!
   95474           0 :      if (help.get_depth() == 0)
   95475             :         {
   95476             :        // This is the original calling node.
   95477             : 
   95478             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   95479             :        // printf ("Calling SgFortranIncludeLine::fixupCopy() (from root of AST being copied) \n");
   95480             : #if ALT_FIXUP_COPY
   95481             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   95482           0 :           fixupCopy_scopes (result,help);
   95483           0 :           fixupCopy_symbols (result,help);
   95484           0 :           fixupCopy_references (result,help);
   95485             : #else
   95486             :           fixupCopy(result,help);
   95487             : #endif
   95488             :        // Allow this to be called recursively, so accumulate the state.
   95489             :        // Also, clear the state in the SgCopyHelp object.
   95490             :        // help.clearState();
   95491             :         }
   95492             : 
   95493           0 :      return result;
   95494             :    }
   95495             : 
   95496             : 
   95497             : /* #line 95498 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   95498             : 
   95499             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   95500             : 
   95501           0 : SgNode* SgOmpTaskwaitStatement::copy ( SgCopyHelp& help) const
   95502             :    {
   95503           0 :      SgOmpTaskwaitStatement* result = NULL;
   95504             : 
   95505             :   // printf ("Copy SgOmpTaskwaitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   95506             : 
   95507             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   95508             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   95509             :   // The default value of the depth is 0, so after this call the depth is 1!
   95510           0 :      help.incrementDepth();
   95511             : 
   95512             : #if 0
   95513             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   95514             :   // but it is not generally true that things can only be copied once!
   95515             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   95516             :   // AstAttribute* existingAttribute = const_cast<SgOmpTaskwaitStatement*>(this)->attribute["copied"];
   95517             :      bool previouslyCopied = const_cast<SgOmpTaskwaitStatement*>(this)->attribute.exists("copied");
   95518             :      if (previouslyCopied == true)
   95519             :         {
   95520             :           this->get_file_info()->display("Called from copy SgOmpTaskwaitStatement: debug");
   95521             :         }
   95522             :      ROSE_ASSERT(previouslyCopied == false);
   95523             : 
   95524             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   95525             :      AstAttribute* newAttribute = new AstAttribute();
   95526             :      ROSE_ASSERT(newAttribute != NULL);
   95527             : 
   95528             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   95529             :      const_cast<SgOmpTaskwaitStatement*>(this)->attribute.add("copied",newAttribute);
   95530             : #endif
   95531             : 
   95532             :   // Copy data members from base classes
   95533             :   // Copy constructor parameter data member: startOfConstruct_copy
   95534             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   95535             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   95536           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   95537           0 :      if ( p_startOfConstruct != NULL ) 
   95538             :         { 
   95539           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   95540             :         } 
   95541             :        else 
   95542             :         { 
   95543             :           startOfConstruct_copy = NULL; 
   95544             :         } 
   95545             :  
   95546             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   95547             : 
   95548             :   // Build an empty copy of this object (will be filled in, but 
   95549             :   // the parent can't be set and must be set by the caller)
   95550           0 :      result = new SgOmpTaskwaitStatement(  startOfConstruct_copy );
   95551           0 :      ROSE_ASSERT(result != NULL);
   95552             : 
   95553             :   // Copy data members of "this" class
   95554             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   95555             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   95556             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   95557           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   95558           0 :      if ( p_endOfConstruct != NULL ) 
   95559             :         { 
   95560           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   95561             :         } 
   95562             :        else 
   95563             :         { 
   95564             :           endOfConstruct_copy = NULL; 
   95565             :         } 
   95566             :   /* check for a valid pointer and delete if present */ 
   95567           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   95568             :   /* add assignment to result here */ 
   95569           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   95570             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   95571             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   95572             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   95573           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   95574           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   95575             :         { 
   95576           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   95577             :         } 
   95578             :        else 
   95579             :         { 
   95580             :           attachedPreprocessingInfoPtr_copy = NULL; 
   95581             :         } 
   95582             :   /* check for a valid pointer and delete if present */ 
   95583           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   95584             :   /* add assignment to result here */ 
   95585           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   95586             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   95587             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   95588             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   95589           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   95590           0 :      if ( p_attributeMechanism != NULL ) 
   95591             :         { 
   95592           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   95593             :         } 
   95594             :        else 
   95595             :         { 
   95596             :           attributeMechanism_copy = NULL; 
   95597             :         } 
   95598             :   /* check for a valid pointer and delete if present */ 
   95599           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   95600             :   /* add assignment to result here */ 
   95601           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   95602             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   95603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   95604             :   // case: toBeCopied == COPY_DATA for numeric_label
   95605           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   95606           0 :      result->p_numeric_label = numeric_label_copy; 
   95607             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   95608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   95609             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   95610           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   95611           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   95612             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   95613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   95614             :   // case: toBeCopied == COPY_DATA for decl_attributes
   95615           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   95616           0 :      result->p_decl_attributes = decl_attributes_copy; 
   95617             :   // Copy non-constructor parameter data member (access function): linkage_copy
   95618             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   95619             :   // case: toBeCopied == COPY_DATA for linkage
   95620           0 :      std::string linkage_copy = p_linkage; 
   95621           0 :      result->p_linkage = linkage_copy; 
   95622             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   95623             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   95624             :   // case: toBeCopied == COPY_DATA for declarationModifier
   95625           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   95626           0 :      result->p_declarationModifier = declarationModifier_copy; 
   95627             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   95628             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   95629             :   // case: toBeCopied == COPY_DATA for nameOnly
   95630           0 :      bool nameOnly_copy = p_nameOnly; 
   95631           0 :      result->p_nameOnly = nameOnly_copy; 
   95632             :   // Copy non-constructor parameter data member (access function): forward_copy
   95633             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   95634             :   // case: toBeCopied == COPY_DATA for forward
   95635           0 :      bool forward_copy = p_forward; 
   95636           0 :      result->p_forward = forward_copy; 
   95637             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   95638             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   95639             :   // case: toBeCopied == COPY_DATA for externBrace
   95640           0 :      bool externBrace_copy = p_externBrace; 
   95641           0 :      result->p_externBrace = externBrace_copy; 
   95642             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   95643             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   95644             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   95645           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   95646           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   95647             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   95648             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   95649             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   95650           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   95651           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   95652             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   95653             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   95654             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   95655           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   95656           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   95657             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   95658             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   95659             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   95660           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   95661           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   95662             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   95663             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   95664             :   // case: toBeCopied == COPY_DATA for binding_label
   95665           0 :      std::string binding_label_copy = p_binding_label; 
   95666           0 :      result->p_binding_label = binding_label_copy; 
   95667             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   95668             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   95669             :   // case: toBeCopied == COPY_DATA for declarationScope
   95670           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   95671           0 :      result->p_declarationScope = declarationScope_copy; 
   95672             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   95673             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   95674             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   95675           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   95676           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   95677             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
   95678           0 :      SgOmpClausePtrList clauses_copy; 
   95679             :   // case: listType for clauses
   95680             :   // case: listType (typeIsPointerToList == false) for clauses
   95681           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
   95682           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
   95683             :         { 
   95684           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
   95685           0 :           SgOmpClause* copy_list_element = NULL; 
   95686           0 :           if (source_list_element != NULL) 
   95687             :              { 
   95688           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
   95689             :              } 
   95690             :             else 
   95691             :              { 
   95692             :                copy_list_element = NULL; 
   95693             :              } 
   95694           0 :           clauses_copy.push_back(copy_list_element); 
   95695             :         } 
   95696           0 :      result->p_clauses = clauses_copy; 
   95697             :   // case: listType for clauses
   95698             :   // case: listType (typeIsPointerToList == false) for clauses
   95699           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
   95700           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
   95701             :         { 
   95702           0 :           SgOmpClause* list_element = *clauses_iterator; 
   95703           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   95704             :              { 
   95705           0 :                list_element->set_parent(result); 
   95706             :              } 
   95707             :         } 
   95708             : 
   95709             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   95710             : 
   95711             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   95712             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   95713             :   // fixupCopy(result,help);
   95714             : 
   95715             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   95716             :   // the Sg_File_Info objects that are built for the new IR nodes.
   95717           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   95718           0 :      if (locatedNode != NULL)
   95719             :         {
   95720             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   95721           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   95722           0 :           ROSE_ASSERT(start != NULL);
   95723             : #if 0
   95724             :        // Debugging information
   95725             :           if (start->get_parent() == NULL)
   95726             :              {
   95727             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95728             :              }
   95729             : #endif
   95730           0 :           start->set_parent(locatedNode);
   95731           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   95732             : 
   95733           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   95734             : 
   95735             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   95736             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   95737             :        // ROSE_ASSERT(end != NULL);
   95738           0 :           if (end == NULL)
   95739             :              {
   95740           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   95741             :              }
   95742             :             else
   95743             :              {
   95744             : #if 0
   95745             :             // Debugging information
   95746             :                if (end->get_parent() == NULL)
   95747             :                   {
   95748             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95749             :                   }
   95750             : #endif
   95751           0 :                end->set_parent(locatedNode);
   95752           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   95753             :              }
   95754             : 
   95755           0 :           SgExpression* expression = isSgExpression(result);
   95756           0 :           if (isSgExpression(this) != NULL)
   95757             :              {
   95758           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   95759             : 
   95760             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   95761           0 :                if (operatorPosition != NULL)
   95762             :                   {
   95763             : #if 0
   95764             :                  // Debugging information
   95765             :                     if (operatorPosition->get_parent() == NULL)
   95766             :                        {
   95767             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95768             :                        }
   95769             : #endif
   95770           0 :                     operatorPosition->set_parent(expression);
   95771           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   95772             :                   }
   95773             :              }
   95774             :         }
   95775             : 
   95776             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   95777           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   95778           0 :      if (initializedName != NULL)
   95779             :         {
   95780             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   95781           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   95782           0 :           ROSE_ASSERT(start != NULL);
   95783             : #if 0
   95784             :        // Debugging information
   95785             :           if (start->get_parent() == NULL)
   95786             :              {
   95787             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95788             :              }
   95789             : #endif
   95790           0 :           start->set_parent(initializedName);
   95791           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   95792             : 
   95793             : #if 0
   95794             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   95795             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   95796             : 
   95797             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   95798             :        // ROSE_ASSERT(end != NULL);
   95799             :           if (end == NULL)
   95800             :              {
   95801             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   95802             :              }
   95803             :             else
   95804             :              {
   95805             :                if (end->get_parent() == NULL)
   95806             :                   {
   95807             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   95808             :                   }
   95809             :                end->set_parent(initializedName);
   95810             :                ROSE_ASSERT(end->get_parent() != NULL);
   95811             :              }
   95812             : #endif
   95813             :         }
   95814             : 
   95815             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   95816           0 :      help.insertCopiedNodePair(this,result);
   95817             : 
   95818             :   // printf ("End of copy SgOmpTaskwaitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   95819             : 
   95820             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   95821             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   95822           0 :      help.decrementDepth();
   95823             : 
   95824             :   // Test if this is the root of the copy!
   95825           0 :      if (help.get_depth() == 0)
   95826             :         {
   95827             :        // This is the original calling node.
   95828             : 
   95829             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   95830             :        // printf ("Calling SgOmpTaskwaitStatement::fixupCopy() (from root of AST being copied) \n");
   95831             : #if ALT_FIXUP_COPY
   95832             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   95833           0 :           fixupCopy_scopes (result,help);
   95834           0 :           fixupCopy_symbols (result,help);
   95835           0 :           fixupCopy_references (result,help);
   95836             : #else
   95837             :           fixupCopy(result,help);
   95838             : #endif
   95839             :        // Allow this to be called recursively, so accumulate the state.
   95840             :        // Also, clear the state in the SgCopyHelp object.
   95841             :        // help.clearState();
   95842             :         }
   95843             : 
   95844           0 :      return result;
   95845             :    }
   95846             : 
   95847             : 
   95848             : /* #line 95849 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   95849             : 
   95850             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   95851             : 
   95852           0 : SgNode* SgStmtDeclarationStatement::copy ( SgCopyHelp& help) const
   95853             :    {
   95854           0 :      SgStmtDeclarationStatement* result = NULL;
   95855             : 
   95856             :   // printf ("Copy SgStmtDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   95857             : 
   95858             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   95859             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   95860             :   // The default value of the depth is 0, so after this call the depth is 1!
   95861           0 :      help.incrementDepth();
   95862             : 
   95863             : #if 0
   95864             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   95865             :   // but it is not generally true that things can only be copied once!
   95866             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   95867             :   // AstAttribute* existingAttribute = const_cast<SgStmtDeclarationStatement*>(this)->attribute["copied"];
   95868             :      bool previouslyCopied = const_cast<SgStmtDeclarationStatement*>(this)->attribute.exists("copied");
   95869             :      if (previouslyCopied == true)
   95870             :         {
   95871             :           this->get_file_info()->display("Called from copy SgStmtDeclarationStatement: debug");
   95872             :         }
   95873             :      ROSE_ASSERT(previouslyCopied == false);
   95874             : 
   95875             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   95876             :      AstAttribute* newAttribute = new AstAttribute();
   95877             :      ROSE_ASSERT(newAttribute != NULL);
   95878             : 
   95879             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   95880             :      const_cast<SgStmtDeclarationStatement*>(this)->attribute.add("copied",newAttribute);
   95881             : #endif
   95882             : 
   95883             :   // Copy data members from base classes
   95884             :   // Copy constructor parameter data member: startOfConstruct_copy
   95885             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   95886             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   95887           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   95888           0 :      if ( p_startOfConstruct != NULL ) 
   95889             :         { 
   95890           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   95891             :         } 
   95892             :        else 
   95893             :         { 
   95894             :           startOfConstruct_copy = NULL; 
   95895             :         } 
   95896             :   // Copy constructor parameter data member: statement_copy
   95897           0 :      SgStatement* statement_copy; 
   95898             :   // case: not a listType for (using conditionalToCopyVariable)statement
   95899           0 :           if (get_statement() != NULL) 
   95900             :              { 
   95901           0 :                statement_copy = static_cast<SgStatement*>(help.copyAst(get_statement())); 
   95902             :              } 
   95903             :             else 
   95904             :              { 
   95905             :                statement_copy = NULL; 
   95906             :              } 
   95907             :  
   95908             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   95909             : 
   95910             :   // Build an empty copy of this object (will be filled in, but 
   95911             :   // the parent can't be set and must be set by the caller)
   95912           0 :      result = new SgStmtDeclarationStatement(  startOfConstruct_copy, statement_copy );
   95913           0 :      ROSE_ASSERT(result != NULL);
   95914             : 
   95915             :   // Copy data members of "this" class
   95916             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   95917             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   95918             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   95919           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   95920           0 :      if ( p_endOfConstruct != NULL ) 
   95921             :         { 
   95922           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   95923             :         } 
   95924             :        else 
   95925             :         { 
   95926             :           endOfConstruct_copy = NULL; 
   95927             :         } 
   95928             :   /* check for a valid pointer and delete if present */ 
   95929           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   95930             :   /* add assignment to result here */ 
   95931           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   95932             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   95933             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   95934             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   95935           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   95936           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   95937             :         { 
   95938           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   95939             :         } 
   95940             :        else 
   95941             :         { 
   95942             :           attachedPreprocessingInfoPtr_copy = NULL; 
   95943             :         } 
   95944             :   /* check for a valid pointer and delete if present */ 
   95945           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   95946             :   /* add assignment to result here */ 
   95947           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   95948             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   95949             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   95950             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   95951           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   95952           0 :      if ( p_attributeMechanism != NULL ) 
   95953             :         { 
   95954           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   95955             :         } 
   95956             :        else 
   95957             :         { 
   95958             :           attributeMechanism_copy = NULL; 
   95959             :         } 
   95960             :   /* check for a valid pointer and delete if present */ 
   95961           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   95962             :   /* add assignment to result here */ 
   95963           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   95964             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   95965             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   95966             :   // case: toBeCopied == COPY_DATA for numeric_label
   95967           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   95968           0 :      result->p_numeric_label = numeric_label_copy; 
   95969             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   95970             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   95971             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   95972           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   95973           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   95974             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   95975             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   95976             :   // case: toBeCopied == COPY_DATA for decl_attributes
   95977           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   95978           0 :      result->p_decl_attributes = decl_attributes_copy; 
   95979             :   // Copy non-constructor parameter data member (access function): linkage_copy
   95980             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   95981             :   // case: toBeCopied == COPY_DATA for linkage
   95982           0 :      std::string linkage_copy = p_linkage; 
   95983           0 :      result->p_linkage = linkage_copy; 
   95984             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   95985             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   95986             :   // case: toBeCopied == COPY_DATA for declarationModifier
   95987           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   95988           0 :      result->p_declarationModifier = declarationModifier_copy; 
   95989             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   95990             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   95991             :   // case: toBeCopied == COPY_DATA for nameOnly
   95992           0 :      bool nameOnly_copy = p_nameOnly; 
   95993           0 :      result->p_nameOnly = nameOnly_copy; 
   95994             :   // Copy non-constructor parameter data member (access function): forward_copy
   95995             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   95996             :   // case: toBeCopied == COPY_DATA for forward
   95997           0 :      bool forward_copy = p_forward; 
   95998           0 :      result->p_forward = forward_copy; 
   95999             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   96000             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   96001             :   // case: toBeCopied == COPY_DATA for externBrace
   96002           0 :      bool externBrace_copy = p_externBrace; 
   96003           0 :      result->p_externBrace = externBrace_copy; 
   96004             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   96005             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   96006             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   96007           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   96008           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   96009             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   96010             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   96011             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   96012           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   96013           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   96014             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   96015             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   96016             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   96017           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   96018           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   96019             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   96020             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   96021             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   96022           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   96023           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   96024             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   96025             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   96026             :   // case: toBeCopied == COPY_DATA for binding_label
   96027           0 :      std::string binding_label_copy = p_binding_label; 
   96028           0 :      result->p_binding_label = binding_label_copy; 
   96029             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   96030             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   96031             :   // case: toBeCopied == COPY_DATA for declarationScope
   96032           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   96033           0 :      result->p_declarationScope = declarationScope_copy; 
   96034             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   96035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   96036             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   96037           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   96038           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   96039             :   // case: not a listType for (using conditionalToSetParent)statement
   96040           0 :           if ( (statement_copy != NULL) && (statement_copy->get_parent() == NULL) && (isSgType(statement_copy) == NULL) ) 
   96041             :              { 
   96042           0 :                statement_copy->set_parent(result); 
   96043             :              } 
   96044             : 
   96045             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   96046             : 
   96047             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   96048             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   96049             :   // fixupCopy(result,help);
   96050             : 
   96051             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   96052             :   // the Sg_File_Info objects that are built for the new IR nodes.
   96053           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   96054           0 :      if (locatedNode != NULL)
   96055             :         {
   96056             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   96057           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   96058           0 :           ROSE_ASSERT(start != NULL);
   96059             : #if 0
   96060             :        // Debugging information
   96061             :           if (start->get_parent() == NULL)
   96062             :              {
   96063             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96064             :              }
   96065             : #endif
   96066           0 :           start->set_parent(locatedNode);
   96067           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   96068             : 
   96069           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   96070             : 
   96071             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   96072             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   96073             :        // ROSE_ASSERT(end != NULL);
   96074           0 :           if (end == NULL)
   96075             :              {
   96076           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   96077             :              }
   96078             :             else
   96079             :              {
   96080             : #if 0
   96081             :             // Debugging information
   96082             :                if (end->get_parent() == NULL)
   96083             :                   {
   96084             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96085             :                   }
   96086             : #endif
   96087           0 :                end->set_parent(locatedNode);
   96088           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   96089             :              }
   96090             : 
   96091           0 :           SgExpression* expression = isSgExpression(result);
   96092           0 :           if (isSgExpression(this) != NULL)
   96093             :              {
   96094           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   96095             : 
   96096             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   96097           0 :                if (operatorPosition != NULL)
   96098             :                   {
   96099             : #if 0
   96100             :                  // Debugging information
   96101             :                     if (operatorPosition->get_parent() == NULL)
   96102             :                        {
   96103             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96104             :                        }
   96105             : #endif
   96106           0 :                     operatorPosition->set_parent(expression);
   96107           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   96108             :                   }
   96109             :              }
   96110             :         }
   96111             : 
   96112             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   96113           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   96114           0 :      if (initializedName != NULL)
   96115             :         {
   96116             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   96117           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   96118           0 :           ROSE_ASSERT(start != NULL);
   96119             : #if 0
   96120             :        // Debugging information
   96121             :           if (start->get_parent() == NULL)
   96122             :              {
   96123             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96124             :              }
   96125             : #endif
   96126           0 :           start->set_parent(initializedName);
   96127           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   96128             : 
   96129             : #if 0
   96130             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   96131             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   96132             : 
   96133             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   96134             :        // ROSE_ASSERT(end != NULL);
   96135             :           if (end == NULL)
   96136             :              {
   96137             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   96138             :              }
   96139             :             else
   96140             :              {
   96141             :                if (end->get_parent() == NULL)
   96142             :                   {
   96143             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96144             :                   }
   96145             :                end->set_parent(initializedName);
   96146             :                ROSE_ASSERT(end->get_parent() != NULL);
   96147             :              }
   96148             : #endif
   96149             :         }
   96150             : 
   96151             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   96152           0 :      help.insertCopiedNodePair(this,result);
   96153             : 
   96154             :   // printf ("End of copy SgStmtDeclarationStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   96155             : 
   96156             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   96157             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   96158           0 :      help.decrementDepth();
   96159             : 
   96160             :   // Test if this is the root of the copy!
   96161           0 :      if (help.get_depth() == 0)
   96162             :         {
   96163             :        // This is the original calling node.
   96164             : 
   96165             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   96166             :        // printf ("Calling SgStmtDeclarationStatement::fixupCopy() (from root of AST being copied) \n");
   96167             : #if ALT_FIXUP_COPY
   96168             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   96169           0 :           fixupCopy_scopes (result,help);
   96170           0 :           fixupCopy_symbols (result,help);
   96171           0 :           fixupCopy_references (result,help);
   96172             : #else
   96173             :           fixupCopy(result,help);
   96174             : #endif
   96175             :        // Allow this to be called recursively, so accumulate the state.
   96176             :        // Also, clear the state in the SgCopyHelp object.
   96177             :        // help.clearState();
   96178             :         }
   96179             : 
   96180           0 :      return result;
   96181             :    }
   96182             : 
   96183             : 
   96184             : /* #line 96185 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   96185             : 
   96186             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   96187             : 
   96188           0 : SgNode* SgStaticAssertionDeclaration::copy ( SgCopyHelp& help) const
   96189             :    {
   96190           0 :      SgStaticAssertionDeclaration* result = NULL;
   96191             : 
   96192             :   // printf ("Copy SgStaticAssertionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   96193             : 
   96194             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   96195             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   96196             :   // The default value of the depth is 0, so after this call the depth is 1!
   96197           0 :      help.incrementDepth();
   96198             : 
   96199             : #if 0
   96200             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   96201             :   // but it is not generally true that things can only be copied once!
   96202             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   96203             :   // AstAttribute* existingAttribute = const_cast<SgStaticAssertionDeclaration*>(this)->attribute["copied"];
   96204             :      bool previouslyCopied = const_cast<SgStaticAssertionDeclaration*>(this)->attribute.exists("copied");
   96205             :      if (previouslyCopied == true)
   96206             :         {
   96207             :           this->get_file_info()->display("Called from copy SgStaticAssertionDeclaration: debug");
   96208             :         }
   96209             :      ROSE_ASSERT(previouslyCopied == false);
   96210             : 
   96211             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   96212             :      AstAttribute* newAttribute = new AstAttribute();
   96213             :      ROSE_ASSERT(newAttribute != NULL);
   96214             : 
   96215             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   96216             :      const_cast<SgStaticAssertionDeclaration*>(this)->attribute.add("copied",newAttribute);
   96217             : #endif
   96218             : 
   96219             :   // Copy data members from base classes
   96220             :   // Copy constructor parameter data member: startOfConstruct_copy
   96221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   96222             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   96223           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   96224           0 :      if ( p_startOfConstruct != NULL ) 
   96225             :         { 
   96226           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   96227             :         } 
   96228             :        else 
   96229             :         { 
   96230             :           startOfConstruct_copy = NULL; 
   96231             :         } 
   96232             :   // Copy constructor parameter data member: condition_copy
   96233           0 :      SgExpression* condition_copy; 
   96234             :   // case: not a listType for (using conditionalToCopyVariable)condition
   96235           0 :           if (get_condition() != NULL) 
   96236             :              { 
   96237           0 :                condition_copy = static_cast<SgExpression*>(help.copyAst(get_condition())); 
   96238             :              } 
   96239             :             else 
   96240             :              { 
   96241             :                condition_copy = NULL; 
   96242             :              } 
   96243             :   // Copy constructor parameter data member: string_literal_copy
   96244             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_literal
   96245             :   // case: toBeCopied == COPY_DATA for string_literal
   96246           0 :      SgName string_literal_copy = p_string_literal; 
   96247             :  
   96248             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   96249             : 
   96250             :   // Build an empty copy of this object (will be filled in, but 
   96251             :   // the parent can't be set and must be set by the caller)
   96252           0 :      result = new SgStaticAssertionDeclaration(  startOfConstruct_copy, condition_copy, string_literal_copy );
   96253           0 :      ROSE_ASSERT(result != NULL);
   96254             : 
   96255             :   // Copy data members of "this" class
   96256             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   96257             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   96258             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   96259           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   96260           0 :      if ( p_endOfConstruct != NULL ) 
   96261             :         { 
   96262           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   96263             :         } 
   96264             :        else 
   96265             :         { 
   96266             :           endOfConstruct_copy = NULL; 
   96267             :         } 
   96268             :   /* check for a valid pointer and delete if present */ 
   96269           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   96270             :   /* add assignment to result here */ 
   96271           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   96272             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   96273             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   96274             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   96275           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   96276           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   96277             :         { 
   96278           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   96279             :         } 
   96280             :        else 
   96281             :         { 
   96282             :           attachedPreprocessingInfoPtr_copy = NULL; 
   96283             :         } 
   96284             :   /* check for a valid pointer and delete if present */ 
   96285           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   96286             :   /* add assignment to result here */ 
   96287           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   96288             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   96289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   96290             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   96291           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   96292           0 :      if ( p_attributeMechanism != NULL ) 
   96293             :         { 
   96294           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   96295             :         } 
   96296             :        else 
   96297             :         { 
   96298             :           attributeMechanism_copy = NULL; 
   96299             :         } 
   96300             :   /* check for a valid pointer and delete if present */ 
   96301           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   96302             :   /* add assignment to result here */ 
   96303           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   96304             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   96305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   96306             :   // case: toBeCopied == COPY_DATA for numeric_label
   96307           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   96308           0 :      result->p_numeric_label = numeric_label_copy; 
   96309             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   96310             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   96311             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   96312           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   96313           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   96314             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   96315             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   96316             :   // case: toBeCopied == COPY_DATA for decl_attributes
   96317           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   96318           0 :      result->p_decl_attributes = decl_attributes_copy; 
   96319             :   // Copy non-constructor parameter data member (access function): linkage_copy
   96320             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   96321             :   // case: toBeCopied == COPY_DATA for linkage
   96322           0 :      std::string linkage_copy = p_linkage; 
   96323           0 :      result->p_linkage = linkage_copy; 
   96324             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   96325             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   96326             :   // case: toBeCopied == COPY_DATA for declarationModifier
   96327           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   96328           0 :      result->p_declarationModifier = declarationModifier_copy; 
   96329             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   96330             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   96331             :   // case: toBeCopied == COPY_DATA for nameOnly
   96332           0 :      bool nameOnly_copy = p_nameOnly; 
   96333           0 :      result->p_nameOnly = nameOnly_copy; 
   96334             :   // Copy non-constructor parameter data member (access function): forward_copy
   96335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   96336             :   // case: toBeCopied == COPY_DATA for forward
   96337           0 :      bool forward_copy = p_forward; 
   96338           0 :      result->p_forward = forward_copy; 
   96339             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   96340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   96341             :   // case: toBeCopied == COPY_DATA for externBrace
   96342           0 :      bool externBrace_copy = p_externBrace; 
   96343           0 :      result->p_externBrace = externBrace_copy; 
   96344             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   96345             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   96346             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   96347           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   96348           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   96349             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   96350             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   96351             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   96352           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   96353           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   96354             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   96355             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   96356             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   96357           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   96358           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   96359             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   96360             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   96361             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   96362           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   96363           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   96364             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   96365             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   96366             :   // case: toBeCopied == COPY_DATA for binding_label
   96367           0 :      std::string binding_label_copy = p_binding_label; 
   96368           0 :      result->p_binding_label = binding_label_copy; 
   96369             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   96370             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   96371             :   // case: toBeCopied == COPY_DATA for declarationScope
   96372           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   96373           0 :      result->p_declarationScope = declarationScope_copy; 
   96374             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   96375             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   96376             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   96377           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   96378           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   96379             :   // case: not a listType for (using conditionalToSetParent)condition
   96380           0 :           if ( (condition_copy != NULL) && (condition_copy->get_parent() == NULL) && (isSgType(condition_copy) == NULL) ) 
   96381             :              { 
   96382           0 :                condition_copy->set_parent(result); 
   96383             :              } 
   96384             : 
   96385             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   96386             : 
   96387             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   96388             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   96389             :   // fixupCopy(result,help);
   96390             : 
   96391             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   96392             :   // the Sg_File_Info objects that are built for the new IR nodes.
   96393           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   96394           0 :      if (locatedNode != NULL)
   96395             :         {
   96396             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   96397           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   96398           0 :           ROSE_ASSERT(start != NULL);
   96399             : #if 0
   96400             :        // Debugging information
   96401             :           if (start->get_parent() == NULL)
   96402             :              {
   96403             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96404             :              }
   96405             : #endif
   96406           0 :           start->set_parent(locatedNode);
   96407           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   96408             : 
   96409           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   96410             : 
   96411             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   96412             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   96413             :        // ROSE_ASSERT(end != NULL);
   96414           0 :           if (end == NULL)
   96415             :              {
   96416           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   96417             :              }
   96418             :             else
   96419             :              {
   96420             : #if 0
   96421             :             // Debugging information
   96422             :                if (end->get_parent() == NULL)
   96423             :                   {
   96424             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96425             :                   }
   96426             : #endif
   96427           0 :                end->set_parent(locatedNode);
   96428           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   96429             :              }
   96430             : 
   96431           0 :           SgExpression* expression = isSgExpression(result);
   96432           0 :           if (isSgExpression(this) != NULL)
   96433             :              {
   96434           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   96435             : 
   96436             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   96437           0 :                if (operatorPosition != NULL)
   96438             :                   {
   96439             : #if 0
   96440             :                  // Debugging information
   96441             :                     if (operatorPosition->get_parent() == NULL)
   96442             :                        {
   96443             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96444             :                        }
   96445             : #endif
   96446           0 :                     operatorPosition->set_parent(expression);
   96447           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   96448             :                   }
   96449             :              }
   96450             :         }
   96451             : 
   96452             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   96453           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   96454           0 :      if (initializedName != NULL)
   96455             :         {
   96456             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   96457           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   96458           0 :           ROSE_ASSERT(start != NULL);
   96459             : #if 0
   96460             :        // Debugging information
   96461             :           if (start->get_parent() == NULL)
   96462             :              {
   96463             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96464             :              }
   96465             : #endif
   96466           0 :           start->set_parent(initializedName);
   96467           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   96468             : 
   96469             : #if 0
   96470             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   96471             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   96472             : 
   96473             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   96474             :        // ROSE_ASSERT(end != NULL);
   96475             :           if (end == NULL)
   96476             :              {
   96477             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   96478             :              }
   96479             :             else
   96480             :              {
   96481             :                if (end->get_parent() == NULL)
   96482             :                   {
   96483             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96484             :                   }
   96485             :                end->set_parent(initializedName);
   96486             :                ROSE_ASSERT(end->get_parent() != NULL);
   96487             :              }
   96488             : #endif
   96489             :         }
   96490             : 
   96491             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   96492           0 :      help.insertCopiedNodePair(this,result);
   96493             : 
   96494             :   // printf ("End of copy SgStaticAssertionDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   96495             : 
   96496             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   96497             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   96498           0 :      help.decrementDepth();
   96499             : 
   96500             :   // Test if this is the root of the copy!
   96501           0 :      if (help.get_depth() == 0)
   96502             :         {
   96503             :        // This is the original calling node.
   96504             : 
   96505             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   96506             :        // printf ("Calling SgStaticAssertionDeclaration::fixupCopy() (from root of AST being copied) \n");
   96507             : #if ALT_FIXUP_COPY
   96508             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   96509           0 :           fixupCopy_scopes (result,help);
   96510           0 :           fixupCopy_symbols (result,help);
   96511           0 :           fixupCopy_references (result,help);
   96512             : #else
   96513             :           fixupCopy(result,help);
   96514             : #endif
   96515             :        // Allow this to be called recursively, so accumulate the state.
   96516             :        // Also, clear the state in the SgCopyHelp object.
   96517             :        // help.clearState();
   96518             :         }
   96519             : 
   96520           0 :      return result;
   96521             :    }
   96522             : 
   96523             : 
   96524             : /* #line 96525 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   96525             : 
   96526             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   96527             : 
   96528           0 : SgNode* SgOmpDeclareSimdStatement::copy ( SgCopyHelp& help) const
   96529             :    {
   96530           0 :      SgOmpDeclareSimdStatement* result = NULL;
   96531             : 
   96532             :   // printf ("Copy SgOmpDeclareSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   96533             : 
   96534             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   96535             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   96536             :   // The default value of the depth is 0, so after this call the depth is 1!
   96537           0 :      help.incrementDepth();
   96538             : 
   96539             : #if 0
   96540             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   96541             :   // but it is not generally true that things can only be copied once!
   96542             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   96543             :   // AstAttribute* existingAttribute = const_cast<SgOmpDeclareSimdStatement*>(this)->attribute["copied"];
   96544             :      bool previouslyCopied = const_cast<SgOmpDeclareSimdStatement*>(this)->attribute.exists("copied");
   96545             :      if (previouslyCopied == true)
   96546             :         {
   96547             :           this->get_file_info()->display("Called from copy SgOmpDeclareSimdStatement: debug");
   96548             :         }
   96549             :      ROSE_ASSERT(previouslyCopied == false);
   96550             : 
   96551             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   96552             :      AstAttribute* newAttribute = new AstAttribute();
   96553             :      ROSE_ASSERT(newAttribute != NULL);
   96554             : 
   96555             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   96556             :      const_cast<SgOmpDeclareSimdStatement*>(this)->attribute.add("copied",newAttribute);
   96557             : #endif
   96558             : 
   96559             :   // Copy data members from base classes
   96560             :   // Copy constructor parameter data member: startOfConstruct_copy
   96561             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   96562             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   96563           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   96564           0 :      if ( p_startOfConstruct != NULL ) 
   96565             :         { 
   96566           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   96567             :         } 
   96568             :        else 
   96569             :         { 
   96570             :           startOfConstruct_copy = NULL; 
   96571             :         } 
   96572             :  
   96573             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   96574             : 
   96575             :   // Build an empty copy of this object (will be filled in, but 
   96576             :   // the parent can't be set and must be set by the caller)
   96577           0 :      result = new SgOmpDeclareSimdStatement(  startOfConstruct_copy );
   96578           0 :      ROSE_ASSERT(result != NULL);
   96579             : 
   96580             :   // Copy data members of "this" class
   96581             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   96582             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   96583             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   96584           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   96585           0 :      if ( p_endOfConstruct != NULL ) 
   96586             :         { 
   96587           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   96588             :         } 
   96589             :        else 
   96590             :         { 
   96591             :           endOfConstruct_copy = NULL; 
   96592             :         } 
   96593             :   /* check for a valid pointer and delete if present */ 
   96594           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   96595             :   /* add assignment to result here */ 
   96596           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   96597             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   96598             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   96599             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   96600           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   96601           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   96602             :         { 
   96603           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   96604             :         } 
   96605             :        else 
   96606             :         { 
   96607             :           attachedPreprocessingInfoPtr_copy = NULL; 
   96608             :         } 
   96609             :   /* check for a valid pointer and delete if present */ 
   96610           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   96611             :   /* add assignment to result here */ 
   96612           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   96613             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   96614             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   96615             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   96616           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   96617           0 :      if ( p_attributeMechanism != NULL ) 
   96618             :         { 
   96619           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   96620             :         } 
   96621             :        else 
   96622             :         { 
   96623             :           attributeMechanism_copy = NULL; 
   96624             :         } 
   96625             :   /* check for a valid pointer and delete if present */ 
   96626           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   96627             :   /* add assignment to result here */ 
   96628           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   96629             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   96630             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   96631             :   // case: toBeCopied == COPY_DATA for numeric_label
   96632           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   96633           0 :      result->p_numeric_label = numeric_label_copy; 
   96634             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   96635             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   96636             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   96637           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   96638           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   96639             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   96640             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   96641             :   // case: toBeCopied == COPY_DATA for decl_attributes
   96642           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   96643           0 :      result->p_decl_attributes = decl_attributes_copy; 
   96644             :   // Copy non-constructor parameter data member (access function): linkage_copy
   96645             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   96646             :   // case: toBeCopied == COPY_DATA for linkage
   96647           0 :      std::string linkage_copy = p_linkage; 
   96648           0 :      result->p_linkage = linkage_copy; 
   96649             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   96650             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   96651             :   // case: toBeCopied == COPY_DATA for declarationModifier
   96652           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   96653           0 :      result->p_declarationModifier = declarationModifier_copy; 
   96654             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   96655             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   96656             :   // case: toBeCopied == COPY_DATA for nameOnly
   96657           0 :      bool nameOnly_copy = p_nameOnly; 
   96658           0 :      result->p_nameOnly = nameOnly_copy; 
   96659             :   // Copy non-constructor parameter data member (access function): forward_copy
   96660             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   96661             :   // case: toBeCopied == COPY_DATA for forward
   96662           0 :      bool forward_copy = p_forward; 
   96663           0 :      result->p_forward = forward_copy; 
   96664             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   96665             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   96666             :   // case: toBeCopied == COPY_DATA for externBrace
   96667           0 :      bool externBrace_copy = p_externBrace; 
   96668           0 :      result->p_externBrace = externBrace_copy; 
   96669             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   96670             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   96671             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   96672           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   96673           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   96674             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   96675             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   96676             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   96677           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   96678           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   96679             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   96680             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   96681             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   96682           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   96683           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   96684             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   96685             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   96686             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   96687           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   96688           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   96689             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   96690             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   96691             :   // case: toBeCopied == COPY_DATA for binding_label
   96692           0 :      std::string binding_label_copy = p_binding_label; 
   96693           0 :      result->p_binding_label = binding_label_copy; 
   96694             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   96695             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   96696             :   // case: toBeCopied == COPY_DATA for declarationScope
   96697           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   96698           0 :      result->p_declarationScope = declarationScope_copy; 
   96699             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   96700             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   96701             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   96702           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   96703           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   96704             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
   96705           0 :      SgOmpClausePtrList clauses_copy; 
   96706             :   // case: listType for clauses
   96707             :   // case: listType (typeIsPointerToList == false) for clauses
   96708           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
   96709           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
   96710             :         { 
   96711           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
   96712           0 :           SgOmpClause* copy_list_element = NULL; 
   96713           0 :           if (source_list_element != NULL) 
   96714             :              { 
   96715           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
   96716             :              } 
   96717             :             else 
   96718             :              { 
   96719             :                copy_list_element = NULL; 
   96720             :              } 
   96721           0 :           clauses_copy.push_back(copy_list_element); 
   96722             :         } 
   96723           0 :      result->p_clauses = clauses_copy; 
   96724             :   // case: listType for clauses
   96725             :   // case: listType (typeIsPointerToList == false) for clauses
   96726           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
   96727           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
   96728             :         { 
   96729           0 :           SgOmpClause* list_element = *clauses_iterator; 
   96730           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
   96731             :              { 
   96732           0 :                list_element->set_parent(result); 
   96733             :              } 
   96734             :         } 
   96735             : 
   96736             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   96737             : 
   96738             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   96739             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   96740             :   // fixupCopy(result,help);
   96741             : 
   96742             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   96743             :   // the Sg_File_Info objects that are built for the new IR nodes.
   96744           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   96745           0 :      if (locatedNode != NULL)
   96746             :         {
   96747             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   96748           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   96749           0 :           ROSE_ASSERT(start != NULL);
   96750             : #if 0
   96751             :        // Debugging information
   96752             :           if (start->get_parent() == NULL)
   96753             :              {
   96754             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96755             :              }
   96756             : #endif
   96757           0 :           start->set_parent(locatedNode);
   96758           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   96759             : 
   96760           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   96761             : 
   96762             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   96763             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   96764             :        // ROSE_ASSERT(end != NULL);
   96765           0 :           if (end == NULL)
   96766             :              {
   96767           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   96768             :              }
   96769             :             else
   96770             :              {
   96771             : #if 0
   96772             :             // Debugging information
   96773             :                if (end->get_parent() == NULL)
   96774             :                   {
   96775             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96776             :                   }
   96777             : #endif
   96778           0 :                end->set_parent(locatedNode);
   96779           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   96780             :              }
   96781             : 
   96782           0 :           SgExpression* expression = isSgExpression(result);
   96783           0 :           if (isSgExpression(this) != NULL)
   96784             :              {
   96785           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   96786             : 
   96787             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   96788           0 :                if (operatorPosition != NULL)
   96789             :                   {
   96790             : #if 0
   96791             :                  // Debugging information
   96792             :                     if (operatorPosition->get_parent() == NULL)
   96793             :                        {
   96794             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96795             :                        }
   96796             : #endif
   96797           0 :                     operatorPosition->set_parent(expression);
   96798           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   96799             :                   }
   96800             :              }
   96801             :         }
   96802             : 
   96803             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   96804           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   96805           0 :      if (initializedName != NULL)
   96806             :         {
   96807             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   96808           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   96809           0 :           ROSE_ASSERT(start != NULL);
   96810             : #if 0
   96811             :        // Debugging information
   96812             :           if (start->get_parent() == NULL)
   96813             :              {
   96814             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96815             :              }
   96816             : #endif
   96817           0 :           start->set_parent(initializedName);
   96818           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   96819             : 
   96820             : #if 0
   96821             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   96822             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   96823             : 
   96824             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   96825             :        // ROSE_ASSERT(end != NULL);
   96826             :           if (end == NULL)
   96827             :              {
   96828             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   96829             :              }
   96830             :             else
   96831             :              {
   96832             :                if (end->get_parent() == NULL)
   96833             :                   {
   96834             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   96835             :                   }
   96836             :                end->set_parent(initializedName);
   96837             :                ROSE_ASSERT(end->get_parent() != NULL);
   96838             :              }
   96839             : #endif
   96840             :         }
   96841             : 
   96842             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   96843           0 :      help.insertCopiedNodePair(this,result);
   96844             : 
   96845             :   // printf ("End of copy SgOmpDeclareSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   96846             : 
   96847             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   96848             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   96849           0 :      help.decrementDepth();
   96850             : 
   96851             :   // Test if this is the root of the copy!
   96852           0 :      if (help.get_depth() == 0)
   96853             :         {
   96854             :        // This is the original calling node.
   96855             : 
   96856             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   96857             :        // printf ("Calling SgOmpDeclareSimdStatement::fixupCopy() (from root of AST being copied) \n");
   96858             : #if ALT_FIXUP_COPY
   96859             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   96860           0 :           fixupCopy_scopes (result,help);
   96861           0 :           fixupCopy_symbols (result,help);
   96862           0 :           fixupCopy_references (result,help);
   96863             : #else
   96864             :           fixupCopy(result,help);
   96865             : #endif
   96866             :        // Allow this to be called recursively, so accumulate the state.
   96867             :        // Also, clear the state in the SgCopyHelp object.
   96868             :        // help.clearState();
   96869             :         }
   96870             : 
   96871           0 :      return result;
   96872             :    }
   96873             : 
   96874             : 
   96875             : /* #line 96876 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   96876             : 
   96877             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   96878             : 
   96879           0 : SgNode* SgMicrosoftAttributeDeclaration::copy ( SgCopyHelp& help) const
   96880             :    {
   96881           0 :      SgMicrosoftAttributeDeclaration* result = NULL;
   96882             : 
   96883             :   // printf ("Copy SgMicrosoftAttributeDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   96884             : 
   96885             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   96886             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   96887             :   // The default value of the depth is 0, so after this call the depth is 1!
   96888           0 :      help.incrementDepth();
   96889             : 
   96890             : #if 0
   96891             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   96892             :   // but it is not generally true that things can only be copied once!
   96893             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   96894             :   // AstAttribute* existingAttribute = const_cast<SgMicrosoftAttributeDeclaration*>(this)->attribute["copied"];
   96895             :      bool previouslyCopied = const_cast<SgMicrosoftAttributeDeclaration*>(this)->attribute.exists("copied");
   96896             :      if (previouslyCopied == true)
   96897             :         {
   96898             :           this->get_file_info()->display("Called from copy SgMicrosoftAttributeDeclaration: debug");
   96899             :         }
   96900             :      ROSE_ASSERT(previouslyCopied == false);
   96901             : 
   96902             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   96903             :      AstAttribute* newAttribute = new AstAttribute();
   96904             :      ROSE_ASSERT(newAttribute != NULL);
   96905             : 
   96906             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   96907             :      const_cast<SgMicrosoftAttributeDeclaration*>(this)->attribute.add("copied",newAttribute);
   96908             : #endif
   96909             : 
   96910             :   // Copy data members from base classes
   96911             :   // Copy constructor parameter data member: startOfConstruct_copy
   96912             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   96913             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   96914           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   96915           0 :      if ( p_startOfConstruct != NULL ) 
   96916             :         { 
   96917           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   96918             :         } 
   96919             :        else 
   96920             :         { 
   96921             :           startOfConstruct_copy = NULL; 
   96922             :         } 
   96923             :   // Copy constructor parameter data member: attribute_string_copy
   96924             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attribute_string
   96925             :   // case: toBeCopied == COPY_DATA for attribute_string
   96926           0 :      SgName attribute_string_copy = p_attribute_string; 
   96927             :  
   96928             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   96929             : 
   96930             :   // Build an empty copy of this object (will be filled in, but 
   96931             :   // the parent can't be set and must be set by the caller)
   96932           0 :      result = new SgMicrosoftAttributeDeclaration(  startOfConstruct_copy, attribute_string_copy );
   96933           0 :      ROSE_ASSERT(result != NULL);
   96934             : 
   96935             :   // Copy data members of "this" class
   96936             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   96937             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   96938             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   96939           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   96940           0 :      if ( p_endOfConstruct != NULL ) 
   96941             :         { 
   96942           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   96943             :         } 
   96944             :        else 
   96945             :         { 
   96946             :           endOfConstruct_copy = NULL; 
   96947             :         } 
   96948             :   /* check for a valid pointer and delete if present */ 
   96949           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   96950             :   /* add assignment to result here */ 
   96951           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   96952             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   96953             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   96954             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   96955           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   96956           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   96957             :         { 
   96958           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   96959             :         } 
   96960             :        else 
   96961             :         { 
   96962             :           attachedPreprocessingInfoPtr_copy = NULL; 
   96963             :         } 
   96964             :   /* check for a valid pointer and delete if present */ 
   96965           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   96966             :   /* add assignment to result here */ 
   96967           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   96968             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   96969             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   96970             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   96971           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   96972           0 :      if ( p_attributeMechanism != NULL ) 
   96973             :         { 
   96974           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   96975             :         } 
   96976             :        else 
   96977             :         { 
   96978             :           attributeMechanism_copy = NULL; 
   96979             :         } 
   96980             :   /* check for a valid pointer and delete if present */ 
   96981           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   96982             :   /* add assignment to result here */ 
   96983           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   96984             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   96985             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   96986             :   // case: toBeCopied == COPY_DATA for numeric_label
   96987           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   96988           0 :      result->p_numeric_label = numeric_label_copy; 
   96989             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   96990             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   96991             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   96992           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   96993           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   96994             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   96995             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   96996             :   // case: toBeCopied == COPY_DATA for decl_attributes
   96997           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   96998           0 :      result->p_decl_attributes = decl_attributes_copy; 
   96999             :   // Copy non-constructor parameter data member (access function): linkage_copy
   97000             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   97001             :   // case: toBeCopied == COPY_DATA for linkage
   97002           0 :      std::string linkage_copy = p_linkage; 
   97003           0 :      result->p_linkage = linkage_copy; 
   97004             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   97005             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   97006             :   // case: toBeCopied == COPY_DATA for declarationModifier
   97007           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   97008           0 :      result->p_declarationModifier = declarationModifier_copy; 
   97009             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   97010             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   97011             :   // case: toBeCopied == COPY_DATA for nameOnly
   97012           0 :      bool nameOnly_copy = p_nameOnly; 
   97013           0 :      result->p_nameOnly = nameOnly_copy; 
   97014             :   // Copy non-constructor parameter data member (access function): forward_copy
   97015             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   97016             :   // case: toBeCopied == COPY_DATA for forward
   97017           0 :      bool forward_copy = p_forward; 
   97018           0 :      result->p_forward = forward_copy; 
   97019             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   97020             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   97021             :   // case: toBeCopied == COPY_DATA for externBrace
   97022           0 :      bool externBrace_copy = p_externBrace; 
   97023           0 :      result->p_externBrace = externBrace_copy; 
   97024             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   97025             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   97026             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   97027           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   97028           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   97029             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   97030             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   97031             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   97032           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   97033           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   97034             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   97035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   97036             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   97037           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   97038           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   97039             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   97040             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   97041             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   97042           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   97043           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   97044             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   97045             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   97046             :   // case: toBeCopied == COPY_DATA for binding_label
   97047           0 :      std::string binding_label_copy = p_binding_label; 
   97048           0 :      result->p_binding_label = binding_label_copy; 
   97049             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   97050             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   97051             :   // case: toBeCopied == COPY_DATA for declarationScope
   97052           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   97053           0 :      result->p_declarationScope = declarationScope_copy; 
   97054             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   97055             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   97056             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   97057           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   97058           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   97059             : 
   97060             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   97061             : 
   97062             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   97063             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   97064             :   // fixupCopy(result,help);
   97065             : 
   97066             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   97067             :   // the Sg_File_Info objects that are built for the new IR nodes.
   97068           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   97069           0 :      if (locatedNode != NULL)
   97070             :         {
   97071             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   97072           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   97073           0 :           ROSE_ASSERT(start != NULL);
   97074             : #if 0
   97075             :        // Debugging information
   97076             :           if (start->get_parent() == NULL)
   97077             :              {
   97078             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97079             :              }
   97080             : #endif
   97081           0 :           start->set_parent(locatedNode);
   97082           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   97083             : 
   97084           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   97085             : 
   97086             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   97087             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   97088             :        // ROSE_ASSERT(end != NULL);
   97089           0 :           if (end == NULL)
   97090             :              {
   97091           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   97092             :              }
   97093             :             else
   97094             :              {
   97095             : #if 0
   97096             :             // Debugging information
   97097             :                if (end->get_parent() == NULL)
   97098             :                   {
   97099             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97100             :                   }
   97101             : #endif
   97102           0 :                end->set_parent(locatedNode);
   97103           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   97104             :              }
   97105             : 
   97106           0 :           SgExpression* expression = isSgExpression(result);
   97107           0 :           if (isSgExpression(this) != NULL)
   97108             :              {
   97109           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   97110             : 
   97111             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   97112           0 :                if (operatorPosition != NULL)
   97113             :                   {
   97114             : #if 0
   97115             :                  // Debugging information
   97116             :                     if (operatorPosition->get_parent() == NULL)
   97117             :                        {
   97118             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97119             :                        }
   97120             : #endif
   97121           0 :                     operatorPosition->set_parent(expression);
   97122           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   97123             :                   }
   97124             :              }
   97125             :         }
   97126             : 
   97127             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   97128           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   97129           0 :      if (initializedName != NULL)
   97130             :         {
   97131             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   97132           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   97133           0 :           ROSE_ASSERT(start != NULL);
   97134             : #if 0
   97135             :        // Debugging information
   97136             :           if (start->get_parent() == NULL)
   97137             :              {
   97138             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97139             :              }
   97140             : #endif
   97141           0 :           start->set_parent(initializedName);
   97142           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   97143             : 
   97144             : #if 0
   97145             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   97146             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   97147             : 
   97148             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   97149             :        // ROSE_ASSERT(end != NULL);
   97150             :           if (end == NULL)
   97151             :              {
   97152             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   97153             :              }
   97154             :             else
   97155             :              {
   97156             :                if (end->get_parent() == NULL)
   97157             :                   {
   97158             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97159             :                   }
   97160             :                end->set_parent(initializedName);
   97161             :                ROSE_ASSERT(end->get_parent() != NULL);
   97162             :              }
   97163             : #endif
   97164             :         }
   97165             : 
   97166             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   97167           0 :      help.insertCopiedNodePair(this,result);
   97168             : 
   97169             :   // printf ("End of copy SgMicrosoftAttributeDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   97170             : 
   97171             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   97172             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   97173           0 :      help.decrementDepth();
   97174             : 
   97175             :   // Test if this is the root of the copy!
   97176           0 :      if (help.get_depth() == 0)
   97177             :         {
   97178             :        // This is the original calling node.
   97179             : 
   97180             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   97181             :        // printf ("Calling SgMicrosoftAttributeDeclaration::fixupCopy() (from root of AST being copied) \n");
   97182             : #if ALT_FIXUP_COPY
   97183             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   97184           0 :           fixupCopy_scopes (result,help);
   97185           0 :           fixupCopy_symbols (result,help);
   97186           0 :           fixupCopy_references (result,help);
   97187             : #else
   97188             :           fixupCopy(result,help);
   97189             : #endif
   97190             :        // Allow this to be called recursively, so accumulate the state.
   97191             :        // Also, clear the state in the SgCopyHelp object.
   97192             :        // help.clearState();
   97193             :         }
   97194             : 
   97195           0 :      return result;
   97196             :    }
   97197             : 
   97198             : 
   97199             : /* #line 97200 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   97200             : 
   97201             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   97202             : 
   97203           0 : SgNode* SgNonrealDecl::copy ( SgCopyHelp& help) const
   97204             :    {
   97205           0 :      SgNonrealDecl* result = NULL;
   97206             : 
   97207             :   // printf ("Copy SgNonrealDecl = %p = %s \n",this,SageInterface::get_name(this).c_str());
   97208             : 
   97209             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   97210             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   97211             :   // The default value of the depth is 0, so after this call the depth is 1!
   97212           0 :      help.incrementDepth();
   97213             : 
   97214             : #if 0
   97215             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   97216             :   // but it is not generally true that things can only be copied once!
   97217             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   97218             :   // AstAttribute* existingAttribute = const_cast<SgNonrealDecl*>(this)->attribute["copied"];
   97219             :      bool previouslyCopied = const_cast<SgNonrealDecl*>(this)->attribute.exists("copied");
   97220             :      if (previouslyCopied == true)
   97221             :         {
   97222             :           this->get_file_info()->display("Called from copy SgNonrealDecl: debug");
   97223             :         }
   97224             :      ROSE_ASSERT(previouslyCopied == false);
   97225             : 
   97226             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   97227             :      AstAttribute* newAttribute = new AstAttribute();
   97228             :      ROSE_ASSERT(newAttribute != NULL);
   97229             : 
   97230             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   97231             :      const_cast<SgNonrealDecl*>(this)->attribute.add("copied",newAttribute);
   97232             : #endif
   97233             : 
   97234             :   // Copy data members from base classes
   97235             :   // Copy constructor parameter data member: startOfConstruct_copy
   97236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   97237             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   97238           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   97239           0 :      if ( p_startOfConstruct != NULL ) 
   97240             :         { 
   97241           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   97242             :         } 
   97243             :        else 
   97244             :         { 
   97245             :           startOfConstruct_copy = NULL; 
   97246             :         } 
   97247             :   // Copy constructor parameter data member: name_copy
   97248             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
   97249             :   // case: toBeCopied == COPY_DATA for name
   97250           0 :      SgName name_copy = p_name; 
   97251             :  
   97252             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   97253             : 
   97254             :   // Build an empty copy of this object (will be filled in, but 
   97255             :   // the parent can't be set and must be set by the caller)
   97256           0 :      result = new SgNonrealDecl(  startOfConstruct_copy, name_copy );
   97257           0 :      ROSE_ASSERT(result != NULL);
   97258             : 
   97259             :   // Copy data members of "this" class
   97260             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   97261             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   97262             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   97263           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   97264           0 :      if ( p_endOfConstruct != NULL ) 
   97265             :         { 
   97266           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   97267             :         } 
   97268             :        else 
   97269             :         { 
   97270             :           endOfConstruct_copy = NULL; 
   97271             :         } 
   97272             :   /* check for a valid pointer and delete if present */ 
   97273           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   97274             :   /* add assignment to result here */ 
   97275           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   97276             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   97277             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   97278             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   97279           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   97280           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   97281             :         { 
   97282           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   97283             :         } 
   97284             :        else 
   97285             :         { 
   97286             :           attachedPreprocessingInfoPtr_copy = NULL; 
   97287             :         } 
   97288             :   /* check for a valid pointer and delete if present */ 
   97289           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   97290             :   /* add assignment to result here */ 
   97291           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   97292             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   97293             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   97294             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   97295           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   97296           0 :      if ( p_attributeMechanism != NULL ) 
   97297             :         { 
   97298           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   97299             :         } 
   97300             :        else 
   97301             :         { 
   97302             :           attributeMechanism_copy = NULL; 
   97303             :         } 
   97304             :   /* check for a valid pointer and delete if present */ 
   97305           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   97306             :   /* add assignment to result here */ 
   97307           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   97308             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   97309             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   97310             :   // case: toBeCopied == COPY_DATA for numeric_label
   97311           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   97312           0 :      result->p_numeric_label = numeric_label_copy; 
   97313             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   97314             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   97315             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   97316           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   97317           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   97318             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   97319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   97320             :   // case: toBeCopied == COPY_DATA for decl_attributes
   97321           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   97322           0 :      result->p_decl_attributes = decl_attributes_copy; 
   97323             :   // Copy non-constructor parameter data member (access function): linkage_copy
   97324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   97325             :   // case: toBeCopied == COPY_DATA for linkage
   97326           0 :      std::string linkage_copy = p_linkage; 
   97327           0 :      result->p_linkage = linkage_copy; 
   97328             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   97329             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   97330             :   // case: toBeCopied == COPY_DATA for declarationModifier
   97331           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   97332           0 :      result->p_declarationModifier = declarationModifier_copy; 
   97333             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   97334             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   97335             :   // case: toBeCopied == COPY_DATA for nameOnly
   97336           0 :      bool nameOnly_copy = p_nameOnly; 
   97337           0 :      result->p_nameOnly = nameOnly_copy; 
   97338             :   // Copy non-constructor parameter data member (access function): forward_copy
   97339             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   97340             :   // case: toBeCopied == COPY_DATA for forward
   97341           0 :      bool forward_copy = p_forward; 
   97342           0 :      result->p_forward = forward_copy; 
   97343             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   97344             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   97345             :   // case: toBeCopied == COPY_DATA for externBrace
   97346           0 :      bool externBrace_copy = p_externBrace; 
   97347           0 :      result->p_externBrace = externBrace_copy; 
   97348             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   97349             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   97350             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   97351           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   97352           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   97353             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   97354             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   97355             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   97356           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   97357           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   97358             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   97359             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   97360             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   97361           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   97362           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   97363             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   97364             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   97365             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   97366           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   97367           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   97368             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   97369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   97370             :   // case: toBeCopied == COPY_DATA for binding_label
   97371           0 :      std::string binding_label_copy = p_binding_label; 
   97372           0 :      result->p_binding_label = binding_label_copy; 
   97373             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   97374             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   97375             :   // case: toBeCopied == COPY_DATA for declarationScope
   97376           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   97377           0 :      result->p_declarationScope = declarationScope_copy; 
   97378             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   97379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   97380             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   97381           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   97382           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   97383             :   // Copy non-constructor parameter data member (access function): nonreal_decl_scope_copy
   97384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nonreal_decl_scope
   97385             :   // case: toBeCopied == COPY_DATA for nonreal_decl_scope
   97386           0 :      SgDeclarationScope* nonreal_decl_scope_copy = p_nonreal_decl_scope; 
   97387           0 :      result->p_nonreal_decl_scope = nonreal_decl_scope_copy; 
   97388             :   // Copy non-constructor parameter data member (no access function): result->p_type
   97389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
   97390             :   // case: toBeCopied == COPY_DATA for type
   97391           0 :      SgNonrealType* type_copy = p_type; 
   97392           0 :      result->p_type = type_copy; 
   97393             :   // Copy non-constructor parameter data member (access function): template_parameter_position_copy
   97394             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for template_parameter_position
   97395             :   // case: toBeCopied == COPY_DATA for template_parameter_position
   97396           0 :      int template_parameter_position_copy = p_template_parameter_position; 
   97397           0 :      result->p_template_parameter_position = template_parameter_position_copy; 
   97398             :   // Copy non-constructor parameter data member (access function): template_parameter_depth_copy
   97399             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for template_parameter_depth
   97400             :   // case: toBeCopied == COPY_DATA for template_parameter_depth
   97401           0 :      int template_parameter_depth_copy = p_template_parameter_depth; 
   97402           0 :      result->p_template_parameter_depth = template_parameter_depth_copy; 
   97403             :   // Copy non-constructor parameter data member (access function): templateDeclaration_copy
   97404             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for templateDeclaration
   97405             :   // case: toBeCopied == COPY_DATA for templateDeclaration
   97406           0 :      SgDeclarationStatement* templateDeclaration_copy = p_templateDeclaration; 
   97407           0 :      result->p_templateDeclaration = templateDeclaration_copy; 
   97408             :   // Copy non-constructor parameter data member (list access function): result->get_tpl_args()
   97409             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for tpl_args
   97410             :   // case: toBeCopied == COPY_DATA for tpl_args
   97411           0 :      SgTemplateArgumentPtrList tpl_args_copy = p_tpl_args; 
   97412           0 :      result->p_tpl_args = tpl_args_copy; 
   97413             :   // Copy non-constructor parameter data member (list access function): result->get_tpl_params()
   97414             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for tpl_params
   97415             :   // case: toBeCopied == COPY_DATA for tpl_params
   97416           0 :      SgTemplateParameterPtrList tpl_params_copy = p_tpl_params; 
   97417           0 :      result->p_tpl_params = tpl_params_copy; 
   97418             :   // Copy non-constructor parameter data member (access function): is_class_member_copy
   97419             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_class_member
   97420             :   // case: toBeCopied == COPY_DATA for is_class_member
   97421           0 :      bool is_class_member_copy = p_is_class_member; 
   97422           0 :      result->p_is_class_member = is_class_member_copy; 
   97423             :   // Copy non-constructor parameter data member (access function): is_template_param_copy
   97424             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_template_param
   97425             :   // case: toBeCopied == COPY_DATA for is_template_param
   97426           0 :      bool is_template_param_copy = p_is_template_param; 
   97427           0 :      result->p_is_template_param = is_template_param_copy; 
   97428             :   // Copy non-constructor parameter data member (access function): is_template_template_param_copy
   97429             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_template_template_param
   97430             :   // case: toBeCopied == COPY_DATA for is_template_template_param
   97431           0 :      bool is_template_template_param_copy = p_is_template_template_param; 
   97432           0 :      result->p_is_template_template_param = is_template_template_param_copy; 
   97433             :   // Copy non-constructor parameter data member (access function): is_nonreal_template_copy
   97434             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_nonreal_template
   97435             :   // case: toBeCopied == COPY_DATA for is_nonreal_template
   97436           0 :      bool is_nonreal_template_copy = p_is_nonreal_template; 
   97437           0 :      result->p_is_nonreal_template = is_nonreal_template_copy; 
   97438             :   // Copy non-constructor parameter data member (access function): is_nonreal_function_copy
   97439             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_nonreal_function
   97440             :   // case: toBeCopied == COPY_DATA for is_nonreal_function
   97441           0 :      bool is_nonreal_function_copy = p_is_nonreal_function; 
   97442           0 :      result->p_is_nonreal_function = is_nonreal_function_copy; 
   97443             : 
   97444             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   97445             : 
   97446             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   97447             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   97448             :   // fixupCopy(result,help);
   97449             : 
   97450             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   97451             :   // the Sg_File_Info objects that are built for the new IR nodes.
   97452           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   97453           0 :      if (locatedNode != NULL)
   97454             :         {
   97455             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   97456           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   97457           0 :           ROSE_ASSERT(start != NULL);
   97458             : #if 0
   97459             :        // Debugging information
   97460             :           if (start->get_parent() == NULL)
   97461             :              {
   97462             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97463             :              }
   97464             : #endif
   97465           0 :           start->set_parent(locatedNode);
   97466           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   97467             : 
   97468           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   97469             : 
   97470             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   97471             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   97472             :        // ROSE_ASSERT(end != NULL);
   97473           0 :           if (end == NULL)
   97474             :              {
   97475           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   97476             :              }
   97477             :             else
   97478             :              {
   97479             : #if 0
   97480             :             // Debugging information
   97481             :                if (end->get_parent() == NULL)
   97482             :                   {
   97483             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97484             :                   }
   97485             : #endif
   97486           0 :                end->set_parent(locatedNode);
   97487           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   97488             :              }
   97489             : 
   97490           0 :           SgExpression* expression = isSgExpression(result);
   97491           0 :           if (isSgExpression(this) != NULL)
   97492             :              {
   97493           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   97494             : 
   97495             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   97496           0 :                if (operatorPosition != NULL)
   97497             :                   {
   97498             : #if 0
   97499             :                  // Debugging information
   97500             :                     if (operatorPosition->get_parent() == NULL)
   97501             :                        {
   97502             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97503             :                        }
   97504             : #endif
   97505           0 :                     operatorPosition->set_parent(expression);
   97506           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   97507             :                   }
   97508             :              }
   97509             :         }
   97510             : 
   97511             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   97512           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   97513           0 :      if (initializedName != NULL)
   97514             :         {
   97515             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   97516           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   97517           0 :           ROSE_ASSERT(start != NULL);
   97518             : #if 0
   97519             :        // Debugging information
   97520             :           if (start->get_parent() == NULL)
   97521             :              {
   97522             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97523             :              }
   97524             : #endif
   97525           0 :           start->set_parent(initializedName);
   97526           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   97527             : 
   97528             : #if 0
   97529             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   97530             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   97531             : 
   97532             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   97533             :        // ROSE_ASSERT(end != NULL);
   97534             :           if (end == NULL)
   97535             :              {
   97536             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   97537             :              }
   97538             :             else
   97539             :              {
   97540             :                if (end->get_parent() == NULL)
   97541             :                   {
   97542             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97543             :                   }
   97544             :                end->set_parent(initializedName);
   97545             :                ROSE_ASSERT(end->get_parent() != NULL);
   97546             :              }
   97547             : #endif
   97548             :         }
   97549             : 
   97550             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   97551           0 :      help.insertCopiedNodePair(this,result);
   97552             : 
   97553             :   // printf ("End of copy SgNonrealDecl = %p = %s \n",this,SageInterface::get_name(this).c_str());
   97554             : 
   97555             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   97556             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   97557           0 :      help.decrementDepth();
   97558             : 
   97559             :   // Test if this is the root of the copy!
   97560           0 :      if (help.get_depth() == 0)
   97561             :         {
   97562             :        // This is the original calling node.
   97563             : 
   97564             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   97565             :        // printf ("Calling SgNonrealDecl::fixupCopy() (from root of AST being copied) \n");
   97566             : #if ALT_FIXUP_COPY
   97567             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   97568           0 :           fixupCopy_scopes (result,help);
   97569           0 :           fixupCopy_symbols (result,help);
   97570           0 :           fixupCopy_references (result,help);
   97571             : #else
   97572             :           fixupCopy(result,help);
   97573             : #endif
   97574             :        // Allow this to be called recursively, so accumulate the state.
   97575             :        // Also, clear the state in the SgCopyHelp object.
   97576             :        // help.clearState();
   97577             :         }
   97578             : 
   97579           0 :      return result;
   97580             :    }
   97581             : 
   97582             : 
   97583             : /* #line 97584 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   97584             : 
   97585             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   97586             : 
   97587           0 : SgNode* SgEmptyDeclaration::copy ( SgCopyHelp& help) const
   97588             :    {
   97589           0 :      SgEmptyDeclaration* result = NULL;
   97590             : 
   97591             :   // printf ("Copy SgEmptyDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   97592             : 
   97593             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   97594             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   97595             :   // The default value of the depth is 0, so after this call the depth is 1!
   97596           0 :      help.incrementDepth();
   97597             : 
   97598             : #if 0
   97599             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   97600             :   // but it is not generally true that things can only be copied once!
   97601             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   97602             :   // AstAttribute* existingAttribute = const_cast<SgEmptyDeclaration*>(this)->attribute["copied"];
   97603             :      bool previouslyCopied = const_cast<SgEmptyDeclaration*>(this)->attribute.exists("copied");
   97604             :      if (previouslyCopied == true)
   97605             :         {
   97606             :           this->get_file_info()->display("Called from copy SgEmptyDeclaration: debug");
   97607             :         }
   97608             :      ROSE_ASSERT(previouslyCopied == false);
   97609             : 
   97610             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   97611             :      AstAttribute* newAttribute = new AstAttribute();
   97612             :      ROSE_ASSERT(newAttribute != NULL);
   97613             : 
   97614             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   97615             :      const_cast<SgEmptyDeclaration*>(this)->attribute.add("copied",newAttribute);
   97616             : #endif
   97617             : 
   97618             :   // Copy data members from base classes
   97619             :   // Copy constructor parameter data member: startOfConstruct_copy
   97620             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   97621             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   97622           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   97623           0 :      if ( p_startOfConstruct != NULL ) 
   97624             :         { 
   97625           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   97626             :         } 
   97627             :        else 
   97628             :         { 
   97629             :           startOfConstruct_copy = NULL; 
   97630             :         } 
   97631             :  
   97632             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   97633             : 
   97634             :   // Build an empty copy of this object (will be filled in, but 
   97635             :   // the parent can't be set and must be set by the caller)
   97636           0 :      result = new SgEmptyDeclaration(  startOfConstruct_copy );
   97637           0 :      ROSE_ASSERT(result != NULL);
   97638             : 
   97639             :   // Copy data members of "this" class
   97640             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   97641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   97642             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   97643           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   97644           0 :      if ( p_endOfConstruct != NULL ) 
   97645             :         { 
   97646           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   97647             :         } 
   97648             :        else 
   97649             :         { 
   97650             :           endOfConstruct_copy = NULL; 
   97651             :         } 
   97652             :   /* check for a valid pointer and delete if present */ 
   97653           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   97654             :   /* add assignment to result here */ 
   97655           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   97656             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   97657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   97658             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   97659           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   97660           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   97661             :         { 
   97662           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   97663             :         } 
   97664             :        else 
   97665             :         { 
   97666             :           attachedPreprocessingInfoPtr_copy = NULL; 
   97667             :         } 
   97668             :   /* check for a valid pointer and delete if present */ 
   97669           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   97670             :   /* add assignment to result here */ 
   97671           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   97672             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   97673             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   97674             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   97675           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   97676           0 :      if ( p_attributeMechanism != NULL ) 
   97677             :         { 
   97678           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   97679             :         } 
   97680             :        else 
   97681             :         { 
   97682             :           attributeMechanism_copy = NULL; 
   97683             :         } 
   97684             :   /* check for a valid pointer and delete if present */ 
   97685           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   97686             :   /* add assignment to result here */ 
   97687           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   97688             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   97689             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   97690             :   // case: toBeCopied == COPY_DATA for numeric_label
   97691           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   97692           0 :      result->p_numeric_label = numeric_label_copy; 
   97693             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   97694             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   97695             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   97696           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   97697           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   97698             :   // Copy non-constructor parameter data member (access function): decl_attributes_copy
   97699             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decl_attributes
   97700             :   // case: toBeCopied == COPY_DATA for decl_attributes
   97701           0 :      unsigned int decl_attributes_copy = p_decl_attributes; 
   97702           0 :      result->p_decl_attributes = decl_attributes_copy; 
   97703             :   // Copy non-constructor parameter data member (access function): linkage_copy
   97704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for linkage
   97705             :   // case: toBeCopied == COPY_DATA for linkage
   97706           0 :      std::string linkage_copy = p_linkage; 
   97707           0 :      result->p_linkage = linkage_copy; 
   97708             :   // Copy non-constructor parameter data member (list access function): result->get_declarationModifier()
   97709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationModifier
   97710             :   // case: toBeCopied == COPY_DATA for declarationModifier
   97711           0 :      SgDeclarationModifier declarationModifier_copy = p_declarationModifier; 
   97712           0 :      result->p_declarationModifier = declarationModifier_copy; 
   97713             :   // Copy non-constructor parameter data member (access function): nameOnly_copy
   97714             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nameOnly
   97715             :   // case: toBeCopied == COPY_DATA for nameOnly
   97716           0 :      bool nameOnly_copy = p_nameOnly; 
   97717           0 :      result->p_nameOnly = nameOnly_copy; 
   97718             :   // Copy non-constructor parameter data member (access function): forward_copy
   97719             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for forward
   97720             :   // case: toBeCopied == COPY_DATA for forward
   97721           0 :      bool forward_copy = p_forward; 
   97722           0 :      result->p_forward = forward_copy; 
   97723             :   // Copy non-constructor parameter data member (access function): externBrace_copy
   97724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for externBrace
   97725             :   // case: toBeCopied == COPY_DATA for externBrace
   97726           0 :      bool externBrace_copy = p_externBrace; 
   97727           0 :      result->p_externBrace = externBrace_copy; 
   97728             :   // Copy non-constructor parameter data member (access function): skipElaborateType_copy
   97729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for skipElaborateType
   97730             :   // case: toBeCopied == COPY_DATA for skipElaborateType
   97731           0 :      bool skipElaborateType_copy = p_skipElaborateType; 
   97732           0 :      result->p_skipElaborateType = skipElaborateType_copy; 
   97733             :   // Copy non-constructor parameter data member (no access function): result->p_definingDeclaration
   97734             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for definingDeclaration
   97735             :   // case: toBeCopied == COPY_DATA for definingDeclaration
   97736           0 :      SgDeclarationStatement* definingDeclaration_copy = p_definingDeclaration; 
   97737           0 :      result->p_definingDeclaration = definingDeclaration_copy; 
   97738             :   // Copy non-constructor parameter data member (no access function): result->p_firstNondefiningDeclaration
   97739             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for firstNondefiningDeclaration
   97740             :   // case: toBeCopied == COPY_DATA for firstNondefiningDeclaration
   97741           0 :      SgDeclarationStatement* firstNondefiningDeclaration_copy = p_firstNondefiningDeclaration; 
   97742           0 :      result->p_firstNondefiningDeclaration = firstNondefiningDeclaration_copy; 
   97743             :   // Copy non-constructor parameter data member (no access function): result->p_qualifiedNameList
   97744             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for qualifiedNameList
   97745             :   // case: toBeCopied == COPY_DATA for qualifiedNameList
   97746           0 :      SgQualifiedNamePtrList qualifiedNameList_copy = p_qualifiedNameList; 
   97747           0 :      result->p_qualifiedNameList = qualifiedNameList_copy; 
   97748             :   // Copy non-constructor parameter data member (access function): binding_label_copy
   97749             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for binding_label
   97750             :   // case: toBeCopied == COPY_DATA for binding_label
   97751           0 :      std::string binding_label_copy = p_binding_label; 
   97752           0 :      result->p_binding_label = binding_label_copy; 
   97753             :   // Copy non-constructor parameter data member (access function): declarationScope_copy
   97754             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declarationScope
   97755             :   // case: toBeCopied == COPY_DATA for declarationScope
   97756           0 :      SgDeclarationScope* declarationScope_copy = p_declarationScope; 
   97757           0 :      result->p_declarationScope = declarationScope_copy; 
   97758             :   // Copy non-constructor parameter data member (access function): unparse_template_ast_copy
   97759             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unparse_template_ast
   97760             :   // case: toBeCopied == COPY_DATA for unparse_template_ast
   97761           0 :      bool unparse_template_ast_copy = p_unparse_template_ast; 
   97762           0 :      result->p_unparse_template_ast = unparse_template_ast_copy; 
   97763             : 
   97764             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   97765             : 
   97766             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   97767             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   97768             :   // fixupCopy(result,help);
   97769             : 
   97770             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   97771             :   // the Sg_File_Info objects that are built for the new IR nodes.
   97772           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   97773           0 :      if (locatedNode != NULL)
   97774             :         {
   97775             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   97776           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   97777           0 :           ROSE_ASSERT(start != NULL);
   97778             : #if 0
   97779             :        // Debugging information
   97780             :           if (start->get_parent() == NULL)
   97781             :              {
   97782             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97783             :              }
   97784             : #endif
   97785           0 :           start->set_parent(locatedNode);
   97786           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   97787             : 
   97788           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   97789             : 
   97790             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   97791             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   97792             :        // ROSE_ASSERT(end != NULL);
   97793           0 :           if (end == NULL)
   97794             :              {
   97795           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   97796             :              }
   97797             :             else
   97798             :              {
   97799             : #if 0
   97800             :             // Debugging information
   97801             :                if (end->get_parent() == NULL)
   97802             :                   {
   97803             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97804             :                   }
   97805             : #endif
   97806           0 :                end->set_parent(locatedNode);
   97807           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   97808             :              }
   97809             : 
   97810           0 :           SgExpression* expression = isSgExpression(result);
   97811           0 :           if (isSgExpression(this) != NULL)
   97812             :              {
   97813           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   97814             : 
   97815             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   97816           0 :                if (operatorPosition != NULL)
   97817             :                   {
   97818             : #if 0
   97819             :                  // Debugging information
   97820             :                     if (operatorPosition->get_parent() == NULL)
   97821             :                        {
   97822             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97823             :                        }
   97824             : #endif
   97825           0 :                     operatorPosition->set_parent(expression);
   97826           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   97827             :                   }
   97828             :              }
   97829             :         }
   97830             : 
   97831             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   97832           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   97833           0 :      if (initializedName != NULL)
   97834             :         {
   97835             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   97836           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   97837           0 :           ROSE_ASSERT(start != NULL);
   97838             : #if 0
   97839             :        // Debugging information
   97840             :           if (start->get_parent() == NULL)
   97841             :              {
   97842             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97843             :              }
   97844             : #endif
   97845           0 :           start->set_parent(initializedName);
   97846           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   97847             : 
   97848             : #if 0
   97849             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   97850             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   97851             : 
   97852             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   97853             :        // ROSE_ASSERT(end != NULL);
   97854             :           if (end == NULL)
   97855             :              {
   97856             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   97857             :              }
   97858             :             else
   97859             :              {
   97860             :                if (end->get_parent() == NULL)
   97861             :                   {
   97862             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   97863             :                   }
   97864             :                end->set_parent(initializedName);
   97865             :                ROSE_ASSERT(end->get_parent() != NULL);
   97866             :              }
   97867             : #endif
   97868             :         }
   97869             : 
   97870             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   97871           0 :      help.insertCopiedNodePair(this,result);
   97872             : 
   97873             :   // printf ("End of copy SgEmptyDeclaration = %p = %s \n",this,SageInterface::get_name(this).c_str());
   97874             : 
   97875             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   97876             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   97877           0 :      help.decrementDepth();
   97878             : 
   97879             :   // Test if this is the root of the copy!
   97880           0 :      if (help.get_depth() == 0)
   97881             :         {
   97882             :        // This is the original calling node.
   97883             : 
   97884             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   97885             :        // printf ("Calling SgEmptyDeclaration::fixupCopy() (from root of AST being copied) \n");
   97886             : #if ALT_FIXUP_COPY
   97887             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   97888           0 :           fixupCopy_scopes (result,help);
   97889           0 :           fixupCopy_symbols (result,help);
   97890           0 :           fixupCopy_references (result,help);
   97891             : #else
   97892             :           fixupCopy(result,help);
   97893             : #endif
   97894             :        // Allow this to be called recursively, so accumulate the state.
   97895             :        // Also, clear the state in the SgCopyHelp object.
   97896             :        // help.clearState();
   97897             :         }
   97898             : 
   97899           0 :      return result;
   97900             :    }
   97901             : 
   97902             : 
   97903             : /* #line 97904 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   97904             : 
   97905             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   97906             : 
   97907          19 : SgNode* SgExprStatement::copy ( SgCopyHelp& help) const
   97908             :    {
   97909          19 :      SgExprStatement* result = NULL;
   97910             : 
   97911             :   // printf ("Copy SgExprStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   97912             : 
   97913             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   97914             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   97915             :   // The default value of the depth is 0, so after this call the depth is 1!
   97916          19 :      help.incrementDepth();
   97917             : 
   97918             : #if 0
   97919             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   97920             :   // but it is not generally true that things can only be copied once!
   97921             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   97922             :   // AstAttribute* existingAttribute = const_cast<SgExprStatement*>(this)->attribute["copied"];
   97923             :      bool previouslyCopied = const_cast<SgExprStatement*>(this)->attribute.exists("copied");
   97924             :      if (previouslyCopied == true)
   97925             :         {
   97926             :           this->get_file_info()->display("Called from copy SgExprStatement: debug");
   97927             :         }
   97928             :      ROSE_ASSERT(previouslyCopied == false);
   97929             : 
   97930             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   97931             :      AstAttribute* newAttribute = new AstAttribute();
   97932             :      ROSE_ASSERT(newAttribute != NULL);
   97933             : 
   97934             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   97935             :      const_cast<SgExprStatement*>(this)->attribute.add("copied",newAttribute);
   97936             : #endif
   97937             : 
   97938             :   // Copy data members from base classes
   97939             :   // Copy constructor parameter data member: startOfConstruct_copy
   97940             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   97941             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   97942          19 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   97943          19 :      if ( p_startOfConstruct != NULL ) 
   97944             :         { 
   97945          19 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   97946             :         } 
   97947             :        else 
   97948             :         { 
   97949             :           startOfConstruct_copy = NULL; 
   97950             :         } 
   97951             :   // Copy constructor parameter data member: expression_copy
   97952          19 :      SgExpression* expression_copy; 
   97953             :   // case: not a listType for (using conditionalToCopyVariable)expression
   97954          19 :           if (get_expression() != NULL) 
   97955             :              { 
   97956          19 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   97957             :              } 
   97958             :             else 
   97959             :              { 
   97960             :                expression_copy = NULL; 
   97961             :              } 
   97962             :  
   97963             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   97964             : 
   97965             :   // Build an empty copy of this object (will be filled in, but 
   97966             :   // the parent can't be set and must be set by the caller)
   97967          19 :      result = new SgExprStatement(  startOfConstruct_copy, expression_copy );
   97968          19 :      ROSE_ASSERT(result != NULL);
   97969             : 
   97970             :   // Copy data members of "this" class
   97971             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   97972             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   97973             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   97974          19 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   97975          19 :      if ( p_endOfConstruct != NULL ) 
   97976             :         { 
   97977          19 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   97978             :         } 
   97979             :        else 
   97980             :         { 
   97981             :           endOfConstruct_copy = NULL; 
   97982             :         } 
   97983             :   /* check for a valid pointer and delete if present */ 
   97984          19 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   97985             :   /* add assignment to result here */ 
   97986          19 :      result->p_endOfConstruct = endOfConstruct_copy; 
   97987             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   97988             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   97989             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   97990          19 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   97991          19 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   97992             :         { 
   97993           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   97994             :         } 
   97995             :        else 
   97996             :         { 
   97997             :           attachedPreprocessingInfoPtr_copy = NULL; 
   97998             :         } 
   97999             :   /* check for a valid pointer and delete if present */ 
   98000          19 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   98001             :   /* add assignment to result here */ 
   98002          19 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   98003             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   98004             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   98005             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   98006          19 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   98007          19 :      if ( p_attributeMechanism != NULL ) 
   98008             :         { 
   98009           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   98010             :         } 
   98011             :        else 
   98012             :         { 
   98013             :           attributeMechanism_copy = NULL; 
   98014             :         } 
   98015             :   /* check for a valid pointer and delete if present */ 
   98016          19 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   98017             :   /* add assignment to result here */ 
   98018          19 :      result->p_attributeMechanism = attributeMechanism_copy; 
   98019             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   98020             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   98021             :   // case: toBeCopied == COPY_DATA for numeric_label
   98022          19 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   98023          19 :      result->p_numeric_label = numeric_label_copy; 
   98024             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   98025             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   98026             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   98027          19 :      int source_sequence_value_copy = p_source_sequence_value; 
   98028          19 :      result->p_source_sequence_value = source_sequence_value_copy; 
   98029             :   // case: not a listType for (using conditionalToSetParent)expression
   98030          19 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
   98031             :              { 
   98032           0 :                expression_copy->set_parent(result); 
   98033             :              } 
   98034             : 
   98035             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98036             : 
   98037             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   98038             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   98039             :   // fixupCopy(result,help);
   98040             : 
   98041             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   98042             :   // the Sg_File_Info objects that are built for the new IR nodes.
   98043          19 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   98044          19 :      if (locatedNode != NULL)
   98045             :         {
   98046             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   98047          19 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   98048          19 :           ROSE_ASSERT(start != NULL);
   98049             : #if 0
   98050             :        // Debugging information
   98051             :           if (start->get_parent() == NULL)
   98052             :              {
   98053             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98054             :              }
   98055             : #endif
   98056          19 :           start->set_parent(locatedNode);
   98057          19 :           ROSE_ASSERT(start->get_parent() != NULL);
   98058             : 
   98059          19 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   98060             : 
   98061             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   98062             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   98063             :        // ROSE_ASSERT(end != NULL);
   98064          19 :           if (end == NULL)
   98065             :              {
   98066           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   98067             :              }
   98068             :             else
   98069             :              {
   98070             : #if 0
   98071             :             // Debugging information
   98072             :                if (end->get_parent() == NULL)
   98073             :                   {
   98074             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98075             :                   }
   98076             : #endif
   98077          19 :                end->set_parent(locatedNode);
   98078          19 :                ROSE_ASSERT(end->get_parent() != NULL);
   98079             :              }
   98080             : 
   98081          19 :           SgExpression* expression = isSgExpression(result);
   98082          19 :           if (isSgExpression(this) != NULL)
   98083             :              {
   98084           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   98085             : 
   98086             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   98087           0 :                if (operatorPosition != NULL)
   98088             :                   {
   98089             : #if 0
   98090             :                  // Debugging information
   98091             :                     if (operatorPosition->get_parent() == NULL)
   98092             :                        {
   98093             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98094             :                        }
   98095             : #endif
   98096           0 :                     operatorPosition->set_parent(expression);
   98097           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   98098             :                   }
   98099             :              }
   98100             :         }
   98101             : 
   98102             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   98103          19 :      SgInitializedName* initializedName = isSgInitializedName(result);
   98104          19 :      if (initializedName != NULL)
   98105             :         {
   98106             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   98107           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   98108           0 :           ROSE_ASSERT(start != NULL);
   98109             : #if 0
   98110             :        // Debugging information
   98111             :           if (start->get_parent() == NULL)
   98112             :              {
   98113             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98114             :              }
   98115             : #endif
   98116           0 :           start->set_parent(initializedName);
   98117           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   98118             : 
   98119             : #if 0
   98120             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   98121             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   98122             : 
   98123             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   98124             :        // ROSE_ASSERT(end != NULL);
   98125             :           if (end == NULL)
   98126             :              {
   98127             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   98128             :              }
   98129             :             else
   98130             :              {
   98131             :                if (end->get_parent() == NULL)
   98132             :                   {
   98133             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98134             :                   }
   98135             :                end->set_parent(initializedName);
   98136             :                ROSE_ASSERT(end->get_parent() != NULL);
   98137             :              }
   98138             : #endif
   98139             :         }
   98140             : 
   98141             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   98142          19 :      help.insertCopiedNodePair(this,result);
   98143             : 
   98144             :   // printf ("End of copy SgExprStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   98145             : 
   98146             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   98147             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   98148          19 :      help.decrementDepth();
   98149             : 
   98150             :   // Test if this is the root of the copy!
   98151          19 :      if (help.get_depth() == 0)
   98152             :         {
   98153             :        // This is the original calling node.
   98154             : 
   98155             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   98156             :        // printf ("Calling SgExprStatement::fixupCopy() (from root of AST being copied) \n");
   98157             : #if ALT_FIXUP_COPY
   98158             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   98159           2 :           fixupCopy_scopes (result,help);
   98160           2 :           fixupCopy_symbols (result,help);
   98161           2 :           fixupCopy_references (result,help);
   98162             : #else
   98163             :           fixupCopy(result,help);
   98164             : #endif
   98165             :        // Allow this to be called recursively, so accumulate the state.
   98166             :        // Also, clear the state in the SgCopyHelp object.
   98167             :        // help.clearState();
   98168             :         }
   98169             : 
   98170          19 :      return result;
   98171             :    }
   98172             : 
   98173             : 
   98174             : /* #line 98175 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   98175             : 
   98176             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98177             : 
   98178           0 : SgNode* SgLabelStatement::copy ( SgCopyHelp& help) const
   98179             :    {
   98180           0 :      SgLabelStatement* result = NULL;
   98181             : 
   98182             :   // printf ("Copy SgLabelStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   98183             : 
   98184             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   98185             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   98186             :   // The default value of the depth is 0, so after this call the depth is 1!
   98187           0 :      help.incrementDepth();
   98188             : 
   98189             : #if 0
   98190             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   98191             :   // but it is not generally true that things can only be copied once!
   98192             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   98193             :   // AstAttribute* existingAttribute = const_cast<SgLabelStatement*>(this)->attribute["copied"];
   98194             :      bool previouslyCopied = const_cast<SgLabelStatement*>(this)->attribute.exists("copied");
   98195             :      if (previouslyCopied == true)
   98196             :         {
   98197             :           this->get_file_info()->display("Called from copy SgLabelStatement: debug");
   98198             :         }
   98199             :      ROSE_ASSERT(previouslyCopied == false);
   98200             : 
   98201             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   98202             :      AstAttribute* newAttribute = new AstAttribute();
   98203             :      ROSE_ASSERT(newAttribute != NULL);
   98204             : 
   98205             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   98206             :      const_cast<SgLabelStatement*>(this)->attribute.add("copied",newAttribute);
   98207             : #endif
   98208             : 
   98209             :   // Copy data members from base classes
   98210             :   // Copy constructor parameter data member: startOfConstruct_copy
   98211             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   98212             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   98213           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   98214           0 :      if ( p_startOfConstruct != NULL ) 
   98215             :         { 
   98216           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   98217             :         } 
   98218             :        else 
   98219             :         { 
   98220             :           startOfConstruct_copy = NULL; 
   98221             :         } 
   98222             :   // Copy constructor parameter data member: label_copy
   98223             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for label
   98224             :   // case: toBeCopied == COPY_DATA for label
   98225           0 :      SgName label_copy = p_label; 
   98226             :   // Copy constructor parameter data member: statement_copy
   98227           0 :      SgStatement* statement_copy; 
   98228             :   // case: not a listType for (using conditionalToCopyVariable)statement
   98229           0 :           if (get_statement() != NULL) 
   98230             :              { 
   98231           0 :                statement_copy = static_cast<SgStatement*>(help.copyAst(get_statement())); 
   98232             :              } 
   98233             :             else 
   98234             :              { 
   98235             :                statement_copy = NULL; 
   98236             :              } 
   98237             :  
   98238             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98239             : 
   98240             :   // Build an empty copy of this object (will be filled in, but 
   98241             :   // the parent can't be set and must be set by the caller)
   98242           0 :      result = new SgLabelStatement(  startOfConstruct_copy, label_copy, statement_copy );
   98243           0 :      ROSE_ASSERT(result != NULL);
   98244             : 
   98245             :   // Copy data members of "this" class
   98246             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   98247             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   98248             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   98249           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   98250           0 :      if ( p_endOfConstruct != NULL ) 
   98251             :         { 
   98252           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   98253             :         } 
   98254             :        else 
   98255             :         { 
   98256             :           endOfConstruct_copy = NULL; 
   98257             :         } 
   98258             :   /* check for a valid pointer and delete if present */ 
   98259           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   98260             :   /* add assignment to result here */ 
   98261           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   98262             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   98263             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   98264             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   98265           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   98266           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   98267             :         { 
   98268           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   98269             :         } 
   98270             :        else 
   98271             :         { 
   98272             :           attachedPreprocessingInfoPtr_copy = NULL; 
   98273             :         } 
   98274             :   /* check for a valid pointer and delete if present */ 
   98275           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   98276             :   /* add assignment to result here */ 
   98277           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   98278             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   98279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   98280             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   98281           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   98282           0 :      if ( p_attributeMechanism != NULL ) 
   98283             :         { 
   98284           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   98285             :         } 
   98286             :        else 
   98287             :         { 
   98288             :           attributeMechanism_copy = NULL; 
   98289             :         } 
   98290             :   /* check for a valid pointer and delete if present */ 
   98291           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   98292             :   /* add assignment to result here */ 
   98293           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   98294             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   98295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   98296             :   // case: toBeCopied == COPY_DATA for numeric_label
   98297           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   98298           0 :      result->p_numeric_label = numeric_label_copy; 
   98299             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   98300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   98301             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   98302           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   98303           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   98304             :   // Copy non-constructor parameter data member (access function): scope_copy
   98305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for scope
   98306             :   // case: toBeCopied == COPY_DATA for scope
   98307           0 :      SgScopeStatement* scope_copy = p_scope; 
   98308           0 :      result->p_scope = scope_copy; 
   98309             :   // Copy non-constructor parameter data member (access function): gnu_extension_unused_copy
   98310             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for gnu_extension_unused
   98311             :   // case: toBeCopied == COPY_DATA for gnu_extension_unused
   98312           0 :      bool gnu_extension_unused_copy = p_gnu_extension_unused; 
   98313           0 :      result->p_gnu_extension_unused = gnu_extension_unused_copy; 
   98314             :   // case: not a listType for (using conditionalToSetParent)statement
   98315           0 :           if ( (statement_copy != NULL) && (statement_copy->get_parent() == NULL) && (isSgType(statement_copy) == NULL) ) 
   98316             :              { 
   98317           0 :                statement_copy->set_parent(result); 
   98318             :              } 
   98319             : 
   98320             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98321             : 
   98322             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   98323             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   98324             :   // fixupCopy(result,help);
   98325             : 
   98326             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   98327             :   // the Sg_File_Info objects that are built for the new IR nodes.
   98328           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   98329           0 :      if (locatedNode != NULL)
   98330             :         {
   98331             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   98332           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   98333           0 :           ROSE_ASSERT(start != NULL);
   98334             : #if 0
   98335             :        // Debugging information
   98336             :           if (start->get_parent() == NULL)
   98337             :              {
   98338             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98339             :              }
   98340             : #endif
   98341           0 :           start->set_parent(locatedNode);
   98342           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   98343             : 
   98344           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   98345             : 
   98346             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   98347             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   98348             :        // ROSE_ASSERT(end != NULL);
   98349           0 :           if (end == NULL)
   98350             :              {
   98351           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   98352             :              }
   98353             :             else
   98354             :              {
   98355             : #if 0
   98356             :             // Debugging information
   98357             :                if (end->get_parent() == NULL)
   98358             :                   {
   98359             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98360             :                   }
   98361             : #endif
   98362           0 :                end->set_parent(locatedNode);
   98363           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   98364             :              }
   98365             : 
   98366           0 :           SgExpression* expression = isSgExpression(result);
   98367           0 :           if (isSgExpression(this) != NULL)
   98368             :              {
   98369           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   98370             : 
   98371             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   98372           0 :                if (operatorPosition != NULL)
   98373             :                   {
   98374             : #if 0
   98375             :                  // Debugging information
   98376             :                     if (operatorPosition->get_parent() == NULL)
   98377             :                        {
   98378             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98379             :                        }
   98380             : #endif
   98381           0 :                     operatorPosition->set_parent(expression);
   98382           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   98383             :                   }
   98384             :              }
   98385             :         }
   98386             : 
   98387             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   98388           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   98389           0 :      if (initializedName != NULL)
   98390             :         {
   98391             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   98392           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   98393           0 :           ROSE_ASSERT(start != NULL);
   98394             : #if 0
   98395             :        // Debugging information
   98396             :           if (start->get_parent() == NULL)
   98397             :              {
   98398             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98399             :              }
   98400             : #endif
   98401           0 :           start->set_parent(initializedName);
   98402           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   98403             : 
   98404             : #if 0
   98405             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   98406             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   98407             : 
   98408             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   98409             :        // ROSE_ASSERT(end != NULL);
   98410             :           if (end == NULL)
   98411             :              {
   98412             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   98413             :              }
   98414             :             else
   98415             :              {
   98416             :                if (end->get_parent() == NULL)
   98417             :                   {
   98418             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98419             :                   }
   98420             :                end->set_parent(initializedName);
   98421             :                ROSE_ASSERT(end->get_parent() != NULL);
   98422             :              }
   98423             : #endif
   98424             :         }
   98425             : 
   98426             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   98427           0 :      help.insertCopiedNodePair(this,result);
   98428             : 
   98429             :   // printf ("End of copy SgLabelStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
   98430             : 
   98431             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   98432             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   98433           0 :      help.decrementDepth();
   98434             : 
   98435             :   // Test if this is the root of the copy!
   98436           0 :      if (help.get_depth() == 0)
   98437             :         {
   98438             :        // This is the original calling node.
   98439             : 
   98440             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   98441             :        // printf ("Calling SgLabelStatement::fixupCopy() (from root of AST being copied) \n");
   98442             : #if ALT_FIXUP_COPY
   98443             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   98444           0 :           fixupCopy_scopes (result,help);
   98445           0 :           fixupCopy_symbols (result,help);
   98446           0 :           fixupCopy_references (result,help);
   98447             : #else
   98448             :           fixupCopy(result,help);
   98449             : #endif
   98450             :        // Allow this to be called recursively, so accumulate the state.
   98451             :        // Also, clear the state in the SgCopyHelp object.
   98452             :        // help.clearState();
   98453             :         }
   98454             : 
   98455           0 :      return result;
   98456             :    }
   98457             : 
   98458             : 
   98459             : /* #line 98460 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   98460             : 
   98461             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98462             : 
   98463           0 : SgNode* SgCaseOptionStmt::copy ( SgCopyHelp& help) const
   98464             :    {
   98465           0 :      SgCaseOptionStmt* result = NULL;
   98466             : 
   98467             :   // printf ("Copy SgCaseOptionStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   98468             : 
   98469             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   98470             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   98471             :   // The default value of the depth is 0, so after this call the depth is 1!
   98472           0 :      help.incrementDepth();
   98473             : 
   98474             : #if 0
   98475             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   98476             :   // but it is not generally true that things can only be copied once!
   98477             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   98478             :   // AstAttribute* existingAttribute = const_cast<SgCaseOptionStmt*>(this)->attribute["copied"];
   98479             :      bool previouslyCopied = const_cast<SgCaseOptionStmt*>(this)->attribute.exists("copied");
   98480             :      if (previouslyCopied == true)
   98481             :         {
   98482             :           this->get_file_info()->display("Called from copy SgCaseOptionStmt: debug");
   98483             :         }
   98484             :      ROSE_ASSERT(previouslyCopied == false);
   98485             : 
   98486             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   98487             :      AstAttribute* newAttribute = new AstAttribute();
   98488             :      ROSE_ASSERT(newAttribute != NULL);
   98489             : 
   98490             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   98491             :      const_cast<SgCaseOptionStmt*>(this)->attribute.add("copied",newAttribute);
   98492             : #endif
   98493             : 
   98494             :   // Copy data members from base classes
   98495             :   // Copy constructor parameter data member: startOfConstruct_copy
   98496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   98497             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   98498           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   98499           0 :      if ( p_startOfConstruct != NULL ) 
   98500             :         { 
   98501           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   98502             :         } 
   98503             :        else 
   98504             :         { 
   98505             :           startOfConstruct_copy = NULL; 
   98506             :         } 
   98507             :   // Copy constructor parameter data member: key_copy
   98508           0 :      SgExpression* key_copy; 
   98509             :   // case: not a listType for (using conditionalToCopyVariable)key
   98510           0 :           if (get_key() != NULL) 
   98511             :              { 
   98512           0 :                key_copy = static_cast<SgExpression*>(help.copyAst(get_key())); 
   98513             :              } 
   98514             :             else 
   98515             :              { 
   98516             :                key_copy = NULL; 
   98517             :              } 
   98518             :   // Copy constructor parameter data member: body_copy
   98519           0 :      SgStatement* body_copy; 
   98520             :   // case: not a listType for (using conditionalToCopyVariable)body
   98521           0 :           if (get_body() != NULL) 
   98522             :              { 
   98523           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
   98524             :              } 
   98525             :             else 
   98526             :              { 
   98527             :                body_copy = NULL; 
   98528             :              } 
   98529             :  
   98530             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98531             : 
   98532             :   // Build an empty copy of this object (will be filled in, but 
   98533             :   // the parent can't be set and must be set by the caller)
   98534           0 :      result = new SgCaseOptionStmt(  startOfConstruct_copy, key_copy, body_copy );
   98535           0 :      ROSE_ASSERT(result != NULL);
   98536             : 
   98537             :   // Copy data members of "this" class
   98538             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   98539             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   98540             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   98541           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   98542           0 :      if ( p_endOfConstruct != NULL ) 
   98543             :         { 
   98544           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   98545             :         } 
   98546             :        else 
   98547             :         { 
   98548             :           endOfConstruct_copy = NULL; 
   98549             :         } 
   98550             :   /* check for a valid pointer and delete if present */ 
   98551           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   98552             :   /* add assignment to result here */ 
   98553           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   98554             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   98555             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   98556             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   98557           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   98558           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   98559             :         { 
   98560           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   98561             :         } 
   98562             :        else 
   98563             :         { 
   98564             :           attachedPreprocessingInfoPtr_copy = NULL; 
   98565             :         } 
   98566             :   /* check for a valid pointer and delete if present */ 
   98567           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   98568             :   /* add assignment to result here */ 
   98569           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   98570             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   98571             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   98572             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   98573           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   98574           0 :      if ( p_attributeMechanism != NULL ) 
   98575             :         { 
   98576           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   98577             :         } 
   98578             :        else 
   98579             :         { 
   98580             :           attributeMechanism_copy = NULL; 
   98581             :         } 
   98582             :   /* check for a valid pointer and delete if present */ 
   98583           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   98584             :   /* add assignment to result here */ 
   98585           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   98586             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   98587             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   98588             :   // case: toBeCopied == COPY_DATA for numeric_label
   98589           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   98590           0 :      result->p_numeric_label = numeric_label_copy; 
   98591             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   98592             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   98593             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   98594           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   98595           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   98596             :   // Copy non-constructor parameter data member (access function): key_range_end_copy
   98597           0 :      SgExpression* key_range_end_copy; 
   98598             :   // case: not a listType for (using conditionalToCopyVariable)key_range_end
   98599           0 :           if (get_key_range_end() != NULL) 
   98600             :              { 
   98601           0 :                key_range_end_copy = static_cast<SgExpression*>(help.copyAst(get_key_range_end())); 
   98602             :              } 
   98603             :             else 
   98604             :              { 
   98605             :                key_range_end_copy = NULL; 
   98606             :              } 
   98607             :   /* check for a valid pointer and delete if present */ 
   98608           0 :      if (result->p_key_range_end != NULL) delete result->p_key_range_end; 
   98609           0 :      result->p_key_range_end = key_range_end_copy; 
   98610             :   // case: not a listType for (using conditionalToSetParent)key_range_end
   98611           0 :           if ( (key_range_end_copy != NULL) && (key_range_end_copy->get_parent() == NULL) && (isSgType(key_range_end_copy) == NULL) ) 
   98612             :              { 
   98613           0 :                key_range_end_copy->set_parent(result); 
   98614             :              } 
   98615             :   // Copy non-constructor parameter data member (access function): case_construct_name_copy
   98616             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for case_construct_name
   98617             :   // case: toBeCopied == COPY_DATA for case_construct_name
   98618           0 :      std::string case_construct_name_copy = p_case_construct_name; 
   98619           0 :      result->p_case_construct_name = case_construct_name_copy; 
   98620             :   // case: not a listType for (using conditionalToSetParent)key
   98621           0 :           if ( (key_copy != NULL) && (key_copy->get_parent() == NULL) && (isSgType(key_copy) == NULL) ) 
   98622             :              { 
   98623           0 :                key_copy->set_parent(result); 
   98624             :              } 
   98625             :   // case: not a listType for (using conditionalToSetParent)body
   98626           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   98627             :              { 
   98628           0 :                body_copy->set_parent(result); 
   98629             :              } 
   98630             : 
   98631             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98632             : 
   98633             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   98634             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   98635             :   // fixupCopy(result,help);
   98636             : 
   98637             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   98638             :   // the Sg_File_Info objects that are built for the new IR nodes.
   98639           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   98640           0 :      if (locatedNode != NULL)
   98641             :         {
   98642             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   98643           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   98644           0 :           ROSE_ASSERT(start != NULL);
   98645             : #if 0
   98646             :        // Debugging information
   98647             :           if (start->get_parent() == NULL)
   98648             :              {
   98649             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98650             :              }
   98651             : #endif
   98652           0 :           start->set_parent(locatedNode);
   98653           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   98654             : 
   98655           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   98656             : 
   98657             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   98658             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   98659             :        // ROSE_ASSERT(end != NULL);
   98660           0 :           if (end == NULL)
   98661             :              {
   98662           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   98663             :              }
   98664             :             else
   98665             :              {
   98666             : #if 0
   98667             :             // Debugging information
   98668             :                if (end->get_parent() == NULL)
   98669             :                   {
   98670             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98671             :                   }
   98672             : #endif
   98673           0 :                end->set_parent(locatedNode);
   98674           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   98675             :              }
   98676             : 
   98677           0 :           SgExpression* expression = isSgExpression(result);
   98678           0 :           if (isSgExpression(this) != NULL)
   98679             :              {
   98680           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   98681             : 
   98682             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   98683           0 :                if (operatorPosition != NULL)
   98684             :                   {
   98685             : #if 0
   98686             :                  // Debugging information
   98687             :                     if (operatorPosition->get_parent() == NULL)
   98688             :                        {
   98689             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98690             :                        }
   98691             : #endif
   98692           0 :                     operatorPosition->set_parent(expression);
   98693           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   98694             :                   }
   98695             :              }
   98696             :         }
   98697             : 
   98698             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   98699           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   98700           0 :      if (initializedName != NULL)
   98701             :         {
   98702             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   98703           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   98704           0 :           ROSE_ASSERT(start != NULL);
   98705             : #if 0
   98706             :        // Debugging information
   98707             :           if (start->get_parent() == NULL)
   98708             :              {
   98709             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98710             :              }
   98711             : #endif
   98712           0 :           start->set_parent(initializedName);
   98713           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   98714             : 
   98715             : #if 0
   98716             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   98717             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   98718             : 
   98719             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   98720             :        // ROSE_ASSERT(end != NULL);
   98721             :           if (end == NULL)
   98722             :              {
   98723             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   98724             :              }
   98725             :             else
   98726             :              {
   98727             :                if (end->get_parent() == NULL)
   98728             :                   {
   98729             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98730             :                   }
   98731             :                end->set_parent(initializedName);
   98732             :                ROSE_ASSERT(end->get_parent() != NULL);
   98733             :              }
   98734             : #endif
   98735             :         }
   98736             : 
   98737             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   98738           0 :      help.insertCopiedNodePair(this,result);
   98739             : 
   98740             :   // printf ("End of copy SgCaseOptionStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   98741             : 
   98742             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   98743             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   98744           0 :      help.decrementDepth();
   98745             : 
   98746             :   // Test if this is the root of the copy!
   98747           0 :      if (help.get_depth() == 0)
   98748             :         {
   98749             :        // This is the original calling node.
   98750             : 
   98751             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   98752             :        // printf ("Calling SgCaseOptionStmt::fixupCopy() (from root of AST being copied) \n");
   98753             : #if ALT_FIXUP_COPY
   98754             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   98755           0 :           fixupCopy_scopes (result,help);
   98756           0 :           fixupCopy_symbols (result,help);
   98757           0 :           fixupCopy_references (result,help);
   98758             : #else
   98759             :           fixupCopy(result,help);
   98760             : #endif
   98761             :        // Allow this to be called recursively, so accumulate the state.
   98762             :        // Also, clear the state in the SgCopyHelp object.
   98763             :        // help.clearState();
   98764             :         }
   98765             : 
   98766           0 :      return result;
   98767             :    }
   98768             : 
   98769             : 
   98770             : /* #line 98771 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   98771             : 
   98772             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98773             : 
   98774           0 : SgNode* SgTryStmt::copy ( SgCopyHelp& help) const
   98775             :    {
   98776           0 :      SgTryStmt* result = NULL;
   98777             : 
   98778             :   // printf ("Copy SgTryStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   98779             : 
   98780             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   98781             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   98782             :   // The default value of the depth is 0, so after this call the depth is 1!
   98783           0 :      help.incrementDepth();
   98784             : 
   98785             : #if 0
   98786             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   98787             :   // but it is not generally true that things can only be copied once!
   98788             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   98789             :   // AstAttribute* existingAttribute = const_cast<SgTryStmt*>(this)->attribute["copied"];
   98790             :      bool previouslyCopied = const_cast<SgTryStmt*>(this)->attribute.exists("copied");
   98791             :      if (previouslyCopied == true)
   98792             :         {
   98793             :           this->get_file_info()->display("Called from copy SgTryStmt: debug");
   98794             :         }
   98795             :      ROSE_ASSERT(previouslyCopied == false);
   98796             : 
   98797             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   98798             :      AstAttribute* newAttribute = new AstAttribute();
   98799             :      ROSE_ASSERT(newAttribute != NULL);
   98800             : 
   98801             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   98802             :      const_cast<SgTryStmt*>(this)->attribute.add("copied",newAttribute);
   98803             : #endif
   98804             : 
   98805             :   // Copy data members from base classes
   98806             :   // Copy constructor parameter data member: startOfConstruct_copy
   98807             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   98808             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   98809           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   98810           0 :      if ( p_startOfConstruct != NULL ) 
   98811             :         { 
   98812           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   98813             :         } 
   98814             :        else 
   98815             :         { 
   98816             :           startOfConstruct_copy = NULL; 
   98817             :         } 
   98818             :   // Copy constructor parameter data member: body_copy
   98819           0 :      SgStatement* body_copy; 
   98820             :   // case: not a listType for (using conditionalToCopyVariable)body
   98821           0 :           if (get_body() != NULL) 
   98822             :              { 
   98823           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
   98824             :              } 
   98825             :             else 
   98826             :              { 
   98827             :                body_copy = NULL; 
   98828             :              } 
   98829             :  
   98830             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98831             : 
   98832             :   // Build an empty copy of this object (will be filled in, but 
   98833             :   // the parent can't be set and must be set by the caller)
   98834           0 :      result = new SgTryStmt(  startOfConstruct_copy, body_copy );
   98835           0 :      ROSE_ASSERT(result != NULL);
   98836             : 
   98837             :   // Copy data members of "this" class
   98838             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   98839             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   98840             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   98841           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   98842           0 :      if ( p_endOfConstruct != NULL ) 
   98843             :         { 
   98844           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   98845             :         } 
   98846             :        else 
   98847             :         { 
   98848             :           endOfConstruct_copy = NULL; 
   98849             :         } 
   98850             :   /* check for a valid pointer and delete if present */ 
   98851           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   98852             :   /* add assignment to result here */ 
   98853           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   98854             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   98855             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   98856             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   98857           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   98858           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   98859             :         { 
   98860           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   98861             :         } 
   98862             :        else 
   98863             :         { 
   98864             :           attachedPreprocessingInfoPtr_copy = NULL; 
   98865             :         } 
   98866             :   /* check for a valid pointer and delete if present */ 
   98867           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   98868             :   /* add assignment to result here */ 
   98869           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   98870             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   98871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   98872             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   98873           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   98874           0 :      if ( p_attributeMechanism != NULL ) 
   98875             :         { 
   98876           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   98877             :         } 
   98878             :        else 
   98879             :         { 
   98880             :           attributeMechanism_copy = NULL; 
   98881             :         } 
   98882             :   /* check for a valid pointer and delete if present */ 
   98883           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   98884             :   /* add assignment to result here */ 
   98885           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   98886             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   98887             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   98888             :   // case: toBeCopied == COPY_DATA for numeric_label
   98889           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   98890           0 :      result->p_numeric_label = numeric_label_copy; 
   98891             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   98892             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   98893             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   98894           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   98895           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   98896             :   // Copy non-constructor parameter data member (access function): catch_statement_seq_root_copy
   98897           0 :      SgCatchStatementSeq* catch_statement_seq_root_copy; 
   98898             :   // case: not a listType for (using conditionalToCopyVariable)catch_statement_seq_root
   98899           0 :           if (get_catch_statement_seq_root() != NULL) 
   98900             :              { 
   98901           0 :                catch_statement_seq_root_copy = static_cast<SgCatchStatementSeq*>(help.copyAst(get_catch_statement_seq_root())); 
   98902             :              } 
   98903             :             else 
   98904             :              { 
   98905             :                catch_statement_seq_root_copy = NULL; 
   98906             :              } 
   98907             :   /* check for a valid pointer and delete if present */ 
   98908           0 :      if (result->p_catch_statement_seq_root != NULL) delete result->p_catch_statement_seq_root; 
   98909           0 :      result->p_catch_statement_seq_root = catch_statement_seq_root_copy; 
   98910             :   // case: not a listType for (using conditionalToSetParent)catch_statement_seq_root
   98911           0 :           if ( (catch_statement_seq_root_copy != NULL) && (catch_statement_seq_root_copy->get_parent() == NULL) && (isSgType(catch_statement_seq_root_copy) == NULL) ) 
   98912             :              { 
   98913           0 :                catch_statement_seq_root_copy->set_parent(result); 
   98914             :              } 
   98915             :   // Copy non-constructor parameter data member (access function): else_body_copy
   98916           0 :      SgStatement* else_body_copy; 
   98917             :   // case: not a listType for (using conditionalToCopyVariable)else_body
   98918           0 :           if (get_else_body() != NULL) 
   98919             :              { 
   98920           0 :                else_body_copy = static_cast<SgStatement*>(help.copyAst(get_else_body())); 
   98921             :              } 
   98922             :             else 
   98923             :              { 
   98924             :                else_body_copy = NULL; 
   98925             :              } 
   98926             :   /* check for a valid pointer and delete if present */ 
   98927           0 :      if (result->p_else_body != NULL) delete result->p_else_body; 
   98928           0 :      result->p_else_body = else_body_copy; 
   98929             :   // case: not a listType for (using conditionalToSetParent)else_body
   98930           0 :           if ( (else_body_copy != NULL) && (else_body_copy->get_parent() == NULL) && (isSgType(else_body_copy) == NULL) ) 
   98931             :              { 
   98932           0 :                else_body_copy->set_parent(result); 
   98933             :              } 
   98934             :   // Copy non-constructor parameter data member (access function): finally_body_copy
   98935           0 :      SgStatement* finally_body_copy; 
   98936             :   // case: not a listType for (using conditionalToCopyVariable)finally_body
   98937           0 :           if (get_finally_body() != NULL) 
   98938             :              { 
   98939           0 :                finally_body_copy = static_cast<SgStatement*>(help.copyAst(get_finally_body())); 
   98940             :              } 
   98941             :             else 
   98942             :              { 
   98943             :                finally_body_copy = NULL; 
   98944             :              } 
   98945             :   /* check for a valid pointer and delete if present */ 
   98946           0 :      if (result->p_finally_body != NULL) delete result->p_finally_body; 
   98947           0 :      result->p_finally_body = finally_body_copy; 
   98948             :   // case: not a listType for (using conditionalToSetParent)finally_body
   98949           0 :           if ( (finally_body_copy != NULL) && (finally_body_copy->get_parent() == NULL) && (isSgType(finally_body_copy) == NULL) ) 
   98950             :              { 
   98951           0 :                finally_body_copy->set_parent(result); 
   98952             :              } 
   98953             :   // case: not a listType for (using conditionalToSetParent)body
   98954           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   98955             :              { 
   98956           0 :                body_copy->set_parent(result); 
   98957             :              } 
   98958             : 
   98959             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   98960             : 
   98961             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   98962             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   98963             :   // fixupCopy(result,help);
   98964             : 
   98965             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   98966             :   // the Sg_File_Info objects that are built for the new IR nodes.
   98967           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   98968           0 :      if (locatedNode != NULL)
   98969             :         {
   98970             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   98971           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   98972           0 :           ROSE_ASSERT(start != NULL);
   98973             : #if 0
   98974             :        // Debugging information
   98975             :           if (start->get_parent() == NULL)
   98976             :              {
   98977             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98978             :              }
   98979             : #endif
   98980           0 :           start->set_parent(locatedNode);
   98981           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   98982             : 
   98983           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   98984             : 
   98985             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   98986             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   98987             :        // ROSE_ASSERT(end != NULL);
   98988           0 :           if (end == NULL)
   98989             :              {
   98990           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   98991             :              }
   98992             :             else
   98993             :              {
   98994             : #if 0
   98995             :             // Debugging information
   98996             :                if (end->get_parent() == NULL)
   98997             :                   {
   98998             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   98999             :                   }
   99000             : #endif
   99001           0 :                end->set_parent(locatedNode);
   99002           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   99003             :              }
   99004             : 
   99005           0 :           SgExpression* expression = isSgExpression(result);
   99006           0 :           if (isSgExpression(this) != NULL)
   99007             :              {
   99008           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   99009             : 
   99010             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   99011           0 :                if (operatorPosition != NULL)
   99012             :                   {
   99013             : #if 0
   99014             :                  // Debugging information
   99015             :                     if (operatorPosition->get_parent() == NULL)
   99016             :                        {
   99017             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99018             :                        }
   99019             : #endif
   99020           0 :                     operatorPosition->set_parent(expression);
   99021           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   99022             :                   }
   99023             :              }
   99024             :         }
   99025             : 
   99026             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   99027           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   99028           0 :      if (initializedName != NULL)
   99029             :         {
   99030             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   99031           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   99032           0 :           ROSE_ASSERT(start != NULL);
   99033             : #if 0
   99034             :        // Debugging information
   99035             :           if (start->get_parent() == NULL)
   99036             :              {
   99037             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99038             :              }
   99039             : #endif
   99040           0 :           start->set_parent(initializedName);
   99041           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   99042             : 
   99043             : #if 0
   99044             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   99045             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   99046             : 
   99047             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   99048             :        // ROSE_ASSERT(end != NULL);
   99049             :           if (end == NULL)
   99050             :              {
   99051             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   99052             :              }
   99053             :             else
   99054             :              {
   99055             :                if (end->get_parent() == NULL)
   99056             :                   {
   99057             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99058             :                   }
   99059             :                end->set_parent(initializedName);
   99060             :                ROSE_ASSERT(end->get_parent() != NULL);
   99061             :              }
   99062             : #endif
   99063             :         }
   99064             : 
   99065             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   99066           0 :      help.insertCopiedNodePair(this,result);
   99067             : 
   99068             :   // printf ("End of copy SgTryStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   99069             : 
   99070             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   99071             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   99072           0 :      help.decrementDepth();
   99073             : 
   99074             :   // Test if this is the root of the copy!
   99075           0 :      if (help.get_depth() == 0)
   99076             :         {
   99077             :        // This is the original calling node.
   99078             : 
   99079             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   99080             :        // printf ("Calling SgTryStmt::fixupCopy() (from root of AST being copied) \n");
   99081             : #if ALT_FIXUP_COPY
   99082             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   99083           0 :           fixupCopy_scopes (result,help);
   99084           0 :           fixupCopy_symbols (result,help);
   99085           0 :           fixupCopy_references (result,help);
   99086             : #else
   99087             :           fixupCopy(result,help);
   99088             : #endif
   99089             :        // Allow this to be called recursively, so accumulate the state.
   99090             :        // Also, clear the state in the SgCopyHelp object.
   99091             :        // help.clearState();
   99092             :         }
   99093             : 
   99094           0 :      return result;
   99095             :    }
   99096             : 
   99097             : 
   99098             : /* #line 99099 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   99099             : 
   99100             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99101             : 
   99102           0 : SgNode* SgDefaultOptionStmt::copy ( SgCopyHelp& help) const
   99103             :    {
   99104           0 :      SgDefaultOptionStmt* result = NULL;
   99105             : 
   99106             :   // printf ("Copy SgDefaultOptionStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   99107             : 
   99108             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   99109             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   99110             :   // The default value of the depth is 0, so after this call the depth is 1!
   99111           0 :      help.incrementDepth();
   99112             : 
   99113             : #if 0
   99114             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   99115             :   // but it is not generally true that things can only be copied once!
   99116             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   99117             :   // AstAttribute* existingAttribute = const_cast<SgDefaultOptionStmt*>(this)->attribute["copied"];
   99118             :      bool previouslyCopied = const_cast<SgDefaultOptionStmt*>(this)->attribute.exists("copied");
   99119             :      if (previouslyCopied == true)
   99120             :         {
   99121             :           this->get_file_info()->display("Called from copy SgDefaultOptionStmt: debug");
   99122             :         }
   99123             :      ROSE_ASSERT(previouslyCopied == false);
   99124             : 
   99125             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   99126             :      AstAttribute* newAttribute = new AstAttribute();
   99127             :      ROSE_ASSERT(newAttribute != NULL);
   99128             : 
   99129             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   99130             :      const_cast<SgDefaultOptionStmt*>(this)->attribute.add("copied",newAttribute);
   99131             : #endif
   99132             : 
   99133             :   // Copy data members from base classes
   99134             :   // Copy constructor parameter data member: startOfConstruct_copy
   99135             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   99136             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   99137           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   99138           0 :      if ( p_startOfConstruct != NULL ) 
   99139             :         { 
   99140           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   99141             :         } 
   99142             :        else 
   99143             :         { 
   99144             :           startOfConstruct_copy = NULL; 
   99145             :         } 
   99146             :   // Copy constructor parameter data member: body_copy
   99147           0 :      SgStatement* body_copy; 
   99148             :   // case: not a listType for (using conditionalToCopyVariable)body
   99149           0 :           if (get_body() != NULL) 
   99150             :              { 
   99151           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
   99152             :              } 
   99153             :             else 
   99154             :              { 
   99155             :                body_copy = NULL; 
   99156             :              } 
   99157             :  
   99158             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99159             : 
   99160             :   // Build an empty copy of this object (will be filled in, but 
   99161             :   // the parent can't be set and must be set by the caller)
   99162           0 :      result = new SgDefaultOptionStmt(  startOfConstruct_copy, body_copy );
   99163           0 :      ROSE_ASSERT(result != NULL);
   99164             : 
   99165             :   // Copy data members of "this" class
   99166             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   99167             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   99168             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   99169           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   99170           0 :      if ( p_endOfConstruct != NULL ) 
   99171             :         { 
   99172           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   99173             :         } 
   99174             :        else 
   99175             :         { 
   99176             :           endOfConstruct_copy = NULL; 
   99177             :         } 
   99178             :   /* check for a valid pointer and delete if present */ 
   99179           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   99180             :   /* add assignment to result here */ 
   99181           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   99182             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   99183             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   99184             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   99185           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   99186           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   99187             :         { 
   99188           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   99189             :         } 
   99190             :        else 
   99191             :         { 
   99192             :           attachedPreprocessingInfoPtr_copy = NULL; 
   99193             :         } 
   99194             :   /* check for a valid pointer and delete if present */ 
   99195           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   99196             :   /* add assignment to result here */ 
   99197           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   99198             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   99199             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   99200             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   99201           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   99202           0 :      if ( p_attributeMechanism != NULL ) 
   99203             :         { 
   99204           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   99205             :         } 
   99206             :        else 
   99207             :         { 
   99208             :           attributeMechanism_copy = NULL; 
   99209             :         } 
   99210             :   /* check for a valid pointer and delete if present */ 
   99211           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   99212             :   /* add assignment to result here */ 
   99213           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   99214             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   99215             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   99216             :   // case: toBeCopied == COPY_DATA for numeric_label
   99217           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   99218           0 :      result->p_numeric_label = numeric_label_copy; 
   99219             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   99220             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   99221             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   99222           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   99223           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   99224             :   // Copy non-constructor parameter data member (access function): default_construct_name_copy
   99225             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for default_construct_name
   99226             :   // case: toBeCopied == COPY_DATA for default_construct_name
   99227           0 :      std::string default_construct_name_copy = p_default_construct_name; 
   99228           0 :      result->p_default_construct_name = default_construct_name_copy; 
   99229             :   // case: not a listType for (using conditionalToSetParent)body
   99230           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
   99231             :              { 
   99232           0 :                body_copy->set_parent(result); 
   99233             :              } 
   99234             : 
   99235             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99236             : 
   99237             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   99238             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   99239             :   // fixupCopy(result,help);
   99240             : 
   99241             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   99242             :   // the Sg_File_Info objects that are built for the new IR nodes.
   99243           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   99244           0 :      if (locatedNode != NULL)
   99245             :         {
   99246             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   99247           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   99248           0 :           ROSE_ASSERT(start != NULL);
   99249             : #if 0
   99250             :        // Debugging information
   99251             :           if (start->get_parent() == NULL)
   99252             :              {
   99253             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99254             :              }
   99255             : #endif
   99256           0 :           start->set_parent(locatedNode);
   99257           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   99258             : 
   99259           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   99260             : 
   99261             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   99262             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   99263             :        // ROSE_ASSERT(end != NULL);
   99264           0 :           if (end == NULL)
   99265             :              {
   99266           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   99267             :              }
   99268             :             else
   99269             :              {
   99270             : #if 0
   99271             :             // Debugging information
   99272             :                if (end->get_parent() == NULL)
   99273             :                   {
   99274             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99275             :                   }
   99276             : #endif
   99277           0 :                end->set_parent(locatedNode);
   99278           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   99279             :              }
   99280             : 
   99281           0 :           SgExpression* expression = isSgExpression(result);
   99282           0 :           if (isSgExpression(this) != NULL)
   99283             :              {
   99284           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   99285             : 
   99286             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   99287           0 :                if (operatorPosition != NULL)
   99288             :                   {
   99289             : #if 0
   99290             :                  // Debugging information
   99291             :                     if (operatorPosition->get_parent() == NULL)
   99292             :                        {
   99293             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99294             :                        }
   99295             : #endif
   99296           0 :                     operatorPosition->set_parent(expression);
   99297           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   99298             :                   }
   99299             :              }
   99300             :         }
   99301             : 
   99302             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   99303           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   99304           0 :      if (initializedName != NULL)
   99305             :         {
   99306             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   99307           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   99308           0 :           ROSE_ASSERT(start != NULL);
   99309             : #if 0
   99310             :        // Debugging information
   99311             :           if (start->get_parent() == NULL)
   99312             :              {
   99313             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99314             :              }
   99315             : #endif
   99316           0 :           start->set_parent(initializedName);
   99317           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   99318             : 
   99319             : #if 0
   99320             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   99321             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   99322             : 
   99323             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   99324             :        // ROSE_ASSERT(end != NULL);
   99325             :           if (end == NULL)
   99326             :              {
   99327             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   99328             :              }
   99329             :             else
   99330             :              {
   99331             :                if (end->get_parent() == NULL)
   99332             :                   {
   99333             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99334             :                   }
   99335             :                end->set_parent(initializedName);
   99336             :                ROSE_ASSERT(end->get_parent() != NULL);
   99337             :              }
   99338             : #endif
   99339             :         }
   99340             : 
   99341             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   99342           0 :      help.insertCopiedNodePair(this,result);
   99343             : 
   99344             :   // printf ("End of copy SgDefaultOptionStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   99345             : 
   99346             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   99347             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   99348           0 :      help.decrementDepth();
   99349             : 
   99350             :   // Test if this is the root of the copy!
   99351           0 :      if (help.get_depth() == 0)
   99352             :         {
   99353             :        // This is the original calling node.
   99354             : 
   99355             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   99356             :        // printf ("Calling SgDefaultOptionStmt::fixupCopy() (from root of AST being copied) \n");
   99357             : #if ALT_FIXUP_COPY
   99358             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   99359           0 :           fixupCopy_scopes (result,help);
   99360           0 :           fixupCopy_symbols (result,help);
   99361           0 :           fixupCopy_references (result,help);
   99362             : #else
   99363             :           fixupCopy(result,help);
   99364             : #endif
   99365             :        // Allow this to be called recursively, so accumulate the state.
   99366             :        // Also, clear the state in the SgCopyHelp object.
   99367             :        // help.clearState();
   99368             :         }
   99369             : 
   99370           0 :      return result;
   99371             :    }
   99372             : 
   99373             : 
   99374             : /* #line 99375 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   99375             : 
   99376             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99377             : 
   99378           0 : SgNode* SgBreakStmt::copy ( SgCopyHelp& help) const
   99379             :    {
   99380           0 :      SgBreakStmt* result = NULL;
   99381             : 
   99382             :   // printf ("Copy SgBreakStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   99383             : 
   99384             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   99385             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   99386             :   // The default value of the depth is 0, so after this call the depth is 1!
   99387           0 :      help.incrementDepth();
   99388             : 
   99389             : #if 0
   99390             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   99391             :   // but it is not generally true that things can only be copied once!
   99392             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   99393             :   // AstAttribute* existingAttribute = const_cast<SgBreakStmt*>(this)->attribute["copied"];
   99394             :      bool previouslyCopied = const_cast<SgBreakStmt*>(this)->attribute.exists("copied");
   99395             :      if (previouslyCopied == true)
   99396             :         {
   99397             :           this->get_file_info()->display("Called from copy SgBreakStmt: debug");
   99398             :         }
   99399             :      ROSE_ASSERT(previouslyCopied == false);
   99400             : 
   99401             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   99402             :      AstAttribute* newAttribute = new AstAttribute();
   99403             :      ROSE_ASSERT(newAttribute != NULL);
   99404             : 
   99405             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   99406             :      const_cast<SgBreakStmt*>(this)->attribute.add("copied",newAttribute);
   99407             : #endif
   99408             : 
   99409             :   // Copy data members from base classes
   99410             :   // Copy constructor parameter data member: startOfConstruct_copy
   99411             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   99412             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   99413           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   99414           0 :      if ( p_startOfConstruct != NULL ) 
   99415             :         { 
   99416           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   99417             :         } 
   99418             :        else 
   99419             :         { 
   99420             :           startOfConstruct_copy = NULL; 
   99421             :         } 
   99422             :  
   99423             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99424             : 
   99425             :   // Build an empty copy of this object (will be filled in, but 
   99426             :   // the parent can't be set and must be set by the caller)
   99427           0 :      result = new SgBreakStmt(  startOfConstruct_copy );
   99428           0 :      ROSE_ASSERT(result != NULL);
   99429             : 
   99430             :   // Copy data members of "this" class
   99431             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   99432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   99433             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   99434           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   99435           0 :      if ( p_endOfConstruct != NULL ) 
   99436             :         { 
   99437           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   99438             :         } 
   99439             :        else 
   99440             :         { 
   99441             :           endOfConstruct_copy = NULL; 
   99442             :         } 
   99443             :   /* check for a valid pointer and delete if present */ 
   99444           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   99445             :   /* add assignment to result here */ 
   99446           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   99447             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   99448             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   99449             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   99450           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   99451           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   99452             :         { 
   99453           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   99454             :         } 
   99455             :        else 
   99456             :         { 
   99457             :           attachedPreprocessingInfoPtr_copy = NULL; 
   99458             :         } 
   99459             :   /* check for a valid pointer and delete if present */ 
   99460           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   99461             :   /* add assignment to result here */ 
   99462           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   99463             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   99464             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   99465             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   99466           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   99467           0 :      if ( p_attributeMechanism != NULL ) 
   99468             :         { 
   99469           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   99470             :         } 
   99471             :        else 
   99472             :         { 
   99473             :           attributeMechanism_copy = NULL; 
   99474             :         } 
   99475             :   /* check for a valid pointer and delete if present */ 
   99476           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   99477             :   /* add assignment to result here */ 
   99478           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   99479             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   99480             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   99481             :   // case: toBeCopied == COPY_DATA for numeric_label
   99482           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   99483           0 :      result->p_numeric_label = numeric_label_copy; 
   99484             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   99485             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   99486             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   99487           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   99488           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   99489             :   // Copy non-constructor parameter data member (access function): do_string_label_copy
   99490             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for do_string_label
   99491             :   // case: toBeCopied == COPY_DATA for do_string_label
   99492           0 :      std::string do_string_label_copy = p_do_string_label; 
   99493           0 :      result->p_do_string_label = do_string_label_copy; 
   99494             : 
   99495             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99496             : 
   99497             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   99498             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   99499             :   // fixupCopy(result,help);
   99500             : 
   99501             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   99502             :   // the Sg_File_Info objects that are built for the new IR nodes.
   99503           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   99504           0 :      if (locatedNode != NULL)
   99505             :         {
   99506             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   99507           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   99508           0 :           ROSE_ASSERT(start != NULL);
   99509             : #if 0
   99510             :        // Debugging information
   99511             :           if (start->get_parent() == NULL)
   99512             :              {
   99513             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99514             :              }
   99515             : #endif
   99516           0 :           start->set_parent(locatedNode);
   99517           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   99518             : 
   99519           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   99520             : 
   99521             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   99522             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   99523             :        // ROSE_ASSERT(end != NULL);
   99524           0 :           if (end == NULL)
   99525             :              {
   99526           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   99527             :              }
   99528             :             else
   99529             :              {
   99530             : #if 0
   99531             :             // Debugging information
   99532             :                if (end->get_parent() == NULL)
   99533             :                   {
   99534             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99535             :                   }
   99536             : #endif
   99537           0 :                end->set_parent(locatedNode);
   99538           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   99539             :              }
   99540             : 
   99541           0 :           SgExpression* expression = isSgExpression(result);
   99542           0 :           if (isSgExpression(this) != NULL)
   99543             :              {
   99544           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   99545             : 
   99546             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   99547           0 :                if (operatorPosition != NULL)
   99548             :                   {
   99549             : #if 0
   99550             :                  // Debugging information
   99551             :                     if (operatorPosition->get_parent() == NULL)
   99552             :                        {
   99553             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99554             :                        }
   99555             : #endif
   99556           0 :                     operatorPosition->set_parent(expression);
   99557           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   99558             :                   }
   99559             :              }
   99560             :         }
   99561             : 
   99562             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   99563           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   99564           0 :      if (initializedName != NULL)
   99565             :         {
   99566             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   99567           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   99568           0 :           ROSE_ASSERT(start != NULL);
   99569             : #if 0
   99570             :        // Debugging information
   99571             :           if (start->get_parent() == NULL)
   99572             :              {
   99573             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99574             :              }
   99575             : #endif
   99576           0 :           start->set_parent(initializedName);
   99577           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   99578             : 
   99579             : #if 0
   99580             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   99581             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   99582             : 
   99583             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   99584             :        // ROSE_ASSERT(end != NULL);
   99585             :           if (end == NULL)
   99586             :              {
   99587             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   99588             :              }
   99589             :             else
   99590             :              {
   99591             :                if (end->get_parent() == NULL)
   99592             :                   {
   99593             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99594             :                   }
   99595             :                end->set_parent(initializedName);
   99596             :                ROSE_ASSERT(end->get_parent() != NULL);
   99597             :              }
   99598             : #endif
   99599             :         }
   99600             : 
   99601             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   99602           0 :      help.insertCopiedNodePair(this,result);
   99603             : 
   99604             :   // printf ("End of copy SgBreakStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   99605             : 
   99606             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   99607             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   99608           0 :      help.decrementDepth();
   99609             : 
   99610             :   // Test if this is the root of the copy!
   99611           0 :      if (help.get_depth() == 0)
   99612             :         {
   99613             :        // This is the original calling node.
   99614             : 
   99615             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   99616             :        // printf ("Calling SgBreakStmt::fixupCopy() (from root of AST being copied) \n");
   99617             : #if ALT_FIXUP_COPY
   99618             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   99619           0 :           fixupCopy_scopes (result,help);
   99620           0 :           fixupCopy_symbols (result,help);
   99621           0 :           fixupCopy_references (result,help);
   99622             : #else
   99623             :           fixupCopy(result,help);
   99624             : #endif
   99625             :        // Allow this to be called recursively, so accumulate the state.
   99626             :        // Also, clear the state in the SgCopyHelp object.
   99627             :        // help.clearState();
   99628             :         }
   99629             : 
   99630           0 :      return result;
   99631             :    }
   99632             : 
   99633             : 
   99634             : /* #line 99635 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   99635             : 
   99636             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99637             : 
   99638           0 : SgNode* SgContinueStmt::copy ( SgCopyHelp& help) const
   99639             :    {
   99640           0 :      SgContinueStmt* result = NULL;
   99641             : 
   99642             :   // printf ("Copy SgContinueStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   99643             : 
   99644             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   99645             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   99646             :   // The default value of the depth is 0, so after this call the depth is 1!
   99647           0 :      help.incrementDepth();
   99648             : 
   99649             : #if 0
   99650             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   99651             :   // but it is not generally true that things can only be copied once!
   99652             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   99653             :   // AstAttribute* existingAttribute = const_cast<SgContinueStmt*>(this)->attribute["copied"];
   99654             :      bool previouslyCopied = const_cast<SgContinueStmt*>(this)->attribute.exists("copied");
   99655             :      if (previouslyCopied == true)
   99656             :         {
   99657             :           this->get_file_info()->display("Called from copy SgContinueStmt: debug");
   99658             :         }
   99659             :      ROSE_ASSERT(previouslyCopied == false);
   99660             : 
   99661             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   99662             :      AstAttribute* newAttribute = new AstAttribute();
   99663             :      ROSE_ASSERT(newAttribute != NULL);
   99664             : 
   99665             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   99666             :      const_cast<SgContinueStmt*>(this)->attribute.add("copied",newAttribute);
   99667             : #endif
   99668             : 
   99669             :   // Copy data members from base classes
   99670             :   // Copy constructor parameter data member: startOfConstruct_copy
   99671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   99672             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   99673           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   99674           0 :      if ( p_startOfConstruct != NULL ) 
   99675             :         { 
   99676           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   99677             :         } 
   99678             :        else 
   99679             :         { 
   99680             :           startOfConstruct_copy = NULL; 
   99681             :         } 
   99682             :  
   99683             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99684             : 
   99685             :   // Build an empty copy of this object (will be filled in, but 
   99686             :   // the parent can't be set and must be set by the caller)
   99687           0 :      result = new SgContinueStmt(  startOfConstruct_copy );
   99688           0 :      ROSE_ASSERT(result != NULL);
   99689             : 
   99690             :   // Copy data members of "this" class
   99691             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   99692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   99693             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   99694           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   99695           0 :      if ( p_endOfConstruct != NULL ) 
   99696             :         { 
   99697           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   99698             :         } 
   99699             :        else 
   99700             :         { 
   99701             :           endOfConstruct_copy = NULL; 
   99702             :         } 
   99703             :   /* check for a valid pointer and delete if present */ 
   99704           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   99705             :   /* add assignment to result here */ 
   99706           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
   99707             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   99708             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   99709             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   99710           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   99711           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   99712             :         { 
   99713           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   99714             :         } 
   99715             :        else 
   99716             :         { 
   99717             :           attachedPreprocessingInfoPtr_copy = NULL; 
   99718             :         } 
   99719             :   /* check for a valid pointer and delete if present */ 
   99720           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   99721             :   /* add assignment to result here */ 
   99722           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   99723             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   99724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   99725             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   99726           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   99727           0 :      if ( p_attributeMechanism != NULL ) 
   99728             :         { 
   99729           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
   99730             :         } 
   99731             :        else 
   99732             :         { 
   99733             :           attributeMechanism_copy = NULL; 
   99734             :         } 
   99735             :   /* check for a valid pointer and delete if present */ 
   99736           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
   99737             :   /* add assignment to result here */ 
   99738           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
   99739             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
   99740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
   99741             :   // case: toBeCopied == COPY_DATA for numeric_label
   99742           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
   99743           0 :      result->p_numeric_label = numeric_label_copy; 
   99744             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
   99745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
   99746             :   // case: toBeCopied == COPY_DATA for source_sequence_value
   99747           0 :      int source_sequence_value_copy = p_source_sequence_value; 
   99748           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
   99749             :   // Copy non-constructor parameter data member (access function): do_string_label_copy
   99750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for do_string_label
   99751             :   // case: toBeCopied == COPY_DATA for do_string_label
   99752           0 :      std::string do_string_label_copy = p_do_string_label; 
   99753           0 :      result->p_do_string_label = do_string_label_copy; 
   99754             : 
   99755             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99756             : 
   99757             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
   99758             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
   99759             :   // fixupCopy(result,help);
   99760             : 
   99761             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
   99762             :   // the Sg_File_Info objects that are built for the new IR nodes.
   99763           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
   99764           0 :      if (locatedNode != NULL)
   99765             :         {
   99766             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   99767           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
   99768           0 :           ROSE_ASSERT(start != NULL);
   99769             : #if 0
   99770             :        // Debugging information
   99771             :           if (start->get_parent() == NULL)
   99772             :              {
   99773             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99774             :              }
   99775             : #endif
   99776           0 :           start->set_parent(locatedNode);
   99777           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   99778             : 
   99779           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
   99780             : 
   99781             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
   99782             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
   99783             :        // ROSE_ASSERT(end != NULL);
   99784           0 :           if (end == NULL)
   99785             :              {
   99786           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
   99787             :              }
   99788             :             else
   99789             :              {
   99790             : #if 0
   99791             :             // Debugging information
   99792             :                if (end->get_parent() == NULL)
   99793             :                   {
   99794             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99795             :                   }
   99796             : #endif
   99797           0 :                end->set_parent(locatedNode);
   99798           0 :                ROSE_ASSERT(end->get_parent() != NULL);
   99799             :              }
   99800             : 
   99801           0 :           SgExpression* expression = isSgExpression(result);
   99802           0 :           if (isSgExpression(this) != NULL)
   99803             :              {
   99804           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
   99805             : 
   99806             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
   99807           0 :                if (operatorPosition != NULL)
   99808             :                   {
   99809             : #if 0
   99810             :                  // Debugging information
   99811             :                     if (operatorPosition->get_parent() == NULL)
   99812             :                        {
   99813             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99814             :                        }
   99815             : #endif
   99816           0 :                     operatorPosition->set_parent(expression);
   99817           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
   99818             :                   }
   99819             :              }
   99820             :         }
   99821             : 
   99822             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
   99823           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
   99824           0 :      if (initializedName != NULL)
   99825             :         {
   99826             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
   99827           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
   99828           0 :           ROSE_ASSERT(start != NULL);
   99829             : #if 0
   99830             :        // Debugging information
   99831             :           if (start->get_parent() == NULL)
   99832             :              {
   99833             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99834             :              }
   99835             : #endif
   99836           0 :           start->set_parent(initializedName);
   99837           0 :           ROSE_ASSERT(start->get_parent() != NULL);
   99838             : 
   99839             : #if 0
   99840             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
   99841             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
   99842             : 
   99843             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
   99844             :        // ROSE_ASSERT(end != NULL);
   99845             :           if (end == NULL)
   99846             :              {
   99847             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
   99848             :              }
   99849             :             else
   99850             :              {
   99851             :                if (end->get_parent() == NULL)
   99852             :                   {
   99853             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
   99854             :                   }
   99855             :                end->set_parent(initializedName);
   99856             :                ROSE_ASSERT(end->get_parent() != NULL);
   99857             :              }
   99858             : #endif
   99859             :         }
   99860             : 
   99861             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
   99862           0 :      help.insertCopiedNodePair(this,result);
   99863             : 
   99864             :   // printf ("End of copy SgContinueStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   99865             : 
   99866             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   99867             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   99868           0 :      help.decrementDepth();
   99869             : 
   99870             :   // Test if this is the root of the copy!
   99871           0 :      if (help.get_depth() == 0)
   99872             :         {
   99873             :        // This is the original calling node.
   99874             : 
   99875             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
   99876             :        // printf ("Calling SgContinueStmt::fixupCopy() (from root of AST being copied) \n");
   99877             : #if ALT_FIXUP_COPY
   99878             :        // DQ (11/7/2007): These need to be called separately (see documentation)
   99879           0 :           fixupCopy_scopes (result,help);
   99880           0 :           fixupCopy_symbols (result,help);
   99881           0 :           fixupCopy_references (result,help);
   99882             : #else
   99883             :           fixupCopy(result,help);
   99884             : #endif
   99885             :        // Allow this to be called recursively, so accumulate the state.
   99886             :        // Also, clear the state in the SgCopyHelp object.
   99887             :        // help.clearState();
   99888             :         }
   99889             : 
   99890           0 :      return result;
   99891             :    }
   99892             : 
   99893             : 
   99894             : /* #line 99895 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
   99895             : 
   99896             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99897             : 
   99898           2 : SgNode* SgReturnStmt::copy ( SgCopyHelp& help) const
   99899             :    {
   99900           2 :      SgReturnStmt* result = NULL;
   99901             : 
   99902             :   // printf ("Copy SgReturnStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
   99903             : 
   99904             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
   99905             :   // used to associated old and new symbols in the original AST and the copy of the AST.
   99906             :   // The default value of the depth is 0, so after this call the depth is 1!
   99907           2 :      help.incrementDepth();
   99908             : 
   99909             : #if 0
   99910             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
   99911             :   // but it is not generally true that things can only be copied once!
   99912             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
   99913             :   // AstAttribute* existingAttribute = const_cast<SgReturnStmt*>(this)->attribute["copied"];
   99914             :      bool previouslyCopied = const_cast<SgReturnStmt*>(this)->attribute.exists("copied");
   99915             :      if (previouslyCopied == true)
   99916             :         {
   99917             :           this->get_file_info()->display("Called from copy SgReturnStmt: debug");
   99918             :         }
   99919             :      ROSE_ASSERT(previouslyCopied == false);
   99920             : 
   99921             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
   99922             :      AstAttribute* newAttribute = new AstAttribute();
   99923             :      ROSE_ASSERT(newAttribute != NULL);
   99924             : 
   99925             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
   99926             :      const_cast<SgReturnStmt*>(this)->attribute.add("copied",newAttribute);
   99927             : #endif
   99928             : 
   99929             :   // Copy data members from base classes
   99930             :   // Copy constructor parameter data member: startOfConstruct_copy
   99931             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
   99932             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
   99933           2 :      Sg_File_Info* startOfConstruct_copy = NULL; 
   99934           2 :      if ( p_startOfConstruct != NULL ) 
   99935             :         { 
   99936           2 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
   99937             :         } 
   99938             :        else 
   99939             :         { 
   99940             :           startOfConstruct_copy = NULL; 
   99941             :         } 
   99942             :   // Copy constructor parameter data member: expression_copy
   99943           2 :      SgExpression* expression_copy; 
   99944             :   // case: not a listType for (using conditionalToCopyVariable)expression
   99945           2 :           if (get_expression() != NULL) 
   99946             :              { 
   99947           2 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
   99948             :              } 
   99949             :             else 
   99950             :              { 
   99951             :                expression_copy = NULL; 
   99952             :              } 
   99953             :  
   99954             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
   99955             : 
   99956             :   // Build an empty copy of this object (will be filled in, but 
   99957             :   // the parent can't be set and must be set by the caller)
   99958           2 :      result = new SgReturnStmt(  startOfConstruct_copy, expression_copy );
   99959           2 :      ROSE_ASSERT(result != NULL);
   99960             : 
   99961             :   // Copy data members of "this" class
   99962             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
   99963             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
   99964             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
   99965           2 :      Sg_File_Info* endOfConstruct_copy = NULL; 
   99966           2 :      if ( p_endOfConstruct != NULL ) 
   99967             :         { 
   99968           2 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
   99969             :         } 
   99970             :        else 
   99971             :         { 
   99972             :           endOfConstruct_copy = NULL; 
   99973             :         } 
   99974             :   /* check for a valid pointer and delete if present */ 
   99975           2 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
   99976             :   /* add assignment to result here */ 
   99977           2 :      result->p_endOfConstruct = endOfConstruct_copy; 
   99978             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
   99979             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
   99980             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
   99981           2 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
   99982           2 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
   99983             :         { 
   99984           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
   99985             :         } 
   99986             :        else 
   99987             :         { 
   99988             :           attachedPreprocessingInfoPtr_copy = NULL; 
   99989             :         } 
   99990             :   /* check for a valid pointer and delete if present */ 
   99991           2 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
   99992             :   /* add assignment to result here */ 
   99993           2 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
   99994             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
   99995             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
   99996             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
   99997           2 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
   99998           2 :      if ( p_attributeMechanism != NULL ) 
   99999             :         { 
  100000           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  100001             :         } 
  100002             :        else 
  100003             :         { 
  100004             :           attributeMechanism_copy = NULL; 
  100005             :         } 
  100006             :   /* check for a valid pointer and delete if present */ 
  100007           2 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  100008             :   /* add assignment to result here */ 
  100009           2 :      result->p_attributeMechanism = attributeMechanism_copy; 
  100010             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  100011             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  100012             :   // case: toBeCopied == COPY_DATA for numeric_label
  100013           2 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  100014           2 :      result->p_numeric_label = numeric_label_copy; 
  100015             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  100016             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  100017             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  100018           2 :      int source_sequence_value_copy = p_source_sequence_value; 
  100019           2 :      result->p_source_sequence_value = source_sequence_value_copy; 
  100020             :   // case: not a listType for (using conditionalToSetParent)expression
  100021           2 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
  100022             :              { 
  100023           2 :                expression_copy->set_parent(result); 
  100024             :              } 
  100025             : 
  100026             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100027             : 
  100028             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  100029             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  100030             :   // fixupCopy(result,help);
  100031             : 
  100032             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  100033             :   // the Sg_File_Info objects that are built for the new IR nodes.
  100034           2 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  100035           2 :      if (locatedNode != NULL)
  100036             :         {
  100037             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  100038           2 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  100039           2 :           ROSE_ASSERT(start != NULL);
  100040             : #if 0
  100041             :        // Debugging information
  100042             :           if (start->get_parent() == NULL)
  100043             :              {
  100044             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100045             :              }
  100046             : #endif
  100047           2 :           start->set_parent(locatedNode);
  100048           2 :           ROSE_ASSERT(start->get_parent() != NULL);
  100049             : 
  100050           2 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  100051             : 
  100052             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  100053             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  100054             :        // ROSE_ASSERT(end != NULL);
  100055           2 :           if (end == NULL)
  100056             :              {
  100057           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  100058             :              }
  100059             :             else
  100060             :              {
  100061             : #if 0
  100062             :             // Debugging information
  100063             :                if (end->get_parent() == NULL)
  100064             :                   {
  100065             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100066             :                   }
  100067             : #endif
  100068           2 :                end->set_parent(locatedNode);
  100069           2 :                ROSE_ASSERT(end->get_parent() != NULL);
  100070             :              }
  100071             : 
  100072           2 :           SgExpression* expression = isSgExpression(result);
  100073           2 :           if (isSgExpression(this) != NULL)
  100074             :              {
  100075           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  100076             : 
  100077             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  100078           0 :                if (operatorPosition != NULL)
  100079             :                   {
  100080             : #if 0
  100081             :                  // Debugging information
  100082             :                     if (operatorPosition->get_parent() == NULL)
  100083             :                        {
  100084             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100085             :                        }
  100086             : #endif
  100087           0 :                     operatorPosition->set_parent(expression);
  100088           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  100089             :                   }
  100090             :              }
  100091             :         }
  100092             : 
  100093             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  100094           2 :      SgInitializedName* initializedName = isSgInitializedName(result);
  100095           2 :      if (initializedName != NULL)
  100096             :         {
  100097             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  100098           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  100099           0 :           ROSE_ASSERT(start != NULL);
  100100             : #if 0
  100101             :        // Debugging information
  100102             :           if (start->get_parent() == NULL)
  100103             :              {
  100104             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100105             :              }
  100106             : #endif
  100107           0 :           start->set_parent(initializedName);
  100108           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  100109             : 
  100110             : #if 0
  100111             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  100112             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  100113             : 
  100114             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  100115             :        // ROSE_ASSERT(end != NULL);
  100116             :           if (end == NULL)
  100117             :              {
  100118             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  100119             :              }
  100120             :             else
  100121             :              {
  100122             :                if (end->get_parent() == NULL)
  100123             :                   {
  100124             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100125             :                   }
  100126             :                end->set_parent(initializedName);
  100127             :                ROSE_ASSERT(end->get_parent() != NULL);
  100128             :              }
  100129             : #endif
  100130             :         }
  100131             : 
  100132             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  100133           2 :      help.insertCopiedNodePair(this,result);
  100134             : 
  100135             :   // printf ("End of copy SgReturnStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
  100136             : 
  100137             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  100138             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  100139           2 :      help.decrementDepth();
  100140             : 
  100141             :   // Test if this is the root of the copy!
  100142           2 :      if (help.get_depth() == 0)
  100143             :         {
  100144             :        // This is the original calling node.
  100145             : 
  100146             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  100147             :        // printf ("Calling SgReturnStmt::fixupCopy() (from root of AST being copied) \n");
  100148             : #if ALT_FIXUP_COPY
  100149             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  100150           0 :           fixupCopy_scopes (result,help);
  100151           0 :           fixupCopy_symbols (result,help);
  100152           0 :           fixupCopy_references (result,help);
  100153             : #else
  100154             :           fixupCopy(result,help);
  100155             : #endif
  100156             :        // Allow this to be called recursively, so accumulate the state.
  100157             :        // Also, clear the state in the SgCopyHelp object.
  100158             :        // help.clearState();
  100159             :         }
  100160             : 
  100161           2 :      return result;
  100162             :    }
  100163             : 
  100164             : 
  100165             : /* #line 100166 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  100166             : 
  100167             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100168             : 
  100169           0 : SgNode* SgGotoStatement::copy ( SgCopyHelp& help) const
  100170             :    {
  100171           0 :      SgGotoStatement* result = NULL;
  100172             : 
  100173             :   // printf ("Copy SgGotoStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  100174             : 
  100175             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  100176             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  100177             :   // The default value of the depth is 0, so after this call the depth is 1!
  100178           0 :      help.incrementDepth();
  100179             : 
  100180             : #if 0
  100181             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  100182             :   // but it is not generally true that things can only be copied once!
  100183             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  100184             :   // AstAttribute* existingAttribute = const_cast<SgGotoStatement*>(this)->attribute["copied"];
  100185             :      bool previouslyCopied = const_cast<SgGotoStatement*>(this)->attribute.exists("copied");
  100186             :      if (previouslyCopied == true)
  100187             :         {
  100188             :           this->get_file_info()->display("Called from copy SgGotoStatement: debug");
  100189             :         }
  100190             :      ROSE_ASSERT(previouslyCopied == false);
  100191             : 
  100192             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  100193             :      AstAttribute* newAttribute = new AstAttribute();
  100194             :      ROSE_ASSERT(newAttribute != NULL);
  100195             : 
  100196             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  100197             :      const_cast<SgGotoStatement*>(this)->attribute.add("copied",newAttribute);
  100198             : #endif
  100199             : 
  100200             :   // Copy data members from base classes
  100201             :   // Copy constructor parameter data member: startOfConstruct_copy
  100202             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  100203             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  100204           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  100205           0 :      if ( p_startOfConstruct != NULL ) 
  100206             :         { 
  100207           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  100208             :         } 
  100209             :        else 
  100210             :         { 
  100211             :           startOfConstruct_copy = NULL; 
  100212             :         } 
  100213             :   // Copy constructor parameter data member: label_copy
  100214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for label
  100215             :   // case: toBeCopied == COPY_DATA for label
  100216           0 :      SgLabelStatement* label_copy = p_label; 
  100217             :  
  100218             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100219             : 
  100220             :   // Build an empty copy of this object (will be filled in, but 
  100221             :   // the parent can't be set and must be set by the caller)
  100222           0 :      result = new SgGotoStatement(  startOfConstruct_copy, label_copy );
  100223           0 :      ROSE_ASSERT(result != NULL);
  100224             : 
  100225             :   // Copy data members of "this" class
  100226             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  100227             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  100228             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  100229           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  100230           0 :      if ( p_endOfConstruct != NULL ) 
  100231             :         { 
  100232           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  100233             :         } 
  100234             :        else 
  100235             :         { 
  100236             :           endOfConstruct_copy = NULL; 
  100237             :         } 
  100238             :   /* check for a valid pointer and delete if present */ 
  100239           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  100240             :   /* add assignment to result here */ 
  100241           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  100242             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  100243             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  100244             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  100245           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  100246           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  100247             :         { 
  100248           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  100249             :         } 
  100250             :        else 
  100251             :         { 
  100252             :           attachedPreprocessingInfoPtr_copy = NULL; 
  100253             :         } 
  100254             :   /* check for a valid pointer and delete if present */ 
  100255           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  100256             :   /* add assignment to result here */ 
  100257           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  100258             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  100259             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  100260             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  100261           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  100262           0 :      if ( p_attributeMechanism != NULL ) 
  100263             :         { 
  100264           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  100265             :         } 
  100266             :        else 
  100267             :         { 
  100268             :           attributeMechanism_copy = NULL; 
  100269             :         } 
  100270             :   /* check for a valid pointer and delete if present */ 
  100271           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  100272             :   /* add assignment to result here */ 
  100273           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  100274             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  100275             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  100276             :   // case: toBeCopied == COPY_DATA for numeric_label
  100277           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  100278           0 :      result->p_numeric_label = numeric_label_copy; 
  100279             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  100280             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  100281             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  100282           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  100283           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  100284             :   // Copy non-constructor parameter data member (access function): label_expression_copy
  100285             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for label_expression
  100286             :   // case: toBeCopied == COPY_DATA for label_expression
  100287           0 :      SgLabelRefExp* label_expression_copy = p_label_expression; 
  100288           0 :      result->p_label_expression = label_expression_copy; 
  100289             :   // Copy non-constructor parameter data member (access function): selector_expression_copy
  100290             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for selector_expression
  100291             :   // case: toBeCopied == COPY_DATA for selector_expression
  100292           0 :      SgExpression* selector_expression_copy = p_selector_expression; 
  100293           0 :      result->p_selector_expression = selector_expression_copy; 
  100294             : 
  100295             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100296             : 
  100297             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  100298             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  100299             :   // fixupCopy(result,help);
  100300             : 
  100301             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  100302             :   // the Sg_File_Info objects that are built for the new IR nodes.
  100303           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  100304           0 :      if (locatedNode != NULL)
  100305             :         {
  100306             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  100307           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  100308           0 :           ROSE_ASSERT(start != NULL);
  100309             : #if 0
  100310             :        // Debugging information
  100311             :           if (start->get_parent() == NULL)
  100312             :              {
  100313             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100314             :              }
  100315             : #endif
  100316           0 :           start->set_parent(locatedNode);
  100317           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  100318             : 
  100319           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  100320             : 
  100321             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  100322             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  100323             :        // ROSE_ASSERT(end != NULL);
  100324           0 :           if (end == NULL)
  100325             :              {
  100326           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  100327             :              }
  100328             :             else
  100329             :              {
  100330             : #if 0
  100331             :             // Debugging information
  100332             :                if (end->get_parent() == NULL)
  100333             :                   {
  100334             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100335             :                   }
  100336             : #endif
  100337           0 :                end->set_parent(locatedNode);
  100338           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  100339             :              }
  100340             : 
  100341           0 :           SgExpression* expression = isSgExpression(result);
  100342           0 :           if (isSgExpression(this) != NULL)
  100343             :              {
  100344           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  100345             : 
  100346             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  100347           0 :                if (operatorPosition != NULL)
  100348             :                   {
  100349             : #if 0
  100350             :                  // Debugging information
  100351             :                     if (operatorPosition->get_parent() == NULL)
  100352             :                        {
  100353             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100354             :                        }
  100355             : #endif
  100356           0 :                     operatorPosition->set_parent(expression);
  100357           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  100358             :                   }
  100359             :              }
  100360             :         }
  100361             : 
  100362             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  100363           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  100364           0 :      if (initializedName != NULL)
  100365             :         {
  100366             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  100367           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  100368           0 :           ROSE_ASSERT(start != NULL);
  100369             : #if 0
  100370             :        // Debugging information
  100371             :           if (start->get_parent() == NULL)
  100372             :              {
  100373             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100374             :              }
  100375             : #endif
  100376           0 :           start->set_parent(initializedName);
  100377           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  100378             : 
  100379             : #if 0
  100380             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  100381             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  100382             : 
  100383             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  100384             :        // ROSE_ASSERT(end != NULL);
  100385             :           if (end == NULL)
  100386             :              {
  100387             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  100388             :              }
  100389             :             else
  100390             :              {
  100391             :                if (end->get_parent() == NULL)
  100392             :                   {
  100393             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100394             :                   }
  100395             :                end->set_parent(initializedName);
  100396             :                ROSE_ASSERT(end->get_parent() != NULL);
  100397             :              }
  100398             : #endif
  100399             :         }
  100400             : 
  100401             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  100402           0 :      help.insertCopiedNodePair(this,result);
  100403             : 
  100404             :   // printf ("End of copy SgGotoStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  100405             : 
  100406             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  100407             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  100408           0 :      help.decrementDepth();
  100409             : 
  100410             :   // Test if this is the root of the copy!
  100411           0 :      if (help.get_depth() == 0)
  100412             :         {
  100413             :        // This is the original calling node.
  100414             : 
  100415             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  100416             :        // printf ("Calling SgGotoStatement::fixupCopy() (from root of AST being copied) \n");
  100417             : #if ALT_FIXUP_COPY
  100418             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  100419           0 :           fixupCopy_scopes (result,help);
  100420           0 :           fixupCopy_symbols (result,help);
  100421           0 :           fixupCopy_references (result,help);
  100422             : #else
  100423             :           fixupCopy(result,help);
  100424             : #endif
  100425             :        // Allow this to be called recursively, so accumulate the state.
  100426             :        // Also, clear the state in the SgCopyHelp object.
  100427             :        // help.clearState();
  100428             :         }
  100429             : 
  100430           0 :      return result;
  100431             :    }
  100432             : 
  100433             : 
  100434             : /* #line 100435 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  100435             : 
  100436             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100437             : 
  100438           0 : SgNode* SgSpawnStmt::copy ( SgCopyHelp& help) const
  100439             :    {
  100440           0 :      SgSpawnStmt* result = NULL;
  100441             : 
  100442             :   // printf ("Copy SgSpawnStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
  100443             : 
  100444             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  100445             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  100446             :   // The default value of the depth is 0, so after this call the depth is 1!
  100447           0 :      help.incrementDepth();
  100448             : 
  100449             : #if 0
  100450             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  100451             :   // but it is not generally true that things can only be copied once!
  100452             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  100453             :   // AstAttribute* existingAttribute = const_cast<SgSpawnStmt*>(this)->attribute["copied"];
  100454             :      bool previouslyCopied = const_cast<SgSpawnStmt*>(this)->attribute.exists("copied");
  100455             :      if (previouslyCopied == true)
  100456             :         {
  100457             :           this->get_file_info()->display("Called from copy SgSpawnStmt: debug");
  100458             :         }
  100459             :      ROSE_ASSERT(previouslyCopied == false);
  100460             : 
  100461             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  100462             :      AstAttribute* newAttribute = new AstAttribute();
  100463             :      ROSE_ASSERT(newAttribute != NULL);
  100464             : 
  100465             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  100466             :      const_cast<SgSpawnStmt*>(this)->attribute.add("copied",newAttribute);
  100467             : #endif
  100468             : 
  100469             :   // Copy data members from base classes
  100470             :   // Copy constructor parameter data member: startOfConstruct_copy
  100471             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  100472             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  100473           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  100474           0 :      if ( p_startOfConstruct != NULL ) 
  100475             :         { 
  100476           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  100477             :         } 
  100478             :        else 
  100479             :         { 
  100480             :           startOfConstruct_copy = NULL; 
  100481             :         } 
  100482             :   // Copy constructor parameter data member: the_func_copy
  100483           0 :      SgFunctionCallExp* the_func_copy; 
  100484             :   // case: not a listType for (using conditionalToCopyVariable)the_func
  100485           0 :           if (get_the_func() != NULL) 
  100486             :              { 
  100487           0 :                the_func_copy = static_cast<SgFunctionCallExp*>(help.copyAst(get_the_func())); 
  100488             :              } 
  100489             :             else 
  100490             :              { 
  100491             :                the_func_copy = NULL; 
  100492             :              } 
  100493             :  
  100494             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100495             : 
  100496             :   // Build an empty copy of this object (will be filled in, but 
  100497             :   // the parent can't be set and must be set by the caller)
  100498           0 :      result = new SgSpawnStmt(  startOfConstruct_copy, the_func_copy );
  100499           0 :      ROSE_ASSERT(result != NULL);
  100500             : 
  100501             :   // Copy data members of "this" class
  100502             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  100503             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  100504             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  100505           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  100506           0 :      if ( p_endOfConstruct != NULL ) 
  100507             :         { 
  100508           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  100509             :         } 
  100510             :        else 
  100511             :         { 
  100512             :           endOfConstruct_copy = NULL; 
  100513             :         } 
  100514             :   /* check for a valid pointer and delete if present */ 
  100515           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  100516             :   /* add assignment to result here */ 
  100517           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  100518             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  100519             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  100520             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  100521           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  100522           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  100523             :         { 
  100524           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  100525             :         } 
  100526             :        else 
  100527             :         { 
  100528             :           attachedPreprocessingInfoPtr_copy = NULL; 
  100529             :         } 
  100530             :   /* check for a valid pointer and delete if present */ 
  100531           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  100532             :   /* add assignment to result here */ 
  100533           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  100534             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  100535             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  100536             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  100537           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  100538           0 :      if ( p_attributeMechanism != NULL ) 
  100539             :         { 
  100540           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  100541             :         } 
  100542             :        else 
  100543             :         { 
  100544             :           attributeMechanism_copy = NULL; 
  100545             :         } 
  100546             :   /* check for a valid pointer and delete if present */ 
  100547           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  100548             :   /* add assignment to result here */ 
  100549           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  100550             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  100551             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  100552             :   // case: toBeCopied == COPY_DATA for numeric_label
  100553           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  100554           0 :      result->p_numeric_label = numeric_label_copy; 
  100555             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  100556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  100557             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  100558           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  100559           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  100560             :   // case: not a listType for (using conditionalToSetParent)the_func
  100561           0 :           if ( (the_func_copy != NULL) && (the_func_copy->get_parent() == NULL) && (isSgType(the_func_copy) == NULL) ) 
  100562             :              { 
  100563           0 :                the_func_copy->set_parent(result); 
  100564             :              } 
  100565             : 
  100566             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100567             : 
  100568             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  100569             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  100570             :   // fixupCopy(result,help);
  100571             : 
  100572             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  100573             :   // the Sg_File_Info objects that are built for the new IR nodes.
  100574           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  100575           0 :      if (locatedNode != NULL)
  100576             :         {
  100577             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  100578           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  100579           0 :           ROSE_ASSERT(start != NULL);
  100580             : #if 0
  100581             :        // Debugging information
  100582             :           if (start->get_parent() == NULL)
  100583             :              {
  100584             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100585             :              }
  100586             : #endif
  100587           0 :           start->set_parent(locatedNode);
  100588           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  100589             : 
  100590           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  100591             : 
  100592             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  100593             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  100594             :        // ROSE_ASSERT(end != NULL);
  100595           0 :           if (end == NULL)
  100596             :              {
  100597           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  100598             :              }
  100599             :             else
  100600             :              {
  100601             : #if 0
  100602             :             // Debugging information
  100603             :                if (end->get_parent() == NULL)
  100604             :                   {
  100605             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100606             :                   }
  100607             : #endif
  100608           0 :                end->set_parent(locatedNode);
  100609           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  100610             :              }
  100611             : 
  100612           0 :           SgExpression* expression = isSgExpression(result);
  100613           0 :           if (isSgExpression(this) != NULL)
  100614             :              {
  100615           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  100616             : 
  100617             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  100618           0 :                if (operatorPosition != NULL)
  100619             :                   {
  100620             : #if 0
  100621             :                  // Debugging information
  100622             :                     if (operatorPosition->get_parent() == NULL)
  100623             :                        {
  100624             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100625             :                        }
  100626             : #endif
  100627           0 :                     operatorPosition->set_parent(expression);
  100628           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  100629             :                   }
  100630             :              }
  100631             :         }
  100632             : 
  100633             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  100634           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  100635           0 :      if (initializedName != NULL)
  100636             :         {
  100637             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  100638           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  100639           0 :           ROSE_ASSERT(start != NULL);
  100640             : #if 0
  100641             :        // Debugging information
  100642             :           if (start->get_parent() == NULL)
  100643             :              {
  100644             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100645             :              }
  100646             : #endif
  100647           0 :           start->set_parent(initializedName);
  100648           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  100649             : 
  100650             : #if 0
  100651             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  100652             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  100653             : 
  100654             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  100655             :        // ROSE_ASSERT(end != NULL);
  100656             :           if (end == NULL)
  100657             :              {
  100658             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  100659             :              }
  100660             :             else
  100661             :              {
  100662             :                if (end->get_parent() == NULL)
  100663             :                   {
  100664             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100665             :                   }
  100666             :                end->set_parent(initializedName);
  100667             :                ROSE_ASSERT(end->get_parent() != NULL);
  100668             :              }
  100669             : #endif
  100670             :         }
  100671             : 
  100672             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  100673           0 :      help.insertCopiedNodePair(this,result);
  100674             : 
  100675             :   // printf ("End of copy SgSpawnStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
  100676             : 
  100677             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  100678             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  100679           0 :      help.decrementDepth();
  100680             : 
  100681             :   // Test if this is the root of the copy!
  100682           0 :      if (help.get_depth() == 0)
  100683             :         {
  100684             :        // This is the original calling node.
  100685             : 
  100686             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  100687             :        // printf ("Calling SgSpawnStmt::fixupCopy() (from root of AST being copied) \n");
  100688             : #if ALT_FIXUP_COPY
  100689             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  100690           0 :           fixupCopy_scopes (result,help);
  100691           0 :           fixupCopy_symbols (result,help);
  100692           0 :           fixupCopy_references (result,help);
  100693             : #else
  100694             :           fixupCopy(result,help);
  100695             : #endif
  100696             :        // Allow this to be called recursively, so accumulate the state.
  100697             :        // Also, clear the state in the SgCopyHelp object.
  100698             :        // help.clearState();
  100699             :         }
  100700             : 
  100701           0 :      return result;
  100702             :    }
  100703             : 
  100704             : 
  100705             : /* #line 100706 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  100706             : 
  100707             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100708             : 
  100709           0 : SgNode* SgNullStatement::copy ( SgCopyHelp& help) const
  100710             :    {
  100711           0 :      SgNullStatement* result = NULL;
  100712             : 
  100713             :   // printf ("Copy SgNullStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  100714             : 
  100715             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  100716             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  100717             :   // The default value of the depth is 0, so after this call the depth is 1!
  100718           0 :      help.incrementDepth();
  100719             : 
  100720             : #if 0
  100721             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  100722             :   // but it is not generally true that things can only be copied once!
  100723             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  100724             :   // AstAttribute* existingAttribute = const_cast<SgNullStatement*>(this)->attribute["copied"];
  100725             :      bool previouslyCopied = const_cast<SgNullStatement*>(this)->attribute.exists("copied");
  100726             :      if (previouslyCopied == true)
  100727             :         {
  100728             :           this->get_file_info()->display("Called from copy SgNullStatement: debug");
  100729             :         }
  100730             :      ROSE_ASSERT(previouslyCopied == false);
  100731             : 
  100732             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  100733             :      AstAttribute* newAttribute = new AstAttribute();
  100734             :      ROSE_ASSERT(newAttribute != NULL);
  100735             : 
  100736             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  100737             :      const_cast<SgNullStatement*>(this)->attribute.add("copied",newAttribute);
  100738             : #endif
  100739             : 
  100740             :   // Copy data members from base classes
  100741             :   // Copy constructor parameter data member: startOfConstruct_copy
  100742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  100743             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  100744           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  100745           0 :      if ( p_startOfConstruct != NULL ) 
  100746             :         { 
  100747           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  100748             :         } 
  100749             :        else 
  100750             :         { 
  100751             :           startOfConstruct_copy = NULL; 
  100752             :         } 
  100753             :  
  100754             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100755             : 
  100756             :   // Build an empty copy of this object (will be filled in, but 
  100757             :   // the parent can't be set and must be set by the caller)
  100758           0 :      result = new SgNullStatement(  startOfConstruct_copy );
  100759           0 :      ROSE_ASSERT(result != NULL);
  100760             : 
  100761             :   // Copy data members of "this" class
  100762             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  100763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  100764             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  100765           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  100766           0 :      if ( p_endOfConstruct != NULL ) 
  100767             :         { 
  100768           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  100769             :         } 
  100770             :        else 
  100771             :         { 
  100772             :           endOfConstruct_copy = NULL; 
  100773             :         } 
  100774             :   /* check for a valid pointer and delete if present */ 
  100775           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  100776             :   /* add assignment to result here */ 
  100777           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  100778             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  100779             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  100780             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  100781           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  100782           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  100783             :         { 
  100784           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  100785             :         } 
  100786             :        else 
  100787             :         { 
  100788             :           attachedPreprocessingInfoPtr_copy = NULL; 
  100789             :         } 
  100790             :   /* check for a valid pointer and delete if present */ 
  100791           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  100792             :   /* add assignment to result here */ 
  100793           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  100794             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  100795             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  100796             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  100797           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  100798           0 :      if ( p_attributeMechanism != NULL ) 
  100799             :         { 
  100800           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  100801             :         } 
  100802             :        else 
  100803             :         { 
  100804             :           attributeMechanism_copy = NULL; 
  100805             :         } 
  100806             :   /* check for a valid pointer and delete if present */ 
  100807           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  100808             :   /* add assignment to result here */ 
  100809           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  100810             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  100811             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  100812             :   // case: toBeCopied == COPY_DATA for numeric_label
  100813           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  100814           0 :      result->p_numeric_label = numeric_label_copy; 
  100815             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  100816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  100817             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  100818           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  100819           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  100820             : 
  100821             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100822             : 
  100823             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  100824             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  100825             :   // fixupCopy(result,help);
  100826             : 
  100827             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  100828             :   // the Sg_File_Info objects that are built for the new IR nodes.
  100829           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  100830           0 :      if (locatedNode != NULL)
  100831             :         {
  100832             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  100833           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  100834           0 :           ROSE_ASSERT(start != NULL);
  100835             : #if 0
  100836             :        // Debugging information
  100837             :           if (start->get_parent() == NULL)
  100838             :              {
  100839             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100840             :              }
  100841             : #endif
  100842           0 :           start->set_parent(locatedNode);
  100843           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  100844             : 
  100845           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  100846             : 
  100847             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  100848             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  100849             :        // ROSE_ASSERT(end != NULL);
  100850           0 :           if (end == NULL)
  100851             :              {
  100852           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  100853             :              }
  100854             :             else
  100855             :              {
  100856             : #if 0
  100857             :             // Debugging information
  100858             :                if (end->get_parent() == NULL)
  100859             :                   {
  100860             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100861             :                   }
  100862             : #endif
  100863           0 :                end->set_parent(locatedNode);
  100864           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  100865             :              }
  100866             : 
  100867           0 :           SgExpression* expression = isSgExpression(result);
  100868           0 :           if (isSgExpression(this) != NULL)
  100869             :              {
  100870           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  100871             : 
  100872             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  100873           0 :                if (operatorPosition != NULL)
  100874             :                   {
  100875             : #if 0
  100876             :                  // Debugging information
  100877             :                     if (operatorPosition->get_parent() == NULL)
  100878             :                        {
  100879             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100880             :                        }
  100881             : #endif
  100882           0 :                     operatorPosition->set_parent(expression);
  100883           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  100884             :                   }
  100885             :              }
  100886             :         }
  100887             : 
  100888             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  100889           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  100890           0 :      if (initializedName != NULL)
  100891             :         {
  100892             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  100893           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  100894           0 :           ROSE_ASSERT(start != NULL);
  100895             : #if 0
  100896             :        // Debugging information
  100897             :           if (start->get_parent() == NULL)
  100898             :              {
  100899             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100900             :              }
  100901             : #endif
  100902           0 :           start->set_parent(initializedName);
  100903           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  100904             : 
  100905             : #if 0
  100906             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  100907             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  100908             : 
  100909             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  100910             :        // ROSE_ASSERT(end != NULL);
  100911             :           if (end == NULL)
  100912             :              {
  100913             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  100914             :              }
  100915             :             else
  100916             :              {
  100917             :                if (end->get_parent() == NULL)
  100918             :                   {
  100919             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  100920             :                   }
  100921             :                end->set_parent(initializedName);
  100922             :                ROSE_ASSERT(end->get_parent() != NULL);
  100923             :              }
  100924             : #endif
  100925             :         }
  100926             : 
  100927             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  100928           0 :      help.insertCopiedNodePair(this,result);
  100929             : 
  100930             :   // printf ("End of copy SgNullStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  100931             : 
  100932             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  100933             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  100934           0 :      help.decrementDepth();
  100935             : 
  100936             :   // Test if this is the root of the copy!
  100937           0 :      if (help.get_depth() == 0)
  100938             :         {
  100939             :        // This is the original calling node.
  100940             : 
  100941             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  100942             :        // printf ("Calling SgNullStatement::fixupCopy() (from root of AST being copied) \n");
  100943             : #if ALT_FIXUP_COPY
  100944             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  100945           0 :           fixupCopy_scopes (result,help);
  100946           0 :           fixupCopy_symbols (result,help);
  100947           0 :           fixupCopy_references (result,help);
  100948             : #else
  100949             :           fixupCopy(result,help);
  100950             : #endif
  100951             :        // Allow this to be called recursively, so accumulate the state.
  100952             :        // Also, clear the state in the SgCopyHelp object.
  100953             :        // help.clearState();
  100954             :         }
  100955             : 
  100956           0 :      return result;
  100957             :    }
  100958             : 
  100959             : 
  100960             : /* #line 100961 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  100961             : 
  100962             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  100963             : 
  100964           0 : SgNode* SgVariantStatement::copy ( SgCopyHelp& help) const
  100965             :    {
  100966           0 :      SgVariantStatement* result = NULL;
  100967             : 
  100968             :   // printf ("Copy SgVariantStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  100969             : 
  100970             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  100971             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  100972             :   // The default value of the depth is 0, so after this call the depth is 1!
  100973           0 :      help.incrementDepth();
  100974             : 
  100975             : #if 0
  100976             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  100977             :   // but it is not generally true that things can only be copied once!
  100978             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  100979             :   // AstAttribute* existingAttribute = const_cast<SgVariantStatement*>(this)->attribute["copied"];
  100980             :      bool previouslyCopied = const_cast<SgVariantStatement*>(this)->attribute.exists("copied");
  100981             :      if (previouslyCopied == true)
  100982             :         {
  100983             :           this->get_file_info()->display("Called from copy SgVariantStatement: debug");
  100984             :         }
  100985             :      ROSE_ASSERT(previouslyCopied == false);
  100986             : 
  100987             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  100988             :      AstAttribute* newAttribute = new AstAttribute();
  100989             :      ROSE_ASSERT(newAttribute != NULL);
  100990             : 
  100991             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  100992             :      const_cast<SgVariantStatement*>(this)->attribute.add("copied",newAttribute);
  100993             : #endif
  100994             : 
  100995             :   // Copy data members from base classes
  100996             :   // Copy constructor parameter data member: startOfConstruct_copy
  100997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  100998             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  100999           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  101000           0 :      if ( p_startOfConstruct != NULL ) 
  101001             :         { 
  101002           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  101003             :         } 
  101004             :        else 
  101005             :         { 
  101006             :           startOfConstruct_copy = NULL; 
  101007             :         } 
  101008             :  
  101009             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101010             : 
  101011             :   // Build an empty copy of this object (will be filled in, but 
  101012             :   // the parent can't be set and must be set by the caller)
  101013           0 :      result = new SgVariantStatement(  startOfConstruct_copy );
  101014           0 :      ROSE_ASSERT(result != NULL);
  101015             : 
  101016             :   // Copy data members of "this" class
  101017             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  101018             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  101019             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  101020           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  101021           0 :      if ( p_endOfConstruct != NULL ) 
  101022             :         { 
  101023           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  101024             :         } 
  101025             :        else 
  101026             :         { 
  101027             :           endOfConstruct_copy = NULL; 
  101028             :         } 
  101029             :   /* check for a valid pointer and delete if present */ 
  101030           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  101031             :   /* add assignment to result here */ 
  101032           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  101033             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  101034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  101035             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  101036           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  101037           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  101038             :         { 
  101039           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  101040             :         } 
  101041             :        else 
  101042             :         { 
  101043             :           attachedPreprocessingInfoPtr_copy = NULL; 
  101044             :         } 
  101045             :   /* check for a valid pointer and delete if present */ 
  101046           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  101047             :   /* add assignment to result here */ 
  101048           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  101049             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  101050             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  101051             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  101052           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  101053           0 :      if ( p_attributeMechanism != NULL ) 
  101054             :         { 
  101055           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  101056             :         } 
  101057             :        else 
  101058             :         { 
  101059             :           attributeMechanism_copy = NULL; 
  101060             :         } 
  101061             :   /* check for a valid pointer and delete if present */ 
  101062           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  101063             :   /* add assignment to result here */ 
  101064           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  101065             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  101066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  101067             :   // case: toBeCopied == COPY_DATA for numeric_label
  101068           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  101069           0 :      result->p_numeric_label = numeric_label_copy; 
  101070             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  101071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  101072             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  101073           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  101074           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  101075             : 
  101076             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101077             : 
  101078             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  101079             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  101080             :   // fixupCopy(result,help);
  101081             : 
  101082             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  101083             :   // the Sg_File_Info objects that are built for the new IR nodes.
  101084           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  101085           0 :      if (locatedNode != NULL)
  101086             :         {
  101087             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  101088           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  101089           0 :           ROSE_ASSERT(start != NULL);
  101090             : #if 0
  101091             :        // Debugging information
  101092             :           if (start->get_parent() == NULL)
  101093             :              {
  101094             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101095             :              }
  101096             : #endif
  101097           0 :           start->set_parent(locatedNode);
  101098           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  101099             : 
  101100           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  101101             : 
  101102             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  101103             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  101104             :        // ROSE_ASSERT(end != NULL);
  101105           0 :           if (end == NULL)
  101106             :              {
  101107           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  101108             :              }
  101109             :             else
  101110             :              {
  101111             : #if 0
  101112             :             // Debugging information
  101113             :                if (end->get_parent() == NULL)
  101114             :                   {
  101115             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101116             :                   }
  101117             : #endif
  101118           0 :                end->set_parent(locatedNode);
  101119           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  101120             :              }
  101121             : 
  101122           0 :           SgExpression* expression = isSgExpression(result);
  101123           0 :           if (isSgExpression(this) != NULL)
  101124             :              {
  101125           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  101126             : 
  101127             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  101128           0 :                if (operatorPosition != NULL)
  101129             :                   {
  101130             : #if 0
  101131             :                  // Debugging information
  101132             :                     if (operatorPosition->get_parent() == NULL)
  101133             :                        {
  101134             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101135             :                        }
  101136             : #endif
  101137           0 :                     operatorPosition->set_parent(expression);
  101138           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  101139             :                   }
  101140             :              }
  101141             :         }
  101142             : 
  101143             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  101144           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  101145           0 :      if (initializedName != NULL)
  101146             :         {
  101147             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  101148           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  101149           0 :           ROSE_ASSERT(start != NULL);
  101150             : #if 0
  101151             :        // Debugging information
  101152             :           if (start->get_parent() == NULL)
  101153             :              {
  101154             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101155             :              }
  101156             : #endif
  101157           0 :           start->set_parent(initializedName);
  101158           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  101159             : 
  101160             : #if 0
  101161             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  101162             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  101163             : 
  101164             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  101165             :        // ROSE_ASSERT(end != NULL);
  101166             :           if (end == NULL)
  101167             :              {
  101168             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  101169             :              }
  101170             :             else
  101171             :              {
  101172             :                if (end->get_parent() == NULL)
  101173             :                   {
  101174             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101175             :                   }
  101176             :                end->set_parent(initializedName);
  101177             :                ROSE_ASSERT(end->get_parent() != NULL);
  101178             :              }
  101179             : #endif
  101180             :         }
  101181             : 
  101182             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  101183           0 :      help.insertCopiedNodePair(this,result);
  101184             : 
  101185             :   // printf ("End of copy SgVariantStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  101186             : 
  101187             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  101188             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  101189           0 :      help.decrementDepth();
  101190             : 
  101191             :   // Test if this is the root of the copy!
  101192           0 :      if (help.get_depth() == 0)
  101193             :         {
  101194             :        // This is the original calling node.
  101195             : 
  101196             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  101197             :        // printf ("Calling SgVariantStatement::fixupCopy() (from root of AST being copied) \n");
  101198             : #if ALT_FIXUP_COPY
  101199             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  101200           0 :           fixupCopy_scopes (result,help);
  101201           0 :           fixupCopy_symbols (result,help);
  101202           0 :           fixupCopy_references (result,help);
  101203             : #else
  101204             :           fixupCopy(result,help);
  101205             : #endif
  101206             :        // Allow this to be called recursively, so accumulate the state.
  101207             :        // Also, clear the state in the SgCopyHelp object.
  101208             :        // help.clearState();
  101209             :         }
  101210             : 
  101211           0 :      return result;
  101212             :    }
  101213             : 
  101214             : 
  101215             : /* #line 101216 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  101216             : 
  101217             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101218             : 
  101219           2 : SgNode* SgForInitStatement::copy ( SgCopyHelp& help) const
  101220             :    {
  101221           2 :      SgForInitStatement* result = NULL;
  101222             : 
  101223             :   // printf ("Copy SgForInitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  101224             : 
  101225             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  101226             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  101227             :   // The default value of the depth is 0, so after this call the depth is 1!
  101228           2 :      help.incrementDepth();
  101229             : 
  101230             : #if 0
  101231             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  101232             :   // but it is not generally true that things can only be copied once!
  101233             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  101234             :   // AstAttribute* existingAttribute = const_cast<SgForInitStatement*>(this)->attribute["copied"];
  101235             :      bool previouslyCopied = const_cast<SgForInitStatement*>(this)->attribute.exists("copied");
  101236             :      if (previouslyCopied == true)
  101237             :         {
  101238             :           this->get_file_info()->display("Called from copy SgForInitStatement: debug");
  101239             :         }
  101240             :      ROSE_ASSERT(previouslyCopied == false);
  101241             : 
  101242             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  101243             :      AstAttribute* newAttribute = new AstAttribute();
  101244             :      ROSE_ASSERT(newAttribute != NULL);
  101245             : 
  101246             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  101247             :      const_cast<SgForInitStatement*>(this)->attribute.add("copied",newAttribute);
  101248             : #endif
  101249             : 
  101250             :   // Copy data members from base classes
  101251             :   // Copy constructor parameter data member: startOfConstruct_copy
  101252             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  101253             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  101254           2 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  101255           2 :      if ( p_startOfConstruct != NULL ) 
  101256             :         { 
  101257           2 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  101258             :         } 
  101259             :        else 
  101260             :         { 
  101261             :           startOfConstruct_copy = NULL; 
  101262             :         } 
  101263             :  
  101264             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101265             : 
  101266             :   // Build an empty copy of this object (will be filled in, but 
  101267             :   // the parent can't be set and must be set by the caller)
  101268           2 :      result = new SgForInitStatement(  startOfConstruct_copy );
  101269           2 :      ROSE_ASSERT(result != NULL);
  101270             : 
  101271             :   // Copy data members of "this" class
  101272             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  101273             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  101274             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  101275           2 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  101276           2 :      if ( p_endOfConstruct != NULL ) 
  101277             :         { 
  101278           2 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  101279             :         } 
  101280             :        else 
  101281             :         { 
  101282             :           endOfConstruct_copy = NULL; 
  101283             :         } 
  101284             :   /* check for a valid pointer and delete if present */ 
  101285           2 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  101286             :   /* add assignment to result here */ 
  101287           2 :      result->p_endOfConstruct = endOfConstruct_copy; 
  101288             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  101289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  101290             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  101291           2 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  101292           2 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  101293             :         { 
  101294           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  101295             :         } 
  101296             :        else 
  101297             :         { 
  101298             :           attachedPreprocessingInfoPtr_copy = NULL; 
  101299             :         } 
  101300             :   /* check for a valid pointer and delete if present */ 
  101301           2 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  101302             :   /* add assignment to result here */ 
  101303           2 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  101304             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  101305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  101306             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  101307           2 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  101308           2 :      if ( p_attributeMechanism != NULL ) 
  101309             :         { 
  101310           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  101311             :         } 
  101312             :        else 
  101313             :         { 
  101314             :           attributeMechanism_copy = NULL; 
  101315             :         } 
  101316             :   /* check for a valid pointer and delete if present */ 
  101317           2 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  101318             :   /* add assignment to result here */ 
  101319           2 :      result->p_attributeMechanism = attributeMechanism_copy; 
  101320             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  101321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  101322             :   // case: toBeCopied == COPY_DATA for numeric_label
  101323           2 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  101324           2 :      result->p_numeric_label = numeric_label_copy; 
  101325             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  101326             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  101327             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  101328           2 :      int source_sequence_value_copy = p_source_sequence_value; 
  101329           2 :      result->p_source_sequence_value = source_sequence_value_copy; 
  101330             :   // Copy non-constructor parameter data member (list access function): result->get_init_stmt()
  101331           2 :      SgStatementPtrList init_stmt_copy; 
  101332             :   // case: listType for init_stmt
  101333             :   // case: listType (typeIsPointerToList == false) for init_stmt
  101334           2 :      SgStatementPtrList::const_iterator source_init_stmt_iterator = get_init_stmt().begin(); 
  101335           4 :      for ( /* empty by design */; source_init_stmt_iterator != get_init_stmt().end(); ++source_init_stmt_iterator) 
  101336             :         { 
  101337           2 :           SgStatement* source_list_element = *source_init_stmt_iterator; 
  101338           2 :           SgStatement* copy_list_element = NULL; 
  101339           2 :           if (source_list_element != NULL) 
  101340             :              { 
  101341           2 :                copy_list_element = static_cast<SgStatement*>(help.copyAst(*source_init_stmt_iterator)); 
  101342             :              } 
  101343             :             else 
  101344             :              { 
  101345             :                copy_list_element = NULL; 
  101346             :              } 
  101347           2 :           init_stmt_copy.push_back(copy_list_element); 
  101348             :         } 
  101349           2 :      result->p_init_stmt = init_stmt_copy; 
  101350             :   // case: listType for init_stmt
  101351             :   // case: listType (typeIsPointerToList == false) for init_stmt
  101352           2 :      SgStatementPtrList::const_iterator init_stmt_iterator = result->get_init_stmt().begin(); 
  101353           4 :      for ( /* empty by design */; init_stmt_iterator != result->get_init_stmt().end(); ++init_stmt_iterator) 
  101354             :         { 
  101355           2 :           SgStatement* list_element = *init_stmt_iterator; 
  101356           2 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  101357             :              { 
  101358           2 :                list_element->set_parent(result); 
  101359             :              } 
  101360             :         } 
  101361             : 
  101362             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101363             : 
  101364             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  101365             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  101366             :   // fixupCopy(result,help);
  101367             : 
  101368             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  101369             :   // the Sg_File_Info objects that are built for the new IR nodes.
  101370           2 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  101371           2 :      if (locatedNode != NULL)
  101372             :         {
  101373             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  101374           2 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  101375           2 :           ROSE_ASSERT(start != NULL);
  101376             : #if 0
  101377             :        // Debugging information
  101378             :           if (start->get_parent() == NULL)
  101379             :              {
  101380             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101381             :              }
  101382             : #endif
  101383           2 :           start->set_parent(locatedNode);
  101384           2 :           ROSE_ASSERT(start->get_parent() != NULL);
  101385             : 
  101386           2 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  101387             : 
  101388             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  101389             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  101390             :        // ROSE_ASSERT(end != NULL);
  101391           2 :           if (end == NULL)
  101392             :              {
  101393           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  101394             :              }
  101395             :             else
  101396             :              {
  101397             : #if 0
  101398             :             // Debugging information
  101399             :                if (end->get_parent() == NULL)
  101400             :                   {
  101401             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101402             :                   }
  101403             : #endif
  101404           2 :                end->set_parent(locatedNode);
  101405           2 :                ROSE_ASSERT(end->get_parent() != NULL);
  101406             :              }
  101407             : 
  101408           2 :           SgExpression* expression = isSgExpression(result);
  101409           2 :           if (isSgExpression(this) != NULL)
  101410             :              {
  101411           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  101412             : 
  101413             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  101414           0 :                if (operatorPosition != NULL)
  101415             :                   {
  101416             : #if 0
  101417             :                  // Debugging information
  101418             :                     if (operatorPosition->get_parent() == NULL)
  101419             :                        {
  101420             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101421             :                        }
  101422             : #endif
  101423           0 :                     operatorPosition->set_parent(expression);
  101424           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  101425             :                   }
  101426             :              }
  101427             :         }
  101428             : 
  101429             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  101430           2 :      SgInitializedName* initializedName = isSgInitializedName(result);
  101431           2 :      if (initializedName != NULL)
  101432             :         {
  101433             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  101434           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  101435           0 :           ROSE_ASSERT(start != NULL);
  101436             : #if 0
  101437             :        // Debugging information
  101438             :           if (start->get_parent() == NULL)
  101439             :              {
  101440             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101441             :              }
  101442             : #endif
  101443           0 :           start->set_parent(initializedName);
  101444           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  101445             : 
  101446             : #if 0
  101447             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  101448             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  101449             : 
  101450             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  101451             :        // ROSE_ASSERT(end != NULL);
  101452             :           if (end == NULL)
  101453             :              {
  101454             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  101455             :              }
  101456             :             else
  101457             :              {
  101458             :                if (end->get_parent() == NULL)
  101459             :                   {
  101460             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101461             :                   }
  101462             :                end->set_parent(initializedName);
  101463             :                ROSE_ASSERT(end->get_parent() != NULL);
  101464             :              }
  101465             : #endif
  101466             :         }
  101467             : 
  101468             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  101469           2 :      help.insertCopiedNodePair(this,result);
  101470             : 
  101471             :   // printf ("End of copy SgForInitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  101472             : 
  101473             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  101474             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  101475           2 :      help.decrementDepth();
  101476             : 
  101477             :   // Test if this is the root of the copy!
  101478           2 :      if (help.get_depth() == 0)
  101479             :         {
  101480             :        // This is the original calling node.
  101481             : 
  101482             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  101483             :        // printf ("Calling SgForInitStatement::fixupCopy() (from root of AST being copied) \n");
  101484             : #if ALT_FIXUP_COPY
  101485             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  101486           0 :           fixupCopy_scopes (result,help);
  101487           0 :           fixupCopy_symbols (result,help);
  101488           0 :           fixupCopy_references (result,help);
  101489             : #else
  101490             :           fixupCopy(result,help);
  101491             : #endif
  101492             :        // Allow this to be called recursively, so accumulate the state.
  101493             :        // Also, clear the state in the SgCopyHelp object.
  101494             :        // help.clearState();
  101495             :         }
  101496             : 
  101497           4 :      return result;
  101498             :    }
  101499             : 
  101500             : 
  101501             : /* #line 101502 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  101502             : 
  101503             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101504             : 
  101505           0 : SgNode* SgCatchStatementSeq::copy ( SgCopyHelp& help) const
  101506             :    {
  101507           0 :      SgCatchStatementSeq* result = NULL;
  101508             : 
  101509             :   // printf ("Copy SgCatchStatementSeq = %p = %s \n",this,SageInterface::get_name(this).c_str());
  101510             : 
  101511             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  101512             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  101513             :   // The default value of the depth is 0, so after this call the depth is 1!
  101514           0 :      help.incrementDepth();
  101515             : 
  101516             : #if 0
  101517             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  101518             :   // but it is not generally true that things can only be copied once!
  101519             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  101520             :   // AstAttribute* existingAttribute = const_cast<SgCatchStatementSeq*>(this)->attribute["copied"];
  101521             :      bool previouslyCopied = const_cast<SgCatchStatementSeq*>(this)->attribute.exists("copied");
  101522             :      if (previouslyCopied == true)
  101523             :         {
  101524             :           this->get_file_info()->display("Called from copy SgCatchStatementSeq: debug");
  101525             :         }
  101526             :      ROSE_ASSERT(previouslyCopied == false);
  101527             : 
  101528             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  101529             :      AstAttribute* newAttribute = new AstAttribute();
  101530             :      ROSE_ASSERT(newAttribute != NULL);
  101531             : 
  101532             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  101533             :      const_cast<SgCatchStatementSeq*>(this)->attribute.add("copied",newAttribute);
  101534             : #endif
  101535             : 
  101536             :   // Copy data members from base classes
  101537             :   // Copy constructor parameter data member: startOfConstruct_copy
  101538             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  101539             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  101540           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  101541           0 :      if ( p_startOfConstruct != NULL ) 
  101542             :         { 
  101543           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  101544             :         } 
  101545             :        else 
  101546             :         { 
  101547             :           startOfConstruct_copy = NULL; 
  101548             :         } 
  101549             :  
  101550             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101551             : 
  101552             :   // Build an empty copy of this object (will be filled in, but 
  101553             :   // the parent can't be set and must be set by the caller)
  101554           0 :      result = new SgCatchStatementSeq(  startOfConstruct_copy );
  101555           0 :      ROSE_ASSERT(result != NULL);
  101556             : 
  101557             :   // Copy data members of "this" class
  101558             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  101559             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  101560             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  101561           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  101562           0 :      if ( p_endOfConstruct != NULL ) 
  101563             :         { 
  101564           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  101565             :         } 
  101566             :        else 
  101567             :         { 
  101568             :           endOfConstruct_copy = NULL; 
  101569             :         } 
  101570             :   /* check for a valid pointer and delete if present */ 
  101571           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  101572             :   /* add assignment to result here */ 
  101573           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  101574             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  101575             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  101576             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  101577           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  101578           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  101579             :         { 
  101580           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  101581             :         } 
  101582             :        else 
  101583             :         { 
  101584             :           attachedPreprocessingInfoPtr_copy = NULL; 
  101585             :         } 
  101586             :   /* check for a valid pointer and delete if present */ 
  101587           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  101588             :   /* add assignment to result here */ 
  101589           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  101590             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  101591             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  101592             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  101593           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  101594           0 :      if ( p_attributeMechanism != NULL ) 
  101595             :         { 
  101596           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  101597             :         } 
  101598             :        else 
  101599             :         { 
  101600             :           attributeMechanism_copy = NULL; 
  101601             :         } 
  101602             :   /* check for a valid pointer and delete if present */ 
  101603           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  101604             :   /* add assignment to result here */ 
  101605           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  101606             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  101607             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  101608             :   // case: toBeCopied == COPY_DATA for numeric_label
  101609           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  101610           0 :      result->p_numeric_label = numeric_label_copy; 
  101611             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  101612             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  101613             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  101614           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  101615           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  101616             :   // Copy non-constructor parameter data member (list access function): result->get_catch_statement_seq()
  101617           0 :      SgStatementPtrList catch_statement_seq_copy; 
  101618             :   // case: listType for catch_statement_seq
  101619             :   // case: listType (typeIsPointerToList == false) for catch_statement_seq
  101620           0 :      SgStatementPtrList::const_iterator source_catch_statement_seq_iterator = get_catch_statement_seq().begin(); 
  101621           0 :      for ( /* empty by design */; source_catch_statement_seq_iterator != get_catch_statement_seq().end(); ++source_catch_statement_seq_iterator) 
  101622             :         { 
  101623           0 :           SgStatement* source_list_element = *source_catch_statement_seq_iterator; 
  101624           0 :           SgStatement* copy_list_element = NULL; 
  101625           0 :           if (source_list_element != NULL) 
  101626             :              { 
  101627           0 :                copy_list_element = static_cast<SgStatement*>(help.copyAst(*source_catch_statement_seq_iterator)); 
  101628             :              } 
  101629             :             else 
  101630             :              { 
  101631             :                copy_list_element = NULL; 
  101632             :              } 
  101633           0 :           catch_statement_seq_copy.push_back(copy_list_element); 
  101634             :         } 
  101635           0 :      result->p_catch_statement_seq = catch_statement_seq_copy; 
  101636             :   // case: listType for catch_statement_seq
  101637             :   // case: listType (typeIsPointerToList == false) for catch_statement_seq
  101638           0 :      SgStatementPtrList::const_iterator catch_statement_seq_iterator = result->get_catch_statement_seq().begin(); 
  101639           0 :      for ( /* empty by design */; catch_statement_seq_iterator != result->get_catch_statement_seq().end(); ++catch_statement_seq_iterator) 
  101640             :         { 
  101641           0 :           SgStatement* list_element = *catch_statement_seq_iterator; 
  101642           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  101643             :              { 
  101644           0 :                list_element->set_parent(result); 
  101645             :              } 
  101646             :         } 
  101647             : 
  101648             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101649             : 
  101650             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  101651             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  101652             :   // fixupCopy(result,help);
  101653             : 
  101654             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  101655             :   // the Sg_File_Info objects that are built for the new IR nodes.
  101656           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  101657           0 :      if (locatedNode != NULL)
  101658             :         {
  101659             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  101660           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  101661           0 :           ROSE_ASSERT(start != NULL);
  101662             : #if 0
  101663             :        // Debugging information
  101664             :           if (start->get_parent() == NULL)
  101665             :              {
  101666             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101667             :              }
  101668             : #endif
  101669           0 :           start->set_parent(locatedNode);
  101670           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  101671             : 
  101672           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  101673             : 
  101674             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  101675             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  101676             :        // ROSE_ASSERT(end != NULL);
  101677           0 :           if (end == NULL)
  101678             :              {
  101679           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  101680             :              }
  101681             :             else
  101682             :              {
  101683             : #if 0
  101684             :             // Debugging information
  101685             :                if (end->get_parent() == NULL)
  101686             :                   {
  101687             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101688             :                   }
  101689             : #endif
  101690           0 :                end->set_parent(locatedNode);
  101691           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  101692             :              }
  101693             : 
  101694           0 :           SgExpression* expression = isSgExpression(result);
  101695           0 :           if (isSgExpression(this) != NULL)
  101696             :              {
  101697           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  101698             : 
  101699             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  101700           0 :                if (operatorPosition != NULL)
  101701             :                   {
  101702             : #if 0
  101703             :                  // Debugging information
  101704             :                     if (operatorPosition->get_parent() == NULL)
  101705             :                        {
  101706             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101707             :                        }
  101708             : #endif
  101709           0 :                     operatorPosition->set_parent(expression);
  101710           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  101711             :                   }
  101712             :              }
  101713             :         }
  101714             : 
  101715             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  101716           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  101717           0 :      if (initializedName != NULL)
  101718             :         {
  101719             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  101720           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  101721           0 :           ROSE_ASSERT(start != NULL);
  101722             : #if 0
  101723             :        // Debugging information
  101724             :           if (start->get_parent() == NULL)
  101725             :              {
  101726             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101727             :              }
  101728             : #endif
  101729           0 :           start->set_parent(initializedName);
  101730           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  101731             : 
  101732             : #if 0
  101733             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  101734             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  101735             : 
  101736             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  101737             :        // ROSE_ASSERT(end != NULL);
  101738             :           if (end == NULL)
  101739             :              {
  101740             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  101741             :              }
  101742             :             else
  101743             :              {
  101744             :                if (end->get_parent() == NULL)
  101745             :                   {
  101746             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101747             :                   }
  101748             :                end->set_parent(initializedName);
  101749             :                ROSE_ASSERT(end->get_parent() != NULL);
  101750             :              }
  101751             : #endif
  101752             :         }
  101753             : 
  101754             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  101755           0 :      help.insertCopiedNodePair(this,result);
  101756             : 
  101757             :   // printf ("End of copy SgCatchStatementSeq = %p = %s \n",this,SageInterface::get_name(this).c_str());
  101758             : 
  101759             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  101760             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  101761           0 :      help.decrementDepth();
  101762             : 
  101763             :   // Test if this is the root of the copy!
  101764           0 :      if (help.get_depth() == 0)
  101765             :         {
  101766             :        // This is the original calling node.
  101767             : 
  101768             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  101769             :        // printf ("Calling SgCatchStatementSeq::fixupCopy() (from root of AST being copied) \n");
  101770             : #if ALT_FIXUP_COPY
  101771             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  101772           0 :           fixupCopy_scopes (result,help);
  101773           0 :           fixupCopy_symbols (result,help);
  101774           0 :           fixupCopy_references (result,help);
  101775             : #else
  101776             :           fixupCopy(result,help);
  101777             : #endif
  101778             :        // Allow this to be called recursively, so accumulate the state.
  101779             :        // Also, clear the state in the SgCopyHelp object.
  101780             :        // help.clearState();
  101781             :         }
  101782             : 
  101783           0 :      return result;
  101784             :    }
  101785             : 
  101786             : 
  101787             : /* #line 101788 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  101788             : 
  101789             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101790             : 
  101791           0 : SgNode* SgProcessControlStatement::copy ( SgCopyHelp& help) const
  101792             :    {
  101793           0 :      SgProcessControlStatement* result = NULL;
  101794             : 
  101795             :   // printf ("Copy SgProcessControlStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  101796             : 
  101797             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  101798             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  101799             :   // The default value of the depth is 0, so after this call the depth is 1!
  101800           0 :      help.incrementDepth();
  101801             : 
  101802             : #if 0
  101803             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  101804             :   // but it is not generally true that things can only be copied once!
  101805             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  101806             :   // AstAttribute* existingAttribute = const_cast<SgProcessControlStatement*>(this)->attribute["copied"];
  101807             :      bool previouslyCopied = const_cast<SgProcessControlStatement*>(this)->attribute.exists("copied");
  101808             :      if (previouslyCopied == true)
  101809             :         {
  101810             :           this->get_file_info()->display("Called from copy SgProcessControlStatement: debug");
  101811             :         }
  101812             :      ROSE_ASSERT(previouslyCopied == false);
  101813             : 
  101814             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  101815             :      AstAttribute* newAttribute = new AstAttribute();
  101816             :      ROSE_ASSERT(newAttribute != NULL);
  101817             : 
  101818             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  101819             :      const_cast<SgProcessControlStatement*>(this)->attribute.add("copied",newAttribute);
  101820             : #endif
  101821             : 
  101822             :   // Copy data members from base classes
  101823             :   // Copy constructor parameter data member: startOfConstruct_copy
  101824             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  101825             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  101826           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  101827           0 :      if ( p_startOfConstruct != NULL ) 
  101828             :         { 
  101829           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  101830             :         } 
  101831             :        else 
  101832             :         { 
  101833             :           startOfConstruct_copy = NULL; 
  101834             :         } 
  101835             :   // Copy constructor parameter data member: code_copy
  101836           0 :      SgExpression* code_copy; 
  101837             :   // case: not a listType for (using conditionalToCopyVariable)code
  101838           0 :           if (get_code() != NULL) 
  101839             :              { 
  101840           0 :                code_copy = static_cast<SgExpression*>(help.copyAst(get_code())); 
  101841             :              } 
  101842             :             else 
  101843             :              { 
  101844             :                code_copy = NULL; 
  101845             :              } 
  101846             :  
  101847             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101848             : 
  101849             :   // Build an empty copy of this object (will be filled in, but 
  101850             :   // the parent can't be set and must be set by the caller)
  101851           0 :      result = new SgProcessControlStatement(  startOfConstruct_copy, code_copy );
  101852           0 :      ROSE_ASSERT(result != NULL);
  101853             : 
  101854             :   // Copy data members of "this" class
  101855             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  101856             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  101857             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  101858           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  101859           0 :      if ( p_endOfConstruct != NULL ) 
  101860             :         { 
  101861           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  101862             :         } 
  101863             :        else 
  101864             :         { 
  101865             :           endOfConstruct_copy = NULL; 
  101866             :         } 
  101867             :   /* check for a valid pointer and delete if present */ 
  101868           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  101869             :   /* add assignment to result here */ 
  101870           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  101871             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  101872             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  101873             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  101874           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  101875           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  101876             :         { 
  101877           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  101878             :         } 
  101879             :        else 
  101880             :         { 
  101881             :           attachedPreprocessingInfoPtr_copy = NULL; 
  101882             :         } 
  101883             :   /* check for a valid pointer and delete if present */ 
  101884           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  101885             :   /* add assignment to result here */ 
  101886           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  101887             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  101888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  101889             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  101890           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  101891           0 :      if ( p_attributeMechanism != NULL ) 
  101892             :         { 
  101893           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  101894             :         } 
  101895             :        else 
  101896             :         { 
  101897             :           attributeMechanism_copy = NULL; 
  101898             :         } 
  101899             :   /* check for a valid pointer and delete if present */ 
  101900           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  101901             :   /* add assignment to result here */ 
  101902           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  101903             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  101904             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  101905             :   // case: toBeCopied == COPY_DATA for numeric_label
  101906           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  101907           0 :      result->p_numeric_label = numeric_label_copy; 
  101908             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  101909             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  101910             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  101911           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  101912           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  101913             :   // Copy non-constructor parameter data member (access function): control_kind_copy
  101914             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for control_kind
  101915             :   // case: toBeCopied == COPY_DATA for control_kind
  101916           0 :      SgProcessControlStatement::control_enum control_kind_copy = p_control_kind; 
  101917           0 :      result->p_control_kind = control_kind_copy; 
  101918             :   // Copy non-constructor parameter data member (access function): quiet_copy
  101919           0 :      SgExpression* quiet_copy; 
  101920             :   // case: not a listType for (using conditionalToCopyVariable)quiet
  101921           0 :           if (get_quiet() != NULL) 
  101922             :              { 
  101923           0 :                quiet_copy = static_cast<SgExpression*>(help.copyAst(get_quiet())); 
  101924             :              } 
  101925             :             else 
  101926             :              { 
  101927             :                quiet_copy = NULL; 
  101928             :              } 
  101929             :   /* check for a valid pointer and delete if present */ 
  101930           0 :      if (result->p_quiet != NULL) delete result->p_quiet; 
  101931           0 :      result->p_quiet = quiet_copy; 
  101932             :   // case: not a listType for (using conditionalToSetParent)quiet
  101933           0 :           if ( (quiet_copy != NULL) && (quiet_copy->get_parent() == NULL) && (isSgType(quiet_copy) == NULL) ) 
  101934             :              { 
  101935           0 :                quiet_copy->set_parent(result); 
  101936             :              } 
  101937             :   // case: not a listType for (using conditionalToSetParent)code
  101938           0 :           if ( (code_copy != NULL) && (code_copy->get_parent() == NULL) && (isSgType(code_copy) == NULL) ) 
  101939             :              { 
  101940           0 :                code_copy->set_parent(result); 
  101941             :              } 
  101942             : 
  101943             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  101944             : 
  101945             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  101946             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  101947             :   // fixupCopy(result,help);
  101948             : 
  101949             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  101950             :   // the Sg_File_Info objects that are built for the new IR nodes.
  101951           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  101952           0 :      if (locatedNode != NULL)
  101953             :         {
  101954             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  101955           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  101956           0 :           ROSE_ASSERT(start != NULL);
  101957             : #if 0
  101958             :        // Debugging information
  101959             :           if (start->get_parent() == NULL)
  101960             :              {
  101961             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101962             :              }
  101963             : #endif
  101964           0 :           start->set_parent(locatedNode);
  101965           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  101966             : 
  101967           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  101968             : 
  101969             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  101970             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  101971             :        // ROSE_ASSERT(end != NULL);
  101972           0 :           if (end == NULL)
  101973             :              {
  101974           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  101975             :              }
  101976             :             else
  101977             :              {
  101978             : #if 0
  101979             :             // Debugging information
  101980             :                if (end->get_parent() == NULL)
  101981             :                   {
  101982             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  101983             :                   }
  101984             : #endif
  101985           0 :                end->set_parent(locatedNode);
  101986           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  101987             :              }
  101988             : 
  101989           0 :           SgExpression* expression = isSgExpression(result);
  101990           0 :           if (isSgExpression(this) != NULL)
  101991             :              {
  101992           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  101993             : 
  101994             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  101995           0 :                if (operatorPosition != NULL)
  101996             :                   {
  101997             : #if 0
  101998             :                  // Debugging information
  101999             :                     if (operatorPosition->get_parent() == NULL)
  102000             :                        {
  102001             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102002             :                        }
  102003             : #endif
  102004           0 :                     operatorPosition->set_parent(expression);
  102005           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  102006             :                   }
  102007             :              }
  102008             :         }
  102009             : 
  102010             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  102011           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  102012           0 :      if (initializedName != NULL)
  102013             :         {
  102014             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  102015           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  102016           0 :           ROSE_ASSERT(start != NULL);
  102017             : #if 0
  102018             :        // Debugging information
  102019             :           if (start->get_parent() == NULL)
  102020             :              {
  102021             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102022             :              }
  102023             : #endif
  102024           0 :           start->set_parent(initializedName);
  102025           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  102026             : 
  102027             : #if 0
  102028             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  102029             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  102030             : 
  102031             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  102032             :        // ROSE_ASSERT(end != NULL);
  102033             :           if (end == NULL)
  102034             :              {
  102035             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  102036             :              }
  102037             :             else
  102038             :              {
  102039             :                if (end->get_parent() == NULL)
  102040             :                   {
  102041             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102042             :                   }
  102043             :                end->set_parent(initializedName);
  102044             :                ROSE_ASSERT(end->get_parent() != NULL);
  102045             :              }
  102046             : #endif
  102047             :         }
  102048             : 
  102049             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  102050           0 :      help.insertCopiedNodePair(this,result);
  102051             : 
  102052             :   // printf ("End of copy SgProcessControlStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  102053             : 
  102054             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  102055             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  102056           0 :      help.decrementDepth();
  102057             : 
  102058             :   // Test if this is the root of the copy!
  102059           0 :      if (help.get_depth() == 0)
  102060             :         {
  102061             :        // This is the original calling node.
  102062             : 
  102063             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  102064             :        // printf ("Calling SgProcessControlStatement::fixupCopy() (from root of AST being copied) \n");
  102065             : #if ALT_FIXUP_COPY
  102066             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  102067           0 :           fixupCopy_scopes (result,help);
  102068           0 :           fixupCopy_symbols (result,help);
  102069           0 :           fixupCopy_references (result,help);
  102070             : #else
  102071             :           fixupCopy(result,help);
  102072             : #endif
  102073             :        // Allow this to be called recursively, so accumulate the state.
  102074             :        // Also, clear the state in the SgCopyHelp object.
  102075             :        // help.clearState();
  102076             :         }
  102077             : 
  102078           0 :      return result;
  102079             :    }
  102080             : 
  102081             : 
  102082             : /* #line 102083 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  102083             : 
  102084             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  102085             : 
  102086           0 : SgNode* SgIOStatement::copy ( SgCopyHelp& help) const
  102087             :    {
  102088           0 :      SgIOStatement* result = NULL;
  102089             : 
  102090             :   // printf ("Copy SgIOStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  102091             : 
  102092             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  102093             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  102094             :   // The default value of the depth is 0, so after this call the depth is 1!
  102095           0 :      help.incrementDepth();
  102096             : 
  102097             : #if 0
  102098             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  102099             :   // but it is not generally true that things can only be copied once!
  102100             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  102101             :   // AstAttribute* existingAttribute = const_cast<SgIOStatement*>(this)->attribute["copied"];
  102102             :      bool previouslyCopied = const_cast<SgIOStatement*>(this)->attribute.exists("copied");
  102103             :      if (previouslyCopied == true)
  102104             :         {
  102105             :           this->get_file_info()->display("Called from copy SgIOStatement: debug");
  102106             :         }
  102107             :      ROSE_ASSERT(previouslyCopied == false);
  102108             : 
  102109             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  102110             :      AstAttribute* newAttribute = new AstAttribute();
  102111             :      ROSE_ASSERT(newAttribute != NULL);
  102112             : 
  102113             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  102114             :      const_cast<SgIOStatement*>(this)->attribute.add("copied",newAttribute);
  102115             : #endif
  102116             : 
  102117             :   // Copy data members from base classes
  102118             :   // Copy constructor parameter data member: startOfConstruct_copy
  102119             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  102120             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  102121           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  102122           0 :      if ( p_startOfConstruct != NULL ) 
  102123             :         { 
  102124           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  102125             :         } 
  102126             :        else 
  102127             :         { 
  102128             :           startOfConstruct_copy = NULL; 
  102129             :         } 
  102130             :  
  102131             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  102132             : 
  102133             :   // Build an empty copy of this object (will be filled in, but 
  102134             :   // the parent can't be set and must be set by the caller)
  102135           0 :      result = new SgIOStatement(  startOfConstruct_copy );
  102136           0 :      ROSE_ASSERT(result != NULL);
  102137             : 
  102138             :   // Copy data members of "this" class
  102139             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  102140             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  102141             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  102142           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  102143           0 :      if ( p_endOfConstruct != NULL ) 
  102144             :         { 
  102145           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  102146             :         } 
  102147             :        else 
  102148             :         { 
  102149             :           endOfConstruct_copy = NULL; 
  102150             :         } 
  102151             :   /* check for a valid pointer and delete if present */ 
  102152           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  102153             :   /* add assignment to result here */ 
  102154           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  102155             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  102156             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  102157             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  102158           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  102159           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  102160             :         { 
  102161           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  102162             :         } 
  102163             :        else 
  102164             :         { 
  102165             :           attachedPreprocessingInfoPtr_copy = NULL; 
  102166             :         } 
  102167             :   /* check for a valid pointer and delete if present */ 
  102168           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  102169             :   /* add assignment to result here */ 
  102170           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  102171             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  102172             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  102173             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  102174           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  102175           0 :      if ( p_attributeMechanism != NULL ) 
  102176             :         { 
  102177           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  102178             :         } 
  102179             :        else 
  102180             :         { 
  102181             :           attributeMechanism_copy = NULL; 
  102182             :         } 
  102183             :   /* check for a valid pointer and delete if present */ 
  102184           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  102185             :   /* add assignment to result here */ 
  102186           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  102187             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  102188             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  102189             :   // case: toBeCopied == COPY_DATA for numeric_label
  102190           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  102191           0 :      result->p_numeric_label = numeric_label_copy; 
  102192             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  102193             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  102194             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  102195           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  102196           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  102197             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  102198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  102199             :   // case: toBeCopied == COPY_DATA for io_statement
  102200           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  102201           0 :      result->p_io_statement = io_statement_copy; 
  102202             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  102203           0 :      SgExprListExp* io_stmt_list_copy; 
  102204             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  102205           0 :           if (get_io_stmt_list() != NULL) 
  102206             :              { 
  102207           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  102208             :              } 
  102209             :             else 
  102210             :              { 
  102211             :                io_stmt_list_copy = NULL; 
  102212             :              } 
  102213             :   /* check for a valid pointer and delete if present */ 
  102214           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  102215           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  102216             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  102217           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  102218             :              { 
  102219           0 :                io_stmt_list_copy->set_parent(result); 
  102220             :              } 
  102221             :   // Copy non-constructor parameter data member (access function): unit_copy
  102222           0 :      SgExpression* unit_copy; 
  102223             :   // case: not a listType for (using conditionalToCopyVariable)unit
  102224           0 :           if (get_unit() != NULL) 
  102225             :              { 
  102226           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  102227             :              } 
  102228             :             else 
  102229             :              { 
  102230             :                unit_copy = NULL; 
  102231             :              } 
  102232             :   /* check for a valid pointer and delete if present */ 
  102233           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  102234           0 :      result->p_unit = unit_copy; 
  102235             :   // case: not a listType for (using conditionalToSetParent)unit
  102236           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  102237             :              { 
  102238           0 :                unit_copy->set_parent(result); 
  102239             :              } 
  102240             :   // Copy non-constructor parameter data member (access function): iostat_copy
  102241           0 :      SgExpression* iostat_copy; 
  102242             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  102243           0 :           if (get_iostat() != NULL) 
  102244             :              { 
  102245           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  102246             :              } 
  102247             :             else 
  102248             :              { 
  102249             :                iostat_copy = NULL; 
  102250             :              } 
  102251             :   /* check for a valid pointer and delete if present */ 
  102252           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  102253           0 :      result->p_iostat = iostat_copy; 
  102254             :   // case: not a listType for (using conditionalToSetParent)iostat
  102255           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  102256             :              { 
  102257           0 :                iostat_copy->set_parent(result); 
  102258             :              } 
  102259             :   // Copy non-constructor parameter data member (access function): err_copy
  102260           0 :      SgExpression* err_copy; 
  102261             :   // case: not a listType for (using conditionalToCopyVariable)err
  102262           0 :           if (get_err() != NULL) 
  102263             :              { 
  102264           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  102265             :              } 
  102266             :             else 
  102267             :              { 
  102268             :                err_copy = NULL; 
  102269             :              } 
  102270             :   /* check for a valid pointer and delete if present */ 
  102271           0 :      if (result->p_err != NULL) delete result->p_err; 
  102272           0 :      result->p_err = err_copy; 
  102273             :   // case: not a listType for (using conditionalToSetParent)err
  102274           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  102275             :              { 
  102276           0 :                err_copy->set_parent(result); 
  102277             :              } 
  102278             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  102279           0 :      SgExpression* iomsg_copy; 
  102280             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  102281           0 :           if (get_iomsg() != NULL) 
  102282             :              { 
  102283           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  102284             :              } 
  102285             :             else 
  102286             :              { 
  102287             :                iomsg_copy = NULL; 
  102288             :              } 
  102289             :   /* check for a valid pointer and delete if present */ 
  102290           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  102291           0 :      result->p_iomsg = iomsg_copy; 
  102292             :   // case: not a listType for (using conditionalToSetParent)iomsg
  102293           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  102294             :              { 
  102295           0 :                iomsg_copy->set_parent(result); 
  102296             :              } 
  102297             : 
  102298             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  102299             : 
  102300             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  102301             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  102302             :   // fixupCopy(result,help);
  102303             : 
  102304             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  102305             :   // the Sg_File_Info objects that are built for the new IR nodes.
  102306           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  102307           0 :      if (locatedNode != NULL)
  102308             :         {
  102309             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  102310           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  102311           0 :           ROSE_ASSERT(start != NULL);
  102312             : #if 0
  102313             :        // Debugging information
  102314             :           if (start->get_parent() == NULL)
  102315             :              {
  102316             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102317             :              }
  102318             : #endif
  102319           0 :           start->set_parent(locatedNode);
  102320           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  102321             : 
  102322           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  102323             : 
  102324             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  102325             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  102326             :        // ROSE_ASSERT(end != NULL);
  102327           0 :           if (end == NULL)
  102328             :              {
  102329           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  102330             :              }
  102331             :             else
  102332             :              {
  102333             : #if 0
  102334             :             // Debugging information
  102335             :                if (end->get_parent() == NULL)
  102336             :                   {
  102337             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102338             :                   }
  102339             : #endif
  102340           0 :                end->set_parent(locatedNode);
  102341           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  102342             :              }
  102343             : 
  102344           0 :           SgExpression* expression = isSgExpression(result);
  102345           0 :           if (isSgExpression(this) != NULL)
  102346             :              {
  102347           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  102348             : 
  102349             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  102350           0 :                if (operatorPosition != NULL)
  102351             :                   {
  102352             : #if 0
  102353             :                  // Debugging information
  102354             :                     if (operatorPosition->get_parent() == NULL)
  102355             :                        {
  102356             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102357             :                        }
  102358             : #endif
  102359           0 :                     operatorPosition->set_parent(expression);
  102360           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  102361             :                   }
  102362             :              }
  102363             :         }
  102364             : 
  102365             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  102366           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  102367           0 :      if (initializedName != NULL)
  102368             :         {
  102369             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  102370           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  102371           0 :           ROSE_ASSERT(start != NULL);
  102372             : #if 0
  102373             :        // Debugging information
  102374             :           if (start->get_parent() == NULL)
  102375             :              {
  102376             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102377             :              }
  102378             : #endif
  102379           0 :           start->set_parent(initializedName);
  102380           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  102381             : 
  102382             : #if 0
  102383             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  102384             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  102385             : 
  102386             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  102387             :        // ROSE_ASSERT(end != NULL);
  102388             :           if (end == NULL)
  102389             :              {
  102390             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  102391             :              }
  102392             :             else
  102393             :              {
  102394             :                if (end->get_parent() == NULL)
  102395             :                   {
  102396             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102397             :                   }
  102398             :                end->set_parent(initializedName);
  102399             :                ROSE_ASSERT(end->get_parent() != NULL);
  102400             :              }
  102401             : #endif
  102402             :         }
  102403             : 
  102404             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  102405           0 :      help.insertCopiedNodePair(this,result);
  102406             : 
  102407             :   // printf ("End of copy SgIOStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  102408             : 
  102409             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  102410             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  102411           0 :      help.decrementDepth();
  102412             : 
  102413             :   // Test if this is the root of the copy!
  102414           0 :      if (help.get_depth() == 0)
  102415             :         {
  102416             :        // This is the original calling node.
  102417             : 
  102418             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  102419             :        // printf ("Calling SgIOStatement::fixupCopy() (from root of AST being copied) \n");
  102420             : #if ALT_FIXUP_COPY
  102421             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  102422           0 :           fixupCopy_scopes (result,help);
  102423           0 :           fixupCopy_symbols (result,help);
  102424           0 :           fixupCopy_references (result,help);
  102425             : #else
  102426             :           fixupCopy(result,help);
  102427             : #endif
  102428             :        // Allow this to be called recursively, so accumulate the state.
  102429             :        // Also, clear the state in the SgCopyHelp object.
  102430             :        // help.clearState();
  102431             :         }
  102432             : 
  102433           0 :      return result;
  102434             :    }
  102435             : 
  102436             : 
  102437             : /* #line 102438 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  102438             : 
  102439             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  102440             : 
  102441           0 : SgNode* SgPrintStatement::copy ( SgCopyHelp& help) const
  102442             :    {
  102443           0 :      SgPrintStatement* result = NULL;
  102444             : 
  102445             :   // printf ("Copy SgPrintStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  102446             : 
  102447             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  102448             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  102449             :   // The default value of the depth is 0, so after this call the depth is 1!
  102450           0 :      help.incrementDepth();
  102451             : 
  102452             : #if 0
  102453             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  102454             :   // but it is not generally true that things can only be copied once!
  102455             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  102456             :   // AstAttribute* existingAttribute = const_cast<SgPrintStatement*>(this)->attribute["copied"];
  102457             :      bool previouslyCopied = const_cast<SgPrintStatement*>(this)->attribute.exists("copied");
  102458             :      if (previouslyCopied == true)
  102459             :         {
  102460             :           this->get_file_info()->display("Called from copy SgPrintStatement: debug");
  102461             :         }
  102462             :      ROSE_ASSERT(previouslyCopied == false);
  102463             : 
  102464             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  102465             :      AstAttribute* newAttribute = new AstAttribute();
  102466             :      ROSE_ASSERT(newAttribute != NULL);
  102467             : 
  102468             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  102469             :      const_cast<SgPrintStatement*>(this)->attribute.add("copied",newAttribute);
  102470             : #endif
  102471             : 
  102472             :   // Copy data members from base classes
  102473             :   // Copy constructor parameter data member: startOfConstruct_copy
  102474             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  102475             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  102476           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  102477           0 :      if ( p_startOfConstruct != NULL ) 
  102478             :         { 
  102479           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  102480             :         } 
  102481             :        else 
  102482             :         { 
  102483             :           startOfConstruct_copy = NULL; 
  102484             :         } 
  102485             :  
  102486             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  102487             : 
  102488             :   // Build an empty copy of this object (will be filled in, but 
  102489             :   // the parent can't be set and must be set by the caller)
  102490           0 :      result = new SgPrintStatement(  startOfConstruct_copy );
  102491           0 :      ROSE_ASSERT(result != NULL);
  102492             : 
  102493             :   // Copy data members of "this" class
  102494             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  102495             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  102496             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  102497           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  102498           0 :      if ( p_endOfConstruct != NULL ) 
  102499             :         { 
  102500           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  102501             :         } 
  102502             :        else 
  102503             :         { 
  102504             :           endOfConstruct_copy = NULL; 
  102505             :         } 
  102506             :   /* check for a valid pointer and delete if present */ 
  102507           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  102508             :   /* add assignment to result here */ 
  102509           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  102510             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  102511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  102512             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  102513           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  102514           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  102515             :         { 
  102516           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  102517             :         } 
  102518             :        else 
  102519             :         { 
  102520             :           attachedPreprocessingInfoPtr_copy = NULL; 
  102521             :         } 
  102522             :   /* check for a valid pointer and delete if present */ 
  102523           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  102524             :   /* add assignment to result here */ 
  102525           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  102526             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  102527             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  102528             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  102529           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  102530           0 :      if ( p_attributeMechanism != NULL ) 
  102531             :         { 
  102532           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  102533             :         } 
  102534             :        else 
  102535             :         { 
  102536             :           attributeMechanism_copy = NULL; 
  102537             :         } 
  102538             :   /* check for a valid pointer and delete if present */ 
  102539           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  102540             :   /* add assignment to result here */ 
  102541           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  102542             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  102543             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  102544             :   // case: toBeCopied == COPY_DATA for numeric_label
  102545           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  102546           0 :      result->p_numeric_label = numeric_label_copy; 
  102547             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  102548             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  102549             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  102550           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  102551           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  102552             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  102553             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  102554             :   // case: toBeCopied == COPY_DATA for io_statement
  102555           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  102556           0 :      result->p_io_statement = io_statement_copy; 
  102557             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  102558           0 :      SgExprListExp* io_stmt_list_copy; 
  102559             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  102560           0 :           if (get_io_stmt_list() != NULL) 
  102561             :              { 
  102562           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  102563             :              } 
  102564             :             else 
  102565             :              { 
  102566             :                io_stmt_list_copy = NULL; 
  102567             :              } 
  102568             :   /* check for a valid pointer and delete if present */ 
  102569           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  102570           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  102571             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  102572           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  102573             :              { 
  102574           0 :                io_stmt_list_copy->set_parent(result); 
  102575             :              } 
  102576             :   // Copy non-constructor parameter data member (access function): unit_copy
  102577           0 :      SgExpression* unit_copy; 
  102578             :   // case: not a listType for (using conditionalToCopyVariable)unit
  102579           0 :           if (get_unit() != NULL) 
  102580             :              { 
  102581           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  102582             :              } 
  102583             :             else 
  102584             :              { 
  102585             :                unit_copy = NULL; 
  102586             :              } 
  102587             :   /* check for a valid pointer and delete if present */ 
  102588           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  102589           0 :      result->p_unit = unit_copy; 
  102590             :   // case: not a listType for (using conditionalToSetParent)unit
  102591           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  102592             :              { 
  102593           0 :                unit_copy->set_parent(result); 
  102594             :              } 
  102595             :   // Copy non-constructor parameter data member (access function): iostat_copy
  102596           0 :      SgExpression* iostat_copy; 
  102597             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  102598           0 :           if (get_iostat() != NULL) 
  102599             :              { 
  102600           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  102601             :              } 
  102602             :             else 
  102603             :              { 
  102604             :                iostat_copy = NULL; 
  102605             :              } 
  102606             :   /* check for a valid pointer and delete if present */ 
  102607           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  102608           0 :      result->p_iostat = iostat_copy; 
  102609             :   // case: not a listType for (using conditionalToSetParent)iostat
  102610           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  102611             :              { 
  102612           0 :                iostat_copy->set_parent(result); 
  102613             :              } 
  102614             :   // Copy non-constructor parameter data member (access function): err_copy
  102615           0 :      SgExpression* err_copy; 
  102616             :   // case: not a listType for (using conditionalToCopyVariable)err
  102617           0 :           if (get_err() != NULL) 
  102618             :              { 
  102619           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  102620             :              } 
  102621             :             else 
  102622             :              { 
  102623             :                err_copy = NULL; 
  102624             :              } 
  102625             :   /* check for a valid pointer and delete if present */ 
  102626           0 :      if (result->p_err != NULL) delete result->p_err; 
  102627           0 :      result->p_err = err_copy; 
  102628             :   // case: not a listType for (using conditionalToSetParent)err
  102629           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  102630             :              { 
  102631           0 :                err_copy->set_parent(result); 
  102632             :              } 
  102633             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  102634           0 :      SgExpression* iomsg_copy; 
  102635             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  102636           0 :           if (get_iomsg() != NULL) 
  102637             :              { 
  102638           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  102639             :              } 
  102640             :             else 
  102641             :              { 
  102642             :                iomsg_copy = NULL; 
  102643             :              } 
  102644             :   /* check for a valid pointer and delete if present */ 
  102645           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  102646           0 :      result->p_iomsg = iomsg_copy; 
  102647             :   // case: not a listType for (using conditionalToSetParent)iomsg
  102648           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  102649             :              { 
  102650           0 :                iomsg_copy->set_parent(result); 
  102651             :              } 
  102652             :   // Copy non-constructor parameter data member (access function): format_copy
  102653           0 :      SgExpression* format_copy; 
  102654             :   // case: not a listType for (using conditionalToCopyVariable)format
  102655           0 :           if (get_format() != NULL) 
  102656             :              { 
  102657           0 :                format_copy = static_cast<SgExpression*>(help.copyAst(get_format())); 
  102658             :              } 
  102659             :             else 
  102660             :              { 
  102661             :                format_copy = NULL; 
  102662             :              } 
  102663             :   /* check for a valid pointer and delete if present */ 
  102664           0 :      if (result->p_format != NULL) delete result->p_format; 
  102665           0 :      result->p_format = format_copy; 
  102666             :   // case: not a listType for (using conditionalToSetParent)format
  102667           0 :           if ( (format_copy != NULL) && (format_copy->get_parent() == NULL) && (isSgType(format_copy) == NULL) ) 
  102668             :              { 
  102669           0 :                format_copy->set_parent(result); 
  102670             :              } 
  102671             : 
  102672             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  102673             : 
  102674             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  102675             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  102676             :   // fixupCopy(result,help);
  102677             : 
  102678             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  102679             :   // the Sg_File_Info objects that are built for the new IR nodes.
  102680           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  102681           0 :      if (locatedNode != NULL)
  102682             :         {
  102683             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  102684           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  102685           0 :           ROSE_ASSERT(start != NULL);
  102686             : #if 0
  102687             :        // Debugging information
  102688             :           if (start->get_parent() == NULL)
  102689             :              {
  102690             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102691             :              }
  102692             : #endif
  102693           0 :           start->set_parent(locatedNode);
  102694           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  102695             : 
  102696           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  102697             : 
  102698             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  102699             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  102700             :        // ROSE_ASSERT(end != NULL);
  102701           0 :           if (end == NULL)
  102702             :              {
  102703           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  102704             :              }
  102705             :             else
  102706             :              {
  102707             : #if 0
  102708             :             // Debugging information
  102709             :                if (end->get_parent() == NULL)
  102710             :                   {
  102711             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102712             :                   }
  102713             : #endif
  102714           0 :                end->set_parent(locatedNode);
  102715           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  102716             :              }
  102717             : 
  102718           0 :           SgExpression* expression = isSgExpression(result);
  102719           0 :           if (isSgExpression(this) != NULL)
  102720             :              {
  102721           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  102722             : 
  102723             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  102724           0 :                if (operatorPosition != NULL)
  102725             :                   {
  102726             : #if 0
  102727             :                  // Debugging information
  102728             :                     if (operatorPosition->get_parent() == NULL)
  102729             :                        {
  102730             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102731             :                        }
  102732             : #endif
  102733           0 :                     operatorPosition->set_parent(expression);
  102734           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  102735             :                   }
  102736             :              }
  102737             :         }
  102738             : 
  102739             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  102740           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  102741           0 :      if (initializedName != NULL)
  102742             :         {
  102743             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  102744           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  102745           0 :           ROSE_ASSERT(start != NULL);
  102746             : #if 0
  102747             :        // Debugging information
  102748             :           if (start->get_parent() == NULL)
  102749             :              {
  102750             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102751             :              }
  102752             : #endif
  102753           0 :           start->set_parent(initializedName);
  102754           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  102755             : 
  102756             : #if 0
  102757             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  102758             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  102759             : 
  102760             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  102761             :        // ROSE_ASSERT(end != NULL);
  102762             :           if (end == NULL)
  102763             :              {
  102764             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  102765             :              }
  102766             :             else
  102767             :              {
  102768             :                if (end->get_parent() == NULL)
  102769             :                   {
  102770             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  102771             :                   }
  102772             :                end->set_parent(initializedName);
  102773             :                ROSE_ASSERT(end->get_parent() != NULL);
  102774             :              }
  102775             : #endif
  102776             :         }
  102777             : 
  102778             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  102779           0 :      help.insertCopiedNodePair(this,result);
  102780             : 
  102781             :   // printf ("End of copy SgPrintStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  102782             : 
  102783             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  102784             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  102785           0 :      help.decrementDepth();
  102786             : 
  102787             :   // Test if this is the root of the copy!
  102788           0 :      if (help.get_depth() == 0)
  102789             :         {
  102790             :        // This is the original calling node.
  102791             : 
  102792             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  102793             :        // printf ("Calling SgPrintStatement::fixupCopy() (from root of AST being copied) \n");
  102794             : #if ALT_FIXUP_COPY
  102795             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  102796           0 :           fixupCopy_scopes (result,help);
  102797           0 :           fixupCopy_symbols (result,help);
  102798           0 :           fixupCopy_references (result,help);
  102799             : #else
  102800             :           fixupCopy(result,help);
  102801             : #endif
  102802             :        // Allow this to be called recursively, so accumulate the state.
  102803             :        // Also, clear the state in the SgCopyHelp object.
  102804             :        // help.clearState();
  102805             :         }
  102806             : 
  102807           0 :      return result;
  102808             :    }
  102809             : 
  102810             : 
  102811             : /* #line 102812 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  102812             : 
  102813             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  102814             : 
  102815           0 : SgNode* SgReadStatement::copy ( SgCopyHelp& help) const
  102816             :    {
  102817           0 :      SgReadStatement* result = NULL;
  102818             : 
  102819             :   // printf ("Copy SgReadStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  102820             : 
  102821             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  102822             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  102823             :   // The default value of the depth is 0, so after this call the depth is 1!
  102824           0 :      help.incrementDepth();
  102825             : 
  102826             : #if 0
  102827             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  102828             :   // but it is not generally true that things can only be copied once!
  102829             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  102830             :   // AstAttribute* existingAttribute = const_cast<SgReadStatement*>(this)->attribute["copied"];
  102831             :      bool previouslyCopied = const_cast<SgReadStatement*>(this)->attribute.exists("copied");
  102832             :      if (previouslyCopied == true)
  102833             :         {
  102834             :           this->get_file_info()->display("Called from copy SgReadStatement: debug");
  102835             :         }
  102836             :      ROSE_ASSERT(previouslyCopied == false);
  102837             : 
  102838             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  102839             :      AstAttribute* newAttribute = new AstAttribute();
  102840             :      ROSE_ASSERT(newAttribute != NULL);
  102841             : 
  102842             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  102843             :      const_cast<SgReadStatement*>(this)->attribute.add("copied",newAttribute);
  102844             : #endif
  102845             : 
  102846             :   // Copy data members from base classes
  102847             :   // Copy constructor parameter data member: startOfConstruct_copy
  102848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  102849             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  102850           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  102851           0 :      if ( p_startOfConstruct != NULL ) 
  102852             :         { 
  102853           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  102854             :         } 
  102855             :        else 
  102856             :         { 
  102857             :           startOfConstruct_copy = NULL; 
  102858             :         } 
  102859             :  
  102860             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  102861             : 
  102862             :   // Build an empty copy of this object (will be filled in, but 
  102863             :   // the parent can't be set and must be set by the caller)
  102864           0 :      result = new SgReadStatement(  startOfConstruct_copy );
  102865           0 :      ROSE_ASSERT(result != NULL);
  102866             : 
  102867             :   // Copy data members of "this" class
  102868             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  102869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  102870             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  102871           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  102872           0 :      if ( p_endOfConstruct != NULL ) 
  102873             :         { 
  102874           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  102875             :         } 
  102876             :        else 
  102877             :         { 
  102878             :           endOfConstruct_copy = NULL; 
  102879             :         } 
  102880             :   /* check for a valid pointer and delete if present */ 
  102881           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  102882             :   /* add assignment to result here */ 
  102883           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  102884             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  102885             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  102886             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  102887           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  102888           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  102889             :         { 
  102890           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  102891             :         } 
  102892             :        else 
  102893             :         { 
  102894             :           attachedPreprocessingInfoPtr_copy = NULL; 
  102895             :         } 
  102896             :   /* check for a valid pointer and delete if present */ 
  102897           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  102898             :   /* add assignment to result here */ 
  102899           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  102900             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  102901             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  102902             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  102903           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  102904           0 :      if ( p_attributeMechanism != NULL ) 
  102905             :         { 
  102906           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  102907             :         } 
  102908             :        else 
  102909             :         { 
  102910             :           attributeMechanism_copy = NULL; 
  102911             :         } 
  102912             :   /* check for a valid pointer and delete if present */ 
  102913           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  102914             :   /* add assignment to result here */ 
  102915           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  102916             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  102917             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  102918             :   // case: toBeCopied == COPY_DATA for numeric_label
  102919           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  102920           0 :      result->p_numeric_label = numeric_label_copy; 
  102921             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  102922             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  102923             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  102924           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  102925           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  102926             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  102927             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  102928             :   // case: toBeCopied == COPY_DATA for io_statement
  102929           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  102930           0 :      result->p_io_statement = io_statement_copy; 
  102931             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  102932           0 :      SgExprListExp* io_stmt_list_copy; 
  102933             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  102934           0 :           if (get_io_stmt_list() != NULL) 
  102935             :              { 
  102936           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  102937             :              } 
  102938             :             else 
  102939             :              { 
  102940             :                io_stmt_list_copy = NULL; 
  102941             :              } 
  102942             :   /* check for a valid pointer and delete if present */ 
  102943           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  102944           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  102945             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  102946           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  102947             :              { 
  102948           0 :                io_stmt_list_copy->set_parent(result); 
  102949             :              } 
  102950             :   // Copy non-constructor parameter data member (access function): unit_copy
  102951           0 :      SgExpression* unit_copy; 
  102952             :   // case: not a listType for (using conditionalToCopyVariable)unit
  102953           0 :           if (get_unit() != NULL) 
  102954             :              { 
  102955           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  102956             :              } 
  102957             :             else 
  102958             :              { 
  102959             :                unit_copy = NULL; 
  102960             :              } 
  102961             :   /* check for a valid pointer and delete if present */ 
  102962           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  102963           0 :      result->p_unit = unit_copy; 
  102964             :   // case: not a listType for (using conditionalToSetParent)unit
  102965           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  102966             :              { 
  102967           0 :                unit_copy->set_parent(result); 
  102968             :              } 
  102969             :   // Copy non-constructor parameter data member (access function): iostat_copy
  102970           0 :      SgExpression* iostat_copy; 
  102971             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  102972           0 :           if (get_iostat() != NULL) 
  102973             :              { 
  102974           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  102975             :              } 
  102976             :             else 
  102977             :              { 
  102978             :                iostat_copy = NULL; 
  102979             :              } 
  102980             :   /* check for a valid pointer and delete if present */ 
  102981           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  102982           0 :      result->p_iostat = iostat_copy; 
  102983             :   // case: not a listType for (using conditionalToSetParent)iostat
  102984           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  102985             :              { 
  102986           0 :                iostat_copy->set_parent(result); 
  102987             :              } 
  102988             :   // Copy non-constructor parameter data member (access function): err_copy
  102989           0 :      SgExpression* err_copy; 
  102990             :   // case: not a listType for (using conditionalToCopyVariable)err
  102991           0 :           if (get_err() != NULL) 
  102992             :              { 
  102993           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  102994             :              } 
  102995             :             else 
  102996             :              { 
  102997             :                err_copy = NULL; 
  102998             :              } 
  102999             :   /* check for a valid pointer and delete if present */ 
  103000           0 :      if (result->p_err != NULL) delete result->p_err; 
  103001           0 :      result->p_err = err_copy; 
  103002             :   // case: not a listType for (using conditionalToSetParent)err
  103003           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  103004             :              { 
  103005           0 :                err_copy->set_parent(result); 
  103006             :              } 
  103007             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  103008           0 :      SgExpression* iomsg_copy; 
  103009             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  103010           0 :           if (get_iomsg() != NULL) 
  103011             :              { 
  103012           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  103013             :              } 
  103014             :             else 
  103015             :              { 
  103016             :                iomsg_copy = NULL; 
  103017             :              } 
  103018             :   /* check for a valid pointer and delete if present */ 
  103019           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  103020           0 :      result->p_iomsg = iomsg_copy; 
  103021             :   // case: not a listType for (using conditionalToSetParent)iomsg
  103022           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  103023             :              { 
  103024           0 :                iomsg_copy->set_parent(result); 
  103025             :              } 
  103026             :   // Copy non-constructor parameter data member (access function): format_copy
  103027           0 :      SgExpression* format_copy; 
  103028             :   // case: not a listType for (using conditionalToCopyVariable)format
  103029           0 :           if (get_format() != NULL) 
  103030             :              { 
  103031           0 :                format_copy = static_cast<SgExpression*>(help.copyAst(get_format())); 
  103032             :              } 
  103033             :             else 
  103034             :              { 
  103035             :                format_copy = NULL; 
  103036             :              } 
  103037             :   /* check for a valid pointer and delete if present */ 
  103038           0 :      if (result->p_format != NULL) delete result->p_format; 
  103039           0 :      result->p_format = format_copy; 
  103040             :   // case: not a listType for (using conditionalToSetParent)format
  103041           0 :           if ( (format_copy != NULL) && (format_copy->get_parent() == NULL) && (isSgType(format_copy) == NULL) ) 
  103042             :              { 
  103043           0 :                format_copy->set_parent(result); 
  103044             :              } 
  103045             :   // Copy non-constructor parameter data member (access function): namelist_copy
  103046           0 :      SgExpression* namelist_copy; 
  103047             :   // case: not a listType for (using conditionalToCopyVariable)namelist
  103048           0 :           if (get_namelist() != NULL) 
  103049             :              { 
  103050           0 :                namelist_copy = static_cast<SgExpression*>(help.copyAst(get_namelist())); 
  103051             :              } 
  103052             :             else 
  103053             :              { 
  103054             :                namelist_copy = NULL; 
  103055             :              } 
  103056             :   /* check for a valid pointer and delete if present */ 
  103057           0 :      if (result->p_namelist != NULL) delete result->p_namelist; 
  103058           0 :      result->p_namelist = namelist_copy; 
  103059             :   // case: not a listType for (using conditionalToSetParent)namelist
  103060           0 :           if ( (namelist_copy != NULL) && (namelist_copy->get_parent() == NULL) && (isSgType(namelist_copy) == NULL) ) 
  103061             :              { 
  103062           0 :                namelist_copy->set_parent(result); 
  103063             :              } 
  103064             :   // Copy non-constructor parameter data member (access function): advance_copy
  103065           0 :      SgExpression* advance_copy; 
  103066             :   // case: not a listType for (using conditionalToCopyVariable)advance
  103067           0 :           if (get_advance() != NULL) 
  103068             :              { 
  103069           0 :                advance_copy = static_cast<SgExpression*>(help.copyAst(get_advance())); 
  103070             :              } 
  103071             :             else 
  103072             :              { 
  103073             :                advance_copy = NULL; 
  103074             :              } 
  103075             :   /* check for a valid pointer and delete if present */ 
  103076           0 :      if (result->p_advance != NULL) delete result->p_advance; 
  103077           0 :      result->p_advance = advance_copy; 
  103078             :   // case: not a listType for (using conditionalToSetParent)advance
  103079           0 :           if ( (advance_copy != NULL) && (advance_copy->get_parent() == NULL) && (isSgType(advance_copy) == NULL) ) 
  103080             :              { 
  103081           0 :                advance_copy->set_parent(result); 
  103082             :              } 
  103083             :   // Copy non-constructor parameter data member (access function): asynchronous_copy
  103084           0 :      SgExpression* asynchronous_copy; 
  103085             :   // case: not a listType for (using conditionalToCopyVariable)asynchronous
  103086           0 :           if (get_asynchronous() != NULL) 
  103087             :              { 
  103088           0 :                asynchronous_copy = static_cast<SgExpression*>(help.copyAst(get_asynchronous())); 
  103089             :              } 
  103090             :             else 
  103091             :              { 
  103092             :                asynchronous_copy = NULL; 
  103093             :              } 
  103094             :   /* check for a valid pointer and delete if present */ 
  103095           0 :      if (result->p_asynchronous != NULL) delete result->p_asynchronous; 
  103096           0 :      result->p_asynchronous = asynchronous_copy; 
  103097             :   // case: not a listType for (using conditionalToSetParent)asynchronous
  103098           0 :           if ( (asynchronous_copy != NULL) && (asynchronous_copy->get_parent() == NULL) && (isSgType(asynchronous_copy) == NULL) ) 
  103099             :              { 
  103100           0 :                asynchronous_copy->set_parent(result); 
  103101             :              } 
  103102             :   // Copy non-constructor parameter data member (access function): blank_copy
  103103           0 :      SgExpression* blank_copy; 
  103104             :   // case: not a listType for (using conditionalToCopyVariable)blank
  103105           0 :           if (get_blank() != NULL) 
  103106             :              { 
  103107           0 :                blank_copy = static_cast<SgExpression*>(help.copyAst(get_blank())); 
  103108             :              } 
  103109             :             else 
  103110             :              { 
  103111             :                blank_copy = NULL; 
  103112             :              } 
  103113             :   /* check for a valid pointer and delete if present */ 
  103114           0 :      if (result->p_blank != NULL) delete result->p_blank; 
  103115           0 :      result->p_blank = blank_copy; 
  103116             :   // case: not a listType for (using conditionalToSetParent)blank
  103117           0 :           if ( (blank_copy != NULL) && (blank_copy->get_parent() == NULL) && (isSgType(blank_copy) == NULL) ) 
  103118             :              { 
  103119           0 :                blank_copy->set_parent(result); 
  103120             :              } 
  103121             :   // Copy non-constructor parameter data member (access function): decimal_copy
  103122           0 :      SgExpression* decimal_copy; 
  103123             :   // case: not a listType for (using conditionalToCopyVariable)decimal
  103124           0 :           if (get_decimal() != NULL) 
  103125             :              { 
  103126           0 :                decimal_copy = static_cast<SgExpression*>(help.copyAst(get_decimal())); 
  103127             :              } 
  103128             :             else 
  103129             :              { 
  103130             :                decimal_copy = NULL; 
  103131             :              } 
  103132             :   /* check for a valid pointer and delete if present */ 
  103133           0 :      if (result->p_decimal != NULL) delete result->p_decimal; 
  103134           0 :      result->p_decimal = decimal_copy; 
  103135             :   // case: not a listType for (using conditionalToSetParent)decimal
  103136           0 :           if ( (decimal_copy != NULL) && (decimal_copy->get_parent() == NULL) && (isSgType(decimal_copy) == NULL) ) 
  103137             :              { 
  103138           0 :                decimal_copy->set_parent(result); 
  103139             :              } 
  103140             :   // Copy non-constructor parameter data member (access function): delim_copy
  103141           0 :      SgExpression* delim_copy; 
  103142             :   // case: not a listType for (using conditionalToCopyVariable)delim
  103143           0 :           if (get_delim() != NULL) 
  103144             :              { 
  103145           0 :                delim_copy = static_cast<SgExpression*>(help.copyAst(get_delim())); 
  103146             :              } 
  103147             :             else 
  103148             :              { 
  103149             :                delim_copy = NULL; 
  103150             :              } 
  103151             :   /* check for a valid pointer and delete if present */ 
  103152           0 :      if (result->p_delim != NULL) delete result->p_delim; 
  103153           0 :      result->p_delim = delim_copy; 
  103154             :   // case: not a listType for (using conditionalToSetParent)delim
  103155           0 :           if ( (delim_copy != NULL) && (delim_copy->get_parent() == NULL) && (isSgType(delim_copy) == NULL) ) 
  103156             :              { 
  103157           0 :                delim_copy->set_parent(result); 
  103158             :              } 
  103159             :   // Copy non-constructor parameter data member (access function): end_copy
  103160           0 :      SgExpression* end_copy; 
  103161             :   // case: not a listType for (using conditionalToCopyVariable)end
  103162           0 :           if (get_end() != NULL) 
  103163             :              { 
  103164           0 :                end_copy = static_cast<SgExpression*>(help.copyAst(get_end())); 
  103165             :              } 
  103166             :             else 
  103167             :              { 
  103168             :                end_copy = NULL; 
  103169             :              } 
  103170             :   /* check for a valid pointer and delete if present */ 
  103171           0 :      if (result->p_end != NULL) delete result->p_end; 
  103172           0 :      result->p_end = end_copy; 
  103173             :   // case: not a listType for (using conditionalToSetParent)end
  103174           0 :           if ( (end_copy != NULL) && (end_copy->get_parent() == NULL) && (isSgType(end_copy) == NULL) ) 
  103175             :              { 
  103176           0 :                end_copy->set_parent(result); 
  103177             :              } 
  103178             :   // Copy non-constructor parameter data member (access function): eor_copy
  103179           0 :      SgExpression* eor_copy; 
  103180             :   // case: not a listType for (using conditionalToCopyVariable)eor
  103181           0 :           if (get_eor() != NULL) 
  103182             :              { 
  103183           0 :                eor_copy = static_cast<SgExpression*>(help.copyAst(get_eor())); 
  103184             :              } 
  103185             :             else 
  103186             :              { 
  103187             :                eor_copy = NULL; 
  103188             :              } 
  103189             :   /* check for a valid pointer and delete if present */ 
  103190           0 :      if (result->p_eor != NULL) delete result->p_eor; 
  103191           0 :      result->p_eor = eor_copy; 
  103192             :   // case: not a listType for (using conditionalToSetParent)eor
  103193           0 :           if ( (eor_copy != NULL) && (eor_copy->get_parent() == NULL) && (isSgType(eor_copy) == NULL) ) 
  103194             :              { 
  103195           0 :                eor_copy->set_parent(result); 
  103196             :              } 
  103197             :   // Copy non-constructor parameter data member (access function): id_copy
  103198           0 :      SgExpression* id_copy; 
  103199             :   // case: not a listType for (using conditionalToCopyVariable)id
  103200           0 :           if (get_id() != NULL) 
  103201             :              { 
  103202           0 :                id_copy = static_cast<SgExpression*>(help.copyAst(get_id())); 
  103203             :              } 
  103204             :             else 
  103205             :              { 
  103206             :                id_copy = NULL; 
  103207             :              } 
  103208             :   /* check for a valid pointer and delete if present */ 
  103209           0 :      if (result->p_id != NULL) delete result->p_id; 
  103210           0 :      result->p_id = id_copy; 
  103211             :   // case: not a listType for (using conditionalToSetParent)id
  103212           0 :           if ( (id_copy != NULL) && (id_copy->get_parent() == NULL) && (isSgType(id_copy) == NULL) ) 
  103213             :              { 
  103214           0 :                id_copy->set_parent(result); 
  103215             :              } 
  103216             :   // Copy non-constructor parameter data member (access function): pad_copy
  103217           0 :      SgExpression* pad_copy; 
  103218             :   // case: not a listType for (using conditionalToCopyVariable)pad
  103219           0 :           if (get_pad() != NULL) 
  103220             :              { 
  103221           0 :                pad_copy = static_cast<SgExpression*>(help.copyAst(get_pad())); 
  103222             :              } 
  103223             :             else 
  103224             :              { 
  103225             :                pad_copy = NULL; 
  103226             :              } 
  103227             :   /* check for a valid pointer and delete if present */ 
  103228           0 :      if (result->p_pad != NULL) delete result->p_pad; 
  103229           0 :      result->p_pad = pad_copy; 
  103230             :   // case: not a listType for (using conditionalToSetParent)pad
  103231           0 :           if ( (pad_copy != NULL) && (pad_copy->get_parent() == NULL) && (isSgType(pad_copy) == NULL) ) 
  103232             :              { 
  103233           0 :                pad_copy->set_parent(result); 
  103234             :              } 
  103235             :   // Copy non-constructor parameter data member (access function): pos_copy
  103236           0 :      SgExpression* pos_copy; 
  103237             :   // case: not a listType for (using conditionalToCopyVariable)pos
  103238           0 :           if (get_pos() != NULL) 
  103239             :              { 
  103240           0 :                pos_copy = static_cast<SgExpression*>(help.copyAst(get_pos())); 
  103241             :              } 
  103242             :             else 
  103243             :              { 
  103244             :                pos_copy = NULL; 
  103245             :              } 
  103246             :   /* check for a valid pointer and delete if present */ 
  103247           0 :      if (result->p_pos != NULL) delete result->p_pos; 
  103248           0 :      result->p_pos = pos_copy; 
  103249             :   // case: not a listType for (using conditionalToSetParent)pos
  103250           0 :           if ( (pos_copy != NULL) && (pos_copy->get_parent() == NULL) && (isSgType(pos_copy) == NULL) ) 
  103251             :              { 
  103252           0 :                pos_copy->set_parent(result); 
  103253             :              } 
  103254             :   // Copy non-constructor parameter data member (access function): rec_copy
  103255           0 :      SgExpression* rec_copy; 
  103256             :   // case: not a listType for (using conditionalToCopyVariable)rec
  103257           0 :           if (get_rec() != NULL) 
  103258             :              { 
  103259           0 :                rec_copy = static_cast<SgExpression*>(help.copyAst(get_rec())); 
  103260             :              } 
  103261             :             else 
  103262             :              { 
  103263             :                rec_copy = NULL; 
  103264             :              } 
  103265             :   /* check for a valid pointer and delete if present */ 
  103266           0 :      if (result->p_rec != NULL) delete result->p_rec; 
  103267           0 :      result->p_rec = rec_copy; 
  103268             :   // case: not a listType for (using conditionalToSetParent)rec
  103269           0 :           if ( (rec_copy != NULL) && (rec_copy->get_parent() == NULL) && (isSgType(rec_copy) == NULL) ) 
  103270             :              { 
  103271           0 :                rec_copy->set_parent(result); 
  103272             :              } 
  103273             :   // Copy non-constructor parameter data member (access function): round_copy
  103274           0 :      SgExpression* round_copy; 
  103275             :   // case: not a listType for (using conditionalToCopyVariable)round
  103276           0 :           if (get_round() != NULL) 
  103277             :              { 
  103278           0 :                round_copy = static_cast<SgExpression*>(help.copyAst(get_round())); 
  103279             :              } 
  103280             :             else 
  103281             :              { 
  103282             :                round_copy = NULL; 
  103283             :              } 
  103284             :   /* check for a valid pointer and delete if present */ 
  103285           0 :      if (result->p_round != NULL) delete result->p_round; 
  103286           0 :      result->p_round = round_copy; 
  103287             :   // case: not a listType for (using conditionalToSetParent)round
  103288           0 :           if ( (round_copy != NULL) && (round_copy->get_parent() == NULL) && (isSgType(round_copy) == NULL) ) 
  103289             :              { 
  103290           0 :                round_copy->set_parent(result); 
  103291             :              } 
  103292             :   // Copy non-constructor parameter data member (access function): sign_copy
  103293           0 :      SgExpression* sign_copy; 
  103294             :   // case: not a listType for (using conditionalToCopyVariable)sign
  103295           0 :           if (get_sign() != NULL) 
  103296             :              { 
  103297           0 :                sign_copy = static_cast<SgExpression*>(help.copyAst(get_sign())); 
  103298             :              } 
  103299             :             else 
  103300             :              { 
  103301             :                sign_copy = NULL; 
  103302             :              } 
  103303             :   /* check for a valid pointer and delete if present */ 
  103304           0 :      if (result->p_sign != NULL) delete result->p_sign; 
  103305           0 :      result->p_sign = sign_copy; 
  103306             :   // case: not a listType for (using conditionalToSetParent)sign
  103307           0 :           if ( (sign_copy != NULL) && (sign_copy->get_parent() == NULL) && (isSgType(sign_copy) == NULL) ) 
  103308             :              { 
  103309           0 :                sign_copy->set_parent(result); 
  103310             :              } 
  103311             :   // Copy non-constructor parameter data member (access function): size_copy
  103312           0 :      SgExpression* size_copy; 
  103313             :   // case: not a listType for (using conditionalToCopyVariable)size
  103314           0 :           if (get_size() != NULL) 
  103315             :              { 
  103316           0 :                size_copy = static_cast<SgExpression*>(help.copyAst(get_size())); 
  103317             :              } 
  103318             :             else 
  103319             :              { 
  103320             :                size_copy = NULL; 
  103321             :              } 
  103322             :   /* check for a valid pointer and delete if present */ 
  103323           0 :      if (result->p_size != NULL) delete result->p_size; 
  103324           0 :      result->p_size = size_copy; 
  103325             :   // case: not a listType for (using conditionalToSetParent)size
  103326           0 :           if ( (size_copy != NULL) && (size_copy->get_parent() == NULL) && (isSgType(size_copy) == NULL) ) 
  103327             :              { 
  103328           0 :                size_copy->set_parent(result); 
  103329             :              } 
  103330             : 
  103331             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  103332             : 
  103333             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  103334             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  103335             :   // fixupCopy(result,help);
  103336             : 
  103337             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  103338             :   // the Sg_File_Info objects that are built for the new IR nodes.
  103339           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  103340           0 :      if (locatedNode != NULL)
  103341             :         {
  103342             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  103343           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  103344           0 :           ROSE_ASSERT(start != NULL);
  103345             : #if 0
  103346             :        // Debugging information
  103347             :           if (start->get_parent() == NULL)
  103348             :              {
  103349             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  103350             :              }
  103351             : #endif
  103352           0 :           start->set_parent(locatedNode);
  103353           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  103354             : 
  103355           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  103356             : 
  103357             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  103358             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  103359             :        // ROSE_ASSERT(end != NULL);
  103360           0 :           if (end == NULL)
  103361             :              {
  103362           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  103363             :              }
  103364             :             else
  103365             :              {
  103366             : #if 0
  103367             :             // Debugging information
  103368             :                if (end->get_parent() == NULL)
  103369             :                   {
  103370             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  103371             :                   }
  103372             : #endif
  103373           0 :                end->set_parent(locatedNode);
  103374           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  103375             :              }
  103376             : 
  103377           0 :           SgExpression* expression = isSgExpression(result);
  103378           0 :           if (isSgExpression(this) != NULL)
  103379             :              {
  103380           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  103381             : 
  103382             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  103383           0 :                if (operatorPosition != NULL)
  103384             :                   {
  103385             : #if 0
  103386             :                  // Debugging information
  103387             :                     if (operatorPosition->get_parent() == NULL)
  103388             :                        {
  103389             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  103390             :                        }
  103391             : #endif
  103392           0 :                     operatorPosition->set_parent(expression);
  103393           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  103394             :                   }
  103395             :              }
  103396             :         }
  103397             : 
  103398             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  103399           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  103400           0 :      if (initializedName != NULL)
  103401             :         {
  103402             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  103403           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  103404           0 :           ROSE_ASSERT(start != NULL);
  103405             : #if 0
  103406             :        // Debugging information
  103407             :           if (start->get_parent() == NULL)
  103408             :              {
  103409             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  103410             :              }
  103411             : #endif
  103412           0 :           start->set_parent(initializedName);
  103413           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  103414             : 
  103415             : #if 0
  103416             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  103417             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  103418             : 
  103419             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  103420             :        // ROSE_ASSERT(end != NULL);
  103421             :           if (end == NULL)
  103422             :              {
  103423             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  103424             :              }
  103425             :             else
  103426             :              {
  103427             :                if (end->get_parent() == NULL)
  103428             :                   {
  103429             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  103430             :                   }
  103431             :                end->set_parent(initializedName);
  103432             :                ROSE_ASSERT(end->get_parent() != NULL);
  103433             :              }
  103434             : #endif
  103435             :         }
  103436             : 
  103437             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  103438           0 :      help.insertCopiedNodePair(this,result);
  103439             : 
  103440             :   // printf ("End of copy SgReadStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  103441             : 
  103442             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  103443             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  103444           0 :      help.decrementDepth();
  103445             : 
  103446             :   // Test if this is the root of the copy!
  103447           0 :      if (help.get_depth() == 0)
  103448             :         {
  103449             :        // This is the original calling node.
  103450             : 
  103451             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  103452             :        // printf ("Calling SgReadStatement::fixupCopy() (from root of AST being copied) \n");
  103453             : #if ALT_FIXUP_COPY
  103454             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  103455           0 :           fixupCopy_scopes (result,help);
  103456           0 :           fixupCopy_symbols (result,help);
  103457           0 :           fixupCopy_references (result,help);
  103458             : #else
  103459             :           fixupCopy(result,help);
  103460             : #endif
  103461             :        // Allow this to be called recursively, so accumulate the state.
  103462             :        // Also, clear the state in the SgCopyHelp object.
  103463             :        // help.clearState();
  103464             :         }
  103465             : 
  103466           0 :      return result;
  103467             :    }
  103468             : 
  103469             : 
  103470             : /* #line 103471 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  103471             : 
  103472             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  103473             : 
  103474           0 : SgNode* SgWriteStatement::copy ( SgCopyHelp& help) const
  103475             :    {
  103476           0 :      SgWriteStatement* result = NULL;
  103477             : 
  103478             :   // printf ("Copy SgWriteStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  103479             : 
  103480             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  103481             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  103482             :   // The default value of the depth is 0, so after this call the depth is 1!
  103483           0 :      help.incrementDepth();
  103484             : 
  103485             : #if 0
  103486             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  103487             :   // but it is not generally true that things can only be copied once!
  103488             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  103489             :   // AstAttribute* existingAttribute = const_cast<SgWriteStatement*>(this)->attribute["copied"];
  103490             :      bool previouslyCopied = const_cast<SgWriteStatement*>(this)->attribute.exists("copied");
  103491             :      if (previouslyCopied == true)
  103492             :         {
  103493             :           this->get_file_info()->display("Called from copy SgWriteStatement: debug");
  103494             :         }
  103495             :      ROSE_ASSERT(previouslyCopied == false);
  103496             : 
  103497             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  103498             :      AstAttribute* newAttribute = new AstAttribute();
  103499             :      ROSE_ASSERT(newAttribute != NULL);
  103500             : 
  103501             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  103502             :      const_cast<SgWriteStatement*>(this)->attribute.add("copied",newAttribute);
  103503             : #endif
  103504             : 
  103505             :   // Copy data members from base classes
  103506             :   // Copy constructor parameter data member: startOfConstruct_copy
  103507             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  103508             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  103509           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  103510           0 :      if ( p_startOfConstruct != NULL ) 
  103511             :         { 
  103512           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  103513             :         } 
  103514             :        else 
  103515             :         { 
  103516             :           startOfConstruct_copy = NULL; 
  103517             :         } 
  103518             :  
  103519             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  103520             : 
  103521             :   // Build an empty copy of this object (will be filled in, but 
  103522             :   // the parent can't be set and must be set by the caller)
  103523           0 :      result = new SgWriteStatement(  startOfConstruct_copy );
  103524           0 :      ROSE_ASSERT(result != NULL);
  103525             : 
  103526             :   // Copy data members of "this" class
  103527             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  103528             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  103529             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  103530           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  103531           0 :      if ( p_endOfConstruct != NULL ) 
  103532             :         { 
  103533           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  103534             :         } 
  103535             :        else 
  103536             :         { 
  103537             :           endOfConstruct_copy = NULL; 
  103538             :         } 
  103539             :   /* check for a valid pointer and delete if present */ 
  103540           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  103541             :   /* add assignment to result here */ 
  103542           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  103543             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  103544             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  103545             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  103546           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  103547           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  103548             :         { 
  103549           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  103550             :         } 
  103551             :        else 
  103552             :         { 
  103553             :           attachedPreprocessingInfoPtr_copy = NULL; 
  103554             :         } 
  103555             :   /* check for a valid pointer and delete if present */ 
  103556           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  103557             :   /* add assignment to result here */ 
  103558           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  103559             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  103560             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  103561             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  103562           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  103563           0 :      if ( p_attributeMechanism != NULL ) 
  103564             :         { 
  103565           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  103566             :         } 
  103567             :        else 
  103568             :         { 
  103569             :           attributeMechanism_copy = NULL; 
  103570             :         } 
  103571             :   /* check for a valid pointer and delete if present */ 
  103572           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  103573             :   /* add assignment to result here */ 
  103574           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  103575             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  103576             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  103577             :   // case: toBeCopied == COPY_DATA for numeric_label
  103578           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  103579           0 :      result->p_numeric_label = numeric_label_copy; 
  103580             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  103581             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  103582             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  103583           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  103584           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  103585             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  103586             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  103587             :   // case: toBeCopied == COPY_DATA for io_statement
  103588           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  103589           0 :      result->p_io_statement = io_statement_copy; 
  103590             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  103591           0 :      SgExprListExp* io_stmt_list_copy; 
  103592             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  103593           0 :           if (get_io_stmt_list() != NULL) 
  103594             :              { 
  103595           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  103596             :              } 
  103597             :             else 
  103598             :              { 
  103599             :                io_stmt_list_copy = NULL; 
  103600             :              } 
  103601             :   /* check for a valid pointer and delete if present */ 
  103602           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  103603           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  103604             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  103605           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  103606             :              { 
  103607           0 :                io_stmt_list_copy->set_parent(result); 
  103608             :              } 
  103609             :   // Copy non-constructor parameter data member (access function): unit_copy
  103610           0 :      SgExpression* unit_copy; 
  103611             :   // case: not a listType for (using conditionalToCopyVariable)unit
  103612           0 :           if (get_unit() != NULL) 
  103613             :              { 
  103614           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  103615             :              } 
  103616             :             else 
  103617             :              { 
  103618             :                unit_copy = NULL; 
  103619             :              } 
  103620             :   /* check for a valid pointer and delete if present */ 
  103621           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  103622           0 :      result->p_unit = unit_copy; 
  103623             :   // case: not a listType for (using conditionalToSetParent)unit
  103624           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  103625             :              { 
  103626           0 :                unit_copy->set_parent(result); 
  103627             :              } 
  103628             :   // Copy non-constructor parameter data member (access function): iostat_copy
  103629           0 :      SgExpression* iostat_copy; 
  103630             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  103631           0 :           if (get_iostat() != NULL) 
  103632             :              { 
  103633           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  103634             :              } 
  103635             :             else 
  103636             :              { 
  103637             :                iostat_copy = NULL; 
  103638             :              } 
  103639             :   /* check for a valid pointer and delete if present */ 
  103640           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  103641           0 :      result->p_iostat = iostat_copy; 
  103642             :   // case: not a listType for (using conditionalToSetParent)iostat
  103643           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  103644             :              { 
  103645           0 :                iostat_copy->set_parent(result); 
  103646             :              } 
  103647             :   // Copy non-constructor parameter data member (access function): err_copy
  103648           0 :      SgExpression* err_copy; 
  103649             :   // case: not a listType for (using conditionalToCopyVariable)err
  103650           0 :           if (get_err() != NULL) 
  103651             :              { 
  103652           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  103653             :              } 
  103654             :             else 
  103655             :              { 
  103656             :                err_copy = NULL; 
  103657             :              } 
  103658             :   /* check for a valid pointer and delete if present */ 
  103659           0 :      if (result->p_err != NULL) delete result->p_err; 
  103660           0 :      result->p_err = err_copy; 
  103661             :   // case: not a listType for (using conditionalToSetParent)err
  103662           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  103663             :              { 
  103664           0 :                err_copy->set_parent(result); 
  103665             :              } 
  103666             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  103667           0 :      SgExpression* iomsg_copy; 
  103668             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  103669           0 :           if (get_iomsg() != NULL) 
  103670             :              { 
  103671           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  103672             :              } 
  103673             :             else 
  103674             :              { 
  103675             :                iomsg_copy = NULL; 
  103676             :              } 
  103677             :   /* check for a valid pointer and delete if present */ 
  103678           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  103679           0 :      result->p_iomsg = iomsg_copy; 
  103680             :   // case: not a listType for (using conditionalToSetParent)iomsg
  103681           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  103682             :              { 
  103683           0 :                iomsg_copy->set_parent(result); 
  103684             :              } 
  103685             :   // Copy non-constructor parameter data member (access function): format_copy
  103686           0 :      SgExpression* format_copy; 
  103687             :   // case: not a listType for (using conditionalToCopyVariable)format
  103688           0 :           if (get_format() != NULL) 
  103689             :              { 
  103690           0 :                format_copy = static_cast<SgExpression*>(help.copyAst(get_format())); 
  103691             :              } 
  103692             :             else 
  103693             :              { 
  103694             :                format_copy = NULL; 
  103695             :              } 
  103696             :   /* check for a valid pointer and delete if present */ 
  103697           0 :      if (result->p_format != NULL) delete result->p_format; 
  103698           0 :      result->p_format = format_copy; 
  103699             :   // case: not a listType for (using conditionalToSetParent)format
  103700           0 :           if ( (format_copy != NULL) && (format_copy->get_parent() == NULL) && (isSgType(format_copy) == NULL) ) 
  103701             :              { 
  103702           0 :                format_copy->set_parent(result); 
  103703             :              } 
  103704             :   // Copy non-constructor parameter data member (access function): namelist_copy
  103705           0 :      SgExpression* namelist_copy; 
  103706             :   // case: not a listType for (using conditionalToCopyVariable)namelist
  103707           0 :           if (get_namelist() != NULL) 
  103708             :              { 
  103709           0 :                namelist_copy = static_cast<SgExpression*>(help.copyAst(get_namelist())); 
  103710             :              } 
  103711             :             else 
  103712             :              { 
  103713             :                namelist_copy = NULL; 
  103714             :              } 
  103715             :   /* check for a valid pointer and delete if present */ 
  103716           0 :      if (result->p_namelist != NULL) delete result->p_namelist; 
  103717           0 :      result->p_namelist = namelist_copy; 
  103718             :   // case: not a listType for (using conditionalToSetParent)namelist
  103719           0 :           if ( (namelist_copy != NULL) && (namelist_copy->get_parent() == NULL) && (isSgType(namelist_copy) == NULL) ) 
  103720             :              { 
  103721           0 :                namelist_copy->set_parent(result); 
  103722             :              } 
  103723             :   // Copy non-constructor parameter data member (access function): advance_copy
  103724           0 :      SgExpression* advance_copy; 
  103725             :   // case: not a listType for (using conditionalToCopyVariable)advance
  103726           0 :           if (get_advance() != NULL) 
  103727             :              { 
  103728           0 :                advance_copy = static_cast<SgExpression*>(help.copyAst(get_advance())); 
  103729             :              } 
  103730             :             else 
  103731             :              { 
  103732             :                advance_copy = NULL; 
  103733             :              } 
  103734             :   /* check for a valid pointer and delete if present */ 
  103735           0 :      if (result->p_advance != NULL) delete result->p_advance; 
  103736           0 :      result->p_advance = advance_copy; 
  103737             :   // case: not a listType for (using conditionalToSetParent)advance
  103738           0 :           if ( (advance_copy != NULL) && (advance_copy->get_parent() == NULL) && (isSgType(advance_copy) == NULL) ) 
  103739             :              { 
  103740           0 :                advance_copy->set_parent(result); 
  103741             :              } 
  103742             :   // Copy non-constructor parameter data member (access function): asynchronous_copy
  103743           0 :      SgExpression* asynchronous_copy; 
  103744             :   // case: not a listType for (using conditionalToCopyVariable)asynchronous
  103745           0 :           if (get_asynchronous() != NULL) 
  103746             :              { 
  103747           0 :                asynchronous_copy = static_cast<SgExpression*>(help.copyAst(get_asynchronous())); 
  103748             :              } 
  103749             :             else 
  103750             :              { 
  103751             :                asynchronous_copy = NULL; 
  103752             :              } 
  103753             :   /* check for a valid pointer and delete if present */ 
  103754           0 :      if (result->p_asynchronous != NULL) delete result->p_asynchronous; 
  103755           0 :      result->p_asynchronous = asynchronous_copy; 
  103756             :   // case: not a listType for (using conditionalToSetParent)asynchronous
  103757           0 :           if ( (asynchronous_copy != NULL) && (asynchronous_copy->get_parent() == NULL) && (isSgType(asynchronous_copy) == NULL) ) 
  103758             :              { 
  103759           0 :                asynchronous_copy->set_parent(result); 
  103760             :              } 
  103761             :   // Copy non-constructor parameter data member (access function): blank_copy
  103762           0 :      SgExpression* blank_copy; 
  103763             :   // case: not a listType for (using conditionalToCopyVariable)blank
  103764           0 :           if (get_blank() != NULL) 
  103765             :              { 
  103766           0 :                blank_copy = static_cast<SgExpression*>(help.copyAst(get_blank())); 
  103767             :              } 
  103768             :             else 
  103769             :              { 
  103770             :                blank_copy = NULL; 
  103771             :              } 
  103772             :   /* check for a valid pointer and delete if present */ 
  103773           0 :      if (result->p_blank != NULL) delete result->p_blank; 
  103774           0 :      result->p_blank = blank_copy; 
  103775             :   // case: not a listType for (using conditionalToSetParent)blank
  103776           0 :           if ( (blank_copy != NULL) && (blank_copy->get_parent() == NULL) && (isSgType(blank_copy) == NULL) ) 
  103777             :              { 
  103778           0 :                blank_copy->set_parent(result); 
  103779             :              } 
  103780             :   // Copy non-constructor parameter data member (access function): decimal_copy
  103781           0 :      SgExpression* decimal_copy; 
  103782             :   // case: not a listType for (using conditionalToCopyVariable)decimal
  103783           0 :           if (get_decimal() != NULL) 
  103784             :              { 
  103785           0 :                decimal_copy = static_cast<SgExpression*>(help.copyAst(get_decimal())); 
  103786             :              } 
  103787             :             else 
  103788             :              { 
  103789             :                decimal_copy = NULL; 
  103790             :              } 
  103791             :   /* check for a valid pointer and delete if present */ 
  103792           0 :      if (result->p_decimal != NULL) delete result->p_decimal; 
  103793           0 :      result->p_decimal = decimal_copy; 
  103794             :   // case: not a listType for (using conditionalToSetParent)decimal
  103795           0 :           if ( (decimal_copy != NULL) && (decimal_copy->get_parent() == NULL) && (isSgType(decimal_copy) == NULL) ) 
  103796             :              { 
  103797           0 :                decimal_copy->set_parent(result); 
  103798             :              } 
  103799             :   // Copy non-constructor parameter data member (access function): delim_copy
  103800           0 :      SgExpression* delim_copy; 
  103801             :   // case: not a listType for (using conditionalToCopyVariable)delim
  103802           0 :           if (get_delim() != NULL) 
  103803             :              { 
  103804           0 :                delim_copy = static_cast<SgExpression*>(help.copyAst(get_delim())); 
  103805             :              } 
  103806             :             else 
  103807             :              { 
  103808             :                delim_copy = NULL; 
  103809             :              } 
  103810             :   /* check for a valid pointer and delete if present */ 
  103811           0 :      if (result->p_delim != NULL) delete result->p_delim; 
  103812           0 :      result->p_delim = delim_copy; 
  103813             :   // case: not a listType for (using conditionalToSetParent)delim
  103814           0 :           if ( (delim_copy != NULL) && (delim_copy->get_parent() == NULL) && (isSgType(delim_copy) == NULL) ) 
  103815             :              { 
  103816           0 :                delim_copy->set_parent(result); 
  103817             :              } 
  103818             :   // Copy non-constructor parameter data member (access function): end_copy
  103819           0 :      SgExpression* end_copy; 
  103820             :   // case: not a listType for (using conditionalToCopyVariable)end
  103821           0 :           if (get_end() != NULL) 
  103822             :              { 
  103823           0 :                end_copy = static_cast<SgExpression*>(help.copyAst(get_end())); 
  103824             :              } 
  103825             :             else 
  103826             :              { 
  103827             :                end_copy = NULL; 
  103828             :              } 
  103829             :   /* check for a valid pointer and delete if present */ 
  103830           0 :      if (result->p_end != NULL) delete result->p_end; 
  103831           0 :      result->p_end = end_copy; 
  103832             :   // case: not a listType for (using conditionalToSetParent)end
  103833           0 :           if ( (end_copy != NULL) && (end_copy->get_parent() == NULL) && (isSgType(end_copy) == NULL) ) 
  103834             :              { 
  103835           0 :                end_copy->set_parent(result); 
  103836             :              } 
  103837             :   // Copy non-constructor parameter data member (access function): eor_copy
  103838           0 :      SgExpression* eor_copy; 
  103839             :   // case: not a listType for (using conditionalToCopyVariable)eor
  103840           0 :           if (get_eor() != NULL) 
  103841             :              { 
  103842           0 :                eor_copy = static_cast<SgExpression*>(help.copyAst(get_eor())); 
  103843             :              } 
  103844             :             else 
  103845             :              { 
  103846             :                eor_copy = NULL; 
  103847             :              } 
  103848             :   /* check for a valid pointer and delete if present */ 
  103849           0 :      if (result->p_eor != NULL) delete result->p_eor; 
  103850           0 :      result->p_eor = eor_copy; 
  103851             :   // case: not a listType for (using conditionalToSetParent)eor
  103852           0 :           if ( (eor_copy != NULL) && (eor_copy->get_parent() == NULL) && (isSgType(eor_copy) == NULL) ) 
  103853             :              { 
  103854           0 :                eor_copy->set_parent(result); 
  103855             :              } 
  103856             :   // Copy non-constructor parameter data member (access function): id_copy
  103857           0 :      SgExpression* id_copy; 
  103858             :   // case: not a listType for (using conditionalToCopyVariable)id
  103859           0 :           if (get_id() != NULL) 
  103860             :              { 
  103861           0 :                id_copy = static_cast<SgExpression*>(help.copyAst(get_id())); 
  103862             :              } 
  103863             :             else 
  103864             :              { 
  103865             :                id_copy = NULL; 
  103866             :              } 
  103867             :   /* check for a valid pointer and delete if present */ 
  103868           0 :      if (result->p_id != NULL) delete result->p_id; 
  103869           0 :      result->p_id = id_copy; 
  103870             :   // case: not a listType for (using conditionalToSetParent)id
  103871           0 :           if ( (id_copy != NULL) && (id_copy->get_parent() == NULL) && (isSgType(id_copy) == NULL) ) 
  103872             :              { 
  103873           0 :                id_copy->set_parent(result); 
  103874             :              } 
  103875             :   // Copy non-constructor parameter data member (access function): pad_copy
  103876           0 :      SgExpression* pad_copy; 
  103877             :   // case: not a listType for (using conditionalToCopyVariable)pad
  103878           0 :           if (get_pad() != NULL) 
  103879             :              { 
  103880           0 :                pad_copy = static_cast<SgExpression*>(help.copyAst(get_pad())); 
  103881             :              } 
  103882             :             else 
  103883             :              { 
  103884             :                pad_copy = NULL; 
  103885             :              } 
  103886             :   /* check for a valid pointer and delete if present */ 
  103887           0 :      if (result->p_pad != NULL) delete result->p_pad; 
  103888           0 :      result->p_pad = pad_copy; 
  103889             :   // case: not a listType for (using conditionalToSetParent)pad
  103890           0 :           if ( (pad_copy != NULL) && (pad_copy->get_parent() == NULL) && (isSgType(pad_copy) == NULL) ) 
  103891             :              { 
  103892           0 :                pad_copy->set_parent(result); 
  103893             :              } 
  103894             :   // Copy non-constructor parameter data member (access function): pos_copy
  103895           0 :      SgExpression* pos_copy; 
  103896             :   // case: not a listType for (using conditionalToCopyVariable)pos
  103897           0 :           if (get_pos() != NULL) 
  103898             :              { 
  103899           0 :                pos_copy = static_cast<SgExpression*>(help.copyAst(get_pos())); 
  103900             :              } 
  103901             :             else 
  103902             :              { 
  103903             :                pos_copy = NULL; 
  103904             :              } 
  103905             :   /* check for a valid pointer and delete if present */ 
  103906           0 :      if (result->p_pos != NULL) delete result->p_pos; 
  103907           0 :      result->p_pos = pos_copy; 
  103908             :   // case: not a listType for (using conditionalToSetParent)pos
  103909           0 :           if ( (pos_copy != NULL) && (pos_copy->get_parent() == NULL) && (isSgType(pos_copy) == NULL) ) 
  103910             :              { 
  103911           0 :                pos_copy->set_parent(result); 
  103912             :              } 
  103913             :   // Copy non-constructor parameter data member (access function): rec_copy
  103914           0 :      SgExpression* rec_copy; 
  103915             :   // case: not a listType for (using conditionalToCopyVariable)rec
  103916           0 :           if (get_rec() != NULL) 
  103917             :              { 
  103918           0 :                rec_copy = static_cast<SgExpression*>(help.copyAst(get_rec())); 
  103919             :              } 
  103920             :             else 
  103921             :              { 
  103922             :                rec_copy = NULL; 
  103923             :              } 
  103924             :   /* check for a valid pointer and delete if present */ 
  103925           0 :      if (result->p_rec != NULL) delete result->p_rec; 
  103926           0 :      result->p_rec = rec_copy; 
  103927             :   // case: not a listType for (using conditionalToSetParent)rec
  103928           0 :           if ( (rec_copy != NULL) && (rec_copy->get_parent() == NULL) && (isSgType(rec_copy) == NULL) ) 
  103929             :              { 
  103930           0 :                rec_copy->set_parent(result); 
  103931             :              } 
  103932             :   // Copy non-constructor parameter data member (access function): round_copy
  103933           0 :      SgExpression* round_copy; 
  103934             :   // case: not a listType for (using conditionalToCopyVariable)round
  103935           0 :           if (get_round() != NULL) 
  103936             :              { 
  103937           0 :                round_copy = static_cast<SgExpression*>(help.copyAst(get_round())); 
  103938             :              } 
  103939             :             else 
  103940             :              { 
  103941             :                round_copy = NULL; 
  103942             :              } 
  103943             :   /* check for a valid pointer and delete if present */ 
  103944           0 :      if (result->p_round != NULL) delete result->p_round; 
  103945           0 :      result->p_round = round_copy; 
  103946             :   // case: not a listType for (using conditionalToSetParent)round
  103947           0 :           if ( (round_copy != NULL) && (round_copy->get_parent() == NULL) && (isSgType(round_copy) == NULL) ) 
  103948             :              { 
  103949           0 :                round_copy->set_parent(result); 
  103950             :              } 
  103951             :   // Copy non-constructor parameter data member (access function): sign_copy
  103952           0 :      SgExpression* sign_copy; 
  103953             :   // case: not a listType for (using conditionalToCopyVariable)sign
  103954           0 :           if (get_sign() != NULL) 
  103955             :              { 
  103956           0 :                sign_copy = static_cast<SgExpression*>(help.copyAst(get_sign())); 
  103957             :              } 
  103958             :             else 
  103959             :              { 
  103960             :                sign_copy = NULL; 
  103961             :              } 
  103962             :   /* check for a valid pointer and delete if present */ 
  103963           0 :      if (result->p_sign != NULL) delete result->p_sign; 
  103964           0 :      result->p_sign = sign_copy; 
  103965             :   // case: not a listType for (using conditionalToSetParent)sign
  103966           0 :           if ( (sign_copy != NULL) && (sign_copy->get_parent() == NULL) && (isSgType(sign_copy) == NULL) ) 
  103967             :              { 
  103968           0 :                sign_copy->set_parent(result); 
  103969             :              } 
  103970             :   // Copy non-constructor parameter data member (access function): size_copy
  103971           0 :      SgExpression* size_copy; 
  103972             :   // case: not a listType for (using conditionalToCopyVariable)size
  103973           0 :           if (get_size() != NULL) 
  103974             :              { 
  103975           0 :                size_copy = static_cast<SgExpression*>(help.copyAst(get_size())); 
  103976             :              } 
  103977             :             else 
  103978             :              { 
  103979             :                size_copy = NULL; 
  103980             :              } 
  103981             :   /* check for a valid pointer and delete if present */ 
  103982           0 :      if (result->p_size != NULL) delete result->p_size; 
  103983           0 :      result->p_size = size_copy; 
  103984             :   // case: not a listType for (using conditionalToSetParent)size
  103985           0 :           if ( (size_copy != NULL) && (size_copy->get_parent() == NULL) && (isSgType(size_copy) == NULL) ) 
  103986             :              { 
  103987           0 :                size_copy->set_parent(result); 
  103988             :              } 
  103989             : 
  103990             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  103991             : 
  103992             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  103993             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  103994             :   // fixupCopy(result,help);
  103995             : 
  103996             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  103997             :   // the Sg_File_Info objects that are built for the new IR nodes.
  103998           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  103999           0 :      if (locatedNode != NULL)
  104000             :         {
  104001             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  104002           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  104003           0 :           ROSE_ASSERT(start != NULL);
  104004             : #if 0
  104005             :        // Debugging information
  104006             :           if (start->get_parent() == NULL)
  104007             :              {
  104008             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104009             :              }
  104010             : #endif
  104011           0 :           start->set_parent(locatedNode);
  104012           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  104013             : 
  104014           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  104015             : 
  104016             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  104017             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  104018             :        // ROSE_ASSERT(end != NULL);
  104019           0 :           if (end == NULL)
  104020             :              {
  104021           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  104022             :              }
  104023             :             else
  104024             :              {
  104025             : #if 0
  104026             :             // Debugging information
  104027             :                if (end->get_parent() == NULL)
  104028             :                   {
  104029             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104030             :                   }
  104031             : #endif
  104032           0 :                end->set_parent(locatedNode);
  104033           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  104034             :              }
  104035             : 
  104036           0 :           SgExpression* expression = isSgExpression(result);
  104037           0 :           if (isSgExpression(this) != NULL)
  104038             :              {
  104039           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  104040             : 
  104041             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  104042           0 :                if (operatorPosition != NULL)
  104043             :                   {
  104044             : #if 0
  104045             :                  // Debugging information
  104046             :                     if (operatorPosition->get_parent() == NULL)
  104047             :                        {
  104048             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104049             :                        }
  104050             : #endif
  104051           0 :                     operatorPosition->set_parent(expression);
  104052           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  104053             :                   }
  104054             :              }
  104055             :         }
  104056             : 
  104057             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  104058           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  104059           0 :      if (initializedName != NULL)
  104060             :         {
  104061             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  104062           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  104063           0 :           ROSE_ASSERT(start != NULL);
  104064             : #if 0
  104065             :        // Debugging information
  104066             :           if (start->get_parent() == NULL)
  104067             :              {
  104068             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104069             :              }
  104070             : #endif
  104071           0 :           start->set_parent(initializedName);
  104072           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  104073             : 
  104074             : #if 0
  104075             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  104076             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  104077             : 
  104078             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  104079             :        // ROSE_ASSERT(end != NULL);
  104080             :           if (end == NULL)
  104081             :              {
  104082             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  104083             :              }
  104084             :             else
  104085             :              {
  104086             :                if (end->get_parent() == NULL)
  104087             :                   {
  104088             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104089             :                   }
  104090             :                end->set_parent(initializedName);
  104091             :                ROSE_ASSERT(end->get_parent() != NULL);
  104092             :              }
  104093             : #endif
  104094             :         }
  104095             : 
  104096             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  104097           0 :      help.insertCopiedNodePair(this,result);
  104098             : 
  104099             :   // printf ("End of copy SgWriteStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  104100             : 
  104101             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  104102             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  104103           0 :      help.decrementDepth();
  104104             : 
  104105             :   // Test if this is the root of the copy!
  104106           0 :      if (help.get_depth() == 0)
  104107             :         {
  104108             :        // This is the original calling node.
  104109             : 
  104110             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  104111             :        // printf ("Calling SgWriteStatement::fixupCopy() (from root of AST being copied) \n");
  104112             : #if ALT_FIXUP_COPY
  104113             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  104114           0 :           fixupCopy_scopes (result,help);
  104115           0 :           fixupCopy_symbols (result,help);
  104116           0 :           fixupCopy_references (result,help);
  104117             : #else
  104118             :           fixupCopy(result,help);
  104119             : #endif
  104120             :        // Allow this to be called recursively, so accumulate the state.
  104121             :        // Also, clear the state in the SgCopyHelp object.
  104122             :        // help.clearState();
  104123             :         }
  104124             : 
  104125           0 :      return result;
  104126             :    }
  104127             : 
  104128             : 
  104129             : /* #line 104130 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  104130             : 
  104131             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  104132             : 
  104133           0 : SgNode* SgOpenStatement::copy ( SgCopyHelp& help) const
  104134             :    {
  104135           0 :      SgOpenStatement* result = NULL;
  104136             : 
  104137             :   // printf ("Copy SgOpenStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  104138             : 
  104139             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  104140             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  104141             :   // The default value of the depth is 0, so after this call the depth is 1!
  104142           0 :      help.incrementDepth();
  104143             : 
  104144             : #if 0
  104145             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  104146             :   // but it is not generally true that things can only be copied once!
  104147             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  104148             :   // AstAttribute* existingAttribute = const_cast<SgOpenStatement*>(this)->attribute["copied"];
  104149             :      bool previouslyCopied = const_cast<SgOpenStatement*>(this)->attribute.exists("copied");
  104150             :      if (previouslyCopied == true)
  104151             :         {
  104152             :           this->get_file_info()->display("Called from copy SgOpenStatement: debug");
  104153             :         }
  104154             :      ROSE_ASSERT(previouslyCopied == false);
  104155             : 
  104156             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  104157             :      AstAttribute* newAttribute = new AstAttribute();
  104158             :      ROSE_ASSERT(newAttribute != NULL);
  104159             : 
  104160             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  104161             :      const_cast<SgOpenStatement*>(this)->attribute.add("copied",newAttribute);
  104162             : #endif
  104163             : 
  104164             :   // Copy data members from base classes
  104165             :   // Copy constructor parameter data member: startOfConstruct_copy
  104166             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  104167             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  104168           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  104169           0 :      if ( p_startOfConstruct != NULL ) 
  104170             :         { 
  104171           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  104172             :         } 
  104173             :        else 
  104174             :         { 
  104175             :           startOfConstruct_copy = NULL; 
  104176             :         } 
  104177             :  
  104178             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  104179             : 
  104180             :   // Build an empty copy of this object (will be filled in, but 
  104181             :   // the parent can't be set and must be set by the caller)
  104182           0 :      result = new SgOpenStatement(  startOfConstruct_copy );
  104183           0 :      ROSE_ASSERT(result != NULL);
  104184             : 
  104185             :   // Copy data members of "this" class
  104186             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  104187             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  104188             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  104189           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  104190           0 :      if ( p_endOfConstruct != NULL ) 
  104191             :         { 
  104192           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  104193             :         } 
  104194             :        else 
  104195             :         { 
  104196             :           endOfConstruct_copy = NULL; 
  104197             :         } 
  104198             :   /* check for a valid pointer and delete if present */ 
  104199           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  104200             :   /* add assignment to result here */ 
  104201           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  104202             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  104203             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  104204             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  104205           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  104206           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  104207             :         { 
  104208           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  104209             :         } 
  104210             :        else 
  104211             :         { 
  104212             :           attachedPreprocessingInfoPtr_copy = NULL; 
  104213             :         } 
  104214             :   /* check for a valid pointer and delete if present */ 
  104215           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  104216             :   /* add assignment to result here */ 
  104217           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  104218             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  104219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  104220             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  104221           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  104222           0 :      if ( p_attributeMechanism != NULL ) 
  104223             :         { 
  104224           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  104225             :         } 
  104226             :        else 
  104227             :         { 
  104228             :           attributeMechanism_copy = NULL; 
  104229             :         } 
  104230             :   /* check for a valid pointer and delete if present */ 
  104231           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  104232             :   /* add assignment to result here */ 
  104233           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  104234             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  104235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  104236             :   // case: toBeCopied == COPY_DATA for numeric_label
  104237           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  104238           0 :      result->p_numeric_label = numeric_label_copy; 
  104239             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  104240             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  104241             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  104242           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  104243           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  104244             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  104245             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  104246             :   // case: toBeCopied == COPY_DATA for io_statement
  104247           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  104248           0 :      result->p_io_statement = io_statement_copy; 
  104249             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  104250           0 :      SgExprListExp* io_stmt_list_copy; 
  104251             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  104252           0 :           if (get_io_stmt_list() != NULL) 
  104253             :              { 
  104254           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  104255             :              } 
  104256             :             else 
  104257             :              { 
  104258             :                io_stmt_list_copy = NULL; 
  104259             :              } 
  104260             :   /* check for a valid pointer and delete if present */ 
  104261           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  104262           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  104263             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  104264           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  104265             :              { 
  104266           0 :                io_stmt_list_copy->set_parent(result); 
  104267             :              } 
  104268             :   // Copy non-constructor parameter data member (access function): unit_copy
  104269           0 :      SgExpression* unit_copy; 
  104270             :   // case: not a listType for (using conditionalToCopyVariable)unit
  104271           0 :           if (get_unit() != NULL) 
  104272             :              { 
  104273           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  104274             :              } 
  104275             :             else 
  104276             :              { 
  104277             :                unit_copy = NULL; 
  104278             :              } 
  104279             :   /* check for a valid pointer and delete if present */ 
  104280           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  104281           0 :      result->p_unit = unit_copy; 
  104282             :   // case: not a listType for (using conditionalToSetParent)unit
  104283           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  104284             :              { 
  104285           0 :                unit_copy->set_parent(result); 
  104286             :              } 
  104287             :   // Copy non-constructor parameter data member (access function): iostat_copy
  104288           0 :      SgExpression* iostat_copy; 
  104289             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  104290           0 :           if (get_iostat() != NULL) 
  104291             :              { 
  104292           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  104293             :              } 
  104294             :             else 
  104295             :              { 
  104296             :                iostat_copy = NULL; 
  104297             :              } 
  104298             :   /* check for a valid pointer and delete if present */ 
  104299           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  104300           0 :      result->p_iostat = iostat_copy; 
  104301             :   // case: not a listType for (using conditionalToSetParent)iostat
  104302           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  104303             :              { 
  104304           0 :                iostat_copy->set_parent(result); 
  104305             :              } 
  104306             :   // Copy non-constructor parameter data member (access function): err_copy
  104307           0 :      SgExpression* err_copy; 
  104308             :   // case: not a listType for (using conditionalToCopyVariable)err
  104309           0 :           if (get_err() != NULL) 
  104310             :              { 
  104311           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  104312             :              } 
  104313             :             else 
  104314             :              { 
  104315             :                err_copy = NULL; 
  104316             :              } 
  104317             :   /* check for a valid pointer and delete if present */ 
  104318           0 :      if (result->p_err != NULL) delete result->p_err; 
  104319           0 :      result->p_err = err_copy; 
  104320             :   // case: not a listType for (using conditionalToSetParent)err
  104321           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  104322             :              { 
  104323           0 :                err_copy->set_parent(result); 
  104324             :              } 
  104325             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  104326           0 :      SgExpression* iomsg_copy; 
  104327             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  104328           0 :           if (get_iomsg() != NULL) 
  104329             :              { 
  104330           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  104331             :              } 
  104332             :             else 
  104333             :              { 
  104334             :                iomsg_copy = NULL; 
  104335             :              } 
  104336             :   /* check for a valid pointer and delete if present */ 
  104337           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  104338           0 :      result->p_iomsg = iomsg_copy; 
  104339             :   // case: not a listType for (using conditionalToSetParent)iomsg
  104340           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  104341             :              { 
  104342           0 :                iomsg_copy->set_parent(result); 
  104343             :              } 
  104344             :   // Copy non-constructor parameter data member (access function): file_copy
  104345           0 :      SgExpression* file_copy; 
  104346             :   // case: not a listType for (using conditionalToCopyVariable)file
  104347           0 :           if (get_file() != NULL) 
  104348             :              { 
  104349           0 :                file_copy = static_cast<SgExpression*>(help.copyAst(get_file())); 
  104350             :              } 
  104351             :             else 
  104352             :              { 
  104353             :                file_copy = NULL; 
  104354             :              } 
  104355             :   /* check for a valid pointer and delete if present */ 
  104356           0 :      if (result->p_file != NULL) delete result->p_file; 
  104357           0 :      result->p_file = file_copy; 
  104358             :   // case: not a listType for (using conditionalToSetParent)file
  104359           0 :           if ( (file_copy != NULL) && (file_copy->get_parent() == NULL) && (isSgType(file_copy) == NULL) ) 
  104360             :              { 
  104361           0 :                file_copy->set_parent(result); 
  104362             :              } 
  104363             :   // Copy non-constructor parameter data member (access function): status_copy
  104364           0 :      SgExpression* status_copy; 
  104365             :   // case: not a listType for (using conditionalToCopyVariable)status
  104366           0 :           if (get_status() != NULL) 
  104367             :              { 
  104368           0 :                status_copy = static_cast<SgExpression*>(help.copyAst(get_status())); 
  104369             :              } 
  104370             :             else 
  104371             :              { 
  104372             :                status_copy = NULL; 
  104373             :              } 
  104374             :   /* check for a valid pointer and delete if present */ 
  104375           0 :      if (result->p_status != NULL) delete result->p_status; 
  104376           0 :      result->p_status = status_copy; 
  104377             :   // case: not a listType for (using conditionalToSetParent)status
  104378           0 :           if ( (status_copy != NULL) && (status_copy->get_parent() == NULL) && (isSgType(status_copy) == NULL) ) 
  104379             :              { 
  104380           0 :                status_copy->set_parent(result); 
  104381             :              } 
  104382             :   // Copy non-constructor parameter data member (access function): access_copy
  104383           0 :      SgExpression* access_copy; 
  104384             :   // case: not a listType for (using conditionalToCopyVariable)access
  104385           0 :           if (get_access() != NULL) 
  104386             :              { 
  104387           0 :                access_copy = static_cast<SgExpression*>(help.copyAst(get_access())); 
  104388             :              } 
  104389             :             else 
  104390             :              { 
  104391             :                access_copy = NULL; 
  104392             :              } 
  104393             :   /* check for a valid pointer and delete if present */ 
  104394           0 :      if (result->p_access != NULL) delete result->p_access; 
  104395           0 :      result->p_access = access_copy; 
  104396             :   // case: not a listType for (using conditionalToSetParent)access
  104397           0 :           if ( (access_copy != NULL) && (access_copy->get_parent() == NULL) && (isSgType(access_copy) == NULL) ) 
  104398             :              { 
  104399           0 :                access_copy->set_parent(result); 
  104400             :              } 
  104401             :   // Copy non-constructor parameter data member (access function): form_copy
  104402           0 :      SgExpression* form_copy; 
  104403             :   // case: not a listType for (using conditionalToCopyVariable)form
  104404           0 :           if (get_form() != NULL) 
  104405             :              { 
  104406           0 :                form_copy = static_cast<SgExpression*>(help.copyAst(get_form())); 
  104407             :              } 
  104408             :             else 
  104409             :              { 
  104410             :                form_copy = NULL; 
  104411             :              } 
  104412             :   /* check for a valid pointer and delete if present */ 
  104413           0 :      if (result->p_form != NULL) delete result->p_form; 
  104414           0 :      result->p_form = form_copy; 
  104415             :   // case: not a listType for (using conditionalToSetParent)form
  104416           0 :           if ( (form_copy != NULL) && (form_copy->get_parent() == NULL) && (isSgType(form_copy) == NULL) ) 
  104417             :              { 
  104418           0 :                form_copy->set_parent(result); 
  104419             :              } 
  104420             :   // Copy non-constructor parameter data member (access function): recl_copy
  104421           0 :      SgExpression* recl_copy; 
  104422             :   // case: not a listType for (using conditionalToCopyVariable)recl
  104423           0 :           if (get_recl() != NULL) 
  104424             :              { 
  104425           0 :                recl_copy = static_cast<SgExpression*>(help.copyAst(get_recl())); 
  104426             :              } 
  104427             :             else 
  104428             :              { 
  104429             :                recl_copy = NULL; 
  104430             :              } 
  104431             :   /* check for a valid pointer and delete if present */ 
  104432           0 :      if (result->p_recl != NULL) delete result->p_recl; 
  104433           0 :      result->p_recl = recl_copy; 
  104434             :   // case: not a listType for (using conditionalToSetParent)recl
  104435           0 :           if ( (recl_copy != NULL) && (recl_copy->get_parent() == NULL) && (isSgType(recl_copy) == NULL) ) 
  104436             :              { 
  104437           0 :                recl_copy->set_parent(result); 
  104438             :              } 
  104439             :   // Copy non-constructor parameter data member (access function): blank_copy
  104440           0 :      SgExpression* blank_copy; 
  104441             :   // case: not a listType for (using conditionalToCopyVariable)blank
  104442           0 :           if (get_blank() != NULL) 
  104443             :              { 
  104444           0 :                blank_copy = static_cast<SgExpression*>(help.copyAst(get_blank())); 
  104445             :              } 
  104446             :             else 
  104447             :              { 
  104448             :                blank_copy = NULL; 
  104449             :              } 
  104450             :   /* check for a valid pointer and delete if present */ 
  104451           0 :      if (result->p_blank != NULL) delete result->p_blank; 
  104452           0 :      result->p_blank = blank_copy; 
  104453             :   // case: not a listType for (using conditionalToSetParent)blank
  104454           0 :           if ( (blank_copy != NULL) && (blank_copy->get_parent() == NULL) && (isSgType(blank_copy) == NULL) ) 
  104455             :              { 
  104456           0 :                blank_copy->set_parent(result); 
  104457             :              } 
  104458             :   // Copy non-constructor parameter data member (access function): position_copy
  104459           0 :      SgExpression* position_copy; 
  104460             :   // case: not a listType for (using conditionalToCopyVariable)position
  104461           0 :           if (get_position() != NULL) 
  104462             :              { 
  104463           0 :                position_copy = static_cast<SgExpression*>(help.copyAst(get_position())); 
  104464             :              } 
  104465             :             else 
  104466             :              { 
  104467             :                position_copy = NULL; 
  104468             :              } 
  104469             :   /* check for a valid pointer and delete if present */ 
  104470           0 :      if (result->p_position != NULL) delete result->p_position; 
  104471           0 :      result->p_position = position_copy; 
  104472             :   // case: not a listType for (using conditionalToSetParent)position
  104473           0 :           if ( (position_copy != NULL) && (position_copy->get_parent() == NULL) && (isSgType(position_copy) == NULL) ) 
  104474             :              { 
  104475           0 :                position_copy->set_parent(result); 
  104476             :              } 
  104477             :   // Copy non-constructor parameter data member (access function): action_copy
  104478           0 :      SgExpression* action_copy; 
  104479             :   // case: not a listType for (using conditionalToCopyVariable)action
  104480           0 :           if (get_action() != NULL) 
  104481             :              { 
  104482           0 :                action_copy = static_cast<SgExpression*>(help.copyAst(get_action())); 
  104483             :              } 
  104484             :             else 
  104485             :              { 
  104486             :                action_copy = NULL; 
  104487             :              } 
  104488             :   /* check for a valid pointer and delete if present */ 
  104489           0 :      if (result->p_action != NULL) delete result->p_action; 
  104490           0 :      result->p_action = action_copy; 
  104491             :   // case: not a listType for (using conditionalToSetParent)action
  104492           0 :           if ( (action_copy != NULL) && (action_copy->get_parent() == NULL) && (isSgType(action_copy) == NULL) ) 
  104493             :              { 
  104494           0 :                action_copy->set_parent(result); 
  104495             :              } 
  104496             :   // Copy non-constructor parameter data member (access function): delim_copy
  104497           0 :      SgExpression* delim_copy; 
  104498             :   // case: not a listType for (using conditionalToCopyVariable)delim
  104499           0 :           if (get_delim() != NULL) 
  104500             :              { 
  104501           0 :                delim_copy = static_cast<SgExpression*>(help.copyAst(get_delim())); 
  104502             :              } 
  104503             :             else 
  104504             :              { 
  104505             :                delim_copy = NULL; 
  104506             :              } 
  104507             :   /* check for a valid pointer and delete if present */ 
  104508           0 :      if (result->p_delim != NULL) delete result->p_delim; 
  104509           0 :      result->p_delim = delim_copy; 
  104510             :   // case: not a listType for (using conditionalToSetParent)delim
  104511           0 :           if ( (delim_copy != NULL) && (delim_copy->get_parent() == NULL) && (isSgType(delim_copy) == NULL) ) 
  104512             :              { 
  104513           0 :                delim_copy->set_parent(result); 
  104514             :              } 
  104515             :   // Copy non-constructor parameter data member (access function): pad_copy
  104516           0 :      SgExpression* pad_copy; 
  104517             :   // case: not a listType for (using conditionalToCopyVariable)pad
  104518           0 :           if (get_pad() != NULL) 
  104519             :              { 
  104520           0 :                pad_copy = static_cast<SgExpression*>(help.copyAst(get_pad())); 
  104521             :              } 
  104522             :             else 
  104523             :              { 
  104524             :                pad_copy = NULL; 
  104525             :              } 
  104526             :   /* check for a valid pointer and delete if present */ 
  104527           0 :      if (result->p_pad != NULL) delete result->p_pad; 
  104528           0 :      result->p_pad = pad_copy; 
  104529             :   // case: not a listType for (using conditionalToSetParent)pad
  104530           0 :           if ( (pad_copy != NULL) && (pad_copy->get_parent() == NULL) && (isSgType(pad_copy) == NULL) ) 
  104531             :              { 
  104532           0 :                pad_copy->set_parent(result); 
  104533             :              } 
  104534             :   // Copy non-constructor parameter data member (access function): round_copy
  104535           0 :      SgExpression* round_copy; 
  104536             :   // case: not a listType for (using conditionalToCopyVariable)round
  104537           0 :           if (get_round() != NULL) 
  104538             :              { 
  104539           0 :                round_copy = static_cast<SgExpression*>(help.copyAst(get_round())); 
  104540             :              } 
  104541             :             else 
  104542             :              { 
  104543             :                round_copy = NULL; 
  104544             :              } 
  104545             :   /* check for a valid pointer and delete if present */ 
  104546           0 :      if (result->p_round != NULL) delete result->p_round; 
  104547           0 :      result->p_round = round_copy; 
  104548             :   // case: not a listType for (using conditionalToSetParent)round
  104549           0 :           if ( (round_copy != NULL) && (round_copy->get_parent() == NULL) && (isSgType(round_copy) == NULL) ) 
  104550             :              { 
  104551           0 :                round_copy->set_parent(result); 
  104552             :              } 
  104553             :   // Copy non-constructor parameter data member (access function): sign_copy
  104554           0 :      SgExpression* sign_copy; 
  104555             :   // case: not a listType for (using conditionalToCopyVariable)sign
  104556           0 :           if (get_sign() != NULL) 
  104557             :              { 
  104558           0 :                sign_copy = static_cast<SgExpression*>(help.copyAst(get_sign())); 
  104559             :              } 
  104560             :             else 
  104561             :              { 
  104562             :                sign_copy = NULL; 
  104563             :              } 
  104564             :   /* check for a valid pointer and delete if present */ 
  104565           0 :      if (result->p_sign != NULL) delete result->p_sign; 
  104566           0 :      result->p_sign = sign_copy; 
  104567             :   // case: not a listType for (using conditionalToSetParent)sign
  104568           0 :           if ( (sign_copy != NULL) && (sign_copy->get_parent() == NULL) && (isSgType(sign_copy) == NULL) ) 
  104569             :              { 
  104570           0 :                sign_copy->set_parent(result); 
  104571             :              } 
  104572             :   // Copy non-constructor parameter data member (access function): asynchronous_copy
  104573           0 :      SgExpression* asynchronous_copy; 
  104574             :   // case: not a listType for (using conditionalToCopyVariable)asynchronous
  104575           0 :           if (get_asynchronous() != NULL) 
  104576             :              { 
  104577           0 :                asynchronous_copy = static_cast<SgExpression*>(help.copyAst(get_asynchronous())); 
  104578             :              } 
  104579             :             else 
  104580             :              { 
  104581             :                asynchronous_copy = NULL; 
  104582             :              } 
  104583             :   /* check for a valid pointer and delete if present */ 
  104584           0 :      if (result->p_asynchronous != NULL) delete result->p_asynchronous; 
  104585           0 :      result->p_asynchronous = asynchronous_copy; 
  104586             :   // case: not a listType for (using conditionalToSetParent)asynchronous
  104587           0 :           if ( (asynchronous_copy != NULL) && (asynchronous_copy->get_parent() == NULL) && (isSgType(asynchronous_copy) == NULL) ) 
  104588             :              { 
  104589           0 :                asynchronous_copy->set_parent(result); 
  104590             :              } 
  104591             : 
  104592             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  104593             : 
  104594             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  104595             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  104596             :   // fixupCopy(result,help);
  104597             : 
  104598             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  104599             :   // the Sg_File_Info objects that are built for the new IR nodes.
  104600           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  104601           0 :      if (locatedNode != NULL)
  104602             :         {
  104603             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  104604           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  104605           0 :           ROSE_ASSERT(start != NULL);
  104606             : #if 0
  104607             :        // Debugging information
  104608             :           if (start->get_parent() == NULL)
  104609             :              {
  104610             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104611             :              }
  104612             : #endif
  104613           0 :           start->set_parent(locatedNode);
  104614           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  104615             : 
  104616           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  104617             : 
  104618             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  104619             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  104620             :        // ROSE_ASSERT(end != NULL);
  104621           0 :           if (end == NULL)
  104622             :              {
  104623           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  104624             :              }
  104625             :             else
  104626             :              {
  104627             : #if 0
  104628             :             // Debugging information
  104629             :                if (end->get_parent() == NULL)
  104630             :                   {
  104631             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104632             :                   }
  104633             : #endif
  104634           0 :                end->set_parent(locatedNode);
  104635           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  104636             :              }
  104637             : 
  104638           0 :           SgExpression* expression = isSgExpression(result);
  104639           0 :           if (isSgExpression(this) != NULL)
  104640             :              {
  104641           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  104642             : 
  104643             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  104644           0 :                if (operatorPosition != NULL)
  104645             :                   {
  104646             : #if 0
  104647             :                  // Debugging information
  104648             :                     if (operatorPosition->get_parent() == NULL)
  104649             :                        {
  104650             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104651             :                        }
  104652             : #endif
  104653           0 :                     operatorPosition->set_parent(expression);
  104654           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  104655             :                   }
  104656             :              }
  104657             :         }
  104658             : 
  104659             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  104660           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  104661           0 :      if (initializedName != NULL)
  104662             :         {
  104663             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  104664           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  104665           0 :           ROSE_ASSERT(start != NULL);
  104666             : #if 0
  104667             :        // Debugging information
  104668             :           if (start->get_parent() == NULL)
  104669             :              {
  104670             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104671             :              }
  104672             : #endif
  104673           0 :           start->set_parent(initializedName);
  104674           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  104675             : 
  104676             : #if 0
  104677             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  104678             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  104679             : 
  104680             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  104681             :        // ROSE_ASSERT(end != NULL);
  104682             :           if (end == NULL)
  104683             :              {
  104684             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  104685             :              }
  104686             :             else
  104687             :              {
  104688             :                if (end->get_parent() == NULL)
  104689             :                   {
  104690             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104691             :                   }
  104692             :                end->set_parent(initializedName);
  104693             :                ROSE_ASSERT(end->get_parent() != NULL);
  104694             :              }
  104695             : #endif
  104696             :         }
  104697             : 
  104698             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  104699           0 :      help.insertCopiedNodePair(this,result);
  104700             : 
  104701             :   // printf ("End of copy SgOpenStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  104702             : 
  104703             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  104704             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  104705           0 :      help.decrementDepth();
  104706             : 
  104707             :   // Test if this is the root of the copy!
  104708           0 :      if (help.get_depth() == 0)
  104709             :         {
  104710             :        // This is the original calling node.
  104711             : 
  104712             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  104713             :        // printf ("Calling SgOpenStatement::fixupCopy() (from root of AST being copied) \n");
  104714             : #if ALT_FIXUP_COPY
  104715             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  104716           0 :           fixupCopy_scopes (result,help);
  104717           0 :           fixupCopy_symbols (result,help);
  104718           0 :           fixupCopy_references (result,help);
  104719             : #else
  104720             :           fixupCopy(result,help);
  104721             : #endif
  104722             :        // Allow this to be called recursively, so accumulate the state.
  104723             :        // Also, clear the state in the SgCopyHelp object.
  104724             :        // help.clearState();
  104725             :         }
  104726             : 
  104727           0 :      return result;
  104728             :    }
  104729             : 
  104730             : 
  104731             : /* #line 104732 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  104732             : 
  104733             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  104734             : 
  104735           0 : SgNode* SgCloseStatement::copy ( SgCopyHelp& help) const
  104736             :    {
  104737           0 :      SgCloseStatement* result = NULL;
  104738             : 
  104739             :   // printf ("Copy SgCloseStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  104740             : 
  104741             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  104742             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  104743             :   // The default value of the depth is 0, so after this call the depth is 1!
  104744           0 :      help.incrementDepth();
  104745             : 
  104746             : #if 0
  104747             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  104748             :   // but it is not generally true that things can only be copied once!
  104749             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  104750             :   // AstAttribute* existingAttribute = const_cast<SgCloseStatement*>(this)->attribute["copied"];
  104751             :      bool previouslyCopied = const_cast<SgCloseStatement*>(this)->attribute.exists("copied");
  104752             :      if (previouslyCopied == true)
  104753             :         {
  104754             :           this->get_file_info()->display("Called from copy SgCloseStatement: debug");
  104755             :         }
  104756             :      ROSE_ASSERT(previouslyCopied == false);
  104757             : 
  104758             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  104759             :      AstAttribute* newAttribute = new AstAttribute();
  104760             :      ROSE_ASSERT(newAttribute != NULL);
  104761             : 
  104762             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  104763             :      const_cast<SgCloseStatement*>(this)->attribute.add("copied",newAttribute);
  104764             : #endif
  104765             : 
  104766             :   // Copy data members from base classes
  104767             :   // Copy constructor parameter data member: startOfConstruct_copy
  104768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  104769             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  104770           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  104771           0 :      if ( p_startOfConstruct != NULL ) 
  104772             :         { 
  104773           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  104774             :         } 
  104775             :        else 
  104776             :         { 
  104777             :           startOfConstruct_copy = NULL; 
  104778             :         } 
  104779             :  
  104780             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  104781             : 
  104782             :   // Build an empty copy of this object (will be filled in, but 
  104783             :   // the parent can't be set and must be set by the caller)
  104784           0 :      result = new SgCloseStatement(  startOfConstruct_copy );
  104785           0 :      ROSE_ASSERT(result != NULL);
  104786             : 
  104787             :   // Copy data members of "this" class
  104788             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  104789             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  104790             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  104791           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  104792           0 :      if ( p_endOfConstruct != NULL ) 
  104793             :         { 
  104794           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  104795             :         } 
  104796             :        else 
  104797             :         { 
  104798             :           endOfConstruct_copy = NULL; 
  104799             :         } 
  104800             :   /* check for a valid pointer and delete if present */ 
  104801           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  104802             :   /* add assignment to result here */ 
  104803           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  104804             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  104805             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  104806             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  104807           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  104808           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  104809             :         { 
  104810           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  104811             :         } 
  104812             :        else 
  104813             :         { 
  104814             :           attachedPreprocessingInfoPtr_copy = NULL; 
  104815             :         } 
  104816             :   /* check for a valid pointer and delete if present */ 
  104817           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  104818             :   /* add assignment to result here */ 
  104819           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  104820             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  104821             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  104822             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  104823           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  104824           0 :      if ( p_attributeMechanism != NULL ) 
  104825             :         { 
  104826           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  104827             :         } 
  104828             :        else 
  104829             :         { 
  104830             :           attributeMechanism_copy = NULL; 
  104831             :         } 
  104832             :   /* check for a valid pointer and delete if present */ 
  104833           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  104834             :   /* add assignment to result here */ 
  104835           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  104836             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  104837             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  104838             :   // case: toBeCopied == COPY_DATA for numeric_label
  104839           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  104840           0 :      result->p_numeric_label = numeric_label_copy; 
  104841             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  104842             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  104843             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  104844           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  104845           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  104846             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  104847             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  104848             :   // case: toBeCopied == COPY_DATA for io_statement
  104849           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  104850           0 :      result->p_io_statement = io_statement_copy; 
  104851             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  104852           0 :      SgExprListExp* io_stmt_list_copy; 
  104853             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  104854           0 :           if (get_io_stmt_list() != NULL) 
  104855             :              { 
  104856           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  104857             :              } 
  104858             :             else 
  104859             :              { 
  104860             :                io_stmt_list_copy = NULL; 
  104861             :              } 
  104862             :   /* check for a valid pointer and delete if present */ 
  104863           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  104864           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  104865             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  104866           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  104867             :              { 
  104868           0 :                io_stmt_list_copy->set_parent(result); 
  104869             :              } 
  104870             :   // Copy non-constructor parameter data member (access function): unit_copy
  104871           0 :      SgExpression* unit_copy; 
  104872             :   // case: not a listType for (using conditionalToCopyVariable)unit
  104873           0 :           if (get_unit() != NULL) 
  104874             :              { 
  104875           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  104876             :              } 
  104877             :             else 
  104878             :              { 
  104879             :                unit_copy = NULL; 
  104880             :              } 
  104881             :   /* check for a valid pointer and delete if present */ 
  104882           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  104883           0 :      result->p_unit = unit_copy; 
  104884             :   // case: not a listType for (using conditionalToSetParent)unit
  104885           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  104886             :              { 
  104887           0 :                unit_copy->set_parent(result); 
  104888             :              } 
  104889             :   // Copy non-constructor parameter data member (access function): iostat_copy
  104890           0 :      SgExpression* iostat_copy; 
  104891             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  104892           0 :           if (get_iostat() != NULL) 
  104893             :              { 
  104894           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  104895             :              } 
  104896             :             else 
  104897             :              { 
  104898             :                iostat_copy = NULL; 
  104899             :              } 
  104900             :   /* check for a valid pointer and delete if present */ 
  104901           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  104902           0 :      result->p_iostat = iostat_copy; 
  104903             :   // case: not a listType for (using conditionalToSetParent)iostat
  104904           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  104905             :              { 
  104906           0 :                iostat_copy->set_parent(result); 
  104907             :              } 
  104908             :   // Copy non-constructor parameter data member (access function): err_copy
  104909           0 :      SgExpression* err_copy; 
  104910             :   // case: not a listType for (using conditionalToCopyVariable)err
  104911           0 :           if (get_err() != NULL) 
  104912             :              { 
  104913           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  104914             :              } 
  104915             :             else 
  104916             :              { 
  104917             :                err_copy = NULL; 
  104918             :              } 
  104919             :   /* check for a valid pointer and delete if present */ 
  104920           0 :      if (result->p_err != NULL) delete result->p_err; 
  104921           0 :      result->p_err = err_copy; 
  104922             :   // case: not a listType for (using conditionalToSetParent)err
  104923           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  104924             :              { 
  104925           0 :                err_copy->set_parent(result); 
  104926             :              } 
  104927             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  104928           0 :      SgExpression* iomsg_copy; 
  104929             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  104930           0 :           if (get_iomsg() != NULL) 
  104931             :              { 
  104932           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  104933             :              } 
  104934             :             else 
  104935             :              { 
  104936             :                iomsg_copy = NULL; 
  104937             :              } 
  104938             :   /* check for a valid pointer and delete if present */ 
  104939           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  104940           0 :      result->p_iomsg = iomsg_copy; 
  104941             :   // case: not a listType for (using conditionalToSetParent)iomsg
  104942           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  104943             :              { 
  104944           0 :                iomsg_copy->set_parent(result); 
  104945             :              } 
  104946             :   // Copy non-constructor parameter data member (access function): status_copy
  104947           0 :      SgExpression* status_copy; 
  104948             :   // case: not a listType for (using conditionalToCopyVariable)status
  104949           0 :           if (get_status() != NULL) 
  104950             :              { 
  104951           0 :                status_copy = static_cast<SgExpression*>(help.copyAst(get_status())); 
  104952             :              } 
  104953             :             else 
  104954             :              { 
  104955             :                status_copy = NULL; 
  104956             :              } 
  104957             :   /* check for a valid pointer and delete if present */ 
  104958           0 :      if (result->p_status != NULL) delete result->p_status; 
  104959           0 :      result->p_status = status_copy; 
  104960             :   // case: not a listType for (using conditionalToSetParent)status
  104961           0 :           if ( (status_copy != NULL) && (status_copy->get_parent() == NULL) && (isSgType(status_copy) == NULL) ) 
  104962             :              { 
  104963           0 :                status_copy->set_parent(result); 
  104964             :              } 
  104965             : 
  104966             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  104967             : 
  104968             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  104969             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  104970             :   // fixupCopy(result,help);
  104971             : 
  104972             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  104973             :   // the Sg_File_Info objects that are built for the new IR nodes.
  104974           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  104975           0 :      if (locatedNode != NULL)
  104976             :         {
  104977             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  104978           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  104979           0 :           ROSE_ASSERT(start != NULL);
  104980             : #if 0
  104981             :        // Debugging information
  104982             :           if (start->get_parent() == NULL)
  104983             :              {
  104984             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  104985             :              }
  104986             : #endif
  104987           0 :           start->set_parent(locatedNode);
  104988           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  104989             : 
  104990           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  104991             : 
  104992             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  104993             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  104994             :        // ROSE_ASSERT(end != NULL);
  104995           0 :           if (end == NULL)
  104996             :              {
  104997           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  104998             :              }
  104999             :             else
  105000             :              {
  105001             : #if 0
  105002             :             // Debugging information
  105003             :                if (end->get_parent() == NULL)
  105004             :                   {
  105005             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105006             :                   }
  105007             : #endif
  105008           0 :                end->set_parent(locatedNode);
  105009           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  105010             :              }
  105011             : 
  105012           0 :           SgExpression* expression = isSgExpression(result);
  105013           0 :           if (isSgExpression(this) != NULL)
  105014             :              {
  105015           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  105016             : 
  105017             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  105018           0 :                if (operatorPosition != NULL)
  105019             :                   {
  105020             : #if 0
  105021             :                  // Debugging information
  105022             :                     if (operatorPosition->get_parent() == NULL)
  105023             :                        {
  105024             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105025             :                        }
  105026             : #endif
  105027           0 :                     operatorPosition->set_parent(expression);
  105028           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  105029             :                   }
  105030             :              }
  105031             :         }
  105032             : 
  105033             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  105034           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  105035           0 :      if (initializedName != NULL)
  105036             :         {
  105037             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  105038           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  105039           0 :           ROSE_ASSERT(start != NULL);
  105040             : #if 0
  105041             :        // Debugging information
  105042             :           if (start->get_parent() == NULL)
  105043             :              {
  105044             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105045             :              }
  105046             : #endif
  105047           0 :           start->set_parent(initializedName);
  105048           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  105049             : 
  105050             : #if 0
  105051             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  105052             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  105053             : 
  105054             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  105055             :        // ROSE_ASSERT(end != NULL);
  105056             :           if (end == NULL)
  105057             :              {
  105058             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  105059             :              }
  105060             :             else
  105061             :              {
  105062             :                if (end->get_parent() == NULL)
  105063             :                   {
  105064             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105065             :                   }
  105066             :                end->set_parent(initializedName);
  105067             :                ROSE_ASSERT(end->get_parent() != NULL);
  105068             :              }
  105069             : #endif
  105070             :         }
  105071             : 
  105072             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  105073           0 :      help.insertCopiedNodePair(this,result);
  105074             : 
  105075             :   // printf ("End of copy SgCloseStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  105076             : 
  105077             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  105078             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  105079           0 :      help.decrementDepth();
  105080             : 
  105081             :   // Test if this is the root of the copy!
  105082           0 :      if (help.get_depth() == 0)
  105083             :         {
  105084             :        // This is the original calling node.
  105085             : 
  105086             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  105087             :        // printf ("Calling SgCloseStatement::fixupCopy() (from root of AST being copied) \n");
  105088             : #if ALT_FIXUP_COPY
  105089             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  105090           0 :           fixupCopy_scopes (result,help);
  105091           0 :           fixupCopy_symbols (result,help);
  105092           0 :           fixupCopy_references (result,help);
  105093             : #else
  105094             :           fixupCopy(result,help);
  105095             : #endif
  105096             :        // Allow this to be called recursively, so accumulate the state.
  105097             :        // Also, clear the state in the SgCopyHelp object.
  105098             :        // help.clearState();
  105099             :         }
  105100             : 
  105101           0 :      return result;
  105102             :    }
  105103             : 
  105104             : 
  105105             : /* #line 105106 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  105106             : 
  105107             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  105108             : 
  105109           0 : SgNode* SgInquireStatement::copy ( SgCopyHelp& help) const
  105110             :    {
  105111           0 :      SgInquireStatement* result = NULL;
  105112             : 
  105113             :   // printf ("Copy SgInquireStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  105114             : 
  105115             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  105116             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  105117             :   // The default value of the depth is 0, so after this call the depth is 1!
  105118           0 :      help.incrementDepth();
  105119             : 
  105120             : #if 0
  105121             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  105122             :   // but it is not generally true that things can only be copied once!
  105123             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  105124             :   // AstAttribute* existingAttribute = const_cast<SgInquireStatement*>(this)->attribute["copied"];
  105125             :      bool previouslyCopied = const_cast<SgInquireStatement*>(this)->attribute.exists("copied");
  105126             :      if (previouslyCopied == true)
  105127             :         {
  105128             :           this->get_file_info()->display("Called from copy SgInquireStatement: debug");
  105129             :         }
  105130             :      ROSE_ASSERT(previouslyCopied == false);
  105131             : 
  105132             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  105133             :      AstAttribute* newAttribute = new AstAttribute();
  105134             :      ROSE_ASSERT(newAttribute != NULL);
  105135             : 
  105136             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  105137             :      const_cast<SgInquireStatement*>(this)->attribute.add("copied",newAttribute);
  105138             : #endif
  105139             : 
  105140             :   // Copy data members from base classes
  105141             :   // Copy constructor parameter data member: startOfConstruct_copy
  105142             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  105143             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  105144           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  105145           0 :      if ( p_startOfConstruct != NULL ) 
  105146             :         { 
  105147           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  105148             :         } 
  105149             :        else 
  105150             :         { 
  105151             :           startOfConstruct_copy = NULL; 
  105152             :         } 
  105153             :  
  105154             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  105155             : 
  105156             :   // Build an empty copy of this object (will be filled in, but 
  105157             :   // the parent can't be set and must be set by the caller)
  105158           0 :      result = new SgInquireStatement(  startOfConstruct_copy );
  105159           0 :      ROSE_ASSERT(result != NULL);
  105160             : 
  105161             :   // Copy data members of "this" class
  105162             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  105163             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  105164             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  105165           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  105166           0 :      if ( p_endOfConstruct != NULL ) 
  105167             :         { 
  105168           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  105169             :         } 
  105170             :        else 
  105171             :         { 
  105172             :           endOfConstruct_copy = NULL; 
  105173             :         } 
  105174             :   /* check for a valid pointer and delete if present */ 
  105175           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  105176             :   /* add assignment to result here */ 
  105177           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  105178             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  105179             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  105180             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  105181           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  105182           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  105183             :         { 
  105184           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  105185             :         } 
  105186             :        else 
  105187             :         { 
  105188             :           attachedPreprocessingInfoPtr_copy = NULL; 
  105189             :         } 
  105190             :   /* check for a valid pointer and delete if present */ 
  105191           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  105192             :   /* add assignment to result here */ 
  105193           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  105194             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  105195             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  105196             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  105197           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  105198           0 :      if ( p_attributeMechanism != NULL ) 
  105199             :         { 
  105200           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  105201             :         } 
  105202             :        else 
  105203             :         { 
  105204             :           attributeMechanism_copy = NULL; 
  105205             :         } 
  105206             :   /* check for a valid pointer and delete if present */ 
  105207           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  105208             :   /* add assignment to result here */ 
  105209           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  105210             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  105211             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  105212             :   // case: toBeCopied == COPY_DATA for numeric_label
  105213           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  105214           0 :      result->p_numeric_label = numeric_label_copy; 
  105215             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  105216             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  105217             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  105218           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  105219           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  105220             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  105221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  105222             :   // case: toBeCopied == COPY_DATA for io_statement
  105223           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  105224           0 :      result->p_io_statement = io_statement_copy; 
  105225             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  105226           0 :      SgExprListExp* io_stmt_list_copy; 
  105227             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  105228           0 :           if (get_io_stmt_list() != NULL) 
  105229             :              { 
  105230           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  105231             :              } 
  105232             :             else 
  105233             :              { 
  105234             :                io_stmt_list_copy = NULL; 
  105235             :              } 
  105236             :   /* check for a valid pointer and delete if present */ 
  105237           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  105238           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  105239             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  105240           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  105241             :              { 
  105242           0 :                io_stmt_list_copy->set_parent(result); 
  105243             :              } 
  105244             :   // Copy non-constructor parameter data member (access function): unit_copy
  105245           0 :      SgExpression* unit_copy; 
  105246             :   // case: not a listType for (using conditionalToCopyVariable)unit
  105247           0 :           if (get_unit() != NULL) 
  105248             :              { 
  105249           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  105250             :              } 
  105251             :             else 
  105252             :              { 
  105253             :                unit_copy = NULL; 
  105254             :              } 
  105255             :   /* check for a valid pointer and delete if present */ 
  105256           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  105257           0 :      result->p_unit = unit_copy; 
  105258             :   // case: not a listType for (using conditionalToSetParent)unit
  105259           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  105260             :              { 
  105261           0 :                unit_copy->set_parent(result); 
  105262             :              } 
  105263             :   // Copy non-constructor parameter data member (access function): iostat_copy
  105264           0 :      SgExpression* iostat_copy; 
  105265             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  105266           0 :           if (get_iostat() != NULL) 
  105267             :              { 
  105268           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  105269             :              } 
  105270             :             else 
  105271             :              { 
  105272             :                iostat_copy = NULL; 
  105273             :              } 
  105274             :   /* check for a valid pointer and delete if present */ 
  105275           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  105276           0 :      result->p_iostat = iostat_copy; 
  105277             :   // case: not a listType for (using conditionalToSetParent)iostat
  105278           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  105279             :              { 
  105280           0 :                iostat_copy->set_parent(result); 
  105281             :              } 
  105282             :   // Copy non-constructor parameter data member (access function): err_copy
  105283           0 :      SgExpression* err_copy; 
  105284             :   // case: not a listType for (using conditionalToCopyVariable)err
  105285           0 :           if (get_err() != NULL) 
  105286             :              { 
  105287           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  105288             :              } 
  105289             :             else 
  105290             :              { 
  105291             :                err_copy = NULL; 
  105292             :              } 
  105293             :   /* check for a valid pointer and delete if present */ 
  105294           0 :      if (result->p_err != NULL) delete result->p_err; 
  105295           0 :      result->p_err = err_copy; 
  105296             :   // case: not a listType for (using conditionalToSetParent)err
  105297           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  105298             :              { 
  105299           0 :                err_copy->set_parent(result); 
  105300             :              } 
  105301             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  105302           0 :      SgExpression* iomsg_copy; 
  105303             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  105304           0 :           if (get_iomsg() != NULL) 
  105305             :              { 
  105306           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  105307             :              } 
  105308             :             else 
  105309             :              { 
  105310             :                iomsg_copy = NULL; 
  105311             :              } 
  105312             :   /* check for a valid pointer and delete if present */ 
  105313           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  105314           0 :      result->p_iomsg = iomsg_copy; 
  105315             :   // case: not a listType for (using conditionalToSetParent)iomsg
  105316           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  105317             :              { 
  105318           0 :                iomsg_copy->set_parent(result); 
  105319             :              } 
  105320             :   // Copy non-constructor parameter data member (access function): file_copy
  105321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for file
  105322             :   // case: toBeCopied == COPY_DATA for file
  105323           0 :      SgExpression* file_copy = p_file; 
  105324           0 :      result->p_file = file_copy; 
  105325             :   // Copy non-constructor parameter data member (access function): access_copy
  105326             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for access
  105327             :   // case: toBeCopied == COPY_DATA for access
  105328           0 :      SgExpression* access_copy = p_access; 
  105329           0 :      result->p_access = access_copy; 
  105330             :   // Copy non-constructor parameter data member (access function): form_copy
  105331             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for form
  105332             :   // case: toBeCopied == COPY_DATA for form
  105333           0 :      SgExpression* form_copy = p_form; 
  105334           0 :      result->p_form = form_copy; 
  105335             :   // Copy non-constructor parameter data member (access function): recl_copy
  105336             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for recl
  105337             :   // case: toBeCopied == COPY_DATA for recl
  105338           0 :      SgExpression* recl_copy = p_recl; 
  105339           0 :      result->p_recl = recl_copy; 
  105340             :   // Copy non-constructor parameter data member (access function): blank_copy
  105341             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for blank
  105342             :   // case: toBeCopied == COPY_DATA for blank
  105343           0 :      SgExpression* blank_copy = p_blank; 
  105344           0 :      result->p_blank = blank_copy; 
  105345             :   // Copy non-constructor parameter data member (access function): exist_copy
  105346             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for exist
  105347             :   // case: toBeCopied == COPY_DATA for exist
  105348           0 :      SgExpression* exist_copy = p_exist; 
  105349           0 :      result->p_exist = exist_copy; 
  105350             :   // Copy non-constructor parameter data member (access function): opened_copy
  105351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for opened
  105352             :   // case: toBeCopied == COPY_DATA for opened
  105353           0 :      SgExpression* opened_copy = p_opened; 
  105354           0 :      result->p_opened = opened_copy; 
  105355             :   // Copy non-constructor parameter data member (access function): number_copy
  105356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for number
  105357             :   // case: toBeCopied == COPY_DATA for number
  105358           0 :      SgExpression* number_copy = p_number; 
  105359           0 :      result->p_number = number_copy; 
  105360             :   // Copy non-constructor parameter data member (access function): named_copy
  105361             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for named
  105362             :   // case: toBeCopied == COPY_DATA for named
  105363           0 :      SgExpression* named_copy = p_named; 
  105364           0 :      result->p_named = named_copy; 
  105365             :   // Copy non-constructor parameter data member (access function): name_copy
  105366             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  105367             :   // case: toBeCopied == COPY_DATA for name
  105368           0 :      SgExpression* name_copy = p_name; 
  105369           0 :      result->p_name = name_copy; 
  105370             :   // Copy non-constructor parameter data member (access function): sequential_copy
  105371             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sequential
  105372             :   // case: toBeCopied == COPY_DATA for sequential
  105373           0 :      SgExpression* sequential_copy = p_sequential; 
  105374           0 :      result->p_sequential = sequential_copy; 
  105375             :   // Copy non-constructor parameter data member (access function): direct_copy
  105376             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for direct
  105377             :   // case: toBeCopied == COPY_DATA for direct
  105378           0 :      SgExpression* direct_copy = p_direct; 
  105379           0 :      result->p_direct = direct_copy; 
  105380             :   // Copy non-constructor parameter data member (access function): formatted_copy
  105381             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for formatted
  105382             :   // case: toBeCopied == COPY_DATA for formatted
  105383           0 :      SgExpression* formatted_copy = p_formatted; 
  105384           0 :      result->p_formatted = formatted_copy; 
  105385             :   // Copy non-constructor parameter data member (access function): unformatted_copy
  105386             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for unformatted
  105387             :   // case: toBeCopied == COPY_DATA for unformatted
  105388           0 :      SgExpression* unformatted_copy = p_unformatted; 
  105389           0 :      result->p_unformatted = unformatted_copy; 
  105390             :   // Copy non-constructor parameter data member (access function): nextrec_copy
  105391             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nextrec
  105392             :   // case: toBeCopied == COPY_DATA for nextrec
  105393           0 :      SgExpression* nextrec_copy = p_nextrec; 
  105394           0 :      result->p_nextrec = nextrec_copy; 
  105395             :   // Copy non-constructor parameter data member (access function): position_copy
  105396             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for position
  105397             :   // case: toBeCopied == COPY_DATA for position
  105398           0 :      SgExpression* position_copy = p_position; 
  105399           0 :      result->p_position = position_copy; 
  105400             :   // Copy non-constructor parameter data member (access function): action_copy
  105401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for action
  105402             :   // case: toBeCopied == COPY_DATA for action
  105403           0 :      SgExpression* action_copy = p_action; 
  105404           0 :      result->p_action = action_copy; 
  105405             :   // Copy non-constructor parameter data member (access function): read_copy
  105406             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for read
  105407             :   // case: toBeCopied == COPY_DATA for read
  105408           0 :      SgExpression* read_copy = p_read; 
  105409           0 :      result->p_read = read_copy; 
  105410             :   // Copy non-constructor parameter data member (access function): write_copy
  105411             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for write
  105412             :   // case: toBeCopied == COPY_DATA for write
  105413           0 :      SgExpression* write_copy = p_write; 
  105414           0 :      result->p_write = write_copy; 
  105415             :   // Copy non-constructor parameter data member (access function): readwrite_copy
  105416             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for readwrite
  105417             :   // case: toBeCopied == COPY_DATA for readwrite
  105418           0 :      SgExpression* readwrite_copy = p_readwrite; 
  105419           0 :      result->p_readwrite = readwrite_copy; 
  105420             :   // Copy non-constructor parameter data member (access function): delim_copy
  105421             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for delim
  105422             :   // case: toBeCopied == COPY_DATA for delim
  105423           0 :      SgExpression* delim_copy = p_delim; 
  105424           0 :      result->p_delim = delim_copy; 
  105425             :   // Copy non-constructor parameter data member (access function): pad_copy
  105426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for pad
  105427             :   // case: toBeCopied == COPY_DATA for pad
  105428           0 :      SgExpression* pad_copy = p_pad; 
  105429           0 :      result->p_pad = pad_copy; 
  105430             :   // Copy non-constructor parameter data member (access function): asynchronous_copy
  105431             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for asynchronous
  105432             :   // case: toBeCopied == COPY_DATA for asynchronous
  105433           0 :      SgExpression* asynchronous_copy = p_asynchronous; 
  105434           0 :      result->p_asynchronous = asynchronous_copy; 
  105435             :   // Copy non-constructor parameter data member (access function): decimal_copy
  105436             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for decimal
  105437             :   // case: toBeCopied == COPY_DATA for decimal
  105438           0 :      SgExpression* decimal_copy = p_decimal; 
  105439           0 :      result->p_decimal = decimal_copy; 
  105440             :   // Copy non-constructor parameter data member (access function): stream_copy
  105441             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for stream
  105442             :   // case: toBeCopied == COPY_DATA for stream
  105443           0 :      SgExpression* stream_copy = p_stream; 
  105444           0 :      result->p_stream = stream_copy; 
  105445             :   // Copy non-constructor parameter data member (access function): size_copy
  105446             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for size
  105447             :   // case: toBeCopied == COPY_DATA for size
  105448           0 :      SgExpression* size_copy = p_size; 
  105449           0 :      result->p_size = size_copy; 
  105450             :   // Copy non-constructor parameter data member (access function): pending_copy
  105451             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for pending
  105452             :   // case: toBeCopied == COPY_DATA for pending
  105453           0 :      SgExpression* pending_copy = p_pending; 
  105454           0 :      result->p_pending = pending_copy; 
  105455             :   // Copy non-constructor parameter data member (access function): iolengthExp_copy
  105456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for iolengthExp
  105457             :   // case: toBeCopied == COPY_DATA for iolengthExp
  105458           0 :      SgVarRefExp* iolengthExp_copy = p_iolengthExp; 
  105459           0 :      result->p_iolengthExp = iolengthExp_copy; 
  105460             : 
  105461             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  105462             : 
  105463             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  105464             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  105465             :   // fixupCopy(result,help);
  105466             : 
  105467             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  105468             :   // the Sg_File_Info objects that are built for the new IR nodes.
  105469           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  105470           0 :      if (locatedNode != NULL)
  105471             :         {
  105472             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  105473           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  105474           0 :           ROSE_ASSERT(start != NULL);
  105475             : #if 0
  105476             :        // Debugging information
  105477             :           if (start->get_parent() == NULL)
  105478             :              {
  105479             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105480             :              }
  105481             : #endif
  105482           0 :           start->set_parent(locatedNode);
  105483           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  105484             : 
  105485           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  105486             : 
  105487             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  105488             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  105489             :        // ROSE_ASSERT(end != NULL);
  105490           0 :           if (end == NULL)
  105491             :              {
  105492           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  105493             :              }
  105494             :             else
  105495             :              {
  105496             : #if 0
  105497             :             // Debugging information
  105498             :                if (end->get_parent() == NULL)
  105499             :                   {
  105500             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105501             :                   }
  105502             : #endif
  105503           0 :                end->set_parent(locatedNode);
  105504           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  105505             :              }
  105506             : 
  105507           0 :           SgExpression* expression = isSgExpression(result);
  105508           0 :           if (isSgExpression(this) != NULL)
  105509             :              {
  105510           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  105511             : 
  105512             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  105513           0 :                if (operatorPosition != NULL)
  105514             :                   {
  105515             : #if 0
  105516             :                  // Debugging information
  105517             :                     if (operatorPosition->get_parent() == NULL)
  105518             :                        {
  105519             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105520             :                        }
  105521             : #endif
  105522           0 :                     operatorPosition->set_parent(expression);
  105523           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  105524             :                   }
  105525             :              }
  105526             :         }
  105527             : 
  105528             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  105529           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  105530           0 :      if (initializedName != NULL)
  105531             :         {
  105532             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  105533           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  105534           0 :           ROSE_ASSERT(start != NULL);
  105535             : #if 0
  105536             :        // Debugging information
  105537             :           if (start->get_parent() == NULL)
  105538             :              {
  105539             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105540             :              }
  105541             : #endif
  105542           0 :           start->set_parent(initializedName);
  105543           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  105544             : 
  105545             : #if 0
  105546             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  105547             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  105548             : 
  105549             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  105550             :        // ROSE_ASSERT(end != NULL);
  105551             :           if (end == NULL)
  105552             :              {
  105553             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  105554             :              }
  105555             :             else
  105556             :              {
  105557             :                if (end->get_parent() == NULL)
  105558             :                   {
  105559             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105560             :                   }
  105561             :                end->set_parent(initializedName);
  105562             :                ROSE_ASSERT(end->get_parent() != NULL);
  105563             :              }
  105564             : #endif
  105565             :         }
  105566             : 
  105567             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  105568           0 :      help.insertCopiedNodePair(this,result);
  105569             : 
  105570             :   // printf ("End of copy SgInquireStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  105571             : 
  105572             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  105573             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  105574           0 :      help.decrementDepth();
  105575             : 
  105576             :   // Test if this is the root of the copy!
  105577           0 :      if (help.get_depth() == 0)
  105578             :         {
  105579             :        // This is the original calling node.
  105580             : 
  105581             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  105582             :        // printf ("Calling SgInquireStatement::fixupCopy() (from root of AST being copied) \n");
  105583             : #if ALT_FIXUP_COPY
  105584             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  105585           0 :           fixupCopy_scopes (result,help);
  105586           0 :           fixupCopy_symbols (result,help);
  105587           0 :           fixupCopy_references (result,help);
  105588             : #else
  105589             :           fixupCopy(result,help);
  105590             : #endif
  105591             :        // Allow this to be called recursively, so accumulate the state.
  105592             :        // Also, clear the state in the SgCopyHelp object.
  105593             :        // help.clearState();
  105594             :         }
  105595             : 
  105596           0 :      return result;
  105597             :    }
  105598             : 
  105599             : 
  105600             : /* #line 105601 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  105601             : 
  105602             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  105603             : 
  105604           0 : SgNode* SgFlushStatement::copy ( SgCopyHelp& help) const
  105605             :    {
  105606           0 :      SgFlushStatement* result = NULL;
  105607             : 
  105608             :   // printf ("Copy SgFlushStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  105609             : 
  105610             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  105611             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  105612             :   // The default value of the depth is 0, so after this call the depth is 1!
  105613           0 :      help.incrementDepth();
  105614             : 
  105615             : #if 0
  105616             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  105617             :   // but it is not generally true that things can only be copied once!
  105618             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  105619             :   // AstAttribute* existingAttribute = const_cast<SgFlushStatement*>(this)->attribute["copied"];
  105620             :      bool previouslyCopied = const_cast<SgFlushStatement*>(this)->attribute.exists("copied");
  105621             :      if (previouslyCopied == true)
  105622             :         {
  105623             :           this->get_file_info()->display("Called from copy SgFlushStatement: debug");
  105624             :         }
  105625             :      ROSE_ASSERT(previouslyCopied == false);
  105626             : 
  105627             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  105628             :      AstAttribute* newAttribute = new AstAttribute();
  105629             :      ROSE_ASSERT(newAttribute != NULL);
  105630             : 
  105631             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  105632             :      const_cast<SgFlushStatement*>(this)->attribute.add("copied",newAttribute);
  105633             : #endif
  105634             : 
  105635             :   // Copy data members from base classes
  105636             :   // Copy constructor parameter data member: startOfConstruct_copy
  105637             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  105638             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  105639           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  105640           0 :      if ( p_startOfConstruct != NULL ) 
  105641             :         { 
  105642           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  105643             :         } 
  105644             :        else 
  105645             :         { 
  105646             :           startOfConstruct_copy = NULL; 
  105647             :         } 
  105648             :  
  105649             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  105650             : 
  105651             :   // Build an empty copy of this object (will be filled in, but 
  105652             :   // the parent can't be set and must be set by the caller)
  105653           0 :      result = new SgFlushStatement(  startOfConstruct_copy );
  105654           0 :      ROSE_ASSERT(result != NULL);
  105655             : 
  105656             :   // Copy data members of "this" class
  105657             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  105658             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  105659             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  105660           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  105661           0 :      if ( p_endOfConstruct != NULL ) 
  105662             :         { 
  105663           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  105664             :         } 
  105665             :        else 
  105666             :         { 
  105667             :           endOfConstruct_copy = NULL; 
  105668             :         } 
  105669             :   /* check for a valid pointer and delete if present */ 
  105670           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  105671             :   /* add assignment to result here */ 
  105672           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  105673             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  105674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  105675             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  105676           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  105677           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  105678             :         { 
  105679           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  105680             :         } 
  105681             :        else 
  105682             :         { 
  105683             :           attachedPreprocessingInfoPtr_copy = NULL; 
  105684             :         } 
  105685             :   /* check for a valid pointer and delete if present */ 
  105686           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  105687             :   /* add assignment to result here */ 
  105688           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  105689             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  105690             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  105691             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  105692           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  105693           0 :      if ( p_attributeMechanism != NULL ) 
  105694             :         { 
  105695           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  105696             :         } 
  105697             :        else 
  105698             :         { 
  105699             :           attributeMechanism_copy = NULL; 
  105700             :         } 
  105701             :   /* check for a valid pointer and delete if present */ 
  105702           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  105703             :   /* add assignment to result here */ 
  105704           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  105705             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  105706             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  105707             :   // case: toBeCopied == COPY_DATA for numeric_label
  105708           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  105709           0 :      result->p_numeric_label = numeric_label_copy; 
  105710             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  105711             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  105712             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  105713           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  105714           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  105715             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  105716             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  105717             :   // case: toBeCopied == COPY_DATA for io_statement
  105718           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  105719           0 :      result->p_io_statement = io_statement_copy; 
  105720             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  105721           0 :      SgExprListExp* io_stmt_list_copy; 
  105722             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  105723           0 :           if (get_io_stmt_list() != NULL) 
  105724             :              { 
  105725           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  105726             :              } 
  105727             :             else 
  105728             :              { 
  105729             :                io_stmt_list_copy = NULL; 
  105730             :              } 
  105731             :   /* check for a valid pointer and delete if present */ 
  105732           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  105733           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  105734             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  105735           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  105736             :              { 
  105737           0 :                io_stmt_list_copy->set_parent(result); 
  105738             :              } 
  105739             :   // Copy non-constructor parameter data member (access function): unit_copy
  105740           0 :      SgExpression* unit_copy; 
  105741             :   // case: not a listType for (using conditionalToCopyVariable)unit
  105742           0 :           if (get_unit() != NULL) 
  105743             :              { 
  105744           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  105745             :              } 
  105746             :             else 
  105747             :              { 
  105748             :                unit_copy = NULL; 
  105749             :              } 
  105750             :   /* check for a valid pointer and delete if present */ 
  105751           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  105752           0 :      result->p_unit = unit_copy; 
  105753             :   // case: not a listType for (using conditionalToSetParent)unit
  105754           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  105755             :              { 
  105756           0 :                unit_copy->set_parent(result); 
  105757             :              } 
  105758             :   // Copy non-constructor parameter data member (access function): iostat_copy
  105759           0 :      SgExpression* iostat_copy; 
  105760             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  105761           0 :           if (get_iostat() != NULL) 
  105762             :              { 
  105763           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  105764             :              } 
  105765             :             else 
  105766             :              { 
  105767             :                iostat_copy = NULL; 
  105768             :              } 
  105769             :   /* check for a valid pointer and delete if present */ 
  105770           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  105771           0 :      result->p_iostat = iostat_copy; 
  105772             :   // case: not a listType for (using conditionalToSetParent)iostat
  105773           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  105774             :              { 
  105775           0 :                iostat_copy->set_parent(result); 
  105776             :              } 
  105777             :   // Copy non-constructor parameter data member (access function): err_copy
  105778           0 :      SgExpression* err_copy; 
  105779             :   // case: not a listType for (using conditionalToCopyVariable)err
  105780           0 :           if (get_err() != NULL) 
  105781             :              { 
  105782           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  105783             :              } 
  105784             :             else 
  105785             :              { 
  105786             :                err_copy = NULL; 
  105787             :              } 
  105788             :   /* check for a valid pointer and delete if present */ 
  105789           0 :      if (result->p_err != NULL) delete result->p_err; 
  105790           0 :      result->p_err = err_copy; 
  105791             :   // case: not a listType for (using conditionalToSetParent)err
  105792           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  105793             :              { 
  105794           0 :                err_copy->set_parent(result); 
  105795             :              } 
  105796             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  105797           0 :      SgExpression* iomsg_copy; 
  105798             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  105799           0 :           if (get_iomsg() != NULL) 
  105800             :              { 
  105801           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  105802             :              } 
  105803             :             else 
  105804             :              { 
  105805             :                iomsg_copy = NULL; 
  105806             :              } 
  105807             :   /* check for a valid pointer and delete if present */ 
  105808           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  105809           0 :      result->p_iomsg = iomsg_copy; 
  105810             :   // case: not a listType for (using conditionalToSetParent)iomsg
  105811           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  105812             :              { 
  105813           0 :                iomsg_copy->set_parent(result); 
  105814             :              } 
  105815             : 
  105816             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  105817             : 
  105818             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  105819             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  105820             :   // fixupCopy(result,help);
  105821             : 
  105822             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  105823             :   // the Sg_File_Info objects that are built for the new IR nodes.
  105824           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  105825           0 :      if (locatedNode != NULL)
  105826             :         {
  105827             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  105828           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  105829           0 :           ROSE_ASSERT(start != NULL);
  105830             : #if 0
  105831             :        // Debugging information
  105832             :           if (start->get_parent() == NULL)
  105833             :              {
  105834             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105835             :              }
  105836             : #endif
  105837           0 :           start->set_parent(locatedNode);
  105838           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  105839             : 
  105840           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  105841             : 
  105842             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  105843             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  105844             :        // ROSE_ASSERT(end != NULL);
  105845           0 :           if (end == NULL)
  105846             :              {
  105847           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  105848             :              }
  105849             :             else
  105850             :              {
  105851             : #if 0
  105852             :             // Debugging information
  105853             :                if (end->get_parent() == NULL)
  105854             :                   {
  105855             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105856             :                   }
  105857             : #endif
  105858           0 :                end->set_parent(locatedNode);
  105859           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  105860             :              }
  105861             : 
  105862           0 :           SgExpression* expression = isSgExpression(result);
  105863           0 :           if (isSgExpression(this) != NULL)
  105864             :              {
  105865           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  105866             : 
  105867             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  105868           0 :                if (operatorPosition != NULL)
  105869             :                   {
  105870             : #if 0
  105871             :                  // Debugging information
  105872             :                     if (operatorPosition->get_parent() == NULL)
  105873             :                        {
  105874             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105875             :                        }
  105876             : #endif
  105877           0 :                     operatorPosition->set_parent(expression);
  105878           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  105879             :                   }
  105880             :              }
  105881             :         }
  105882             : 
  105883             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  105884           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  105885           0 :      if (initializedName != NULL)
  105886             :         {
  105887             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  105888           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  105889           0 :           ROSE_ASSERT(start != NULL);
  105890             : #if 0
  105891             :        // Debugging information
  105892             :           if (start->get_parent() == NULL)
  105893             :              {
  105894             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105895             :              }
  105896             : #endif
  105897           0 :           start->set_parent(initializedName);
  105898           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  105899             : 
  105900             : #if 0
  105901             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  105902             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  105903             : 
  105904             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  105905             :        // ROSE_ASSERT(end != NULL);
  105906             :           if (end == NULL)
  105907             :              {
  105908             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  105909             :              }
  105910             :             else
  105911             :              {
  105912             :                if (end->get_parent() == NULL)
  105913             :                   {
  105914             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  105915             :                   }
  105916             :                end->set_parent(initializedName);
  105917             :                ROSE_ASSERT(end->get_parent() != NULL);
  105918             :              }
  105919             : #endif
  105920             :         }
  105921             : 
  105922             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  105923           0 :      help.insertCopiedNodePair(this,result);
  105924             : 
  105925             :   // printf ("End of copy SgFlushStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  105926             : 
  105927             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  105928             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  105929           0 :      help.decrementDepth();
  105930             : 
  105931             :   // Test if this is the root of the copy!
  105932           0 :      if (help.get_depth() == 0)
  105933             :         {
  105934             :        // This is the original calling node.
  105935             : 
  105936             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  105937             :        // printf ("Calling SgFlushStatement::fixupCopy() (from root of AST being copied) \n");
  105938             : #if ALT_FIXUP_COPY
  105939             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  105940           0 :           fixupCopy_scopes (result,help);
  105941           0 :           fixupCopy_symbols (result,help);
  105942           0 :           fixupCopy_references (result,help);
  105943             : #else
  105944             :           fixupCopy(result,help);
  105945             : #endif
  105946             :        // Allow this to be called recursively, so accumulate the state.
  105947             :        // Also, clear the state in the SgCopyHelp object.
  105948             :        // help.clearState();
  105949             :         }
  105950             : 
  105951           0 :      return result;
  105952             :    }
  105953             : 
  105954             : 
  105955             : /* #line 105956 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  105956             : 
  105957             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  105958             : 
  105959           0 : SgNode* SgBackspaceStatement::copy ( SgCopyHelp& help) const
  105960             :    {
  105961           0 :      SgBackspaceStatement* result = NULL;
  105962             : 
  105963             :   // printf ("Copy SgBackspaceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  105964             : 
  105965             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  105966             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  105967             :   // The default value of the depth is 0, so after this call the depth is 1!
  105968           0 :      help.incrementDepth();
  105969             : 
  105970             : #if 0
  105971             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  105972             :   // but it is not generally true that things can only be copied once!
  105973             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  105974             :   // AstAttribute* existingAttribute = const_cast<SgBackspaceStatement*>(this)->attribute["copied"];
  105975             :      bool previouslyCopied = const_cast<SgBackspaceStatement*>(this)->attribute.exists("copied");
  105976             :      if (previouslyCopied == true)
  105977             :         {
  105978             :           this->get_file_info()->display("Called from copy SgBackspaceStatement: debug");
  105979             :         }
  105980             :      ROSE_ASSERT(previouslyCopied == false);
  105981             : 
  105982             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  105983             :      AstAttribute* newAttribute = new AstAttribute();
  105984             :      ROSE_ASSERT(newAttribute != NULL);
  105985             : 
  105986             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  105987             :      const_cast<SgBackspaceStatement*>(this)->attribute.add("copied",newAttribute);
  105988             : #endif
  105989             : 
  105990             :   // Copy data members from base classes
  105991             :   // Copy constructor parameter data member: startOfConstruct_copy
  105992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  105993             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  105994           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  105995           0 :      if ( p_startOfConstruct != NULL ) 
  105996             :         { 
  105997           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  105998             :         } 
  105999             :        else 
  106000             :         { 
  106001             :           startOfConstruct_copy = NULL; 
  106002             :         } 
  106003             :  
  106004             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  106005             : 
  106006             :   // Build an empty copy of this object (will be filled in, but 
  106007             :   // the parent can't be set and must be set by the caller)
  106008           0 :      result = new SgBackspaceStatement(  startOfConstruct_copy );
  106009           0 :      ROSE_ASSERT(result != NULL);
  106010             : 
  106011             :   // Copy data members of "this" class
  106012             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  106013             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  106014             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  106015           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  106016           0 :      if ( p_endOfConstruct != NULL ) 
  106017             :         { 
  106018           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  106019             :         } 
  106020             :        else 
  106021             :         { 
  106022             :           endOfConstruct_copy = NULL; 
  106023             :         } 
  106024             :   /* check for a valid pointer and delete if present */ 
  106025           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  106026             :   /* add assignment to result here */ 
  106027           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  106028             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  106029             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  106030             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  106031           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  106032           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  106033             :         { 
  106034           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  106035             :         } 
  106036             :        else 
  106037             :         { 
  106038             :           attachedPreprocessingInfoPtr_copy = NULL; 
  106039             :         } 
  106040             :   /* check for a valid pointer and delete if present */ 
  106041           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  106042             :   /* add assignment to result here */ 
  106043           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  106044             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  106045             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  106046             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  106047           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  106048           0 :      if ( p_attributeMechanism != NULL ) 
  106049             :         { 
  106050           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  106051             :         } 
  106052             :        else 
  106053             :         { 
  106054             :           attributeMechanism_copy = NULL; 
  106055             :         } 
  106056             :   /* check for a valid pointer and delete if present */ 
  106057           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  106058             :   /* add assignment to result here */ 
  106059           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  106060             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  106061             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  106062             :   // case: toBeCopied == COPY_DATA for numeric_label
  106063           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  106064           0 :      result->p_numeric_label = numeric_label_copy; 
  106065             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  106066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  106067             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  106068           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  106069           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  106070             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  106071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  106072             :   // case: toBeCopied == COPY_DATA for io_statement
  106073           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  106074           0 :      result->p_io_statement = io_statement_copy; 
  106075             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  106076           0 :      SgExprListExp* io_stmt_list_copy; 
  106077             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  106078           0 :           if (get_io_stmt_list() != NULL) 
  106079             :              { 
  106080           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  106081             :              } 
  106082             :             else 
  106083             :              { 
  106084             :                io_stmt_list_copy = NULL; 
  106085             :              } 
  106086             :   /* check for a valid pointer and delete if present */ 
  106087           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  106088           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  106089             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  106090           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  106091             :              { 
  106092           0 :                io_stmt_list_copy->set_parent(result); 
  106093             :              } 
  106094             :   // Copy non-constructor parameter data member (access function): unit_copy
  106095           0 :      SgExpression* unit_copy; 
  106096             :   // case: not a listType for (using conditionalToCopyVariable)unit
  106097           0 :           if (get_unit() != NULL) 
  106098             :              { 
  106099           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  106100             :              } 
  106101             :             else 
  106102             :              { 
  106103             :                unit_copy = NULL; 
  106104             :              } 
  106105             :   /* check for a valid pointer and delete if present */ 
  106106           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  106107           0 :      result->p_unit = unit_copy; 
  106108             :   // case: not a listType for (using conditionalToSetParent)unit
  106109           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  106110             :              { 
  106111           0 :                unit_copy->set_parent(result); 
  106112             :              } 
  106113             :   // Copy non-constructor parameter data member (access function): iostat_copy
  106114           0 :      SgExpression* iostat_copy; 
  106115             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  106116           0 :           if (get_iostat() != NULL) 
  106117             :              { 
  106118           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  106119             :              } 
  106120             :             else 
  106121             :              { 
  106122             :                iostat_copy = NULL; 
  106123             :              } 
  106124             :   /* check for a valid pointer and delete if present */ 
  106125           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  106126           0 :      result->p_iostat = iostat_copy; 
  106127             :   // case: not a listType for (using conditionalToSetParent)iostat
  106128           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  106129             :              { 
  106130           0 :                iostat_copy->set_parent(result); 
  106131             :              } 
  106132             :   // Copy non-constructor parameter data member (access function): err_copy
  106133           0 :      SgExpression* err_copy; 
  106134             :   // case: not a listType for (using conditionalToCopyVariable)err
  106135           0 :           if (get_err() != NULL) 
  106136             :              { 
  106137           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  106138             :              } 
  106139             :             else 
  106140             :              { 
  106141             :                err_copy = NULL; 
  106142             :              } 
  106143             :   /* check for a valid pointer and delete if present */ 
  106144           0 :      if (result->p_err != NULL) delete result->p_err; 
  106145           0 :      result->p_err = err_copy; 
  106146             :   // case: not a listType for (using conditionalToSetParent)err
  106147           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  106148             :              { 
  106149           0 :                err_copy->set_parent(result); 
  106150             :              } 
  106151             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  106152           0 :      SgExpression* iomsg_copy; 
  106153             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  106154           0 :           if (get_iomsg() != NULL) 
  106155             :              { 
  106156           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  106157             :              } 
  106158             :             else 
  106159             :              { 
  106160             :                iomsg_copy = NULL; 
  106161             :              } 
  106162             :   /* check for a valid pointer and delete if present */ 
  106163           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  106164           0 :      result->p_iomsg = iomsg_copy; 
  106165             :   // case: not a listType for (using conditionalToSetParent)iomsg
  106166           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  106167             :              { 
  106168           0 :                iomsg_copy->set_parent(result); 
  106169             :              } 
  106170             : 
  106171             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  106172             : 
  106173             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  106174             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  106175             :   // fixupCopy(result,help);
  106176             : 
  106177             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  106178             :   // the Sg_File_Info objects that are built for the new IR nodes.
  106179           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  106180           0 :      if (locatedNode != NULL)
  106181             :         {
  106182             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  106183           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  106184           0 :           ROSE_ASSERT(start != NULL);
  106185             : #if 0
  106186             :        // Debugging information
  106187             :           if (start->get_parent() == NULL)
  106188             :              {
  106189             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106190             :              }
  106191             : #endif
  106192           0 :           start->set_parent(locatedNode);
  106193           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  106194             : 
  106195           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  106196             : 
  106197             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  106198             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  106199             :        // ROSE_ASSERT(end != NULL);
  106200           0 :           if (end == NULL)
  106201             :              {
  106202           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  106203             :              }
  106204             :             else
  106205             :              {
  106206             : #if 0
  106207             :             // Debugging information
  106208             :                if (end->get_parent() == NULL)
  106209             :                   {
  106210             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106211             :                   }
  106212             : #endif
  106213           0 :                end->set_parent(locatedNode);
  106214           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  106215             :              }
  106216             : 
  106217           0 :           SgExpression* expression = isSgExpression(result);
  106218           0 :           if (isSgExpression(this) != NULL)
  106219             :              {
  106220           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  106221             : 
  106222             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  106223           0 :                if (operatorPosition != NULL)
  106224             :                   {
  106225             : #if 0
  106226             :                  // Debugging information
  106227             :                     if (operatorPosition->get_parent() == NULL)
  106228             :                        {
  106229             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106230             :                        }
  106231             : #endif
  106232           0 :                     operatorPosition->set_parent(expression);
  106233           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  106234             :                   }
  106235             :              }
  106236             :         }
  106237             : 
  106238             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  106239           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  106240           0 :      if (initializedName != NULL)
  106241             :         {
  106242             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  106243           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  106244           0 :           ROSE_ASSERT(start != NULL);
  106245             : #if 0
  106246             :        // Debugging information
  106247             :           if (start->get_parent() == NULL)
  106248             :              {
  106249             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106250             :              }
  106251             : #endif
  106252           0 :           start->set_parent(initializedName);
  106253           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  106254             : 
  106255             : #if 0
  106256             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  106257             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  106258             : 
  106259             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  106260             :        // ROSE_ASSERT(end != NULL);
  106261             :           if (end == NULL)
  106262             :              {
  106263             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  106264             :              }
  106265             :             else
  106266             :              {
  106267             :                if (end->get_parent() == NULL)
  106268             :                   {
  106269             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106270             :                   }
  106271             :                end->set_parent(initializedName);
  106272             :                ROSE_ASSERT(end->get_parent() != NULL);
  106273             :              }
  106274             : #endif
  106275             :         }
  106276             : 
  106277             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  106278           0 :      help.insertCopiedNodePair(this,result);
  106279             : 
  106280             :   // printf ("End of copy SgBackspaceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  106281             : 
  106282             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  106283             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  106284           0 :      help.decrementDepth();
  106285             : 
  106286             :   // Test if this is the root of the copy!
  106287           0 :      if (help.get_depth() == 0)
  106288             :         {
  106289             :        // This is the original calling node.
  106290             : 
  106291             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  106292             :        // printf ("Calling SgBackspaceStatement::fixupCopy() (from root of AST being copied) \n");
  106293             : #if ALT_FIXUP_COPY
  106294             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  106295           0 :           fixupCopy_scopes (result,help);
  106296           0 :           fixupCopy_symbols (result,help);
  106297           0 :           fixupCopy_references (result,help);
  106298             : #else
  106299             :           fixupCopy(result,help);
  106300             : #endif
  106301             :        // Allow this to be called recursively, so accumulate the state.
  106302             :        // Also, clear the state in the SgCopyHelp object.
  106303             :        // help.clearState();
  106304             :         }
  106305             : 
  106306           0 :      return result;
  106307             :    }
  106308             : 
  106309             : 
  106310             : /* #line 106311 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  106311             : 
  106312             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  106313             : 
  106314           0 : SgNode* SgRewindStatement::copy ( SgCopyHelp& help) const
  106315             :    {
  106316           0 :      SgRewindStatement* result = NULL;
  106317             : 
  106318             :   // printf ("Copy SgRewindStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  106319             : 
  106320             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  106321             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  106322             :   // The default value of the depth is 0, so after this call the depth is 1!
  106323           0 :      help.incrementDepth();
  106324             : 
  106325             : #if 0
  106326             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  106327             :   // but it is not generally true that things can only be copied once!
  106328             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  106329             :   // AstAttribute* existingAttribute = const_cast<SgRewindStatement*>(this)->attribute["copied"];
  106330             :      bool previouslyCopied = const_cast<SgRewindStatement*>(this)->attribute.exists("copied");
  106331             :      if (previouslyCopied == true)
  106332             :         {
  106333             :           this->get_file_info()->display("Called from copy SgRewindStatement: debug");
  106334             :         }
  106335             :      ROSE_ASSERT(previouslyCopied == false);
  106336             : 
  106337             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  106338             :      AstAttribute* newAttribute = new AstAttribute();
  106339             :      ROSE_ASSERT(newAttribute != NULL);
  106340             : 
  106341             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  106342             :      const_cast<SgRewindStatement*>(this)->attribute.add("copied",newAttribute);
  106343             : #endif
  106344             : 
  106345             :   // Copy data members from base classes
  106346             :   // Copy constructor parameter data member: startOfConstruct_copy
  106347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  106348             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  106349           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  106350           0 :      if ( p_startOfConstruct != NULL ) 
  106351             :         { 
  106352           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  106353             :         } 
  106354             :        else 
  106355             :         { 
  106356             :           startOfConstruct_copy = NULL; 
  106357             :         } 
  106358             :  
  106359             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  106360             : 
  106361             :   // Build an empty copy of this object (will be filled in, but 
  106362             :   // the parent can't be set and must be set by the caller)
  106363           0 :      result = new SgRewindStatement(  startOfConstruct_copy );
  106364           0 :      ROSE_ASSERT(result != NULL);
  106365             : 
  106366             :   // Copy data members of "this" class
  106367             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  106368             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  106369             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  106370           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  106371           0 :      if ( p_endOfConstruct != NULL ) 
  106372             :         { 
  106373           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  106374             :         } 
  106375             :        else 
  106376             :         { 
  106377             :           endOfConstruct_copy = NULL; 
  106378             :         } 
  106379             :   /* check for a valid pointer and delete if present */ 
  106380           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  106381             :   /* add assignment to result here */ 
  106382           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  106383             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  106384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  106385             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  106386           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  106387           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  106388             :         { 
  106389           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  106390             :         } 
  106391             :        else 
  106392             :         { 
  106393             :           attachedPreprocessingInfoPtr_copy = NULL; 
  106394             :         } 
  106395             :   /* check for a valid pointer and delete if present */ 
  106396           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  106397             :   /* add assignment to result here */ 
  106398           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  106399             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  106400             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  106401             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  106402           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  106403           0 :      if ( p_attributeMechanism != NULL ) 
  106404             :         { 
  106405           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  106406             :         } 
  106407             :        else 
  106408             :         { 
  106409             :           attributeMechanism_copy = NULL; 
  106410             :         } 
  106411             :   /* check for a valid pointer and delete if present */ 
  106412           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  106413             :   /* add assignment to result here */ 
  106414           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  106415             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  106416             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  106417             :   // case: toBeCopied == COPY_DATA for numeric_label
  106418           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  106419           0 :      result->p_numeric_label = numeric_label_copy; 
  106420             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  106421             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  106422             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  106423           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  106424           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  106425             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  106426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  106427             :   // case: toBeCopied == COPY_DATA for io_statement
  106428           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  106429           0 :      result->p_io_statement = io_statement_copy; 
  106430             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  106431           0 :      SgExprListExp* io_stmt_list_copy; 
  106432             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  106433           0 :           if (get_io_stmt_list() != NULL) 
  106434             :              { 
  106435           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  106436             :              } 
  106437             :             else 
  106438             :              { 
  106439             :                io_stmt_list_copy = NULL; 
  106440             :              } 
  106441             :   /* check for a valid pointer and delete if present */ 
  106442           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  106443           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  106444             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  106445           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  106446             :              { 
  106447           0 :                io_stmt_list_copy->set_parent(result); 
  106448             :              } 
  106449             :   // Copy non-constructor parameter data member (access function): unit_copy
  106450           0 :      SgExpression* unit_copy; 
  106451             :   // case: not a listType for (using conditionalToCopyVariable)unit
  106452           0 :           if (get_unit() != NULL) 
  106453             :              { 
  106454           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  106455             :              } 
  106456             :             else 
  106457             :              { 
  106458             :                unit_copy = NULL; 
  106459             :              } 
  106460             :   /* check for a valid pointer and delete if present */ 
  106461           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  106462           0 :      result->p_unit = unit_copy; 
  106463             :   // case: not a listType for (using conditionalToSetParent)unit
  106464           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  106465             :              { 
  106466           0 :                unit_copy->set_parent(result); 
  106467             :              } 
  106468             :   // Copy non-constructor parameter data member (access function): iostat_copy
  106469           0 :      SgExpression* iostat_copy; 
  106470             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  106471           0 :           if (get_iostat() != NULL) 
  106472             :              { 
  106473           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  106474             :              } 
  106475             :             else 
  106476             :              { 
  106477             :                iostat_copy = NULL; 
  106478             :              } 
  106479             :   /* check for a valid pointer and delete if present */ 
  106480           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  106481           0 :      result->p_iostat = iostat_copy; 
  106482             :   // case: not a listType for (using conditionalToSetParent)iostat
  106483           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  106484             :              { 
  106485           0 :                iostat_copy->set_parent(result); 
  106486             :              } 
  106487             :   // Copy non-constructor parameter data member (access function): err_copy
  106488           0 :      SgExpression* err_copy; 
  106489             :   // case: not a listType for (using conditionalToCopyVariable)err
  106490           0 :           if (get_err() != NULL) 
  106491             :              { 
  106492           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  106493             :              } 
  106494             :             else 
  106495             :              { 
  106496             :                err_copy = NULL; 
  106497             :              } 
  106498             :   /* check for a valid pointer and delete if present */ 
  106499           0 :      if (result->p_err != NULL) delete result->p_err; 
  106500           0 :      result->p_err = err_copy; 
  106501             :   // case: not a listType for (using conditionalToSetParent)err
  106502           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  106503             :              { 
  106504           0 :                err_copy->set_parent(result); 
  106505             :              } 
  106506             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  106507           0 :      SgExpression* iomsg_copy; 
  106508             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  106509           0 :           if (get_iomsg() != NULL) 
  106510             :              { 
  106511           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  106512             :              } 
  106513             :             else 
  106514             :              { 
  106515             :                iomsg_copy = NULL; 
  106516             :              } 
  106517             :   /* check for a valid pointer and delete if present */ 
  106518           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  106519           0 :      result->p_iomsg = iomsg_copy; 
  106520             :   // case: not a listType for (using conditionalToSetParent)iomsg
  106521           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  106522             :              { 
  106523           0 :                iomsg_copy->set_parent(result); 
  106524             :              } 
  106525             : 
  106526             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  106527             : 
  106528             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  106529             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  106530             :   // fixupCopy(result,help);
  106531             : 
  106532             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  106533             :   // the Sg_File_Info objects that are built for the new IR nodes.
  106534           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  106535           0 :      if (locatedNode != NULL)
  106536             :         {
  106537             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  106538           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  106539           0 :           ROSE_ASSERT(start != NULL);
  106540             : #if 0
  106541             :        // Debugging information
  106542             :           if (start->get_parent() == NULL)
  106543             :              {
  106544             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106545             :              }
  106546             : #endif
  106547           0 :           start->set_parent(locatedNode);
  106548           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  106549             : 
  106550           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  106551             : 
  106552             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  106553             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  106554             :        // ROSE_ASSERT(end != NULL);
  106555           0 :           if (end == NULL)
  106556             :              {
  106557           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  106558             :              }
  106559             :             else
  106560             :              {
  106561             : #if 0
  106562             :             // Debugging information
  106563             :                if (end->get_parent() == NULL)
  106564             :                   {
  106565             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106566             :                   }
  106567             : #endif
  106568           0 :                end->set_parent(locatedNode);
  106569           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  106570             :              }
  106571             : 
  106572           0 :           SgExpression* expression = isSgExpression(result);
  106573           0 :           if (isSgExpression(this) != NULL)
  106574             :              {
  106575           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  106576             : 
  106577             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  106578           0 :                if (operatorPosition != NULL)
  106579             :                   {
  106580             : #if 0
  106581             :                  // Debugging information
  106582             :                     if (operatorPosition->get_parent() == NULL)
  106583             :                        {
  106584             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106585             :                        }
  106586             : #endif
  106587           0 :                     operatorPosition->set_parent(expression);
  106588           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  106589             :                   }
  106590             :              }
  106591             :         }
  106592             : 
  106593             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  106594           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  106595           0 :      if (initializedName != NULL)
  106596             :         {
  106597             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  106598           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  106599           0 :           ROSE_ASSERT(start != NULL);
  106600             : #if 0
  106601             :        // Debugging information
  106602             :           if (start->get_parent() == NULL)
  106603             :              {
  106604             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106605             :              }
  106606             : #endif
  106607           0 :           start->set_parent(initializedName);
  106608           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  106609             : 
  106610             : #if 0
  106611             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  106612             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  106613             : 
  106614             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  106615             :        // ROSE_ASSERT(end != NULL);
  106616             :           if (end == NULL)
  106617             :              {
  106618             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  106619             :              }
  106620             :             else
  106621             :              {
  106622             :                if (end->get_parent() == NULL)
  106623             :                   {
  106624             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106625             :                   }
  106626             :                end->set_parent(initializedName);
  106627             :                ROSE_ASSERT(end->get_parent() != NULL);
  106628             :              }
  106629             : #endif
  106630             :         }
  106631             : 
  106632             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  106633           0 :      help.insertCopiedNodePair(this,result);
  106634             : 
  106635             :   // printf ("End of copy SgRewindStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  106636             : 
  106637             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  106638             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  106639           0 :      help.decrementDepth();
  106640             : 
  106641             :   // Test if this is the root of the copy!
  106642           0 :      if (help.get_depth() == 0)
  106643             :         {
  106644             :        // This is the original calling node.
  106645             : 
  106646             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  106647             :        // printf ("Calling SgRewindStatement::fixupCopy() (from root of AST being copied) \n");
  106648             : #if ALT_FIXUP_COPY
  106649             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  106650           0 :           fixupCopy_scopes (result,help);
  106651           0 :           fixupCopy_symbols (result,help);
  106652           0 :           fixupCopy_references (result,help);
  106653             : #else
  106654             :           fixupCopy(result,help);
  106655             : #endif
  106656             :        // Allow this to be called recursively, so accumulate the state.
  106657             :        // Also, clear the state in the SgCopyHelp object.
  106658             :        // help.clearState();
  106659             :         }
  106660             : 
  106661           0 :      return result;
  106662             :    }
  106663             : 
  106664             : 
  106665             : /* #line 106666 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  106666             : 
  106667             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  106668             : 
  106669           0 : SgNode* SgEndfileStatement::copy ( SgCopyHelp& help) const
  106670             :    {
  106671           0 :      SgEndfileStatement* result = NULL;
  106672             : 
  106673             :   // printf ("Copy SgEndfileStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  106674             : 
  106675             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  106676             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  106677             :   // The default value of the depth is 0, so after this call the depth is 1!
  106678           0 :      help.incrementDepth();
  106679             : 
  106680             : #if 0
  106681             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  106682             :   // but it is not generally true that things can only be copied once!
  106683             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  106684             :   // AstAttribute* existingAttribute = const_cast<SgEndfileStatement*>(this)->attribute["copied"];
  106685             :      bool previouslyCopied = const_cast<SgEndfileStatement*>(this)->attribute.exists("copied");
  106686             :      if (previouslyCopied == true)
  106687             :         {
  106688             :           this->get_file_info()->display("Called from copy SgEndfileStatement: debug");
  106689             :         }
  106690             :      ROSE_ASSERT(previouslyCopied == false);
  106691             : 
  106692             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  106693             :      AstAttribute* newAttribute = new AstAttribute();
  106694             :      ROSE_ASSERT(newAttribute != NULL);
  106695             : 
  106696             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  106697             :      const_cast<SgEndfileStatement*>(this)->attribute.add("copied",newAttribute);
  106698             : #endif
  106699             : 
  106700             :   // Copy data members from base classes
  106701             :   // Copy constructor parameter data member: startOfConstruct_copy
  106702             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  106703             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  106704           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  106705           0 :      if ( p_startOfConstruct != NULL ) 
  106706             :         { 
  106707           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  106708             :         } 
  106709             :        else 
  106710             :         { 
  106711             :           startOfConstruct_copy = NULL; 
  106712             :         } 
  106713             :  
  106714             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  106715             : 
  106716             :   // Build an empty copy of this object (will be filled in, but 
  106717             :   // the parent can't be set and must be set by the caller)
  106718           0 :      result = new SgEndfileStatement(  startOfConstruct_copy );
  106719           0 :      ROSE_ASSERT(result != NULL);
  106720             : 
  106721             :   // Copy data members of "this" class
  106722             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  106723             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  106724             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  106725           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  106726           0 :      if ( p_endOfConstruct != NULL ) 
  106727             :         { 
  106728           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  106729             :         } 
  106730             :        else 
  106731             :         { 
  106732             :           endOfConstruct_copy = NULL; 
  106733             :         } 
  106734             :   /* check for a valid pointer and delete if present */ 
  106735           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  106736             :   /* add assignment to result here */ 
  106737           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  106738             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  106739             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  106740             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  106741           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  106742           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  106743             :         { 
  106744           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  106745             :         } 
  106746             :        else 
  106747             :         { 
  106748             :           attachedPreprocessingInfoPtr_copy = NULL; 
  106749             :         } 
  106750             :   /* check for a valid pointer and delete if present */ 
  106751           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  106752             :   /* add assignment to result here */ 
  106753           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  106754             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  106755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  106756             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  106757           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  106758           0 :      if ( p_attributeMechanism != NULL ) 
  106759             :         { 
  106760           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  106761             :         } 
  106762             :        else 
  106763             :         { 
  106764             :           attributeMechanism_copy = NULL; 
  106765             :         } 
  106766             :   /* check for a valid pointer and delete if present */ 
  106767           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  106768             :   /* add assignment to result here */ 
  106769           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  106770             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  106771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  106772             :   // case: toBeCopied == COPY_DATA for numeric_label
  106773           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  106774           0 :      result->p_numeric_label = numeric_label_copy; 
  106775             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  106776             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  106777             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  106778           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  106779           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  106780             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  106781             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  106782             :   // case: toBeCopied == COPY_DATA for io_statement
  106783           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  106784           0 :      result->p_io_statement = io_statement_copy; 
  106785             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  106786           0 :      SgExprListExp* io_stmt_list_copy; 
  106787             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  106788           0 :           if (get_io_stmt_list() != NULL) 
  106789             :              { 
  106790           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  106791             :              } 
  106792             :             else 
  106793             :              { 
  106794             :                io_stmt_list_copy = NULL; 
  106795             :              } 
  106796             :   /* check for a valid pointer and delete if present */ 
  106797           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  106798           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  106799             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  106800           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  106801             :              { 
  106802           0 :                io_stmt_list_copy->set_parent(result); 
  106803             :              } 
  106804             :   // Copy non-constructor parameter data member (access function): unit_copy
  106805           0 :      SgExpression* unit_copy; 
  106806             :   // case: not a listType for (using conditionalToCopyVariable)unit
  106807           0 :           if (get_unit() != NULL) 
  106808             :              { 
  106809           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  106810             :              } 
  106811             :             else 
  106812             :              { 
  106813             :                unit_copy = NULL; 
  106814             :              } 
  106815             :   /* check for a valid pointer and delete if present */ 
  106816           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  106817           0 :      result->p_unit = unit_copy; 
  106818             :   // case: not a listType for (using conditionalToSetParent)unit
  106819           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  106820             :              { 
  106821           0 :                unit_copy->set_parent(result); 
  106822             :              } 
  106823             :   // Copy non-constructor parameter data member (access function): iostat_copy
  106824           0 :      SgExpression* iostat_copy; 
  106825             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  106826           0 :           if (get_iostat() != NULL) 
  106827             :              { 
  106828           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  106829             :              } 
  106830             :             else 
  106831             :              { 
  106832             :                iostat_copy = NULL; 
  106833             :              } 
  106834             :   /* check for a valid pointer and delete if present */ 
  106835           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  106836           0 :      result->p_iostat = iostat_copy; 
  106837             :   // case: not a listType for (using conditionalToSetParent)iostat
  106838           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  106839             :              { 
  106840           0 :                iostat_copy->set_parent(result); 
  106841             :              } 
  106842             :   // Copy non-constructor parameter data member (access function): err_copy
  106843           0 :      SgExpression* err_copy; 
  106844             :   // case: not a listType for (using conditionalToCopyVariable)err
  106845           0 :           if (get_err() != NULL) 
  106846             :              { 
  106847           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  106848             :              } 
  106849             :             else 
  106850             :              { 
  106851             :                err_copy = NULL; 
  106852             :              } 
  106853             :   /* check for a valid pointer and delete if present */ 
  106854           0 :      if (result->p_err != NULL) delete result->p_err; 
  106855           0 :      result->p_err = err_copy; 
  106856             :   // case: not a listType for (using conditionalToSetParent)err
  106857           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  106858             :              { 
  106859           0 :                err_copy->set_parent(result); 
  106860             :              } 
  106861             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  106862           0 :      SgExpression* iomsg_copy; 
  106863             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  106864           0 :           if (get_iomsg() != NULL) 
  106865             :              { 
  106866           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  106867             :              } 
  106868             :             else 
  106869             :              { 
  106870             :                iomsg_copy = NULL; 
  106871             :              } 
  106872             :   /* check for a valid pointer and delete if present */ 
  106873           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  106874           0 :      result->p_iomsg = iomsg_copy; 
  106875             :   // case: not a listType for (using conditionalToSetParent)iomsg
  106876           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  106877             :              { 
  106878           0 :                iomsg_copy->set_parent(result); 
  106879             :              } 
  106880             : 
  106881             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  106882             : 
  106883             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  106884             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  106885             :   // fixupCopy(result,help);
  106886             : 
  106887             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  106888             :   // the Sg_File_Info objects that are built for the new IR nodes.
  106889           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  106890           0 :      if (locatedNode != NULL)
  106891             :         {
  106892             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  106893           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  106894           0 :           ROSE_ASSERT(start != NULL);
  106895             : #if 0
  106896             :        // Debugging information
  106897             :           if (start->get_parent() == NULL)
  106898             :              {
  106899             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106900             :              }
  106901             : #endif
  106902           0 :           start->set_parent(locatedNode);
  106903           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  106904             : 
  106905           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  106906             : 
  106907             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  106908             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  106909             :        // ROSE_ASSERT(end != NULL);
  106910           0 :           if (end == NULL)
  106911             :              {
  106912           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  106913             :              }
  106914             :             else
  106915             :              {
  106916             : #if 0
  106917             :             // Debugging information
  106918             :                if (end->get_parent() == NULL)
  106919             :                   {
  106920             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106921             :                   }
  106922             : #endif
  106923           0 :                end->set_parent(locatedNode);
  106924           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  106925             :              }
  106926             : 
  106927           0 :           SgExpression* expression = isSgExpression(result);
  106928           0 :           if (isSgExpression(this) != NULL)
  106929             :              {
  106930           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  106931             : 
  106932             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  106933           0 :                if (operatorPosition != NULL)
  106934             :                   {
  106935             : #if 0
  106936             :                  // Debugging information
  106937             :                     if (operatorPosition->get_parent() == NULL)
  106938             :                        {
  106939             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106940             :                        }
  106941             : #endif
  106942           0 :                     operatorPosition->set_parent(expression);
  106943           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  106944             :                   }
  106945             :              }
  106946             :         }
  106947             : 
  106948             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  106949           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  106950           0 :      if (initializedName != NULL)
  106951             :         {
  106952             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  106953           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  106954           0 :           ROSE_ASSERT(start != NULL);
  106955             : #if 0
  106956             :        // Debugging information
  106957             :           if (start->get_parent() == NULL)
  106958             :              {
  106959             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106960             :              }
  106961             : #endif
  106962           0 :           start->set_parent(initializedName);
  106963           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  106964             : 
  106965             : #if 0
  106966             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  106967             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  106968             : 
  106969             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  106970             :        // ROSE_ASSERT(end != NULL);
  106971             :           if (end == NULL)
  106972             :              {
  106973             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  106974             :              }
  106975             :             else
  106976             :              {
  106977             :                if (end->get_parent() == NULL)
  106978             :                   {
  106979             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  106980             :                   }
  106981             :                end->set_parent(initializedName);
  106982             :                ROSE_ASSERT(end->get_parent() != NULL);
  106983             :              }
  106984             : #endif
  106985             :         }
  106986             : 
  106987             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  106988           0 :      help.insertCopiedNodePair(this,result);
  106989             : 
  106990             :   // printf ("End of copy SgEndfileStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  106991             : 
  106992             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  106993             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  106994           0 :      help.decrementDepth();
  106995             : 
  106996             :   // Test if this is the root of the copy!
  106997           0 :      if (help.get_depth() == 0)
  106998             :         {
  106999             :        // This is the original calling node.
  107000             : 
  107001             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  107002             :        // printf ("Calling SgEndfileStatement::fixupCopy() (from root of AST being copied) \n");
  107003             : #if ALT_FIXUP_COPY
  107004             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  107005           0 :           fixupCopy_scopes (result,help);
  107006           0 :           fixupCopy_symbols (result,help);
  107007           0 :           fixupCopy_references (result,help);
  107008             : #else
  107009             :           fixupCopy(result,help);
  107010             : #endif
  107011             :        // Allow this to be called recursively, so accumulate the state.
  107012             :        // Also, clear the state in the SgCopyHelp object.
  107013             :        // help.clearState();
  107014             :         }
  107015             : 
  107016           0 :      return result;
  107017             :    }
  107018             : 
  107019             : 
  107020             : /* #line 107021 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  107021             : 
  107022             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107023             : 
  107024           0 : SgNode* SgWaitStatement::copy ( SgCopyHelp& help) const
  107025             :    {
  107026           0 :      SgWaitStatement* result = NULL;
  107027             : 
  107028             :   // printf ("Copy SgWaitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  107029             : 
  107030             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  107031             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  107032             :   // The default value of the depth is 0, so after this call the depth is 1!
  107033           0 :      help.incrementDepth();
  107034             : 
  107035             : #if 0
  107036             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  107037             :   // but it is not generally true that things can only be copied once!
  107038             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  107039             :   // AstAttribute* existingAttribute = const_cast<SgWaitStatement*>(this)->attribute["copied"];
  107040             :      bool previouslyCopied = const_cast<SgWaitStatement*>(this)->attribute.exists("copied");
  107041             :      if (previouslyCopied == true)
  107042             :         {
  107043             :           this->get_file_info()->display("Called from copy SgWaitStatement: debug");
  107044             :         }
  107045             :      ROSE_ASSERT(previouslyCopied == false);
  107046             : 
  107047             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  107048             :      AstAttribute* newAttribute = new AstAttribute();
  107049             :      ROSE_ASSERT(newAttribute != NULL);
  107050             : 
  107051             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  107052             :      const_cast<SgWaitStatement*>(this)->attribute.add("copied",newAttribute);
  107053             : #endif
  107054             : 
  107055             :   // Copy data members from base classes
  107056             :   // Copy constructor parameter data member: startOfConstruct_copy
  107057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  107058             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  107059           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  107060           0 :      if ( p_startOfConstruct != NULL ) 
  107061             :         { 
  107062           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  107063             :         } 
  107064             :        else 
  107065             :         { 
  107066             :           startOfConstruct_copy = NULL; 
  107067             :         } 
  107068             :  
  107069             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107070             : 
  107071             :   // Build an empty copy of this object (will be filled in, but 
  107072             :   // the parent can't be set and must be set by the caller)
  107073           0 :      result = new SgWaitStatement(  startOfConstruct_copy );
  107074           0 :      ROSE_ASSERT(result != NULL);
  107075             : 
  107076             :   // Copy data members of "this" class
  107077             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  107078             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  107079             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  107080           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  107081           0 :      if ( p_endOfConstruct != NULL ) 
  107082             :         { 
  107083           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  107084             :         } 
  107085             :        else 
  107086             :         { 
  107087             :           endOfConstruct_copy = NULL; 
  107088             :         } 
  107089             :   /* check for a valid pointer and delete if present */ 
  107090           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  107091             :   /* add assignment to result here */ 
  107092           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  107093             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  107094             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  107095             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  107096           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  107097           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  107098             :         { 
  107099           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  107100             :         } 
  107101             :        else 
  107102             :         { 
  107103             :           attachedPreprocessingInfoPtr_copy = NULL; 
  107104             :         } 
  107105             :   /* check for a valid pointer and delete if present */ 
  107106           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  107107             :   /* add assignment to result here */ 
  107108           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  107109             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  107110             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  107111             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  107112           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  107113           0 :      if ( p_attributeMechanism != NULL ) 
  107114             :         { 
  107115           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  107116             :         } 
  107117             :        else 
  107118             :         { 
  107119             :           attributeMechanism_copy = NULL; 
  107120             :         } 
  107121             :   /* check for a valid pointer and delete if present */ 
  107122           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  107123             :   /* add assignment to result here */ 
  107124           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  107125             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  107126             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  107127             :   // case: toBeCopied == COPY_DATA for numeric_label
  107128           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  107129           0 :      result->p_numeric_label = numeric_label_copy; 
  107130             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  107131             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  107132             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  107133           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  107134           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  107135             :   // Copy non-constructor parameter data member (access function): io_statement_copy
  107136             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for io_statement
  107137             :   // case: toBeCopied == COPY_DATA for io_statement
  107138           0 :      SgIOStatement::io_statement_enum io_statement_copy = p_io_statement; 
  107139           0 :      result->p_io_statement = io_statement_copy; 
  107140             :   // Copy non-constructor parameter data member (access function): io_stmt_list_copy
  107141           0 :      SgExprListExp* io_stmt_list_copy; 
  107142             :   // case: not a listType for (using conditionalToCopyVariable)io_stmt_list
  107143           0 :           if (get_io_stmt_list() != NULL) 
  107144             :              { 
  107145           0 :                io_stmt_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_io_stmt_list())); 
  107146             :              } 
  107147             :             else 
  107148             :              { 
  107149             :                io_stmt_list_copy = NULL; 
  107150             :              } 
  107151             :   /* check for a valid pointer and delete if present */ 
  107152           0 :      if (result->p_io_stmt_list != NULL) delete result->p_io_stmt_list; 
  107153           0 :      result->p_io_stmt_list = io_stmt_list_copy; 
  107154             :   // case: not a listType for (using conditionalToSetParent)io_stmt_list
  107155           0 :           if ( (io_stmt_list_copy != NULL) && (io_stmt_list_copy->get_parent() == NULL) && (isSgType(io_stmt_list_copy) == NULL) ) 
  107156             :              { 
  107157           0 :                io_stmt_list_copy->set_parent(result); 
  107158             :              } 
  107159             :   // Copy non-constructor parameter data member (access function): unit_copy
  107160           0 :      SgExpression* unit_copy; 
  107161             :   // case: not a listType for (using conditionalToCopyVariable)unit
  107162           0 :           if (get_unit() != NULL) 
  107163             :              { 
  107164           0 :                unit_copy = static_cast<SgExpression*>(help.copyAst(get_unit())); 
  107165             :              } 
  107166             :             else 
  107167             :              { 
  107168             :                unit_copy = NULL; 
  107169             :              } 
  107170             :   /* check for a valid pointer and delete if present */ 
  107171           0 :      if (result->p_unit != NULL) delete result->p_unit; 
  107172           0 :      result->p_unit = unit_copy; 
  107173             :   // case: not a listType for (using conditionalToSetParent)unit
  107174           0 :           if ( (unit_copy != NULL) && (unit_copy->get_parent() == NULL) && (isSgType(unit_copy) == NULL) ) 
  107175             :              { 
  107176           0 :                unit_copy->set_parent(result); 
  107177             :              } 
  107178             :   // Copy non-constructor parameter data member (access function): iostat_copy
  107179           0 :      SgExpression* iostat_copy; 
  107180             :   // case: not a listType for (using conditionalToCopyVariable)iostat
  107181           0 :           if (get_iostat() != NULL) 
  107182             :              { 
  107183           0 :                iostat_copy = static_cast<SgExpression*>(help.copyAst(get_iostat())); 
  107184             :              } 
  107185             :             else 
  107186             :              { 
  107187             :                iostat_copy = NULL; 
  107188             :              } 
  107189             :   /* check for a valid pointer and delete if present */ 
  107190           0 :      if (result->p_iostat != NULL) delete result->p_iostat; 
  107191           0 :      result->p_iostat = iostat_copy; 
  107192             :   // case: not a listType for (using conditionalToSetParent)iostat
  107193           0 :           if ( (iostat_copy != NULL) && (iostat_copy->get_parent() == NULL) && (isSgType(iostat_copy) == NULL) ) 
  107194             :              { 
  107195           0 :                iostat_copy->set_parent(result); 
  107196             :              } 
  107197             :   // Copy non-constructor parameter data member (access function): err_copy
  107198           0 :      SgExpression* err_copy; 
  107199             :   // case: not a listType for (using conditionalToCopyVariable)err
  107200           0 :           if (get_err() != NULL) 
  107201             :              { 
  107202           0 :                err_copy = static_cast<SgExpression*>(help.copyAst(get_err())); 
  107203             :              } 
  107204             :             else 
  107205             :              { 
  107206             :                err_copy = NULL; 
  107207             :              } 
  107208             :   /* check for a valid pointer and delete if present */ 
  107209           0 :      if (result->p_err != NULL) delete result->p_err; 
  107210           0 :      result->p_err = err_copy; 
  107211             :   // case: not a listType for (using conditionalToSetParent)err
  107212           0 :           if ( (err_copy != NULL) && (err_copy->get_parent() == NULL) && (isSgType(err_copy) == NULL) ) 
  107213             :              { 
  107214           0 :                err_copy->set_parent(result); 
  107215             :              } 
  107216             :   // Copy non-constructor parameter data member (access function): iomsg_copy
  107217           0 :      SgExpression* iomsg_copy; 
  107218             :   // case: not a listType for (using conditionalToCopyVariable)iomsg
  107219           0 :           if (get_iomsg() != NULL) 
  107220             :              { 
  107221           0 :                iomsg_copy = static_cast<SgExpression*>(help.copyAst(get_iomsg())); 
  107222             :              } 
  107223             :             else 
  107224             :              { 
  107225             :                iomsg_copy = NULL; 
  107226             :              } 
  107227             :   /* check for a valid pointer and delete if present */ 
  107228           0 :      if (result->p_iomsg != NULL) delete result->p_iomsg; 
  107229           0 :      result->p_iomsg = iomsg_copy; 
  107230             :   // case: not a listType for (using conditionalToSetParent)iomsg
  107231           0 :           if ( (iomsg_copy != NULL) && (iomsg_copy->get_parent() == NULL) && (isSgType(iomsg_copy) == NULL) ) 
  107232             :              { 
  107233           0 :                iomsg_copy->set_parent(result); 
  107234             :              } 
  107235             : 
  107236             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107237             : 
  107238             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  107239             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  107240             :   // fixupCopy(result,help);
  107241             : 
  107242             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  107243             :   // the Sg_File_Info objects that are built for the new IR nodes.
  107244           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  107245           0 :      if (locatedNode != NULL)
  107246             :         {
  107247             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  107248           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  107249           0 :           ROSE_ASSERT(start != NULL);
  107250             : #if 0
  107251             :        // Debugging information
  107252             :           if (start->get_parent() == NULL)
  107253             :              {
  107254             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107255             :              }
  107256             : #endif
  107257           0 :           start->set_parent(locatedNode);
  107258           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  107259             : 
  107260           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  107261             : 
  107262             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  107263             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  107264             :        // ROSE_ASSERT(end != NULL);
  107265           0 :           if (end == NULL)
  107266             :              {
  107267           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  107268             :              }
  107269             :             else
  107270             :              {
  107271             : #if 0
  107272             :             // Debugging information
  107273             :                if (end->get_parent() == NULL)
  107274             :                   {
  107275             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107276             :                   }
  107277             : #endif
  107278           0 :                end->set_parent(locatedNode);
  107279           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  107280             :              }
  107281             : 
  107282           0 :           SgExpression* expression = isSgExpression(result);
  107283           0 :           if (isSgExpression(this) != NULL)
  107284             :              {
  107285           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  107286             : 
  107287             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  107288           0 :                if (operatorPosition != NULL)
  107289             :                   {
  107290             : #if 0
  107291             :                  // Debugging information
  107292             :                     if (operatorPosition->get_parent() == NULL)
  107293             :                        {
  107294             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107295             :                        }
  107296             : #endif
  107297           0 :                     operatorPosition->set_parent(expression);
  107298           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  107299             :                   }
  107300             :              }
  107301             :         }
  107302             : 
  107303             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  107304           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  107305           0 :      if (initializedName != NULL)
  107306             :         {
  107307             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  107308           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  107309           0 :           ROSE_ASSERT(start != NULL);
  107310             : #if 0
  107311             :        // Debugging information
  107312             :           if (start->get_parent() == NULL)
  107313             :              {
  107314             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107315             :              }
  107316             : #endif
  107317           0 :           start->set_parent(initializedName);
  107318           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  107319             : 
  107320             : #if 0
  107321             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  107322             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  107323             : 
  107324             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  107325             :        // ROSE_ASSERT(end != NULL);
  107326             :           if (end == NULL)
  107327             :              {
  107328             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  107329             :              }
  107330             :             else
  107331             :              {
  107332             :                if (end->get_parent() == NULL)
  107333             :                   {
  107334             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107335             :                   }
  107336             :                end->set_parent(initializedName);
  107337             :                ROSE_ASSERT(end->get_parent() != NULL);
  107338             :              }
  107339             : #endif
  107340             :         }
  107341             : 
  107342             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  107343           0 :      help.insertCopiedNodePair(this,result);
  107344             : 
  107345             :   // printf ("End of copy SgWaitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  107346             : 
  107347             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  107348             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  107349           0 :      help.decrementDepth();
  107350             : 
  107351             :   // Test if this is the root of the copy!
  107352           0 :      if (help.get_depth() == 0)
  107353             :         {
  107354             :        // This is the original calling node.
  107355             : 
  107356             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  107357             :        // printf ("Calling SgWaitStatement::fixupCopy() (from root of AST being copied) \n");
  107358             : #if ALT_FIXUP_COPY
  107359             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  107360           0 :           fixupCopy_scopes (result,help);
  107361           0 :           fixupCopy_symbols (result,help);
  107362           0 :           fixupCopy_references (result,help);
  107363             : #else
  107364             :           fixupCopy(result,help);
  107365             : #endif
  107366             :        // Allow this to be called recursively, so accumulate the state.
  107367             :        // Also, clear the state in the SgCopyHelp object.
  107368             :        // help.clearState();
  107369             :         }
  107370             : 
  107371           0 :      return result;
  107372             :    }
  107373             : 
  107374             : 
  107375             : /* #line 107376 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  107376             : 
  107377             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107378             : 
  107379           0 : SgNode* SgWhereStatement::copy ( SgCopyHelp& help) const
  107380             :    {
  107381           0 :      SgWhereStatement* result = NULL;
  107382             : 
  107383             :   // printf ("Copy SgWhereStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  107384             : 
  107385             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  107386             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  107387             :   // The default value of the depth is 0, so after this call the depth is 1!
  107388           0 :      help.incrementDepth();
  107389             : 
  107390             : #if 0
  107391             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  107392             :   // but it is not generally true that things can only be copied once!
  107393             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  107394             :   // AstAttribute* existingAttribute = const_cast<SgWhereStatement*>(this)->attribute["copied"];
  107395             :      bool previouslyCopied = const_cast<SgWhereStatement*>(this)->attribute.exists("copied");
  107396             :      if (previouslyCopied == true)
  107397             :         {
  107398             :           this->get_file_info()->display("Called from copy SgWhereStatement: debug");
  107399             :         }
  107400             :      ROSE_ASSERT(previouslyCopied == false);
  107401             : 
  107402             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  107403             :      AstAttribute* newAttribute = new AstAttribute();
  107404             :      ROSE_ASSERT(newAttribute != NULL);
  107405             : 
  107406             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  107407             :      const_cast<SgWhereStatement*>(this)->attribute.add("copied",newAttribute);
  107408             : #endif
  107409             : 
  107410             :   // Copy data members from base classes
  107411             :   // Copy constructor parameter data member: startOfConstruct_copy
  107412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  107413             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  107414           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  107415           0 :      if ( p_startOfConstruct != NULL ) 
  107416             :         { 
  107417           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  107418             :         } 
  107419             :        else 
  107420             :         { 
  107421             :           startOfConstruct_copy = NULL; 
  107422             :         } 
  107423             :   // Copy constructor parameter data member: condition_copy
  107424           0 :      SgExpression* condition_copy; 
  107425             :   // case: not a listType for (using conditionalToCopyVariable)condition
  107426           0 :           if (get_condition() != NULL) 
  107427             :              { 
  107428           0 :                condition_copy = static_cast<SgExpression*>(help.copyAst(get_condition())); 
  107429             :              } 
  107430             :             else 
  107431             :              { 
  107432             :                condition_copy = NULL; 
  107433             :              } 
  107434             :   // Copy constructor parameter data member: body_copy
  107435           0 :      SgBasicBlock* body_copy; 
  107436             :   // case: not a listType for (using conditionalToCopyVariable)body
  107437           0 :           if (get_body() != NULL) 
  107438             :              { 
  107439           0 :                body_copy = static_cast<SgBasicBlock*>(help.copyAst(get_body())); 
  107440             :              } 
  107441             :             else 
  107442             :              { 
  107443             :                body_copy = NULL; 
  107444             :              } 
  107445             :   // Copy constructor parameter data member: elsewhere_copy
  107446           0 :      SgElseWhereStatement* elsewhere_copy; 
  107447             :   // case: not a listType for (using conditionalToCopyVariable)elsewhere
  107448           0 :           if (get_elsewhere() != NULL) 
  107449             :              { 
  107450           0 :                elsewhere_copy = static_cast<SgElseWhereStatement*>(help.copyAst(get_elsewhere())); 
  107451             :              } 
  107452             :             else 
  107453             :              { 
  107454             :                elsewhere_copy = NULL; 
  107455             :              } 
  107456             :  
  107457             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107458             : 
  107459             :   // Build an empty copy of this object (will be filled in, but 
  107460             :   // the parent can't be set and must be set by the caller)
  107461           0 :      result = new SgWhereStatement(  startOfConstruct_copy, condition_copy, body_copy, elsewhere_copy );
  107462           0 :      ROSE_ASSERT(result != NULL);
  107463             : 
  107464             :   // Copy data members of "this" class
  107465             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  107466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  107467             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  107468           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  107469           0 :      if ( p_endOfConstruct != NULL ) 
  107470             :         { 
  107471           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  107472             :         } 
  107473             :        else 
  107474             :         { 
  107475             :           endOfConstruct_copy = NULL; 
  107476             :         } 
  107477             :   /* check for a valid pointer and delete if present */ 
  107478           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  107479             :   /* add assignment to result here */ 
  107480           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  107481             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  107482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  107483             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  107484           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  107485           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  107486             :         { 
  107487           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  107488             :         } 
  107489             :        else 
  107490             :         { 
  107491             :           attachedPreprocessingInfoPtr_copy = NULL; 
  107492             :         } 
  107493             :   /* check for a valid pointer and delete if present */ 
  107494           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  107495             :   /* add assignment to result here */ 
  107496           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  107497             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  107498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  107499             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  107500           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  107501           0 :      if ( p_attributeMechanism != NULL ) 
  107502             :         { 
  107503           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  107504             :         } 
  107505             :        else 
  107506             :         { 
  107507             :           attributeMechanism_copy = NULL; 
  107508             :         } 
  107509             :   /* check for a valid pointer and delete if present */ 
  107510           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  107511             :   /* add assignment to result here */ 
  107512           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  107513             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  107514             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  107515             :   // case: toBeCopied == COPY_DATA for numeric_label
  107516           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  107517           0 :      result->p_numeric_label = numeric_label_copy; 
  107518             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  107519             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  107520             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  107521           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  107522           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  107523             :   // Copy non-constructor parameter data member (access function): end_numeric_label_copy
  107524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for end_numeric_label
  107525             :   // case: toBeCopied == COPY_DATA for end_numeric_label
  107526           0 :      SgLabelRefExp* end_numeric_label_copy = p_end_numeric_label; 
  107527           0 :      result->p_end_numeric_label = end_numeric_label_copy; 
  107528             :   // Copy non-constructor parameter data member (access function): string_label_copy
  107529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for string_label
  107530             :   // case: toBeCopied == COPY_DATA for string_label
  107531           0 :      std::string string_label_copy = p_string_label; 
  107532           0 :      result->p_string_label = string_label_copy; 
  107533             :   // Copy non-constructor parameter data member (access function): has_end_statement_copy
  107534             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_end_statement
  107535             :   // case: toBeCopied == COPY_DATA for has_end_statement
  107536           0 :      bool has_end_statement_copy = p_has_end_statement; 
  107537           0 :      result->p_has_end_statement = has_end_statement_copy; 
  107538             :   // case: not a listType for (using conditionalToSetParent)condition
  107539           0 :           if ( (condition_copy != NULL) && (condition_copy->get_parent() == NULL) && (isSgType(condition_copy) == NULL) ) 
  107540             :              { 
  107541           0 :                condition_copy->set_parent(result); 
  107542             :              } 
  107543             :   // case: not a listType for (using conditionalToSetParent)body
  107544           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  107545             :              { 
  107546           0 :                body_copy->set_parent(result); 
  107547             :              } 
  107548             :   // case: not a listType for (using conditionalToSetParent)elsewhere
  107549           0 :           if ( (elsewhere_copy != NULL) && (elsewhere_copy->get_parent() == NULL) && (isSgType(elsewhere_copy) == NULL) ) 
  107550             :              { 
  107551           0 :                elsewhere_copy->set_parent(result); 
  107552             :              } 
  107553             : 
  107554             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107555             : 
  107556             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  107557             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  107558             :   // fixupCopy(result,help);
  107559             : 
  107560             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  107561             :   // the Sg_File_Info objects that are built for the new IR nodes.
  107562           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  107563           0 :      if (locatedNode != NULL)
  107564             :         {
  107565             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  107566           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  107567           0 :           ROSE_ASSERT(start != NULL);
  107568             : #if 0
  107569             :        // Debugging information
  107570             :           if (start->get_parent() == NULL)
  107571             :              {
  107572             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107573             :              }
  107574             : #endif
  107575           0 :           start->set_parent(locatedNode);
  107576           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  107577             : 
  107578           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  107579             : 
  107580             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  107581             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  107582             :        // ROSE_ASSERT(end != NULL);
  107583           0 :           if (end == NULL)
  107584             :              {
  107585           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  107586             :              }
  107587             :             else
  107588             :              {
  107589             : #if 0
  107590             :             // Debugging information
  107591             :                if (end->get_parent() == NULL)
  107592             :                   {
  107593             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107594             :                   }
  107595             : #endif
  107596           0 :                end->set_parent(locatedNode);
  107597           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  107598             :              }
  107599             : 
  107600           0 :           SgExpression* expression = isSgExpression(result);
  107601           0 :           if (isSgExpression(this) != NULL)
  107602             :              {
  107603           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  107604             : 
  107605             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  107606           0 :                if (operatorPosition != NULL)
  107607             :                   {
  107608             : #if 0
  107609             :                  // Debugging information
  107610             :                     if (operatorPosition->get_parent() == NULL)
  107611             :                        {
  107612             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107613             :                        }
  107614             : #endif
  107615           0 :                     operatorPosition->set_parent(expression);
  107616           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  107617             :                   }
  107618             :              }
  107619             :         }
  107620             : 
  107621             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  107622           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  107623           0 :      if (initializedName != NULL)
  107624             :         {
  107625             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  107626           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  107627           0 :           ROSE_ASSERT(start != NULL);
  107628             : #if 0
  107629             :        // Debugging information
  107630             :           if (start->get_parent() == NULL)
  107631             :              {
  107632             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107633             :              }
  107634             : #endif
  107635           0 :           start->set_parent(initializedName);
  107636           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  107637             : 
  107638             : #if 0
  107639             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  107640             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  107641             : 
  107642             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  107643             :        // ROSE_ASSERT(end != NULL);
  107644             :           if (end == NULL)
  107645             :              {
  107646             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  107647             :              }
  107648             :             else
  107649             :              {
  107650             :                if (end->get_parent() == NULL)
  107651             :                   {
  107652             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107653             :                   }
  107654             :                end->set_parent(initializedName);
  107655             :                ROSE_ASSERT(end->get_parent() != NULL);
  107656             :              }
  107657             : #endif
  107658             :         }
  107659             : 
  107660             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  107661           0 :      help.insertCopiedNodePair(this,result);
  107662             : 
  107663             :   // printf ("End of copy SgWhereStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  107664             : 
  107665             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  107666             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  107667           0 :      help.decrementDepth();
  107668             : 
  107669             :   // Test if this is the root of the copy!
  107670           0 :      if (help.get_depth() == 0)
  107671             :         {
  107672             :        // This is the original calling node.
  107673             : 
  107674             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  107675             :        // printf ("Calling SgWhereStatement::fixupCopy() (from root of AST being copied) \n");
  107676             : #if ALT_FIXUP_COPY
  107677             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  107678           0 :           fixupCopy_scopes (result,help);
  107679           0 :           fixupCopy_symbols (result,help);
  107680           0 :           fixupCopy_references (result,help);
  107681             : #else
  107682             :           fixupCopy(result,help);
  107683             : #endif
  107684             :        // Allow this to be called recursively, so accumulate the state.
  107685             :        // Also, clear the state in the SgCopyHelp object.
  107686             :        // help.clearState();
  107687             :         }
  107688             : 
  107689           0 :      return result;
  107690             :    }
  107691             : 
  107692             : 
  107693             : /* #line 107694 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  107694             : 
  107695             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107696             : 
  107697           0 : SgNode* SgElseWhereStatement::copy ( SgCopyHelp& help) const
  107698             :    {
  107699           0 :      SgElseWhereStatement* result = NULL;
  107700             : 
  107701             :   // printf ("Copy SgElseWhereStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  107702             : 
  107703             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  107704             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  107705             :   // The default value of the depth is 0, so after this call the depth is 1!
  107706           0 :      help.incrementDepth();
  107707             : 
  107708             : #if 0
  107709             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  107710             :   // but it is not generally true that things can only be copied once!
  107711             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  107712             :   // AstAttribute* existingAttribute = const_cast<SgElseWhereStatement*>(this)->attribute["copied"];
  107713             :      bool previouslyCopied = const_cast<SgElseWhereStatement*>(this)->attribute.exists("copied");
  107714             :      if (previouslyCopied == true)
  107715             :         {
  107716             :           this->get_file_info()->display("Called from copy SgElseWhereStatement: debug");
  107717             :         }
  107718             :      ROSE_ASSERT(previouslyCopied == false);
  107719             : 
  107720             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  107721             :      AstAttribute* newAttribute = new AstAttribute();
  107722             :      ROSE_ASSERT(newAttribute != NULL);
  107723             : 
  107724             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  107725             :      const_cast<SgElseWhereStatement*>(this)->attribute.add("copied",newAttribute);
  107726             : #endif
  107727             : 
  107728             :   // Copy data members from base classes
  107729             :   // Copy constructor parameter data member: startOfConstruct_copy
  107730             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  107731             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  107732           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  107733           0 :      if ( p_startOfConstruct != NULL ) 
  107734             :         { 
  107735           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  107736             :         } 
  107737             :        else 
  107738             :         { 
  107739             :           startOfConstruct_copy = NULL; 
  107740             :         } 
  107741             :   // Copy constructor parameter data member: condition_copy
  107742           0 :      SgExpression* condition_copy; 
  107743             :   // case: not a listType for (using conditionalToCopyVariable)condition
  107744           0 :           if (get_condition() != NULL) 
  107745             :              { 
  107746           0 :                condition_copy = static_cast<SgExpression*>(help.copyAst(get_condition())); 
  107747             :              } 
  107748             :             else 
  107749             :              { 
  107750             :                condition_copy = NULL; 
  107751             :              } 
  107752             :   // Copy constructor parameter data member: body_copy
  107753           0 :      SgBasicBlock* body_copy; 
  107754             :   // case: not a listType for (using conditionalToCopyVariable)body
  107755           0 :           if (get_body() != NULL) 
  107756             :              { 
  107757           0 :                body_copy = static_cast<SgBasicBlock*>(help.copyAst(get_body())); 
  107758             :              } 
  107759             :             else 
  107760             :              { 
  107761             :                body_copy = NULL; 
  107762             :              } 
  107763             :   // Copy constructor parameter data member: elsewhere_copy
  107764           0 :      SgElseWhereStatement* elsewhere_copy; 
  107765             :   // case: not a listType for (using conditionalToCopyVariable)elsewhere
  107766           0 :           if (get_elsewhere() != NULL) 
  107767             :              { 
  107768           0 :                elsewhere_copy = static_cast<SgElseWhereStatement*>(help.copyAst(get_elsewhere())); 
  107769             :              } 
  107770             :             else 
  107771             :              { 
  107772             :                elsewhere_copy = NULL; 
  107773             :              } 
  107774             :  
  107775             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107776             : 
  107777             :   // Build an empty copy of this object (will be filled in, but 
  107778             :   // the parent can't be set and must be set by the caller)
  107779           0 :      result = new SgElseWhereStatement(  startOfConstruct_copy, condition_copy, body_copy, elsewhere_copy );
  107780           0 :      ROSE_ASSERT(result != NULL);
  107781             : 
  107782             :   // Copy data members of "this" class
  107783             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  107784             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  107785             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  107786           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  107787           0 :      if ( p_endOfConstruct != NULL ) 
  107788             :         { 
  107789           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  107790             :         } 
  107791             :        else 
  107792             :         { 
  107793             :           endOfConstruct_copy = NULL; 
  107794             :         } 
  107795             :   /* check for a valid pointer and delete if present */ 
  107796           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  107797             :   /* add assignment to result here */ 
  107798           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  107799             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  107800             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  107801             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  107802           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  107803           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  107804             :         { 
  107805           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  107806             :         } 
  107807             :        else 
  107808             :         { 
  107809             :           attachedPreprocessingInfoPtr_copy = NULL; 
  107810             :         } 
  107811             :   /* check for a valid pointer and delete if present */ 
  107812           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  107813             :   /* add assignment to result here */ 
  107814           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  107815             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  107816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  107817             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  107818           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  107819           0 :      if ( p_attributeMechanism != NULL ) 
  107820             :         { 
  107821           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  107822             :         } 
  107823             :        else 
  107824             :         { 
  107825             :           attributeMechanism_copy = NULL; 
  107826             :         } 
  107827             :   /* check for a valid pointer and delete if present */ 
  107828           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  107829             :   /* add assignment to result here */ 
  107830           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  107831             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  107832             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  107833             :   // case: toBeCopied == COPY_DATA for numeric_label
  107834           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  107835           0 :      result->p_numeric_label = numeric_label_copy; 
  107836             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  107837             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  107838             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  107839           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  107840           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  107841             :   // case: not a listType for (using conditionalToSetParent)condition
  107842           0 :           if ( (condition_copy != NULL) && (condition_copy->get_parent() == NULL) && (isSgType(condition_copy) == NULL) ) 
  107843             :              { 
  107844           0 :                condition_copy->set_parent(result); 
  107845             :              } 
  107846             :   // case: not a listType for (using conditionalToSetParent)body
  107847           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  107848             :              { 
  107849           0 :                body_copy->set_parent(result); 
  107850             :              } 
  107851             :   // case: not a listType for (using conditionalToSetParent)elsewhere
  107852           0 :           if ( (elsewhere_copy != NULL) && (elsewhere_copy->get_parent() == NULL) && (isSgType(elsewhere_copy) == NULL) ) 
  107853             :              { 
  107854           0 :                elsewhere_copy->set_parent(result); 
  107855             :              } 
  107856             : 
  107857             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107858             : 
  107859             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  107860             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  107861             :   // fixupCopy(result,help);
  107862             : 
  107863             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  107864             :   // the Sg_File_Info objects that are built for the new IR nodes.
  107865           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  107866           0 :      if (locatedNode != NULL)
  107867             :         {
  107868             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  107869           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  107870           0 :           ROSE_ASSERT(start != NULL);
  107871             : #if 0
  107872             :        // Debugging information
  107873             :           if (start->get_parent() == NULL)
  107874             :              {
  107875             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107876             :              }
  107877             : #endif
  107878           0 :           start->set_parent(locatedNode);
  107879           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  107880             : 
  107881           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  107882             : 
  107883             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  107884             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  107885             :        // ROSE_ASSERT(end != NULL);
  107886           0 :           if (end == NULL)
  107887             :              {
  107888           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  107889             :              }
  107890             :             else
  107891             :              {
  107892             : #if 0
  107893             :             // Debugging information
  107894             :                if (end->get_parent() == NULL)
  107895             :                   {
  107896             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107897             :                   }
  107898             : #endif
  107899           0 :                end->set_parent(locatedNode);
  107900           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  107901             :              }
  107902             : 
  107903           0 :           SgExpression* expression = isSgExpression(result);
  107904           0 :           if (isSgExpression(this) != NULL)
  107905             :              {
  107906           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  107907             : 
  107908             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  107909           0 :                if (operatorPosition != NULL)
  107910             :                   {
  107911             : #if 0
  107912             :                  // Debugging information
  107913             :                     if (operatorPosition->get_parent() == NULL)
  107914             :                        {
  107915             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107916             :                        }
  107917             : #endif
  107918           0 :                     operatorPosition->set_parent(expression);
  107919           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  107920             :                   }
  107921             :              }
  107922             :         }
  107923             : 
  107924             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  107925           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  107926           0 :      if (initializedName != NULL)
  107927             :         {
  107928             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  107929           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  107930           0 :           ROSE_ASSERT(start != NULL);
  107931             : #if 0
  107932             :        // Debugging information
  107933             :           if (start->get_parent() == NULL)
  107934             :              {
  107935             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107936             :              }
  107937             : #endif
  107938           0 :           start->set_parent(initializedName);
  107939           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  107940             : 
  107941             : #if 0
  107942             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  107943             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  107944             : 
  107945             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  107946             :        // ROSE_ASSERT(end != NULL);
  107947             :           if (end == NULL)
  107948             :              {
  107949             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  107950             :              }
  107951             :             else
  107952             :              {
  107953             :                if (end->get_parent() == NULL)
  107954             :                   {
  107955             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  107956             :                   }
  107957             :                end->set_parent(initializedName);
  107958             :                ROSE_ASSERT(end->get_parent() != NULL);
  107959             :              }
  107960             : #endif
  107961             :         }
  107962             : 
  107963             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  107964           0 :      help.insertCopiedNodePair(this,result);
  107965             : 
  107966             :   // printf ("End of copy SgElseWhereStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  107967             : 
  107968             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  107969             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  107970           0 :      help.decrementDepth();
  107971             : 
  107972             :   // Test if this is the root of the copy!
  107973           0 :      if (help.get_depth() == 0)
  107974             :         {
  107975             :        // This is the original calling node.
  107976             : 
  107977             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  107978             :        // printf ("Calling SgElseWhereStatement::fixupCopy() (from root of AST being copied) \n");
  107979             : #if ALT_FIXUP_COPY
  107980             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  107981           0 :           fixupCopy_scopes (result,help);
  107982           0 :           fixupCopy_symbols (result,help);
  107983           0 :           fixupCopy_references (result,help);
  107984             : #else
  107985             :           fixupCopy(result,help);
  107986             : #endif
  107987             :        // Allow this to be called recursively, so accumulate the state.
  107988             :        // Also, clear the state in the SgCopyHelp object.
  107989             :        // help.clearState();
  107990             :         }
  107991             : 
  107992           0 :      return result;
  107993             :    }
  107994             : 
  107995             : 
  107996             : /* #line 107997 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  107997             : 
  107998             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  107999             : 
  108000           0 : SgNode* SgNullifyStatement::copy ( SgCopyHelp& help) const
  108001             :    {
  108002           0 :      SgNullifyStatement* result = NULL;
  108003             : 
  108004             :   // printf ("Copy SgNullifyStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  108005             : 
  108006             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  108007             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  108008             :   // The default value of the depth is 0, so after this call the depth is 1!
  108009           0 :      help.incrementDepth();
  108010             : 
  108011             : #if 0
  108012             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  108013             :   // but it is not generally true that things can only be copied once!
  108014             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  108015             :   // AstAttribute* existingAttribute = const_cast<SgNullifyStatement*>(this)->attribute["copied"];
  108016             :      bool previouslyCopied = const_cast<SgNullifyStatement*>(this)->attribute.exists("copied");
  108017             :      if (previouslyCopied == true)
  108018             :         {
  108019             :           this->get_file_info()->display("Called from copy SgNullifyStatement: debug");
  108020             :         }
  108021             :      ROSE_ASSERT(previouslyCopied == false);
  108022             : 
  108023             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  108024             :      AstAttribute* newAttribute = new AstAttribute();
  108025             :      ROSE_ASSERT(newAttribute != NULL);
  108026             : 
  108027             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  108028             :      const_cast<SgNullifyStatement*>(this)->attribute.add("copied",newAttribute);
  108029             : #endif
  108030             : 
  108031             :   // Copy data members from base classes
  108032             :   // Copy constructor parameter data member: startOfConstruct_copy
  108033             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  108034             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  108035           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  108036           0 :      if ( p_startOfConstruct != NULL ) 
  108037             :         { 
  108038           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  108039             :         } 
  108040             :        else 
  108041             :         { 
  108042             :           startOfConstruct_copy = NULL; 
  108043             :         } 
  108044             :  
  108045             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108046             : 
  108047             :   // Build an empty copy of this object (will be filled in, but 
  108048             :   // the parent can't be set and must be set by the caller)
  108049           0 :      result = new SgNullifyStatement(  startOfConstruct_copy );
  108050           0 :      ROSE_ASSERT(result != NULL);
  108051             : 
  108052             :   // Copy data members of "this" class
  108053             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  108054             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  108055             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  108056           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  108057           0 :      if ( p_endOfConstruct != NULL ) 
  108058             :         { 
  108059           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  108060             :         } 
  108061             :        else 
  108062             :         { 
  108063             :           endOfConstruct_copy = NULL; 
  108064             :         } 
  108065             :   /* check for a valid pointer and delete if present */ 
  108066           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  108067             :   /* add assignment to result here */ 
  108068           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  108069             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  108070             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  108071             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  108072           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  108073           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  108074             :         { 
  108075           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  108076             :         } 
  108077             :        else 
  108078             :         { 
  108079             :           attachedPreprocessingInfoPtr_copy = NULL; 
  108080             :         } 
  108081             :   /* check for a valid pointer and delete if present */ 
  108082           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  108083             :   /* add assignment to result here */ 
  108084           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  108085             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  108086             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  108087             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  108088           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  108089           0 :      if ( p_attributeMechanism != NULL ) 
  108090             :         { 
  108091           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  108092             :         } 
  108093             :        else 
  108094             :         { 
  108095             :           attributeMechanism_copy = NULL; 
  108096             :         } 
  108097             :   /* check for a valid pointer and delete if present */ 
  108098           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  108099             :   /* add assignment to result here */ 
  108100           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  108101             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  108102             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  108103             :   // case: toBeCopied == COPY_DATA for numeric_label
  108104           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  108105           0 :      result->p_numeric_label = numeric_label_copy; 
  108106             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  108107             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  108108             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  108109           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  108110           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  108111             :   // Copy non-constructor parameter data member (access function): pointer_list_copy
  108112           0 :      SgExprListExp* pointer_list_copy; 
  108113             :   // case: not a listType for (using conditionalToCopyVariable)pointer_list
  108114           0 :           if (get_pointer_list() != NULL) 
  108115             :              { 
  108116           0 :                pointer_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_pointer_list())); 
  108117             :              } 
  108118             :             else 
  108119             :              { 
  108120             :                pointer_list_copy = NULL; 
  108121             :              } 
  108122             :   /* check for a valid pointer and delete if present */ 
  108123           0 :      if (result->p_pointer_list != NULL) delete result->p_pointer_list; 
  108124           0 :      result->p_pointer_list = pointer_list_copy; 
  108125             :   // case: not a listType for (using conditionalToSetParent)pointer_list
  108126           0 :           if ( (pointer_list_copy != NULL) && (pointer_list_copy->get_parent() == NULL) && (isSgType(pointer_list_copy) == NULL) ) 
  108127             :              { 
  108128           0 :                pointer_list_copy->set_parent(result); 
  108129             :              } 
  108130             : 
  108131             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108132             : 
  108133             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  108134             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  108135             :   // fixupCopy(result,help);
  108136             : 
  108137             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  108138             :   // the Sg_File_Info objects that are built for the new IR nodes.
  108139           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  108140           0 :      if (locatedNode != NULL)
  108141             :         {
  108142             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  108143           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  108144           0 :           ROSE_ASSERT(start != NULL);
  108145             : #if 0
  108146             :        // Debugging information
  108147             :           if (start->get_parent() == NULL)
  108148             :              {
  108149             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108150             :              }
  108151             : #endif
  108152           0 :           start->set_parent(locatedNode);
  108153           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  108154             : 
  108155           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  108156             : 
  108157             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  108158             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  108159             :        // ROSE_ASSERT(end != NULL);
  108160           0 :           if (end == NULL)
  108161             :              {
  108162           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  108163             :              }
  108164             :             else
  108165             :              {
  108166             : #if 0
  108167             :             // Debugging information
  108168             :                if (end->get_parent() == NULL)
  108169             :                   {
  108170             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108171             :                   }
  108172             : #endif
  108173           0 :                end->set_parent(locatedNode);
  108174           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  108175             :              }
  108176             : 
  108177           0 :           SgExpression* expression = isSgExpression(result);
  108178           0 :           if (isSgExpression(this) != NULL)
  108179             :              {
  108180           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  108181             : 
  108182             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  108183           0 :                if (operatorPosition != NULL)
  108184             :                   {
  108185             : #if 0
  108186             :                  // Debugging information
  108187             :                     if (operatorPosition->get_parent() == NULL)
  108188             :                        {
  108189             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108190             :                        }
  108191             : #endif
  108192           0 :                     operatorPosition->set_parent(expression);
  108193           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  108194             :                   }
  108195             :              }
  108196             :         }
  108197             : 
  108198             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  108199           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  108200           0 :      if (initializedName != NULL)
  108201             :         {
  108202             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  108203           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  108204           0 :           ROSE_ASSERT(start != NULL);
  108205             : #if 0
  108206             :        // Debugging information
  108207             :           if (start->get_parent() == NULL)
  108208             :              {
  108209             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108210             :              }
  108211             : #endif
  108212           0 :           start->set_parent(initializedName);
  108213           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  108214             : 
  108215             : #if 0
  108216             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  108217             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  108218             : 
  108219             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  108220             :        // ROSE_ASSERT(end != NULL);
  108221             :           if (end == NULL)
  108222             :              {
  108223             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  108224             :              }
  108225             :             else
  108226             :              {
  108227             :                if (end->get_parent() == NULL)
  108228             :                   {
  108229             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108230             :                   }
  108231             :                end->set_parent(initializedName);
  108232             :                ROSE_ASSERT(end->get_parent() != NULL);
  108233             :              }
  108234             : #endif
  108235             :         }
  108236             : 
  108237             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  108238           0 :      help.insertCopiedNodePair(this,result);
  108239             : 
  108240             :   // printf ("End of copy SgNullifyStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  108241             : 
  108242             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  108243             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  108244           0 :      help.decrementDepth();
  108245             : 
  108246             :   // Test if this is the root of the copy!
  108247           0 :      if (help.get_depth() == 0)
  108248             :         {
  108249             :        // This is the original calling node.
  108250             : 
  108251             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  108252             :        // printf ("Calling SgNullifyStatement::fixupCopy() (from root of AST being copied) \n");
  108253             : #if ALT_FIXUP_COPY
  108254             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  108255           0 :           fixupCopy_scopes (result,help);
  108256           0 :           fixupCopy_symbols (result,help);
  108257           0 :           fixupCopy_references (result,help);
  108258             : #else
  108259             :           fixupCopy(result,help);
  108260             : #endif
  108261             :        // Allow this to be called recursively, so accumulate the state.
  108262             :        // Also, clear the state in the SgCopyHelp object.
  108263             :        // help.clearState();
  108264             :         }
  108265             : 
  108266           0 :      return result;
  108267             :    }
  108268             : 
  108269             : 
  108270             : /* #line 108271 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  108271             : 
  108272             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108273             : 
  108274           0 : SgNode* SgArithmeticIfStatement::copy ( SgCopyHelp& help) const
  108275             :    {
  108276           0 :      SgArithmeticIfStatement* result = NULL;
  108277             : 
  108278             :   // printf ("Copy SgArithmeticIfStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  108279             : 
  108280             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  108281             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  108282             :   // The default value of the depth is 0, so after this call the depth is 1!
  108283           0 :      help.incrementDepth();
  108284             : 
  108285             : #if 0
  108286             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  108287             :   // but it is not generally true that things can only be copied once!
  108288             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  108289             :   // AstAttribute* existingAttribute = const_cast<SgArithmeticIfStatement*>(this)->attribute["copied"];
  108290             :      bool previouslyCopied = const_cast<SgArithmeticIfStatement*>(this)->attribute.exists("copied");
  108291             :      if (previouslyCopied == true)
  108292             :         {
  108293             :           this->get_file_info()->display("Called from copy SgArithmeticIfStatement: debug");
  108294             :         }
  108295             :      ROSE_ASSERT(previouslyCopied == false);
  108296             : 
  108297             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  108298             :      AstAttribute* newAttribute = new AstAttribute();
  108299             :      ROSE_ASSERT(newAttribute != NULL);
  108300             : 
  108301             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  108302             :      const_cast<SgArithmeticIfStatement*>(this)->attribute.add("copied",newAttribute);
  108303             : #endif
  108304             : 
  108305             :   // Copy data members from base classes
  108306             :   // Copy constructor parameter data member: startOfConstruct_copy
  108307             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  108308             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  108309           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  108310           0 :      if ( p_startOfConstruct != NULL ) 
  108311             :         { 
  108312           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  108313             :         } 
  108314             :        else 
  108315             :         { 
  108316             :           startOfConstruct_copy = NULL; 
  108317             :         } 
  108318             :   // Copy constructor parameter data member: conditional_copy
  108319           0 :      SgExpression* conditional_copy; 
  108320             :   // case: not a listType for (using conditionalToCopyVariable)conditional
  108321           0 :           if (get_conditional() != NULL) 
  108322             :              { 
  108323           0 :                conditional_copy = static_cast<SgExpression*>(help.copyAst(get_conditional())); 
  108324             :              } 
  108325             :             else 
  108326             :              { 
  108327             :                conditional_copy = NULL; 
  108328             :              } 
  108329             :   // Copy constructor parameter data member: less_label_copy
  108330             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for less_label
  108331             :   // case: toBeCopied == COPY_DATA for less_label
  108332           0 :      SgLabelRefExp* less_label_copy = p_less_label; 
  108333             :   // Copy constructor parameter data member: equal_label_copy
  108334             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for equal_label
  108335             :   // case: toBeCopied == COPY_DATA for equal_label
  108336           0 :      SgLabelRefExp* equal_label_copy = p_equal_label; 
  108337             :   // Copy constructor parameter data member: greater_label_copy
  108338             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for greater_label
  108339             :   // case: toBeCopied == COPY_DATA for greater_label
  108340           0 :      SgLabelRefExp* greater_label_copy = p_greater_label; 
  108341             :  
  108342             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108343             : 
  108344             :   // Build an empty copy of this object (will be filled in, but 
  108345             :   // the parent can't be set and must be set by the caller)
  108346           0 :      result = new SgArithmeticIfStatement(  startOfConstruct_copy, conditional_copy, less_label_copy, equal_label_copy, greater_label_copy );
  108347           0 :      ROSE_ASSERT(result != NULL);
  108348             : 
  108349             :   // Copy data members of "this" class
  108350             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  108351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  108352             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  108353           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  108354           0 :      if ( p_endOfConstruct != NULL ) 
  108355             :         { 
  108356           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  108357             :         } 
  108358             :        else 
  108359             :         { 
  108360             :           endOfConstruct_copy = NULL; 
  108361             :         } 
  108362             :   /* check for a valid pointer and delete if present */ 
  108363           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  108364             :   /* add assignment to result here */ 
  108365           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  108366             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  108367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  108368             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  108369           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  108370           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  108371             :         { 
  108372           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  108373             :         } 
  108374             :        else 
  108375             :         { 
  108376             :           attachedPreprocessingInfoPtr_copy = NULL; 
  108377             :         } 
  108378             :   /* check for a valid pointer and delete if present */ 
  108379           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  108380             :   /* add assignment to result here */ 
  108381           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  108382             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  108383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  108384             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  108385           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  108386           0 :      if ( p_attributeMechanism != NULL ) 
  108387             :         { 
  108388           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  108389             :         } 
  108390             :        else 
  108391             :         { 
  108392             :           attributeMechanism_copy = NULL; 
  108393             :         } 
  108394             :   /* check for a valid pointer and delete if present */ 
  108395           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  108396             :   /* add assignment to result here */ 
  108397           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  108398             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  108399             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  108400             :   // case: toBeCopied == COPY_DATA for numeric_label
  108401           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  108402           0 :      result->p_numeric_label = numeric_label_copy; 
  108403             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  108404             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  108405             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  108406           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  108407           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  108408             :   // case: not a listType for (using conditionalToSetParent)conditional
  108409           0 :           if ( (conditional_copy != NULL) && (conditional_copy->get_parent() == NULL) && (isSgType(conditional_copy) == NULL) ) 
  108410             :              { 
  108411           0 :                conditional_copy->set_parent(result); 
  108412             :              } 
  108413             : 
  108414             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108415             : 
  108416             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  108417             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  108418             :   // fixupCopy(result,help);
  108419             : 
  108420             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  108421             :   // the Sg_File_Info objects that are built for the new IR nodes.
  108422           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  108423           0 :      if (locatedNode != NULL)
  108424             :         {
  108425             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  108426           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  108427           0 :           ROSE_ASSERT(start != NULL);
  108428             : #if 0
  108429             :        // Debugging information
  108430             :           if (start->get_parent() == NULL)
  108431             :              {
  108432             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108433             :              }
  108434             : #endif
  108435           0 :           start->set_parent(locatedNode);
  108436           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  108437             : 
  108438           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  108439             : 
  108440             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  108441             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  108442             :        // ROSE_ASSERT(end != NULL);
  108443           0 :           if (end == NULL)
  108444             :              {
  108445           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  108446             :              }
  108447             :             else
  108448             :              {
  108449             : #if 0
  108450             :             // Debugging information
  108451             :                if (end->get_parent() == NULL)
  108452             :                   {
  108453             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108454             :                   }
  108455             : #endif
  108456           0 :                end->set_parent(locatedNode);
  108457           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  108458             :              }
  108459             : 
  108460           0 :           SgExpression* expression = isSgExpression(result);
  108461           0 :           if (isSgExpression(this) != NULL)
  108462             :              {
  108463           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  108464             : 
  108465             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  108466           0 :                if (operatorPosition != NULL)
  108467             :                   {
  108468             : #if 0
  108469             :                  // Debugging information
  108470             :                     if (operatorPosition->get_parent() == NULL)
  108471             :                        {
  108472             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108473             :                        }
  108474             : #endif
  108475           0 :                     operatorPosition->set_parent(expression);
  108476           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  108477             :                   }
  108478             :              }
  108479             :         }
  108480             : 
  108481             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  108482           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  108483           0 :      if (initializedName != NULL)
  108484             :         {
  108485             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  108486           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  108487           0 :           ROSE_ASSERT(start != NULL);
  108488             : #if 0
  108489             :        // Debugging information
  108490             :           if (start->get_parent() == NULL)
  108491             :              {
  108492             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108493             :              }
  108494             : #endif
  108495           0 :           start->set_parent(initializedName);
  108496           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  108497             : 
  108498             : #if 0
  108499             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  108500             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  108501             : 
  108502             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  108503             :        // ROSE_ASSERT(end != NULL);
  108504             :           if (end == NULL)
  108505             :              {
  108506             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  108507             :              }
  108508             :             else
  108509             :              {
  108510             :                if (end->get_parent() == NULL)
  108511             :                   {
  108512             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108513             :                   }
  108514             :                end->set_parent(initializedName);
  108515             :                ROSE_ASSERT(end->get_parent() != NULL);
  108516             :              }
  108517             : #endif
  108518             :         }
  108519             : 
  108520             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  108521           0 :      help.insertCopiedNodePair(this,result);
  108522             : 
  108523             :   // printf ("End of copy SgArithmeticIfStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  108524             : 
  108525             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  108526             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  108527           0 :      help.decrementDepth();
  108528             : 
  108529             :   // Test if this is the root of the copy!
  108530           0 :      if (help.get_depth() == 0)
  108531             :         {
  108532             :        // This is the original calling node.
  108533             : 
  108534             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  108535             :        // printf ("Calling SgArithmeticIfStatement::fixupCopy() (from root of AST being copied) \n");
  108536             : #if ALT_FIXUP_COPY
  108537             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  108538           0 :           fixupCopy_scopes (result,help);
  108539           0 :           fixupCopy_symbols (result,help);
  108540           0 :           fixupCopy_references (result,help);
  108541             : #else
  108542             :           fixupCopy(result,help);
  108543             : #endif
  108544             :        // Allow this to be called recursively, so accumulate the state.
  108545             :        // Also, clear the state in the SgCopyHelp object.
  108546             :        // help.clearState();
  108547             :         }
  108548             : 
  108549           0 :      return result;
  108550             :    }
  108551             : 
  108552             : 
  108553             : /* #line 108554 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  108554             : 
  108555             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108556             : 
  108557           0 : SgNode* SgAssignStatement::copy ( SgCopyHelp& help) const
  108558             :    {
  108559           0 :      SgAssignStatement* result = NULL;
  108560             : 
  108561             :   // printf ("Copy SgAssignStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  108562             : 
  108563             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  108564             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  108565             :   // The default value of the depth is 0, so after this call the depth is 1!
  108566           0 :      help.incrementDepth();
  108567             : 
  108568             : #if 0
  108569             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  108570             :   // but it is not generally true that things can only be copied once!
  108571             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  108572             :   // AstAttribute* existingAttribute = const_cast<SgAssignStatement*>(this)->attribute["copied"];
  108573             :      bool previouslyCopied = const_cast<SgAssignStatement*>(this)->attribute.exists("copied");
  108574             :      if (previouslyCopied == true)
  108575             :         {
  108576             :           this->get_file_info()->display("Called from copy SgAssignStatement: debug");
  108577             :         }
  108578             :      ROSE_ASSERT(previouslyCopied == false);
  108579             : 
  108580             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  108581             :      AstAttribute* newAttribute = new AstAttribute();
  108582             :      ROSE_ASSERT(newAttribute != NULL);
  108583             : 
  108584             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  108585             :      const_cast<SgAssignStatement*>(this)->attribute.add("copied",newAttribute);
  108586             : #endif
  108587             : 
  108588             :   // Copy data members from base classes
  108589             :   // Copy constructor parameter data member: startOfConstruct_copy
  108590             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  108591             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  108592           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  108593           0 :      if ( p_startOfConstruct != NULL ) 
  108594             :         { 
  108595           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  108596             :         } 
  108597             :        else 
  108598             :         { 
  108599             :           startOfConstruct_copy = NULL; 
  108600             :         } 
  108601             :   // Copy constructor parameter data member: label_copy
  108602             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for label
  108603             :   // case: toBeCopied == COPY_DATA for label
  108604           0 :      SgLabelRefExp* label_copy = p_label; 
  108605             :   // Copy constructor parameter data member: value_copy
  108606           0 :      SgExpression* value_copy; 
  108607             :   // case: not a listType for (using conditionalToCopyVariable)value
  108608           0 :           if (get_value() != NULL) 
  108609             :              { 
  108610           0 :                value_copy = static_cast<SgExpression*>(help.copyAst(get_value())); 
  108611             :              } 
  108612             :             else 
  108613             :              { 
  108614             :                value_copy = NULL; 
  108615             :              } 
  108616             :  
  108617             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108618             : 
  108619             :   // Build an empty copy of this object (will be filled in, but 
  108620             :   // the parent can't be set and must be set by the caller)
  108621           0 :      result = new SgAssignStatement(  startOfConstruct_copy, label_copy, value_copy );
  108622           0 :      ROSE_ASSERT(result != NULL);
  108623             : 
  108624             :   // Copy data members of "this" class
  108625             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  108626             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  108627             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  108628           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  108629           0 :      if ( p_endOfConstruct != NULL ) 
  108630             :         { 
  108631           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  108632             :         } 
  108633             :        else 
  108634             :         { 
  108635             :           endOfConstruct_copy = NULL; 
  108636             :         } 
  108637             :   /* check for a valid pointer and delete if present */ 
  108638           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  108639             :   /* add assignment to result here */ 
  108640           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  108641             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  108642             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  108643             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  108644           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  108645           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  108646             :         { 
  108647           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  108648             :         } 
  108649             :        else 
  108650             :         { 
  108651             :           attachedPreprocessingInfoPtr_copy = NULL; 
  108652             :         } 
  108653             :   /* check for a valid pointer and delete if present */ 
  108654           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  108655             :   /* add assignment to result here */ 
  108656           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  108657             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  108658             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  108659             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  108660           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  108661           0 :      if ( p_attributeMechanism != NULL ) 
  108662             :         { 
  108663           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  108664             :         } 
  108665             :        else 
  108666             :         { 
  108667             :           attributeMechanism_copy = NULL; 
  108668             :         } 
  108669             :   /* check for a valid pointer and delete if present */ 
  108670           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  108671             :   /* add assignment to result here */ 
  108672           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  108673             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  108674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  108675             :   // case: toBeCopied == COPY_DATA for numeric_label
  108676           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  108677           0 :      result->p_numeric_label = numeric_label_copy; 
  108678             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  108679             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  108680             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  108681           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  108682           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  108683             :   // case: not a listType for (using conditionalToSetParent)value
  108684           0 :           if ( (value_copy != NULL) && (value_copy->get_parent() == NULL) && (isSgType(value_copy) == NULL) ) 
  108685             :              { 
  108686           0 :                value_copy->set_parent(result); 
  108687             :              } 
  108688             : 
  108689             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108690             : 
  108691             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  108692             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  108693             :   // fixupCopy(result,help);
  108694             : 
  108695             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  108696             :   // the Sg_File_Info objects that are built for the new IR nodes.
  108697           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  108698           0 :      if (locatedNode != NULL)
  108699             :         {
  108700             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  108701           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  108702           0 :           ROSE_ASSERT(start != NULL);
  108703             : #if 0
  108704             :        // Debugging information
  108705             :           if (start->get_parent() == NULL)
  108706             :              {
  108707             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108708             :              }
  108709             : #endif
  108710           0 :           start->set_parent(locatedNode);
  108711           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  108712             : 
  108713           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  108714             : 
  108715             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  108716             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  108717             :        // ROSE_ASSERT(end != NULL);
  108718           0 :           if (end == NULL)
  108719             :              {
  108720           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  108721             :              }
  108722             :             else
  108723             :              {
  108724             : #if 0
  108725             :             // Debugging information
  108726             :                if (end->get_parent() == NULL)
  108727             :                   {
  108728             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108729             :                   }
  108730             : #endif
  108731           0 :                end->set_parent(locatedNode);
  108732           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  108733             :              }
  108734             : 
  108735           0 :           SgExpression* expression = isSgExpression(result);
  108736           0 :           if (isSgExpression(this) != NULL)
  108737             :              {
  108738           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  108739             : 
  108740             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  108741           0 :                if (operatorPosition != NULL)
  108742             :                   {
  108743             : #if 0
  108744             :                  // Debugging information
  108745             :                     if (operatorPosition->get_parent() == NULL)
  108746             :                        {
  108747             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108748             :                        }
  108749             : #endif
  108750           0 :                     operatorPosition->set_parent(expression);
  108751           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  108752             :                   }
  108753             :              }
  108754             :         }
  108755             : 
  108756             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  108757           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  108758           0 :      if (initializedName != NULL)
  108759             :         {
  108760             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  108761           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  108762           0 :           ROSE_ASSERT(start != NULL);
  108763             : #if 0
  108764             :        // Debugging information
  108765             :           if (start->get_parent() == NULL)
  108766             :              {
  108767             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108768             :              }
  108769             : #endif
  108770           0 :           start->set_parent(initializedName);
  108771           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  108772             : 
  108773             : #if 0
  108774             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  108775             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  108776             : 
  108777             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  108778             :        // ROSE_ASSERT(end != NULL);
  108779             :           if (end == NULL)
  108780             :              {
  108781             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  108782             :              }
  108783             :             else
  108784             :              {
  108785             :                if (end->get_parent() == NULL)
  108786             :                   {
  108787             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108788             :                   }
  108789             :                end->set_parent(initializedName);
  108790             :                ROSE_ASSERT(end->get_parent() != NULL);
  108791             :              }
  108792             : #endif
  108793             :         }
  108794             : 
  108795             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  108796           0 :      help.insertCopiedNodePair(this,result);
  108797             : 
  108798             :   // printf ("End of copy SgAssignStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  108799             : 
  108800             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  108801             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  108802           0 :      help.decrementDepth();
  108803             : 
  108804             :   // Test if this is the root of the copy!
  108805           0 :      if (help.get_depth() == 0)
  108806             :         {
  108807             :        // This is the original calling node.
  108808             : 
  108809             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  108810             :        // printf ("Calling SgAssignStatement::fixupCopy() (from root of AST being copied) \n");
  108811             : #if ALT_FIXUP_COPY
  108812             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  108813           0 :           fixupCopy_scopes (result,help);
  108814           0 :           fixupCopy_symbols (result,help);
  108815           0 :           fixupCopy_references (result,help);
  108816             : #else
  108817             :           fixupCopy(result,help);
  108818             : #endif
  108819             :        // Allow this to be called recursively, so accumulate the state.
  108820             :        // Also, clear the state in the SgCopyHelp object.
  108821             :        // help.clearState();
  108822             :         }
  108823             : 
  108824           0 :      return result;
  108825             :    }
  108826             : 
  108827             : 
  108828             : /* #line 108829 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  108829             : 
  108830             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108831             : 
  108832           0 : SgNode* SgComputedGotoStatement::copy ( SgCopyHelp& help) const
  108833             :    {
  108834           0 :      SgComputedGotoStatement* result = NULL;
  108835             : 
  108836             :   // printf ("Copy SgComputedGotoStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  108837             : 
  108838             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  108839             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  108840             :   // The default value of the depth is 0, so after this call the depth is 1!
  108841           0 :      help.incrementDepth();
  108842             : 
  108843             : #if 0
  108844             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  108845             :   // but it is not generally true that things can only be copied once!
  108846             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  108847             :   // AstAttribute* existingAttribute = const_cast<SgComputedGotoStatement*>(this)->attribute["copied"];
  108848             :      bool previouslyCopied = const_cast<SgComputedGotoStatement*>(this)->attribute.exists("copied");
  108849             :      if (previouslyCopied == true)
  108850             :         {
  108851             :           this->get_file_info()->display("Called from copy SgComputedGotoStatement: debug");
  108852             :         }
  108853             :      ROSE_ASSERT(previouslyCopied == false);
  108854             : 
  108855             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  108856             :      AstAttribute* newAttribute = new AstAttribute();
  108857             :      ROSE_ASSERT(newAttribute != NULL);
  108858             : 
  108859             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  108860             :      const_cast<SgComputedGotoStatement*>(this)->attribute.add("copied",newAttribute);
  108861             : #endif
  108862             : 
  108863             :   // Copy data members from base classes
  108864             :   // Copy constructor parameter data member: startOfConstruct_copy
  108865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  108866             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  108867           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  108868           0 :      if ( p_startOfConstruct != NULL ) 
  108869             :         { 
  108870           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  108871             :         } 
  108872             :        else 
  108873             :         { 
  108874             :           startOfConstruct_copy = NULL; 
  108875             :         } 
  108876             :   // Copy constructor parameter data member: labelList_copy
  108877           0 :      SgExprListExp* labelList_copy; 
  108878             :   // case: not a listType for (using conditionalToCopyVariable)labelList
  108879           0 :           if (get_labelList() != NULL) 
  108880             :              { 
  108881           0 :                labelList_copy = static_cast<SgExprListExp*>(help.copyAst(get_labelList())); 
  108882             :              } 
  108883             :             else 
  108884             :              { 
  108885             :                labelList_copy = NULL; 
  108886             :              } 
  108887             :   // Copy constructor parameter data member: label_index_copy
  108888           0 :      SgExpression* label_index_copy; 
  108889             :   // case: not a listType for (using conditionalToCopyVariable)label_index
  108890           0 :           if (get_label_index() != NULL) 
  108891             :              { 
  108892           0 :                label_index_copy = static_cast<SgExpression*>(help.copyAst(get_label_index())); 
  108893             :              } 
  108894             :             else 
  108895             :              { 
  108896             :                label_index_copy = NULL; 
  108897             :              } 
  108898             :  
  108899             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108900             : 
  108901             :   // Build an empty copy of this object (will be filled in, but 
  108902             :   // the parent can't be set and must be set by the caller)
  108903           0 :      result = new SgComputedGotoStatement(  startOfConstruct_copy, labelList_copy, label_index_copy );
  108904           0 :      ROSE_ASSERT(result != NULL);
  108905             : 
  108906             :   // Copy data members of "this" class
  108907             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  108908             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  108909             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  108910           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  108911           0 :      if ( p_endOfConstruct != NULL ) 
  108912             :         { 
  108913           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  108914             :         } 
  108915             :        else 
  108916             :         { 
  108917             :           endOfConstruct_copy = NULL; 
  108918             :         } 
  108919             :   /* check for a valid pointer and delete if present */ 
  108920           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  108921             :   /* add assignment to result here */ 
  108922           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  108923             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  108924             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  108925             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  108926           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  108927           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  108928             :         { 
  108929           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  108930             :         } 
  108931             :        else 
  108932             :         { 
  108933             :           attachedPreprocessingInfoPtr_copy = NULL; 
  108934             :         } 
  108935             :   /* check for a valid pointer and delete if present */ 
  108936           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  108937             :   /* add assignment to result here */ 
  108938           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  108939             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  108940             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  108941             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  108942           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  108943           0 :      if ( p_attributeMechanism != NULL ) 
  108944             :         { 
  108945           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  108946             :         } 
  108947             :        else 
  108948             :         { 
  108949             :           attributeMechanism_copy = NULL; 
  108950             :         } 
  108951             :   /* check for a valid pointer and delete if present */ 
  108952           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  108953             :   /* add assignment to result here */ 
  108954           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  108955             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  108956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  108957             :   // case: toBeCopied == COPY_DATA for numeric_label
  108958           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  108959           0 :      result->p_numeric_label = numeric_label_copy; 
  108960             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  108961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  108962             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  108963           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  108964           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  108965             :   // case: not a listType for (using conditionalToSetParent)labelList
  108966           0 :           if ( (labelList_copy != NULL) && (labelList_copy->get_parent() == NULL) && (isSgType(labelList_copy) == NULL) ) 
  108967             :              { 
  108968           0 :                labelList_copy->set_parent(result); 
  108969             :              } 
  108970             :   // case: not a listType for (using conditionalToSetParent)label_index
  108971           0 :           if ( (label_index_copy != NULL) && (label_index_copy->get_parent() == NULL) && (isSgType(label_index_copy) == NULL) ) 
  108972             :              { 
  108973           0 :                label_index_copy->set_parent(result); 
  108974             :              } 
  108975             : 
  108976             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  108977             : 
  108978             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  108979             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  108980             :   // fixupCopy(result,help);
  108981             : 
  108982             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  108983             :   // the Sg_File_Info objects that are built for the new IR nodes.
  108984           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  108985           0 :      if (locatedNode != NULL)
  108986             :         {
  108987             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  108988           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  108989           0 :           ROSE_ASSERT(start != NULL);
  108990             : #if 0
  108991             :        // Debugging information
  108992             :           if (start->get_parent() == NULL)
  108993             :              {
  108994             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  108995             :              }
  108996             : #endif
  108997           0 :           start->set_parent(locatedNode);
  108998           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  108999             : 
  109000           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  109001             : 
  109002             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  109003             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  109004             :        // ROSE_ASSERT(end != NULL);
  109005           0 :           if (end == NULL)
  109006             :              {
  109007           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  109008             :              }
  109009             :             else
  109010             :              {
  109011             : #if 0
  109012             :             // Debugging information
  109013             :                if (end->get_parent() == NULL)
  109014             :                   {
  109015             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109016             :                   }
  109017             : #endif
  109018           0 :                end->set_parent(locatedNode);
  109019           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  109020             :              }
  109021             : 
  109022           0 :           SgExpression* expression = isSgExpression(result);
  109023           0 :           if (isSgExpression(this) != NULL)
  109024             :              {
  109025           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  109026             : 
  109027             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  109028           0 :                if (operatorPosition != NULL)
  109029             :                   {
  109030             : #if 0
  109031             :                  // Debugging information
  109032             :                     if (operatorPosition->get_parent() == NULL)
  109033             :                        {
  109034             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109035             :                        }
  109036             : #endif
  109037           0 :                     operatorPosition->set_parent(expression);
  109038           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  109039             :                   }
  109040             :              }
  109041             :         }
  109042             : 
  109043             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  109044           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  109045           0 :      if (initializedName != NULL)
  109046             :         {
  109047             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  109048           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  109049           0 :           ROSE_ASSERT(start != NULL);
  109050             : #if 0
  109051             :        // Debugging information
  109052             :           if (start->get_parent() == NULL)
  109053             :              {
  109054             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109055             :              }
  109056             : #endif
  109057           0 :           start->set_parent(initializedName);
  109058           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  109059             : 
  109060             : #if 0
  109061             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  109062             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  109063             : 
  109064             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  109065             :        // ROSE_ASSERT(end != NULL);
  109066             :           if (end == NULL)
  109067             :              {
  109068             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  109069             :              }
  109070             :             else
  109071             :              {
  109072             :                if (end->get_parent() == NULL)
  109073             :                   {
  109074             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109075             :                   }
  109076             :                end->set_parent(initializedName);
  109077             :                ROSE_ASSERT(end->get_parent() != NULL);
  109078             :              }
  109079             : #endif
  109080             :         }
  109081             : 
  109082             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  109083           0 :      help.insertCopiedNodePair(this,result);
  109084             : 
  109085             :   // printf ("End of copy SgComputedGotoStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  109086             : 
  109087             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  109088             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  109089           0 :      help.decrementDepth();
  109090             : 
  109091             :   // Test if this is the root of the copy!
  109092           0 :      if (help.get_depth() == 0)
  109093             :         {
  109094             :        // This is the original calling node.
  109095             : 
  109096             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  109097             :        // printf ("Calling SgComputedGotoStatement::fixupCopy() (from root of AST being copied) \n");
  109098             : #if ALT_FIXUP_COPY
  109099             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  109100           0 :           fixupCopy_scopes (result,help);
  109101           0 :           fixupCopy_symbols (result,help);
  109102           0 :           fixupCopy_references (result,help);
  109103             : #else
  109104             :           fixupCopy(result,help);
  109105             : #endif
  109106             :        // Allow this to be called recursively, so accumulate the state.
  109107             :        // Also, clear the state in the SgCopyHelp object.
  109108             :        // help.clearState();
  109109             :         }
  109110             : 
  109111           0 :      return result;
  109112             :    }
  109113             : 
  109114             : 
  109115             : /* #line 109116 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  109116             : 
  109117             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  109118             : 
  109119           0 : SgNode* SgAssignedGotoStatement::copy ( SgCopyHelp& help) const
  109120             :    {
  109121           0 :      SgAssignedGotoStatement* result = NULL;
  109122             : 
  109123             :   // printf ("Copy SgAssignedGotoStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  109124             : 
  109125             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  109126             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  109127             :   // The default value of the depth is 0, so after this call the depth is 1!
  109128           0 :      help.incrementDepth();
  109129             : 
  109130             : #if 0
  109131             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  109132             :   // but it is not generally true that things can only be copied once!
  109133             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  109134             :   // AstAttribute* existingAttribute = const_cast<SgAssignedGotoStatement*>(this)->attribute["copied"];
  109135             :      bool previouslyCopied = const_cast<SgAssignedGotoStatement*>(this)->attribute.exists("copied");
  109136             :      if (previouslyCopied == true)
  109137             :         {
  109138             :           this->get_file_info()->display("Called from copy SgAssignedGotoStatement: debug");
  109139             :         }
  109140             :      ROSE_ASSERT(previouslyCopied == false);
  109141             : 
  109142             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  109143             :      AstAttribute* newAttribute = new AstAttribute();
  109144             :      ROSE_ASSERT(newAttribute != NULL);
  109145             : 
  109146             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  109147             :      const_cast<SgAssignedGotoStatement*>(this)->attribute.add("copied",newAttribute);
  109148             : #endif
  109149             : 
  109150             :   // Copy data members from base classes
  109151             :   // Copy constructor parameter data member: startOfConstruct_copy
  109152             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  109153             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  109154           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  109155           0 :      if ( p_startOfConstruct != NULL ) 
  109156             :         { 
  109157           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  109158             :         } 
  109159             :        else 
  109160             :         { 
  109161             :           startOfConstruct_copy = NULL; 
  109162             :         } 
  109163             :   // Copy constructor parameter data member: targets_copy
  109164           0 :      SgExprListExp* targets_copy; 
  109165             :   // case: not a listType for (using conditionalToCopyVariable)targets
  109166           0 :           if (get_targets() != NULL) 
  109167             :              { 
  109168           0 :                targets_copy = static_cast<SgExprListExp*>(help.copyAst(get_targets())); 
  109169             :              } 
  109170             :             else 
  109171             :              { 
  109172             :                targets_copy = NULL; 
  109173             :              } 
  109174             :  
  109175             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  109176             : 
  109177             :   // Build an empty copy of this object (will be filled in, but 
  109178             :   // the parent can't be set and must be set by the caller)
  109179           0 :      result = new SgAssignedGotoStatement(  startOfConstruct_copy, targets_copy );
  109180           0 :      ROSE_ASSERT(result != NULL);
  109181             : 
  109182             :   // Copy data members of "this" class
  109183             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  109184             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  109185             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  109186           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  109187           0 :      if ( p_endOfConstruct != NULL ) 
  109188             :         { 
  109189           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  109190             :         } 
  109191             :        else 
  109192             :         { 
  109193             :           endOfConstruct_copy = NULL; 
  109194             :         } 
  109195             :   /* check for a valid pointer and delete if present */ 
  109196           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  109197             :   /* add assignment to result here */ 
  109198           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  109199             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  109200             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  109201             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  109202           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  109203           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  109204             :         { 
  109205           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  109206             :         } 
  109207             :        else 
  109208             :         { 
  109209             :           attachedPreprocessingInfoPtr_copy = NULL; 
  109210             :         } 
  109211             :   /* check for a valid pointer and delete if present */ 
  109212           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  109213             :   /* add assignment to result here */ 
  109214           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  109215             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  109216             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  109217             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  109218           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  109219           0 :      if ( p_attributeMechanism != NULL ) 
  109220             :         { 
  109221           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  109222             :         } 
  109223             :        else 
  109224             :         { 
  109225             :           attributeMechanism_copy = NULL; 
  109226             :         } 
  109227             :   /* check for a valid pointer and delete if present */ 
  109228           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  109229             :   /* add assignment to result here */ 
  109230           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  109231             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  109232             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  109233             :   // case: toBeCopied == COPY_DATA for numeric_label
  109234           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  109235           0 :      result->p_numeric_label = numeric_label_copy; 
  109236             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  109237             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  109238             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  109239           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  109240           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  109241             :   // case: not a listType for (using conditionalToSetParent)targets
  109242           0 :           if ( (targets_copy != NULL) && (targets_copy->get_parent() == NULL) && (isSgType(targets_copy) == NULL) ) 
  109243             :              { 
  109244           0 :                targets_copy->set_parent(result); 
  109245             :              } 
  109246             : 
  109247             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  109248             : 
  109249             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  109250             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  109251             :   // fixupCopy(result,help);
  109252             : 
  109253             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  109254             :   // the Sg_File_Info objects that are built for the new IR nodes.
  109255           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  109256           0 :      if (locatedNode != NULL)
  109257             :         {
  109258             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  109259           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  109260           0 :           ROSE_ASSERT(start != NULL);
  109261             : #if 0
  109262             :        // Debugging information
  109263             :           if (start->get_parent() == NULL)
  109264             :              {
  109265             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109266             :              }
  109267             : #endif
  109268           0 :           start->set_parent(locatedNode);
  109269           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  109270             : 
  109271           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  109272             : 
  109273             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  109274             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  109275             :        // ROSE_ASSERT(end != NULL);
  109276           0 :           if (end == NULL)
  109277             :              {
  109278           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  109279             :              }
  109280             :             else
  109281             :              {
  109282             : #if 0
  109283             :             // Debugging information
  109284             :                if (end->get_parent() == NULL)
  109285             :                   {
  109286             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109287             :                   }
  109288             : #endif
  109289           0 :                end->set_parent(locatedNode);
  109290           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  109291             :              }
  109292             : 
  109293           0 :           SgExpression* expression = isSgExpression(result);
  109294           0 :           if (isSgExpression(this) != NULL)
  109295             :              {
  109296           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  109297             : 
  109298             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  109299           0 :                if (operatorPosition != NULL)
  109300             :                   {
  109301             : #if 0
  109302             :                  // Debugging information
  109303             :                     if (operatorPosition->get_parent() == NULL)
  109304             :                        {
  109305             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109306             :                        }
  109307             : #endif
  109308           0 :                     operatorPosition->set_parent(expression);
  109309           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  109310             :                   }
  109311             :              }
  109312             :         }
  109313             : 
  109314             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  109315           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  109316           0 :      if (initializedName != NULL)
  109317             :         {
  109318             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  109319           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  109320           0 :           ROSE_ASSERT(start != NULL);
  109321             : #if 0
  109322             :        // Debugging information
  109323             :           if (start->get_parent() == NULL)
  109324             :              {
  109325             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109326             :              }
  109327             : #endif
  109328           0 :           start->set_parent(initializedName);
  109329           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  109330             : 
  109331             : #if 0
  109332             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  109333             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  109334             : 
  109335             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  109336             :        // ROSE_ASSERT(end != NULL);
  109337             :           if (end == NULL)
  109338             :              {
  109339             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  109340             :              }
  109341             :             else
  109342             :              {
  109343             :                if (end->get_parent() == NULL)
  109344             :                   {
  109345             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109346             :                   }
  109347             :                end->set_parent(initializedName);
  109348             :                ROSE_ASSERT(end->get_parent() != NULL);
  109349             :              }
  109350             : #endif
  109351             :         }
  109352             : 
  109353             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  109354           0 :      help.insertCopiedNodePair(this,result);
  109355             : 
  109356             :   // printf ("End of copy SgAssignedGotoStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  109357             : 
  109358             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  109359             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  109360           0 :      help.decrementDepth();
  109361             : 
  109362             :   // Test if this is the root of the copy!
  109363           0 :      if (help.get_depth() == 0)
  109364             :         {
  109365             :        // This is the original calling node.
  109366             : 
  109367             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  109368             :        // printf ("Calling SgAssignedGotoStatement::fixupCopy() (from root of AST being copied) \n");
  109369             : #if ALT_FIXUP_COPY
  109370             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  109371           0 :           fixupCopy_scopes (result,help);
  109372           0 :           fixupCopy_symbols (result,help);
  109373           0 :           fixupCopy_references (result,help);
  109374             : #else
  109375             :           fixupCopy(result,help);
  109376             : #endif
  109377             :        // Allow this to be called recursively, so accumulate the state.
  109378             :        // Also, clear the state in the SgCopyHelp object.
  109379             :        // help.clearState();
  109380             :         }
  109381             : 
  109382           0 :      return result;
  109383             :    }
  109384             : 
  109385             : 
  109386             : /* #line 109387 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  109387             : 
  109388             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  109389             : 
  109390           0 : SgNode* SgAllocateStatement::copy ( SgCopyHelp& help) const
  109391             :    {
  109392           0 :      SgAllocateStatement* result = NULL;
  109393             : 
  109394             :   // printf ("Copy SgAllocateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  109395             : 
  109396             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  109397             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  109398             :   // The default value of the depth is 0, so after this call the depth is 1!
  109399           0 :      help.incrementDepth();
  109400             : 
  109401             : #if 0
  109402             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  109403             :   // but it is not generally true that things can only be copied once!
  109404             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  109405             :   // AstAttribute* existingAttribute = const_cast<SgAllocateStatement*>(this)->attribute["copied"];
  109406             :      bool previouslyCopied = const_cast<SgAllocateStatement*>(this)->attribute.exists("copied");
  109407             :      if (previouslyCopied == true)
  109408             :         {
  109409             :           this->get_file_info()->display("Called from copy SgAllocateStatement: debug");
  109410             :         }
  109411             :      ROSE_ASSERT(previouslyCopied == false);
  109412             : 
  109413             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  109414             :      AstAttribute* newAttribute = new AstAttribute();
  109415             :      ROSE_ASSERT(newAttribute != NULL);
  109416             : 
  109417             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  109418             :      const_cast<SgAllocateStatement*>(this)->attribute.add("copied",newAttribute);
  109419             : #endif
  109420             : 
  109421             :   // Copy data members from base classes
  109422             :   // Copy constructor parameter data member: startOfConstruct_copy
  109423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  109424             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  109425           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  109426           0 :      if ( p_startOfConstruct != NULL ) 
  109427             :         { 
  109428           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  109429             :         } 
  109430             :        else 
  109431             :         { 
  109432             :           startOfConstruct_copy = NULL; 
  109433             :         } 
  109434             :  
  109435             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  109436             : 
  109437             :   // Build an empty copy of this object (will be filled in, but 
  109438             :   // the parent can't be set and must be set by the caller)
  109439           0 :      result = new SgAllocateStatement(  startOfConstruct_copy );
  109440           0 :      ROSE_ASSERT(result != NULL);
  109441             : 
  109442             :   // Copy data members of "this" class
  109443             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  109444             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  109445             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  109446           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  109447           0 :      if ( p_endOfConstruct != NULL ) 
  109448             :         { 
  109449           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  109450             :         } 
  109451             :        else 
  109452             :         { 
  109453             :           endOfConstruct_copy = NULL; 
  109454             :         } 
  109455             :   /* check for a valid pointer and delete if present */ 
  109456           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  109457             :   /* add assignment to result here */ 
  109458           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  109459             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  109460             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  109461             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  109462           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  109463           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  109464             :         { 
  109465           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  109466             :         } 
  109467             :        else 
  109468             :         { 
  109469             :           attachedPreprocessingInfoPtr_copy = NULL; 
  109470             :         } 
  109471             :   /* check for a valid pointer and delete if present */ 
  109472           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  109473             :   /* add assignment to result here */ 
  109474           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  109475             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  109476             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  109477             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  109478           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  109479           0 :      if ( p_attributeMechanism != NULL ) 
  109480             :         { 
  109481           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  109482             :         } 
  109483             :        else 
  109484             :         { 
  109485             :           attributeMechanism_copy = NULL; 
  109486             :         } 
  109487             :   /* check for a valid pointer and delete if present */ 
  109488           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  109489             :   /* add assignment to result here */ 
  109490           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  109491             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  109492             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  109493             :   // case: toBeCopied == COPY_DATA for numeric_label
  109494           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  109495           0 :      result->p_numeric_label = numeric_label_copy; 
  109496             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  109497             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  109498             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  109499           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  109500           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  109501             :   // Copy non-constructor parameter data member (access function): expr_list_copy
  109502           0 :      SgExprListExp* expr_list_copy; 
  109503             :   // case: not a listType for (using conditionalToCopyVariable)expr_list
  109504           0 :           if (get_expr_list() != NULL) 
  109505             :              { 
  109506           0 :                expr_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_expr_list())); 
  109507             :              } 
  109508             :             else 
  109509             :              { 
  109510             :                expr_list_copy = NULL; 
  109511             :              } 
  109512             :   /* check for a valid pointer and delete if present */ 
  109513           0 :      if (result->p_expr_list != NULL) delete result->p_expr_list; 
  109514           0 :      result->p_expr_list = expr_list_copy; 
  109515             :   // case: not a listType for (using conditionalToSetParent)expr_list
  109516           0 :           if ( (expr_list_copy != NULL) && (expr_list_copy->get_parent() == NULL) && (isSgType(expr_list_copy) == NULL) ) 
  109517             :              { 
  109518           0 :                expr_list_copy->set_parent(result); 
  109519             :              } 
  109520             :   // Copy non-constructor parameter data member (access function): stat_expression_copy
  109521           0 :      SgExpression* stat_expression_copy; 
  109522             :   // case: not a listType for (using conditionalToCopyVariable)stat_expression
  109523           0 :           if (get_stat_expression() != NULL) 
  109524             :              { 
  109525           0 :                stat_expression_copy = static_cast<SgExpression*>(help.copyAst(get_stat_expression())); 
  109526             :              } 
  109527             :             else 
  109528             :              { 
  109529             :                stat_expression_copy = NULL; 
  109530             :              } 
  109531             :   /* check for a valid pointer and delete if present */ 
  109532           0 :      if (result->p_stat_expression != NULL) delete result->p_stat_expression; 
  109533           0 :      result->p_stat_expression = stat_expression_copy; 
  109534             :   // case: not a listType for (using conditionalToSetParent)stat_expression
  109535           0 :           if ( (stat_expression_copy != NULL) && (stat_expression_copy->get_parent() == NULL) && (isSgType(stat_expression_copy) == NULL) ) 
  109536             :              { 
  109537           0 :                stat_expression_copy->set_parent(result); 
  109538             :              } 
  109539             :   // Copy non-constructor parameter data member (access function): errmsg_expression_copy
  109540           0 :      SgExpression* errmsg_expression_copy; 
  109541             :   // case: not a listType for (using conditionalToCopyVariable)errmsg_expression
  109542           0 :           if (get_errmsg_expression() != NULL) 
  109543             :              { 
  109544           0 :                errmsg_expression_copy = static_cast<SgExpression*>(help.copyAst(get_errmsg_expression())); 
  109545             :              } 
  109546             :             else 
  109547             :              { 
  109548             :                errmsg_expression_copy = NULL; 
  109549             :              } 
  109550             :   /* check for a valid pointer and delete if present */ 
  109551           0 :      if (result->p_errmsg_expression != NULL) delete result->p_errmsg_expression; 
  109552           0 :      result->p_errmsg_expression = errmsg_expression_copy; 
  109553             :   // case: not a listType for (using conditionalToSetParent)errmsg_expression
  109554           0 :           if ( (errmsg_expression_copy != NULL) && (errmsg_expression_copy->get_parent() == NULL) && (isSgType(errmsg_expression_copy) == NULL) ) 
  109555             :              { 
  109556           0 :                errmsg_expression_copy->set_parent(result); 
  109557             :              } 
  109558             :   // Copy non-constructor parameter data member (access function): source_expression_copy
  109559           0 :      SgExpression* source_expression_copy; 
  109560             :   // case: not a listType for (using conditionalToCopyVariable)source_expression
  109561           0 :           if (get_source_expression() != NULL) 
  109562             :              { 
  109563           0 :                source_expression_copy = static_cast<SgExpression*>(help.copyAst(get_source_expression())); 
  109564             :              } 
  109565             :             else 
  109566             :              { 
  109567             :                source_expression_copy = NULL; 
  109568             :              } 
  109569             :   /* check for a valid pointer and delete if present */ 
  109570           0 :      if (result->p_source_expression != NULL) delete result->p_source_expression; 
  109571           0 :      result->p_source_expression = source_expression_copy; 
  109572             :   // case: not a listType for (using conditionalToSetParent)source_expression
  109573           0 :           if ( (source_expression_copy != NULL) && (source_expression_copy->get_parent() == NULL) && (isSgType(source_expression_copy) == NULL) ) 
  109574             :              { 
  109575           0 :                source_expression_copy->set_parent(result); 
  109576             :              } 
  109577             : 
  109578             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  109579             : 
  109580             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  109581             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  109582             :   // fixupCopy(result,help);
  109583             : 
  109584             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  109585             :   // the Sg_File_Info objects that are built for the new IR nodes.
  109586           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  109587           0 :      if (locatedNode != NULL)
  109588             :         {
  109589             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  109590           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  109591           0 :           ROSE_ASSERT(start != NULL);
  109592             : #if 0
  109593             :        // Debugging information
  109594             :           if (start->get_parent() == NULL)
  109595             :              {
  109596             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109597             :              }
  109598             : #endif
  109599           0 :           start->set_parent(locatedNode);
  109600           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  109601             : 
  109602           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  109603             : 
  109604             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  109605             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  109606             :        // ROSE_ASSERT(end != NULL);
  109607           0 :           if (end == NULL)
  109608             :              {
  109609           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  109610             :              }
  109611             :             else
  109612             :              {
  109613             : #if 0
  109614             :             // Debugging information
  109615             :                if (end->get_parent() == NULL)
  109616             :                   {
  109617             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109618             :                   }
  109619             : #endif
  109620           0 :                end->set_parent(locatedNode);
  109621           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  109622             :              }
  109623             : 
  109624           0 :           SgExpression* expression = isSgExpression(result);
  109625           0 :           if (isSgExpression(this) != NULL)
  109626             :              {
  109627           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  109628             : 
  109629             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  109630           0 :                if (operatorPosition != NULL)
  109631             :                   {
  109632             : #if 0
  109633             :                  // Debugging information
  109634             :                     if (operatorPosition->get_parent() == NULL)
  109635             :                        {
  109636             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109637             :                        }
  109638             : #endif
  109639           0 :                     operatorPosition->set_parent(expression);
  109640           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  109641             :                   }
  109642             :              }
  109643             :         }
  109644             : 
  109645             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  109646           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  109647           0 :      if (initializedName != NULL)
  109648             :         {
  109649             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  109650           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  109651           0 :           ROSE_ASSERT(start != NULL);
  109652             : #if 0
  109653             :        // Debugging information
  109654             :           if (start->get_parent() == NULL)
  109655             :              {
  109656             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109657             :              }
  109658             : #endif
  109659           0 :           start->set_parent(initializedName);
  109660           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  109661             : 
  109662             : #if 0
  109663             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  109664             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  109665             : 
  109666             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  109667             :        // ROSE_ASSERT(end != NULL);
  109668             :           if (end == NULL)
  109669             :              {
  109670             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  109671             :              }
  109672             :             else
  109673             :              {
  109674             :                if (end->get_parent() == NULL)
  109675             :                   {
  109676             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109677             :                   }
  109678             :                end->set_parent(initializedName);
  109679             :                ROSE_ASSERT(end->get_parent() != NULL);
  109680             :              }
  109681             : #endif
  109682             :         }
  109683             : 
  109684             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  109685           0 :      help.insertCopiedNodePair(this,result);
  109686             : 
  109687             :   // printf ("End of copy SgAllocateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  109688             : 
  109689             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  109690             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  109691           0 :      help.decrementDepth();
  109692             : 
  109693             :   // Test if this is the root of the copy!
  109694           0 :      if (help.get_depth() == 0)
  109695             :         {
  109696             :        // This is the original calling node.
  109697             : 
  109698             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  109699             :        // printf ("Calling SgAllocateStatement::fixupCopy() (from root of AST being copied) \n");
  109700             : #if ALT_FIXUP_COPY
  109701             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  109702           0 :           fixupCopy_scopes (result,help);
  109703           0 :           fixupCopy_symbols (result,help);
  109704           0 :           fixupCopy_references (result,help);
  109705             : #else
  109706             :           fixupCopy(result,help);
  109707             : #endif
  109708             :        // Allow this to be called recursively, so accumulate the state.
  109709             :        // Also, clear the state in the SgCopyHelp object.
  109710             :        // help.clearState();
  109711             :         }
  109712             : 
  109713           0 :      return result;
  109714             :    }
  109715             : 
  109716             : 
  109717             : /* #line 109718 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  109718             : 
  109719             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  109720             : 
  109721           0 : SgNode* SgDeallocateStatement::copy ( SgCopyHelp& help) const
  109722             :    {
  109723           0 :      SgDeallocateStatement* result = NULL;
  109724             : 
  109725             :   // printf ("Copy SgDeallocateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  109726             : 
  109727             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  109728             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  109729             :   // The default value of the depth is 0, so after this call the depth is 1!
  109730           0 :      help.incrementDepth();
  109731             : 
  109732             : #if 0
  109733             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  109734             :   // but it is not generally true that things can only be copied once!
  109735             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  109736             :   // AstAttribute* existingAttribute = const_cast<SgDeallocateStatement*>(this)->attribute["copied"];
  109737             :      bool previouslyCopied = const_cast<SgDeallocateStatement*>(this)->attribute.exists("copied");
  109738             :      if (previouslyCopied == true)
  109739             :         {
  109740             :           this->get_file_info()->display("Called from copy SgDeallocateStatement: debug");
  109741             :         }
  109742             :      ROSE_ASSERT(previouslyCopied == false);
  109743             : 
  109744             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  109745             :      AstAttribute* newAttribute = new AstAttribute();
  109746             :      ROSE_ASSERT(newAttribute != NULL);
  109747             : 
  109748             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  109749             :      const_cast<SgDeallocateStatement*>(this)->attribute.add("copied",newAttribute);
  109750             : #endif
  109751             : 
  109752             :   // Copy data members from base classes
  109753             :   // Copy constructor parameter data member: startOfConstruct_copy
  109754             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  109755             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  109756           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  109757           0 :      if ( p_startOfConstruct != NULL ) 
  109758             :         { 
  109759           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  109760             :         } 
  109761             :        else 
  109762             :         { 
  109763             :           startOfConstruct_copy = NULL; 
  109764             :         } 
  109765             :  
  109766             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  109767             : 
  109768             :   // Build an empty copy of this object (will be filled in, but 
  109769             :   // the parent can't be set and must be set by the caller)
  109770           0 :      result = new SgDeallocateStatement(  startOfConstruct_copy );
  109771           0 :      ROSE_ASSERT(result != NULL);
  109772             : 
  109773             :   // Copy data members of "this" class
  109774             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  109775             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  109776             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  109777           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  109778           0 :      if ( p_endOfConstruct != NULL ) 
  109779             :         { 
  109780           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  109781             :         } 
  109782             :        else 
  109783             :         { 
  109784             :           endOfConstruct_copy = NULL; 
  109785             :         } 
  109786             :   /* check for a valid pointer and delete if present */ 
  109787           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  109788             :   /* add assignment to result here */ 
  109789           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  109790             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  109791             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  109792             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  109793           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  109794           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  109795             :         { 
  109796           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  109797             :         } 
  109798             :        else 
  109799             :         { 
  109800             :           attachedPreprocessingInfoPtr_copy = NULL; 
  109801             :         } 
  109802             :   /* check for a valid pointer and delete if present */ 
  109803           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  109804             :   /* add assignment to result here */ 
  109805           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  109806             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  109807             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  109808             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  109809           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  109810           0 :      if ( p_attributeMechanism != NULL ) 
  109811             :         { 
  109812           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  109813             :         } 
  109814             :        else 
  109815             :         { 
  109816             :           attributeMechanism_copy = NULL; 
  109817             :         } 
  109818             :   /* check for a valid pointer and delete if present */ 
  109819           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  109820             :   /* add assignment to result here */ 
  109821           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  109822             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  109823             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  109824             :   // case: toBeCopied == COPY_DATA for numeric_label
  109825           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  109826           0 :      result->p_numeric_label = numeric_label_copy; 
  109827             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  109828             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  109829             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  109830           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  109831           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  109832             :   // Copy non-constructor parameter data member (access function): expr_list_copy
  109833           0 :      SgExprListExp* expr_list_copy; 
  109834             :   // case: not a listType for (using conditionalToCopyVariable)expr_list
  109835           0 :           if (get_expr_list() != NULL) 
  109836             :              { 
  109837           0 :                expr_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_expr_list())); 
  109838             :              } 
  109839             :             else 
  109840             :              { 
  109841             :                expr_list_copy = NULL; 
  109842             :              } 
  109843             :   /* check for a valid pointer and delete if present */ 
  109844           0 :      if (result->p_expr_list != NULL) delete result->p_expr_list; 
  109845           0 :      result->p_expr_list = expr_list_copy; 
  109846             :   // case: not a listType for (using conditionalToSetParent)expr_list
  109847           0 :           if ( (expr_list_copy != NULL) && (expr_list_copy->get_parent() == NULL) && (isSgType(expr_list_copy) == NULL) ) 
  109848             :              { 
  109849           0 :                expr_list_copy->set_parent(result); 
  109850             :              } 
  109851             :   // Copy non-constructor parameter data member (access function): stat_expression_copy
  109852           0 :      SgExpression* stat_expression_copy; 
  109853             :   // case: not a listType for (using conditionalToCopyVariable)stat_expression
  109854           0 :           if (get_stat_expression() != NULL) 
  109855             :              { 
  109856           0 :                stat_expression_copy = static_cast<SgExpression*>(help.copyAst(get_stat_expression())); 
  109857             :              } 
  109858             :             else 
  109859             :              { 
  109860             :                stat_expression_copy = NULL; 
  109861             :              } 
  109862             :   /* check for a valid pointer and delete if present */ 
  109863           0 :      if (result->p_stat_expression != NULL) delete result->p_stat_expression; 
  109864           0 :      result->p_stat_expression = stat_expression_copy; 
  109865             :   // case: not a listType for (using conditionalToSetParent)stat_expression
  109866           0 :           if ( (stat_expression_copy != NULL) && (stat_expression_copy->get_parent() == NULL) && (isSgType(stat_expression_copy) == NULL) ) 
  109867             :              { 
  109868           0 :                stat_expression_copy->set_parent(result); 
  109869             :              } 
  109870             :   // Copy non-constructor parameter data member (access function): errmsg_expression_copy
  109871           0 :      SgExpression* errmsg_expression_copy; 
  109872             :   // case: not a listType for (using conditionalToCopyVariable)errmsg_expression
  109873           0 :           if (get_errmsg_expression() != NULL) 
  109874             :              { 
  109875           0 :                errmsg_expression_copy = static_cast<SgExpression*>(help.copyAst(get_errmsg_expression())); 
  109876             :              } 
  109877             :             else 
  109878             :              { 
  109879             :                errmsg_expression_copy = NULL; 
  109880             :              } 
  109881             :   /* check for a valid pointer and delete if present */ 
  109882           0 :      if (result->p_errmsg_expression != NULL) delete result->p_errmsg_expression; 
  109883           0 :      result->p_errmsg_expression = errmsg_expression_copy; 
  109884             :   // case: not a listType for (using conditionalToSetParent)errmsg_expression
  109885           0 :           if ( (errmsg_expression_copy != NULL) && (errmsg_expression_copy->get_parent() == NULL) && (isSgType(errmsg_expression_copy) == NULL) ) 
  109886             :              { 
  109887           0 :                errmsg_expression_copy->set_parent(result); 
  109888             :              } 
  109889             : 
  109890             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  109891             : 
  109892             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  109893             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  109894             :   // fixupCopy(result,help);
  109895             : 
  109896             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  109897             :   // the Sg_File_Info objects that are built for the new IR nodes.
  109898           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  109899           0 :      if (locatedNode != NULL)
  109900             :         {
  109901             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  109902           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  109903           0 :           ROSE_ASSERT(start != NULL);
  109904             : #if 0
  109905             :        // Debugging information
  109906             :           if (start->get_parent() == NULL)
  109907             :              {
  109908             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109909             :              }
  109910             : #endif
  109911           0 :           start->set_parent(locatedNode);
  109912           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  109913             : 
  109914           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  109915             : 
  109916             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  109917             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  109918             :        // ROSE_ASSERT(end != NULL);
  109919           0 :           if (end == NULL)
  109920             :              {
  109921           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  109922             :              }
  109923             :             else
  109924             :              {
  109925             : #if 0
  109926             :             // Debugging information
  109927             :                if (end->get_parent() == NULL)
  109928             :                   {
  109929             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109930             :                   }
  109931             : #endif
  109932           0 :                end->set_parent(locatedNode);
  109933           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  109934             :              }
  109935             : 
  109936           0 :           SgExpression* expression = isSgExpression(result);
  109937           0 :           if (isSgExpression(this) != NULL)
  109938             :              {
  109939           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  109940             : 
  109941             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  109942           0 :                if (operatorPosition != NULL)
  109943             :                   {
  109944             : #if 0
  109945             :                  // Debugging information
  109946             :                     if (operatorPosition->get_parent() == NULL)
  109947             :                        {
  109948             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109949             :                        }
  109950             : #endif
  109951           0 :                     operatorPosition->set_parent(expression);
  109952           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  109953             :                   }
  109954             :              }
  109955             :         }
  109956             : 
  109957             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  109958           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  109959           0 :      if (initializedName != NULL)
  109960             :         {
  109961             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  109962           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  109963           0 :           ROSE_ASSERT(start != NULL);
  109964             : #if 0
  109965             :        // Debugging information
  109966             :           if (start->get_parent() == NULL)
  109967             :              {
  109968             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109969             :              }
  109970             : #endif
  109971           0 :           start->set_parent(initializedName);
  109972           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  109973             : 
  109974             : #if 0
  109975             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  109976             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  109977             : 
  109978             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  109979             :        // ROSE_ASSERT(end != NULL);
  109980             :           if (end == NULL)
  109981             :              {
  109982             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  109983             :              }
  109984             :             else
  109985             :              {
  109986             :                if (end->get_parent() == NULL)
  109987             :                   {
  109988             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  109989             :                   }
  109990             :                end->set_parent(initializedName);
  109991             :                ROSE_ASSERT(end->get_parent() != NULL);
  109992             :              }
  109993             : #endif
  109994             :         }
  109995             : 
  109996             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  109997           0 :      help.insertCopiedNodePair(this,result);
  109998             : 
  109999             :   // printf ("End of copy SgDeallocateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  110000             : 
  110001             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  110002             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  110003           0 :      help.decrementDepth();
  110004             : 
  110005             :   // Test if this is the root of the copy!
  110006           0 :      if (help.get_depth() == 0)
  110007             :         {
  110008             :        // This is the original calling node.
  110009             : 
  110010             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  110011             :        // printf ("Calling SgDeallocateStatement::fixupCopy() (from root of AST being copied) \n");
  110012             : #if ALT_FIXUP_COPY
  110013             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  110014           0 :           fixupCopy_scopes (result,help);
  110015           0 :           fixupCopy_symbols (result,help);
  110016           0 :           fixupCopy_references (result,help);
  110017             : #else
  110018             :           fixupCopy(result,help);
  110019             : #endif
  110020             :        // Allow this to be called recursively, so accumulate the state.
  110021             :        // Also, clear the state in the SgCopyHelp object.
  110022             :        // help.clearState();
  110023             :         }
  110024             : 
  110025           0 :      return result;
  110026             :    }
  110027             : 
  110028             : 
  110029             : /* #line 110030 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  110030             : 
  110031             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110032             : 
  110033           0 : SgNode* SgUpcNotifyStatement::copy ( SgCopyHelp& help) const
  110034             :    {
  110035           0 :      SgUpcNotifyStatement* result = NULL;
  110036             : 
  110037             :   // printf ("Copy SgUpcNotifyStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  110038             : 
  110039             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  110040             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  110041             :   // The default value of the depth is 0, so after this call the depth is 1!
  110042           0 :      help.incrementDepth();
  110043             : 
  110044             : #if 0
  110045             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  110046             :   // but it is not generally true that things can only be copied once!
  110047             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  110048             :   // AstAttribute* existingAttribute = const_cast<SgUpcNotifyStatement*>(this)->attribute["copied"];
  110049             :      bool previouslyCopied = const_cast<SgUpcNotifyStatement*>(this)->attribute.exists("copied");
  110050             :      if (previouslyCopied == true)
  110051             :         {
  110052             :           this->get_file_info()->display("Called from copy SgUpcNotifyStatement: debug");
  110053             :         }
  110054             :      ROSE_ASSERT(previouslyCopied == false);
  110055             : 
  110056             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  110057             :      AstAttribute* newAttribute = new AstAttribute();
  110058             :      ROSE_ASSERT(newAttribute != NULL);
  110059             : 
  110060             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  110061             :      const_cast<SgUpcNotifyStatement*>(this)->attribute.add("copied",newAttribute);
  110062             : #endif
  110063             : 
  110064             :   // Copy data members from base classes
  110065             :   // Copy constructor parameter data member: startOfConstruct_copy
  110066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  110067             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  110068           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  110069           0 :      if ( p_startOfConstruct != NULL ) 
  110070             :         { 
  110071           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  110072             :         } 
  110073             :        else 
  110074             :         { 
  110075             :           startOfConstruct_copy = NULL; 
  110076             :         } 
  110077             :   // Copy constructor parameter data member: notify_expression_copy
  110078           0 :      SgExpression* notify_expression_copy; 
  110079             :   // case: not a listType for (using conditionalToCopyVariable)notify_expression
  110080           0 :           if (get_notify_expression() != NULL) 
  110081             :              { 
  110082           0 :                notify_expression_copy = static_cast<SgExpression*>(help.copyAst(get_notify_expression())); 
  110083             :              } 
  110084             :             else 
  110085             :              { 
  110086             :                notify_expression_copy = NULL; 
  110087             :              } 
  110088             :  
  110089             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110090             : 
  110091             :   // Build an empty copy of this object (will be filled in, but 
  110092             :   // the parent can't be set and must be set by the caller)
  110093           0 :      result = new SgUpcNotifyStatement(  startOfConstruct_copy, notify_expression_copy );
  110094           0 :      ROSE_ASSERT(result != NULL);
  110095             : 
  110096             :   // Copy data members of "this" class
  110097             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  110098             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  110099             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  110100           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  110101           0 :      if ( p_endOfConstruct != NULL ) 
  110102             :         { 
  110103           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  110104             :         } 
  110105             :        else 
  110106             :         { 
  110107             :           endOfConstruct_copy = NULL; 
  110108             :         } 
  110109             :   /* check for a valid pointer and delete if present */ 
  110110           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  110111             :   /* add assignment to result here */ 
  110112           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  110113             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  110114             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  110115             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  110116           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  110117           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  110118             :         { 
  110119           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  110120             :         } 
  110121             :        else 
  110122             :         { 
  110123             :           attachedPreprocessingInfoPtr_copy = NULL; 
  110124             :         } 
  110125             :   /* check for a valid pointer and delete if present */ 
  110126           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  110127             :   /* add assignment to result here */ 
  110128           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  110129             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  110130             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  110131             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  110132           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  110133           0 :      if ( p_attributeMechanism != NULL ) 
  110134             :         { 
  110135           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  110136             :         } 
  110137             :        else 
  110138             :         { 
  110139             :           attributeMechanism_copy = NULL; 
  110140             :         } 
  110141             :   /* check for a valid pointer and delete if present */ 
  110142           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  110143             :   /* add assignment to result here */ 
  110144           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  110145             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  110146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  110147             :   // case: toBeCopied == COPY_DATA for numeric_label
  110148           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  110149           0 :      result->p_numeric_label = numeric_label_copy; 
  110150             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  110151             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  110152             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  110153           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  110154           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  110155             :   // case: not a listType for (using conditionalToSetParent)notify_expression
  110156           0 :           if ( (notify_expression_copy != NULL) && (notify_expression_copy->get_parent() == NULL) && (isSgType(notify_expression_copy) == NULL) ) 
  110157             :              { 
  110158           0 :                notify_expression_copy->set_parent(result); 
  110159             :              } 
  110160             : 
  110161             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110162             : 
  110163             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  110164             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  110165             :   // fixupCopy(result,help);
  110166             : 
  110167             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  110168             :   // the Sg_File_Info objects that are built for the new IR nodes.
  110169           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  110170           0 :      if (locatedNode != NULL)
  110171             :         {
  110172             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  110173           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  110174           0 :           ROSE_ASSERT(start != NULL);
  110175             : #if 0
  110176             :        // Debugging information
  110177             :           if (start->get_parent() == NULL)
  110178             :              {
  110179             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110180             :              }
  110181             : #endif
  110182           0 :           start->set_parent(locatedNode);
  110183           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  110184             : 
  110185           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  110186             : 
  110187             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  110188             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  110189             :        // ROSE_ASSERT(end != NULL);
  110190           0 :           if (end == NULL)
  110191             :              {
  110192           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  110193             :              }
  110194             :             else
  110195             :              {
  110196             : #if 0
  110197             :             // Debugging information
  110198             :                if (end->get_parent() == NULL)
  110199             :                   {
  110200             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110201             :                   }
  110202             : #endif
  110203           0 :                end->set_parent(locatedNode);
  110204           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  110205             :              }
  110206             : 
  110207           0 :           SgExpression* expression = isSgExpression(result);
  110208           0 :           if (isSgExpression(this) != NULL)
  110209             :              {
  110210           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  110211             : 
  110212             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  110213           0 :                if (operatorPosition != NULL)
  110214             :                   {
  110215             : #if 0
  110216             :                  // Debugging information
  110217             :                     if (operatorPosition->get_parent() == NULL)
  110218             :                        {
  110219             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110220             :                        }
  110221             : #endif
  110222           0 :                     operatorPosition->set_parent(expression);
  110223           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  110224             :                   }
  110225             :              }
  110226             :         }
  110227             : 
  110228             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  110229           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  110230           0 :      if (initializedName != NULL)
  110231             :         {
  110232             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  110233           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  110234           0 :           ROSE_ASSERT(start != NULL);
  110235             : #if 0
  110236             :        // Debugging information
  110237             :           if (start->get_parent() == NULL)
  110238             :              {
  110239             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110240             :              }
  110241             : #endif
  110242           0 :           start->set_parent(initializedName);
  110243           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  110244             : 
  110245             : #if 0
  110246             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  110247             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  110248             : 
  110249             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  110250             :        // ROSE_ASSERT(end != NULL);
  110251             :           if (end == NULL)
  110252             :              {
  110253             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  110254             :              }
  110255             :             else
  110256             :              {
  110257             :                if (end->get_parent() == NULL)
  110258             :                   {
  110259             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110260             :                   }
  110261             :                end->set_parent(initializedName);
  110262             :                ROSE_ASSERT(end->get_parent() != NULL);
  110263             :              }
  110264             : #endif
  110265             :         }
  110266             : 
  110267             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  110268           0 :      help.insertCopiedNodePair(this,result);
  110269             : 
  110270             :   // printf ("End of copy SgUpcNotifyStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  110271             : 
  110272             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  110273             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  110274           0 :      help.decrementDepth();
  110275             : 
  110276             :   // Test if this is the root of the copy!
  110277           0 :      if (help.get_depth() == 0)
  110278             :         {
  110279             :        // This is the original calling node.
  110280             : 
  110281             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  110282             :        // printf ("Calling SgUpcNotifyStatement::fixupCopy() (from root of AST being copied) \n");
  110283             : #if ALT_FIXUP_COPY
  110284             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  110285           0 :           fixupCopy_scopes (result,help);
  110286           0 :           fixupCopy_symbols (result,help);
  110287           0 :           fixupCopy_references (result,help);
  110288             : #else
  110289             :           fixupCopy(result,help);
  110290             : #endif
  110291             :        // Allow this to be called recursively, so accumulate the state.
  110292             :        // Also, clear the state in the SgCopyHelp object.
  110293             :        // help.clearState();
  110294             :         }
  110295             : 
  110296           0 :      return result;
  110297             :    }
  110298             : 
  110299             : 
  110300             : /* #line 110301 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  110301             : 
  110302             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110303             : 
  110304           0 : SgNode* SgUpcWaitStatement::copy ( SgCopyHelp& help) const
  110305             :    {
  110306           0 :      SgUpcWaitStatement* result = NULL;
  110307             : 
  110308             :   // printf ("Copy SgUpcWaitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  110309             : 
  110310             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  110311             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  110312             :   // The default value of the depth is 0, so after this call the depth is 1!
  110313           0 :      help.incrementDepth();
  110314             : 
  110315             : #if 0
  110316             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  110317             :   // but it is not generally true that things can only be copied once!
  110318             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  110319             :   // AstAttribute* existingAttribute = const_cast<SgUpcWaitStatement*>(this)->attribute["copied"];
  110320             :      bool previouslyCopied = const_cast<SgUpcWaitStatement*>(this)->attribute.exists("copied");
  110321             :      if (previouslyCopied == true)
  110322             :         {
  110323             :           this->get_file_info()->display("Called from copy SgUpcWaitStatement: debug");
  110324             :         }
  110325             :      ROSE_ASSERT(previouslyCopied == false);
  110326             : 
  110327             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  110328             :      AstAttribute* newAttribute = new AstAttribute();
  110329             :      ROSE_ASSERT(newAttribute != NULL);
  110330             : 
  110331             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  110332             :      const_cast<SgUpcWaitStatement*>(this)->attribute.add("copied",newAttribute);
  110333             : #endif
  110334             : 
  110335             :   // Copy data members from base classes
  110336             :   // Copy constructor parameter data member: startOfConstruct_copy
  110337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  110338             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  110339           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  110340           0 :      if ( p_startOfConstruct != NULL ) 
  110341             :         { 
  110342           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  110343             :         } 
  110344             :        else 
  110345             :         { 
  110346             :           startOfConstruct_copy = NULL; 
  110347             :         } 
  110348             :   // Copy constructor parameter data member: wait_expression_copy
  110349           0 :      SgExpression* wait_expression_copy; 
  110350             :   // case: not a listType for (using conditionalToCopyVariable)wait_expression
  110351           0 :           if (get_wait_expression() != NULL) 
  110352             :              { 
  110353           0 :                wait_expression_copy = static_cast<SgExpression*>(help.copyAst(get_wait_expression())); 
  110354             :              } 
  110355             :             else 
  110356             :              { 
  110357             :                wait_expression_copy = NULL; 
  110358             :              } 
  110359             :  
  110360             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110361             : 
  110362             :   // Build an empty copy of this object (will be filled in, but 
  110363             :   // the parent can't be set and must be set by the caller)
  110364           0 :      result = new SgUpcWaitStatement(  startOfConstruct_copy, wait_expression_copy );
  110365           0 :      ROSE_ASSERT(result != NULL);
  110366             : 
  110367             :   // Copy data members of "this" class
  110368             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  110369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  110370             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  110371           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  110372           0 :      if ( p_endOfConstruct != NULL ) 
  110373             :         { 
  110374           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  110375             :         } 
  110376             :        else 
  110377             :         { 
  110378             :           endOfConstruct_copy = NULL; 
  110379             :         } 
  110380             :   /* check for a valid pointer and delete if present */ 
  110381           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  110382             :   /* add assignment to result here */ 
  110383           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  110384             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  110385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  110386             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  110387           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  110388           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  110389             :         { 
  110390           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  110391             :         } 
  110392             :        else 
  110393             :         { 
  110394             :           attachedPreprocessingInfoPtr_copy = NULL; 
  110395             :         } 
  110396             :   /* check for a valid pointer and delete if present */ 
  110397           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  110398             :   /* add assignment to result here */ 
  110399           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  110400             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  110401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  110402             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  110403           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  110404           0 :      if ( p_attributeMechanism != NULL ) 
  110405             :         { 
  110406           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  110407             :         } 
  110408             :        else 
  110409             :         { 
  110410             :           attributeMechanism_copy = NULL; 
  110411             :         } 
  110412             :   /* check for a valid pointer and delete if present */ 
  110413           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  110414             :   /* add assignment to result here */ 
  110415           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  110416             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  110417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  110418             :   // case: toBeCopied == COPY_DATA for numeric_label
  110419           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  110420           0 :      result->p_numeric_label = numeric_label_copy; 
  110421             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  110422             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  110423             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  110424           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  110425           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  110426             :   // case: not a listType for (using conditionalToSetParent)wait_expression
  110427           0 :           if ( (wait_expression_copy != NULL) && (wait_expression_copy->get_parent() == NULL) && (isSgType(wait_expression_copy) == NULL) ) 
  110428             :              { 
  110429           0 :                wait_expression_copy->set_parent(result); 
  110430             :              } 
  110431             : 
  110432             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110433             : 
  110434             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  110435             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  110436             :   // fixupCopy(result,help);
  110437             : 
  110438             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  110439             :   // the Sg_File_Info objects that are built for the new IR nodes.
  110440           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  110441           0 :      if (locatedNode != NULL)
  110442             :         {
  110443             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  110444           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  110445           0 :           ROSE_ASSERT(start != NULL);
  110446             : #if 0
  110447             :        // Debugging information
  110448             :           if (start->get_parent() == NULL)
  110449             :              {
  110450             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110451             :              }
  110452             : #endif
  110453           0 :           start->set_parent(locatedNode);
  110454           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  110455             : 
  110456           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  110457             : 
  110458             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  110459             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  110460             :        // ROSE_ASSERT(end != NULL);
  110461           0 :           if (end == NULL)
  110462             :              {
  110463           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  110464             :              }
  110465             :             else
  110466             :              {
  110467             : #if 0
  110468             :             // Debugging information
  110469             :                if (end->get_parent() == NULL)
  110470             :                   {
  110471             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110472             :                   }
  110473             : #endif
  110474           0 :                end->set_parent(locatedNode);
  110475           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  110476             :              }
  110477             : 
  110478           0 :           SgExpression* expression = isSgExpression(result);
  110479           0 :           if (isSgExpression(this) != NULL)
  110480             :              {
  110481           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  110482             : 
  110483             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  110484           0 :                if (operatorPosition != NULL)
  110485             :                   {
  110486             : #if 0
  110487             :                  // Debugging information
  110488             :                     if (operatorPosition->get_parent() == NULL)
  110489             :                        {
  110490             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110491             :                        }
  110492             : #endif
  110493           0 :                     operatorPosition->set_parent(expression);
  110494           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  110495             :                   }
  110496             :              }
  110497             :         }
  110498             : 
  110499             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  110500           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  110501           0 :      if (initializedName != NULL)
  110502             :         {
  110503             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  110504           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  110505           0 :           ROSE_ASSERT(start != NULL);
  110506             : #if 0
  110507             :        // Debugging information
  110508             :           if (start->get_parent() == NULL)
  110509             :              {
  110510             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110511             :              }
  110512             : #endif
  110513           0 :           start->set_parent(initializedName);
  110514           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  110515             : 
  110516             : #if 0
  110517             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  110518             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  110519             : 
  110520             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  110521             :        // ROSE_ASSERT(end != NULL);
  110522             :           if (end == NULL)
  110523             :              {
  110524             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  110525             :              }
  110526             :             else
  110527             :              {
  110528             :                if (end->get_parent() == NULL)
  110529             :                   {
  110530             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110531             :                   }
  110532             :                end->set_parent(initializedName);
  110533             :                ROSE_ASSERT(end->get_parent() != NULL);
  110534             :              }
  110535             : #endif
  110536             :         }
  110537             : 
  110538             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  110539           0 :      help.insertCopiedNodePair(this,result);
  110540             : 
  110541             :   // printf ("End of copy SgUpcWaitStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  110542             : 
  110543             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  110544             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  110545           0 :      help.decrementDepth();
  110546             : 
  110547             :   // Test if this is the root of the copy!
  110548           0 :      if (help.get_depth() == 0)
  110549             :         {
  110550             :        // This is the original calling node.
  110551             : 
  110552             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  110553             :        // printf ("Calling SgUpcWaitStatement::fixupCopy() (from root of AST being copied) \n");
  110554             : #if ALT_FIXUP_COPY
  110555             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  110556           0 :           fixupCopy_scopes (result,help);
  110557           0 :           fixupCopy_symbols (result,help);
  110558           0 :           fixupCopy_references (result,help);
  110559             : #else
  110560             :           fixupCopy(result,help);
  110561             : #endif
  110562             :        // Allow this to be called recursively, so accumulate the state.
  110563             :        // Also, clear the state in the SgCopyHelp object.
  110564             :        // help.clearState();
  110565             :         }
  110566             : 
  110567           0 :      return result;
  110568             :    }
  110569             : 
  110570             : 
  110571             : /* #line 110572 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  110572             : 
  110573             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110574             : 
  110575           0 : SgNode* SgUpcBarrierStatement::copy ( SgCopyHelp& help) const
  110576             :    {
  110577           0 :      SgUpcBarrierStatement* result = NULL;
  110578             : 
  110579             :   // printf ("Copy SgUpcBarrierStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  110580             : 
  110581             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  110582             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  110583             :   // The default value of the depth is 0, so after this call the depth is 1!
  110584           0 :      help.incrementDepth();
  110585             : 
  110586             : #if 0
  110587             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  110588             :   // but it is not generally true that things can only be copied once!
  110589             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  110590             :   // AstAttribute* existingAttribute = const_cast<SgUpcBarrierStatement*>(this)->attribute["copied"];
  110591             :      bool previouslyCopied = const_cast<SgUpcBarrierStatement*>(this)->attribute.exists("copied");
  110592             :      if (previouslyCopied == true)
  110593             :         {
  110594             :           this->get_file_info()->display("Called from copy SgUpcBarrierStatement: debug");
  110595             :         }
  110596             :      ROSE_ASSERT(previouslyCopied == false);
  110597             : 
  110598             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  110599             :      AstAttribute* newAttribute = new AstAttribute();
  110600             :      ROSE_ASSERT(newAttribute != NULL);
  110601             : 
  110602             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  110603             :      const_cast<SgUpcBarrierStatement*>(this)->attribute.add("copied",newAttribute);
  110604             : #endif
  110605             : 
  110606             :   // Copy data members from base classes
  110607             :   // Copy constructor parameter data member: startOfConstruct_copy
  110608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  110609             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  110610           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  110611           0 :      if ( p_startOfConstruct != NULL ) 
  110612             :         { 
  110613           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  110614             :         } 
  110615             :        else 
  110616             :         { 
  110617             :           startOfConstruct_copy = NULL; 
  110618             :         } 
  110619             :   // Copy constructor parameter data member: barrier_expression_copy
  110620           0 :      SgExpression* barrier_expression_copy; 
  110621             :   // case: not a listType for (using conditionalToCopyVariable)barrier_expression
  110622           0 :           if (get_barrier_expression() != NULL) 
  110623             :              { 
  110624           0 :                barrier_expression_copy = static_cast<SgExpression*>(help.copyAst(get_barrier_expression())); 
  110625             :              } 
  110626             :             else 
  110627             :              { 
  110628             :                barrier_expression_copy = NULL; 
  110629             :              } 
  110630             :  
  110631             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110632             : 
  110633             :   // Build an empty copy of this object (will be filled in, but 
  110634             :   // the parent can't be set and must be set by the caller)
  110635           0 :      result = new SgUpcBarrierStatement(  startOfConstruct_copy, barrier_expression_copy );
  110636           0 :      ROSE_ASSERT(result != NULL);
  110637             : 
  110638             :   // Copy data members of "this" class
  110639             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  110640             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  110641             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  110642           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  110643           0 :      if ( p_endOfConstruct != NULL ) 
  110644             :         { 
  110645           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  110646             :         } 
  110647             :        else 
  110648             :         { 
  110649             :           endOfConstruct_copy = NULL; 
  110650             :         } 
  110651             :   /* check for a valid pointer and delete if present */ 
  110652           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  110653             :   /* add assignment to result here */ 
  110654           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  110655             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  110656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  110657             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  110658           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  110659           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  110660             :         { 
  110661           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  110662             :         } 
  110663             :        else 
  110664             :         { 
  110665             :           attachedPreprocessingInfoPtr_copy = NULL; 
  110666             :         } 
  110667             :   /* check for a valid pointer and delete if present */ 
  110668           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  110669             :   /* add assignment to result here */ 
  110670           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  110671             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  110672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  110673             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  110674           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  110675           0 :      if ( p_attributeMechanism != NULL ) 
  110676             :         { 
  110677           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  110678             :         } 
  110679             :        else 
  110680             :         { 
  110681             :           attributeMechanism_copy = NULL; 
  110682             :         } 
  110683             :   /* check for a valid pointer and delete if present */ 
  110684           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  110685             :   /* add assignment to result here */ 
  110686           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  110687             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  110688             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  110689             :   // case: toBeCopied == COPY_DATA for numeric_label
  110690           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  110691           0 :      result->p_numeric_label = numeric_label_copy; 
  110692             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  110693             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  110694             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  110695           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  110696           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  110697             :   // case: not a listType for (using conditionalToSetParent)barrier_expression
  110698           0 :           if ( (barrier_expression_copy != NULL) && (barrier_expression_copy->get_parent() == NULL) && (isSgType(barrier_expression_copy) == NULL) ) 
  110699             :              { 
  110700           0 :                barrier_expression_copy->set_parent(result); 
  110701             :              } 
  110702             : 
  110703             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110704             : 
  110705             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  110706             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  110707             :   // fixupCopy(result,help);
  110708             : 
  110709             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  110710             :   // the Sg_File_Info objects that are built for the new IR nodes.
  110711           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  110712           0 :      if (locatedNode != NULL)
  110713             :         {
  110714             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  110715           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  110716           0 :           ROSE_ASSERT(start != NULL);
  110717             : #if 0
  110718             :        // Debugging information
  110719             :           if (start->get_parent() == NULL)
  110720             :              {
  110721             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110722             :              }
  110723             : #endif
  110724           0 :           start->set_parent(locatedNode);
  110725           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  110726             : 
  110727           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  110728             : 
  110729             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  110730             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  110731             :        // ROSE_ASSERT(end != NULL);
  110732           0 :           if (end == NULL)
  110733             :              {
  110734           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  110735             :              }
  110736             :             else
  110737             :              {
  110738             : #if 0
  110739             :             // Debugging information
  110740             :                if (end->get_parent() == NULL)
  110741             :                   {
  110742             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110743             :                   }
  110744             : #endif
  110745           0 :                end->set_parent(locatedNode);
  110746           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  110747             :              }
  110748             : 
  110749           0 :           SgExpression* expression = isSgExpression(result);
  110750           0 :           if (isSgExpression(this) != NULL)
  110751             :              {
  110752           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  110753             : 
  110754             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  110755           0 :                if (operatorPosition != NULL)
  110756             :                   {
  110757             : #if 0
  110758             :                  // Debugging information
  110759             :                     if (operatorPosition->get_parent() == NULL)
  110760             :                        {
  110761             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110762             :                        }
  110763             : #endif
  110764           0 :                     operatorPosition->set_parent(expression);
  110765           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  110766             :                   }
  110767             :              }
  110768             :         }
  110769             : 
  110770             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  110771           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  110772           0 :      if (initializedName != NULL)
  110773             :         {
  110774             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  110775           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  110776           0 :           ROSE_ASSERT(start != NULL);
  110777             : #if 0
  110778             :        // Debugging information
  110779             :           if (start->get_parent() == NULL)
  110780             :              {
  110781             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110782             :              }
  110783             : #endif
  110784           0 :           start->set_parent(initializedName);
  110785           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  110786             : 
  110787             : #if 0
  110788             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  110789             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  110790             : 
  110791             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  110792             :        // ROSE_ASSERT(end != NULL);
  110793             :           if (end == NULL)
  110794             :              {
  110795             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  110796             :              }
  110797             :             else
  110798             :              {
  110799             :                if (end->get_parent() == NULL)
  110800             :                   {
  110801             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110802             :                   }
  110803             :                end->set_parent(initializedName);
  110804             :                ROSE_ASSERT(end->get_parent() != NULL);
  110805             :              }
  110806             : #endif
  110807             :         }
  110808             : 
  110809             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  110810           0 :      help.insertCopiedNodePair(this,result);
  110811             : 
  110812             :   // printf ("End of copy SgUpcBarrierStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  110813             : 
  110814             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  110815             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  110816           0 :      help.decrementDepth();
  110817             : 
  110818             :   // Test if this is the root of the copy!
  110819           0 :      if (help.get_depth() == 0)
  110820             :         {
  110821             :        // This is the original calling node.
  110822             : 
  110823             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  110824             :        // printf ("Calling SgUpcBarrierStatement::fixupCopy() (from root of AST being copied) \n");
  110825             : #if ALT_FIXUP_COPY
  110826             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  110827           0 :           fixupCopy_scopes (result,help);
  110828           0 :           fixupCopy_symbols (result,help);
  110829           0 :           fixupCopy_references (result,help);
  110830             : #else
  110831             :           fixupCopy(result,help);
  110832             : #endif
  110833             :        // Allow this to be called recursively, so accumulate the state.
  110834             :        // Also, clear the state in the SgCopyHelp object.
  110835             :        // help.clearState();
  110836             :         }
  110837             : 
  110838           0 :      return result;
  110839             :    }
  110840             : 
  110841             : 
  110842             : /* #line 110843 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  110843             : 
  110844             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110845             : 
  110846           0 : SgNode* SgUpcFenceStatement::copy ( SgCopyHelp& help) const
  110847             :    {
  110848           0 :      SgUpcFenceStatement* result = NULL;
  110849             : 
  110850             :   // printf ("Copy SgUpcFenceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  110851             : 
  110852             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  110853             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  110854             :   // The default value of the depth is 0, so after this call the depth is 1!
  110855           0 :      help.incrementDepth();
  110856             : 
  110857             : #if 0
  110858             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  110859             :   // but it is not generally true that things can only be copied once!
  110860             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  110861             :   // AstAttribute* existingAttribute = const_cast<SgUpcFenceStatement*>(this)->attribute["copied"];
  110862             :      bool previouslyCopied = const_cast<SgUpcFenceStatement*>(this)->attribute.exists("copied");
  110863             :      if (previouslyCopied == true)
  110864             :         {
  110865             :           this->get_file_info()->display("Called from copy SgUpcFenceStatement: debug");
  110866             :         }
  110867             :      ROSE_ASSERT(previouslyCopied == false);
  110868             : 
  110869             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  110870             :      AstAttribute* newAttribute = new AstAttribute();
  110871             :      ROSE_ASSERT(newAttribute != NULL);
  110872             : 
  110873             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  110874             :      const_cast<SgUpcFenceStatement*>(this)->attribute.add("copied",newAttribute);
  110875             : #endif
  110876             : 
  110877             :   // Copy data members from base classes
  110878             :   // Copy constructor parameter data member: startOfConstruct_copy
  110879             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  110880             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  110881           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  110882           0 :      if ( p_startOfConstruct != NULL ) 
  110883             :         { 
  110884           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  110885             :         } 
  110886             :        else 
  110887             :         { 
  110888             :           startOfConstruct_copy = NULL; 
  110889             :         } 
  110890             :  
  110891             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110892             : 
  110893             :   // Build an empty copy of this object (will be filled in, but 
  110894             :   // the parent can't be set and must be set by the caller)
  110895           0 :      result = new SgUpcFenceStatement(  startOfConstruct_copy );
  110896           0 :      ROSE_ASSERT(result != NULL);
  110897             : 
  110898             :   // Copy data members of "this" class
  110899             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  110900             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  110901             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  110902           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  110903           0 :      if ( p_endOfConstruct != NULL ) 
  110904             :         { 
  110905           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  110906             :         } 
  110907             :        else 
  110908             :         { 
  110909             :           endOfConstruct_copy = NULL; 
  110910             :         } 
  110911             :   /* check for a valid pointer and delete if present */ 
  110912           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  110913             :   /* add assignment to result here */ 
  110914           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  110915             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  110916             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  110917             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  110918           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  110919           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  110920             :         { 
  110921           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  110922             :         } 
  110923             :        else 
  110924             :         { 
  110925             :           attachedPreprocessingInfoPtr_copy = NULL; 
  110926             :         } 
  110927             :   /* check for a valid pointer and delete if present */ 
  110928           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  110929             :   /* add assignment to result here */ 
  110930           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  110931             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  110932             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  110933             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  110934           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  110935           0 :      if ( p_attributeMechanism != NULL ) 
  110936             :         { 
  110937           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  110938             :         } 
  110939             :        else 
  110940             :         { 
  110941             :           attributeMechanism_copy = NULL; 
  110942             :         } 
  110943             :   /* check for a valid pointer and delete if present */ 
  110944           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  110945             :   /* add assignment to result here */ 
  110946           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  110947             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  110948             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  110949             :   // case: toBeCopied == COPY_DATA for numeric_label
  110950           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  110951           0 :      result->p_numeric_label = numeric_label_copy; 
  110952             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  110953             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  110954             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  110955           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  110956           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  110957             : 
  110958             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  110959             : 
  110960             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  110961             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  110962             :   // fixupCopy(result,help);
  110963             : 
  110964             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  110965             :   // the Sg_File_Info objects that are built for the new IR nodes.
  110966           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  110967           0 :      if (locatedNode != NULL)
  110968             :         {
  110969             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  110970           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  110971           0 :           ROSE_ASSERT(start != NULL);
  110972             : #if 0
  110973             :        // Debugging information
  110974             :           if (start->get_parent() == NULL)
  110975             :              {
  110976             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110977             :              }
  110978             : #endif
  110979           0 :           start->set_parent(locatedNode);
  110980           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  110981             : 
  110982           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  110983             : 
  110984             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  110985             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  110986             :        // ROSE_ASSERT(end != NULL);
  110987           0 :           if (end == NULL)
  110988             :              {
  110989           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  110990             :              }
  110991             :             else
  110992             :              {
  110993             : #if 0
  110994             :             // Debugging information
  110995             :                if (end->get_parent() == NULL)
  110996             :                   {
  110997             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  110998             :                   }
  110999             : #endif
  111000           0 :                end->set_parent(locatedNode);
  111001           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  111002             :              }
  111003             : 
  111004           0 :           SgExpression* expression = isSgExpression(result);
  111005           0 :           if (isSgExpression(this) != NULL)
  111006             :              {
  111007           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  111008             : 
  111009             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  111010           0 :                if (operatorPosition != NULL)
  111011             :                   {
  111012             : #if 0
  111013             :                  // Debugging information
  111014             :                     if (operatorPosition->get_parent() == NULL)
  111015             :                        {
  111016             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111017             :                        }
  111018             : #endif
  111019           0 :                     operatorPosition->set_parent(expression);
  111020           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  111021             :                   }
  111022             :              }
  111023             :         }
  111024             : 
  111025             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  111026           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  111027           0 :      if (initializedName != NULL)
  111028             :         {
  111029             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  111030           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  111031           0 :           ROSE_ASSERT(start != NULL);
  111032             : #if 0
  111033             :        // Debugging information
  111034             :           if (start->get_parent() == NULL)
  111035             :              {
  111036             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111037             :              }
  111038             : #endif
  111039           0 :           start->set_parent(initializedName);
  111040           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  111041             : 
  111042             : #if 0
  111043             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  111044             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  111045             : 
  111046             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  111047             :        // ROSE_ASSERT(end != NULL);
  111048             :           if (end == NULL)
  111049             :              {
  111050             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  111051             :              }
  111052             :             else
  111053             :              {
  111054             :                if (end->get_parent() == NULL)
  111055             :                   {
  111056             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111057             :                   }
  111058             :                end->set_parent(initializedName);
  111059             :                ROSE_ASSERT(end->get_parent() != NULL);
  111060             :              }
  111061             : #endif
  111062             :         }
  111063             : 
  111064             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  111065           0 :      help.insertCopiedNodePair(this,result);
  111066             : 
  111067             :   // printf ("End of copy SgUpcFenceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  111068             : 
  111069             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  111070             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  111071           0 :      help.decrementDepth();
  111072             : 
  111073             :   // Test if this is the root of the copy!
  111074           0 :      if (help.get_depth() == 0)
  111075             :         {
  111076             :        // This is the original calling node.
  111077             : 
  111078             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  111079             :        // printf ("Calling SgUpcFenceStatement::fixupCopy() (from root of AST being copied) \n");
  111080             : #if ALT_FIXUP_COPY
  111081             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  111082           0 :           fixupCopy_scopes (result,help);
  111083           0 :           fixupCopy_symbols (result,help);
  111084           0 :           fixupCopy_references (result,help);
  111085             : #else
  111086             :           fixupCopy(result,help);
  111087             : #endif
  111088             :        // Allow this to be called recursively, so accumulate the state.
  111089             :        // Also, clear the state in the SgCopyHelp object.
  111090             :        // help.clearState();
  111091             :         }
  111092             : 
  111093           0 :      return result;
  111094             :    }
  111095             : 
  111096             : 
  111097             : /* #line 111098 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  111098             : 
  111099             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111100             : 
  111101           0 : SgNode* SgUpirBaseStatement::copy ( SgCopyHelp& help) const
  111102             :    {
  111103           0 :      SgUpirBaseStatement* result = NULL;
  111104             : 
  111105             :   // printf ("Copy SgUpirBaseStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  111106             : 
  111107             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  111108             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  111109             :   // The default value of the depth is 0, so after this call the depth is 1!
  111110           0 :      help.incrementDepth();
  111111             : 
  111112             : #if 0
  111113             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  111114             :   // but it is not generally true that things can only be copied once!
  111115             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  111116             :   // AstAttribute* existingAttribute = const_cast<SgUpirBaseStatement*>(this)->attribute["copied"];
  111117             :      bool previouslyCopied = const_cast<SgUpirBaseStatement*>(this)->attribute.exists("copied");
  111118             :      if (previouslyCopied == true)
  111119             :         {
  111120             :           this->get_file_info()->display("Called from copy SgUpirBaseStatement: debug");
  111121             :         }
  111122             :      ROSE_ASSERT(previouslyCopied == false);
  111123             : 
  111124             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  111125             :      AstAttribute* newAttribute = new AstAttribute();
  111126             :      ROSE_ASSERT(newAttribute != NULL);
  111127             : 
  111128             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  111129             :      const_cast<SgUpirBaseStatement*>(this)->attribute.add("copied",newAttribute);
  111130             : #endif
  111131             : 
  111132             :   // Copy data members from base classes
  111133             :   // Copy constructor parameter data member: startOfConstruct_copy
  111134             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  111135             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  111136           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  111137           0 :      if ( p_startOfConstruct != NULL ) 
  111138             :         { 
  111139           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  111140             :         } 
  111141             :        else 
  111142             :         { 
  111143             :           startOfConstruct_copy = NULL; 
  111144             :         } 
  111145             :  
  111146             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111147             : 
  111148             :   // Build an empty copy of this object (will be filled in, but 
  111149             :   // the parent can't be set and must be set by the caller)
  111150           0 :      result = new SgUpirBaseStatement(  startOfConstruct_copy );
  111151           0 :      ROSE_ASSERT(result != NULL);
  111152             : 
  111153             :   // Copy data members of "this" class
  111154             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  111155             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  111156             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  111157           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  111158           0 :      if ( p_endOfConstruct != NULL ) 
  111159             :         { 
  111160           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  111161             :         } 
  111162             :        else 
  111163             :         { 
  111164             :           endOfConstruct_copy = NULL; 
  111165             :         } 
  111166             :   /* check for a valid pointer and delete if present */ 
  111167           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  111168             :   /* add assignment to result here */ 
  111169           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  111170             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  111171             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  111172             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  111173           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  111174           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  111175             :         { 
  111176           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  111177             :         } 
  111178             :        else 
  111179             :         { 
  111180             :           attachedPreprocessingInfoPtr_copy = NULL; 
  111181             :         } 
  111182             :   /* check for a valid pointer and delete if present */ 
  111183           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  111184             :   /* add assignment to result here */ 
  111185           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  111186             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  111187             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  111188             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  111189           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  111190           0 :      if ( p_attributeMechanism != NULL ) 
  111191             :         { 
  111192           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  111193             :         } 
  111194             :        else 
  111195             :         { 
  111196             :           attributeMechanism_copy = NULL; 
  111197             :         } 
  111198             :   /* check for a valid pointer and delete if present */ 
  111199           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  111200             :   /* add assignment to result here */ 
  111201           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  111202             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  111203             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  111204             :   // case: toBeCopied == COPY_DATA for numeric_label
  111205           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  111206           0 :      result->p_numeric_label = numeric_label_copy; 
  111207             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  111208             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  111209             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  111210           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  111211           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  111212             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  111213             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  111214             :   // case: toBeCopied == COPY_DATA for upir_parent
  111215           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  111216           0 :      result->p_upir_parent = upir_parent_copy; 
  111217             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  111218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  111219             :   // case: toBeCopied == COPY_DATA for upir_children
  111220           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  111221           0 :      result->p_upir_children = upir_children_copy; 
  111222             : 
  111223             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111224             : 
  111225             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  111226             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  111227             :   // fixupCopy(result,help);
  111228             : 
  111229             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  111230             :   // the Sg_File_Info objects that are built for the new IR nodes.
  111231           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  111232           0 :      if (locatedNode != NULL)
  111233             :         {
  111234             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  111235           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  111236           0 :           ROSE_ASSERT(start != NULL);
  111237             : #if 0
  111238             :        // Debugging information
  111239             :           if (start->get_parent() == NULL)
  111240             :              {
  111241             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111242             :              }
  111243             : #endif
  111244           0 :           start->set_parent(locatedNode);
  111245           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  111246             : 
  111247           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  111248             : 
  111249             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  111250             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  111251             :        // ROSE_ASSERT(end != NULL);
  111252           0 :           if (end == NULL)
  111253             :              {
  111254           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  111255             :              }
  111256             :             else
  111257             :              {
  111258             : #if 0
  111259             :             // Debugging information
  111260             :                if (end->get_parent() == NULL)
  111261             :                   {
  111262             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111263             :                   }
  111264             : #endif
  111265           0 :                end->set_parent(locatedNode);
  111266           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  111267             :              }
  111268             : 
  111269           0 :           SgExpression* expression = isSgExpression(result);
  111270           0 :           if (isSgExpression(this) != NULL)
  111271             :              {
  111272           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  111273             : 
  111274             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  111275           0 :                if (operatorPosition != NULL)
  111276             :                   {
  111277             : #if 0
  111278             :                  // Debugging information
  111279             :                     if (operatorPosition->get_parent() == NULL)
  111280             :                        {
  111281             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111282             :                        }
  111283             : #endif
  111284           0 :                     operatorPosition->set_parent(expression);
  111285           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  111286             :                   }
  111287             :              }
  111288             :         }
  111289             : 
  111290             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  111291           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  111292           0 :      if (initializedName != NULL)
  111293             :         {
  111294             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  111295           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  111296           0 :           ROSE_ASSERT(start != NULL);
  111297             : #if 0
  111298             :        // Debugging information
  111299             :           if (start->get_parent() == NULL)
  111300             :              {
  111301             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111302             :              }
  111303             : #endif
  111304           0 :           start->set_parent(initializedName);
  111305           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  111306             : 
  111307             : #if 0
  111308             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  111309             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  111310             : 
  111311             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  111312             :        // ROSE_ASSERT(end != NULL);
  111313             :           if (end == NULL)
  111314             :              {
  111315             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  111316             :              }
  111317             :             else
  111318             :              {
  111319             :                if (end->get_parent() == NULL)
  111320             :                   {
  111321             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111322             :                   }
  111323             :                end->set_parent(initializedName);
  111324             :                ROSE_ASSERT(end->get_parent() != NULL);
  111325             :              }
  111326             : #endif
  111327             :         }
  111328             : 
  111329             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  111330           0 :      help.insertCopiedNodePair(this,result);
  111331             : 
  111332             :   // printf ("End of copy SgUpirBaseStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  111333             : 
  111334             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  111335             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  111336           0 :      help.decrementDepth();
  111337             : 
  111338             :   // Test if this is the root of the copy!
  111339           0 :      if (help.get_depth() == 0)
  111340             :         {
  111341             :        // This is the original calling node.
  111342             : 
  111343             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  111344             :        // printf ("Calling SgUpirBaseStatement::fixupCopy() (from root of AST being copied) \n");
  111345             : #if ALT_FIXUP_COPY
  111346             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  111347           0 :           fixupCopy_scopes (result,help);
  111348           0 :           fixupCopy_symbols (result,help);
  111349           0 :           fixupCopy_references (result,help);
  111350             : #else
  111351             :           fixupCopy(result,help);
  111352             : #endif
  111353             :        // Allow this to be called recursively, so accumulate the state.
  111354             :        // Also, clear the state in the SgCopyHelp object.
  111355             :        // help.clearState();
  111356             :         }
  111357             : 
  111358           0 :      return result;
  111359             :    }
  111360             : 
  111361             : 
  111362             : /* #line 111363 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  111363             : 
  111364             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111365             : 
  111366           0 : SgNode* SgOmpTaskyieldStatement::copy ( SgCopyHelp& help) const
  111367             :    {
  111368           0 :      SgOmpTaskyieldStatement* result = NULL;
  111369             : 
  111370             :   // printf ("Copy SgOmpTaskyieldStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  111371             : 
  111372             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  111373             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  111374             :   // The default value of the depth is 0, so after this call the depth is 1!
  111375           0 :      help.incrementDepth();
  111376             : 
  111377             : #if 0
  111378             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  111379             :   // but it is not generally true that things can only be copied once!
  111380             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  111381             :   // AstAttribute* existingAttribute = const_cast<SgOmpTaskyieldStatement*>(this)->attribute["copied"];
  111382             :      bool previouslyCopied = const_cast<SgOmpTaskyieldStatement*>(this)->attribute.exists("copied");
  111383             :      if (previouslyCopied == true)
  111384             :         {
  111385             :           this->get_file_info()->display("Called from copy SgOmpTaskyieldStatement: debug");
  111386             :         }
  111387             :      ROSE_ASSERT(previouslyCopied == false);
  111388             : 
  111389             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  111390             :      AstAttribute* newAttribute = new AstAttribute();
  111391             :      ROSE_ASSERT(newAttribute != NULL);
  111392             : 
  111393             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  111394             :      const_cast<SgOmpTaskyieldStatement*>(this)->attribute.add("copied",newAttribute);
  111395             : #endif
  111396             : 
  111397             :   // Copy data members from base classes
  111398             :   // Copy constructor parameter data member: startOfConstruct_copy
  111399             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  111400             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  111401           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  111402           0 :      if ( p_startOfConstruct != NULL ) 
  111403             :         { 
  111404           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  111405             :         } 
  111406             :        else 
  111407             :         { 
  111408             :           startOfConstruct_copy = NULL; 
  111409             :         } 
  111410             :  
  111411             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111412             : 
  111413             :   // Build an empty copy of this object (will be filled in, but 
  111414             :   // the parent can't be set and must be set by the caller)
  111415           0 :      result = new SgOmpTaskyieldStatement(  startOfConstruct_copy );
  111416           0 :      ROSE_ASSERT(result != NULL);
  111417             : 
  111418             :   // Copy data members of "this" class
  111419             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  111420             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  111421             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  111422           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  111423           0 :      if ( p_endOfConstruct != NULL ) 
  111424             :         { 
  111425           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  111426             :         } 
  111427             :        else 
  111428             :         { 
  111429             :           endOfConstruct_copy = NULL; 
  111430             :         } 
  111431             :   /* check for a valid pointer and delete if present */ 
  111432           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  111433             :   /* add assignment to result here */ 
  111434           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  111435             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  111436             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  111437             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  111438           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  111439           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  111440             :         { 
  111441           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  111442             :         } 
  111443             :        else 
  111444             :         { 
  111445             :           attachedPreprocessingInfoPtr_copy = NULL; 
  111446             :         } 
  111447             :   /* check for a valid pointer and delete if present */ 
  111448           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  111449             :   /* add assignment to result here */ 
  111450           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  111451             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  111452             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  111453             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  111454           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  111455           0 :      if ( p_attributeMechanism != NULL ) 
  111456             :         { 
  111457           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  111458             :         } 
  111459             :        else 
  111460             :         { 
  111461             :           attributeMechanism_copy = NULL; 
  111462             :         } 
  111463             :   /* check for a valid pointer and delete if present */ 
  111464           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  111465             :   /* add assignment to result here */ 
  111466           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  111467             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  111468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  111469             :   // case: toBeCopied == COPY_DATA for numeric_label
  111470           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  111471           0 :      result->p_numeric_label = numeric_label_copy; 
  111472             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  111473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  111474             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  111475           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  111476           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  111477             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  111478             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  111479             :   // case: toBeCopied == COPY_DATA for upir_parent
  111480           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  111481           0 :      result->p_upir_parent = upir_parent_copy; 
  111482             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  111483             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  111484             :   // case: toBeCopied == COPY_DATA for upir_children
  111485           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  111486           0 :      result->p_upir_children = upir_children_copy; 
  111487             : 
  111488             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111489             : 
  111490             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  111491             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  111492             :   // fixupCopy(result,help);
  111493             : 
  111494             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  111495             :   // the Sg_File_Info objects that are built for the new IR nodes.
  111496           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  111497           0 :      if (locatedNode != NULL)
  111498             :         {
  111499             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  111500           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  111501           0 :           ROSE_ASSERT(start != NULL);
  111502             : #if 0
  111503             :        // Debugging information
  111504             :           if (start->get_parent() == NULL)
  111505             :              {
  111506             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111507             :              }
  111508             : #endif
  111509           0 :           start->set_parent(locatedNode);
  111510           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  111511             : 
  111512           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  111513             : 
  111514             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  111515             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  111516             :        // ROSE_ASSERT(end != NULL);
  111517           0 :           if (end == NULL)
  111518             :              {
  111519           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  111520             :              }
  111521             :             else
  111522             :              {
  111523             : #if 0
  111524             :             // Debugging information
  111525             :                if (end->get_parent() == NULL)
  111526             :                   {
  111527             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111528             :                   }
  111529             : #endif
  111530           0 :                end->set_parent(locatedNode);
  111531           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  111532             :              }
  111533             : 
  111534           0 :           SgExpression* expression = isSgExpression(result);
  111535           0 :           if (isSgExpression(this) != NULL)
  111536             :              {
  111537           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  111538             : 
  111539             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  111540           0 :                if (operatorPosition != NULL)
  111541             :                   {
  111542             : #if 0
  111543             :                  // Debugging information
  111544             :                     if (operatorPosition->get_parent() == NULL)
  111545             :                        {
  111546             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111547             :                        }
  111548             : #endif
  111549           0 :                     operatorPosition->set_parent(expression);
  111550           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  111551             :                   }
  111552             :              }
  111553             :         }
  111554             : 
  111555             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  111556           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  111557           0 :      if (initializedName != NULL)
  111558             :         {
  111559             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  111560           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  111561           0 :           ROSE_ASSERT(start != NULL);
  111562             : #if 0
  111563             :        // Debugging information
  111564             :           if (start->get_parent() == NULL)
  111565             :              {
  111566             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111567             :              }
  111568             : #endif
  111569           0 :           start->set_parent(initializedName);
  111570           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  111571             : 
  111572             : #if 0
  111573             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  111574             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  111575             : 
  111576             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  111577             :        // ROSE_ASSERT(end != NULL);
  111578             :           if (end == NULL)
  111579             :              {
  111580             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  111581             :              }
  111582             :             else
  111583             :              {
  111584             :                if (end->get_parent() == NULL)
  111585             :                   {
  111586             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111587             :                   }
  111588             :                end->set_parent(initializedName);
  111589             :                ROSE_ASSERT(end->get_parent() != NULL);
  111590             :              }
  111591             : #endif
  111592             :         }
  111593             : 
  111594             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  111595           0 :      help.insertCopiedNodePair(this,result);
  111596             : 
  111597             :   // printf ("End of copy SgOmpTaskyieldStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  111598             : 
  111599             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  111600             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  111601           0 :      help.decrementDepth();
  111602             : 
  111603             :   // Test if this is the root of the copy!
  111604           0 :      if (help.get_depth() == 0)
  111605             :         {
  111606             :        // This is the original calling node.
  111607             : 
  111608             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  111609             :        // printf ("Calling SgOmpTaskyieldStatement::fixupCopy() (from root of AST being copied) \n");
  111610             : #if ALT_FIXUP_COPY
  111611             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  111612           0 :           fixupCopy_scopes (result,help);
  111613           0 :           fixupCopy_symbols (result,help);
  111614           0 :           fixupCopy_references (result,help);
  111615             : #else
  111616             :           fixupCopy(result,help);
  111617             : #endif
  111618             :        // Allow this to be called recursively, so accumulate the state.
  111619             :        // Also, clear the state in the SgCopyHelp object.
  111620             :        // help.clearState();
  111621             :         }
  111622             : 
  111623           0 :      return result;
  111624             :    }
  111625             : 
  111626             : 
  111627             : /* #line 111628 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  111628             : 
  111629             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111630             : 
  111631           0 : SgNode* SgOmpBarrierStatement::copy ( SgCopyHelp& help) const
  111632             :    {
  111633           0 :      SgOmpBarrierStatement* result = NULL;
  111634             : 
  111635             :   // printf ("Copy SgOmpBarrierStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  111636             : 
  111637             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  111638             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  111639             :   // The default value of the depth is 0, so after this call the depth is 1!
  111640           0 :      help.incrementDepth();
  111641             : 
  111642             : #if 0
  111643             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  111644             :   // but it is not generally true that things can only be copied once!
  111645             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  111646             :   // AstAttribute* existingAttribute = const_cast<SgOmpBarrierStatement*>(this)->attribute["copied"];
  111647             :      bool previouslyCopied = const_cast<SgOmpBarrierStatement*>(this)->attribute.exists("copied");
  111648             :      if (previouslyCopied == true)
  111649             :         {
  111650             :           this->get_file_info()->display("Called from copy SgOmpBarrierStatement: debug");
  111651             :         }
  111652             :      ROSE_ASSERT(previouslyCopied == false);
  111653             : 
  111654             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  111655             :      AstAttribute* newAttribute = new AstAttribute();
  111656             :      ROSE_ASSERT(newAttribute != NULL);
  111657             : 
  111658             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  111659             :      const_cast<SgOmpBarrierStatement*>(this)->attribute.add("copied",newAttribute);
  111660             : #endif
  111661             : 
  111662             :   // Copy data members from base classes
  111663             :   // Copy constructor parameter data member: startOfConstruct_copy
  111664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  111665             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  111666           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  111667           0 :      if ( p_startOfConstruct != NULL ) 
  111668             :         { 
  111669           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  111670             :         } 
  111671             :        else 
  111672             :         { 
  111673             :           startOfConstruct_copy = NULL; 
  111674             :         } 
  111675             :  
  111676             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111677             : 
  111678             :   // Build an empty copy of this object (will be filled in, but 
  111679             :   // the parent can't be set and must be set by the caller)
  111680           0 :      result = new SgOmpBarrierStatement(  startOfConstruct_copy );
  111681           0 :      ROSE_ASSERT(result != NULL);
  111682             : 
  111683             :   // Copy data members of "this" class
  111684             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  111685             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  111686             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  111687           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  111688           0 :      if ( p_endOfConstruct != NULL ) 
  111689             :         { 
  111690           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  111691             :         } 
  111692             :        else 
  111693             :         { 
  111694             :           endOfConstruct_copy = NULL; 
  111695             :         } 
  111696             :   /* check for a valid pointer and delete if present */ 
  111697           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  111698             :   /* add assignment to result here */ 
  111699           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  111700             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  111701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  111702             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  111703           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  111704           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  111705             :         { 
  111706           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  111707             :         } 
  111708             :        else 
  111709             :         { 
  111710             :           attachedPreprocessingInfoPtr_copy = NULL; 
  111711             :         } 
  111712             :   /* check for a valid pointer and delete if present */ 
  111713           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  111714             :   /* add assignment to result here */ 
  111715           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  111716             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  111717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  111718             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  111719           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  111720           0 :      if ( p_attributeMechanism != NULL ) 
  111721             :         { 
  111722           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  111723             :         } 
  111724             :        else 
  111725             :         { 
  111726             :           attributeMechanism_copy = NULL; 
  111727             :         } 
  111728             :   /* check for a valid pointer and delete if present */ 
  111729           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  111730             :   /* add assignment to result here */ 
  111731           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  111732             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  111733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  111734             :   // case: toBeCopied == COPY_DATA for numeric_label
  111735           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  111736           0 :      result->p_numeric_label = numeric_label_copy; 
  111737             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  111738             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  111739             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  111740           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  111741           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  111742             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  111743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  111744             :   // case: toBeCopied == COPY_DATA for upir_parent
  111745           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  111746           0 :      result->p_upir_parent = upir_parent_copy; 
  111747             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  111748             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  111749             :   // case: toBeCopied == COPY_DATA for upir_children
  111750           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  111751           0 :      result->p_upir_children = upir_children_copy; 
  111752             : 
  111753             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111754             : 
  111755             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  111756             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  111757             :   // fixupCopy(result,help);
  111758             : 
  111759             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  111760             :   // the Sg_File_Info objects that are built for the new IR nodes.
  111761           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  111762           0 :      if (locatedNode != NULL)
  111763             :         {
  111764             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  111765           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  111766           0 :           ROSE_ASSERT(start != NULL);
  111767             : #if 0
  111768             :        // Debugging information
  111769             :           if (start->get_parent() == NULL)
  111770             :              {
  111771             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111772             :              }
  111773             : #endif
  111774           0 :           start->set_parent(locatedNode);
  111775           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  111776             : 
  111777           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  111778             : 
  111779             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  111780             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  111781             :        // ROSE_ASSERT(end != NULL);
  111782           0 :           if (end == NULL)
  111783             :              {
  111784           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  111785             :              }
  111786             :             else
  111787             :              {
  111788             : #if 0
  111789             :             // Debugging information
  111790             :                if (end->get_parent() == NULL)
  111791             :                   {
  111792             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111793             :                   }
  111794             : #endif
  111795           0 :                end->set_parent(locatedNode);
  111796           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  111797             :              }
  111798             : 
  111799           0 :           SgExpression* expression = isSgExpression(result);
  111800           0 :           if (isSgExpression(this) != NULL)
  111801             :              {
  111802           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  111803             : 
  111804             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  111805           0 :                if (operatorPosition != NULL)
  111806             :                   {
  111807             : #if 0
  111808             :                  // Debugging information
  111809             :                     if (operatorPosition->get_parent() == NULL)
  111810             :                        {
  111811             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111812             :                        }
  111813             : #endif
  111814           0 :                     operatorPosition->set_parent(expression);
  111815           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  111816             :                   }
  111817             :              }
  111818             :         }
  111819             : 
  111820             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  111821           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  111822           0 :      if (initializedName != NULL)
  111823             :         {
  111824             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  111825           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  111826           0 :           ROSE_ASSERT(start != NULL);
  111827             : #if 0
  111828             :        // Debugging information
  111829             :           if (start->get_parent() == NULL)
  111830             :              {
  111831             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111832             :              }
  111833             : #endif
  111834           0 :           start->set_parent(initializedName);
  111835           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  111836             : 
  111837             : #if 0
  111838             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  111839             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  111840             : 
  111841             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  111842             :        // ROSE_ASSERT(end != NULL);
  111843             :           if (end == NULL)
  111844             :              {
  111845             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  111846             :              }
  111847             :             else
  111848             :              {
  111849             :                if (end->get_parent() == NULL)
  111850             :                   {
  111851             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  111852             :                   }
  111853             :                end->set_parent(initializedName);
  111854             :                ROSE_ASSERT(end->get_parent() != NULL);
  111855             :              }
  111856             : #endif
  111857             :         }
  111858             : 
  111859             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  111860           0 :      help.insertCopiedNodePair(this,result);
  111861             : 
  111862             :   // printf ("End of copy SgOmpBarrierStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  111863             : 
  111864             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  111865             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  111866           0 :      help.decrementDepth();
  111867             : 
  111868             :   // Test if this is the root of the copy!
  111869           0 :      if (help.get_depth() == 0)
  111870             :         {
  111871             :        // This is the original calling node.
  111872             : 
  111873             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  111874             :        // printf ("Calling SgOmpBarrierStatement::fixupCopy() (from root of AST being copied) \n");
  111875             : #if ALT_FIXUP_COPY
  111876             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  111877           0 :           fixupCopy_scopes (result,help);
  111878           0 :           fixupCopy_symbols (result,help);
  111879           0 :           fixupCopy_references (result,help);
  111880             : #else
  111881             :           fixupCopy(result,help);
  111882             : #endif
  111883             :        // Allow this to be called recursively, so accumulate the state.
  111884             :        // Also, clear the state in the SgCopyHelp object.
  111885             :        // help.clearState();
  111886             :         }
  111887             : 
  111888           0 :      return result;
  111889             :    }
  111890             : 
  111891             : 
  111892             : /* #line 111893 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  111893             : 
  111894             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111895             : 
  111896           0 : SgNode* SgUpirBodyStatement::copy ( SgCopyHelp& help) const
  111897             :    {
  111898           0 :      SgUpirBodyStatement* result = NULL;
  111899             : 
  111900             :   // printf ("Copy SgUpirBodyStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  111901             : 
  111902             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  111903             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  111904             :   // The default value of the depth is 0, so after this call the depth is 1!
  111905           0 :      help.incrementDepth();
  111906             : 
  111907             : #if 0
  111908             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  111909             :   // but it is not generally true that things can only be copied once!
  111910             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  111911             :   // AstAttribute* existingAttribute = const_cast<SgUpirBodyStatement*>(this)->attribute["copied"];
  111912             :      bool previouslyCopied = const_cast<SgUpirBodyStatement*>(this)->attribute.exists("copied");
  111913             :      if (previouslyCopied == true)
  111914             :         {
  111915             :           this->get_file_info()->display("Called from copy SgUpirBodyStatement: debug");
  111916             :         }
  111917             :      ROSE_ASSERT(previouslyCopied == false);
  111918             : 
  111919             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  111920             :      AstAttribute* newAttribute = new AstAttribute();
  111921             :      ROSE_ASSERT(newAttribute != NULL);
  111922             : 
  111923             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  111924             :      const_cast<SgUpirBodyStatement*>(this)->attribute.add("copied",newAttribute);
  111925             : #endif
  111926             : 
  111927             :   // Copy data members from base classes
  111928             :   // Copy constructor parameter data member: startOfConstruct_copy
  111929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  111930             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  111931           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  111932           0 :      if ( p_startOfConstruct != NULL ) 
  111933             :         { 
  111934           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  111935             :         } 
  111936             :        else 
  111937             :         { 
  111938             :           startOfConstruct_copy = NULL; 
  111939             :         } 
  111940             :   // Copy constructor parameter data member: body_copy
  111941           0 :      SgStatement* body_copy; 
  111942             :   // case: not a listType for (using conditionalToCopyVariable)body
  111943           0 :           if (get_body() != NULL) 
  111944             :              { 
  111945           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  111946             :              } 
  111947             :             else 
  111948             :              { 
  111949             :                body_copy = NULL; 
  111950             :              } 
  111951             :  
  111952             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  111953             : 
  111954             :   // Build an empty copy of this object (will be filled in, but 
  111955             :   // the parent can't be set and must be set by the caller)
  111956           0 :      result = new SgUpirBodyStatement(  startOfConstruct_copy, body_copy );
  111957           0 :      ROSE_ASSERT(result != NULL);
  111958             : 
  111959             :   // Copy data members of "this" class
  111960             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  111961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  111962             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  111963           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  111964           0 :      if ( p_endOfConstruct != NULL ) 
  111965             :         { 
  111966           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  111967             :         } 
  111968             :        else 
  111969             :         { 
  111970             :           endOfConstruct_copy = NULL; 
  111971             :         } 
  111972             :   /* check for a valid pointer and delete if present */ 
  111973           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  111974             :   /* add assignment to result here */ 
  111975           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  111976             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  111977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  111978             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  111979           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  111980           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  111981             :         { 
  111982           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  111983             :         } 
  111984             :        else 
  111985             :         { 
  111986             :           attachedPreprocessingInfoPtr_copy = NULL; 
  111987             :         } 
  111988             :   /* check for a valid pointer and delete if present */ 
  111989           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  111990             :   /* add assignment to result here */ 
  111991           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  111992             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  111993             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  111994             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  111995           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  111996           0 :      if ( p_attributeMechanism != NULL ) 
  111997             :         { 
  111998           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  111999             :         } 
  112000             :        else 
  112001             :         { 
  112002             :           attributeMechanism_copy = NULL; 
  112003             :         } 
  112004             :   /* check for a valid pointer and delete if present */ 
  112005           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  112006             :   /* add assignment to result here */ 
  112007           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  112008             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  112009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  112010             :   // case: toBeCopied == COPY_DATA for numeric_label
  112011           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  112012           0 :      result->p_numeric_label = numeric_label_copy; 
  112013             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  112014             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  112015             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  112016           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  112017           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  112018             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  112019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  112020             :   // case: toBeCopied == COPY_DATA for upir_parent
  112021           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  112022           0 :      result->p_upir_parent = upir_parent_copy; 
  112023             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  112024             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  112025             :   // case: toBeCopied == COPY_DATA for upir_children
  112026           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  112027           0 :      result->p_upir_children = upir_children_copy; 
  112028             :   // case: not a listType for (using conditionalToSetParent)body
  112029           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  112030             :              { 
  112031           0 :                body_copy->set_parent(result); 
  112032             :              } 
  112033             : 
  112034             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112035             : 
  112036             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  112037             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  112038             :   // fixupCopy(result,help);
  112039             : 
  112040             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  112041             :   // the Sg_File_Info objects that are built for the new IR nodes.
  112042           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  112043           0 :      if (locatedNode != NULL)
  112044             :         {
  112045             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  112046           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  112047           0 :           ROSE_ASSERT(start != NULL);
  112048             : #if 0
  112049             :        // Debugging information
  112050             :           if (start->get_parent() == NULL)
  112051             :              {
  112052             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112053             :              }
  112054             : #endif
  112055           0 :           start->set_parent(locatedNode);
  112056           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  112057             : 
  112058           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  112059             : 
  112060             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  112061             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  112062             :        // ROSE_ASSERT(end != NULL);
  112063           0 :           if (end == NULL)
  112064             :              {
  112065           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  112066             :              }
  112067             :             else
  112068             :              {
  112069             : #if 0
  112070             :             // Debugging information
  112071             :                if (end->get_parent() == NULL)
  112072             :                   {
  112073             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112074             :                   }
  112075             : #endif
  112076           0 :                end->set_parent(locatedNode);
  112077           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  112078             :              }
  112079             : 
  112080           0 :           SgExpression* expression = isSgExpression(result);
  112081           0 :           if (isSgExpression(this) != NULL)
  112082             :              {
  112083           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  112084             : 
  112085             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  112086           0 :                if (operatorPosition != NULL)
  112087             :                   {
  112088             : #if 0
  112089             :                  // Debugging information
  112090             :                     if (operatorPosition->get_parent() == NULL)
  112091             :                        {
  112092             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112093             :                        }
  112094             : #endif
  112095           0 :                     operatorPosition->set_parent(expression);
  112096           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  112097             :                   }
  112098             :              }
  112099             :         }
  112100             : 
  112101             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  112102           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  112103           0 :      if (initializedName != NULL)
  112104             :         {
  112105             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  112106           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  112107           0 :           ROSE_ASSERT(start != NULL);
  112108             : #if 0
  112109             :        // Debugging information
  112110             :           if (start->get_parent() == NULL)
  112111             :              {
  112112             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112113             :              }
  112114             : #endif
  112115           0 :           start->set_parent(initializedName);
  112116           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  112117             : 
  112118             : #if 0
  112119             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  112120             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  112121             : 
  112122             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  112123             :        // ROSE_ASSERT(end != NULL);
  112124             :           if (end == NULL)
  112125             :              {
  112126             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  112127             :              }
  112128             :             else
  112129             :              {
  112130             :                if (end->get_parent() == NULL)
  112131             :                   {
  112132             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112133             :                   }
  112134             :                end->set_parent(initializedName);
  112135             :                ROSE_ASSERT(end->get_parent() != NULL);
  112136             :              }
  112137             : #endif
  112138             :         }
  112139             : 
  112140             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  112141           0 :      help.insertCopiedNodePair(this,result);
  112142             : 
  112143             :   // printf ("End of copy SgUpirBodyStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  112144             : 
  112145             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  112146             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  112147           0 :      help.decrementDepth();
  112148             : 
  112149             :   // Test if this is the root of the copy!
  112150           0 :      if (help.get_depth() == 0)
  112151             :         {
  112152             :        // This is the original calling node.
  112153             : 
  112154             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  112155             :        // printf ("Calling SgUpirBodyStatement::fixupCopy() (from root of AST being copied) \n");
  112156             : #if ALT_FIXUP_COPY
  112157             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  112158           0 :           fixupCopy_scopes (result,help);
  112159           0 :           fixupCopy_symbols (result,help);
  112160           0 :           fixupCopy_references (result,help);
  112161             : #else
  112162             :           fixupCopy(result,help);
  112163             : #endif
  112164             :        // Allow this to be called recursively, so accumulate the state.
  112165             :        // Also, clear the state in the SgCopyHelp object.
  112166             :        // help.clearState();
  112167             :         }
  112168             : 
  112169           0 :      return result;
  112170             :    }
  112171             : 
  112172             : 
  112173             : /* #line 112174 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  112174             : 
  112175             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112176             : 
  112177           0 : SgNode* SgOmpMasterStatement::copy ( SgCopyHelp& help) const
  112178             :    {
  112179           0 :      SgOmpMasterStatement* result = NULL;
  112180             : 
  112181             :   // printf ("Copy SgOmpMasterStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  112182             : 
  112183             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  112184             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  112185             :   // The default value of the depth is 0, so after this call the depth is 1!
  112186           0 :      help.incrementDepth();
  112187             : 
  112188             : #if 0
  112189             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  112190             :   // but it is not generally true that things can only be copied once!
  112191             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  112192             :   // AstAttribute* existingAttribute = const_cast<SgOmpMasterStatement*>(this)->attribute["copied"];
  112193             :      bool previouslyCopied = const_cast<SgOmpMasterStatement*>(this)->attribute.exists("copied");
  112194             :      if (previouslyCopied == true)
  112195             :         {
  112196             :           this->get_file_info()->display("Called from copy SgOmpMasterStatement: debug");
  112197             :         }
  112198             :      ROSE_ASSERT(previouslyCopied == false);
  112199             : 
  112200             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  112201             :      AstAttribute* newAttribute = new AstAttribute();
  112202             :      ROSE_ASSERT(newAttribute != NULL);
  112203             : 
  112204             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  112205             :      const_cast<SgOmpMasterStatement*>(this)->attribute.add("copied",newAttribute);
  112206             : #endif
  112207             : 
  112208             :   // Copy data members from base classes
  112209             :   // Copy constructor parameter data member: startOfConstruct_copy
  112210             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  112211             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  112212           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  112213           0 :      if ( p_startOfConstruct != NULL ) 
  112214             :         { 
  112215           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  112216             :         } 
  112217             :        else 
  112218             :         { 
  112219             :           startOfConstruct_copy = NULL; 
  112220             :         } 
  112221             :   // Copy constructor parameter data member: body_copy
  112222           0 :      SgStatement* body_copy; 
  112223             :   // case: not a listType for (using conditionalToCopyVariable)body
  112224           0 :           if (get_body() != NULL) 
  112225             :              { 
  112226           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  112227             :              } 
  112228             :             else 
  112229             :              { 
  112230             :                body_copy = NULL; 
  112231             :              } 
  112232             :  
  112233             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112234             : 
  112235             :   // Build an empty copy of this object (will be filled in, but 
  112236             :   // the parent can't be set and must be set by the caller)
  112237           0 :      result = new SgOmpMasterStatement(  startOfConstruct_copy, body_copy );
  112238           0 :      ROSE_ASSERT(result != NULL);
  112239             : 
  112240             :   // Copy data members of "this" class
  112241             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  112242             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  112243             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  112244           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  112245           0 :      if ( p_endOfConstruct != NULL ) 
  112246             :         { 
  112247           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  112248             :         } 
  112249             :        else 
  112250             :         { 
  112251             :           endOfConstruct_copy = NULL; 
  112252             :         } 
  112253             :   /* check for a valid pointer and delete if present */ 
  112254           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  112255             :   /* add assignment to result here */ 
  112256           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  112257             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  112258             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  112259             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  112260           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  112261           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  112262             :         { 
  112263           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  112264             :         } 
  112265             :        else 
  112266             :         { 
  112267             :           attachedPreprocessingInfoPtr_copy = NULL; 
  112268             :         } 
  112269             :   /* check for a valid pointer and delete if present */ 
  112270           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  112271             :   /* add assignment to result here */ 
  112272           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  112273             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  112274             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  112275             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  112276           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  112277           0 :      if ( p_attributeMechanism != NULL ) 
  112278             :         { 
  112279           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  112280             :         } 
  112281             :        else 
  112282             :         { 
  112283             :           attributeMechanism_copy = NULL; 
  112284             :         } 
  112285             :   /* check for a valid pointer and delete if present */ 
  112286           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  112287             :   /* add assignment to result here */ 
  112288           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  112289             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  112290             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  112291             :   // case: toBeCopied == COPY_DATA for numeric_label
  112292           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  112293           0 :      result->p_numeric_label = numeric_label_copy; 
  112294             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  112295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  112296             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  112297           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  112298           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  112299             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  112300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  112301             :   // case: toBeCopied == COPY_DATA for upir_parent
  112302           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  112303           0 :      result->p_upir_parent = upir_parent_copy; 
  112304             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  112305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  112306             :   // case: toBeCopied == COPY_DATA for upir_children
  112307           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  112308           0 :      result->p_upir_children = upir_children_copy; 
  112309             :   // case: not a listType for (using conditionalToSetParent)body
  112310           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  112311             :              { 
  112312           0 :                body_copy->set_parent(result); 
  112313             :              } 
  112314             : 
  112315             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112316             : 
  112317             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  112318             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  112319             :   // fixupCopy(result,help);
  112320             : 
  112321             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  112322             :   // the Sg_File_Info objects that are built for the new IR nodes.
  112323           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  112324           0 :      if (locatedNode != NULL)
  112325             :         {
  112326             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  112327           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  112328           0 :           ROSE_ASSERT(start != NULL);
  112329             : #if 0
  112330             :        // Debugging information
  112331             :           if (start->get_parent() == NULL)
  112332             :              {
  112333             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112334             :              }
  112335             : #endif
  112336           0 :           start->set_parent(locatedNode);
  112337           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  112338             : 
  112339           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  112340             : 
  112341             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  112342             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  112343             :        // ROSE_ASSERT(end != NULL);
  112344           0 :           if (end == NULL)
  112345             :              {
  112346           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  112347             :              }
  112348             :             else
  112349             :              {
  112350             : #if 0
  112351             :             // Debugging information
  112352             :                if (end->get_parent() == NULL)
  112353             :                   {
  112354             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112355             :                   }
  112356             : #endif
  112357           0 :                end->set_parent(locatedNode);
  112358           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  112359             :              }
  112360             : 
  112361           0 :           SgExpression* expression = isSgExpression(result);
  112362           0 :           if (isSgExpression(this) != NULL)
  112363             :              {
  112364           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  112365             : 
  112366             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  112367           0 :                if (operatorPosition != NULL)
  112368             :                   {
  112369             : #if 0
  112370             :                  // Debugging information
  112371             :                     if (operatorPosition->get_parent() == NULL)
  112372             :                        {
  112373             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112374             :                        }
  112375             : #endif
  112376           0 :                     operatorPosition->set_parent(expression);
  112377           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  112378             :                   }
  112379             :              }
  112380             :         }
  112381             : 
  112382             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  112383           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  112384           0 :      if (initializedName != NULL)
  112385             :         {
  112386             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  112387           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  112388           0 :           ROSE_ASSERT(start != NULL);
  112389             : #if 0
  112390             :        // Debugging information
  112391             :           if (start->get_parent() == NULL)
  112392             :              {
  112393             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112394             :              }
  112395             : #endif
  112396           0 :           start->set_parent(initializedName);
  112397           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  112398             : 
  112399             : #if 0
  112400             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  112401             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  112402             : 
  112403             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  112404             :        // ROSE_ASSERT(end != NULL);
  112405             :           if (end == NULL)
  112406             :              {
  112407             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  112408             :              }
  112409             :             else
  112410             :              {
  112411             :                if (end->get_parent() == NULL)
  112412             :                   {
  112413             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112414             :                   }
  112415             :                end->set_parent(initializedName);
  112416             :                ROSE_ASSERT(end->get_parent() != NULL);
  112417             :              }
  112418             : #endif
  112419             :         }
  112420             : 
  112421             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  112422           0 :      help.insertCopiedNodePair(this,result);
  112423             : 
  112424             :   // printf ("End of copy SgOmpMasterStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  112425             : 
  112426             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  112427             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  112428           0 :      help.decrementDepth();
  112429             : 
  112430             :   // Test if this is the root of the copy!
  112431           0 :      if (help.get_depth() == 0)
  112432             :         {
  112433             :        // This is the original calling node.
  112434             : 
  112435             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  112436             :        // printf ("Calling SgOmpMasterStatement::fixupCopy() (from root of AST being copied) \n");
  112437             : #if ALT_FIXUP_COPY
  112438             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  112439           0 :           fixupCopy_scopes (result,help);
  112440           0 :           fixupCopy_symbols (result,help);
  112441           0 :           fixupCopy_references (result,help);
  112442             : #else
  112443             :           fixupCopy(result,help);
  112444             : #endif
  112445             :        // Allow this to be called recursively, so accumulate the state.
  112446             :        // Also, clear the state in the SgCopyHelp object.
  112447             :        // help.clearState();
  112448             :         }
  112449             : 
  112450           0 :      return result;
  112451             :    }
  112452             : 
  112453             : 
  112454             : /* #line 112455 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  112455             : 
  112456             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112457             : 
  112458           0 : SgNode* SgOmpSectionStatement::copy ( SgCopyHelp& help) const
  112459             :    {
  112460           0 :      SgOmpSectionStatement* result = NULL;
  112461             : 
  112462             :   // printf ("Copy SgOmpSectionStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  112463             : 
  112464             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  112465             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  112466             :   // The default value of the depth is 0, so after this call the depth is 1!
  112467           0 :      help.incrementDepth();
  112468             : 
  112469             : #if 0
  112470             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  112471             :   // but it is not generally true that things can only be copied once!
  112472             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  112473             :   // AstAttribute* existingAttribute = const_cast<SgOmpSectionStatement*>(this)->attribute["copied"];
  112474             :      bool previouslyCopied = const_cast<SgOmpSectionStatement*>(this)->attribute.exists("copied");
  112475             :      if (previouslyCopied == true)
  112476             :         {
  112477             :           this->get_file_info()->display("Called from copy SgOmpSectionStatement: debug");
  112478             :         }
  112479             :      ROSE_ASSERT(previouslyCopied == false);
  112480             : 
  112481             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  112482             :      AstAttribute* newAttribute = new AstAttribute();
  112483             :      ROSE_ASSERT(newAttribute != NULL);
  112484             : 
  112485             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  112486             :      const_cast<SgOmpSectionStatement*>(this)->attribute.add("copied",newAttribute);
  112487             : #endif
  112488             : 
  112489             :   // Copy data members from base classes
  112490             :   // Copy constructor parameter data member: startOfConstruct_copy
  112491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  112492             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  112493           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  112494           0 :      if ( p_startOfConstruct != NULL ) 
  112495             :         { 
  112496           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  112497             :         } 
  112498             :        else 
  112499             :         { 
  112500             :           startOfConstruct_copy = NULL; 
  112501             :         } 
  112502             :   // Copy constructor parameter data member: body_copy
  112503           0 :      SgStatement* body_copy; 
  112504             :   // case: not a listType for (using conditionalToCopyVariable)body
  112505           0 :           if (get_body() != NULL) 
  112506             :              { 
  112507           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  112508             :              } 
  112509             :             else 
  112510             :              { 
  112511             :                body_copy = NULL; 
  112512             :              } 
  112513             :  
  112514             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112515             : 
  112516             :   // Build an empty copy of this object (will be filled in, but 
  112517             :   // the parent can't be set and must be set by the caller)
  112518           0 :      result = new SgOmpSectionStatement(  startOfConstruct_copy, body_copy );
  112519           0 :      ROSE_ASSERT(result != NULL);
  112520             : 
  112521             :   // Copy data members of "this" class
  112522             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  112523             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  112524             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  112525           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  112526           0 :      if ( p_endOfConstruct != NULL ) 
  112527             :         { 
  112528           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  112529             :         } 
  112530             :        else 
  112531             :         { 
  112532             :           endOfConstruct_copy = NULL; 
  112533             :         } 
  112534             :   /* check for a valid pointer and delete if present */ 
  112535           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  112536             :   /* add assignment to result here */ 
  112537           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  112538             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  112539             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  112540             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  112541           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  112542           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  112543             :         { 
  112544           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  112545             :         } 
  112546             :        else 
  112547             :         { 
  112548             :           attachedPreprocessingInfoPtr_copy = NULL; 
  112549             :         } 
  112550             :   /* check for a valid pointer and delete if present */ 
  112551           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  112552             :   /* add assignment to result here */ 
  112553           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  112554             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  112555             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  112556             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  112557           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  112558           0 :      if ( p_attributeMechanism != NULL ) 
  112559             :         { 
  112560           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  112561             :         } 
  112562             :        else 
  112563             :         { 
  112564             :           attributeMechanism_copy = NULL; 
  112565             :         } 
  112566             :   /* check for a valid pointer and delete if present */ 
  112567           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  112568             :   /* add assignment to result here */ 
  112569           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  112570             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  112571             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  112572             :   // case: toBeCopied == COPY_DATA for numeric_label
  112573           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  112574           0 :      result->p_numeric_label = numeric_label_copy; 
  112575             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  112576             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  112577             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  112578           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  112579           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  112580             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  112581             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  112582             :   // case: toBeCopied == COPY_DATA for upir_parent
  112583           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  112584           0 :      result->p_upir_parent = upir_parent_copy; 
  112585             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  112586             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  112587             :   // case: toBeCopied == COPY_DATA for upir_children
  112588           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  112589           0 :      result->p_upir_children = upir_children_copy; 
  112590             :   // case: not a listType for (using conditionalToSetParent)body
  112591           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  112592             :              { 
  112593           0 :                body_copy->set_parent(result); 
  112594             :              } 
  112595             : 
  112596             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112597             : 
  112598             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  112599             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  112600             :   // fixupCopy(result,help);
  112601             : 
  112602             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  112603             :   // the Sg_File_Info objects that are built for the new IR nodes.
  112604           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  112605           0 :      if (locatedNode != NULL)
  112606             :         {
  112607             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  112608           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  112609           0 :           ROSE_ASSERT(start != NULL);
  112610             : #if 0
  112611             :        // Debugging information
  112612             :           if (start->get_parent() == NULL)
  112613             :              {
  112614             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112615             :              }
  112616             : #endif
  112617           0 :           start->set_parent(locatedNode);
  112618           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  112619             : 
  112620           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  112621             : 
  112622             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  112623             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  112624             :        // ROSE_ASSERT(end != NULL);
  112625           0 :           if (end == NULL)
  112626             :              {
  112627           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  112628             :              }
  112629             :             else
  112630             :              {
  112631             : #if 0
  112632             :             // Debugging information
  112633             :                if (end->get_parent() == NULL)
  112634             :                   {
  112635             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112636             :                   }
  112637             : #endif
  112638           0 :                end->set_parent(locatedNode);
  112639           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  112640             :              }
  112641             : 
  112642           0 :           SgExpression* expression = isSgExpression(result);
  112643           0 :           if (isSgExpression(this) != NULL)
  112644             :              {
  112645           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  112646             : 
  112647             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  112648           0 :                if (operatorPosition != NULL)
  112649             :                   {
  112650             : #if 0
  112651             :                  // Debugging information
  112652             :                     if (operatorPosition->get_parent() == NULL)
  112653             :                        {
  112654             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112655             :                        }
  112656             : #endif
  112657           0 :                     operatorPosition->set_parent(expression);
  112658           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  112659             :                   }
  112660             :              }
  112661             :         }
  112662             : 
  112663             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  112664           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  112665           0 :      if (initializedName != NULL)
  112666             :         {
  112667             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  112668           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  112669           0 :           ROSE_ASSERT(start != NULL);
  112670             : #if 0
  112671             :        // Debugging information
  112672             :           if (start->get_parent() == NULL)
  112673             :              {
  112674             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112675             :              }
  112676             : #endif
  112677           0 :           start->set_parent(initializedName);
  112678           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  112679             : 
  112680             : #if 0
  112681             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  112682             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  112683             : 
  112684             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  112685             :        // ROSE_ASSERT(end != NULL);
  112686             :           if (end == NULL)
  112687             :              {
  112688             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  112689             :              }
  112690             :             else
  112691             :              {
  112692             :                if (end->get_parent() == NULL)
  112693             :                   {
  112694             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112695             :                   }
  112696             :                end->set_parent(initializedName);
  112697             :                ROSE_ASSERT(end->get_parent() != NULL);
  112698             :              }
  112699             : #endif
  112700             :         }
  112701             : 
  112702             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  112703           0 :      help.insertCopiedNodePair(this,result);
  112704             : 
  112705             :   // printf ("End of copy SgOmpSectionStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  112706             : 
  112707             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  112708             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  112709           0 :      help.decrementDepth();
  112710             : 
  112711             :   // Test if this is the root of the copy!
  112712           0 :      if (help.get_depth() == 0)
  112713             :         {
  112714             :        // This is the original calling node.
  112715             : 
  112716             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  112717             :        // printf ("Calling SgOmpSectionStatement::fixupCopy() (from root of AST being copied) \n");
  112718             : #if ALT_FIXUP_COPY
  112719             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  112720           0 :           fixupCopy_scopes (result,help);
  112721           0 :           fixupCopy_symbols (result,help);
  112722           0 :           fixupCopy_references (result,help);
  112723             : #else
  112724             :           fixupCopy(result,help);
  112725             : #endif
  112726             :        // Allow this to be called recursively, so accumulate the state.
  112727             :        // Also, clear the state in the SgCopyHelp object.
  112728             :        // help.clearState();
  112729             :         }
  112730             : 
  112731           0 :      return result;
  112732             :    }
  112733             : 
  112734             : 
  112735             : /* #line 112736 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  112736             : 
  112737             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112738             : 
  112739           0 : SgNode* SgOmpWorkshareStatement::copy ( SgCopyHelp& help) const
  112740             :    {
  112741           0 :      SgOmpWorkshareStatement* result = NULL;
  112742             : 
  112743             :   // printf ("Copy SgOmpWorkshareStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  112744             : 
  112745             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  112746             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  112747             :   // The default value of the depth is 0, so after this call the depth is 1!
  112748           0 :      help.incrementDepth();
  112749             : 
  112750             : #if 0
  112751             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  112752             :   // but it is not generally true that things can only be copied once!
  112753             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  112754             :   // AstAttribute* existingAttribute = const_cast<SgOmpWorkshareStatement*>(this)->attribute["copied"];
  112755             :      bool previouslyCopied = const_cast<SgOmpWorkshareStatement*>(this)->attribute.exists("copied");
  112756             :      if (previouslyCopied == true)
  112757             :         {
  112758             :           this->get_file_info()->display("Called from copy SgOmpWorkshareStatement: debug");
  112759             :         }
  112760             :      ROSE_ASSERT(previouslyCopied == false);
  112761             : 
  112762             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  112763             :      AstAttribute* newAttribute = new AstAttribute();
  112764             :      ROSE_ASSERT(newAttribute != NULL);
  112765             : 
  112766             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  112767             :      const_cast<SgOmpWorkshareStatement*>(this)->attribute.add("copied",newAttribute);
  112768             : #endif
  112769             : 
  112770             :   // Copy data members from base classes
  112771             :   // Copy constructor parameter data member: startOfConstruct_copy
  112772             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  112773             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  112774           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  112775           0 :      if ( p_startOfConstruct != NULL ) 
  112776             :         { 
  112777           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  112778             :         } 
  112779             :        else 
  112780             :         { 
  112781             :           startOfConstruct_copy = NULL; 
  112782             :         } 
  112783             :   // Copy constructor parameter data member: body_copy
  112784           0 :      SgStatement* body_copy; 
  112785             :   // case: not a listType for (using conditionalToCopyVariable)body
  112786           0 :           if (get_body() != NULL) 
  112787             :              { 
  112788           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  112789             :              } 
  112790             :             else 
  112791             :              { 
  112792             :                body_copy = NULL; 
  112793             :              } 
  112794             :  
  112795             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112796             : 
  112797             :   // Build an empty copy of this object (will be filled in, but 
  112798             :   // the parent can't be set and must be set by the caller)
  112799           0 :      result = new SgOmpWorkshareStatement(  startOfConstruct_copy, body_copy );
  112800           0 :      ROSE_ASSERT(result != NULL);
  112801             : 
  112802             :   // Copy data members of "this" class
  112803             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  112804             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  112805             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  112806           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  112807           0 :      if ( p_endOfConstruct != NULL ) 
  112808             :         { 
  112809           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  112810             :         } 
  112811             :        else 
  112812             :         { 
  112813             :           endOfConstruct_copy = NULL; 
  112814             :         } 
  112815             :   /* check for a valid pointer and delete if present */ 
  112816           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  112817             :   /* add assignment to result here */ 
  112818           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  112819             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  112820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  112821             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  112822           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  112823           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  112824             :         { 
  112825           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  112826             :         } 
  112827             :        else 
  112828             :         { 
  112829             :           attachedPreprocessingInfoPtr_copy = NULL; 
  112830             :         } 
  112831             :   /* check for a valid pointer and delete if present */ 
  112832           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  112833             :   /* add assignment to result here */ 
  112834           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  112835             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  112836             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  112837             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  112838           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  112839           0 :      if ( p_attributeMechanism != NULL ) 
  112840             :         { 
  112841           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  112842             :         } 
  112843             :        else 
  112844             :         { 
  112845             :           attributeMechanism_copy = NULL; 
  112846             :         } 
  112847             :   /* check for a valid pointer and delete if present */ 
  112848           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  112849             :   /* add assignment to result here */ 
  112850           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  112851             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  112852             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  112853             :   // case: toBeCopied == COPY_DATA for numeric_label
  112854           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  112855           0 :      result->p_numeric_label = numeric_label_copy; 
  112856             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  112857             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  112858             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  112859           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  112860           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  112861             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  112862             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  112863             :   // case: toBeCopied == COPY_DATA for upir_parent
  112864           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  112865           0 :      result->p_upir_parent = upir_parent_copy; 
  112866             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  112867             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  112868             :   // case: toBeCopied == COPY_DATA for upir_children
  112869           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  112870           0 :      result->p_upir_children = upir_children_copy; 
  112871             :   // case: not a listType for (using conditionalToSetParent)body
  112872           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  112873             :              { 
  112874           0 :                body_copy->set_parent(result); 
  112875             :              } 
  112876             : 
  112877             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  112878             : 
  112879             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  112880             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  112881             :   // fixupCopy(result,help);
  112882             : 
  112883             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  112884             :   // the Sg_File_Info objects that are built for the new IR nodes.
  112885           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  112886           0 :      if (locatedNode != NULL)
  112887             :         {
  112888             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  112889           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  112890           0 :           ROSE_ASSERT(start != NULL);
  112891             : #if 0
  112892             :        // Debugging information
  112893             :           if (start->get_parent() == NULL)
  112894             :              {
  112895             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112896             :              }
  112897             : #endif
  112898           0 :           start->set_parent(locatedNode);
  112899           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  112900             : 
  112901           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  112902             : 
  112903             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  112904             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  112905             :        // ROSE_ASSERT(end != NULL);
  112906           0 :           if (end == NULL)
  112907             :              {
  112908           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  112909             :              }
  112910             :             else
  112911             :              {
  112912             : #if 0
  112913             :             // Debugging information
  112914             :                if (end->get_parent() == NULL)
  112915             :                   {
  112916             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112917             :                   }
  112918             : #endif
  112919           0 :                end->set_parent(locatedNode);
  112920           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  112921             :              }
  112922             : 
  112923           0 :           SgExpression* expression = isSgExpression(result);
  112924           0 :           if (isSgExpression(this) != NULL)
  112925             :              {
  112926           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  112927             : 
  112928             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  112929           0 :                if (operatorPosition != NULL)
  112930             :                   {
  112931             : #if 0
  112932             :                  // Debugging information
  112933             :                     if (operatorPosition->get_parent() == NULL)
  112934             :                        {
  112935             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112936             :                        }
  112937             : #endif
  112938           0 :                     operatorPosition->set_parent(expression);
  112939           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  112940             :                   }
  112941             :              }
  112942             :         }
  112943             : 
  112944             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  112945           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  112946           0 :      if (initializedName != NULL)
  112947             :         {
  112948             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  112949           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  112950           0 :           ROSE_ASSERT(start != NULL);
  112951             : #if 0
  112952             :        // Debugging information
  112953             :           if (start->get_parent() == NULL)
  112954             :              {
  112955             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112956             :              }
  112957             : #endif
  112958           0 :           start->set_parent(initializedName);
  112959           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  112960             : 
  112961             : #if 0
  112962             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  112963             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  112964             : 
  112965             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  112966             :        // ROSE_ASSERT(end != NULL);
  112967             :           if (end == NULL)
  112968             :              {
  112969             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  112970             :              }
  112971             :             else
  112972             :              {
  112973             :                if (end->get_parent() == NULL)
  112974             :                   {
  112975             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  112976             :                   }
  112977             :                end->set_parent(initializedName);
  112978             :                ROSE_ASSERT(end->get_parent() != NULL);
  112979             :              }
  112980             : #endif
  112981             :         }
  112982             : 
  112983             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  112984           0 :      help.insertCopiedNodePair(this,result);
  112985             : 
  112986             :   // printf ("End of copy SgOmpWorkshareStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  112987             : 
  112988             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  112989             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  112990           0 :      help.decrementDepth();
  112991             : 
  112992             :   // Test if this is the root of the copy!
  112993           0 :      if (help.get_depth() == 0)
  112994             :         {
  112995             :        // This is the original calling node.
  112996             : 
  112997             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  112998             :        // printf ("Calling SgOmpWorkshareStatement::fixupCopy() (from root of AST being copied) \n");
  112999             : #if ALT_FIXUP_COPY
  113000             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  113001           0 :           fixupCopy_scopes (result,help);
  113002           0 :           fixupCopy_symbols (result,help);
  113003           0 :           fixupCopy_references (result,help);
  113004             : #else
  113005             :           fixupCopy(result,help);
  113006             : #endif
  113007             :        // Allow this to be called recursively, so accumulate the state.
  113008             :        // Also, clear the state in the SgCopyHelp object.
  113009             :        // help.clearState();
  113010             :         }
  113011             : 
  113012           0 :      return result;
  113013             :    }
  113014             : 
  113015             : 
  113016             : /* #line 113017 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  113017             : 
  113018             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113019             : 
  113020           0 : SgNode* SgUpirFieldBodyStatement::copy ( SgCopyHelp& help) const
  113021             :    {
  113022           0 :      SgUpirFieldBodyStatement* result = NULL;
  113023             : 
  113024             :   // printf ("Copy SgUpirFieldBodyStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  113025             : 
  113026             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  113027             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  113028             :   // The default value of the depth is 0, so after this call the depth is 1!
  113029           0 :      help.incrementDepth();
  113030             : 
  113031             : #if 0
  113032             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  113033             :   // but it is not generally true that things can only be copied once!
  113034             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  113035             :   // AstAttribute* existingAttribute = const_cast<SgUpirFieldBodyStatement*>(this)->attribute["copied"];
  113036             :      bool previouslyCopied = const_cast<SgUpirFieldBodyStatement*>(this)->attribute.exists("copied");
  113037             :      if (previouslyCopied == true)
  113038             :         {
  113039             :           this->get_file_info()->display("Called from copy SgUpirFieldBodyStatement: debug");
  113040             :         }
  113041             :      ROSE_ASSERT(previouslyCopied == false);
  113042             : 
  113043             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  113044             :      AstAttribute* newAttribute = new AstAttribute();
  113045             :      ROSE_ASSERT(newAttribute != NULL);
  113046             : 
  113047             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  113048             :      const_cast<SgUpirFieldBodyStatement*>(this)->attribute.add("copied",newAttribute);
  113049             : #endif
  113050             : 
  113051             :   // Copy data members from base classes
  113052             :   // Copy constructor parameter data member: startOfConstruct_copy
  113053             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  113054             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  113055           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  113056           0 :      if ( p_startOfConstruct != NULL ) 
  113057             :         { 
  113058           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  113059             :         } 
  113060             :        else 
  113061             :         { 
  113062             :           startOfConstruct_copy = NULL; 
  113063             :         } 
  113064             :   // Copy constructor parameter data member: body_copy
  113065           0 :      SgStatement* body_copy; 
  113066             :   // case: not a listType for (using conditionalToCopyVariable)body
  113067           0 :           if (get_body() != NULL) 
  113068             :              { 
  113069           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  113070             :              } 
  113071             :             else 
  113072             :              { 
  113073             :                body_copy = NULL; 
  113074             :              } 
  113075             :  
  113076             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113077             : 
  113078             :   // Build an empty copy of this object (will be filled in, but 
  113079             :   // the parent can't be set and must be set by the caller)
  113080           0 :      result = new SgUpirFieldBodyStatement(  startOfConstruct_copy, body_copy );
  113081           0 :      ROSE_ASSERT(result != NULL);
  113082             : 
  113083             :   // Copy data members of "this" class
  113084             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  113085             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  113086             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  113087           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  113088           0 :      if ( p_endOfConstruct != NULL ) 
  113089             :         { 
  113090           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  113091             :         } 
  113092             :        else 
  113093             :         { 
  113094             :           endOfConstruct_copy = NULL; 
  113095             :         } 
  113096             :   /* check for a valid pointer and delete if present */ 
  113097           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  113098             :   /* add assignment to result here */ 
  113099           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  113100             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  113101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  113102             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  113103           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  113104           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  113105             :         { 
  113106           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  113107             :         } 
  113108             :        else 
  113109             :         { 
  113110             :           attachedPreprocessingInfoPtr_copy = NULL; 
  113111             :         } 
  113112             :   /* check for a valid pointer and delete if present */ 
  113113           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  113114             :   /* add assignment to result here */ 
  113115           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  113116             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  113117             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  113118             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  113119           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  113120           0 :      if ( p_attributeMechanism != NULL ) 
  113121             :         { 
  113122           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  113123             :         } 
  113124             :        else 
  113125             :         { 
  113126             :           attributeMechanism_copy = NULL; 
  113127             :         } 
  113128             :   /* check for a valid pointer and delete if present */ 
  113129           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  113130             :   /* add assignment to result here */ 
  113131           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  113132             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  113133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  113134             :   // case: toBeCopied == COPY_DATA for numeric_label
  113135           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  113136           0 :      result->p_numeric_label = numeric_label_copy; 
  113137             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  113138             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  113139             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  113140           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  113141           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  113142             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  113143             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  113144             :   // case: toBeCopied == COPY_DATA for upir_parent
  113145           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  113146           0 :      result->p_upir_parent = upir_parent_copy; 
  113147             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  113148             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  113149             :   // case: toBeCopied == COPY_DATA for upir_children
  113150           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  113151           0 :      result->p_upir_children = upir_children_copy; 
  113152             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  113153           0 :      SgOmpClausePtrList clauses_copy; 
  113154             :   // case: listType for clauses
  113155             :   // case: listType (typeIsPointerToList == false) for clauses
  113156           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  113157           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  113158             :         { 
  113159           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  113160           0 :           SgOmpClause* copy_list_element = NULL; 
  113161           0 :           if (source_list_element != NULL) 
  113162             :              { 
  113163           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  113164             :              } 
  113165             :             else 
  113166             :              { 
  113167             :                copy_list_element = NULL; 
  113168             :              } 
  113169           0 :           clauses_copy.push_back(copy_list_element); 
  113170             :         } 
  113171           0 :      result->p_clauses = clauses_copy; 
  113172             :   // case: listType for clauses
  113173             :   // case: listType (typeIsPointerToList == false) for clauses
  113174           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  113175           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  113176             :         { 
  113177           0 :           SgOmpClause* list_element = *clauses_iterator; 
  113178           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  113179             :              { 
  113180           0 :                list_element->set_parent(result); 
  113181             :              } 
  113182             :         } 
  113183             :   // case: not a listType for (using conditionalToSetParent)body
  113184           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  113185             :              { 
  113186           0 :                body_copy->set_parent(result); 
  113187             :              } 
  113188             : 
  113189             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113190             : 
  113191             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  113192             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  113193             :   // fixupCopy(result,help);
  113194             : 
  113195             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  113196             :   // the Sg_File_Info objects that are built for the new IR nodes.
  113197           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  113198           0 :      if (locatedNode != NULL)
  113199             :         {
  113200             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  113201           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  113202           0 :           ROSE_ASSERT(start != NULL);
  113203             : #if 0
  113204             :        // Debugging information
  113205             :           if (start->get_parent() == NULL)
  113206             :              {
  113207             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113208             :              }
  113209             : #endif
  113210           0 :           start->set_parent(locatedNode);
  113211           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  113212             : 
  113213           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  113214             : 
  113215             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  113216             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  113217             :        // ROSE_ASSERT(end != NULL);
  113218           0 :           if (end == NULL)
  113219             :              {
  113220           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  113221             :              }
  113222             :             else
  113223             :              {
  113224             : #if 0
  113225             :             // Debugging information
  113226             :                if (end->get_parent() == NULL)
  113227             :                   {
  113228             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113229             :                   }
  113230             : #endif
  113231           0 :                end->set_parent(locatedNode);
  113232           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  113233             :              }
  113234             : 
  113235           0 :           SgExpression* expression = isSgExpression(result);
  113236           0 :           if (isSgExpression(this) != NULL)
  113237             :              {
  113238           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  113239             : 
  113240             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  113241           0 :                if (operatorPosition != NULL)
  113242             :                   {
  113243             : #if 0
  113244             :                  // Debugging information
  113245             :                     if (operatorPosition->get_parent() == NULL)
  113246             :                        {
  113247             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113248             :                        }
  113249             : #endif
  113250           0 :                     operatorPosition->set_parent(expression);
  113251           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  113252             :                   }
  113253             :              }
  113254             :         }
  113255             : 
  113256             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  113257           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  113258           0 :      if (initializedName != NULL)
  113259             :         {
  113260             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  113261           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  113262           0 :           ROSE_ASSERT(start != NULL);
  113263             : #if 0
  113264             :        // Debugging information
  113265             :           if (start->get_parent() == NULL)
  113266             :              {
  113267             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113268             :              }
  113269             : #endif
  113270           0 :           start->set_parent(initializedName);
  113271           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  113272             : 
  113273             : #if 0
  113274             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  113275             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  113276             : 
  113277             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  113278             :        // ROSE_ASSERT(end != NULL);
  113279             :           if (end == NULL)
  113280             :              {
  113281             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  113282             :              }
  113283             :             else
  113284             :              {
  113285             :                if (end->get_parent() == NULL)
  113286             :                   {
  113287             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113288             :                   }
  113289             :                end->set_parent(initializedName);
  113290             :                ROSE_ASSERT(end->get_parent() != NULL);
  113291             :              }
  113292             : #endif
  113293             :         }
  113294             : 
  113295             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  113296           0 :      help.insertCopiedNodePair(this,result);
  113297             : 
  113298             :   // printf ("End of copy SgUpirFieldBodyStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  113299             : 
  113300             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  113301             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  113302           0 :      help.decrementDepth();
  113303             : 
  113304             :   // Test if this is the root of the copy!
  113305           0 :      if (help.get_depth() == 0)
  113306             :         {
  113307             :        // This is the original calling node.
  113308             : 
  113309             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  113310             :        // printf ("Calling SgUpirFieldBodyStatement::fixupCopy() (from root of AST being copied) \n");
  113311             : #if ALT_FIXUP_COPY
  113312             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  113313           0 :           fixupCopy_scopes (result,help);
  113314           0 :           fixupCopy_symbols (result,help);
  113315           0 :           fixupCopy_references (result,help);
  113316             : #else
  113317             :           fixupCopy(result,help);
  113318             : #endif
  113319             :        // Allow this to be called recursively, so accumulate the state.
  113320             :        // Also, clear the state in the SgCopyHelp object.
  113321             :        // help.clearState();
  113322             :         }
  113323             : 
  113324           0 :      return result;
  113325             :    }
  113326             : 
  113327             : 
  113328             : /* #line 113329 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  113329             : 
  113330             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113331             : 
  113332           0 : SgNode* SgUpirSpmdStatement::copy ( SgCopyHelp& help) const
  113333             :    {
  113334           0 :      SgUpirSpmdStatement* result = NULL;
  113335             : 
  113336             :   // printf ("Copy SgUpirSpmdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  113337             : 
  113338             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  113339             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  113340             :   // The default value of the depth is 0, so after this call the depth is 1!
  113341           0 :      help.incrementDepth();
  113342             : 
  113343             : #if 0
  113344             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  113345             :   // but it is not generally true that things can only be copied once!
  113346             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  113347             :   // AstAttribute* existingAttribute = const_cast<SgUpirSpmdStatement*>(this)->attribute["copied"];
  113348             :      bool previouslyCopied = const_cast<SgUpirSpmdStatement*>(this)->attribute.exists("copied");
  113349             :      if (previouslyCopied == true)
  113350             :         {
  113351             :           this->get_file_info()->display("Called from copy SgUpirSpmdStatement: debug");
  113352             :         }
  113353             :      ROSE_ASSERT(previouslyCopied == false);
  113354             : 
  113355             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  113356             :      AstAttribute* newAttribute = new AstAttribute();
  113357             :      ROSE_ASSERT(newAttribute != NULL);
  113358             : 
  113359             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  113360             :      const_cast<SgUpirSpmdStatement*>(this)->attribute.add("copied",newAttribute);
  113361             : #endif
  113362             : 
  113363             :   // Copy data members from base classes
  113364             :   // Copy constructor parameter data member: startOfConstruct_copy
  113365             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  113366             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  113367           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  113368           0 :      if ( p_startOfConstruct != NULL ) 
  113369             :         { 
  113370           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  113371             :         } 
  113372             :        else 
  113373             :         { 
  113374             :           startOfConstruct_copy = NULL; 
  113375             :         } 
  113376             :   // Copy constructor parameter data member: body_copy
  113377           0 :      SgStatement* body_copy; 
  113378             :   // case: not a listType for (using conditionalToCopyVariable)body
  113379           0 :           if (get_body() != NULL) 
  113380             :              { 
  113381           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  113382             :              } 
  113383             :             else 
  113384             :              { 
  113385             :                body_copy = NULL; 
  113386             :              } 
  113387             :  
  113388             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113389             : 
  113390             :   // Build an empty copy of this object (will be filled in, but 
  113391             :   // the parent can't be set and must be set by the caller)
  113392           0 :      result = new SgUpirSpmdStatement(  startOfConstruct_copy, body_copy );
  113393           0 :      ROSE_ASSERT(result != NULL);
  113394             : 
  113395             :   // Copy data members of "this" class
  113396             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  113397             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  113398             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  113399           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  113400           0 :      if ( p_endOfConstruct != NULL ) 
  113401             :         { 
  113402           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  113403             :         } 
  113404             :        else 
  113405             :         { 
  113406             :           endOfConstruct_copy = NULL; 
  113407             :         } 
  113408             :   /* check for a valid pointer and delete if present */ 
  113409           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  113410             :   /* add assignment to result here */ 
  113411           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  113412             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  113413             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  113414             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  113415           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  113416           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  113417             :         { 
  113418           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  113419             :         } 
  113420             :        else 
  113421             :         { 
  113422             :           attachedPreprocessingInfoPtr_copy = NULL; 
  113423             :         } 
  113424             :   /* check for a valid pointer and delete if present */ 
  113425           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  113426             :   /* add assignment to result here */ 
  113427           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  113428             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  113429             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  113430             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  113431           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  113432           0 :      if ( p_attributeMechanism != NULL ) 
  113433             :         { 
  113434           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  113435             :         } 
  113436             :        else 
  113437             :         { 
  113438             :           attributeMechanism_copy = NULL; 
  113439             :         } 
  113440             :   /* check for a valid pointer and delete if present */ 
  113441           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  113442             :   /* add assignment to result here */ 
  113443           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  113444             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  113445             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  113446             :   // case: toBeCopied == COPY_DATA for numeric_label
  113447           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  113448           0 :      result->p_numeric_label = numeric_label_copy; 
  113449             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  113450             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  113451             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  113452           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  113453           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  113454             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  113455             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  113456             :   // case: toBeCopied == COPY_DATA for upir_parent
  113457           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  113458           0 :      result->p_upir_parent = upir_parent_copy; 
  113459             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  113460             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  113461             :   // case: toBeCopied == COPY_DATA for upir_children
  113462           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  113463           0 :      result->p_upir_children = upir_children_copy; 
  113464             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  113465           0 :      SgOmpClausePtrList clauses_copy; 
  113466             :   // case: listType for clauses
  113467             :   // case: listType (typeIsPointerToList == false) for clauses
  113468           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  113469           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  113470             :         { 
  113471           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  113472           0 :           SgOmpClause* copy_list_element = NULL; 
  113473           0 :           if (source_list_element != NULL) 
  113474             :              { 
  113475           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  113476             :              } 
  113477             :             else 
  113478             :              { 
  113479             :                copy_list_element = NULL; 
  113480             :              } 
  113481           0 :           clauses_copy.push_back(copy_list_element); 
  113482             :         } 
  113483           0 :      result->p_clauses = clauses_copy; 
  113484             :   // case: listType for clauses
  113485             :   // case: listType (typeIsPointerToList == false) for clauses
  113486           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  113487           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  113488             :         { 
  113489           0 :           SgOmpClause* list_element = *clauses_iterator; 
  113490           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  113491             :              { 
  113492           0 :                list_element->set_parent(result); 
  113493             :              } 
  113494             :         } 
  113495             :   // case: not a listType for (using conditionalToSetParent)body
  113496           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  113497             :              { 
  113498           0 :                body_copy->set_parent(result); 
  113499             :              } 
  113500             : 
  113501             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113502             : 
  113503             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  113504             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  113505             :   // fixupCopy(result,help);
  113506             : 
  113507             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  113508             :   // the Sg_File_Info objects that are built for the new IR nodes.
  113509           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  113510           0 :      if (locatedNode != NULL)
  113511             :         {
  113512             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  113513           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  113514           0 :           ROSE_ASSERT(start != NULL);
  113515             : #if 0
  113516             :        // Debugging information
  113517             :           if (start->get_parent() == NULL)
  113518             :              {
  113519             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113520             :              }
  113521             : #endif
  113522           0 :           start->set_parent(locatedNode);
  113523           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  113524             : 
  113525           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  113526             : 
  113527             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  113528             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  113529             :        // ROSE_ASSERT(end != NULL);
  113530           0 :           if (end == NULL)
  113531             :              {
  113532           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  113533             :              }
  113534             :             else
  113535             :              {
  113536             : #if 0
  113537             :             // Debugging information
  113538             :                if (end->get_parent() == NULL)
  113539             :                   {
  113540             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113541             :                   }
  113542             : #endif
  113543           0 :                end->set_parent(locatedNode);
  113544           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  113545             :              }
  113546             : 
  113547           0 :           SgExpression* expression = isSgExpression(result);
  113548           0 :           if (isSgExpression(this) != NULL)
  113549             :              {
  113550           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  113551             : 
  113552             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  113553           0 :                if (operatorPosition != NULL)
  113554             :                   {
  113555             : #if 0
  113556             :                  // Debugging information
  113557             :                     if (operatorPosition->get_parent() == NULL)
  113558             :                        {
  113559             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113560             :                        }
  113561             : #endif
  113562           0 :                     operatorPosition->set_parent(expression);
  113563           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  113564             :                   }
  113565             :              }
  113566             :         }
  113567             : 
  113568             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  113569           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  113570           0 :      if (initializedName != NULL)
  113571             :         {
  113572             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  113573           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  113574           0 :           ROSE_ASSERT(start != NULL);
  113575             : #if 0
  113576             :        // Debugging information
  113577             :           if (start->get_parent() == NULL)
  113578             :              {
  113579             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113580             :              }
  113581             : #endif
  113582           0 :           start->set_parent(initializedName);
  113583           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  113584             : 
  113585             : #if 0
  113586             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  113587             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  113588             : 
  113589             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  113590             :        // ROSE_ASSERT(end != NULL);
  113591             :           if (end == NULL)
  113592             :              {
  113593             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  113594             :              }
  113595             :             else
  113596             :              {
  113597             :                if (end->get_parent() == NULL)
  113598             :                   {
  113599             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113600             :                   }
  113601             :                end->set_parent(initializedName);
  113602             :                ROSE_ASSERT(end->get_parent() != NULL);
  113603             :              }
  113604             : #endif
  113605             :         }
  113606             : 
  113607             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  113608           0 :      help.insertCopiedNodePair(this,result);
  113609             : 
  113610             :   // printf ("End of copy SgUpirSpmdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  113611             : 
  113612             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  113613             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  113614           0 :      help.decrementDepth();
  113615             : 
  113616             :   // Test if this is the root of the copy!
  113617           0 :      if (help.get_depth() == 0)
  113618             :         {
  113619             :        // This is the original calling node.
  113620             : 
  113621             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  113622             :        // printf ("Calling SgUpirSpmdStatement::fixupCopy() (from root of AST being copied) \n");
  113623             : #if ALT_FIXUP_COPY
  113624             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  113625           0 :           fixupCopy_scopes (result,help);
  113626           0 :           fixupCopy_symbols (result,help);
  113627           0 :           fixupCopy_references (result,help);
  113628             : #else
  113629             :           fixupCopy(result,help);
  113630             : #endif
  113631             :        // Allow this to be called recursively, so accumulate the state.
  113632             :        // Also, clear the state in the SgCopyHelp object.
  113633             :        // help.clearState();
  113634             :         }
  113635             : 
  113636           0 :      return result;
  113637             :    }
  113638             : 
  113639             : 
  113640             : /* #line 113641 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  113641             : 
  113642             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113643             : 
  113644           0 : SgNode* SgOmpTeamsStatement::copy ( SgCopyHelp& help) const
  113645             :    {
  113646           0 :      SgOmpTeamsStatement* result = NULL;
  113647             : 
  113648             :   // printf ("Copy SgOmpTeamsStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  113649             : 
  113650             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  113651             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  113652             :   // The default value of the depth is 0, so after this call the depth is 1!
  113653           0 :      help.incrementDepth();
  113654             : 
  113655             : #if 0
  113656             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  113657             :   // but it is not generally true that things can only be copied once!
  113658             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  113659             :   // AstAttribute* existingAttribute = const_cast<SgOmpTeamsStatement*>(this)->attribute["copied"];
  113660             :      bool previouslyCopied = const_cast<SgOmpTeamsStatement*>(this)->attribute.exists("copied");
  113661             :      if (previouslyCopied == true)
  113662             :         {
  113663             :           this->get_file_info()->display("Called from copy SgOmpTeamsStatement: debug");
  113664             :         }
  113665             :      ROSE_ASSERT(previouslyCopied == false);
  113666             : 
  113667             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  113668             :      AstAttribute* newAttribute = new AstAttribute();
  113669             :      ROSE_ASSERT(newAttribute != NULL);
  113670             : 
  113671             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  113672             :      const_cast<SgOmpTeamsStatement*>(this)->attribute.add("copied",newAttribute);
  113673             : #endif
  113674             : 
  113675             :   // Copy data members from base classes
  113676             :   // Copy constructor parameter data member: startOfConstruct_copy
  113677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  113678             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  113679           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  113680           0 :      if ( p_startOfConstruct != NULL ) 
  113681             :         { 
  113682           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  113683             :         } 
  113684             :        else 
  113685             :         { 
  113686             :           startOfConstruct_copy = NULL; 
  113687             :         } 
  113688             :   // Copy constructor parameter data member: body_copy
  113689           0 :      SgStatement* body_copy; 
  113690             :   // case: not a listType for (using conditionalToCopyVariable)body
  113691           0 :           if (get_body() != NULL) 
  113692             :              { 
  113693           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  113694             :              } 
  113695             :             else 
  113696             :              { 
  113697             :                body_copy = NULL; 
  113698             :              } 
  113699             :  
  113700             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113701             : 
  113702             :   // Build an empty copy of this object (will be filled in, but 
  113703             :   // the parent can't be set and must be set by the caller)
  113704           0 :      result = new SgOmpTeamsStatement(  startOfConstruct_copy, body_copy );
  113705           0 :      ROSE_ASSERT(result != NULL);
  113706             : 
  113707             :   // Copy data members of "this" class
  113708             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  113709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  113710             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  113711           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  113712           0 :      if ( p_endOfConstruct != NULL ) 
  113713             :         { 
  113714           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  113715             :         } 
  113716             :        else 
  113717             :         { 
  113718             :           endOfConstruct_copy = NULL; 
  113719             :         } 
  113720             :   /* check for a valid pointer and delete if present */ 
  113721           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  113722             :   /* add assignment to result here */ 
  113723           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  113724             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  113725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  113726             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  113727           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  113728           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  113729             :         { 
  113730           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  113731             :         } 
  113732             :        else 
  113733             :         { 
  113734             :           attachedPreprocessingInfoPtr_copy = NULL; 
  113735             :         } 
  113736             :   /* check for a valid pointer and delete if present */ 
  113737           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  113738             :   /* add assignment to result here */ 
  113739           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  113740             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  113741             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  113742             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  113743           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  113744           0 :      if ( p_attributeMechanism != NULL ) 
  113745             :         { 
  113746           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  113747             :         } 
  113748             :        else 
  113749             :         { 
  113750             :           attributeMechanism_copy = NULL; 
  113751             :         } 
  113752             :   /* check for a valid pointer and delete if present */ 
  113753           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  113754             :   /* add assignment to result here */ 
  113755           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  113756             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  113757             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  113758             :   // case: toBeCopied == COPY_DATA for numeric_label
  113759           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  113760           0 :      result->p_numeric_label = numeric_label_copy; 
  113761             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  113762             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  113763             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  113764           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  113765           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  113766             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  113767             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  113768             :   // case: toBeCopied == COPY_DATA for upir_parent
  113769           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  113770           0 :      result->p_upir_parent = upir_parent_copy; 
  113771             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  113772             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  113773             :   // case: toBeCopied == COPY_DATA for upir_children
  113774           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  113775           0 :      result->p_upir_children = upir_children_copy; 
  113776             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  113777           0 :      SgOmpClausePtrList clauses_copy; 
  113778             :   // case: listType for clauses
  113779             :   // case: listType (typeIsPointerToList == false) for clauses
  113780           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  113781           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  113782             :         { 
  113783           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  113784           0 :           SgOmpClause* copy_list_element = NULL; 
  113785           0 :           if (source_list_element != NULL) 
  113786             :              { 
  113787           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  113788             :              } 
  113789             :             else 
  113790             :              { 
  113791             :                copy_list_element = NULL; 
  113792             :              } 
  113793           0 :           clauses_copy.push_back(copy_list_element); 
  113794             :         } 
  113795           0 :      result->p_clauses = clauses_copy; 
  113796             :   // case: listType for clauses
  113797             :   // case: listType (typeIsPointerToList == false) for clauses
  113798           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  113799           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  113800             :         { 
  113801           0 :           SgOmpClause* list_element = *clauses_iterator; 
  113802           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  113803             :              { 
  113804           0 :                list_element->set_parent(result); 
  113805             :              } 
  113806             :         } 
  113807             :   // case: not a listType for (using conditionalToSetParent)body
  113808           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  113809             :              { 
  113810           0 :                body_copy->set_parent(result); 
  113811             :              } 
  113812             : 
  113813             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113814             : 
  113815             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  113816             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  113817             :   // fixupCopy(result,help);
  113818             : 
  113819             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  113820             :   // the Sg_File_Info objects that are built for the new IR nodes.
  113821           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  113822           0 :      if (locatedNode != NULL)
  113823             :         {
  113824             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  113825           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  113826           0 :           ROSE_ASSERT(start != NULL);
  113827             : #if 0
  113828             :        // Debugging information
  113829             :           if (start->get_parent() == NULL)
  113830             :              {
  113831             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113832             :              }
  113833             : #endif
  113834           0 :           start->set_parent(locatedNode);
  113835           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  113836             : 
  113837           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  113838             : 
  113839             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  113840             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  113841             :        // ROSE_ASSERT(end != NULL);
  113842           0 :           if (end == NULL)
  113843             :              {
  113844           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  113845             :              }
  113846             :             else
  113847             :              {
  113848             : #if 0
  113849             :             // Debugging information
  113850             :                if (end->get_parent() == NULL)
  113851             :                   {
  113852             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113853             :                   }
  113854             : #endif
  113855           0 :                end->set_parent(locatedNode);
  113856           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  113857             :              }
  113858             : 
  113859           0 :           SgExpression* expression = isSgExpression(result);
  113860           0 :           if (isSgExpression(this) != NULL)
  113861             :              {
  113862           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  113863             : 
  113864             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  113865           0 :                if (operatorPosition != NULL)
  113866             :                   {
  113867             : #if 0
  113868             :                  // Debugging information
  113869             :                     if (operatorPosition->get_parent() == NULL)
  113870             :                        {
  113871             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113872             :                        }
  113873             : #endif
  113874           0 :                     operatorPosition->set_parent(expression);
  113875           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  113876             :                   }
  113877             :              }
  113878             :         }
  113879             : 
  113880             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  113881           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  113882           0 :      if (initializedName != NULL)
  113883             :         {
  113884             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  113885           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  113886           0 :           ROSE_ASSERT(start != NULL);
  113887             : #if 0
  113888             :        // Debugging information
  113889             :           if (start->get_parent() == NULL)
  113890             :              {
  113891             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113892             :              }
  113893             : #endif
  113894           0 :           start->set_parent(initializedName);
  113895           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  113896             : 
  113897             : #if 0
  113898             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  113899             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  113900             : 
  113901             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  113902             :        // ROSE_ASSERT(end != NULL);
  113903             :           if (end == NULL)
  113904             :              {
  113905             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  113906             :              }
  113907             :             else
  113908             :              {
  113909             :                if (end->get_parent() == NULL)
  113910             :                   {
  113911             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  113912             :                   }
  113913             :                end->set_parent(initializedName);
  113914             :                ROSE_ASSERT(end->get_parent() != NULL);
  113915             :              }
  113916             : #endif
  113917             :         }
  113918             : 
  113919             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  113920           0 :      help.insertCopiedNodePair(this,result);
  113921             : 
  113922             :   // printf ("End of copy SgOmpTeamsStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  113923             : 
  113924             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  113925             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  113926           0 :      help.decrementDepth();
  113927             : 
  113928             :   // Test if this is the root of the copy!
  113929           0 :      if (help.get_depth() == 0)
  113930             :         {
  113931             :        // This is the original calling node.
  113932             : 
  113933             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  113934             :        // printf ("Calling SgOmpTeamsStatement::fixupCopy() (from root of AST being copied) \n");
  113935             : #if ALT_FIXUP_COPY
  113936             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  113937           0 :           fixupCopy_scopes (result,help);
  113938           0 :           fixupCopy_symbols (result,help);
  113939           0 :           fixupCopy_references (result,help);
  113940             : #else
  113941             :           fixupCopy(result,help);
  113942             : #endif
  113943             :        // Allow this to be called recursively, so accumulate the state.
  113944             :        // Also, clear the state in the SgCopyHelp object.
  113945             :        // help.clearState();
  113946             :         }
  113947             : 
  113948           0 :      return result;
  113949             :    }
  113950             : 
  113951             : 
  113952             : /* #line 113953 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  113953             : 
  113954             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  113955             : 
  113956           0 : SgNode* SgOmpSingleStatement::copy ( SgCopyHelp& help) const
  113957             :    {
  113958           0 :      SgOmpSingleStatement* result = NULL;
  113959             : 
  113960             :   // printf ("Copy SgOmpSingleStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  113961             : 
  113962             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  113963             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  113964             :   // The default value of the depth is 0, so after this call the depth is 1!
  113965           0 :      help.incrementDepth();
  113966             : 
  113967             : #if 0
  113968             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  113969             :   // but it is not generally true that things can only be copied once!
  113970             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  113971             :   // AstAttribute* existingAttribute = const_cast<SgOmpSingleStatement*>(this)->attribute["copied"];
  113972             :      bool previouslyCopied = const_cast<SgOmpSingleStatement*>(this)->attribute.exists("copied");
  113973             :      if (previouslyCopied == true)
  113974             :         {
  113975             :           this->get_file_info()->display("Called from copy SgOmpSingleStatement: debug");
  113976             :         }
  113977             :      ROSE_ASSERT(previouslyCopied == false);
  113978             : 
  113979             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  113980             :      AstAttribute* newAttribute = new AstAttribute();
  113981             :      ROSE_ASSERT(newAttribute != NULL);
  113982             : 
  113983             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  113984             :      const_cast<SgOmpSingleStatement*>(this)->attribute.add("copied",newAttribute);
  113985             : #endif
  113986             : 
  113987             :   // Copy data members from base classes
  113988             :   // Copy constructor parameter data member: startOfConstruct_copy
  113989             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  113990             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  113991           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  113992           0 :      if ( p_startOfConstruct != NULL ) 
  113993             :         { 
  113994           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  113995             :         } 
  113996             :        else 
  113997             :         { 
  113998             :           startOfConstruct_copy = NULL; 
  113999             :         } 
  114000             :   // Copy constructor parameter data member: body_copy
  114001           0 :      SgStatement* body_copy; 
  114002             :   // case: not a listType for (using conditionalToCopyVariable)body
  114003           0 :           if (get_body() != NULL) 
  114004             :              { 
  114005           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  114006             :              } 
  114007             :             else 
  114008             :              { 
  114009             :                body_copy = NULL; 
  114010             :              } 
  114011             :  
  114012             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114013             : 
  114014             :   // Build an empty copy of this object (will be filled in, but 
  114015             :   // the parent can't be set and must be set by the caller)
  114016           0 :      result = new SgOmpSingleStatement(  startOfConstruct_copy, body_copy );
  114017           0 :      ROSE_ASSERT(result != NULL);
  114018             : 
  114019             :   // Copy data members of "this" class
  114020             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  114021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  114022             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  114023           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  114024           0 :      if ( p_endOfConstruct != NULL ) 
  114025             :         { 
  114026           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  114027             :         } 
  114028             :        else 
  114029             :         { 
  114030             :           endOfConstruct_copy = NULL; 
  114031             :         } 
  114032             :   /* check for a valid pointer and delete if present */ 
  114033           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  114034             :   /* add assignment to result here */ 
  114035           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  114036             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  114037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  114038             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  114039           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  114040           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  114041             :         { 
  114042           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  114043             :         } 
  114044             :        else 
  114045             :         { 
  114046             :           attachedPreprocessingInfoPtr_copy = NULL; 
  114047             :         } 
  114048             :   /* check for a valid pointer and delete if present */ 
  114049           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  114050             :   /* add assignment to result here */ 
  114051           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  114052             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  114053             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  114054             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  114055           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  114056           0 :      if ( p_attributeMechanism != NULL ) 
  114057             :         { 
  114058           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  114059             :         } 
  114060             :        else 
  114061             :         { 
  114062             :           attributeMechanism_copy = NULL; 
  114063             :         } 
  114064             :   /* check for a valid pointer and delete if present */ 
  114065           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  114066             :   /* add assignment to result here */ 
  114067           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  114068             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  114069             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  114070             :   // case: toBeCopied == COPY_DATA for numeric_label
  114071           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  114072           0 :      result->p_numeric_label = numeric_label_copy; 
  114073             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  114074             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  114075             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  114076           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  114077           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  114078             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  114079             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  114080             :   // case: toBeCopied == COPY_DATA for upir_parent
  114081           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  114082           0 :      result->p_upir_parent = upir_parent_copy; 
  114083             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  114084             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  114085             :   // case: toBeCopied == COPY_DATA for upir_children
  114086           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  114087           0 :      result->p_upir_children = upir_children_copy; 
  114088             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  114089           0 :      SgOmpClausePtrList clauses_copy; 
  114090             :   // case: listType for clauses
  114091             :   // case: listType (typeIsPointerToList == false) for clauses
  114092           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  114093           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  114094             :         { 
  114095           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  114096           0 :           SgOmpClause* copy_list_element = NULL; 
  114097           0 :           if (source_list_element != NULL) 
  114098             :              { 
  114099           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  114100             :              } 
  114101             :             else 
  114102             :              { 
  114103             :                copy_list_element = NULL; 
  114104             :              } 
  114105           0 :           clauses_copy.push_back(copy_list_element); 
  114106             :         } 
  114107           0 :      result->p_clauses = clauses_copy; 
  114108             :   // case: listType for clauses
  114109             :   // case: listType (typeIsPointerToList == false) for clauses
  114110           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  114111           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  114112             :         { 
  114113           0 :           SgOmpClause* list_element = *clauses_iterator; 
  114114           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  114115             :              { 
  114116           0 :                list_element->set_parent(result); 
  114117             :              } 
  114118             :         } 
  114119             :   // case: not a listType for (using conditionalToSetParent)body
  114120           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  114121             :              { 
  114122           0 :                body_copy->set_parent(result); 
  114123             :              } 
  114124             : 
  114125             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114126             : 
  114127             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  114128             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  114129             :   // fixupCopy(result,help);
  114130             : 
  114131             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  114132             :   // the Sg_File_Info objects that are built for the new IR nodes.
  114133           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  114134           0 :      if (locatedNode != NULL)
  114135             :         {
  114136             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  114137           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  114138           0 :           ROSE_ASSERT(start != NULL);
  114139             : #if 0
  114140             :        // Debugging information
  114141             :           if (start->get_parent() == NULL)
  114142             :              {
  114143             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114144             :              }
  114145             : #endif
  114146           0 :           start->set_parent(locatedNode);
  114147           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  114148             : 
  114149           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  114150             : 
  114151             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  114152             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  114153             :        // ROSE_ASSERT(end != NULL);
  114154           0 :           if (end == NULL)
  114155             :              {
  114156           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  114157             :              }
  114158             :             else
  114159             :              {
  114160             : #if 0
  114161             :             // Debugging information
  114162             :                if (end->get_parent() == NULL)
  114163             :                   {
  114164             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114165             :                   }
  114166             : #endif
  114167           0 :                end->set_parent(locatedNode);
  114168           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  114169             :              }
  114170             : 
  114171           0 :           SgExpression* expression = isSgExpression(result);
  114172           0 :           if (isSgExpression(this) != NULL)
  114173             :              {
  114174           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  114175             : 
  114176             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  114177           0 :                if (operatorPosition != NULL)
  114178             :                   {
  114179             : #if 0
  114180             :                  // Debugging information
  114181             :                     if (operatorPosition->get_parent() == NULL)
  114182             :                        {
  114183             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114184             :                        }
  114185             : #endif
  114186           0 :                     operatorPosition->set_parent(expression);
  114187           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  114188             :                   }
  114189             :              }
  114190             :         }
  114191             : 
  114192             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  114193           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  114194           0 :      if (initializedName != NULL)
  114195             :         {
  114196             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  114197           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  114198           0 :           ROSE_ASSERT(start != NULL);
  114199             : #if 0
  114200             :        // Debugging information
  114201             :           if (start->get_parent() == NULL)
  114202             :              {
  114203             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114204             :              }
  114205             : #endif
  114206           0 :           start->set_parent(initializedName);
  114207           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  114208             : 
  114209             : #if 0
  114210             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  114211             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  114212             : 
  114213             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  114214             :        // ROSE_ASSERT(end != NULL);
  114215             :           if (end == NULL)
  114216             :              {
  114217             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  114218             :              }
  114219             :             else
  114220             :              {
  114221             :                if (end->get_parent() == NULL)
  114222             :                   {
  114223             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114224             :                   }
  114225             :                end->set_parent(initializedName);
  114226             :                ROSE_ASSERT(end->get_parent() != NULL);
  114227             :              }
  114228             : #endif
  114229             :         }
  114230             : 
  114231             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  114232           0 :      help.insertCopiedNodePair(this,result);
  114233             : 
  114234             :   // printf ("End of copy SgOmpSingleStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  114235             : 
  114236             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  114237             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  114238           0 :      help.decrementDepth();
  114239             : 
  114240             :   // Test if this is the root of the copy!
  114241           0 :      if (help.get_depth() == 0)
  114242             :         {
  114243             :        // This is the original calling node.
  114244             : 
  114245             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  114246             :        // printf ("Calling SgOmpSingleStatement::fixupCopy() (from root of AST being copied) \n");
  114247             : #if ALT_FIXUP_COPY
  114248             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  114249           0 :           fixupCopy_scopes (result,help);
  114250           0 :           fixupCopy_symbols (result,help);
  114251           0 :           fixupCopy_references (result,help);
  114252             : #else
  114253             :           fixupCopy(result,help);
  114254             : #endif
  114255             :        // Allow this to be called recursively, so accumulate the state.
  114256             :        // Also, clear the state in the SgCopyHelp object.
  114257             :        // help.clearState();
  114258             :         }
  114259             : 
  114260           0 :      return result;
  114261             :    }
  114262             : 
  114263             : 
  114264             : /* #line 114265 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  114265             : 
  114266             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114267             : 
  114268           0 : SgNode* SgOmpAtomicStatement::copy ( SgCopyHelp& help) const
  114269             :    {
  114270           0 :      SgOmpAtomicStatement* result = NULL;
  114271             : 
  114272             :   // printf ("Copy SgOmpAtomicStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  114273             : 
  114274             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  114275             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  114276             :   // The default value of the depth is 0, so after this call the depth is 1!
  114277           0 :      help.incrementDepth();
  114278             : 
  114279             : #if 0
  114280             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  114281             :   // but it is not generally true that things can only be copied once!
  114282             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  114283             :   // AstAttribute* existingAttribute = const_cast<SgOmpAtomicStatement*>(this)->attribute["copied"];
  114284             :      bool previouslyCopied = const_cast<SgOmpAtomicStatement*>(this)->attribute.exists("copied");
  114285             :      if (previouslyCopied == true)
  114286             :         {
  114287             :           this->get_file_info()->display("Called from copy SgOmpAtomicStatement: debug");
  114288             :         }
  114289             :      ROSE_ASSERT(previouslyCopied == false);
  114290             : 
  114291             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  114292             :      AstAttribute* newAttribute = new AstAttribute();
  114293             :      ROSE_ASSERT(newAttribute != NULL);
  114294             : 
  114295             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  114296             :      const_cast<SgOmpAtomicStatement*>(this)->attribute.add("copied",newAttribute);
  114297             : #endif
  114298             : 
  114299             :   // Copy data members from base classes
  114300             :   // Copy constructor parameter data member: startOfConstruct_copy
  114301             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  114302             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  114303           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  114304           0 :      if ( p_startOfConstruct != NULL ) 
  114305             :         { 
  114306           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  114307             :         } 
  114308             :        else 
  114309             :         { 
  114310             :           startOfConstruct_copy = NULL; 
  114311             :         } 
  114312             :   // Copy constructor parameter data member: body_copy
  114313           0 :      SgStatement* body_copy; 
  114314             :   // case: not a listType for (using conditionalToCopyVariable)body
  114315           0 :           if (get_body() != NULL) 
  114316             :              { 
  114317           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  114318             :              } 
  114319             :             else 
  114320             :              { 
  114321             :                body_copy = NULL; 
  114322             :              } 
  114323             :  
  114324             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114325             : 
  114326             :   // Build an empty copy of this object (will be filled in, but 
  114327             :   // the parent can't be set and must be set by the caller)
  114328           0 :      result = new SgOmpAtomicStatement(  startOfConstruct_copy, body_copy );
  114329           0 :      ROSE_ASSERT(result != NULL);
  114330             : 
  114331             :   // Copy data members of "this" class
  114332             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  114333             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  114334             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  114335           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  114336           0 :      if ( p_endOfConstruct != NULL ) 
  114337             :         { 
  114338           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  114339             :         } 
  114340             :        else 
  114341             :         { 
  114342             :           endOfConstruct_copy = NULL; 
  114343             :         } 
  114344             :   /* check for a valid pointer and delete if present */ 
  114345           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  114346             :   /* add assignment to result here */ 
  114347           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  114348             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  114349             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  114350             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  114351           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  114352           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  114353             :         { 
  114354           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  114355             :         } 
  114356             :        else 
  114357             :         { 
  114358             :           attachedPreprocessingInfoPtr_copy = NULL; 
  114359             :         } 
  114360             :   /* check for a valid pointer and delete if present */ 
  114361           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  114362             :   /* add assignment to result here */ 
  114363           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  114364             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  114365             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  114366             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  114367           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  114368           0 :      if ( p_attributeMechanism != NULL ) 
  114369             :         { 
  114370           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  114371             :         } 
  114372             :        else 
  114373             :         { 
  114374             :           attributeMechanism_copy = NULL; 
  114375             :         } 
  114376             :   /* check for a valid pointer and delete if present */ 
  114377           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  114378             :   /* add assignment to result here */ 
  114379           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  114380             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  114381             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  114382             :   // case: toBeCopied == COPY_DATA for numeric_label
  114383           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  114384           0 :      result->p_numeric_label = numeric_label_copy; 
  114385             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  114386             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  114387             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  114388           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  114389           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  114390             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  114391             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  114392             :   // case: toBeCopied == COPY_DATA for upir_parent
  114393           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  114394           0 :      result->p_upir_parent = upir_parent_copy; 
  114395             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  114396             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  114397             :   // case: toBeCopied == COPY_DATA for upir_children
  114398           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  114399           0 :      result->p_upir_children = upir_children_copy; 
  114400             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  114401           0 :      SgOmpClausePtrList clauses_copy; 
  114402             :   // case: listType for clauses
  114403             :   // case: listType (typeIsPointerToList == false) for clauses
  114404           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  114405           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  114406             :         { 
  114407           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  114408           0 :           SgOmpClause* copy_list_element = NULL; 
  114409           0 :           if (source_list_element != NULL) 
  114410             :              { 
  114411           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  114412             :              } 
  114413             :             else 
  114414             :              { 
  114415             :                copy_list_element = NULL; 
  114416             :              } 
  114417           0 :           clauses_copy.push_back(copy_list_element); 
  114418             :         } 
  114419           0 :      result->p_clauses = clauses_copy; 
  114420             :   // case: listType for clauses
  114421             :   // case: listType (typeIsPointerToList == false) for clauses
  114422           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  114423           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  114424             :         { 
  114425           0 :           SgOmpClause* list_element = *clauses_iterator; 
  114426           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  114427             :              { 
  114428           0 :                list_element->set_parent(result); 
  114429             :              } 
  114430             :         } 
  114431             :   // case: not a listType for (using conditionalToSetParent)body
  114432           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  114433             :              { 
  114434           0 :                body_copy->set_parent(result); 
  114435             :              } 
  114436             : 
  114437             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114438             : 
  114439             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  114440             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  114441             :   // fixupCopy(result,help);
  114442             : 
  114443             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  114444             :   // the Sg_File_Info objects that are built for the new IR nodes.
  114445           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  114446           0 :      if (locatedNode != NULL)
  114447             :         {
  114448             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  114449           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  114450           0 :           ROSE_ASSERT(start != NULL);
  114451             : #if 0
  114452             :        // Debugging information
  114453             :           if (start->get_parent() == NULL)
  114454             :              {
  114455             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114456             :              }
  114457             : #endif
  114458           0 :           start->set_parent(locatedNode);
  114459           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  114460             : 
  114461           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  114462             : 
  114463             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  114464             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  114465             :        // ROSE_ASSERT(end != NULL);
  114466           0 :           if (end == NULL)
  114467             :              {
  114468           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  114469             :              }
  114470             :             else
  114471             :              {
  114472             : #if 0
  114473             :             // Debugging information
  114474             :                if (end->get_parent() == NULL)
  114475             :                   {
  114476             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114477             :                   }
  114478             : #endif
  114479           0 :                end->set_parent(locatedNode);
  114480           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  114481             :              }
  114482             : 
  114483           0 :           SgExpression* expression = isSgExpression(result);
  114484           0 :           if (isSgExpression(this) != NULL)
  114485             :              {
  114486           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  114487             : 
  114488             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  114489           0 :                if (operatorPosition != NULL)
  114490             :                   {
  114491             : #if 0
  114492             :                  // Debugging information
  114493             :                     if (operatorPosition->get_parent() == NULL)
  114494             :                        {
  114495             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114496             :                        }
  114497             : #endif
  114498           0 :                     operatorPosition->set_parent(expression);
  114499           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  114500             :                   }
  114501             :              }
  114502             :         }
  114503             : 
  114504             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  114505           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  114506           0 :      if (initializedName != NULL)
  114507             :         {
  114508             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  114509           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  114510           0 :           ROSE_ASSERT(start != NULL);
  114511             : #if 0
  114512             :        // Debugging information
  114513             :           if (start->get_parent() == NULL)
  114514             :              {
  114515             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114516             :              }
  114517             : #endif
  114518           0 :           start->set_parent(initializedName);
  114519           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  114520             : 
  114521             : #if 0
  114522             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  114523             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  114524             : 
  114525             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  114526             :        // ROSE_ASSERT(end != NULL);
  114527             :           if (end == NULL)
  114528             :              {
  114529             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  114530             :              }
  114531             :             else
  114532             :              {
  114533             :                if (end->get_parent() == NULL)
  114534             :                   {
  114535             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114536             :                   }
  114537             :                end->set_parent(initializedName);
  114538             :                ROSE_ASSERT(end->get_parent() != NULL);
  114539             :              }
  114540             : #endif
  114541             :         }
  114542             : 
  114543             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  114544           0 :      help.insertCopiedNodePair(this,result);
  114545             : 
  114546             :   // printf ("End of copy SgOmpAtomicStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  114547             : 
  114548             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  114549             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  114550           0 :      help.decrementDepth();
  114551             : 
  114552             :   // Test if this is the root of the copy!
  114553           0 :      if (help.get_depth() == 0)
  114554             :         {
  114555             :        // This is the original calling node.
  114556             : 
  114557             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  114558             :        // printf ("Calling SgOmpAtomicStatement::fixupCopy() (from root of AST being copied) \n");
  114559             : #if ALT_FIXUP_COPY
  114560             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  114561           0 :           fixupCopy_scopes (result,help);
  114562           0 :           fixupCopy_symbols (result,help);
  114563           0 :           fixupCopy_references (result,help);
  114564             : #else
  114565             :           fixupCopy(result,help);
  114566             : #endif
  114567             :        // Allow this to be called recursively, so accumulate the state.
  114568             :        // Also, clear the state in the SgCopyHelp object.
  114569             :        // help.clearState();
  114570             :         }
  114571             : 
  114572           0 :      return result;
  114573             :    }
  114574             : 
  114575             : 
  114576             : /* #line 114577 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  114577             : 
  114578             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114579             : 
  114580           0 : SgNode* SgOmpScanStatement::copy ( SgCopyHelp& help) const
  114581             :    {
  114582           0 :      SgOmpScanStatement* result = NULL;
  114583             : 
  114584             :   // printf ("Copy SgOmpScanStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  114585             : 
  114586             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  114587             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  114588             :   // The default value of the depth is 0, so after this call the depth is 1!
  114589           0 :      help.incrementDepth();
  114590             : 
  114591             : #if 0
  114592             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  114593             :   // but it is not generally true that things can only be copied once!
  114594             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  114595             :   // AstAttribute* existingAttribute = const_cast<SgOmpScanStatement*>(this)->attribute["copied"];
  114596             :      bool previouslyCopied = const_cast<SgOmpScanStatement*>(this)->attribute.exists("copied");
  114597             :      if (previouslyCopied == true)
  114598             :         {
  114599             :           this->get_file_info()->display("Called from copy SgOmpScanStatement: debug");
  114600             :         }
  114601             :      ROSE_ASSERT(previouslyCopied == false);
  114602             : 
  114603             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  114604             :      AstAttribute* newAttribute = new AstAttribute();
  114605             :      ROSE_ASSERT(newAttribute != NULL);
  114606             : 
  114607             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  114608             :      const_cast<SgOmpScanStatement*>(this)->attribute.add("copied",newAttribute);
  114609             : #endif
  114610             : 
  114611             :   // Copy data members from base classes
  114612             :   // Copy constructor parameter data member: startOfConstruct_copy
  114613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  114614             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  114615           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  114616           0 :      if ( p_startOfConstruct != NULL ) 
  114617             :         { 
  114618           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  114619             :         } 
  114620             :        else 
  114621             :         { 
  114622             :           startOfConstruct_copy = NULL; 
  114623             :         } 
  114624             :   // Copy constructor parameter data member: body_copy
  114625           0 :      SgStatement* body_copy; 
  114626             :   // case: not a listType for (using conditionalToCopyVariable)body
  114627           0 :           if (get_body() != NULL) 
  114628             :              { 
  114629           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  114630             :              } 
  114631             :             else 
  114632             :              { 
  114633             :                body_copy = NULL; 
  114634             :              } 
  114635             :  
  114636             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114637             : 
  114638             :   // Build an empty copy of this object (will be filled in, but 
  114639             :   // the parent can't be set and must be set by the caller)
  114640           0 :      result = new SgOmpScanStatement(  startOfConstruct_copy, body_copy );
  114641           0 :      ROSE_ASSERT(result != NULL);
  114642             : 
  114643             :   // Copy data members of "this" class
  114644             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  114645             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  114646             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  114647           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  114648           0 :      if ( p_endOfConstruct != NULL ) 
  114649             :         { 
  114650           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  114651             :         } 
  114652             :        else 
  114653             :         { 
  114654             :           endOfConstruct_copy = NULL; 
  114655             :         } 
  114656             :   /* check for a valid pointer and delete if present */ 
  114657           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  114658             :   /* add assignment to result here */ 
  114659           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  114660             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  114661             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  114662             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  114663           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  114664           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  114665             :         { 
  114666           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  114667             :         } 
  114668             :        else 
  114669             :         { 
  114670             :           attachedPreprocessingInfoPtr_copy = NULL; 
  114671             :         } 
  114672             :   /* check for a valid pointer and delete if present */ 
  114673           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  114674             :   /* add assignment to result here */ 
  114675           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  114676             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  114677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  114678             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  114679           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  114680           0 :      if ( p_attributeMechanism != NULL ) 
  114681             :         { 
  114682           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  114683             :         } 
  114684             :        else 
  114685             :         { 
  114686             :           attributeMechanism_copy = NULL; 
  114687             :         } 
  114688             :   /* check for a valid pointer and delete if present */ 
  114689           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  114690             :   /* add assignment to result here */ 
  114691           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  114692             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  114693             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  114694             :   // case: toBeCopied == COPY_DATA for numeric_label
  114695           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  114696           0 :      result->p_numeric_label = numeric_label_copy; 
  114697             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  114698             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  114699             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  114700           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  114701           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  114702             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  114703             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  114704             :   // case: toBeCopied == COPY_DATA for upir_parent
  114705           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  114706           0 :      result->p_upir_parent = upir_parent_copy; 
  114707             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  114708             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  114709             :   // case: toBeCopied == COPY_DATA for upir_children
  114710           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  114711           0 :      result->p_upir_children = upir_children_copy; 
  114712             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  114713           0 :      SgOmpClausePtrList clauses_copy; 
  114714             :   // case: listType for clauses
  114715             :   // case: listType (typeIsPointerToList == false) for clauses
  114716           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  114717           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  114718             :         { 
  114719           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  114720           0 :           SgOmpClause* copy_list_element = NULL; 
  114721           0 :           if (source_list_element != NULL) 
  114722             :              { 
  114723           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  114724             :              } 
  114725             :             else 
  114726             :              { 
  114727             :                copy_list_element = NULL; 
  114728             :              } 
  114729           0 :           clauses_copy.push_back(copy_list_element); 
  114730             :         } 
  114731           0 :      result->p_clauses = clauses_copy; 
  114732             :   // case: listType for clauses
  114733             :   // case: listType (typeIsPointerToList == false) for clauses
  114734           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  114735           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  114736             :         { 
  114737           0 :           SgOmpClause* list_element = *clauses_iterator; 
  114738           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  114739             :              { 
  114740           0 :                list_element->set_parent(result); 
  114741             :              } 
  114742             :         } 
  114743             :   // case: not a listType for (using conditionalToSetParent)body
  114744           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  114745             :              { 
  114746           0 :                body_copy->set_parent(result); 
  114747             :              } 
  114748             : 
  114749             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114750             : 
  114751             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  114752             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  114753             :   // fixupCopy(result,help);
  114754             : 
  114755             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  114756             :   // the Sg_File_Info objects that are built for the new IR nodes.
  114757           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  114758           0 :      if (locatedNode != NULL)
  114759             :         {
  114760             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  114761           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  114762           0 :           ROSE_ASSERT(start != NULL);
  114763             : #if 0
  114764             :        // Debugging information
  114765             :           if (start->get_parent() == NULL)
  114766             :              {
  114767             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114768             :              }
  114769             : #endif
  114770           0 :           start->set_parent(locatedNode);
  114771           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  114772             : 
  114773           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  114774             : 
  114775             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  114776             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  114777             :        // ROSE_ASSERT(end != NULL);
  114778           0 :           if (end == NULL)
  114779             :              {
  114780           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  114781             :              }
  114782             :             else
  114783             :              {
  114784             : #if 0
  114785             :             // Debugging information
  114786             :                if (end->get_parent() == NULL)
  114787             :                   {
  114788             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114789             :                   }
  114790             : #endif
  114791           0 :                end->set_parent(locatedNode);
  114792           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  114793             :              }
  114794             : 
  114795           0 :           SgExpression* expression = isSgExpression(result);
  114796           0 :           if (isSgExpression(this) != NULL)
  114797             :              {
  114798           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  114799             : 
  114800             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  114801           0 :                if (operatorPosition != NULL)
  114802             :                   {
  114803             : #if 0
  114804             :                  // Debugging information
  114805             :                     if (operatorPosition->get_parent() == NULL)
  114806             :                        {
  114807             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114808             :                        }
  114809             : #endif
  114810           0 :                     operatorPosition->set_parent(expression);
  114811           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  114812             :                   }
  114813             :              }
  114814             :         }
  114815             : 
  114816             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  114817           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  114818           0 :      if (initializedName != NULL)
  114819             :         {
  114820             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  114821           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  114822           0 :           ROSE_ASSERT(start != NULL);
  114823             : #if 0
  114824             :        // Debugging information
  114825             :           if (start->get_parent() == NULL)
  114826             :              {
  114827             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114828             :              }
  114829             : #endif
  114830           0 :           start->set_parent(initializedName);
  114831           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  114832             : 
  114833             : #if 0
  114834             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  114835             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  114836             : 
  114837             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  114838             :        // ROSE_ASSERT(end != NULL);
  114839             :           if (end == NULL)
  114840             :              {
  114841             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  114842             :              }
  114843             :             else
  114844             :              {
  114845             :                if (end->get_parent() == NULL)
  114846             :                   {
  114847             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  114848             :                   }
  114849             :                end->set_parent(initializedName);
  114850             :                ROSE_ASSERT(end->get_parent() != NULL);
  114851             :              }
  114852             : #endif
  114853             :         }
  114854             : 
  114855             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  114856           0 :      help.insertCopiedNodePair(this,result);
  114857             : 
  114858             :   // printf ("End of copy SgOmpScanStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  114859             : 
  114860             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  114861             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  114862           0 :      help.decrementDepth();
  114863             : 
  114864             :   // Test if this is the root of the copy!
  114865           0 :      if (help.get_depth() == 0)
  114866             :         {
  114867             :        // This is the original calling node.
  114868             : 
  114869             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  114870             :        // printf ("Calling SgOmpScanStatement::fixupCopy() (from root of AST being copied) \n");
  114871             : #if ALT_FIXUP_COPY
  114872             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  114873           0 :           fixupCopy_scopes (result,help);
  114874           0 :           fixupCopy_symbols (result,help);
  114875           0 :           fixupCopy_references (result,help);
  114876             : #else
  114877             :           fixupCopy(result,help);
  114878             : #endif
  114879             :        // Allow this to be called recursively, so accumulate the state.
  114880             :        // Also, clear the state in the SgCopyHelp object.
  114881             :        // help.clearState();
  114882             :         }
  114883             : 
  114884           0 :      return result;
  114885             :    }
  114886             : 
  114887             : 
  114888             : /* #line 114889 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  114889             : 
  114890             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114891             : 
  114892           0 : SgNode* SgOmpMetadirectiveStatement::copy ( SgCopyHelp& help) const
  114893             :    {
  114894           0 :      SgOmpMetadirectiveStatement* result = NULL;
  114895             : 
  114896             :   // printf ("Copy SgOmpMetadirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  114897             : 
  114898             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  114899             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  114900             :   // The default value of the depth is 0, so after this call the depth is 1!
  114901           0 :      help.incrementDepth();
  114902             : 
  114903             : #if 0
  114904             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  114905             :   // but it is not generally true that things can only be copied once!
  114906             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  114907             :   // AstAttribute* existingAttribute = const_cast<SgOmpMetadirectiveStatement*>(this)->attribute["copied"];
  114908             :      bool previouslyCopied = const_cast<SgOmpMetadirectiveStatement*>(this)->attribute.exists("copied");
  114909             :      if (previouslyCopied == true)
  114910             :         {
  114911             :           this->get_file_info()->display("Called from copy SgOmpMetadirectiveStatement: debug");
  114912             :         }
  114913             :      ROSE_ASSERT(previouslyCopied == false);
  114914             : 
  114915             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  114916             :      AstAttribute* newAttribute = new AstAttribute();
  114917             :      ROSE_ASSERT(newAttribute != NULL);
  114918             : 
  114919             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  114920             :      const_cast<SgOmpMetadirectiveStatement*>(this)->attribute.add("copied",newAttribute);
  114921             : #endif
  114922             : 
  114923             :   // Copy data members from base classes
  114924             :   // Copy constructor parameter data member: startOfConstruct_copy
  114925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  114926             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  114927           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  114928           0 :      if ( p_startOfConstruct != NULL ) 
  114929             :         { 
  114930           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  114931             :         } 
  114932             :        else 
  114933             :         { 
  114934             :           startOfConstruct_copy = NULL; 
  114935             :         } 
  114936             :   // Copy constructor parameter data member: body_copy
  114937           0 :      SgStatement* body_copy; 
  114938             :   // case: not a listType for (using conditionalToCopyVariable)body
  114939           0 :           if (get_body() != NULL) 
  114940             :              { 
  114941           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  114942             :              } 
  114943             :             else 
  114944             :              { 
  114945             :                body_copy = NULL; 
  114946             :              } 
  114947             :  
  114948             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  114949             : 
  114950             :   // Build an empty copy of this object (will be filled in, but 
  114951             :   // the parent can't be set and must be set by the caller)
  114952           0 :      result = new SgOmpMetadirectiveStatement(  startOfConstruct_copy, body_copy );
  114953           0 :      ROSE_ASSERT(result != NULL);
  114954             : 
  114955             :   // Copy data members of "this" class
  114956             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  114957             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  114958             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  114959           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  114960           0 :      if ( p_endOfConstruct != NULL ) 
  114961             :         { 
  114962           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  114963             :         } 
  114964             :        else 
  114965             :         { 
  114966             :           endOfConstruct_copy = NULL; 
  114967             :         } 
  114968             :   /* check for a valid pointer and delete if present */ 
  114969           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  114970             :   /* add assignment to result here */ 
  114971           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  114972             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  114973             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  114974             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  114975           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  114976           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  114977             :         { 
  114978           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  114979             :         } 
  114980             :        else 
  114981             :         { 
  114982             :           attachedPreprocessingInfoPtr_copy = NULL; 
  114983             :         } 
  114984             :   /* check for a valid pointer and delete if present */ 
  114985           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  114986             :   /* add assignment to result here */ 
  114987           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  114988             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  114989             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  114990             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  114991           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  114992           0 :      if ( p_attributeMechanism != NULL ) 
  114993             :         { 
  114994           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  114995             :         } 
  114996             :        else 
  114997             :         { 
  114998             :           attributeMechanism_copy = NULL; 
  114999             :         } 
  115000             :   /* check for a valid pointer and delete if present */ 
  115001           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  115002             :   /* add assignment to result here */ 
  115003           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  115004             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  115005             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  115006             :   // case: toBeCopied == COPY_DATA for numeric_label
  115007           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  115008           0 :      result->p_numeric_label = numeric_label_copy; 
  115009             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  115010             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  115011             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  115012           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  115013           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  115014             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  115015             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  115016             :   // case: toBeCopied == COPY_DATA for upir_parent
  115017           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  115018           0 :      result->p_upir_parent = upir_parent_copy; 
  115019             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  115020             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  115021             :   // case: toBeCopied == COPY_DATA for upir_children
  115022           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  115023           0 :      result->p_upir_children = upir_children_copy; 
  115024             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  115025           0 :      SgOmpClausePtrList clauses_copy; 
  115026             :   // case: listType for clauses
  115027             :   // case: listType (typeIsPointerToList == false) for clauses
  115028           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  115029           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  115030             :         { 
  115031           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  115032           0 :           SgOmpClause* copy_list_element = NULL; 
  115033           0 :           if (source_list_element != NULL) 
  115034             :              { 
  115035           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  115036             :              } 
  115037             :             else 
  115038             :              { 
  115039             :                copy_list_element = NULL; 
  115040             :              } 
  115041           0 :           clauses_copy.push_back(copy_list_element); 
  115042             :         } 
  115043           0 :      result->p_clauses = clauses_copy; 
  115044             :   // case: listType for clauses
  115045             :   // case: listType (typeIsPointerToList == false) for clauses
  115046           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  115047           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  115048             :         { 
  115049           0 :           SgOmpClause* list_element = *clauses_iterator; 
  115050           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  115051             :              { 
  115052           0 :                list_element->set_parent(result); 
  115053             :              } 
  115054             :         } 
  115055             :   // case: not a listType for (using conditionalToSetParent)body
  115056           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  115057             :              { 
  115058           0 :                body_copy->set_parent(result); 
  115059             :              } 
  115060             : 
  115061             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115062             : 
  115063             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  115064             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  115065             :   // fixupCopy(result,help);
  115066             : 
  115067             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  115068             :   // the Sg_File_Info objects that are built for the new IR nodes.
  115069           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  115070           0 :      if (locatedNode != NULL)
  115071             :         {
  115072             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  115073           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  115074           0 :           ROSE_ASSERT(start != NULL);
  115075             : #if 0
  115076             :        // Debugging information
  115077             :           if (start->get_parent() == NULL)
  115078             :              {
  115079             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115080             :              }
  115081             : #endif
  115082           0 :           start->set_parent(locatedNode);
  115083           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  115084             : 
  115085           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  115086             : 
  115087             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  115088             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  115089             :        // ROSE_ASSERT(end != NULL);
  115090           0 :           if (end == NULL)
  115091             :              {
  115092           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  115093             :              }
  115094             :             else
  115095             :              {
  115096             : #if 0
  115097             :             // Debugging information
  115098             :                if (end->get_parent() == NULL)
  115099             :                   {
  115100             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115101             :                   }
  115102             : #endif
  115103           0 :                end->set_parent(locatedNode);
  115104           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  115105             :              }
  115106             : 
  115107           0 :           SgExpression* expression = isSgExpression(result);
  115108           0 :           if (isSgExpression(this) != NULL)
  115109             :              {
  115110           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  115111             : 
  115112             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  115113           0 :                if (operatorPosition != NULL)
  115114             :                   {
  115115             : #if 0
  115116             :                  // Debugging information
  115117             :                     if (operatorPosition->get_parent() == NULL)
  115118             :                        {
  115119             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115120             :                        }
  115121             : #endif
  115122           0 :                     operatorPosition->set_parent(expression);
  115123           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  115124             :                   }
  115125             :              }
  115126             :         }
  115127             : 
  115128             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  115129           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  115130           0 :      if (initializedName != NULL)
  115131             :         {
  115132             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  115133           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  115134           0 :           ROSE_ASSERT(start != NULL);
  115135             : #if 0
  115136             :        // Debugging information
  115137             :           if (start->get_parent() == NULL)
  115138             :              {
  115139             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115140             :              }
  115141             : #endif
  115142           0 :           start->set_parent(initializedName);
  115143           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  115144             : 
  115145             : #if 0
  115146             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  115147             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  115148             : 
  115149             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  115150             :        // ROSE_ASSERT(end != NULL);
  115151             :           if (end == NULL)
  115152             :              {
  115153             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  115154             :              }
  115155             :             else
  115156             :              {
  115157             :                if (end->get_parent() == NULL)
  115158             :                   {
  115159             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115160             :                   }
  115161             :                end->set_parent(initializedName);
  115162             :                ROSE_ASSERT(end->get_parent() != NULL);
  115163             :              }
  115164             : #endif
  115165             :         }
  115166             : 
  115167             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  115168           0 :      help.insertCopiedNodePair(this,result);
  115169             : 
  115170             :   // printf ("End of copy SgOmpMetadirectiveStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  115171             : 
  115172             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  115173             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  115174           0 :      help.decrementDepth();
  115175             : 
  115176             :   // Test if this is the root of the copy!
  115177           0 :      if (help.get_depth() == 0)
  115178             :         {
  115179             :        // This is the original calling node.
  115180             : 
  115181             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  115182             :        // printf ("Calling SgOmpMetadirectiveStatement::fixupCopy() (from root of AST being copied) \n");
  115183             : #if ALT_FIXUP_COPY
  115184             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  115185           0 :           fixupCopy_scopes (result,help);
  115186           0 :           fixupCopy_symbols (result,help);
  115187           0 :           fixupCopy_references (result,help);
  115188             : #else
  115189             :           fixupCopy(result,help);
  115190             : #endif
  115191             :        // Allow this to be called recursively, so accumulate the state.
  115192             :        // Also, clear the state in the SgCopyHelp object.
  115193             :        // help.clearState();
  115194             :         }
  115195             : 
  115196           0 :      return result;
  115197             :    }
  115198             : 
  115199             : 
  115200             : /* #line 115201 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  115201             : 
  115202             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115203             : 
  115204           0 : SgNode* SgOmpLoopStatement::copy ( SgCopyHelp& help) const
  115205             :    {
  115206           0 :      SgOmpLoopStatement* result = NULL;
  115207             : 
  115208             :   // printf ("Copy SgOmpLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  115209             : 
  115210             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  115211             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  115212             :   // The default value of the depth is 0, so after this call the depth is 1!
  115213           0 :      help.incrementDepth();
  115214             : 
  115215             : #if 0
  115216             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  115217             :   // but it is not generally true that things can only be copied once!
  115218             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  115219             :   // AstAttribute* existingAttribute = const_cast<SgOmpLoopStatement*>(this)->attribute["copied"];
  115220             :      bool previouslyCopied = const_cast<SgOmpLoopStatement*>(this)->attribute.exists("copied");
  115221             :      if (previouslyCopied == true)
  115222             :         {
  115223             :           this->get_file_info()->display("Called from copy SgOmpLoopStatement: debug");
  115224             :         }
  115225             :      ROSE_ASSERT(previouslyCopied == false);
  115226             : 
  115227             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  115228             :      AstAttribute* newAttribute = new AstAttribute();
  115229             :      ROSE_ASSERT(newAttribute != NULL);
  115230             : 
  115231             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  115232             :      const_cast<SgOmpLoopStatement*>(this)->attribute.add("copied",newAttribute);
  115233             : #endif
  115234             : 
  115235             :   // Copy data members from base classes
  115236             :   // Copy constructor parameter data member: startOfConstruct_copy
  115237             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  115238             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  115239           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  115240           0 :      if ( p_startOfConstruct != NULL ) 
  115241             :         { 
  115242           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  115243             :         } 
  115244             :        else 
  115245             :         { 
  115246             :           startOfConstruct_copy = NULL; 
  115247             :         } 
  115248             :   // Copy constructor parameter data member: body_copy
  115249           0 :      SgStatement* body_copy; 
  115250             :   // case: not a listType for (using conditionalToCopyVariable)body
  115251           0 :           if (get_body() != NULL) 
  115252             :              { 
  115253           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  115254             :              } 
  115255             :             else 
  115256             :              { 
  115257             :                body_copy = NULL; 
  115258             :              } 
  115259             :  
  115260             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115261             : 
  115262             :   // Build an empty copy of this object (will be filled in, but 
  115263             :   // the parent can't be set and must be set by the caller)
  115264           0 :      result = new SgOmpLoopStatement(  startOfConstruct_copy, body_copy );
  115265           0 :      ROSE_ASSERT(result != NULL);
  115266             : 
  115267             :   // Copy data members of "this" class
  115268             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  115269             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  115270             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  115271           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  115272           0 :      if ( p_endOfConstruct != NULL ) 
  115273             :         { 
  115274           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  115275             :         } 
  115276             :        else 
  115277             :         { 
  115278             :           endOfConstruct_copy = NULL; 
  115279             :         } 
  115280             :   /* check for a valid pointer and delete if present */ 
  115281           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  115282             :   /* add assignment to result here */ 
  115283           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  115284             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  115285             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  115286             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  115287           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  115288           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  115289             :         { 
  115290           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  115291             :         } 
  115292             :        else 
  115293             :         { 
  115294             :           attachedPreprocessingInfoPtr_copy = NULL; 
  115295             :         } 
  115296             :   /* check for a valid pointer and delete if present */ 
  115297           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  115298             :   /* add assignment to result here */ 
  115299           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  115300             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  115301             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  115302             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  115303           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  115304           0 :      if ( p_attributeMechanism != NULL ) 
  115305             :         { 
  115306           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  115307             :         } 
  115308             :        else 
  115309             :         { 
  115310             :           attributeMechanism_copy = NULL; 
  115311             :         } 
  115312             :   /* check for a valid pointer and delete if present */ 
  115313           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  115314             :   /* add assignment to result here */ 
  115315           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  115316             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  115317             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  115318             :   // case: toBeCopied == COPY_DATA for numeric_label
  115319           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  115320           0 :      result->p_numeric_label = numeric_label_copy; 
  115321             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  115322             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  115323             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  115324           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  115325           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  115326             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  115327             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  115328             :   // case: toBeCopied == COPY_DATA for upir_parent
  115329           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  115330           0 :      result->p_upir_parent = upir_parent_copy; 
  115331             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  115332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  115333             :   // case: toBeCopied == COPY_DATA for upir_children
  115334           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  115335           0 :      result->p_upir_children = upir_children_copy; 
  115336             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  115337           0 :      SgOmpClausePtrList clauses_copy; 
  115338             :   // case: listType for clauses
  115339             :   // case: listType (typeIsPointerToList == false) for clauses
  115340           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  115341           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  115342             :         { 
  115343           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  115344           0 :           SgOmpClause* copy_list_element = NULL; 
  115345           0 :           if (source_list_element != NULL) 
  115346             :              { 
  115347           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  115348             :              } 
  115349             :             else 
  115350             :              { 
  115351             :                copy_list_element = NULL; 
  115352             :              } 
  115353           0 :           clauses_copy.push_back(copy_list_element); 
  115354             :         } 
  115355           0 :      result->p_clauses = clauses_copy; 
  115356             :   // case: listType for clauses
  115357             :   // case: listType (typeIsPointerToList == false) for clauses
  115358           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  115359           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  115360             :         { 
  115361           0 :           SgOmpClause* list_element = *clauses_iterator; 
  115362           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  115363             :              { 
  115364           0 :                list_element->set_parent(result); 
  115365             :              } 
  115366             :         } 
  115367             :   // case: not a listType for (using conditionalToSetParent)body
  115368           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  115369             :              { 
  115370           0 :                body_copy->set_parent(result); 
  115371             :              } 
  115372             : 
  115373             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115374             : 
  115375             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  115376             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  115377             :   // fixupCopy(result,help);
  115378             : 
  115379             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  115380             :   // the Sg_File_Info objects that are built for the new IR nodes.
  115381           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  115382           0 :      if (locatedNode != NULL)
  115383             :         {
  115384             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  115385           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  115386           0 :           ROSE_ASSERT(start != NULL);
  115387             : #if 0
  115388             :        // Debugging information
  115389             :           if (start->get_parent() == NULL)
  115390             :              {
  115391             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115392             :              }
  115393             : #endif
  115394           0 :           start->set_parent(locatedNode);
  115395           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  115396             : 
  115397           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  115398             : 
  115399             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  115400             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  115401             :        // ROSE_ASSERT(end != NULL);
  115402           0 :           if (end == NULL)
  115403             :              {
  115404           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  115405             :              }
  115406             :             else
  115407             :              {
  115408             : #if 0
  115409             :             // Debugging information
  115410             :                if (end->get_parent() == NULL)
  115411             :                   {
  115412             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115413             :                   }
  115414             : #endif
  115415           0 :                end->set_parent(locatedNode);
  115416           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  115417             :              }
  115418             : 
  115419           0 :           SgExpression* expression = isSgExpression(result);
  115420           0 :           if (isSgExpression(this) != NULL)
  115421             :              {
  115422           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  115423             : 
  115424             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  115425           0 :                if (operatorPosition != NULL)
  115426             :                   {
  115427             : #if 0
  115428             :                  // Debugging information
  115429             :                     if (operatorPosition->get_parent() == NULL)
  115430             :                        {
  115431             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115432             :                        }
  115433             : #endif
  115434           0 :                     operatorPosition->set_parent(expression);
  115435           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  115436             :                   }
  115437             :              }
  115438             :         }
  115439             : 
  115440             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  115441           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  115442           0 :      if (initializedName != NULL)
  115443             :         {
  115444             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  115445           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  115446           0 :           ROSE_ASSERT(start != NULL);
  115447             : #if 0
  115448             :        // Debugging information
  115449             :           if (start->get_parent() == NULL)
  115450             :              {
  115451             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115452             :              }
  115453             : #endif
  115454           0 :           start->set_parent(initializedName);
  115455           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  115456             : 
  115457             : #if 0
  115458             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  115459             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  115460             : 
  115461             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  115462             :        // ROSE_ASSERT(end != NULL);
  115463             :           if (end == NULL)
  115464             :              {
  115465             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  115466             :              }
  115467             :             else
  115468             :              {
  115469             :                if (end->get_parent() == NULL)
  115470             :                   {
  115471             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115472             :                   }
  115473             :                end->set_parent(initializedName);
  115474             :                ROSE_ASSERT(end->get_parent() != NULL);
  115475             :              }
  115476             : #endif
  115477             :         }
  115478             : 
  115479             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  115480           0 :      help.insertCopiedNodePair(this,result);
  115481             : 
  115482             :   // printf ("End of copy SgOmpLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  115483             : 
  115484             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  115485             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  115486           0 :      help.decrementDepth();
  115487             : 
  115488             :   // Test if this is the root of the copy!
  115489           0 :      if (help.get_depth() == 0)
  115490             :         {
  115491             :        // This is the original calling node.
  115492             : 
  115493             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  115494             :        // printf ("Calling SgOmpLoopStatement::fixupCopy() (from root of AST being copied) \n");
  115495             : #if ALT_FIXUP_COPY
  115496             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  115497           0 :           fixupCopy_scopes (result,help);
  115498           0 :           fixupCopy_symbols (result,help);
  115499           0 :           fixupCopy_references (result,help);
  115500             : #else
  115501             :           fixupCopy(result,help);
  115502             : #endif
  115503             :        // Allow this to be called recursively, so accumulate the state.
  115504             :        // Also, clear the state in the SgCopyHelp object.
  115505             :        // help.clearState();
  115506             :         }
  115507             : 
  115508           0 :      return result;
  115509             :    }
  115510             : 
  115511             : 
  115512             : /* #line 115513 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  115513             : 
  115514             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115515             : 
  115516           0 : SgNode* SgOmpOrderedStatement::copy ( SgCopyHelp& help) const
  115517             :    {
  115518           0 :      SgOmpOrderedStatement* result = NULL;
  115519             : 
  115520             :   // printf ("Copy SgOmpOrderedStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  115521             : 
  115522             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  115523             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  115524             :   // The default value of the depth is 0, so after this call the depth is 1!
  115525           0 :      help.incrementDepth();
  115526             : 
  115527             : #if 0
  115528             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  115529             :   // but it is not generally true that things can only be copied once!
  115530             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  115531             :   // AstAttribute* existingAttribute = const_cast<SgOmpOrderedStatement*>(this)->attribute["copied"];
  115532             :      bool previouslyCopied = const_cast<SgOmpOrderedStatement*>(this)->attribute.exists("copied");
  115533             :      if (previouslyCopied == true)
  115534             :         {
  115535             :           this->get_file_info()->display("Called from copy SgOmpOrderedStatement: debug");
  115536             :         }
  115537             :      ROSE_ASSERT(previouslyCopied == false);
  115538             : 
  115539             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  115540             :      AstAttribute* newAttribute = new AstAttribute();
  115541             :      ROSE_ASSERT(newAttribute != NULL);
  115542             : 
  115543             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  115544             :      const_cast<SgOmpOrderedStatement*>(this)->attribute.add("copied",newAttribute);
  115545             : #endif
  115546             : 
  115547             :   // Copy data members from base classes
  115548             :   // Copy constructor parameter data member: startOfConstruct_copy
  115549             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  115550             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  115551           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  115552           0 :      if ( p_startOfConstruct != NULL ) 
  115553             :         { 
  115554           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  115555             :         } 
  115556             :        else 
  115557             :         { 
  115558             :           startOfConstruct_copy = NULL; 
  115559             :         } 
  115560             :   // Copy constructor parameter data member: body_copy
  115561           0 :      SgStatement* body_copy; 
  115562             :   // case: not a listType for (using conditionalToCopyVariable)body
  115563           0 :           if (get_body() != NULL) 
  115564             :              { 
  115565           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  115566             :              } 
  115567             :             else 
  115568             :              { 
  115569             :                body_copy = NULL; 
  115570             :              } 
  115571             :  
  115572             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115573             : 
  115574             :   // Build an empty copy of this object (will be filled in, but 
  115575             :   // the parent can't be set and must be set by the caller)
  115576           0 :      result = new SgOmpOrderedStatement(  startOfConstruct_copy, body_copy );
  115577           0 :      ROSE_ASSERT(result != NULL);
  115578             : 
  115579             :   // Copy data members of "this" class
  115580             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  115581             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  115582             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  115583           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  115584           0 :      if ( p_endOfConstruct != NULL ) 
  115585             :         { 
  115586           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  115587             :         } 
  115588             :        else 
  115589             :         { 
  115590             :           endOfConstruct_copy = NULL; 
  115591             :         } 
  115592             :   /* check for a valid pointer and delete if present */ 
  115593           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  115594             :   /* add assignment to result here */ 
  115595           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  115596             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  115597             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  115598             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  115599           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  115600           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  115601             :         { 
  115602           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  115603             :         } 
  115604             :        else 
  115605             :         { 
  115606             :           attachedPreprocessingInfoPtr_copy = NULL; 
  115607             :         } 
  115608             :   /* check for a valid pointer and delete if present */ 
  115609           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  115610             :   /* add assignment to result here */ 
  115611           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  115612             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  115613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  115614             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  115615           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  115616           0 :      if ( p_attributeMechanism != NULL ) 
  115617             :         { 
  115618           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  115619             :         } 
  115620             :        else 
  115621             :         { 
  115622             :           attributeMechanism_copy = NULL; 
  115623             :         } 
  115624             :   /* check for a valid pointer and delete if present */ 
  115625           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  115626             :   /* add assignment to result here */ 
  115627           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  115628             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  115629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  115630             :   // case: toBeCopied == COPY_DATA for numeric_label
  115631           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  115632           0 :      result->p_numeric_label = numeric_label_copy; 
  115633             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  115634             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  115635             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  115636           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  115637           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  115638             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  115639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  115640             :   // case: toBeCopied == COPY_DATA for upir_parent
  115641           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  115642           0 :      result->p_upir_parent = upir_parent_copy; 
  115643             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  115644             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  115645             :   // case: toBeCopied == COPY_DATA for upir_children
  115646           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  115647           0 :      result->p_upir_children = upir_children_copy; 
  115648             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  115649           0 :      SgOmpClausePtrList clauses_copy; 
  115650             :   // case: listType for clauses
  115651             :   // case: listType (typeIsPointerToList == false) for clauses
  115652           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  115653           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  115654             :         { 
  115655           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  115656           0 :           SgOmpClause* copy_list_element = NULL; 
  115657           0 :           if (source_list_element != NULL) 
  115658             :              { 
  115659           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  115660             :              } 
  115661             :             else 
  115662             :              { 
  115663             :                copy_list_element = NULL; 
  115664             :              } 
  115665           0 :           clauses_copy.push_back(copy_list_element); 
  115666             :         } 
  115667           0 :      result->p_clauses = clauses_copy; 
  115668             :   // case: listType for clauses
  115669             :   // case: listType (typeIsPointerToList == false) for clauses
  115670           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  115671           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  115672             :         { 
  115673           0 :           SgOmpClause* list_element = *clauses_iterator; 
  115674           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  115675             :              { 
  115676           0 :                list_element->set_parent(result); 
  115677             :              } 
  115678             :         } 
  115679             :   // case: not a listType for (using conditionalToSetParent)body
  115680           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  115681             :              { 
  115682           0 :                body_copy->set_parent(result); 
  115683             :              } 
  115684             : 
  115685             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115686             : 
  115687             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  115688             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  115689             :   // fixupCopy(result,help);
  115690             : 
  115691             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  115692             :   // the Sg_File_Info objects that are built for the new IR nodes.
  115693           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  115694           0 :      if (locatedNode != NULL)
  115695             :         {
  115696             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  115697           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  115698           0 :           ROSE_ASSERT(start != NULL);
  115699             : #if 0
  115700             :        // Debugging information
  115701             :           if (start->get_parent() == NULL)
  115702             :              {
  115703             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115704             :              }
  115705             : #endif
  115706           0 :           start->set_parent(locatedNode);
  115707           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  115708             : 
  115709           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  115710             : 
  115711             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  115712             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  115713             :        // ROSE_ASSERT(end != NULL);
  115714           0 :           if (end == NULL)
  115715             :              {
  115716           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  115717             :              }
  115718             :             else
  115719             :              {
  115720             : #if 0
  115721             :             // Debugging information
  115722             :                if (end->get_parent() == NULL)
  115723             :                   {
  115724             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115725             :                   }
  115726             : #endif
  115727           0 :                end->set_parent(locatedNode);
  115728           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  115729             :              }
  115730             : 
  115731           0 :           SgExpression* expression = isSgExpression(result);
  115732           0 :           if (isSgExpression(this) != NULL)
  115733             :              {
  115734           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  115735             : 
  115736             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  115737           0 :                if (operatorPosition != NULL)
  115738             :                   {
  115739             : #if 0
  115740             :                  // Debugging information
  115741             :                     if (operatorPosition->get_parent() == NULL)
  115742             :                        {
  115743             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115744             :                        }
  115745             : #endif
  115746           0 :                     operatorPosition->set_parent(expression);
  115747           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  115748             :                   }
  115749             :              }
  115750             :         }
  115751             : 
  115752             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  115753           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  115754           0 :      if (initializedName != NULL)
  115755             :         {
  115756             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  115757           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  115758           0 :           ROSE_ASSERT(start != NULL);
  115759             : #if 0
  115760             :        // Debugging information
  115761             :           if (start->get_parent() == NULL)
  115762             :              {
  115763             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115764             :              }
  115765             : #endif
  115766           0 :           start->set_parent(initializedName);
  115767           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  115768             : 
  115769             : #if 0
  115770             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  115771             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  115772             : 
  115773             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  115774             :        // ROSE_ASSERT(end != NULL);
  115775             :           if (end == NULL)
  115776             :              {
  115777             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  115778             :              }
  115779             :             else
  115780             :              {
  115781             :                if (end->get_parent() == NULL)
  115782             :                   {
  115783             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  115784             :                   }
  115785             :                end->set_parent(initializedName);
  115786             :                ROSE_ASSERT(end->get_parent() != NULL);
  115787             :              }
  115788             : #endif
  115789             :         }
  115790             : 
  115791             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  115792           0 :      help.insertCopiedNodePair(this,result);
  115793             : 
  115794             :   // printf ("End of copy SgOmpOrderedStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  115795             : 
  115796             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  115797             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  115798           0 :      help.decrementDepth();
  115799             : 
  115800             :   // Test if this is the root of the copy!
  115801           0 :      if (help.get_depth() == 0)
  115802             :         {
  115803             :        // This is the original calling node.
  115804             : 
  115805             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  115806             :        // printf ("Calling SgOmpOrderedStatement::fixupCopy() (from root of AST being copied) \n");
  115807             : #if ALT_FIXUP_COPY
  115808             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  115809           0 :           fixupCopy_scopes (result,help);
  115810           0 :           fixupCopy_symbols (result,help);
  115811           0 :           fixupCopy_references (result,help);
  115812             : #else
  115813             :           fixupCopy(result,help);
  115814             : #endif
  115815             :        // Allow this to be called recursively, so accumulate the state.
  115816             :        // Also, clear the state in the SgCopyHelp object.
  115817             :        // help.clearState();
  115818             :         }
  115819             : 
  115820           0 :      return result;
  115821             :    }
  115822             : 
  115823             : 
  115824             : /* #line 115825 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  115825             : 
  115826             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115827             : 
  115828           0 : SgNode* SgOmpTaskgroupStatement::copy ( SgCopyHelp& help) const
  115829             :    {
  115830           0 :      SgOmpTaskgroupStatement* result = NULL;
  115831             : 
  115832             :   // printf ("Copy SgOmpTaskgroupStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  115833             : 
  115834             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  115835             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  115836             :   // The default value of the depth is 0, so after this call the depth is 1!
  115837           0 :      help.incrementDepth();
  115838             : 
  115839             : #if 0
  115840             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  115841             :   // but it is not generally true that things can only be copied once!
  115842             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  115843             :   // AstAttribute* existingAttribute = const_cast<SgOmpTaskgroupStatement*>(this)->attribute["copied"];
  115844             :      bool previouslyCopied = const_cast<SgOmpTaskgroupStatement*>(this)->attribute.exists("copied");
  115845             :      if (previouslyCopied == true)
  115846             :         {
  115847             :           this->get_file_info()->display("Called from copy SgOmpTaskgroupStatement: debug");
  115848             :         }
  115849             :      ROSE_ASSERT(previouslyCopied == false);
  115850             : 
  115851             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  115852             :      AstAttribute* newAttribute = new AstAttribute();
  115853             :      ROSE_ASSERT(newAttribute != NULL);
  115854             : 
  115855             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  115856             :      const_cast<SgOmpTaskgroupStatement*>(this)->attribute.add("copied",newAttribute);
  115857             : #endif
  115858             : 
  115859             :   // Copy data members from base classes
  115860             :   // Copy constructor parameter data member: startOfConstruct_copy
  115861             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  115862             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  115863           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  115864           0 :      if ( p_startOfConstruct != NULL ) 
  115865             :         { 
  115866           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  115867             :         } 
  115868             :        else 
  115869             :         { 
  115870             :           startOfConstruct_copy = NULL; 
  115871             :         } 
  115872             :   // Copy constructor parameter data member: body_copy
  115873           0 :      SgStatement* body_copy; 
  115874             :   // case: not a listType for (using conditionalToCopyVariable)body
  115875           0 :           if (get_body() != NULL) 
  115876             :              { 
  115877           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  115878             :              } 
  115879             :             else 
  115880             :              { 
  115881             :                body_copy = NULL; 
  115882             :              } 
  115883             :  
  115884             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115885             : 
  115886             :   // Build an empty copy of this object (will be filled in, but 
  115887             :   // the parent can't be set and must be set by the caller)
  115888           0 :      result = new SgOmpTaskgroupStatement(  startOfConstruct_copy, body_copy );
  115889           0 :      ROSE_ASSERT(result != NULL);
  115890             : 
  115891             :   // Copy data members of "this" class
  115892             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  115893             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  115894             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  115895           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  115896           0 :      if ( p_endOfConstruct != NULL ) 
  115897             :         { 
  115898           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  115899             :         } 
  115900             :        else 
  115901             :         { 
  115902             :           endOfConstruct_copy = NULL; 
  115903             :         } 
  115904             :   /* check for a valid pointer and delete if present */ 
  115905           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  115906             :   /* add assignment to result here */ 
  115907           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  115908             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  115909             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  115910             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  115911           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  115912           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  115913             :         { 
  115914           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  115915             :         } 
  115916             :        else 
  115917             :         { 
  115918             :           attachedPreprocessingInfoPtr_copy = NULL; 
  115919             :         } 
  115920             :   /* check for a valid pointer and delete if present */ 
  115921           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  115922             :   /* add assignment to result here */ 
  115923           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  115924             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  115925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  115926             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  115927           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  115928           0 :      if ( p_attributeMechanism != NULL ) 
  115929             :         { 
  115930           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  115931             :         } 
  115932             :        else 
  115933             :         { 
  115934             :           attributeMechanism_copy = NULL; 
  115935             :         } 
  115936             :   /* check for a valid pointer and delete if present */ 
  115937           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  115938             :   /* add assignment to result here */ 
  115939           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  115940             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  115941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  115942             :   // case: toBeCopied == COPY_DATA for numeric_label
  115943           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  115944           0 :      result->p_numeric_label = numeric_label_copy; 
  115945             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  115946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  115947             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  115948           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  115949           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  115950             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  115951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  115952             :   // case: toBeCopied == COPY_DATA for upir_parent
  115953           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  115954           0 :      result->p_upir_parent = upir_parent_copy; 
  115955             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  115956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  115957             :   // case: toBeCopied == COPY_DATA for upir_children
  115958           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  115959           0 :      result->p_upir_children = upir_children_copy; 
  115960             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  115961           0 :      SgOmpClausePtrList clauses_copy; 
  115962             :   // case: listType for clauses
  115963             :   // case: listType (typeIsPointerToList == false) for clauses
  115964           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  115965           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  115966             :         { 
  115967           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  115968           0 :           SgOmpClause* copy_list_element = NULL; 
  115969           0 :           if (source_list_element != NULL) 
  115970             :              { 
  115971           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  115972             :              } 
  115973             :             else 
  115974             :              { 
  115975             :                copy_list_element = NULL; 
  115976             :              } 
  115977           0 :           clauses_copy.push_back(copy_list_element); 
  115978             :         } 
  115979           0 :      result->p_clauses = clauses_copy; 
  115980             :   // case: listType for clauses
  115981             :   // case: listType (typeIsPointerToList == false) for clauses
  115982           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  115983           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  115984             :         { 
  115985           0 :           SgOmpClause* list_element = *clauses_iterator; 
  115986           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  115987             :              { 
  115988           0 :                list_element->set_parent(result); 
  115989             :              } 
  115990             :         } 
  115991             :   // case: not a listType for (using conditionalToSetParent)body
  115992           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  115993             :              { 
  115994           0 :                body_copy->set_parent(result); 
  115995             :              } 
  115996             : 
  115997             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  115998             : 
  115999             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  116000             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  116001             :   // fixupCopy(result,help);
  116002             : 
  116003             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  116004             :   // the Sg_File_Info objects that are built for the new IR nodes.
  116005           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  116006           0 :      if (locatedNode != NULL)
  116007             :         {
  116008             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  116009           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  116010           0 :           ROSE_ASSERT(start != NULL);
  116011             : #if 0
  116012             :        // Debugging information
  116013             :           if (start->get_parent() == NULL)
  116014             :              {
  116015             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116016             :              }
  116017             : #endif
  116018           0 :           start->set_parent(locatedNode);
  116019           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  116020             : 
  116021           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  116022             : 
  116023             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  116024             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  116025             :        // ROSE_ASSERT(end != NULL);
  116026           0 :           if (end == NULL)
  116027             :              {
  116028           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  116029             :              }
  116030             :             else
  116031             :              {
  116032             : #if 0
  116033             :             // Debugging information
  116034             :                if (end->get_parent() == NULL)
  116035             :                   {
  116036             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116037             :                   }
  116038             : #endif
  116039           0 :                end->set_parent(locatedNode);
  116040           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  116041             :              }
  116042             : 
  116043           0 :           SgExpression* expression = isSgExpression(result);
  116044           0 :           if (isSgExpression(this) != NULL)
  116045             :              {
  116046           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  116047             : 
  116048             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  116049           0 :                if (operatorPosition != NULL)
  116050             :                   {
  116051             : #if 0
  116052             :                  // Debugging information
  116053             :                     if (operatorPosition->get_parent() == NULL)
  116054             :                        {
  116055             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116056             :                        }
  116057             : #endif
  116058           0 :                     operatorPosition->set_parent(expression);
  116059           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  116060             :                   }
  116061             :              }
  116062             :         }
  116063             : 
  116064             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  116065           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  116066           0 :      if (initializedName != NULL)
  116067             :         {
  116068             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  116069           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  116070           0 :           ROSE_ASSERT(start != NULL);
  116071             : #if 0
  116072             :        // Debugging information
  116073             :           if (start->get_parent() == NULL)
  116074             :              {
  116075             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116076             :              }
  116077             : #endif
  116078           0 :           start->set_parent(initializedName);
  116079           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  116080             : 
  116081             : #if 0
  116082             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  116083             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  116084             : 
  116085             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  116086             :        // ROSE_ASSERT(end != NULL);
  116087             :           if (end == NULL)
  116088             :              {
  116089             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  116090             :              }
  116091             :             else
  116092             :              {
  116093             :                if (end->get_parent() == NULL)
  116094             :                   {
  116095             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116096             :                   }
  116097             :                end->set_parent(initializedName);
  116098             :                ROSE_ASSERT(end->get_parent() != NULL);
  116099             :              }
  116100             : #endif
  116101             :         }
  116102             : 
  116103             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  116104           0 :      help.insertCopiedNodePair(this,result);
  116105             : 
  116106             :   // printf ("End of copy SgOmpTaskgroupStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  116107             : 
  116108             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  116109             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  116110           0 :      help.decrementDepth();
  116111             : 
  116112             :   // Test if this is the root of the copy!
  116113           0 :      if (help.get_depth() == 0)
  116114             :         {
  116115             :        // This is the original calling node.
  116116             : 
  116117             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  116118             :        // printf ("Calling SgOmpTaskgroupStatement::fixupCopy() (from root of AST being copied) \n");
  116119             : #if ALT_FIXUP_COPY
  116120             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  116121           0 :           fixupCopy_scopes (result,help);
  116122           0 :           fixupCopy_symbols (result,help);
  116123           0 :           fixupCopy_references (result,help);
  116124             : #else
  116125             :           fixupCopy(result,help);
  116126             : #endif
  116127             :        // Allow this to be called recursively, so accumulate the state.
  116128             :        // Also, clear the state in the SgCopyHelp object.
  116129             :        // help.clearState();
  116130             :         }
  116131             : 
  116132           0 :      return result;
  116133             :    }
  116134             : 
  116135             : 
  116136             : /* #line 116137 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  116137             : 
  116138             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  116139             : 
  116140           0 : SgNode* SgOmpTaskloopStatement::copy ( SgCopyHelp& help) const
  116141             :    {
  116142           0 :      SgOmpTaskloopStatement* result = NULL;
  116143             : 
  116144             :   // printf ("Copy SgOmpTaskloopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  116145             : 
  116146             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  116147             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  116148             :   // The default value of the depth is 0, so after this call the depth is 1!
  116149           0 :      help.incrementDepth();
  116150             : 
  116151             : #if 0
  116152             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  116153             :   // but it is not generally true that things can only be copied once!
  116154             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  116155             :   // AstAttribute* existingAttribute = const_cast<SgOmpTaskloopStatement*>(this)->attribute["copied"];
  116156             :      bool previouslyCopied = const_cast<SgOmpTaskloopStatement*>(this)->attribute.exists("copied");
  116157             :      if (previouslyCopied == true)
  116158             :         {
  116159             :           this->get_file_info()->display("Called from copy SgOmpTaskloopStatement: debug");
  116160             :         }
  116161             :      ROSE_ASSERT(previouslyCopied == false);
  116162             : 
  116163             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  116164             :      AstAttribute* newAttribute = new AstAttribute();
  116165             :      ROSE_ASSERT(newAttribute != NULL);
  116166             : 
  116167             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  116168             :      const_cast<SgOmpTaskloopStatement*>(this)->attribute.add("copied",newAttribute);
  116169             : #endif
  116170             : 
  116171             :   // Copy data members from base classes
  116172             :   // Copy constructor parameter data member: startOfConstruct_copy
  116173             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  116174             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  116175           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  116176           0 :      if ( p_startOfConstruct != NULL ) 
  116177             :         { 
  116178           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  116179             :         } 
  116180             :        else 
  116181             :         { 
  116182             :           startOfConstruct_copy = NULL; 
  116183             :         } 
  116184             :   // Copy constructor parameter data member: body_copy
  116185           0 :      SgStatement* body_copy; 
  116186             :   // case: not a listType for (using conditionalToCopyVariable)body
  116187           0 :           if (get_body() != NULL) 
  116188             :              { 
  116189           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  116190             :              } 
  116191             :             else 
  116192             :              { 
  116193             :                body_copy = NULL; 
  116194             :              } 
  116195             :  
  116196             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  116197             : 
  116198             :   // Build an empty copy of this object (will be filled in, but 
  116199             :   // the parent can't be set and must be set by the caller)
  116200           0 :      result = new SgOmpTaskloopStatement(  startOfConstruct_copy, body_copy );
  116201           0 :      ROSE_ASSERT(result != NULL);
  116202             : 
  116203             :   // Copy data members of "this" class
  116204             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  116205             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  116206             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  116207           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  116208           0 :      if ( p_endOfConstruct != NULL ) 
  116209             :         { 
  116210           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  116211             :         } 
  116212             :        else 
  116213             :         { 
  116214             :           endOfConstruct_copy = NULL; 
  116215             :         } 
  116216             :   /* check for a valid pointer and delete if present */ 
  116217           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  116218             :   /* add assignment to result here */ 
  116219           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  116220             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  116221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  116222             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  116223           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  116224           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  116225             :         { 
  116226           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  116227             :         } 
  116228             :        else 
  116229             :         { 
  116230             :           attachedPreprocessingInfoPtr_copy = NULL; 
  116231             :         } 
  116232             :   /* check for a valid pointer and delete if present */ 
  116233           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  116234             :   /* add assignment to result here */ 
  116235           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  116236             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  116237             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  116238             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  116239           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  116240           0 :      if ( p_attributeMechanism != NULL ) 
  116241             :         { 
  116242           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  116243             :         } 
  116244             :        else 
  116245             :         { 
  116246             :           attributeMechanism_copy = NULL; 
  116247             :         } 
  116248             :   /* check for a valid pointer and delete if present */ 
  116249           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  116250             :   /* add assignment to result here */ 
  116251           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  116252             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  116253             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  116254             :   // case: toBeCopied == COPY_DATA for numeric_label
  116255           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  116256           0 :      result->p_numeric_label = numeric_label_copy; 
  116257             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  116258             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  116259             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  116260           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  116261           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  116262             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  116263             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  116264             :   // case: toBeCopied == COPY_DATA for upir_parent
  116265           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  116266           0 :      result->p_upir_parent = upir_parent_copy; 
  116267             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  116268             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  116269             :   // case: toBeCopied == COPY_DATA for upir_children
  116270           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  116271           0 :      result->p_upir_children = upir_children_copy; 
  116272             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  116273           0 :      SgOmpClausePtrList clauses_copy; 
  116274             :   // case: listType for clauses
  116275             :   // case: listType (typeIsPointerToList == false) for clauses
  116276           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  116277           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  116278             :         { 
  116279           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  116280           0 :           SgOmpClause* copy_list_element = NULL; 
  116281           0 :           if (source_list_element != NULL) 
  116282             :              { 
  116283           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  116284             :              } 
  116285             :             else 
  116286             :              { 
  116287             :                copy_list_element = NULL; 
  116288             :              } 
  116289           0 :           clauses_copy.push_back(copy_list_element); 
  116290             :         } 
  116291           0 :      result->p_clauses = clauses_copy; 
  116292             :   // case: listType for clauses
  116293             :   // case: listType (typeIsPointerToList == false) for clauses
  116294           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  116295           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  116296             :         { 
  116297           0 :           SgOmpClause* list_element = *clauses_iterator; 
  116298           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  116299             :              { 
  116300           0 :                list_element->set_parent(result); 
  116301             :              } 
  116302             :         } 
  116303             :   // case: not a listType for (using conditionalToSetParent)body
  116304           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  116305             :              { 
  116306           0 :                body_copy->set_parent(result); 
  116307             :              } 
  116308             : 
  116309             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  116310             : 
  116311             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  116312             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  116313             :   // fixupCopy(result,help);
  116314             : 
  116315             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  116316             :   // the Sg_File_Info objects that are built for the new IR nodes.
  116317           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  116318           0 :      if (locatedNode != NULL)
  116319             :         {
  116320             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  116321           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  116322           0 :           ROSE_ASSERT(start != NULL);
  116323             : #if 0
  116324             :        // Debugging information
  116325             :           if (start->get_parent() == NULL)
  116326             :              {
  116327             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116328             :              }
  116329             : #endif
  116330           0 :           start->set_parent(locatedNode);
  116331           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  116332             : 
  116333           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  116334             : 
  116335             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  116336             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  116337             :        // ROSE_ASSERT(end != NULL);
  116338           0 :           if (end == NULL)
  116339             :              {
  116340           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  116341             :              }
  116342             :             else
  116343             :              {
  116344             : #if 0
  116345             :             // Debugging information
  116346             :                if (end->get_parent() == NULL)
  116347             :                   {
  116348             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116349             :                   }
  116350             : #endif
  116351           0 :                end->set_parent(locatedNode);
  116352           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  116353             :              }
  116354             : 
  116355           0 :           SgExpression* expression = isSgExpression(result);
  116356           0 :           if (isSgExpression(this) != NULL)
  116357             :              {
  116358           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  116359             : 
  116360             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  116361           0 :                if (operatorPosition != NULL)
  116362             :                   {
  116363             : #if 0
  116364             :                  // Debugging information
  116365             :                     if (operatorPosition->get_parent() == NULL)
  116366             :                        {
  116367             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116368             :                        }
  116369             : #endif
  116370           0 :                     operatorPosition->set_parent(expression);
  116371           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  116372             :                   }
  116373             :              }
  116374             :         }
  116375             : 
  116376             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  116377           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  116378           0 :      if (initializedName != NULL)
  116379             :         {
  116380             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  116381           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  116382           0 :           ROSE_ASSERT(start != NULL);
  116383             : #if 0
  116384             :        // Debugging information
  116385             :           if (start->get_parent() == NULL)
  116386             :              {
  116387             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116388             :              }
  116389             : #endif
  116390           0 :           start->set_parent(initializedName);
  116391           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  116392             : 
  116393             : #if 0
  116394             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  116395             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  116396             : 
  116397             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  116398             :        // ROSE_ASSERT(end != NULL);
  116399             :           if (end == NULL)
  116400             :              {
  116401             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  116402             :              }
  116403             :             else
  116404             :              {
  116405             :                if (end->get_parent() == NULL)
  116406             :                   {
  116407             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116408             :                   }
  116409             :                end->set_parent(initializedName);
  116410             :                ROSE_ASSERT(end->get_parent() != NULL);
  116411             :              }
  116412             : #endif
  116413             :         }
  116414             : 
  116415             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  116416           0 :      help.insertCopiedNodePair(this,result);
  116417             : 
  116418             :   // printf ("End of copy SgOmpTaskloopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  116419             : 
  116420             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  116421             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  116422           0 :      help.decrementDepth();
  116423             : 
  116424             :   // Test if this is the root of the copy!
  116425           0 :      if (help.get_depth() == 0)
  116426             :         {
  116427             :        // This is the original calling node.
  116428             : 
  116429             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  116430             :        // printf ("Calling SgOmpTaskloopStatement::fixupCopy() (from root of AST being copied) \n");
  116431             : #if ALT_FIXUP_COPY
  116432             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  116433           0 :           fixupCopy_scopes (result,help);
  116434           0 :           fixupCopy_symbols (result,help);
  116435           0 :           fixupCopy_references (result,help);
  116436             : #else
  116437             :           fixupCopy(result,help);
  116438             : #endif
  116439             :        // Allow this to be called recursively, so accumulate the state.
  116440             :        // Also, clear the state in the SgCopyHelp object.
  116441             :        // help.clearState();
  116442             :         }
  116443             : 
  116444           0 :      return result;
  116445             :    }
  116446             : 
  116447             : 
  116448             : /* #line 116449 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  116449             : 
  116450             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  116451             : 
  116452           0 : SgNode* SgOmpDepobjStatement::copy ( SgCopyHelp& help) const
  116453             :    {
  116454           0 :      SgOmpDepobjStatement* result = NULL;
  116455             : 
  116456             :   // printf ("Copy SgOmpDepobjStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  116457             : 
  116458             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  116459             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  116460             :   // The default value of the depth is 0, so after this call the depth is 1!
  116461           0 :      help.incrementDepth();
  116462             : 
  116463             : #if 0
  116464             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  116465             :   // but it is not generally true that things can only be copied once!
  116466             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  116467             :   // AstAttribute* existingAttribute = const_cast<SgOmpDepobjStatement*>(this)->attribute["copied"];
  116468             :      bool previouslyCopied = const_cast<SgOmpDepobjStatement*>(this)->attribute.exists("copied");
  116469             :      if (previouslyCopied == true)
  116470             :         {
  116471             :           this->get_file_info()->display("Called from copy SgOmpDepobjStatement: debug");
  116472             :         }
  116473             :      ROSE_ASSERT(previouslyCopied == false);
  116474             : 
  116475             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  116476             :      AstAttribute* newAttribute = new AstAttribute();
  116477             :      ROSE_ASSERT(newAttribute != NULL);
  116478             : 
  116479             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  116480             :      const_cast<SgOmpDepobjStatement*>(this)->attribute.add("copied",newAttribute);
  116481             : #endif
  116482             : 
  116483             :   // Copy data members from base classes
  116484             :   // Copy constructor parameter data member: startOfConstruct_copy
  116485             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  116486             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  116487           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  116488           0 :      if ( p_startOfConstruct != NULL ) 
  116489             :         { 
  116490           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  116491             :         } 
  116492             :        else 
  116493             :         { 
  116494             :           startOfConstruct_copy = NULL; 
  116495             :         } 
  116496             :   // Copy constructor parameter data member: body_copy
  116497           0 :      SgStatement* body_copy; 
  116498             :   // case: not a listType for (using conditionalToCopyVariable)body
  116499           0 :           if (get_body() != NULL) 
  116500             :              { 
  116501           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  116502             :              } 
  116503             :             else 
  116504             :              { 
  116505             :                body_copy = NULL; 
  116506             :              } 
  116507             :   // Copy constructor parameter data member: name_copy
  116508             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  116509             :   // case: toBeCopied == COPY_DATA for name
  116510           0 :      SgName name_copy = p_name; 
  116511             :  
  116512             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  116513             : 
  116514             :   // Build an empty copy of this object (will be filled in, but 
  116515             :   // the parent can't be set and must be set by the caller)
  116516           0 :      result = new SgOmpDepobjStatement(  startOfConstruct_copy, body_copy, name_copy );
  116517           0 :      ROSE_ASSERT(result != NULL);
  116518             : 
  116519             :   // Copy data members of "this" class
  116520             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  116521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  116522             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  116523           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  116524           0 :      if ( p_endOfConstruct != NULL ) 
  116525             :         { 
  116526           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  116527             :         } 
  116528             :        else 
  116529             :         { 
  116530             :           endOfConstruct_copy = NULL; 
  116531             :         } 
  116532             :   /* check for a valid pointer and delete if present */ 
  116533           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  116534             :   /* add assignment to result here */ 
  116535           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  116536             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  116537             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  116538             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  116539           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  116540           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  116541             :         { 
  116542           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  116543             :         } 
  116544             :        else 
  116545             :         { 
  116546             :           attachedPreprocessingInfoPtr_copy = NULL; 
  116547             :         } 
  116548             :   /* check for a valid pointer and delete if present */ 
  116549           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  116550             :   /* add assignment to result here */ 
  116551           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  116552             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  116553             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  116554             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  116555           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  116556           0 :      if ( p_attributeMechanism != NULL ) 
  116557             :         { 
  116558           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  116559             :         } 
  116560             :        else 
  116561             :         { 
  116562             :           attributeMechanism_copy = NULL; 
  116563             :         } 
  116564             :   /* check for a valid pointer and delete if present */ 
  116565           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  116566             :   /* add assignment to result here */ 
  116567           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  116568             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  116569             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  116570             :   // case: toBeCopied == COPY_DATA for numeric_label
  116571           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  116572           0 :      result->p_numeric_label = numeric_label_copy; 
  116573             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  116574             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  116575             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  116576           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  116577           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  116578             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  116579             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  116580             :   // case: toBeCopied == COPY_DATA for upir_parent
  116581           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  116582           0 :      result->p_upir_parent = upir_parent_copy; 
  116583             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  116584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  116585             :   // case: toBeCopied == COPY_DATA for upir_children
  116586           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  116587           0 :      result->p_upir_children = upir_children_copy; 
  116588             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  116589           0 :      SgOmpClausePtrList clauses_copy; 
  116590             :   // case: listType for clauses
  116591             :   // case: listType (typeIsPointerToList == false) for clauses
  116592           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  116593           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  116594             :         { 
  116595           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  116596           0 :           SgOmpClause* copy_list_element = NULL; 
  116597           0 :           if (source_list_element != NULL) 
  116598             :              { 
  116599           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  116600             :              } 
  116601             :             else 
  116602             :              { 
  116603             :                copy_list_element = NULL; 
  116604             :              } 
  116605           0 :           clauses_copy.push_back(copy_list_element); 
  116606             :         } 
  116607           0 :      result->p_clauses = clauses_copy; 
  116608             :   // case: listType for clauses
  116609             :   // case: listType (typeIsPointerToList == false) for clauses
  116610           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  116611           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  116612             :         { 
  116613           0 :           SgOmpClause* list_element = *clauses_iterator; 
  116614           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  116615             :              { 
  116616           0 :                list_element->set_parent(result); 
  116617             :              } 
  116618             :         } 
  116619             :   // case: not a listType for (using conditionalToSetParent)body
  116620           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  116621             :              { 
  116622           0 :                body_copy->set_parent(result); 
  116623             :              } 
  116624             : 
  116625             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  116626             : 
  116627             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  116628             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  116629             :   // fixupCopy(result,help);
  116630             : 
  116631             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  116632             :   // the Sg_File_Info objects that are built for the new IR nodes.
  116633           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  116634           0 :      if (locatedNode != NULL)
  116635             :         {
  116636             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  116637           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  116638           0 :           ROSE_ASSERT(start != NULL);
  116639             : #if 0
  116640             :        // Debugging information
  116641             :           if (start->get_parent() == NULL)
  116642             :              {
  116643             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116644             :              }
  116645             : #endif
  116646           0 :           start->set_parent(locatedNode);
  116647           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  116648             : 
  116649           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  116650             : 
  116651             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  116652             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  116653             :        // ROSE_ASSERT(end != NULL);
  116654           0 :           if (end == NULL)
  116655             :              {
  116656           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  116657             :              }
  116658             :             else
  116659             :              {
  116660             : #if 0
  116661             :             // Debugging information
  116662             :                if (end->get_parent() == NULL)
  116663             :                   {
  116664             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116665             :                   }
  116666             : #endif
  116667           0 :                end->set_parent(locatedNode);
  116668           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  116669             :              }
  116670             : 
  116671           0 :           SgExpression* expression = isSgExpression(result);
  116672           0 :           if (isSgExpression(this) != NULL)
  116673             :              {
  116674           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  116675             : 
  116676             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  116677           0 :                if (operatorPosition != NULL)
  116678             :                   {
  116679             : #if 0
  116680             :                  // Debugging information
  116681             :                     if (operatorPosition->get_parent() == NULL)
  116682             :                        {
  116683             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116684             :                        }
  116685             : #endif
  116686           0 :                     operatorPosition->set_parent(expression);
  116687           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  116688             :                   }
  116689             :              }
  116690             :         }
  116691             : 
  116692             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  116693           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  116694           0 :      if (initializedName != NULL)
  116695             :         {
  116696             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  116697           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  116698           0 :           ROSE_ASSERT(start != NULL);
  116699             : #if 0
  116700             :        // Debugging information
  116701             :           if (start->get_parent() == NULL)
  116702             :              {
  116703             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116704             :              }
  116705             : #endif
  116706           0 :           start->set_parent(initializedName);
  116707           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  116708             : 
  116709             : #if 0
  116710             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  116711             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  116712             : 
  116713             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  116714             :        // ROSE_ASSERT(end != NULL);
  116715             :           if (end == NULL)
  116716             :              {
  116717             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  116718             :              }
  116719             :             else
  116720             :              {
  116721             :                if (end->get_parent() == NULL)
  116722             :                   {
  116723             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116724             :                   }
  116725             :                end->set_parent(initializedName);
  116726             :                ROSE_ASSERT(end->get_parent() != NULL);
  116727             :              }
  116728             : #endif
  116729             :         }
  116730             : 
  116731             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  116732           0 :      help.insertCopiedNodePair(this,result);
  116733             : 
  116734             :   // printf ("End of copy SgOmpDepobjStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  116735             : 
  116736             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  116737             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  116738           0 :      help.decrementDepth();
  116739             : 
  116740             :   // Test if this is the root of the copy!
  116741           0 :      if (help.get_depth() == 0)
  116742             :         {
  116743             :        // This is the original calling node.
  116744             : 
  116745             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  116746             :        // printf ("Calling SgOmpDepobjStatement::fixupCopy() (from root of AST being copied) \n");
  116747             : #if ALT_FIXUP_COPY
  116748             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  116749           0 :           fixupCopy_scopes (result,help);
  116750           0 :           fixupCopy_symbols (result,help);
  116751           0 :           fixupCopy_references (result,help);
  116752             : #else
  116753             :           fixupCopy(result,help);
  116754             : #endif
  116755             :        // Allow this to be called recursively, so accumulate the state.
  116756             :        // Also, clear the state in the SgCopyHelp object.
  116757             :        // help.clearState();
  116758             :         }
  116759             : 
  116760           0 :      return result;
  116761             :    }
  116762             : 
  116763             : 
  116764             : /* #line 116765 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  116765             : 
  116766             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  116767             : 
  116768           0 : SgNode* SgOmpTargetEnterDataStatement::copy ( SgCopyHelp& help) const
  116769             :    {
  116770           0 :      SgOmpTargetEnterDataStatement* result = NULL;
  116771             : 
  116772             :   // printf ("Copy SgOmpTargetEnterDataStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  116773             : 
  116774             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  116775             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  116776             :   // The default value of the depth is 0, so after this call the depth is 1!
  116777           0 :      help.incrementDepth();
  116778             : 
  116779             : #if 0
  116780             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  116781             :   // but it is not generally true that things can only be copied once!
  116782             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  116783             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetEnterDataStatement*>(this)->attribute["copied"];
  116784             :      bool previouslyCopied = const_cast<SgOmpTargetEnterDataStatement*>(this)->attribute.exists("copied");
  116785             :      if (previouslyCopied == true)
  116786             :         {
  116787             :           this->get_file_info()->display("Called from copy SgOmpTargetEnterDataStatement: debug");
  116788             :         }
  116789             :      ROSE_ASSERT(previouslyCopied == false);
  116790             : 
  116791             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  116792             :      AstAttribute* newAttribute = new AstAttribute();
  116793             :      ROSE_ASSERT(newAttribute != NULL);
  116794             : 
  116795             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  116796             :      const_cast<SgOmpTargetEnterDataStatement*>(this)->attribute.add("copied",newAttribute);
  116797             : #endif
  116798             : 
  116799             :   // Copy data members from base classes
  116800             :   // Copy constructor parameter data member: startOfConstruct_copy
  116801             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  116802             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  116803           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  116804           0 :      if ( p_startOfConstruct != NULL ) 
  116805             :         { 
  116806           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  116807             :         } 
  116808             :        else 
  116809             :         { 
  116810             :           startOfConstruct_copy = NULL; 
  116811             :         } 
  116812             :   // Copy constructor parameter data member: body_copy
  116813           0 :      SgStatement* body_copy; 
  116814             :   // case: not a listType for (using conditionalToCopyVariable)body
  116815           0 :           if (get_body() != NULL) 
  116816             :              { 
  116817           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  116818             :              } 
  116819             :             else 
  116820             :              { 
  116821             :                body_copy = NULL; 
  116822             :              } 
  116823             :  
  116824             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  116825             : 
  116826             :   // Build an empty copy of this object (will be filled in, but 
  116827             :   // the parent can't be set and must be set by the caller)
  116828           0 :      result = new SgOmpTargetEnterDataStatement(  startOfConstruct_copy, body_copy );
  116829           0 :      ROSE_ASSERT(result != NULL);
  116830             : 
  116831             :   // Copy data members of "this" class
  116832             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  116833             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  116834             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  116835           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  116836           0 :      if ( p_endOfConstruct != NULL ) 
  116837             :         { 
  116838           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  116839             :         } 
  116840             :        else 
  116841             :         { 
  116842             :           endOfConstruct_copy = NULL; 
  116843             :         } 
  116844             :   /* check for a valid pointer and delete if present */ 
  116845           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  116846             :   /* add assignment to result here */ 
  116847           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  116848             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  116849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  116850             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  116851           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  116852           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  116853             :         { 
  116854           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  116855             :         } 
  116856             :        else 
  116857             :         { 
  116858             :           attachedPreprocessingInfoPtr_copy = NULL; 
  116859             :         } 
  116860             :   /* check for a valid pointer and delete if present */ 
  116861           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  116862             :   /* add assignment to result here */ 
  116863           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  116864             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  116865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  116866             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  116867           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  116868           0 :      if ( p_attributeMechanism != NULL ) 
  116869             :         { 
  116870           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  116871             :         } 
  116872             :        else 
  116873             :         { 
  116874             :           attributeMechanism_copy = NULL; 
  116875             :         } 
  116876             :   /* check for a valid pointer and delete if present */ 
  116877           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  116878             :   /* add assignment to result here */ 
  116879           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  116880             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  116881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  116882             :   // case: toBeCopied == COPY_DATA for numeric_label
  116883           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  116884           0 :      result->p_numeric_label = numeric_label_copy; 
  116885             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  116886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  116887             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  116888           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  116889           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  116890             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  116891             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  116892             :   // case: toBeCopied == COPY_DATA for upir_parent
  116893           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  116894           0 :      result->p_upir_parent = upir_parent_copy; 
  116895             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  116896             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  116897             :   // case: toBeCopied == COPY_DATA for upir_children
  116898           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  116899           0 :      result->p_upir_children = upir_children_copy; 
  116900             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  116901           0 :      SgOmpClausePtrList clauses_copy; 
  116902             :   // case: listType for clauses
  116903             :   // case: listType (typeIsPointerToList == false) for clauses
  116904           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  116905           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  116906             :         { 
  116907           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  116908           0 :           SgOmpClause* copy_list_element = NULL; 
  116909           0 :           if (source_list_element != NULL) 
  116910             :              { 
  116911           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  116912             :              } 
  116913             :             else 
  116914             :              { 
  116915             :                copy_list_element = NULL; 
  116916             :              } 
  116917           0 :           clauses_copy.push_back(copy_list_element); 
  116918             :         } 
  116919           0 :      result->p_clauses = clauses_copy; 
  116920             :   // case: listType for clauses
  116921             :   // case: listType (typeIsPointerToList == false) for clauses
  116922           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  116923           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  116924             :         { 
  116925           0 :           SgOmpClause* list_element = *clauses_iterator; 
  116926           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  116927             :              { 
  116928           0 :                list_element->set_parent(result); 
  116929             :              } 
  116930             :         } 
  116931             :   // case: not a listType for (using conditionalToSetParent)body
  116932           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  116933             :              { 
  116934           0 :                body_copy->set_parent(result); 
  116935             :              } 
  116936             : 
  116937             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  116938             : 
  116939             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  116940             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  116941             :   // fixupCopy(result,help);
  116942             : 
  116943             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  116944             :   // the Sg_File_Info objects that are built for the new IR nodes.
  116945           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  116946           0 :      if (locatedNode != NULL)
  116947             :         {
  116948             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  116949           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  116950           0 :           ROSE_ASSERT(start != NULL);
  116951             : #if 0
  116952             :        // Debugging information
  116953             :           if (start->get_parent() == NULL)
  116954             :              {
  116955             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116956             :              }
  116957             : #endif
  116958           0 :           start->set_parent(locatedNode);
  116959           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  116960             : 
  116961           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  116962             : 
  116963             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  116964             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  116965             :        // ROSE_ASSERT(end != NULL);
  116966           0 :           if (end == NULL)
  116967             :              {
  116968           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  116969             :              }
  116970             :             else
  116971             :              {
  116972             : #if 0
  116973             :             // Debugging information
  116974             :                if (end->get_parent() == NULL)
  116975             :                   {
  116976             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116977             :                   }
  116978             : #endif
  116979           0 :                end->set_parent(locatedNode);
  116980           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  116981             :              }
  116982             : 
  116983           0 :           SgExpression* expression = isSgExpression(result);
  116984           0 :           if (isSgExpression(this) != NULL)
  116985             :              {
  116986           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  116987             : 
  116988             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  116989           0 :                if (operatorPosition != NULL)
  116990             :                   {
  116991             : #if 0
  116992             :                  // Debugging information
  116993             :                     if (operatorPosition->get_parent() == NULL)
  116994             :                        {
  116995             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  116996             :                        }
  116997             : #endif
  116998           0 :                     operatorPosition->set_parent(expression);
  116999           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  117000             :                   }
  117001             :              }
  117002             :         }
  117003             : 
  117004             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  117005           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  117006           0 :      if (initializedName != NULL)
  117007             :         {
  117008             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  117009           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  117010           0 :           ROSE_ASSERT(start != NULL);
  117011             : #if 0
  117012             :        // Debugging information
  117013             :           if (start->get_parent() == NULL)
  117014             :              {
  117015             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117016             :              }
  117017             : #endif
  117018           0 :           start->set_parent(initializedName);
  117019           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  117020             : 
  117021             : #if 0
  117022             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  117023             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  117024             : 
  117025             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  117026             :        // ROSE_ASSERT(end != NULL);
  117027             :           if (end == NULL)
  117028             :              {
  117029             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  117030             :              }
  117031             :             else
  117032             :              {
  117033             :                if (end->get_parent() == NULL)
  117034             :                   {
  117035             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117036             :                   }
  117037             :                end->set_parent(initializedName);
  117038             :                ROSE_ASSERT(end->get_parent() != NULL);
  117039             :              }
  117040             : #endif
  117041             :         }
  117042             : 
  117043             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  117044           0 :      help.insertCopiedNodePair(this,result);
  117045             : 
  117046             :   // printf ("End of copy SgOmpTargetEnterDataStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  117047             : 
  117048             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  117049             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  117050           0 :      help.decrementDepth();
  117051             : 
  117052             :   // Test if this is the root of the copy!
  117053           0 :      if (help.get_depth() == 0)
  117054             :         {
  117055             :        // This is the original calling node.
  117056             : 
  117057             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  117058             :        // printf ("Calling SgOmpTargetEnterDataStatement::fixupCopy() (from root of AST being copied) \n");
  117059             : #if ALT_FIXUP_COPY
  117060             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  117061           0 :           fixupCopy_scopes (result,help);
  117062           0 :           fixupCopy_symbols (result,help);
  117063           0 :           fixupCopy_references (result,help);
  117064             : #else
  117065             :           fixupCopy(result,help);
  117066             : #endif
  117067             :        // Allow this to be called recursively, so accumulate the state.
  117068             :        // Also, clear the state in the SgCopyHelp object.
  117069             :        // help.clearState();
  117070             :         }
  117071             : 
  117072           0 :      return result;
  117073             :    }
  117074             : 
  117075             : 
  117076             : /* #line 117077 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  117077             : 
  117078             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  117079             : 
  117080           0 : SgNode* SgOmpTargetExitDataStatement::copy ( SgCopyHelp& help) const
  117081             :    {
  117082           0 :      SgOmpTargetExitDataStatement* result = NULL;
  117083             : 
  117084             :   // printf ("Copy SgOmpTargetExitDataStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  117085             : 
  117086             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  117087             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  117088             :   // The default value of the depth is 0, so after this call the depth is 1!
  117089           0 :      help.incrementDepth();
  117090             : 
  117091             : #if 0
  117092             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  117093             :   // but it is not generally true that things can only be copied once!
  117094             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  117095             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetExitDataStatement*>(this)->attribute["copied"];
  117096             :      bool previouslyCopied = const_cast<SgOmpTargetExitDataStatement*>(this)->attribute.exists("copied");
  117097             :      if (previouslyCopied == true)
  117098             :         {
  117099             :           this->get_file_info()->display("Called from copy SgOmpTargetExitDataStatement: debug");
  117100             :         }
  117101             :      ROSE_ASSERT(previouslyCopied == false);
  117102             : 
  117103             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  117104             :      AstAttribute* newAttribute = new AstAttribute();
  117105             :      ROSE_ASSERT(newAttribute != NULL);
  117106             : 
  117107             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  117108             :      const_cast<SgOmpTargetExitDataStatement*>(this)->attribute.add("copied",newAttribute);
  117109             : #endif
  117110             : 
  117111             :   // Copy data members from base classes
  117112             :   // Copy constructor parameter data member: startOfConstruct_copy
  117113             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  117114             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  117115           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  117116           0 :      if ( p_startOfConstruct != NULL ) 
  117117             :         { 
  117118           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  117119             :         } 
  117120             :        else 
  117121             :         { 
  117122             :           startOfConstruct_copy = NULL; 
  117123             :         } 
  117124             :   // Copy constructor parameter data member: body_copy
  117125           0 :      SgStatement* body_copy; 
  117126             :   // case: not a listType for (using conditionalToCopyVariable)body
  117127           0 :           if (get_body() != NULL) 
  117128             :              { 
  117129           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  117130             :              } 
  117131             :             else 
  117132             :              { 
  117133             :                body_copy = NULL; 
  117134             :              } 
  117135             :  
  117136             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  117137             : 
  117138             :   // Build an empty copy of this object (will be filled in, but 
  117139             :   // the parent can't be set and must be set by the caller)
  117140           0 :      result = new SgOmpTargetExitDataStatement(  startOfConstruct_copy, body_copy );
  117141           0 :      ROSE_ASSERT(result != NULL);
  117142             : 
  117143             :   // Copy data members of "this" class
  117144             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  117145             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  117146             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  117147           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  117148           0 :      if ( p_endOfConstruct != NULL ) 
  117149             :         { 
  117150           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  117151             :         } 
  117152             :        else 
  117153             :         { 
  117154             :           endOfConstruct_copy = NULL; 
  117155             :         } 
  117156             :   /* check for a valid pointer and delete if present */ 
  117157           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  117158             :   /* add assignment to result here */ 
  117159           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  117160             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  117161             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  117162             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  117163           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  117164           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  117165             :         { 
  117166           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  117167             :         } 
  117168             :        else 
  117169             :         { 
  117170             :           attachedPreprocessingInfoPtr_copy = NULL; 
  117171             :         } 
  117172             :   /* check for a valid pointer and delete if present */ 
  117173           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  117174             :   /* add assignment to result here */ 
  117175           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  117176             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  117177             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  117178             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  117179           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  117180           0 :      if ( p_attributeMechanism != NULL ) 
  117181             :         { 
  117182           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  117183             :         } 
  117184             :        else 
  117185             :         { 
  117186             :           attributeMechanism_copy = NULL; 
  117187             :         } 
  117188             :   /* check for a valid pointer and delete if present */ 
  117189           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  117190             :   /* add assignment to result here */ 
  117191           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  117192             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  117193             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  117194             :   // case: toBeCopied == COPY_DATA for numeric_label
  117195           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  117196           0 :      result->p_numeric_label = numeric_label_copy; 
  117197             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  117198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  117199             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  117200           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  117201           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  117202             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  117203             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  117204             :   // case: toBeCopied == COPY_DATA for upir_parent
  117205           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  117206           0 :      result->p_upir_parent = upir_parent_copy; 
  117207             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  117208             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  117209             :   // case: toBeCopied == COPY_DATA for upir_children
  117210           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  117211           0 :      result->p_upir_children = upir_children_copy; 
  117212             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  117213           0 :      SgOmpClausePtrList clauses_copy; 
  117214             :   // case: listType for clauses
  117215             :   // case: listType (typeIsPointerToList == false) for clauses
  117216           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  117217           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  117218             :         { 
  117219           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  117220           0 :           SgOmpClause* copy_list_element = NULL; 
  117221           0 :           if (source_list_element != NULL) 
  117222             :              { 
  117223           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  117224             :              } 
  117225             :             else 
  117226             :              { 
  117227             :                copy_list_element = NULL; 
  117228             :              } 
  117229           0 :           clauses_copy.push_back(copy_list_element); 
  117230             :         } 
  117231           0 :      result->p_clauses = clauses_copy; 
  117232             :   // case: listType for clauses
  117233             :   // case: listType (typeIsPointerToList == false) for clauses
  117234           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  117235           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  117236             :         { 
  117237           0 :           SgOmpClause* list_element = *clauses_iterator; 
  117238           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  117239             :              { 
  117240           0 :                list_element->set_parent(result); 
  117241             :              } 
  117242             :         } 
  117243             :   // case: not a listType for (using conditionalToSetParent)body
  117244           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  117245             :              { 
  117246           0 :                body_copy->set_parent(result); 
  117247             :              } 
  117248             : 
  117249             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  117250             : 
  117251             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  117252             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  117253             :   // fixupCopy(result,help);
  117254             : 
  117255             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  117256             :   // the Sg_File_Info objects that are built for the new IR nodes.
  117257           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  117258           0 :      if (locatedNode != NULL)
  117259             :         {
  117260             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  117261           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  117262           0 :           ROSE_ASSERT(start != NULL);
  117263             : #if 0
  117264             :        // Debugging information
  117265             :           if (start->get_parent() == NULL)
  117266             :              {
  117267             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117268             :              }
  117269             : #endif
  117270           0 :           start->set_parent(locatedNode);
  117271           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  117272             : 
  117273           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  117274             : 
  117275             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  117276             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  117277             :        // ROSE_ASSERT(end != NULL);
  117278           0 :           if (end == NULL)
  117279             :              {
  117280           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  117281             :              }
  117282             :             else
  117283             :              {
  117284             : #if 0
  117285             :             // Debugging information
  117286             :                if (end->get_parent() == NULL)
  117287             :                   {
  117288             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117289             :                   }
  117290             : #endif
  117291           0 :                end->set_parent(locatedNode);
  117292           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  117293             :              }
  117294             : 
  117295           0 :           SgExpression* expression = isSgExpression(result);
  117296           0 :           if (isSgExpression(this) != NULL)
  117297             :              {
  117298           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  117299             : 
  117300             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  117301           0 :                if (operatorPosition != NULL)
  117302             :                   {
  117303             : #if 0
  117304             :                  // Debugging information
  117305             :                     if (operatorPosition->get_parent() == NULL)
  117306             :                        {
  117307             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117308             :                        }
  117309             : #endif
  117310           0 :                     operatorPosition->set_parent(expression);
  117311           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  117312             :                   }
  117313             :              }
  117314             :         }
  117315             : 
  117316             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  117317           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  117318           0 :      if (initializedName != NULL)
  117319             :         {
  117320             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  117321           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  117322           0 :           ROSE_ASSERT(start != NULL);
  117323             : #if 0
  117324             :        // Debugging information
  117325             :           if (start->get_parent() == NULL)
  117326             :              {
  117327             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117328             :              }
  117329             : #endif
  117330           0 :           start->set_parent(initializedName);
  117331           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  117332             : 
  117333             : #if 0
  117334             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  117335             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  117336             : 
  117337             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  117338             :        // ROSE_ASSERT(end != NULL);
  117339             :           if (end == NULL)
  117340             :              {
  117341             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  117342             :              }
  117343             :             else
  117344             :              {
  117345             :                if (end->get_parent() == NULL)
  117346             :                   {
  117347             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117348             :                   }
  117349             :                end->set_parent(initializedName);
  117350             :                ROSE_ASSERT(end->get_parent() != NULL);
  117351             :              }
  117352             : #endif
  117353             :         }
  117354             : 
  117355             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  117356           0 :      help.insertCopiedNodePair(this,result);
  117357             : 
  117358             :   // printf ("End of copy SgOmpTargetExitDataStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  117359             : 
  117360             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  117361             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  117362           0 :      help.decrementDepth();
  117363             : 
  117364             :   // Test if this is the root of the copy!
  117365           0 :      if (help.get_depth() == 0)
  117366             :         {
  117367             :        // This is the original calling node.
  117368             : 
  117369             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  117370             :        // printf ("Calling SgOmpTargetExitDataStatement::fixupCopy() (from root of AST being copied) \n");
  117371             : #if ALT_FIXUP_COPY
  117372             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  117373           0 :           fixupCopy_scopes (result,help);
  117374           0 :           fixupCopy_symbols (result,help);
  117375           0 :           fixupCopy_references (result,help);
  117376             : #else
  117377             :           fixupCopy(result,help);
  117378             : #endif
  117379             :        // Allow this to be called recursively, so accumulate the state.
  117380             :        // Also, clear the state in the SgCopyHelp object.
  117381             :        // help.clearState();
  117382             :         }
  117383             : 
  117384           0 :      return result;
  117385             :    }
  117386             : 
  117387             : 
  117388             : /* #line 117389 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  117389             : 
  117390             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  117391             : 
  117392           0 : SgNode* SgOmpParallelMasterStatement::copy ( SgCopyHelp& help) const
  117393             :    {
  117394           0 :      SgOmpParallelMasterStatement* result = NULL;
  117395             : 
  117396             :   // printf ("Copy SgOmpParallelMasterStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  117397             : 
  117398             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  117399             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  117400             :   // The default value of the depth is 0, so after this call the depth is 1!
  117401           0 :      help.incrementDepth();
  117402             : 
  117403             : #if 0
  117404             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  117405             :   // but it is not generally true that things can only be copied once!
  117406             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  117407             :   // AstAttribute* existingAttribute = const_cast<SgOmpParallelMasterStatement*>(this)->attribute["copied"];
  117408             :      bool previouslyCopied = const_cast<SgOmpParallelMasterStatement*>(this)->attribute.exists("copied");
  117409             :      if (previouslyCopied == true)
  117410             :         {
  117411             :           this->get_file_info()->display("Called from copy SgOmpParallelMasterStatement: debug");
  117412             :         }
  117413             :      ROSE_ASSERT(previouslyCopied == false);
  117414             : 
  117415             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  117416             :      AstAttribute* newAttribute = new AstAttribute();
  117417             :      ROSE_ASSERT(newAttribute != NULL);
  117418             : 
  117419             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  117420             :      const_cast<SgOmpParallelMasterStatement*>(this)->attribute.add("copied",newAttribute);
  117421             : #endif
  117422             : 
  117423             :   // Copy data members from base classes
  117424             :   // Copy constructor parameter data member: startOfConstruct_copy
  117425             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  117426             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  117427           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  117428           0 :      if ( p_startOfConstruct != NULL ) 
  117429             :         { 
  117430           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  117431             :         } 
  117432             :        else 
  117433             :         { 
  117434             :           startOfConstruct_copy = NULL; 
  117435             :         } 
  117436             :   // Copy constructor parameter data member: body_copy
  117437           0 :      SgStatement* body_copy; 
  117438             :   // case: not a listType for (using conditionalToCopyVariable)body
  117439           0 :           if (get_body() != NULL) 
  117440             :              { 
  117441           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  117442             :              } 
  117443             :             else 
  117444             :              { 
  117445             :                body_copy = NULL; 
  117446             :              } 
  117447             :  
  117448             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  117449             : 
  117450             :   // Build an empty copy of this object (will be filled in, but 
  117451             :   // the parent can't be set and must be set by the caller)
  117452           0 :      result = new SgOmpParallelMasterStatement(  startOfConstruct_copy, body_copy );
  117453           0 :      ROSE_ASSERT(result != NULL);
  117454             : 
  117455             :   // Copy data members of "this" class
  117456             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  117457             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  117458             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  117459           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  117460           0 :      if ( p_endOfConstruct != NULL ) 
  117461             :         { 
  117462           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  117463             :         } 
  117464             :        else 
  117465             :         { 
  117466             :           endOfConstruct_copy = NULL; 
  117467             :         } 
  117468             :   /* check for a valid pointer and delete if present */ 
  117469           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  117470             :   /* add assignment to result here */ 
  117471           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  117472             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  117473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  117474             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  117475           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  117476           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  117477             :         { 
  117478           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  117479             :         } 
  117480             :        else 
  117481             :         { 
  117482             :           attachedPreprocessingInfoPtr_copy = NULL; 
  117483             :         } 
  117484             :   /* check for a valid pointer and delete if present */ 
  117485           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  117486             :   /* add assignment to result here */ 
  117487           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  117488             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  117489             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  117490             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  117491           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  117492           0 :      if ( p_attributeMechanism != NULL ) 
  117493             :         { 
  117494           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  117495             :         } 
  117496             :        else 
  117497             :         { 
  117498             :           attributeMechanism_copy = NULL; 
  117499             :         } 
  117500             :   /* check for a valid pointer and delete if present */ 
  117501           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  117502             :   /* add assignment to result here */ 
  117503           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  117504             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  117505             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  117506             :   // case: toBeCopied == COPY_DATA for numeric_label
  117507           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  117508           0 :      result->p_numeric_label = numeric_label_copy; 
  117509             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  117510             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  117511             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  117512           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  117513           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  117514             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  117515             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  117516             :   // case: toBeCopied == COPY_DATA for upir_parent
  117517           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  117518           0 :      result->p_upir_parent = upir_parent_copy; 
  117519             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  117520             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  117521             :   // case: toBeCopied == COPY_DATA for upir_children
  117522           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  117523           0 :      result->p_upir_children = upir_children_copy; 
  117524             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  117525           0 :      SgOmpClausePtrList clauses_copy; 
  117526             :   // case: listType for clauses
  117527             :   // case: listType (typeIsPointerToList == false) for clauses
  117528           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  117529           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  117530             :         { 
  117531           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  117532           0 :           SgOmpClause* copy_list_element = NULL; 
  117533           0 :           if (source_list_element != NULL) 
  117534             :              { 
  117535           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  117536             :              } 
  117537             :             else 
  117538             :              { 
  117539             :                copy_list_element = NULL; 
  117540             :              } 
  117541           0 :           clauses_copy.push_back(copy_list_element); 
  117542             :         } 
  117543           0 :      result->p_clauses = clauses_copy; 
  117544             :   // case: listType for clauses
  117545             :   // case: listType (typeIsPointerToList == false) for clauses
  117546           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  117547           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  117548             :         { 
  117549           0 :           SgOmpClause* list_element = *clauses_iterator; 
  117550           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  117551             :              { 
  117552           0 :                list_element->set_parent(result); 
  117553             :              } 
  117554             :         } 
  117555             :   // case: not a listType for (using conditionalToSetParent)body
  117556           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  117557             :              { 
  117558           0 :                body_copy->set_parent(result); 
  117559             :              } 
  117560             : 
  117561             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  117562             : 
  117563             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  117564             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  117565             :   // fixupCopy(result,help);
  117566             : 
  117567             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  117568             :   // the Sg_File_Info objects that are built for the new IR nodes.
  117569           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  117570           0 :      if (locatedNode != NULL)
  117571             :         {
  117572             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  117573           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  117574           0 :           ROSE_ASSERT(start != NULL);
  117575             : #if 0
  117576             :        // Debugging information
  117577             :           if (start->get_parent() == NULL)
  117578             :              {
  117579             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117580             :              }
  117581             : #endif
  117582           0 :           start->set_parent(locatedNode);
  117583           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  117584             : 
  117585           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  117586             : 
  117587             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  117588             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  117589             :        // ROSE_ASSERT(end != NULL);
  117590           0 :           if (end == NULL)
  117591             :              {
  117592           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  117593             :              }
  117594             :             else
  117595             :              {
  117596             : #if 0
  117597             :             // Debugging information
  117598             :                if (end->get_parent() == NULL)
  117599             :                   {
  117600             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117601             :                   }
  117602             : #endif
  117603           0 :                end->set_parent(locatedNode);
  117604           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  117605             :              }
  117606             : 
  117607           0 :           SgExpression* expression = isSgExpression(result);
  117608           0 :           if (isSgExpression(this) != NULL)
  117609             :              {
  117610           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  117611             : 
  117612             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  117613           0 :                if (operatorPosition != NULL)
  117614             :                   {
  117615             : #if 0
  117616             :                  // Debugging information
  117617             :                     if (operatorPosition->get_parent() == NULL)
  117618             :                        {
  117619             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117620             :                        }
  117621             : #endif
  117622           0 :                     operatorPosition->set_parent(expression);
  117623           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  117624             :                   }
  117625             :              }
  117626             :         }
  117627             : 
  117628             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  117629           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  117630           0 :      if (initializedName != NULL)
  117631             :         {
  117632             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  117633           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  117634           0 :           ROSE_ASSERT(start != NULL);
  117635             : #if 0
  117636             :        // Debugging information
  117637             :           if (start->get_parent() == NULL)
  117638             :              {
  117639             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117640             :              }
  117641             : #endif
  117642           0 :           start->set_parent(initializedName);
  117643           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  117644             : 
  117645             : #if 0
  117646             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  117647             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  117648             : 
  117649             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  117650             :        // ROSE_ASSERT(end != NULL);
  117651             :           if (end == NULL)
  117652             :              {
  117653             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  117654             :              }
  117655             :             else
  117656             :              {
  117657             :                if (end->get_parent() == NULL)
  117658             :                   {
  117659             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117660             :                   }
  117661             :                end->set_parent(initializedName);
  117662             :                ROSE_ASSERT(end->get_parent() != NULL);
  117663             :              }
  117664             : #endif
  117665             :         }
  117666             : 
  117667             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  117668           0 :      help.insertCopiedNodePair(this,result);
  117669             : 
  117670             :   // printf ("End of copy SgOmpParallelMasterStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  117671             : 
  117672             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  117673             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  117674           0 :      help.decrementDepth();
  117675             : 
  117676             :   // Test if this is the root of the copy!
  117677           0 :      if (help.get_depth() == 0)
  117678             :         {
  117679             :        // This is the original calling node.
  117680             : 
  117681             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  117682             :        // printf ("Calling SgOmpParallelMasterStatement::fixupCopy() (from root of AST being copied) \n");
  117683             : #if ALT_FIXUP_COPY
  117684             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  117685           0 :           fixupCopy_scopes (result,help);
  117686           0 :           fixupCopy_symbols (result,help);
  117687           0 :           fixupCopy_references (result,help);
  117688             : #else
  117689             :           fixupCopy(result,help);
  117690             : #endif
  117691             :        // Allow this to be called recursively, so accumulate the state.
  117692             :        // Also, clear the state in the SgCopyHelp object.
  117693             :        // help.clearState();
  117694             :         }
  117695             : 
  117696           0 :      return result;
  117697             :    }
  117698             : 
  117699             : 
  117700             : /* #line 117701 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  117701             : 
  117702             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  117703             : 
  117704           0 : SgNode* SgOmpMasterTaskloopStatement::copy ( SgCopyHelp& help) const
  117705             :    {
  117706           0 :      SgOmpMasterTaskloopStatement* result = NULL;
  117707             : 
  117708             :   // printf ("Copy SgOmpMasterTaskloopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  117709             : 
  117710             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  117711             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  117712             :   // The default value of the depth is 0, so after this call the depth is 1!
  117713           0 :      help.incrementDepth();
  117714             : 
  117715             : #if 0
  117716             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  117717             :   // but it is not generally true that things can only be copied once!
  117718             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  117719             :   // AstAttribute* existingAttribute = const_cast<SgOmpMasterTaskloopStatement*>(this)->attribute["copied"];
  117720             :      bool previouslyCopied = const_cast<SgOmpMasterTaskloopStatement*>(this)->attribute.exists("copied");
  117721             :      if (previouslyCopied == true)
  117722             :         {
  117723             :           this->get_file_info()->display("Called from copy SgOmpMasterTaskloopStatement: debug");
  117724             :         }
  117725             :      ROSE_ASSERT(previouslyCopied == false);
  117726             : 
  117727             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  117728             :      AstAttribute* newAttribute = new AstAttribute();
  117729             :      ROSE_ASSERT(newAttribute != NULL);
  117730             : 
  117731             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  117732             :      const_cast<SgOmpMasterTaskloopStatement*>(this)->attribute.add("copied",newAttribute);
  117733             : #endif
  117734             : 
  117735             :   // Copy data members from base classes
  117736             :   // Copy constructor parameter data member: startOfConstruct_copy
  117737             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  117738             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  117739           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  117740           0 :      if ( p_startOfConstruct != NULL ) 
  117741             :         { 
  117742           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  117743             :         } 
  117744             :        else 
  117745             :         { 
  117746             :           startOfConstruct_copy = NULL; 
  117747             :         } 
  117748             :   // Copy constructor parameter data member: body_copy
  117749           0 :      SgStatement* body_copy; 
  117750             :   // case: not a listType for (using conditionalToCopyVariable)body
  117751           0 :           if (get_body() != NULL) 
  117752             :              { 
  117753           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  117754             :              } 
  117755             :             else 
  117756             :              { 
  117757             :                body_copy = NULL; 
  117758             :              } 
  117759             :  
  117760             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  117761             : 
  117762             :   // Build an empty copy of this object (will be filled in, but 
  117763             :   // the parent can't be set and must be set by the caller)
  117764           0 :      result = new SgOmpMasterTaskloopStatement(  startOfConstruct_copy, body_copy );
  117765           0 :      ROSE_ASSERT(result != NULL);
  117766             : 
  117767             :   // Copy data members of "this" class
  117768             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  117769             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  117770             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  117771           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  117772           0 :      if ( p_endOfConstruct != NULL ) 
  117773             :         { 
  117774           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  117775             :         } 
  117776             :        else 
  117777             :         { 
  117778             :           endOfConstruct_copy = NULL; 
  117779             :         } 
  117780             :   /* check for a valid pointer and delete if present */ 
  117781           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  117782             :   /* add assignment to result here */ 
  117783           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  117784             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  117785             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  117786             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  117787           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  117788           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  117789             :         { 
  117790           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  117791             :         } 
  117792             :        else 
  117793             :         { 
  117794             :           attachedPreprocessingInfoPtr_copy = NULL; 
  117795             :         } 
  117796             :   /* check for a valid pointer and delete if present */ 
  117797           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  117798             :   /* add assignment to result here */ 
  117799           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  117800             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  117801             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  117802             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  117803           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  117804           0 :      if ( p_attributeMechanism != NULL ) 
  117805             :         { 
  117806           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  117807             :         } 
  117808             :        else 
  117809             :         { 
  117810             :           attributeMechanism_copy = NULL; 
  117811             :         } 
  117812             :   /* check for a valid pointer and delete if present */ 
  117813           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  117814             :   /* add assignment to result here */ 
  117815           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  117816             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  117817             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  117818             :   // case: toBeCopied == COPY_DATA for numeric_label
  117819           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  117820           0 :      result->p_numeric_label = numeric_label_copy; 
  117821             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  117822             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  117823             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  117824           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  117825           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  117826             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  117827             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  117828             :   // case: toBeCopied == COPY_DATA for upir_parent
  117829           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  117830           0 :      result->p_upir_parent = upir_parent_copy; 
  117831             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  117832             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  117833             :   // case: toBeCopied == COPY_DATA for upir_children
  117834           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  117835           0 :      result->p_upir_children = upir_children_copy; 
  117836             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  117837           0 :      SgOmpClausePtrList clauses_copy; 
  117838             :   // case: listType for clauses
  117839             :   // case: listType (typeIsPointerToList == false) for clauses
  117840           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  117841           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  117842             :         { 
  117843           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  117844           0 :           SgOmpClause* copy_list_element = NULL; 
  117845           0 :           if (source_list_element != NULL) 
  117846             :              { 
  117847           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  117848             :              } 
  117849             :             else 
  117850             :              { 
  117851             :                copy_list_element = NULL; 
  117852             :              } 
  117853           0 :           clauses_copy.push_back(copy_list_element); 
  117854             :         } 
  117855           0 :      result->p_clauses = clauses_copy; 
  117856             :   // case: listType for clauses
  117857             :   // case: listType (typeIsPointerToList == false) for clauses
  117858           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  117859           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  117860             :         { 
  117861           0 :           SgOmpClause* list_element = *clauses_iterator; 
  117862           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  117863             :              { 
  117864           0 :                list_element->set_parent(result); 
  117865             :              } 
  117866             :         } 
  117867             :   // case: not a listType for (using conditionalToSetParent)body
  117868           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  117869             :              { 
  117870           0 :                body_copy->set_parent(result); 
  117871             :              } 
  117872             : 
  117873             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  117874             : 
  117875             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  117876             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  117877             :   // fixupCopy(result,help);
  117878             : 
  117879             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  117880             :   // the Sg_File_Info objects that are built for the new IR nodes.
  117881           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  117882           0 :      if (locatedNode != NULL)
  117883             :         {
  117884             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  117885           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  117886           0 :           ROSE_ASSERT(start != NULL);
  117887             : #if 0
  117888             :        // Debugging information
  117889             :           if (start->get_parent() == NULL)
  117890             :              {
  117891             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117892             :              }
  117893             : #endif
  117894           0 :           start->set_parent(locatedNode);
  117895           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  117896             : 
  117897           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  117898             : 
  117899             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  117900             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  117901             :        // ROSE_ASSERT(end != NULL);
  117902           0 :           if (end == NULL)
  117903             :              {
  117904           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  117905             :              }
  117906             :             else
  117907             :              {
  117908             : #if 0
  117909             :             // Debugging information
  117910             :                if (end->get_parent() == NULL)
  117911             :                   {
  117912             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117913             :                   }
  117914             : #endif
  117915           0 :                end->set_parent(locatedNode);
  117916           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  117917             :              }
  117918             : 
  117919           0 :           SgExpression* expression = isSgExpression(result);
  117920           0 :           if (isSgExpression(this) != NULL)
  117921             :              {
  117922           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  117923             : 
  117924             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  117925           0 :                if (operatorPosition != NULL)
  117926             :                   {
  117927             : #if 0
  117928             :                  // Debugging information
  117929             :                     if (operatorPosition->get_parent() == NULL)
  117930             :                        {
  117931             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117932             :                        }
  117933             : #endif
  117934           0 :                     operatorPosition->set_parent(expression);
  117935           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  117936             :                   }
  117937             :              }
  117938             :         }
  117939             : 
  117940             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  117941           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  117942           0 :      if (initializedName != NULL)
  117943             :         {
  117944             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  117945           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  117946           0 :           ROSE_ASSERT(start != NULL);
  117947             : #if 0
  117948             :        // Debugging information
  117949             :           if (start->get_parent() == NULL)
  117950             :              {
  117951             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117952             :              }
  117953             : #endif
  117954           0 :           start->set_parent(initializedName);
  117955           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  117956             : 
  117957             : #if 0
  117958             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  117959             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  117960             : 
  117961             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  117962             :        // ROSE_ASSERT(end != NULL);
  117963             :           if (end == NULL)
  117964             :              {
  117965             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  117966             :              }
  117967             :             else
  117968             :              {
  117969             :                if (end->get_parent() == NULL)
  117970             :                   {
  117971             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  117972             :                   }
  117973             :                end->set_parent(initializedName);
  117974             :                ROSE_ASSERT(end->get_parent() != NULL);
  117975             :              }
  117976             : #endif
  117977             :         }
  117978             : 
  117979             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  117980           0 :      help.insertCopiedNodePair(this,result);
  117981             : 
  117982             :   // printf ("End of copy SgOmpMasterTaskloopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  117983             : 
  117984             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  117985             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  117986           0 :      help.decrementDepth();
  117987             : 
  117988             :   // Test if this is the root of the copy!
  117989           0 :      if (help.get_depth() == 0)
  117990             :         {
  117991             :        // This is the original calling node.
  117992             : 
  117993             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  117994             :        // printf ("Calling SgOmpMasterTaskloopStatement::fixupCopy() (from root of AST being copied) \n");
  117995             : #if ALT_FIXUP_COPY
  117996             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  117997           0 :           fixupCopy_scopes (result,help);
  117998           0 :           fixupCopy_symbols (result,help);
  117999           0 :           fixupCopy_references (result,help);
  118000             : #else
  118001             :           fixupCopy(result,help);
  118002             : #endif
  118003             :        // Allow this to be called recursively, so accumulate the state.
  118004             :        // Also, clear the state in the SgCopyHelp object.
  118005             :        // help.clearState();
  118006             :         }
  118007             : 
  118008           0 :      return result;
  118009             :    }
  118010             : 
  118011             : 
  118012             : /* #line 118013 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  118013             : 
  118014             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118015             : 
  118016           0 : SgNode* SgOmpTaskStatement::copy ( SgCopyHelp& help) const
  118017             :    {
  118018           0 :      SgOmpTaskStatement* result = NULL;
  118019             : 
  118020             :   // printf ("Copy SgOmpTaskStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  118021             : 
  118022             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  118023             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  118024             :   // The default value of the depth is 0, so after this call the depth is 1!
  118025           0 :      help.incrementDepth();
  118026             : 
  118027             : #if 0
  118028             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  118029             :   // but it is not generally true that things can only be copied once!
  118030             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  118031             :   // AstAttribute* existingAttribute = const_cast<SgOmpTaskStatement*>(this)->attribute["copied"];
  118032             :      bool previouslyCopied = const_cast<SgOmpTaskStatement*>(this)->attribute.exists("copied");
  118033             :      if (previouslyCopied == true)
  118034             :         {
  118035             :           this->get_file_info()->display("Called from copy SgOmpTaskStatement: debug");
  118036             :         }
  118037             :      ROSE_ASSERT(previouslyCopied == false);
  118038             : 
  118039             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  118040             :      AstAttribute* newAttribute = new AstAttribute();
  118041             :      ROSE_ASSERT(newAttribute != NULL);
  118042             : 
  118043             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  118044             :      const_cast<SgOmpTaskStatement*>(this)->attribute.add("copied",newAttribute);
  118045             : #endif
  118046             : 
  118047             :   // Copy data members from base classes
  118048             :   // Copy constructor parameter data member: startOfConstruct_copy
  118049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  118050             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  118051           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  118052           0 :      if ( p_startOfConstruct != NULL ) 
  118053             :         { 
  118054           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  118055             :         } 
  118056             :        else 
  118057             :         { 
  118058             :           startOfConstruct_copy = NULL; 
  118059             :         } 
  118060             :   // Copy constructor parameter data member: body_copy
  118061           0 :      SgStatement* body_copy; 
  118062             :   // case: not a listType for (using conditionalToCopyVariable)body
  118063           0 :           if (get_body() != NULL) 
  118064             :              { 
  118065           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  118066             :              } 
  118067             :             else 
  118068             :              { 
  118069             :                body_copy = NULL; 
  118070             :              } 
  118071             :  
  118072             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118073             : 
  118074             :   // Build an empty copy of this object (will be filled in, but 
  118075             :   // the parent can't be set and must be set by the caller)
  118076           0 :      result = new SgOmpTaskStatement(  startOfConstruct_copy, body_copy );
  118077           0 :      ROSE_ASSERT(result != NULL);
  118078             : 
  118079             :   // Copy data members of "this" class
  118080             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  118081             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  118082             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  118083           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  118084           0 :      if ( p_endOfConstruct != NULL ) 
  118085             :         { 
  118086           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  118087             :         } 
  118088             :        else 
  118089             :         { 
  118090             :           endOfConstruct_copy = NULL; 
  118091             :         } 
  118092             :   /* check for a valid pointer and delete if present */ 
  118093           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  118094             :   /* add assignment to result here */ 
  118095           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  118096             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  118097             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  118098             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  118099           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  118100           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  118101             :         { 
  118102           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  118103             :         } 
  118104             :        else 
  118105             :         { 
  118106             :           attachedPreprocessingInfoPtr_copy = NULL; 
  118107             :         } 
  118108             :   /* check for a valid pointer and delete if present */ 
  118109           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  118110             :   /* add assignment to result here */ 
  118111           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  118112             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  118113             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  118114             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  118115           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  118116           0 :      if ( p_attributeMechanism != NULL ) 
  118117             :         { 
  118118           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  118119             :         } 
  118120             :        else 
  118121             :         { 
  118122             :           attributeMechanism_copy = NULL; 
  118123             :         } 
  118124             :   /* check for a valid pointer and delete if present */ 
  118125           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  118126             :   /* add assignment to result here */ 
  118127           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  118128             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  118129             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  118130             :   // case: toBeCopied == COPY_DATA for numeric_label
  118131           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  118132           0 :      result->p_numeric_label = numeric_label_copy; 
  118133             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  118134             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  118135             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  118136           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  118137           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  118138             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  118139             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  118140             :   // case: toBeCopied == COPY_DATA for upir_parent
  118141           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  118142           0 :      result->p_upir_parent = upir_parent_copy; 
  118143             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  118144             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  118145             :   // case: toBeCopied == COPY_DATA for upir_children
  118146           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  118147           0 :      result->p_upir_children = upir_children_copy; 
  118148             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  118149           0 :      SgOmpClausePtrList clauses_copy; 
  118150             :   // case: listType for clauses
  118151             :   // case: listType (typeIsPointerToList == false) for clauses
  118152           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  118153           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  118154             :         { 
  118155           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  118156           0 :           SgOmpClause* copy_list_element = NULL; 
  118157           0 :           if (source_list_element != NULL) 
  118158             :              { 
  118159           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  118160             :              } 
  118161             :             else 
  118162             :              { 
  118163             :                copy_list_element = NULL; 
  118164             :              } 
  118165           0 :           clauses_copy.push_back(copy_list_element); 
  118166             :         } 
  118167           0 :      result->p_clauses = clauses_copy; 
  118168             :   // case: listType for clauses
  118169             :   // case: listType (typeIsPointerToList == false) for clauses
  118170           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  118171           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  118172             :         { 
  118173           0 :           SgOmpClause* list_element = *clauses_iterator; 
  118174           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  118175             :              { 
  118176           0 :                list_element->set_parent(result); 
  118177             :              } 
  118178             :         } 
  118179             :   // case: not a listType for (using conditionalToSetParent)body
  118180           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  118181             :              { 
  118182           0 :                body_copy->set_parent(result); 
  118183             :              } 
  118184             : 
  118185             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118186             : 
  118187             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  118188             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  118189             :   // fixupCopy(result,help);
  118190             : 
  118191             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  118192             :   // the Sg_File_Info objects that are built for the new IR nodes.
  118193           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  118194           0 :      if (locatedNode != NULL)
  118195             :         {
  118196             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  118197           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  118198           0 :           ROSE_ASSERT(start != NULL);
  118199             : #if 0
  118200             :        // Debugging information
  118201             :           if (start->get_parent() == NULL)
  118202             :              {
  118203             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118204             :              }
  118205             : #endif
  118206           0 :           start->set_parent(locatedNode);
  118207           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  118208             : 
  118209           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  118210             : 
  118211             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  118212             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  118213             :        // ROSE_ASSERT(end != NULL);
  118214           0 :           if (end == NULL)
  118215             :              {
  118216           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  118217             :              }
  118218             :             else
  118219             :              {
  118220             : #if 0
  118221             :             // Debugging information
  118222             :                if (end->get_parent() == NULL)
  118223             :                   {
  118224             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118225             :                   }
  118226             : #endif
  118227           0 :                end->set_parent(locatedNode);
  118228           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  118229             :              }
  118230             : 
  118231           0 :           SgExpression* expression = isSgExpression(result);
  118232           0 :           if (isSgExpression(this) != NULL)
  118233             :              {
  118234           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  118235             : 
  118236             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  118237           0 :                if (operatorPosition != NULL)
  118238             :                   {
  118239             : #if 0
  118240             :                  // Debugging information
  118241             :                     if (operatorPosition->get_parent() == NULL)
  118242             :                        {
  118243             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118244             :                        }
  118245             : #endif
  118246           0 :                     operatorPosition->set_parent(expression);
  118247           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  118248             :                   }
  118249             :              }
  118250             :         }
  118251             : 
  118252             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  118253           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  118254           0 :      if (initializedName != NULL)
  118255             :         {
  118256             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  118257           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  118258           0 :           ROSE_ASSERT(start != NULL);
  118259             : #if 0
  118260             :        // Debugging information
  118261             :           if (start->get_parent() == NULL)
  118262             :              {
  118263             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118264             :              }
  118265             : #endif
  118266           0 :           start->set_parent(initializedName);
  118267           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  118268             : 
  118269             : #if 0
  118270             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  118271             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  118272             : 
  118273             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  118274             :        // ROSE_ASSERT(end != NULL);
  118275             :           if (end == NULL)
  118276             :              {
  118277             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  118278             :              }
  118279             :             else
  118280             :              {
  118281             :                if (end->get_parent() == NULL)
  118282             :                   {
  118283             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118284             :                   }
  118285             :                end->set_parent(initializedName);
  118286             :                ROSE_ASSERT(end->get_parent() != NULL);
  118287             :              }
  118288             : #endif
  118289             :         }
  118290             : 
  118291             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  118292           0 :      help.insertCopiedNodePair(this,result);
  118293             : 
  118294             :   // printf ("End of copy SgOmpTaskStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  118295             : 
  118296             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  118297             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  118298           0 :      help.decrementDepth();
  118299             : 
  118300             :   // Test if this is the root of the copy!
  118301           0 :      if (help.get_depth() == 0)
  118302             :         {
  118303             :        // This is the original calling node.
  118304             : 
  118305             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  118306             :        // printf ("Calling SgOmpTaskStatement::fixupCopy() (from root of AST being copied) \n");
  118307             : #if ALT_FIXUP_COPY
  118308             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  118309           0 :           fixupCopy_scopes (result,help);
  118310           0 :           fixupCopy_symbols (result,help);
  118311           0 :           fixupCopy_references (result,help);
  118312             : #else
  118313             :           fixupCopy(result,help);
  118314             : #endif
  118315             :        // Allow this to be called recursively, so accumulate the state.
  118316             :        // Also, clear the state in the SgCopyHelp object.
  118317             :        // help.clearState();
  118318             :         }
  118319             : 
  118320           0 :      return result;
  118321             :    }
  118322             : 
  118323             : 
  118324             : /* #line 118325 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  118325             : 
  118326             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118327             : 
  118328           0 : SgNode* SgOmpDoStatement::copy ( SgCopyHelp& help) const
  118329             :    {
  118330           0 :      SgOmpDoStatement* result = NULL;
  118331             : 
  118332             :   // printf ("Copy SgOmpDoStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  118333             : 
  118334             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  118335             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  118336             :   // The default value of the depth is 0, so after this call the depth is 1!
  118337           0 :      help.incrementDepth();
  118338             : 
  118339             : #if 0
  118340             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  118341             :   // but it is not generally true that things can only be copied once!
  118342             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  118343             :   // AstAttribute* existingAttribute = const_cast<SgOmpDoStatement*>(this)->attribute["copied"];
  118344             :      bool previouslyCopied = const_cast<SgOmpDoStatement*>(this)->attribute.exists("copied");
  118345             :      if (previouslyCopied == true)
  118346             :         {
  118347             :           this->get_file_info()->display("Called from copy SgOmpDoStatement: debug");
  118348             :         }
  118349             :      ROSE_ASSERT(previouslyCopied == false);
  118350             : 
  118351             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  118352             :      AstAttribute* newAttribute = new AstAttribute();
  118353             :      ROSE_ASSERT(newAttribute != NULL);
  118354             : 
  118355             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  118356             :      const_cast<SgOmpDoStatement*>(this)->attribute.add("copied",newAttribute);
  118357             : #endif
  118358             : 
  118359             :   // Copy data members from base classes
  118360             :   // Copy constructor parameter data member: startOfConstruct_copy
  118361             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  118362             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  118363           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  118364           0 :      if ( p_startOfConstruct != NULL ) 
  118365             :         { 
  118366           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  118367             :         } 
  118368             :        else 
  118369             :         { 
  118370             :           startOfConstruct_copy = NULL; 
  118371             :         } 
  118372             :   // Copy constructor parameter data member: body_copy
  118373           0 :      SgStatement* body_copy; 
  118374             :   // case: not a listType for (using conditionalToCopyVariable)body
  118375           0 :           if (get_body() != NULL) 
  118376             :              { 
  118377           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  118378             :              } 
  118379             :             else 
  118380             :              { 
  118381             :                body_copy = NULL; 
  118382             :              } 
  118383             :  
  118384             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118385             : 
  118386             :   // Build an empty copy of this object (will be filled in, but 
  118387             :   // the parent can't be set and must be set by the caller)
  118388           0 :      result = new SgOmpDoStatement(  startOfConstruct_copy, body_copy );
  118389           0 :      ROSE_ASSERT(result != NULL);
  118390             : 
  118391             :   // Copy data members of "this" class
  118392             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  118393             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  118394             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  118395           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  118396           0 :      if ( p_endOfConstruct != NULL ) 
  118397             :         { 
  118398           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  118399             :         } 
  118400             :        else 
  118401             :         { 
  118402             :           endOfConstruct_copy = NULL; 
  118403             :         } 
  118404             :   /* check for a valid pointer and delete if present */ 
  118405           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  118406             :   /* add assignment to result here */ 
  118407           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  118408             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  118409             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  118410             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  118411           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  118412           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  118413             :         { 
  118414           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  118415             :         } 
  118416             :        else 
  118417             :         { 
  118418             :           attachedPreprocessingInfoPtr_copy = NULL; 
  118419             :         } 
  118420             :   /* check for a valid pointer and delete if present */ 
  118421           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  118422             :   /* add assignment to result here */ 
  118423           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  118424             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  118425             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  118426             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  118427           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  118428           0 :      if ( p_attributeMechanism != NULL ) 
  118429             :         { 
  118430           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  118431             :         } 
  118432             :        else 
  118433             :         { 
  118434             :           attributeMechanism_copy = NULL; 
  118435             :         } 
  118436             :   /* check for a valid pointer and delete if present */ 
  118437           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  118438             :   /* add assignment to result here */ 
  118439           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  118440             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  118441             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  118442             :   // case: toBeCopied == COPY_DATA for numeric_label
  118443           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  118444           0 :      result->p_numeric_label = numeric_label_copy; 
  118445             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  118446             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  118447             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  118448           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  118449           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  118450             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  118451             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  118452             :   // case: toBeCopied == COPY_DATA for upir_parent
  118453           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  118454           0 :      result->p_upir_parent = upir_parent_copy; 
  118455             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  118456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  118457             :   // case: toBeCopied == COPY_DATA for upir_children
  118458           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  118459           0 :      result->p_upir_children = upir_children_copy; 
  118460             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  118461           0 :      SgOmpClausePtrList clauses_copy; 
  118462             :   // case: listType for clauses
  118463             :   // case: listType (typeIsPointerToList == false) for clauses
  118464           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  118465           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  118466             :         { 
  118467           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  118468           0 :           SgOmpClause* copy_list_element = NULL; 
  118469           0 :           if (source_list_element != NULL) 
  118470             :              { 
  118471           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  118472             :              } 
  118473             :             else 
  118474             :              { 
  118475             :                copy_list_element = NULL; 
  118476             :              } 
  118477           0 :           clauses_copy.push_back(copy_list_element); 
  118478             :         } 
  118479           0 :      result->p_clauses = clauses_copy; 
  118480             :   // case: listType for clauses
  118481             :   // case: listType (typeIsPointerToList == false) for clauses
  118482           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  118483           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  118484             :         { 
  118485           0 :           SgOmpClause* list_element = *clauses_iterator; 
  118486           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  118487             :              { 
  118488           0 :                list_element->set_parent(result); 
  118489             :              } 
  118490             :         } 
  118491             :   // case: not a listType for (using conditionalToSetParent)body
  118492           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  118493             :              { 
  118494           0 :                body_copy->set_parent(result); 
  118495             :              } 
  118496             : 
  118497             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118498             : 
  118499             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  118500             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  118501             :   // fixupCopy(result,help);
  118502             : 
  118503             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  118504             :   // the Sg_File_Info objects that are built for the new IR nodes.
  118505           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  118506           0 :      if (locatedNode != NULL)
  118507             :         {
  118508             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  118509           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  118510           0 :           ROSE_ASSERT(start != NULL);
  118511             : #if 0
  118512             :        // Debugging information
  118513             :           if (start->get_parent() == NULL)
  118514             :              {
  118515             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118516             :              }
  118517             : #endif
  118518           0 :           start->set_parent(locatedNode);
  118519           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  118520             : 
  118521           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  118522             : 
  118523             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  118524             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  118525             :        // ROSE_ASSERT(end != NULL);
  118526           0 :           if (end == NULL)
  118527             :              {
  118528           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  118529             :              }
  118530             :             else
  118531             :              {
  118532             : #if 0
  118533             :             // Debugging information
  118534             :                if (end->get_parent() == NULL)
  118535             :                   {
  118536             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118537             :                   }
  118538             : #endif
  118539           0 :                end->set_parent(locatedNode);
  118540           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  118541             :              }
  118542             : 
  118543           0 :           SgExpression* expression = isSgExpression(result);
  118544           0 :           if (isSgExpression(this) != NULL)
  118545             :              {
  118546           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  118547             : 
  118548             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  118549           0 :                if (operatorPosition != NULL)
  118550             :                   {
  118551             : #if 0
  118552             :                  // Debugging information
  118553             :                     if (operatorPosition->get_parent() == NULL)
  118554             :                        {
  118555             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118556             :                        }
  118557             : #endif
  118558           0 :                     operatorPosition->set_parent(expression);
  118559           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  118560             :                   }
  118561             :              }
  118562             :         }
  118563             : 
  118564             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  118565           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  118566           0 :      if (initializedName != NULL)
  118567             :         {
  118568             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  118569           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  118570           0 :           ROSE_ASSERT(start != NULL);
  118571             : #if 0
  118572             :        // Debugging information
  118573             :           if (start->get_parent() == NULL)
  118574             :              {
  118575             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118576             :              }
  118577             : #endif
  118578           0 :           start->set_parent(initializedName);
  118579           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  118580             : 
  118581             : #if 0
  118582             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  118583             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  118584             : 
  118585             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  118586             :        // ROSE_ASSERT(end != NULL);
  118587             :           if (end == NULL)
  118588             :              {
  118589             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  118590             :              }
  118591             :             else
  118592             :              {
  118593             :                if (end->get_parent() == NULL)
  118594             :                   {
  118595             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118596             :                   }
  118597             :                end->set_parent(initializedName);
  118598             :                ROSE_ASSERT(end->get_parent() != NULL);
  118599             :              }
  118600             : #endif
  118601             :         }
  118602             : 
  118603             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  118604           0 :      help.insertCopiedNodePair(this,result);
  118605             : 
  118606             :   // printf ("End of copy SgOmpDoStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  118607             : 
  118608             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  118609             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  118610           0 :      help.decrementDepth();
  118611             : 
  118612             :   // Test if this is the root of the copy!
  118613           0 :      if (help.get_depth() == 0)
  118614             :         {
  118615             :        // This is the original calling node.
  118616             : 
  118617             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  118618             :        // printf ("Calling SgOmpDoStatement::fixupCopy() (from root of AST being copied) \n");
  118619             : #if ALT_FIXUP_COPY
  118620             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  118621           0 :           fixupCopy_scopes (result,help);
  118622           0 :           fixupCopy_symbols (result,help);
  118623           0 :           fixupCopy_references (result,help);
  118624             : #else
  118625             :           fixupCopy(result,help);
  118626             : #endif
  118627             :        // Allow this to be called recursively, so accumulate the state.
  118628             :        // Also, clear the state in the SgCopyHelp object.
  118629             :        // help.clearState();
  118630             :         }
  118631             : 
  118632           0 :      return result;
  118633             :    }
  118634             : 
  118635             : 
  118636             : /* #line 118637 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  118637             : 
  118638             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118639             : 
  118640           0 : SgNode* SgOmpSectionsStatement::copy ( SgCopyHelp& help) const
  118641             :    {
  118642           0 :      SgOmpSectionsStatement* result = NULL;
  118643             : 
  118644             :   // printf ("Copy SgOmpSectionsStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  118645             : 
  118646             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  118647             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  118648             :   // The default value of the depth is 0, so after this call the depth is 1!
  118649           0 :      help.incrementDepth();
  118650             : 
  118651             : #if 0
  118652             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  118653             :   // but it is not generally true that things can only be copied once!
  118654             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  118655             :   // AstAttribute* existingAttribute = const_cast<SgOmpSectionsStatement*>(this)->attribute["copied"];
  118656             :      bool previouslyCopied = const_cast<SgOmpSectionsStatement*>(this)->attribute.exists("copied");
  118657             :      if (previouslyCopied == true)
  118658             :         {
  118659             :           this->get_file_info()->display("Called from copy SgOmpSectionsStatement: debug");
  118660             :         }
  118661             :      ROSE_ASSERT(previouslyCopied == false);
  118662             : 
  118663             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  118664             :      AstAttribute* newAttribute = new AstAttribute();
  118665             :      ROSE_ASSERT(newAttribute != NULL);
  118666             : 
  118667             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  118668             :      const_cast<SgOmpSectionsStatement*>(this)->attribute.add("copied",newAttribute);
  118669             : #endif
  118670             : 
  118671             :   // Copy data members from base classes
  118672             :   // Copy constructor parameter data member: startOfConstruct_copy
  118673             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  118674             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  118675           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  118676           0 :      if ( p_startOfConstruct != NULL ) 
  118677             :         { 
  118678           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  118679             :         } 
  118680             :        else 
  118681             :         { 
  118682             :           startOfConstruct_copy = NULL; 
  118683             :         } 
  118684             :   // Copy constructor parameter data member: body_copy
  118685           0 :      SgStatement* body_copy; 
  118686             :   // case: not a listType for (using conditionalToCopyVariable)body
  118687           0 :           if (get_body() != NULL) 
  118688             :              { 
  118689           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  118690             :              } 
  118691             :             else 
  118692             :              { 
  118693             :                body_copy = NULL; 
  118694             :              } 
  118695             :  
  118696             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118697             : 
  118698             :   // Build an empty copy of this object (will be filled in, but 
  118699             :   // the parent can't be set and must be set by the caller)
  118700           0 :      result = new SgOmpSectionsStatement(  startOfConstruct_copy, body_copy );
  118701           0 :      ROSE_ASSERT(result != NULL);
  118702             : 
  118703             :   // Copy data members of "this" class
  118704             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  118705             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  118706             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  118707           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  118708           0 :      if ( p_endOfConstruct != NULL ) 
  118709             :         { 
  118710           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  118711             :         } 
  118712             :        else 
  118713             :         { 
  118714             :           endOfConstruct_copy = NULL; 
  118715             :         } 
  118716             :   /* check for a valid pointer and delete if present */ 
  118717           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  118718             :   /* add assignment to result here */ 
  118719           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  118720             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  118721             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  118722             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  118723           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  118724           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  118725             :         { 
  118726           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  118727             :         } 
  118728             :        else 
  118729             :         { 
  118730             :           attachedPreprocessingInfoPtr_copy = NULL; 
  118731             :         } 
  118732             :   /* check for a valid pointer and delete if present */ 
  118733           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  118734             :   /* add assignment to result here */ 
  118735           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  118736             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  118737             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  118738             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  118739           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  118740           0 :      if ( p_attributeMechanism != NULL ) 
  118741             :         { 
  118742           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  118743             :         } 
  118744             :        else 
  118745             :         { 
  118746             :           attributeMechanism_copy = NULL; 
  118747             :         } 
  118748             :   /* check for a valid pointer and delete if present */ 
  118749           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  118750             :   /* add assignment to result here */ 
  118751           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  118752             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  118753             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  118754             :   // case: toBeCopied == COPY_DATA for numeric_label
  118755           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  118756           0 :      result->p_numeric_label = numeric_label_copy; 
  118757             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  118758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  118759             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  118760           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  118761           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  118762             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  118763             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  118764             :   // case: toBeCopied == COPY_DATA for upir_parent
  118765           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  118766           0 :      result->p_upir_parent = upir_parent_copy; 
  118767             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  118768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  118769             :   // case: toBeCopied == COPY_DATA for upir_children
  118770           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  118771           0 :      result->p_upir_children = upir_children_copy; 
  118772             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  118773           0 :      SgOmpClausePtrList clauses_copy; 
  118774             :   // case: listType for clauses
  118775             :   // case: listType (typeIsPointerToList == false) for clauses
  118776           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  118777           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  118778             :         { 
  118779           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  118780           0 :           SgOmpClause* copy_list_element = NULL; 
  118781           0 :           if (source_list_element != NULL) 
  118782             :              { 
  118783           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  118784             :              } 
  118785             :             else 
  118786             :              { 
  118787             :                copy_list_element = NULL; 
  118788             :              } 
  118789           0 :           clauses_copy.push_back(copy_list_element); 
  118790             :         } 
  118791           0 :      result->p_clauses = clauses_copy; 
  118792             :   // case: listType for clauses
  118793             :   // case: listType (typeIsPointerToList == false) for clauses
  118794           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  118795           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  118796             :         { 
  118797           0 :           SgOmpClause* list_element = *clauses_iterator; 
  118798           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  118799             :              { 
  118800           0 :                list_element->set_parent(result); 
  118801             :              } 
  118802             :         } 
  118803             :   // case: not a listType for (using conditionalToSetParent)body
  118804           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  118805             :              { 
  118806           0 :                body_copy->set_parent(result); 
  118807             :              } 
  118808             : 
  118809             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118810             : 
  118811             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  118812             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  118813             :   // fixupCopy(result,help);
  118814             : 
  118815             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  118816             :   // the Sg_File_Info objects that are built for the new IR nodes.
  118817           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  118818           0 :      if (locatedNode != NULL)
  118819             :         {
  118820             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  118821           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  118822           0 :           ROSE_ASSERT(start != NULL);
  118823             : #if 0
  118824             :        // Debugging information
  118825             :           if (start->get_parent() == NULL)
  118826             :              {
  118827             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118828             :              }
  118829             : #endif
  118830           0 :           start->set_parent(locatedNode);
  118831           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  118832             : 
  118833           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  118834             : 
  118835             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  118836             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  118837             :        // ROSE_ASSERT(end != NULL);
  118838           0 :           if (end == NULL)
  118839             :              {
  118840           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  118841             :              }
  118842             :             else
  118843             :              {
  118844             : #if 0
  118845             :             // Debugging information
  118846             :                if (end->get_parent() == NULL)
  118847             :                   {
  118848             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118849             :                   }
  118850             : #endif
  118851           0 :                end->set_parent(locatedNode);
  118852           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  118853             :              }
  118854             : 
  118855           0 :           SgExpression* expression = isSgExpression(result);
  118856           0 :           if (isSgExpression(this) != NULL)
  118857             :              {
  118858           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  118859             : 
  118860             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  118861           0 :                if (operatorPosition != NULL)
  118862             :                   {
  118863             : #if 0
  118864             :                  // Debugging information
  118865             :                     if (operatorPosition->get_parent() == NULL)
  118866             :                        {
  118867             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118868             :                        }
  118869             : #endif
  118870           0 :                     operatorPosition->set_parent(expression);
  118871           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  118872             :                   }
  118873             :              }
  118874             :         }
  118875             : 
  118876             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  118877           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  118878           0 :      if (initializedName != NULL)
  118879             :         {
  118880             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  118881           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  118882           0 :           ROSE_ASSERT(start != NULL);
  118883             : #if 0
  118884             :        // Debugging information
  118885             :           if (start->get_parent() == NULL)
  118886             :              {
  118887             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118888             :              }
  118889             : #endif
  118890           0 :           start->set_parent(initializedName);
  118891           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  118892             : 
  118893             : #if 0
  118894             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  118895             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  118896             : 
  118897             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  118898             :        // ROSE_ASSERT(end != NULL);
  118899             :           if (end == NULL)
  118900             :              {
  118901             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  118902             :              }
  118903             :             else
  118904             :              {
  118905             :                if (end->get_parent() == NULL)
  118906             :                   {
  118907             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  118908             :                   }
  118909             :                end->set_parent(initializedName);
  118910             :                ROSE_ASSERT(end->get_parent() != NULL);
  118911             :              }
  118912             : #endif
  118913             :         }
  118914             : 
  118915             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  118916           0 :      help.insertCopiedNodePair(this,result);
  118917             : 
  118918             :   // printf ("End of copy SgOmpSectionsStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  118919             : 
  118920             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  118921             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  118922           0 :      help.decrementDepth();
  118923             : 
  118924             :   // Test if this is the root of the copy!
  118925           0 :      if (help.get_depth() == 0)
  118926             :         {
  118927             :        // This is the original calling node.
  118928             : 
  118929             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  118930             :        // printf ("Calling SgOmpSectionsStatement::fixupCopy() (from root of AST being copied) \n");
  118931             : #if ALT_FIXUP_COPY
  118932             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  118933           0 :           fixupCopy_scopes (result,help);
  118934           0 :           fixupCopy_symbols (result,help);
  118935           0 :           fixupCopy_references (result,help);
  118936             : #else
  118937             :           fixupCopy(result,help);
  118938             : #endif
  118939             :        // Allow this to be called recursively, so accumulate the state.
  118940             :        // Also, clear the state in the SgCopyHelp object.
  118941             :        // help.clearState();
  118942             :         }
  118943             : 
  118944           0 :      return result;
  118945             :    }
  118946             : 
  118947             : 
  118948             : /* #line 118949 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  118949             : 
  118950             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  118951             : 
  118952           0 : SgNode* SgUpirTaskStatement::copy ( SgCopyHelp& help) const
  118953             :    {
  118954           0 :      SgUpirTaskStatement* result = NULL;
  118955             : 
  118956             :   // printf ("Copy SgUpirTaskStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  118957             : 
  118958             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  118959             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  118960             :   // The default value of the depth is 0, so after this call the depth is 1!
  118961           0 :      help.incrementDepth();
  118962             : 
  118963             : #if 0
  118964             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  118965             :   // but it is not generally true that things can only be copied once!
  118966             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  118967             :   // AstAttribute* existingAttribute = const_cast<SgUpirTaskStatement*>(this)->attribute["copied"];
  118968             :      bool previouslyCopied = const_cast<SgUpirTaskStatement*>(this)->attribute.exists("copied");
  118969             :      if (previouslyCopied == true)
  118970             :         {
  118971             :           this->get_file_info()->display("Called from copy SgUpirTaskStatement: debug");
  118972             :         }
  118973             :      ROSE_ASSERT(previouslyCopied == false);
  118974             : 
  118975             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  118976             :      AstAttribute* newAttribute = new AstAttribute();
  118977             :      ROSE_ASSERT(newAttribute != NULL);
  118978             : 
  118979             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  118980             :      const_cast<SgUpirTaskStatement*>(this)->attribute.add("copied",newAttribute);
  118981             : #endif
  118982             : 
  118983             :   // Copy data members from base classes
  118984             :   // Copy constructor parameter data member: startOfConstruct_copy
  118985             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  118986             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  118987           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  118988           0 :      if ( p_startOfConstruct != NULL ) 
  118989             :         { 
  118990           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  118991             :         } 
  118992             :        else 
  118993             :         { 
  118994             :           startOfConstruct_copy = NULL; 
  118995             :         } 
  118996             :   // Copy constructor parameter data member: body_copy
  118997           0 :      SgStatement* body_copy; 
  118998             :   // case: not a listType for (using conditionalToCopyVariable)body
  118999           0 :           if (get_body() != NULL) 
  119000             :              { 
  119001           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  119002             :              } 
  119003             :             else 
  119004             :              { 
  119005             :                body_copy = NULL; 
  119006             :              } 
  119007             :  
  119008             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119009             : 
  119010             :   // Build an empty copy of this object (will be filled in, but 
  119011             :   // the parent can't be set and must be set by the caller)
  119012           0 :      result = new SgUpirTaskStatement(  startOfConstruct_copy, body_copy );
  119013           0 :      ROSE_ASSERT(result != NULL);
  119014             : 
  119015             :   // Copy data members of "this" class
  119016             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  119017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  119018             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  119019           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  119020           0 :      if ( p_endOfConstruct != NULL ) 
  119021             :         { 
  119022           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  119023             :         } 
  119024             :        else 
  119025             :         { 
  119026             :           endOfConstruct_copy = NULL; 
  119027             :         } 
  119028             :   /* check for a valid pointer and delete if present */ 
  119029           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  119030             :   /* add assignment to result here */ 
  119031           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  119032             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  119033             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  119034             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  119035           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  119036           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  119037             :         { 
  119038           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  119039             :         } 
  119040             :        else 
  119041             :         { 
  119042             :           attachedPreprocessingInfoPtr_copy = NULL; 
  119043             :         } 
  119044             :   /* check for a valid pointer and delete if present */ 
  119045           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  119046             :   /* add assignment to result here */ 
  119047           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  119048             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  119049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  119050             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  119051           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  119052           0 :      if ( p_attributeMechanism != NULL ) 
  119053             :         { 
  119054           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  119055             :         } 
  119056             :        else 
  119057             :         { 
  119058             :           attributeMechanism_copy = NULL; 
  119059             :         } 
  119060             :   /* check for a valid pointer and delete if present */ 
  119061           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  119062             :   /* add assignment to result here */ 
  119063           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  119064             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  119065             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  119066             :   // case: toBeCopied == COPY_DATA for numeric_label
  119067           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  119068           0 :      result->p_numeric_label = numeric_label_copy; 
  119069             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  119070             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  119071             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  119072           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  119073           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  119074             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  119075             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  119076             :   // case: toBeCopied == COPY_DATA for upir_parent
  119077           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  119078           0 :      result->p_upir_parent = upir_parent_copy; 
  119079             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  119080             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  119081             :   // case: toBeCopied == COPY_DATA for upir_children
  119082           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  119083           0 :      result->p_upir_children = upir_children_copy; 
  119084             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  119085           0 :      SgOmpClausePtrList clauses_copy; 
  119086             :   // case: listType for clauses
  119087             :   // case: listType (typeIsPointerToList == false) for clauses
  119088           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  119089           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  119090             :         { 
  119091           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  119092           0 :           SgOmpClause* copy_list_element = NULL; 
  119093           0 :           if (source_list_element != NULL) 
  119094             :              { 
  119095           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  119096             :              } 
  119097             :             else 
  119098             :              { 
  119099             :                copy_list_element = NULL; 
  119100             :              } 
  119101           0 :           clauses_copy.push_back(copy_list_element); 
  119102             :         } 
  119103           0 :      result->p_clauses = clauses_copy; 
  119104             :   // case: listType for clauses
  119105             :   // case: listType (typeIsPointerToList == false) for clauses
  119106           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  119107           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  119108             :         { 
  119109           0 :           SgOmpClause* list_element = *clauses_iterator; 
  119110           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  119111             :              { 
  119112           0 :                list_element->set_parent(result); 
  119113             :              } 
  119114             :         } 
  119115             :   // case: not a listType for (using conditionalToSetParent)body
  119116           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  119117             :              { 
  119118           0 :                body_copy->set_parent(result); 
  119119             :              } 
  119120             : 
  119121             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119122             : 
  119123             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  119124             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  119125             :   // fixupCopy(result,help);
  119126             : 
  119127             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  119128             :   // the Sg_File_Info objects that are built for the new IR nodes.
  119129           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  119130           0 :      if (locatedNode != NULL)
  119131             :         {
  119132             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  119133           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  119134           0 :           ROSE_ASSERT(start != NULL);
  119135             : #if 0
  119136             :        // Debugging information
  119137             :           if (start->get_parent() == NULL)
  119138             :              {
  119139             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119140             :              }
  119141             : #endif
  119142           0 :           start->set_parent(locatedNode);
  119143           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  119144             : 
  119145           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  119146             : 
  119147             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  119148             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  119149             :        // ROSE_ASSERT(end != NULL);
  119150           0 :           if (end == NULL)
  119151             :              {
  119152           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  119153             :              }
  119154             :             else
  119155             :              {
  119156             : #if 0
  119157             :             // Debugging information
  119158             :                if (end->get_parent() == NULL)
  119159             :                   {
  119160             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119161             :                   }
  119162             : #endif
  119163           0 :                end->set_parent(locatedNode);
  119164           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  119165             :              }
  119166             : 
  119167           0 :           SgExpression* expression = isSgExpression(result);
  119168           0 :           if (isSgExpression(this) != NULL)
  119169             :              {
  119170           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  119171             : 
  119172             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  119173           0 :                if (operatorPosition != NULL)
  119174             :                   {
  119175             : #if 0
  119176             :                  // Debugging information
  119177             :                     if (operatorPosition->get_parent() == NULL)
  119178             :                        {
  119179             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119180             :                        }
  119181             : #endif
  119182           0 :                     operatorPosition->set_parent(expression);
  119183           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  119184             :                   }
  119185             :              }
  119186             :         }
  119187             : 
  119188             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  119189           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  119190           0 :      if (initializedName != NULL)
  119191             :         {
  119192             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  119193           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  119194           0 :           ROSE_ASSERT(start != NULL);
  119195             : #if 0
  119196             :        // Debugging information
  119197             :           if (start->get_parent() == NULL)
  119198             :              {
  119199             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119200             :              }
  119201             : #endif
  119202           0 :           start->set_parent(initializedName);
  119203           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  119204             : 
  119205             : #if 0
  119206             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  119207             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  119208             : 
  119209             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  119210             :        // ROSE_ASSERT(end != NULL);
  119211             :           if (end == NULL)
  119212             :              {
  119213             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  119214             :              }
  119215             :             else
  119216             :              {
  119217             :                if (end->get_parent() == NULL)
  119218             :                   {
  119219             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119220             :                   }
  119221             :                end->set_parent(initializedName);
  119222             :                ROSE_ASSERT(end->get_parent() != NULL);
  119223             :              }
  119224             : #endif
  119225             :         }
  119226             : 
  119227             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  119228           0 :      help.insertCopiedNodePair(this,result);
  119229             : 
  119230             :   // printf ("End of copy SgUpirTaskStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  119231             : 
  119232             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  119233             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  119234           0 :      help.decrementDepth();
  119235             : 
  119236             :   // Test if this is the root of the copy!
  119237           0 :      if (help.get_depth() == 0)
  119238             :         {
  119239             :        // This is the original calling node.
  119240             : 
  119241             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  119242             :        // printf ("Calling SgUpirTaskStatement::fixupCopy() (from root of AST being copied) \n");
  119243             : #if ALT_FIXUP_COPY
  119244             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  119245           0 :           fixupCopy_scopes (result,help);
  119246           0 :           fixupCopy_symbols (result,help);
  119247           0 :           fixupCopy_references (result,help);
  119248             : #else
  119249             :           fixupCopy(result,help);
  119250             : #endif
  119251             :        // Allow this to be called recursively, so accumulate the state.
  119252             :        // Also, clear the state in the SgCopyHelp object.
  119253             :        // help.clearState();
  119254             :         }
  119255             : 
  119256           0 :      return result;
  119257             :    }
  119258             : 
  119259             : 
  119260             : /* #line 119261 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  119261             : 
  119262             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119263             : 
  119264           0 : SgNode* SgOmpTargetDataStatement::copy ( SgCopyHelp& help) const
  119265             :    {
  119266           0 :      SgOmpTargetDataStatement* result = NULL;
  119267             : 
  119268             :   // printf ("Copy SgOmpTargetDataStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  119269             : 
  119270             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  119271             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  119272             :   // The default value of the depth is 0, so after this call the depth is 1!
  119273           0 :      help.incrementDepth();
  119274             : 
  119275             : #if 0
  119276             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  119277             :   // but it is not generally true that things can only be copied once!
  119278             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  119279             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetDataStatement*>(this)->attribute["copied"];
  119280             :      bool previouslyCopied = const_cast<SgOmpTargetDataStatement*>(this)->attribute.exists("copied");
  119281             :      if (previouslyCopied == true)
  119282             :         {
  119283             :           this->get_file_info()->display("Called from copy SgOmpTargetDataStatement: debug");
  119284             :         }
  119285             :      ROSE_ASSERT(previouslyCopied == false);
  119286             : 
  119287             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  119288             :      AstAttribute* newAttribute = new AstAttribute();
  119289             :      ROSE_ASSERT(newAttribute != NULL);
  119290             : 
  119291             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  119292             :      const_cast<SgOmpTargetDataStatement*>(this)->attribute.add("copied",newAttribute);
  119293             : #endif
  119294             : 
  119295             :   // Copy data members from base classes
  119296             :   // Copy constructor parameter data member: startOfConstruct_copy
  119297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  119298             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  119299           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  119300           0 :      if ( p_startOfConstruct != NULL ) 
  119301             :         { 
  119302           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  119303             :         } 
  119304             :        else 
  119305             :         { 
  119306             :           startOfConstruct_copy = NULL; 
  119307             :         } 
  119308             :   // Copy constructor parameter data member: body_copy
  119309           0 :      SgStatement* body_copy; 
  119310             :   // case: not a listType for (using conditionalToCopyVariable)body
  119311           0 :           if (get_body() != NULL) 
  119312             :              { 
  119313           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  119314             :              } 
  119315             :             else 
  119316             :              { 
  119317             :                body_copy = NULL; 
  119318             :              } 
  119319             :  
  119320             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119321             : 
  119322             :   // Build an empty copy of this object (will be filled in, but 
  119323             :   // the parent can't be set and must be set by the caller)
  119324           0 :      result = new SgOmpTargetDataStatement(  startOfConstruct_copy, body_copy );
  119325           0 :      ROSE_ASSERT(result != NULL);
  119326             : 
  119327             :   // Copy data members of "this" class
  119328             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  119329             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  119330             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  119331           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  119332           0 :      if ( p_endOfConstruct != NULL ) 
  119333             :         { 
  119334           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  119335             :         } 
  119336             :        else 
  119337             :         { 
  119338             :           endOfConstruct_copy = NULL; 
  119339             :         } 
  119340             :   /* check for a valid pointer and delete if present */ 
  119341           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  119342             :   /* add assignment to result here */ 
  119343           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  119344             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  119345             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  119346             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  119347           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  119348           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  119349             :         { 
  119350           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  119351             :         } 
  119352             :        else 
  119353             :         { 
  119354             :           attachedPreprocessingInfoPtr_copy = NULL; 
  119355             :         } 
  119356             :   /* check for a valid pointer and delete if present */ 
  119357           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  119358             :   /* add assignment to result here */ 
  119359           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  119360             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  119361             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  119362             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  119363           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  119364           0 :      if ( p_attributeMechanism != NULL ) 
  119365             :         { 
  119366           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  119367             :         } 
  119368             :        else 
  119369             :         { 
  119370             :           attributeMechanism_copy = NULL; 
  119371             :         } 
  119372             :   /* check for a valid pointer and delete if present */ 
  119373           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  119374             :   /* add assignment to result here */ 
  119375           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  119376             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  119377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  119378             :   // case: toBeCopied == COPY_DATA for numeric_label
  119379           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  119380           0 :      result->p_numeric_label = numeric_label_copy; 
  119381             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  119382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  119383             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  119384           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  119385           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  119386             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  119387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  119388             :   // case: toBeCopied == COPY_DATA for upir_parent
  119389           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  119390           0 :      result->p_upir_parent = upir_parent_copy; 
  119391             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  119392             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  119393             :   // case: toBeCopied == COPY_DATA for upir_children
  119394           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  119395           0 :      result->p_upir_children = upir_children_copy; 
  119396             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  119397           0 :      SgOmpClausePtrList clauses_copy; 
  119398             :   // case: listType for clauses
  119399             :   // case: listType (typeIsPointerToList == false) for clauses
  119400           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  119401           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  119402             :         { 
  119403           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  119404           0 :           SgOmpClause* copy_list_element = NULL; 
  119405           0 :           if (source_list_element != NULL) 
  119406             :              { 
  119407           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  119408             :              } 
  119409             :             else 
  119410             :              { 
  119411             :                copy_list_element = NULL; 
  119412             :              } 
  119413           0 :           clauses_copy.push_back(copy_list_element); 
  119414             :         } 
  119415           0 :      result->p_clauses = clauses_copy; 
  119416             :   // case: listType for clauses
  119417             :   // case: listType (typeIsPointerToList == false) for clauses
  119418           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  119419           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  119420             :         { 
  119421           0 :           SgOmpClause* list_element = *clauses_iterator; 
  119422           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  119423             :              { 
  119424           0 :                list_element->set_parent(result); 
  119425             :              } 
  119426             :         } 
  119427             :   // case: not a listType for (using conditionalToSetParent)body
  119428           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  119429             :              { 
  119430           0 :                body_copy->set_parent(result); 
  119431             :              } 
  119432             : 
  119433             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119434             : 
  119435             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  119436             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  119437             :   // fixupCopy(result,help);
  119438             : 
  119439             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  119440             :   // the Sg_File_Info objects that are built for the new IR nodes.
  119441           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  119442           0 :      if (locatedNode != NULL)
  119443             :         {
  119444             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  119445           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  119446           0 :           ROSE_ASSERT(start != NULL);
  119447             : #if 0
  119448             :        // Debugging information
  119449             :           if (start->get_parent() == NULL)
  119450             :              {
  119451             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119452             :              }
  119453             : #endif
  119454           0 :           start->set_parent(locatedNode);
  119455           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  119456             : 
  119457           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  119458             : 
  119459             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  119460             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  119461             :        // ROSE_ASSERT(end != NULL);
  119462           0 :           if (end == NULL)
  119463             :              {
  119464           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  119465             :              }
  119466             :             else
  119467             :              {
  119468             : #if 0
  119469             :             // Debugging information
  119470             :                if (end->get_parent() == NULL)
  119471             :                   {
  119472             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119473             :                   }
  119474             : #endif
  119475           0 :                end->set_parent(locatedNode);
  119476           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  119477             :              }
  119478             : 
  119479           0 :           SgExpression* expression = isSgExpression(result);
  119480           0 :           if (isSgExpression(this) != NULL)
  119481             :              {
  119482           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  119483             : 
  119484             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  119485           0 :                if (operatorPosition != NULL)
  119486             :                   {
  119487             : #if 0
  119488             :                  // Debugging information
  119489             :                     if (operatorPosition->get_parent() == NULL)
  119490             :                        {
  119491             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119492             :                        }
  119493             : #endif
  119494           0 :                     operatorPosition->set_parent(expression);
  119495           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  119496             :                   }
  119497             :              }
  119498             :         }
  119499             : 
  119500             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  119501           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  119502           0 :      if (initializedName != NULL)
  119503             :         {
  119504             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  119505           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  119506           0 :           ROSE_ASSERT(start != NULL);
  119507             : #if 0
  119508             :        // Debugging information
  119509             :           if (start->get_parent() == NULL)
  119510             :              {
  119511             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119512             :              }
  119513             : #endif
  119514           0 :           start->set_parent(initializedName);
  119515           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  119516             : 
  119517             : #if 0
  119518             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  119519             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  119520             : 
  119521             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  119522             :        // ROSE_ASSERT(end != NULL);
  119523             :           if (end == NULL)
  119524             :              {
  119525             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  119526             :              }
  119527             :             else
  119528             :              {
  119529             :                if (end->get_parent() == NULL)
  119530             :                   {
  119531             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119532             :                   }
  119533             :                end->set_parent(initializedName);
  119534             :                ROSE_ASSERT(end->get_parent() != NULL);
  119535             :              }
  119536             : #endif
  119537             :         }
  119538             : 
  119539             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  119540           0 :      help.insertCopiedNodePair(this,result);
  119541             : 
  119542             :   // printf ("End of copy SgOmpTargetDataStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  119543             : 
  119544             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  119545             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  119546           0 :      help.decrementDepth();
  119547             : 
  119548             :   // Test if this is the root of the copy!
  119549           0 :      if (help.get_depth() == 0)
  119550             :         {
  119551             :        // This is the original calling node.
  119552             : 
  119553             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  119554             :        // printf ("Calling SgOmpTargetDataStatement::fixupCopy() (from root of AST being copied) \n");
  119555             : #if ALT_FIXUP_COPY
  119556             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  119557           0 :           fixupCopy_scopes (result,help);
  119558           0 :           fixupCopy_symbols (result,help);
  119559           0 :           fixupCopy_references (result,help);
  119560             : #else
  119561             :           fixupCopy(result,help);
  119562             : #endif
  119563             :        // Allow this to be called recursively, so accumulate the state.
  119564             :        // Also, clear the state in the SgCopyHelp object.
  119565             :        // help.clearState();
  119566             :         }
  119567             : 
  119568           0 :      return result;
  119569             :    }
  119570             : 
  119571             : 
  119572             : /* #line 119573 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  119573             : 
  119574             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119575             : 
  119576           0 : SgNode* SgOmpTargetParallelForStatement::copy ( SgCopyHelp& help) const
  119577             :    {
  119578           0 :      SgOmpTargetParallelForStatement* result = NULL;
  119579             : 
  119580             :   // printf ("Copy SgOmpTargetParallelForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  119581             : 
  119582             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  119583             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  119584             :   // The default value of the depth is 0, so after this call the depth is 1!
  119585           0 :      help.incrementDepth();
  119586             : 
  119587             : #if 0
  119588             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  119589             :   // but it is not generally true that things can only be copied once!
  119590             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  119591             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetParallelForStatement*>(this)->attribute["copied"];
  119592             :      bool previouslyCopied = const_cast<SgOmpTargetParallelForStatement*>(this)->attribute.exists("copied");
  119593             :      if (previouslyCopied == true)
  119594             :         {
  119595             :           this->get_file_info()->display("Called from copy SgOmpTargetParallelForStatement: debug");
  119596             :         }
  119597             :      ROSE_ASSERT(previouslyCopied == false);
  119598             : 
  119599             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  119600             :      AstAttribute* newAttribute = new AstAttribute();
  119601             :      ROSE_ASSERT(newAttribute != NULL);
  119602             : 
  119603             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  119604             :      const_cast<SgOmpTargetParallelForStatement*>(this)->attribute.add("copied",newAttribute);
  119605             : #endif
  119606             : 
  119607             :   // Copy data members from base classes
  119608             :   // Copy constructor parameter data member: startOfConstruct_copy
  119609             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  119610             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  119611           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  119612           0 :      if ( p_startOfConstruct != NULL ) 
  119613             :         { 
  119614           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  119615             :         } 
  119616             :        else 
  119617             :         { 
  119618             :           startOfConstruct_copy = NULL; 
  119619             :         } 
  119620             :   // Copy constructor parameter data member: body_copy
  119621           0 :      SgStatement* body_copy; 
  119622             :   // case: not a listType for (using conditionalToCopyVariable)body
  119623           0 :           if (get_body() != NULL) 
  119624             :              { 
  119625           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  119626             :              } 
  119627             :             else 
  119628             :              { 
  119629             :                body_copy = NULL; 
  119630             :              } 
  119631             :  
  119632             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119633             : 
  119634             :   // Build an empty copy of this object (will be filled in, but 
  119635             :   // the parent can't be set and must be set by the caller)
  119636           0 :      result = new SgOmpTargetParallelForStatement(  startOfConstruct_copy, body_copy );
  119637           0 :      ROSE_ASSERT(result != NULL);
  119638             : 
  119639             :   // Copy data members of "this" class
  119640             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  119641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  119642             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  119643           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  119644           0 :      if ( p_endOfConstruct != NULL ) 
  119645             :         { 
  119646           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  119647             :         } 
  119648             :        else 
  119649             :         { 
  119650             :           endOfConstruct_copy = NULL; 
  119651             :         } 
  119652             :   /* check for a valid pointer and delete if present */ 
  119653           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  119654             :   /* add assignment to result here */ 
  119655           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  119656             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  119657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  119658             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  119659           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  119660           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  119661             :         { 
  119662           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  119663             :         } 
  119664             :        else 
  119665             :         { 
  119666             :           attachedPreprocessingInfoPtr_copy = NULL; 
  119667             :         } 
  119668             :   /* check for a valid pointer and delete if present */ 
  119669           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  119670             :   /* add assignment to result here */ 
  119671           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  119672             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  119673             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  119674             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  119675           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  119676           0 :      if ( p_attributeMechanism != NULL ) 
  119677             :         { 
  119678           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  119679             :         } 
  119680             :        else 
  119681             :         { 
  119682             :           attributeMechanism_copy = NULL; 
  119683             :         } 
  119684             :   /* check for a valid pointer and delete if present */ 
  119685           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  119686             :   /* add assignment to result here */ 
  119687           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  119688             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  119689             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  119690             :   // case: toBeCopied == COPY_DATA for numeric_label
  119691           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  119692           0 :      result->p_numeric_label = numeric_label_copy; 
  119693             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  119694             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  119695             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  119696           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  119697           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  119698             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  119699             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  119700             :   // case: toBeCopied == COPY_DATA for upir_parent
  119701           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  119702           0 :      result->p_upir_parent = upir_parent_copy; 
  119703             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  119704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  119705             :   // case: toBeCopied == COPY_DATA for upir_children
  119706           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  119707           0 :      result->p_upir_children = upir_children_copy; 
  119708             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  119709           0 :      SgOmpClausePtrList clauses_copy; 
  119710             :   // case: listType for clauses
  119711             :   // case: listType (typeIsPointerToList == false) for clauses
  119712           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  119713           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  119714             :         { 
  119715           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  119716           0 :           SgOmpClause* copy_list_element = NULL; 
  119717           0 :           if (source_list_element != NULL) 
  119718             :              { 
  119719           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  119720             :              } 
  119721             :             else 
  119722             :              { 
  119723             :                copy_list_element = NULL; 
  119724             :              } 
  119725           0 :           clauses_copy.push_back(copy_list_element); 
  119726             :         } 
  119727           0 :      result->p_clauses = clauses_copy; 
  119728             :   // case: listType for clauses
  119729             :   // case: listType (typeIsPointerToList == false) for clauses
  119730           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  119731           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  119732             :         { 
  119733           0 :           SgOmpClause* list_element = *clauses_iterator; 
  119734           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  119735             :              { 
  119736           0 :                list_element->set_parent(result); 
  119737             :              } 
  119738             :         } 
  119739             :   // case: not a listType for (using conditionalToSetParent)body
  119740           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  119741             :              { 
  119742           0 :                body_copy->set_parent(result); 
  119743             :              } 
  119744             : 
  119745             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119746             : 
  119747             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  119748             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  119749             :   // fixupCopy(result,help);
  119750             : 
  119751             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  119752             :   // the Sg_File_Info objects that are built for the new IR nodes.
  119753           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  119754           0 :      if (locatedNode != NULL)
  119755             :         {
  119756             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  119757           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  119758           0 :           ROSE_ASSERT(start != NULL);
  119759             : #if 0
  119760             :        // Debugging information
  119761             :           if (start->get_parent() == NULL)
  119762             :              {
  119763             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119764             :              }
  119765             : #endif
  119766           0 :           start->set_parent(locatedNode);
  119767           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  119768             : 
  119769           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  119770             : 
  119771             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  119772             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  119773             :        // ROSE_ASSERT(end != NULL);
  119774           0 :           if (end == NULL)
  119775             :              {
  119776           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  119777             :              }
  119778             :             else
  119779             :              {
  119780             : #if 0
  119781             :             // Debugging information
  119782             :                if (end->get_parent() == NULL)
  119783             :                   {
  119784             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119785             :                   }
  119786             : #endif
  119787           0 :                end->set_parent(locatedNode);
  119788           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  119789             :              }
  119790             : 
  119791           0 :           SgExpression* expression = isSgExpression(result);
  119792           0 :           if (isSgExpression(this) != NULL)
  119793             :              {
  119794           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  119795             : 
  119796             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  119797           0 :                if (operatorPosition != NULL)
  119798             :                   {
  119799             : #if 0
  119800             :                  // Debugging information
  119801             :                     if (operatorPosition->get_parent() == NULL)
  119802             :                        {
  119803             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119804             :                        }
  119805             : #endif
  119806           0 :                     operatorPosition->set_parent(expression);
  119807           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  119808             :                   }
  119809             :              }
  119810             :         }
  119811             : 
  119812             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  119813           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  119814           0 :      if (initializedName != NULL)
  119815             :         {
  119816             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  119817           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  119818           0 :           ROSE_ASSERT(start != NULL);
  119819             : #if 0
  119820             :        // Debugging information
  119821             :           if (start->get_parent() == NULL)
  119822             :              {
  119823             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119824             :              }
  119825             : #endif
  119826           0 :           start->set_parent(initializedName);
  119827           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  119828             : 
  119829             : #if 0
  119830             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  119831             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  119832             : 
  119833             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  119834             :        // ROSE_ASSERT(end != NULL);
  119835             :           if (end == NULL)
  119836             :              {
  119837             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  119838             :              }
  119839             :             else
  119840             :              {
  119841             :                if (end->get_parent() == NULL)
  119842             :                   {
  119843             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  119844             :                   }
  119845             :                end->set_parent(initializedName);
  119846             :                ROSE_ASSERT(end->get_parent() != NULL);
  119847             :              }
  119848             : #endif
  119849             :         }
  119850             : 
  119851             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  119852           0 :      help.insertCopiedNodePair(this,result);
  119853             : 
  119854             :   // printf ("End of copy SgOmpTargetParallelForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  119855             : 
  119856             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  119857             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  119858           0 :      help.decrementDepth();
  119859             : 
  119860             :   // Test if this is the root of the copy!
  119861           0 :      if (help.get_depth() == 0)
  119862             :         {
  119863             :        // This is the original calling node.
  119864             : 
  119865             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  119866             :        // printf ("Calling SgOmpTargetParallelForStatement::fixupCopy() (from root of AST being copied) \n");
  119867             : #if ALT_FIXUP_COPY
  119868             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  119869           0 :           fixupCopy_scopes (result,help);
  119870           0 :           fixupCopy_symbols (result,help);
  119871           0 :           fixupCopy_references (result,help);
  119872             : #else
  119873             :           fixupCopy(result,help);
  119874             : #endif
  119875             :        // Allow this to be called recursively, so accumulate the state.
  119876             :        // Also, clear the state in the SgCopyHelp object.
  119877             :        // help.clearState();
  119878             :         }
  119879             : 
  119880           0 :      return result;
  119881             :    }
  119882             : 
  119883             : 
  119884             : /* #line 119885 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  119885             : 
  119886             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119887             : 
  119888           0 : SgNode* SgOmpParallelLoopStatement::copy ( SgCopyHelp& help) const
  119889             :    {
  119890           0 :      SgOmpParallelLoopStatement* result = NULL;
  119891             : 
  119892             :   // printf ("Copy SgOmpParallelLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  119893             : 
  119894             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  119895             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  119896             :   // The default value of the depth is 0, so after this call the depth is 1!
  119897           0 :      help.incrementDepth();
  119898             : 
  119899             : #if 0
  119900             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  119901             :   // but it is not generally true that things can only be copied once!
  119902             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  119903             :   // AstAttribute* existingAttribute = const_cast<SgOmpParallelLoopStatement*>(this)->attribute["copied"];
  119904             :      bool previouslyCopied = const_cast<SgOmpParallelLoopStatement*>(this)->attribute.exists("copied");
  119905             :      if (previouslyCopied == true)
  119906             :         {
  119907             :           this->get_file_info()->display("Called from copy SgOmpParallelLoopStatement: debug");
  119908             :         }
  119909             :      ROSE_ASSERT(previouslyCopied == false);
  119910             : 
  119911             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  119912             :      AstAttribute* newAttribute = new AstAttribute();
  119913             :      ROSE_ASSERT(newAttribute != NULL);
  119914             : 
  119915             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  119916             :      const_cast<SgOmpParallelLoopStatement*>(this)->attribute.add("copied",newAttribute);
  119917             : #endif
  119918             : 
  119919             :   // Copy data members from base classes
  119920             :   // Copy constructor parameter data member: startOfConstruct_copy
  119921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  119922             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  119923           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  119924           0 :      if ( p_startOfConstruct != NULL ) 
  119925             :         { 
  119926           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  119927             :         } 
  119928             :        else 
  119929             :         { 
  119930             :           startOfConstruct_copy = NULL; 
  119931             :         } 
  119932             :   // Copy constructor parameter data member: body_copy
  119933           0 :      SgStatement* body_copy; 
  119934             :   // case: not a listType for (using conditionalToCopyVariable)body
  119935           0 :           if (get_body() != NULL) 
  119936             :              { 
  119937           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  119938             :              } 
  119939             :             else 
  119940             :              { 
  119941             :                body_copy = NULL; 
  119942             :              } 
  119943             :  
  119944             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  119945             : 
  119946             :   // Build an empty copy of this object (will be filled in, but 
  119947             :   // the parent can't be set and must be set by the caller)
  119948           0 :      result = new SgOmpParallelLoopStatement(  startOfConstruct_copy, body_copy );
  119949           0 :      ROSE_ASSERT(result != NULL);
  119950             : 
  119951             :   // Copy data members of "this" class
  119952             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  119953             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  119954             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  119955           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  119956           0 :      if ( p_endOfConstruct != NULL ) 
  119957             :         { 
  119958           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  119959             :         } 
  119960             :        else 
  119961             :         { 
  119962             :           endOfConstruct_copy = NULL; 
  119963             :         } 
  119964             :   /* check for a valid pointer and delete if present */ 
  119965           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  119966             :   /* add assignment to result here */ 
  119967           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  119968             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  119969             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  119970             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  119971           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  119972           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  119973             :         { 
  119974           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  119975             :         } 
  119976             :        else 
  119977             :         { 
  119978             :           attachedPreprocessingInfoPtr_copy = NULL; 
  119979             :         } 
  119980             :   /* check for a valid pointer and delete if present */ 
  119981           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  119982             :   /* add assignment to result here */ 
  119983           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  119984             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  119985             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  119986             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  119987           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  119988           0 :      if ( p_attributeMechanism != NULL ) 
  119989             :         { 
  119990           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  119991             :         } 
  119992             :        else 
  119993             :         { 
  119994             :           attributeMechanism_copy = NULL; 
  119995             :         } 
  119996             :   /* check for a valid pointer and delete if present */ 
  119997           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  119998             :   /* add assignment to result here */ 
  119999           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  120000             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  120001             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  120002             :   // case: toBeCopied == COPY_DATA for numeric_label
  120003           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  120004           0 :      result->p_numeric_label = numeric_label_copy; 
  120005             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  120006             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  120007             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  120008           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  120009           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  120010             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  120011             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  120012             :   // case: toBeCopied == COPY_DATA for upir_parent
  120013           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  120014           0 :      result->p_upir_parent = upir_parent_copy; 
  120015             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  120016             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  120017             :   // case: toBeCopied == COPY_DATA for upir_children
  120018           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  120019           0 :      result->p_upir_children = upir_children_copy; 
  120020             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  120021           0 :      SgOmpClausePtrList clauses_copy; 
  120022             :   // case: listType for clauses
  120023             :   // case: listType (typeIsPointerToList == false) for clauses
  120024           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  120025           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  120026             :         { 
  120027           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  120028           0 :           SgOmpClause* copy_list_element = NULL; 
  120029           0 :           if (source_list_element != NULL) 
  120030             :              { 
  120031           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  120032             :              } 
  120033             :             else 
  120034             :              { 
  120035             :                copy_list_element = NULL; 
  120036             :              } 
  120037           0 :           clauses_copy.push_back(copy_list_element); 
  120038             :         } 
  120039           0 :      result->p_clauses = clauses_copy; 
  120040             :   // case: listType for clauses
  120041             :   // case: listType (typeIsPointerToList == false) for clauses
  120042           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  120043           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  120044             :         { 
  120045           0 :           SgOmpClause* list_element = *clauses_iterator; 
  120046           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  120047             :              { 
  120048           0 :                list_element->set_parent(result); 
  120049             :              } 
  120050             :         } 
  120051             :   // case: not a listType for (using conditionalToSetParent)body
  120052           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  120053             :              { 
  120054           0 :                body_copy->set_parent(result); 
  120055             :              } 
  120056             : 
  120057             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120058             : 
  120059             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  120060             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  120061             :   // fixupCopy(result,help);
  120062             : 
  120063             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  120064             :   // the Sg_File_Info objects that are built for the new IR nodes.
  120065           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  120066           0 :      if (locatedNode != NULL)
  120067             :         {
  120068             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  120069           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  120070           0 :           ROSE_ASSERT(start != NULL);
  120071             : #if 0
  120072             :        // Debugging information
  120073             :           if (start->get_parent() == NULL)
  120074             :              {
  120075             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120076             :              }
  120077             : #endif
  120078           0 :           start->set_parent(locatedNode);
  120079           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  120080             : 
  120081           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  120082             : 
  120083             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  120084             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  120085             :        // ROSE_ASSERT(end != NULL);
  120086           0 :           if (end == NULL)
  120087             :              {
  120088           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  120089             :              }
  120090             :             else
  120091             :              {
  120092             : #if 0
  120093             :             // Debugging information
  120094             :                if (end->get_parent() == NULL)
  120095             :                   {
  120096             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120097             :                   }
  120098             : #endif
  120099           0 :                end->set_parent(locatedNode);
  120100           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  120101             :              }
  120102             : 
  120103           0 :           SgExpression* expression = isSgExpression(result);
  120104           0 :           if (isSgExpression(this) != NULL)
  120105             :              {
  120106           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  120107             : 
  120108             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  120109           0 :                if (operatorPosition != NULL)
  120110             :                   {
  120111             : #if 0
  120112             :                  // Debugging information
  120113             :                     if (operatorPosition->get_parent() == NULL)
  120114             :                        {
  120115             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120116             :                        }
  120117             : #endif
  120118           0 :                     operatorPosition->set_parent(expression);
  120119           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  120120             :                   }
  120121             :              }
  120122             :         }
  120123             : 
  120124             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  120125           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  120126           0 :      if (initializedName != NULL)
  120127             :         {
  120128             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  120129           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  120130           0 :           ROSE_ASSERT(start != NULL);
  120131             : #if 0
  120132             :        // Debugging information
  120133             :           if (start->get_parent() == NULL)
  120134             :              {
  120135             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120136             :              }
  120137             : #endif
  120138           0 :           start->set_parent(initializedName);
  120139           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  120140             : 
  120141             : #if 0
  120142             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  120143             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  120144             : 
  120145             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  120146             :        // ROSE_ASSERT(end != NULL);
  120147             :           if (end == NULL)
  120148             :              {
  120149             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  120150             :              }
  120151             :             else
  120152             :              {
  120153             :                if (end->get_parent() == NULL)
  120154             :                   {
  120155             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120156             :                   }
  120157             :                end->set_parent(initializedName);
  120158             :                ROSE_ASSERT(end->get_parent() != NULL);
  120159             :              }
  120160             : #endif
  120161             :         }
  120162             : 
  120163             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  120164           0 :      help.insertCopiedNodePair(this,result);
  120165             : 
  120166             :   // printf ("End of copy SgOmpParallelLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  120167             : 
  120168             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  120169             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  120170           0 :      help.decrementDepth();
  120171             : 
  120172             :   // Test if this is the root of the copy!
  120173           0 :      if (help.get_depth() == 0)
  120174             :         {
  120175             :        // This is the original calling node.
  120176             : 
  120177             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  120178             :        // printf ("Calling SgOmpParallelLoopStatement::fixupCopy() (from root of AST being copied) \n");
  120179             : #if ALT_FIXUP_COPY
  120180             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  120181           0 :           fixupCopy_scopes (result,help);
  120182           0 :           fixupCopy_symbols (result,help);
  120183           0 :           fixupCopy_references (result,help);
  120184             : #else
  120185             :           fixupCopy(result,help);
  120186             : #endif
  120187             :        // Allow this to be called recursively, so accumulate the state.
  120188             :        // Also, clear the state in the SgCopyHelp object.
  120189             :        // help.clearState();
  120190             :         }
  120191             : 
  120192           0 :      return result;
  120193             :    }
  120194             : 
  120195             : 
  120196             : /* #line 120197 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  120197             : 
  120198             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120199             : 
  120200           0 : SgNode* SgOmpTargetParallelStatement::copy ( SgCopyHelp& help) const
  120201             :    {
  120202           0 :      SgOmpTargetParallelStatement* result = NULL;
  120203             : 
  120204             :   // printf ("Copy SgOmpTargetParallelStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  120205             : 
  120206             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  120207             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  120208             :   // The default value of the depth is 0, so after this call the depth is 1!
  120209           0 :      help.incrementDepth();
  120210             : 
  120211             : #if 0
  120212             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  120213             :   // but it is not generally true that things can only be copied once!
  120214             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  120215             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetParallelStatement*>(this)->attribute["copied"];
  120216             :      bool previouslyCopied = const_cast<SgOmpTargetParallelStatement*>(this)->attribute.exists("copied");
  120217             :      if (previouslyCopied == true)
  120218             :         {
  120219             :           this->get_file_info()->display("Called from copy SgOmpTargetParallelStatement: debug");
  120220             :         }
  120221             :      ROSE_ASSERT(previouslyCopied == false);
  120222             : 
  120223             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  120224             :      AstAttribute* newAttribute = new AstAttribute();
  120225             :      ROSE_ASSERT(newAttribute != NULL);
  120226             : 
  120227             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  120228             :      const_cast<SgOmpTargetParallelStatement*>(this)->attribute.add("copied",newAttribute);
  120229             : #endif
  120230             : 
  120231             :   // Copy data members from base classes
  120232             :   // Copy constructor parameter data member: startOfConstruct_copy
  120233             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  120234             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  120235           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  120236           0 :      if ( p_startOfConstruct != NULL ) 
  120237             :         { 
  120238           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  120239             :         } 
  120240             :        else 
  120241             :         { 
  120242             :           startOfConstruct_copy = NULL; 
  120243             :         } 
  120244             :   // Copy constructor parameter data member: body_copy
  120245           0 :      SgStatement* body_copy; 
  120246             :   // case: not a listType for (using conditionalToCopyVariable)body
  120247           0 :           if (get_body() != NULL) 
  120248             :              { 
  120249           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  120250             :              } 
  120251             :             else 
  120252             :              { 
  120253             :                body_copy = NULL; 
  120254             :              } 
  120255             :  
  120256             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120257             : 
  120258             :   // Build an empty copy of this object (will be filled in, but 
  120259             :   // the parent can't be set and must be set by the caller)
  120260           0 :      result = new SgOmpTargetParallelStatement(  startOfConstruct_copy, body_copy );
  120261           0 :      ROSE_ASSERT(result != NULL);
  120262             : 
  120263             :   // Copy data members of "this" class
  120264             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  120265             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  120266             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  120267           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  120268           0 :      if ( p_endOfConstruct != NULL ) 
  120269             :         { 
  120270           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  120271             :         } 
  120272             :        else 
  120273             :         { 
  120274             :           endOfConstruct_copy = NULL; 
  120275             :         } 
  120276             :   /* check for a valid pointer and delete if present */ 
  120277           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  120278             :   /* add assignment to result here */ 
  120279           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  120280             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  120281             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  120282             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  120283           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  120284           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  120285             :         { 
  120286           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  120287             :         } 
  120288             :        else 
  120289             :         { 
  120290             :           attachedPreprocessingInfoPtr_copy = NULL; 
  120291             :         } 
  120292             :   /* check for a valid pointer and delete if present */ 
  120293           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  120294             :   /* add assignment to result here */ 
  120295           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  120296             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  120297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  120298             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  120299           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  120300           0 :      if ( p_attributeMechanism != NULL ) 
  120301             :         { 
  120302           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  120303             :         } 
  120304             :        else 
  120305             :         { 
  120306             :           attributeMechanism_copy = NULL; 
  120307             :         } 
  120308             :   /* check for a valid pointer and delete if present */ 
  120309           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  120310             :   /* add assignment to result here */ 
  120311           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  120312             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  120313             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  120314             :   // case: toBeCopied == COPY_DATA for numeric_label
  120315           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  120316           0 :      result->p_numeric_label = numeric_label_copy; 
  120317             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  120318             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  120319             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  120320           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  120321           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  120322             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  120323             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  120324             :   // case: toBeCopied == COPY_DATA for upir_parent
  120325           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  120326           0 :      result->p_upir_parent = upir_parent_copy; 
  120327             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  120328             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  120329             :   // case: toBeCopied == COPY_DATA for upir_children
  120330           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  120331           0 :      result->p_upir_children = upir_children_copy; 
  120332             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  120333           0 :      SgOmpClausePtrList clauses_copy; 
  120334             :   // case: listType for clauses
  120335             :   // case: listType (typeIsPointerToList == false) for clauses
  120336           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  120337           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  120338             :         { 
  120339           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  120340           0 :           SgOmpClause* copy_list_element = NULL; 
  120341           0 :           if (source_list_element != NULL) 
  120342             :              { 
  120343           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  120344             :              } 
  120345             :             else 
  120346             :              { 
  120347             :                copy_list_element = NULL; 
  120348             :              } 
  120349           0 :           clauses_copy.push_back(copy_list_element); 
  120350             :         } 
  120351           0 :      result->p_clauses = clauses_copy; 
  120352             :   // case: listType for clauses
  120353             :   // case: listType (typeIsPointerToList == false) for clauses
  120354           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  120355           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  120356             :         { 
  120357           0 :           SgOmpClause* list_element = *clauses_iterator; 
  120358           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  120359             :              { 
  120360           0 :                list_element->set_parent(result); 
  120361             :              } 
  120362             :         } 
  120363             :   // case: not a listType for (using conditionalToSetParent)body
  120364           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  120365             :              { 
  120366           0 :                body_copy->set_parent(result); 
  120367             :              } 
  120368             : 
  120369             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120370             : 
  120371             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  120372             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  120373             :   // fixupCopy(result,help);
  120374             : 
  120375             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  120376             :   // the Sg_File_Info objects that are built for the new IR nodes.
  120377           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  120378           0 :      if (locatedNode != NULL)
  120379             :         {
  120380             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  120381           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  120382           0 :           ROSE_ASSERT(start != NULL);
  120383             : #if 0
  120384             :        // Debugging information
  120385             :           if (start->get_parent() == NULL)
  120386             :              {
  120387             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120388             :              }
  120389             : #endif
  120390           0 :           start->set_parent(locatedNode);
  120391           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  120392             : 
  120393           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  120394             : 
  120395             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  120396             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  120397             :        // ROSE_ASSERT(end != NULL);
  120398           0 :           if (end == NULL)
  120399             :              {
  120400           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  120401             :              }
  120402             :             else
  120403             :              {
  120404             : #if 0
  120405             :             // Debugging information
  120406             :                if (end->get_parent() == NULL)
  120407             :                   {
  120408             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120409             :                   }
  120410             : #endif
  120411           0 :                end->set_parent(locatedNode);
  120412           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  120413             :              }
  120414             : 
  120415           0 :           SgExpression* expression = isSgExpression(result);
  120416           0 :           if (isSgExpression(this) != NULL)
  120417             :              {
  120418           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  120419             : 
  120420             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  120421           0 :                if (operatorPosition != NULL)
  120422             :                   {
  120423             : #if 0
  120424             :                  // Debugging information
  120425             :                     if (operatorPosition->get_parent() == NULL)
  120426             :                        {
  120427             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120428             :                        }
  120429             : #endif
  120430           0 :                     operatorPosition->set_parent(expression);
  120431           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  120432             :                   }
  120433             :              }
  120434             :         }
  120435             : 
  120436             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  120437           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  120438           0 :      if (initializedName != NULL)
  120439             :         {
  120440             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  120441           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  120442           0 :           ROSE_ASSERT(start != NULL);
  120443             : #if 0
  120444             :        // Debugging information
  120445             :           if (start->get_parent() == NULL)
  120446             :              {
  120447             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120448             :              }
  120449             : #endif
  120450           0 :           start->set_parent(initializedName);
  120451           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  120452             : 
  120453             : #if 0
  120454             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  120455             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  120456             : 
  120457             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  120458             :        // ROSE_ASSERT(end != NULL);
  120459             :           if (end == NULL)
  120460             :              {
  120461             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  120462             :              }
  120463             :             else
  120464             :              {
  120465             :                if (end->get_parent() == NULL)
  120466             :                   {
  120467             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120468             :                   }
  120469             :                end->set_parent(initializedName);
  120470             :                ROSE_ASSERT(end->get_parent() != NULL);
  120471             :              }
  120472             : #endif
  120473             :         }
  120474             : 
  120475             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  120476           0 :      help.insertCopiedNodePair(this,result);
  120477             : 
  120478             :   // printf ("End of copy SgOmpTargetParallelStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  120479             : 
  120480             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  120481             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  120482           0 :      help.decrementDepth();
  120483             : 
  120484             :   // Test if this is the root of the copy!
  120485           0 :      if (help.get_depth() == 0)
  120486             :         {
  120487             :        // This is the original calling node.
  120488             : 
  120489             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  120490             :        // printf ("Calling SgOmpTargetParallelStatement::fixupCopy() (from root of AST being copied) \n");
  120491             : #if ALT_FIXUP_COPY
  120492             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  120493           0 :           fixupCopy_scopes (result,help);
  120494           0 :           fixupCopy_symbols (result,help);
  120495           0 :           fixupCopy_references (result,help);
  120496             : #else
  120497             :           fixupCopy(result,help);
  120498             : #endif
  120499             :        // Allow this to be called recursively, so accumulate the state.
  120500             :        // Also, clear the state in the SgCopyHelp object.
  120501             :        // help.clearState();
  120502             :         }
  120503             : 
  120504           0 :      return result;
  120505             :    }
  120506             : 
  120507             : 
  120508             : /* #line 120509 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  120509             : 
  120510             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120511             : 
  120512           0 : SgNode* SgOmpTargetParallelForSimdStatement::copy ( SgCopyHelp& help) const
  120513             :    {
  120514           0 :      SgOmpTargetParallelForSimdStatement* result = NULL;
  120515             : 
  120516             :   // printf ("Copy SgOmpTargetParallelForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  120517             : 
  120518             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  120519             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  120520             :   // The default value of the depth is 0, so after this call the depth is 1!
  120521           0 :      help.incrementDepth();
  120522             : 
  120523             : #if 0
  120524             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  120525             :   // but it is not generally true that things can only be copied once!
  120526             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  120527             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetParallelForSimdStatement*>(this)->attribute["copied"];
  120528             :      bool previouslyCopied = const_cast<SgOmpTargetParallelForSimdStatement*>(this)->attribute.exists("copied");
  120529             :      if (previouslyCopied == true)
  120530             :         {
  120531             :           this->get_file_info()->display("Called from copy SgOmpTargetParallelForSimdStatement: debug");
  120532             :         }
  120533             :      ROSE_ASSERT(previouslyCopied == false);
  120534             : 
  120535             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  120536             :      AstAttribute* newAttribute = new AstAttribute();
  120537             :      ROSE_ASSERT(newAttribute != NULL);
  120538             : 
  120539             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  120540             :      const_cast<SgOmpTargetParallelForSimdStatement*>(this)->attribute.add("copied",newAttribute);
  120541             : #endif
  120542             : 
  120543             :   // Copy data members from base classes
  120544             :   // Copy constructor parameter data member: startOfConstruct_copy
  120545             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  120546             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  120547           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  120548           0 :      if ( p_startOfConstruct != NULL ) 
  120549             :         { 
  120550           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  120551             :         } 
  120552             :        else 
  120553             :         { 
  120554             :           startOfConstruct_copy = NULL; 
  120555             :         } 
  120556             :   // Copy constructor parameter data member: body_copy
  120557           0 :      SgStatement* body_copy; 
  120558             :   // case: not a listType for (using conditionalToCopyVariable)body
  120559           0 :           if (get_body() != NULL) 
  120560             :              { 
  120561           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  120562             :              } 
  120563             :             else 
  120564             :              { 
  120565             :                body_copy = NULL; 
  120566             :              } 
  120567             :  
  120568             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120569             : 
  120570             :   // Build an empty copy of this object (will be filled in, but 
  120571             :   // the parent can't be set and must be set by the caller)
  120572           0 :      result = new SgOmpTargetParallelForSimdStatement(  startOfConstruct_copy, body_copy );
  120573           0 :      ROSE_ASSERT(result != NULL);
  120574             : 
  120575             :   // Copy data members of "this" class
  120576             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  120577             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  120578             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  120579           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  120580           0 :      if ( p_endOfConstruct != NULL ) 
  120581             :         { 
  120582           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  120583             :         } 
  120584             :        else 
  120585             :         { 
  120586             :           endOfConstruct_copy = NULL; 
  120587             :         } 
  120588             :   /* check for a valid pointer and delete if present */ 
  120589           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  120590             :   /* add assignment to result here */ 
  120591           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  120592             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  120593             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  120594             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  120595           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  120596           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  120597             :         { 
  120598           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  120599             :         } 
  120600             :        else 
  120601             :         { 
  120602             :           attachedPreprocessingInfoPtr_copy = NULL; 
  120603             :         } 
  120604             :   /* check for a valid pointer and delete if present */ 
  120605           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  120606             :   /* add assignment to result here */ 
  120607           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  120608             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  120609             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  120610             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  120611           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  120612           0 :      if ( p_attributeMechanism != NULL ) 
  120613             :         { 
  120614           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  120615             :         } 
  120616             :        else 
  120617             :         { 
  120618             :           attributeMechanism_copy = NULL; 
  120619             :         } 
  120620             :   /* check for a valid pointer and delete if present */ 
  120621           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  120622             :   /* add assignment to result here */ 
  120623           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  120624             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  120625             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  120626             :   // case: toBeCopied == COPY_DATA for numeric_label
  120627           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  120628           0 :      result->p_numeric_label = numeric_label_copy; 
  120629             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  120630             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  120631             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  120632           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  120633           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  120634             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  120635             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  120636             :   // case: toBeCopied == COPY_DATA for upir_parent
  120637           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  120638           0 :      result->p_upir_parent = upir_parent_copy; 
  120639             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  120640             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  120641             :   // case: toBeCopied == COPY_DATA for upir_children
  120642           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  120643           0 :      result->p_upir_children = upir_children_copy; 
  120644             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  120645           0 :      SgOmpClausePtrList clauses_copy; 
  120646             :   // case: listType for clauses
  120647             :   // case: listType (typeIsPointerToList == false) for clauses
  120648           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  120649           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  120650             :         { 
  120651           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  120652           0 :           SgOmpClause* copy_list_element = NULL; 
  120653           0 :           if (source_list_element != NULL) 
  120654             :              { 
  120655           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  120656             :              } 
  120657             :             else 
  120658             :              { 
  120659             :                copy_list_element = NULL; 
  120660             :              } 
  120661           0 :           clauses_copy.push_back(copy_list_element); 
  120662             :         } 
  120663           0 :      result->p_clauses = clauses_copy; 
  120664             :   // case: listType for clauses
  120665             :   // case: listType (typeIsPointerToList == false) for clauses
  120666           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  120667           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  120668             :         { 
  120669           0 :           SgOmpClause* list_element = *clauses_iterator; 
  120670           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  120671             :              { 
  120672           0 :                list_element->set_parent(result); 
  120673             :              } 
  120674             :         } 
  120675             :   // case: not a listType for (using conditionalToSetParent)body
  120676           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  120677             :              { 
  120678           0 :                body_copy->set_parent(result); 
  120679             :              } 
  120680             : 
  120681             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120682             : 
  120683             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  120684             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  120685             :   // fixupCopy(result,help);
  120686             : 
  120687             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  120688             :   // the Sg_File_Info objects that are built for the new IR nodes.
  120689           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  120690           0 :      if (locatedNode != NULL)
  120691             :         {
  120692             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  120693           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  120694           0 :           ROSE_ASSERT(start != NULL);
  120695             : #if 0
  120696             :        // Debugging information
  120697             :           if (start->get_parent() == NULL)
  120698             :              {
  120699             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120700             :              }
  120701             : #endif
  120702           0 :           start->set_parent(locatedNode);
  120703           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  120704             : 
  120705           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  120706             : 
  120707             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  120708             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  120709             :        // ROSE_ASSERT(end != NULL);
  120710           0 :           if (end == NULL)
  120711             :              {
  120712           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  120713             :              }
  120714             :             else
  120715             :              {
  120716             : #if 0
  120717             :             // Debugging information
  120718             :                if (end->get_parent() == NULL)
  120719             :                   {
  120720             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120721             :                   }
  120722             : #endif
  120723           0 :                end->set_parent(locatedNode);
  120724           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  120725             :              }
  120726             : 
  120727           0 :           SgExpression* expression = isSgExpression(result);
  120728           0 :           if (isSgExpression(this) != NULL)
  120729             :              {
  120730           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  120731             : 
  120732             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  120733           0 :                if (operatorPosition != NULL)
  120734             :                   {
  120735             : #if 0
  120736             :                  // Debugging information
  120737             :                     if (operatorPosition->get_parent() == NULL)
  120738             :                        {
  120739             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120740             :                        }
  120741             : #endif
  120742           0 :                     operatorPosition->set_parent(expression);
  120743           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  120744             :                   }
  120745             :              }
  120746             :         }
  120747             : 
  120748             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  120749           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  120750           0 :      if (initializedName != NULL)
  120751             :         {
  120752             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  120753           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  120754           0 :           ROSE_ASSERT(start != NULL);
  120755             : #if 0
  120756             :        // Debugging information
  120757             :           if (start->get_parent() == NULL)
  120758             :              {
  120759             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120760             :              }
  120761             : #endif
  120762           0 :           start->set_parent(initializedName);
  120763           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  120764             : 
  120765             : #if 0
  120766             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  120767             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  120768             : 
  120769             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  120770             :        // ROSE_ASSERT(end != NULL);
  120771             :           if (end == NULL)
  120772             :              {
  120773             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  120774             :              }
  120775             :             else
  120776             :              {
  120777             :                if (end->get_parent() == NULL)
  120778             :                   {
  120779             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  120780             :                   }
  120781             :                end->set_parent(initializedName);
  120782             :                ROSE_ASSERT(end->get_parent() != NULL);
  120783             :              }
  120784             : #endif
  120785             :         }
  120786             : 
  120787             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  120788           0 :      help.insertCopiedNodePair(this,result);
  120789             : 
  120790             :   // printf ("End of copy SgOmpTargetParallelForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  120791             : 
  120792             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  120793             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  120794           0 :      help.decrementDepth();
  120795             : 
  120796             :   // Test if this is the root of the copy!
  120797           0 :      if (help.get_depth() == 0)
  120798             :         {
  120799             :        // This is the original calling node.
  120800             : 
  120801             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  120802             :        // printf ("Calling SgOmpTargetParallelForSimdStatement::fixupCopy() (from root of AST being copied) \n");
  120803             : #if ALT_FIXUP_COPY
  120804             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  120805           0 :           fixupCopy_scopes (result,help);
  120806           0 :           fixupCopy_symbols (result,help);
  120807           0 :           fixupCopy_references (result,help);
  120808             : #else
  120809             :           fixupCopy(result,help);
  120810             : #endif
  120811             :        // Allow this to be called recursively, so accumulate the state.
  120812             :        // Also, clear the state in the SgCopyHelp object.
  120813             :        // help.clearState();
  120814             :         }
  120815             : 
  120816           0 :      return result;
  120817             :    }
  120818             : 
  120819             : 
  120820             : /* #line 120821 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  120821             : 
  120822             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120823             : 
  120824           0 : SgNode* SgOmpTargetParallelLoopStatement::copy ( SgCopyHelp& help) const
  120825             :    {
  120826           0 :      SgOmpTargetParallelLoopStatement* result = NULL;
  120827             : 
  120828             :   // printf ("Copy SgOmpTargetParallelLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  120829             : 
  120830             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  120831             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  120832             :   // The default value of the depth is 0, so after this call the depth is 1!
  120833           0 :      help.incrementDepth();
  120834             : 
  120835             : #if 0
  120836             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  120837             :   // but it is not generally true that things can only be copied once!
  120838             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  120839             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetParallelLoopStatement*>(this)->attribute["copied"];
  120840             :      bool previouslyCopied = const_cast<SgOmpTargetParallelLoopStatement*>(this)->attribute.exists("copied");
  120841             :      if (previouslyCopied == true)
  120842             :         {
  120843             :           this->get_file_info()->display("Called from copy SgOmpTargetParallelLoopStatement: debug");
  120844             :         }
  120845             :      ROSE_ASSERT(previouslyCopied == false);
  120846             : 
  120847             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  120848             :      AstAttribute* newAttribute = new AstAttribute();
  120849             :      ROSE_ASSERT(newAttribute != NULL);
  120850             : 
  120851             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  120852             :      const_cast<SgOmpTargetParallelLoopStatement*>(this)->attribute.add("copied",newAttribute);
  120853             : #endif
  120854             : 
  120855             :   // Copy data members from base classes
  120856             :   // Copy constructor parameter data member: startOfConstruct_copy
  120857             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  120858             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  120859           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  120860           0 :      if ( p_startOfConstruct != NULL ) 
  120861             :         { 
  120862           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  120863             :         } 
  120864             :        else 
  120865             :         { 
  120866             :           startOfConstruct_copy = NULL; 
  120867             :         } 
  120868             :   // Copy constructor parameter data member: body_copy
  120869           0 :      SgStatement* body_copy; 
  120870             :   // case: not a listType for (using conditionalToCopyVariable)body
  120871           0 :           if (get_body() != NULL) 
  120872             :              { 
  120873           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  120874             :              } 
  120875             :             else 
  120876             :              { 
  120877             :                body_copy = NULL; 
  120878             :              } 
  120879             :  
  120880             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120881             : 
  120882             :   // Build an empty copy of this object (will be filled in, but 
  120883             :   // the parent can't be set and must be set by the caller)
  120884           0 :      result = new SgOmpTargetParallelLoopStatement(  startOfConstruct_copy, body_copy );
  120885           0 :      ROSE_ASSERT(result != NULL);
  120886             : 
  120887             :   // Copy data members of "this" class
  120888             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  120889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  120890             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  120891           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  120892           0 :      if ( p_endOfConstruct != NULL ) 
  120893             :         { 
  120894           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  120895             :         } 
  120896             :        else 
  120897             :         { 
  120898             :           endOfConstruct_copy = NULL; 
  120899             :         } 
  120900             :   /* check for a valid pointer and delete if present */ 
  120901           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  120902             :   /* add assignment to result here */ 
  120903           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  120904             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  120905             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  120906             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  120907           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  120908           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  120909             :         { 
  120910           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  120911             :         } 
  120912             :        else 
  120913             :         { 
  120914             :           attachedPreprocessingInfoPtr_copy = NULL; 
  120915             :         } 
  120916             :   /* check for a valid pointer and delete if present */ 
  120917           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  120918             :   /* add assignment to result here */ 
  120919           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  120920             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  120921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  120922             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  120923           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  120924           0 :      if ( p_attributeMechanism != NULL ) 
  120925             :         { 
  120926           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  120927             :         } 
  120928             :        else 
  120929             :         { 
  120930             :           attributeMechanism_copy = NULL; 
  120931             :         } 
  120932             :   /* check for a valid pointer and delete if present */ 
  120933           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  120934             :   /* add assignment to result here */ 
  120935           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  120936             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  120937             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  120938             :   // case: toBeCopied == COPY_DATA for numeric_label
  120939           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  120940           0 :      result->p_numeric_label = numeric_label_copy; 
  120941             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  120942             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  120943             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  120944           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  120945           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  120946             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  120947             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  120948             :   // case: toBeCopied == COPY_DATA for upir_parent
  120949           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  120950           0 :      result->p_upir_parent = upir_parent_copy; 
  120951             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  120952             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  120953             :   // case: toBeCopied == COPY_DATA for upir_children
  120954           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  120955           0 :      result->p_upir_children = upir_children_copy; 
  120956             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  120957           0 :      SgOmpClausePtrList clauses_copy; 
  120958             :   // case: listType for clauses
  120959             :   // case: listType (typeIsPointerToList == false) for clauses
  120960           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  120961           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  120962             :         { 
  120963           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  120964           0 :           SgOmpClause* copy_list_element = NULL; 
  120965           0 :           if (source_list_element != NULL) 
  120966             :              { 
  120967           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  120968             :              } 
  120969             :             else 
  120970             :              { 
  120971             :                copy_list_element = NULL; 
  120972             :              } 
  120973           0 :           clauses_copy.push_back(copy_list_element); 
  120974             :         } 
  120975           0 :      result->p_clauses = clauses_copy; 
  120976             :   // case: listType for clauses
  120977             :   // case: listType (typeIsPointerToList == false) for clauses
  120978           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  120979           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  120980             :         { 
  120981           0 :           SgOmpClause* list_element = *clauses_iterator; 
  120982           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  120983             :              { 
  120984           0 :                list_element->set_parent(result); 
  120985             :              } 
  120986             :         } 
  120987             :   // case: not a listType for (using conditionalToSetParent)body
  120988           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  120989             :              { 
  120990           0 :                body_copy->set_parent(result); 
  120991             :              } 
  120992             : 
  120993             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  120994             : 
  120995             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  120996             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  120997             :   // fixupCopy(result,help);
  120998             : 
  120999             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  121000             :   // the Sg_File_Info objects that are built for the new IR nodes.
  121001           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  121002           0 :      if (locatedNode != NULL)
  121003             :         {
  121004             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  121005           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  121006           0 :           ROSE_ASSERT(start != NULL);
  121007             : #if 0
  121008             :        // Debugging information
  121009             :           if (start->get_parent() == NULL)
  121010             :              {
  121011             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121012             :              }
  121013             : #endif
  121014           0 :           start->set_parent(locatedNode);
  121015           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  121016             : 
  121017           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  121018             : 
  121019             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  121020             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  121021             :        // ROSE_ASSERT(end != NULL);
  121022           0 :           if (end == NULL)
  121023             :              {
  121024           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  121025             :              }
  121026             :             else
  121027             :              {
  121028             : #if 0
  121029             :             // Debugging information
  121030             :                if (end->get_parent() == NULL)
  121031             :                   {
  121032             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121033             :                   }
  121034             : #endif
  121035           0 :                end->set_parent(locatedNode);
  121036           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  121037             :              }
  121038             : 
  121039           0 :           SgExpression* expression = isSgExpression(result);
  121040           0 :           if (isSgExpression(this) != NULL)
  121041             :              {
  121042           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  121043             : 
  121044             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  121045           0 :                if (operatorPosition != NULL)
  121046             :                   {
  121047             : #if 0
  121048             :                  // Debugging information
  121049             :                     if (operatorPosition->get_parent() == NULL)
  121050             :                        {
  121051             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121052             :                        }
  121053             : #endif
  121054           0 :                     operatorPosition->set_parent(expression);
  121055           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  121056             :                   }
  121057             :              }
  121058             :         }
  121059             : 
  121060             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  121061           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  121062           0 :      if (initializedName != NULL)
  121063             :         {
  121064             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  121065           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  121066           0 :           ROSE_ASSERT(start != NULL);
  121067             : #if 0
  121068             :        // Debugging information
  121069             :           if (start->get_parent() == NULL)
  121070             :              {
  121071             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121072             :              }
  121073             : #endif
  121074           0 :           start->set_parent(initializedName);
  121075           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  121076             : 
  121077             : #if 0
  121078             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  121079             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  121080             : 
  121081             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  121082             :        // ROSE_ASSERT(end != NULL);
  121083             :           if (end == NULL)
  121084             :              {
  121085             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  121086             :              }
  121087             :             else
  121088             :              {
  121089             :                if (end->get_parent() == NULL)
  121090             :                   {
  121091             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121092             :                   }
  121093             :                end->set_parent(initializedName);
  121094             :                ROSE_ASSERT(end->get_parent() != NULL);
  121095             :              }
  121096             : #endif
  121097             :         }
  121098             : 
  121099             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  121100           0 :      help.insertCopiedNodePair(this,result);
  121101             : 
  121102             :   // printf ("End of copy SgOmpTargetParallelLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  121103             : 
  121104             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  121105             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  121106           0 :      help.decrementDepth();
  121107             : 
  121108             :   // Test if this is the root of the copy!
  121109           0 :      if (help.get_depth() == 0)
  121110             :         {
  121111             :        // This is the original calling node.
  121112             : 
  121113             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  121114             :        // printf ("Calling SgOmpTargetParallelLoopStatement::fixupCopy() (from root of AST being copied) \n");
  121115             : #if ALT_FIXUP_COPY
  121116             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  121117           0 :           fixupCopy_scopes (result,help);
  121118           0 :           fixupCopy_symbols (result,help);
  121119           0 :           fixupCopy_references (result,help);
  121120             : #else
  121121             :           fixupCopy(result,help);
  121122             : #endif
  121123             :        // Allow this to be called recursively, so accumulate the state.
  121124             :        // Also, clear the state in the SgCopyHelp object.
  121125             :        // help.clearState();
  121126             :         }
  121127             : 
  121128           0 :      return result;
  121129             :    }
  121130             : 
  121131             : 
  121132             : /* #line 121133 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  121133             : 
  121134             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  121135             : 
  121136           0 : SgNode* SgOmpTargetSimdStatement::copy ( SgCopyHelp& help) const
  121137             :    {
  121138           0 :      SgOmpTargetSimdStatement* result = NULL;
  121139             : 
  121140             :   // printf ("Copy SgOmpTargetSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  121141             : 
  121142             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  121143             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  121144             :   // The default value of the depth is 0, so after this call the depth is 1!
  121145           0 :      help.incrementDepth();
  121146             : 
  121147             : #if 0
  121148             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  121149             :   // but it is not generally true that things can only be copied once!
  121150             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  121151             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetSimdStatement*>(this)->attribute["copied"];
  121152             :      bool previouslyCopied = const_cast<SgOmpTargetSimdStatement*>(this)->attribute.exists("copied");
  121153             :      if (previouslyCopied == true)
  121154             :         {
  121155             :           this->get_file_info()->display("Called from copy SgOmpTargetSimdStatement: debug");
  121156             :         }
  121157             :      ROSE_ASSERT(previouslyCopied == false);
  121158             : 
  121159             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  121160             :      AstAttribute* newAttribute = new AstAttribute();
  121161             :      ROSE_ASSERT(newAttribute != NULL);
  121162             : 
  121163             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  121164             :      const_cast<SgOmpTargetSimdStatement*>(this)->attribute.add("copied",newAttribute);
  121165             : #endif
  121166             : 
  121167             :   // Copy data members from base classes
  121168             :   // Copy constructor parameter data member: startOfConstruct_copy
  121169             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  121170             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  121171           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  121172           0 :      if ( p_startOfConstruct != NULL ) 
  121173             :         { 
  121174           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  121175             :         } 
  121176             :        else 
  121177             :         { 
  121178             :           startOfConstruct_copy = NULL; 
  121179             :         } 
  121180             :   // Copy constructor parameter data member: body_copy
  121181           0 :      SgStatement* body_copy; 
  121182             :   // case: not a listType for (using conditionalToCopyVariable)body
  121183           0 :           if (get_body() != NULL) 
  121184             :              { 
  121185           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  121186             :              } 
  121187             :             else 
  121188             :              { 
  121189             :                body_copy = NULL; 
  121190             :              } 
  121191             :  
  121192             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  121193             : 
  121194             :   // Build an empty copy of this object (will be filled in, but 
  121195             :   // the parent can't be set and must be set by the caller)
  121196           0 :      result = new SgOmpTargetSimdStatement(  startOfConstruct_copy, body_copy );
  121197           0 :      ROSE_ASSERT(result != NULL);
  121198             : 
  121199             :   // Copy data members of "this" class
  121200             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  121201             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  121202             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  121203           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  121204           0 :      if ( p_endOfConstruct != NULL ) 
  121205             :         { 
  121206           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  121207             :         } 
  121208             :        else 
  121209             :         { 
  121210             :           endOfConstruct_copy = NULL; 
  121211             :         } 
  121212             :   /* check for a valid pointer and delete if present */ 
  121213           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  121214             :   /* add assignment to result here */ 
  121215           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  121216             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  121217             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  121218             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  121219           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  121220           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  121221             :         { 
  121222           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  121223             :         } 
  121224             :        else 
  121225             :         { 
  121226             :           attachedPreprocessingInfoPtr_copy = NULL; 
  121227             :         } 
  121228             :   /* check for a valid pointer and delete if present */ 
  121229           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  121230             :   /* add assignment to result here */ 
  121231           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  121232             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  121233             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  121234             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  121235           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  121236           0 :      if ( p_attributeMechanism != NULL ) 
  121237             :         { 
  121238           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  121239             :         } 
  121240             :        else 
  121241             :         { 
  121242             :           attributeMechanism_copy = NULL; 
  121243             :         } 
  121244             :   /* check for a valid pointer and delete if present */ 
  121245           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  121246             :   /* add assignment to result here */ 
  121247           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  121248             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  121249             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  121250             :   // case: toBeCopied == COPY_DATA for numeric_label
  121251           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  121252           0 :      result->p_numeric_label = numeric_label_copy; 
  121253             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  121254             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  121255             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  121256           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  121257           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  121258             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  121259             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  121260             :   // case: toBeCopied == COPY_DATA for upir_parent
  121261           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  121262           0 :      result->p_upir_parent = upir_parent_copy; 
  121263             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  121264             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  121265             :   // case: toBeCopied == COPY_DATA for upir_children
  121266           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  121267           0 :      result->p_upir_children = upir_children_copy; 
  121268             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  121269           0 :      SgOmpClausePtrList clauses_copy; 
  121270             :   // case: listType for clauses
  121271             :   // case: listType (typeIsPointerToList == false) for clauses
  121272           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  121273           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  121274             :         { 
  121275           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  121276           0 :           SgOmpClause* copy_list_element = NULL; 
  121277           0 :           if (source_list_element != NULL) 
  121278             :              { 
  121279           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  121280             :              } 
  121281             :             else 
  121282             :              { 
  121283             :                copy_list_element = NULL; 
  121284             :              } 
  121285           0 :           clauses_copy.push_back(copy_list_element); 
  121286             :         } 
  121287           0 :      result->p_clauses = clauses_copy; 
  121288             :   // case: listType for clauses
  121289             :   // case: listType (typeIsPointerToList == false) for clauses
  121290           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  121291           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  121292             :         { 
  121293           0 :           SgOmpClause* list_element = *clauses_iterator; 
  121294           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  121295             :              { 
  121296           0 :                list_element->set_parent(result); 
  121297             :              } 
  121298             :         } 
  121299             :   // case: not a listType for (using conditionalToSetParent)body
  121300           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  121301             :              { 
  121302           0 :                body_copy->set_parent(result); 
  121303             :              } 
  121304             : 
  121305             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  121306             : 
  121307             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  121308             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  121309             :   // fixupCopy(result,help);
  121310             : 
  121311             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  121312             :   // the Sg_File_Info objects that are built for the new IR nodes.
  121313           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  121314           0 :      if (locatedNode != NULL)
  121315             :         {
  121316             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  121317           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  121318           0 :           ROSE_ASSERT(start != NULL);
  121319             : #if 0
  121320             :        // Debugging information
  121321             :           if (start->get_parent() == NULL)
  121322             :              {
  121323             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121324             :              }
  121325             : #endif
  121326           0 :           start->set_parent(locatedNode);
  121327           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  121328             : 
  121329           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  121330             : 
  121331             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  121332             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  121333             :        // ROSE_ASSERT(end != NULL);
  121334           0 :           if (end == NULL)
  121335             :              {
  121336           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  121337             :              }
  121338             :             else
  121339             :              {
  121340             : #if 0
  121341             :             // Debugging information
  121342             :                if (end->get_parent() == NULL)
  121343             :                   {
  121344             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121345             :                   }
  121346             : #endif
  121347           0 :                end->set_parent(locatedNode);
  121348           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  121349             :              }
  121350             : 
  121351           0 :           SgExpression* expression = isSgExpression(result);
  121352           0 :           if (isSgExpression(this) != NULL)
  121353             :              {
  121354           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  121355             : 
  121356             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  121357           0 :                if (operatorPosition != NULL)
  121358             :                   {
  121359             : #if 0
  121360             :                  // Debugging information
  121361             :                     if (operatorPosition->get_parent() == NULL)
  121362             :                        {
  121363             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121364             :                        }
  121365             : #endif
  121366           0 :                     operatorPosition->set_parent(expression);
  121367           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  121368             :                   }
  121369             :              }
  121370             :         }
  121371             : 
  121372             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  121373           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  121374           0 :      if (initializedName != NULL)
  121375             :         {
  121376             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  121377           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  121378           0 :           ROSE_ASSERT(start != NULL);
  121379             : #if 0
  121380             :        // Debugging information
  121381             :           if (start->get_parent() == NULL)
  121382             :              {
  121383             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121384             :              }
  121385             : #endif
  121386           0 :           start->set_parent(initializedName);
  121387           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  121388             : 
  121389             : #if 0
  121390             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  121391             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  121392             : 
  121393             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  121394             :        // ROSE_ASSERT(end != NULL);
  121395             :           if (end == NULL)
  121396             :              {
  121397             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  121398             :              }
  121399             :             else
  121400             :              {
  121401             :                if (end->get_parent() == NULL)
  121402             :                   {
  121403             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121404             :                   }
  121405             :                end->set_parent(initializedName);
  121406             :                ROSE_ASSERT(end->get_parent() != NULL);
  121407             :              }
  121408             : #endif
  121409             :         }
  121410             : 
  121411             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  121412           0 :      help.insertCopiedNodePair(this,result);
  121413             : 
  121414             :   // printf ("End of copy SgOmpTargetSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  121415             : 
  121416             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  121417             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  121418           0 :      help.decrementDepth();
  121419             : 
  121420             :   // Test if this is the root of the copy!
  121421           0 :      if (help.get_depth() == 0)
  121422             :         {
  121423             :        // This is the original calling node.
  121424             : 
  121425             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  121426             :        // printf ("Calling SgOmpTargetSimdStatement::fixupCopy() (from root of AST being copied) \n");
  121427             : #if ALT_FIXUP_COPY
  121428             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  121429           0 :           fixupCopy_scopes (result,help);
  121430           0 :           fixupCopy_symbols (result,help);
  121431           0 :           fixupCopy_references (result,help);
  121432             : #else
  121433             :           fixupCopy(result,help);
  121434             : #endif
  121435             :        // Allow this to be called recursively, so accumulate the state.
  121436             :        // Also, clear the state in the SgCopyHelp object.
  121437             :        // help.clearState();
  121438             :         }
  121439             : 
  121440           0 :      return result;
  121441             :    }
  121442             : 
  121443             : 
  121444             : /* #line 121445 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  121445             : 
  121446             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  121447             : 
  121448           0 : SgNode* SgOmpTargetTeamsStatement::copy ( SgCopyHelp& help) const
  121449             :    {
  121450           0 :      SgOmpTargetTeamsStatement* result = NULL;
  121451             : 
  121452             :   // printf ("Copy SgOmpTargetTeamsStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  121453             : 
  121454             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  121455             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  121456             :   // The default value of the depth is 0, so after this call the depth is 1!
  121457           0 :      help.incrementDepth();
  121458             : 
  121459             : #if 0
  121460             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  121461             :   // but it is not generally true that things can only be copied once!
  121462             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  121463             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetTeamsStatement*>(this)->attribute["copied"];
  121464             :      bool previouslyCopied = const_cast<SgOmpTargetTeamsStatement*>(this)->attribute.exists("copied");
  121465             :      if (previouslyCopied == true)
  121466             :         {
  121467             :           this->get_file_info()->display("Called from copy SgOmpTargetTeamsStatement: debug");
  121468             :         }
  121469             :      ROSE_ASSERT(previouslyCopied == false);
  121470             : 
  121471             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  121472             :      AstAttribute* newAttribute = new AstAttribute();
  121473             :      ROSE_ASSERT(newAttribute != NULL);
  121474             : 
  121475             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  121476             :      const_cast<SgOmpTargetTeamsStatement*>(this)->attribute.add("copied",newAttribute);
  121477             : #endif
  121478             : 
  121479             :   // Copy data members from base classes
  121480             :   // Copy constructor parameter data member: startOfConstruct_copy
  121481             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  121482             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  121483           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  121484           0 :      if ( p_startOfConstruct != NULL ) 
  121485             :         { 
  121486           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  121487             :         } 
  121488             :        else 
  121489             :         { 
  121490             :           startOfConstruct_copy = NULL; 
  121491             :         } 
  121492             :   // Copy constructor parameter data member: body_copy
  121493           0 :      SgStatement* body_copy; 
  121494             :   // case: not a listType for (using conditionalToCopyVariable)body
  121495           0 :           if (get_body() != NULL) 
  121496             :              { 
  121497           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  121498             :              } 
  121499             :             else 
  121500             :              { 
  121501             :                body_copy = NULL; 
  121502             :              } 
  121503             :  
  121504             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  121505             : 
  121506             :   // Build an empty copy of this object (will be filled in, but 
  121507             :   // the parent can't be set and must be set by the caller)
  121508           0 :      result = new SgOmpTargetTeamsStatement(  startOfConstruct_copy, body_copy );
  121509           0 :      ROSE_ASSERT(result != NULL);
  121510             : 
  121511             :   // Copy data members of "this" class
  121512             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  121513             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  121514             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  121515           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  121516           0 :      if ( p_endOfConstruct != NULL ) 
  121517             :         { 
  121518           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  121519             :         } 
  121520             :        else 
  121521             :         { 
  121522             :           endOfConstruct_copy = NULL; 
  121523             :         } 
  121524             :   /* check for a valid pointer and delete if present */ 
  121525           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  121526             :   /* add assignment to result here */ 
  121527           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  121528             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  121529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  121530             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  121531           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  121532           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  121533             :         { 
  121534           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  121535             :         } 
  121536             :        else 
  121537             :         { 
  121538             :           attachedPreprocessingInfoPtr_copy = NULL; 
  121539             :         } 
  121540             :   /* check for a valid pointer and delete if present */ 
  121541           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  121542             :   /* add assignment to result here */ 
  121543           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  121544             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  121545             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  121546             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  121547           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  121548           0 :      if ( p_attributeMechanism != NULL ) 
  121549             :         { 
  121550           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  121551             :         } 
  121552             :        else 
  121553             :         { 
  121554             :           attributeMechanism_copy = NULL; 
  121555             :         } 
  121556             :   /* check for a valid pointer and delete if present */ 
  121557           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  121558             :   /* add assignment to result here */ 
  121559           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  121560             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  121561             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  121562             :   // case: toBeCopied == COPY_DATA for numeric_label
  121563           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  121564           0 :      result->p_numeric_label = numeric_label_copy; 
  121565             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  121566             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  121567             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  121568           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  121569           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  121570             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  121571             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  121572             :   // case: toBeCopied == COPY_DATA for upir_parent
  121573           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  121574           0 :      result->p_upir_parent = upir_parent_copy; 
  121575             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  121576             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  121577             :   // case: toBeCopied == COPY_DATA for upir_children
  121578           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  121579           0 :      result->p_upir_children = upir_children_copy; 
  121580             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  121581           0 :      SgOmpClausePtrList clauses_copy; 
  121582             :   // case: listType for clauses
  121583             :   // case: listType (typeIsPointerToList == false) for clauses
  121584           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  121585           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  121586             :         { 
  121587           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  121588           0 :           SgOmpClause* copy_list_element = NULL; 
  121589           0 :           if (source_list_element != NULL) 
  121590             :              { 
  121591           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  121592             :              } 
  121593             :             else 
  121594             :              { 
  121595             :                copy_list_element = NULL; 
  121596             :              } 
  121597           0 :           clauses_copy.push_back(copy_list_element); 
  121598             :         } 
  121599           0 :      result->p_clauses = clauses_copy; 
  121600             :   // case: listType for clauses
  121601             :   // case: listType (typeIsPointerToList == false) for clauses
  121602           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  121603           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  121604             :         { 
  121605           0 :           SgOmpClause* list_element = *clauses_iterator; 
  121606           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  121607             :              { 
  121608           0 :                list_element->set_parent(result); 
  121609             :              } 
  121610             :         } 
  121611             :   // case: not a listType for (using conditionalToSetParent)body
  121612           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  121613             :              { 
  121614           0 :                body_copy->set_parent(result); 
  121615             :              } 
  121616             : 
  121617             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  121618             : 
  121619             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  121620             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  121621             :   // fixupCopy(result,help);
  121622             : 
  121623             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  121624             :   // the Sg_File_Info objects that are built for the new IR nodes.
  121625           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  121626           0 :      if (locatedNode != NULL)
  121627             :         {
  121628             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  121629           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  121630           0 :           ROSE_ASSERT(start != NULL);
  121631             : #if 0
  121632             :        // Debugging information
  121633             :           if (start->get_parent() == NULL)
  121634             :              {
  121635             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121636             :              }
  121637             : #endif
  121638           0 :           start->set_parent(locatedNode);
  121639           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  121640             : 
  121641           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  121642             : 
  121643             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  121644             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  121645             :        // ROSE_ASSERT(end != NULL);
  121646           0 :           if (end == NULL)
  121647             :              {
  121648           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  121649             :              }
  121650             :             else
  121651             :              {
  121652             : #if 0
  121653             :             // Debugging information
  121654             :                if (end->get_parent() == NULL)
  121655             :                   {
  121656             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121657             :                   }
  121658             : #endif
  121659           0 :                end->set_parent(locatedNode);
  121660           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  121661             :              }
  121662             : 
  121663           0 :           SgExpression* expression = isSgExpression(result);
  121664           0 :           if (isSgExpression(this) != NULL)
  121665             :              {
  121666           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  121667             : 
  121668             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  121669           0 :                if (operatorPosition != NULL)
  121670             :                   {
  121671             : #if 0
  121672             :                  // Debugging information
  121673             :                     if (operatorPosition->get_parent() == NULL)
  121674             :                        {
  121675             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121676             :                        }
  121677             : #endif
  121678           0 :                     operatorPosition->set_parent(expression);
  121679           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  121680             :                   }
  121681             :              }
  121682             :         }
  121683             : 
  121684             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  121685           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  121686           0 :      if (initializedName != NULL)
  121687             :         {
  121688             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  121689           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  121690           0 :           ROSE_ASSERT(start != NULL);
  121691             : #if 0
  121692             :        // Debugging information
  121693             :           if (start->get_parent() == NULL)
  121694             :              {
  121695             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121696             :              }
  121697             : #endif
  121698           0 :           start->set_parent(initializedName);
  121699           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  121700             : 
  121701             : #if 0
  121702             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  121703             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  121704             : 
  121705             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  121706             :        // ROSE_ASSERT(end != NULL);
  121707             :           if (end == NULL)
  121708             :              {
  121709             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  121710             :              }
  121711             :             else
  121712             :              {
  121713             :                if (end->get_parent() == NULL)
  121714             :                   {
  121715             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121716             :                   }
  121717             :                end->set_parent(initializedName);
  121718             :                ROSE_ASSERT(end->get_parent() != NULL);
  121719             :              }
  121720             : #endif
  121721             :         }
  121722             : 
  121723             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  121724           0 :      help.insertCopiedNodePair(this,result);
  121725             : 
  121726             :   // printf ("End of copy SgOmpTargetTeamsStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  121727             : 
  121728             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  121729             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  121730           0 :      help.decrementDepth();
  121731             : 
  121732             :   // Test if this is the root of the copy!
  121733           0 :      if (help.get_depth() == 0)
  121734             :         {
  121735             :        // This is the original calling node.
  121736             : 
  121737             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  121738             :        // printf ("Calling SgOmpTargetTeamsStatement::fixupCopy() (from root of AST being copied) \n");
  121739             : #if ALT_FIXUP_COPY
  121740             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  121741           0 :           fixupCopy_scopes (result,help);
  121742           0 :           fixupCopy_symbols (result,help);
  121743           0 :           fixupCopy_references (result,help);
  121744             : #else
  121745             :           fixupCopy(result,help);
  121746             : #endif
  121747             :        // Allow this to be called recursively, so accumulate the state.
  121748             :        // Also, clear the state in the SgCopyHelp object.
  121749             :        // help.clearState();
  121750             :         }
  121751             : 
  121752           0 :      return result;
  121753             :    }
  121754             : 
  121755             : 
  121756             : /* #line 121757 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  121757             : 
  121758             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  121759             : 
  121760           0 : SgNode* SgOmpTargetTeamsDistributeStatement::copy ( SgCopyHelp& help) const
  121761             :    {
  121762           0 :      SgOmpTargetTeamsDistributeStatement* result = NULL;
  121763             : 
  121764             :   // printf ("Copy SgOmpTargetTeamsDistributeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  121765             : 
  121766             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  121767             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  121768             :   // The default value of the depth is 0, so after this call the depth is 1!
  121769           0 :      help.incrementDepth();
  121770             : 
  121771             : #if 0
  121772             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  121773             :   // but it is not generally true that things can only be copied once!
  121774             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  121775             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetTeamsDistributeStatement*>(this)->attribute["copied"];
  121776             :      bool previouslyCopied = const_cast<SgOmpTargetTeamsDistributeStatement*>(this)->attribute.exists("copied");
  121777             :      if (previouslyCopied == true)
  121778             :         {
  121779             :           this->get_file_info()->display("Called from copy SgOmpTargetTeamsDistributeStatement: debug");
  121780             :         }
  121781             :      ROSE_ASSERT(previouslyCopied == false);
  121782             : 
  121783             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  121784             :      AstAttribute* newAttribute = new AstAttribute();
  121785             :      ROSE_ASSERT(newAttribute != NULL);
  121786             : 
  121787             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  121788             :      const_cast<SgOmpTargetTeamsDistributeStatement*>(this)->attribute.add("copied",newAttribute);
  121789             : #endif
  121790             : 
  121791             :   // Copy data members from base classes
  121792             :   // Copy constructor parameter data member: startOfConstruct_copy
  121793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  121794             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  121795           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  121796           0 :      if ( p_startOfConstruct != NULL ) 
  121797             :         { 
  121798           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  121799             :         } 
  121800             :        else 
  121801             :         { 
  121802             :           startOfConstruct_copy = NULL; 
  121803             :         } 
  121804             :   // Copy constructor parameter data member: body_copy
  121805           0 :      SgStatement* body_copy; 
  121806             :   // case: not a listType for (using conditionalToCopyVariable)body
  121807           0 :           if (get_body() != NULL) 
  121808             :              { 
  121809           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  121810             :              } 
  121811             :             else 
  121812             :              { 
  121813             :                body_copy = NULL; 
  121814             :              } 
  121815             :  
  121816             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  121817             : 
  121818             :   // Build an empty copy of this object (will be filled in, but 
  121819             :   // the parent can't be set and must be set by the caller)
  121820           0 :      result = new SgOmpTargetTeamsDistributeStatement(  startOfConstruct_copy, body_copy );
  121821           0 :      ROSE_ASSERT(result != NULL);
  121822             : 
  121823             :   // Copy data members of "this" class
  121824             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  121825             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  121826             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  121827           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  121828           0 :      if ( p_endOfConstruct != NULL ) 
  121829             :         { 
  121830           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  121831             :         } 
  121832             :        else 
  121833             :         { 
  121834             :           endOfConstruct_copy = NULL; 
  121835             :         } 
  121836             :   /* check for a valid pointer and delete if present */ 
  121837           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  121838             :   /* add assignment to result here */ 
  121839           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  121840             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  121841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  121842             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  121843           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  121844           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  121845             :         { 
  121846           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  121847             :         } 
  121848             :        else 
  121849             :         { 
  121850             :           attachedPreprocessingInfoPtr_copy = NULL; 
  121851             :         } 
  121852             :   /* check for a valid pointer and delete if present */ 
  121853           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  121854             :   /* add assignment to result here */ 
  121855           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  121856             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  121857             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  121858             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  121859           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  121860           0 :      if ( p_attributeMechanism != NULL ) 
  121861             :         { 
  121862           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  121863             :         } 
  121864             :        else 
  121865             :         { 
  121866             :           attributeMechanism_copy = NULL; 
  121867             :         } 
  121868             :   /* check for a valid pointer and delete if present */ 
  121869           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  121870             :   /* add assignment to result here */ 
  121871           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  121872             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  121873             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  121874             :   // case: toBeCopied == COPY_DATA for numeric_label
  121875           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  121876           0 :      result->p_numeric_label = numeric_label_copy; 
  121877             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  121878             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  121879             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  121880           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  121881           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  121882             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  121883             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  121884             :   // case: toBeCopied == COPY_DATA for upir_parent
  121885           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  121886           0 :      result->p_upir_parent = upir_parent_copy; 
  121887             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  121888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  121889             :   // case: toBeCopied == COPY_DATA for upir_children
  121890           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  121891           0 :      result->p_upir_children = upir_children_copy; 
  121892             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  121893           0 :      SgOmpClausePtrList clauses_copy; 
  121894             :   // case: listType for clauses
  121895             :   // case: listType (typeIsPointerToList == false) for clauses
  121896           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  121897           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  121898             :         { 
  121899           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  121900           0 :           SgOmpClause* copy_list_element = NULL; 
  121901           0 :           if (source_list_element != NULL) 
  121902             :              { 
  121903           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  121904             :              } 
  121905             :             else 
  121906             :              { 
  121907             :                copy_list_element = NULL; 
  121908             :              } 
  121909           0 :           clauses_copy.push_back(copy_list_element); 
  121910             :         } 
  121911           0 :      result->p_clauses = clauses_copy; 
  121912             :   // case: listType for clauses
  121913             :   // case: listType (typeIsPointerToList == false) for clauses
  121914           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  121915           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  121916             :         { 
  121917           0 :           SgOmpClause* list_element = *clauses_iterator; 
  121918           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  121919             :              { 
  121920           0 :                list_element->set_parent(result); 
  121921             :              } 
  121922             :         } 
  121923             :   // case: not a listType for (using conditionalToSetParent)body
  121924           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  121925             :              { 
  121926           0 :                body_copy->set_parent(result); 
  121927             :              } 
  121928             : 
  121929             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  121930             : 
  121931             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  121932             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  121933             :   // fixupCopy(result,help);
  121934             : 
  121935             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  121936             :   // the Sg_File_Info objects that are built for the new IR nodes.
  121937           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  121938           0 :      if (locatedNode != NULL)
  121939             :         {
  121940             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  121941           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  121942           0 :           ROSE_ASSERT(start != NULL);
  121943             : #if 0
  121944             :        // Debugging information
  121945             :           if (start->get_parent() == NULL)
  121946             :              {
  121947             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121948             :              }
  121949             : #endif
  121950           0 :           start->set_parent(locatedNode);
  121951           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  121952             : 
  121953           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  121954             : 
  121955             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  121956             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  121957             :        // ROSE_ASSERT(end != NULL);
  121958           0 :           if (end == NULL)
  121959             :              {
  121960           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  121961             :              }
  121962             :             else
  121963             :              {
  121964             : #if 0
  121965             :             // Debugging information
  121966             :                if (end->get_parent() == NULL)
  121967             :                   {
  121968             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121969             :                   }
  121970             : #endif
  121971           0 :                end->set_parent(locatedNode);
  121972           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  121973             :              }
  121974             : 
  121975           0 :           SgExpression* expression = isSgExpression(result);
  121976           0 :           if (isSgExpression(this) != NULL)
  121977             :              {
  121978           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  121979             : 
  121980             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  121981           0 :                if (operatorPosition != NULL)
  121982             :                   {
  121983             : #if 0
  121984             :                  // Debugging information
  121985             :                     if (operatorPosition->get_parent() == NULL)
  121986             :                        {
  121987             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  121988             :                        }
  121989             : #endif
  121990           0 :                     operatorPosition->set_parent(expression);
  121991           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  121992             :                   }
  121993             :              }
  121994             :         }
  121995             : 
  121996             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  121997           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  121998           0 :      if (initializedName != NULL)
  121999             :         {
  122000             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  122001           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  122002           0 :           ROSE_ASSERT(start != NULL);
  122003             : #if 0
  122004             :        // Debugging information
  122005             :           if (start->get_parent() == NULL)
  122006             :              {
  122007             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122008             :              }
  122009             : #endif
  122010           0 :           start->set_parent(initializedName);
  122011           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  122012             : 
  122013             : #if 0
  122014             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  122015             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  122016             : 
  122017             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  122018             :        // ROSE_ASSERT(end != NULL);
  122019             :           if (end == NULL)
  122020             :              {
  122021             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  122022             :              }
  122023             :             else
  122024             :              {
  122025             :                if (end->get_parent() == NULL)
  122026             :                   {
  122027             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122028             :                   }
  122029             :                end->set_parent(initializedName);
  122030             :                ROSE_ASSERT(end->get_parent() != NULL);
  122031             :              }
  122032             : #endif
  122033             :         }
  122034             : 
  122035             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  122036           0 :      help.insertCopiedNodePair(this,result);
  122037             : 
  122038             :   // printf ("End of copy SgOmpTargetTeamsDistributeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  122039             : 
  122040             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  122041             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  122042           0 :      help.decrementDepth();
  122043             : 
  122044             :   // Test if this is the root of the copy!
  122045           0 :      if (help.get_depth() == 0)
  122046             :         {
  122047             :        // This is the original calling node.
  122048             : 
  122049             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  122050             :        // printf ("Calling SgOmpTargetTeamsDistributeStatement::fixupCopy() (from root of AST being copied) \n");
  122051             : #if ALT_FIXUP_COPY
  122052             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  122053           0 :           fixupCopy_scopes (result,help);
  122054           0 :           fixupCopy_symbols (result,help);
  122055           0 :           fixupCopy_references (result,help);
  122056             : #else
  122057             :           fixupCopy(result,help);
  122058             : #endif
  122059             :        // Allow this to be called recursively, so accumulate the state.
  122060             :        // Also, clear the state in the SgCopyHelp object.
  122061             :        // help.clearState();
  122062             :         }
  122063             : 
  122064           0 :      return result;
  122065             :    }
  122066             : 
  122067             : 
  122068             : /* #line 122069 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  122069             : 
  122070             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  122071             : 
  122072           0 : SgNode* SgOmpTargetTeamsDistributeSimdStatement::copy ( SgCopyHelp& help) const
  122073             :    {
  122074           0 :      SgOmpTargetTeamsDistributeSimdStatement* result = NULL;
  122075             : 
  122076             :   // printf ("Copy SgOmpTargetTeamsDistributeSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  122077             : 
  122078             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  122079             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  122080             :   // The default value of the depth is 0, so after this call the depth is 1!
  122081           0 :      help.incrementDepth();
  122082             : 
  122083             : #if 0
  122084             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  122085             :   // but it is not generally true that things can only be copied once!
  122086             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  122087             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetTeamsDistributeSimdStatement*>(this)->attribute["copied"];
  122088             :      bool previouslyCopied = const_cast<SgOmpTargetTeamsDistributeSimdStatement*>(this)->attribute.exists("copied");
  122089             :      if (previouslyCopied == true)
  122090             :         {
  122091             :           this->get_file_info()->display("Called from copy SgOmpTargetTeamsDistributeSimdStatement: debug");
  122092             :         }
  122093             :      ROSE_ASSERT(previouslyCopied == false);
  122094             : 
  122095             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  122096             :      AstAttribute* newAttribute = new AstAttribute();
  122097             :      ROSE_ASSERT(newAttribute != NULL);
  122098             : 
  122099             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  122100             :      const_cast<SgOmpTargetTeamsDistributeSimdStatement*>(this)->attribute.add("copied",newAttribute);
  122101             : #endif
  122102             : 
  122103             :   // Copy data members from base classes
  122104             :   // Copy constructor parameter data member: startOfConstruct_copy
  122105             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  122106             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  122107           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  122108           0 :      if ( p_startOfConstruct != NULL ) 
  122109             :         { 
  122110           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  122111             :         } 
  122112             :        else 
  122113             :         { 
  122114             :           startOfConstruct_copy = NULL; 
  122115             :         } 
  122116             :   // Copy constructor parameter data member: body_copy
  122117           0 :      SgStatement* body_copy; 
  122118             :   // case: not a listType for (using conditionalToCopyVariable)body
  122119           0 :           if (get_body() != NULL) 
  122120             :              { 
  122121           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  122122             :              } 
  122123             :             else 
  122124             :              { 
  122125             :                body_copy = NULL; 
  122126             :              } 
  122127             :  
  122128             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  122129             : 
  122130             :   // Build an empty copy of this object (will be filled in, but 
  122131             :   // the parent can't be set and must be set by the caller)
  122132           0 :      result = new SgOmpTargetTeamsDistributeSimdStatement(  startOfConstruct_copy, body_copy );
  122133           0 :      ROSE_ASSERT(result != NULL);
  122134             : 
  122135             :   // Copy data members of "this" class
  122136             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  122137             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  122138             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  122139           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  122140           0 :      if ( p_endOfConstruct != NULL ) 
  122141             :         { 
  122142           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  122143             :         } 
  122144             :        else 
  122145             :         { 
  122146             :           endOfConstruct_copy = NULL; 
  122147             :         } 
  122148             :   /* check for a valid pointer and delete if present */ 
  122149           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  122150             :   /* add assignment to result here */ 
  122151           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  122152             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  122153             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  122154             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  122155           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  122156           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  122157             :         { 
  122158           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  122159             :         } 
  122160             :        else 
  122161             :         { 
  122162             :           attachedPreprocessingInfoPtr_copy = NULL; 
  122163             :         } 
  122164             :   /* check for a valid pointer and delete if present */ 
  122165           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  122166             :   /* add assignment to result here */ 
  122167           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  122168             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  122169             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  122170             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  122171           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  122172           0 :      if ( p_attributeMechanism != NULL ) 
  122173             :         { 
  122174           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  122175             :         } 
  122176             :        else 
  122177             :         { 
  122178             :           attributeMechanism_copy = NULL; 
  122179             :         } 
  122180             :   /* check for a valid pointer and delete if present */ 
  122181           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  122182             :   /* add assignment to result here */ 
  122183           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  122184             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  122185             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  122186             :   // case: toBeCopied == COPY_DATA for numeric_label
  122187           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  122188           0 :      result->p_numeric_label = numeric_label_copy; 
  122189             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  122190             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  122191             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  122192           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  122193           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  122194             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  122195             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  122196             :   // case: toBeCopied == COPY_DATA for upir_parent
  122197           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  122198           0 :      result->p_upir_parent = upir_parent_copy; 
  122199             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  122200             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  122201             :   // case: toBeCopied == COPY_DATA for upir_children
  122202           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  122203           0 :      result->p_upir_children = upir_children_copy; 
  122204             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  122205           0 :      SgOmpClausePtrList clauses_copy; 
  122206             :   // case: listType for clauses
  122207             :   // case: listType (typeIsPointerToList == false) for clauses
  122208           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  122209           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  122210             :         { 
  122211           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  122212           0 :           SgOmpClause* copy_list_element = NULL; 
  122213           0 :           if (source_list_element != NULL) 
  122214             :              { 
  122215           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  122216             :              } 
  122217             :             else 
  122218             :              { 
  122219             :                copy_list_element = NULL; 
  122220             :              } 
  122221           0 :           clauses_copy.push_back(copy_list_element); 
  122222             :         } 
  122223           0 :      result->p_clauses = clauses_copy; 
  122224             :   // case: listType for clauses
  122225             :   // case: listType (typeIsPointerToList == false) for clauses
  122226           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  122227           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  122228             :         { 
  122229           0 :           SgOmpClause* list_element = *clauses_iterator; 
  122230           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  122231             :              { 
  122232           0 :                list_element->set_parent(result); 
  122233             :              } 
  122234             :         } 
  122235             :   // case: not a listType for (using conditionalToSetParent)body
  122236           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  122237             :              { 
  122238           0 :                body_copy->set_parent(result); 
  122239             :              } 
  122240             : 
  122241             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  122242             : 
  122243             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  122244             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  122245             :   // fixupCopy(result,help);
  122246             : 
  122247             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  122248             :   // the Sg_File_Info objects that are built for the new IR nodes.
  122249           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  122250           0 :      if (locatedNode != NULL)
  122251             :         {
  122252             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  122253           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  122254           0 :           ROSE_ASSERT(start != NULL);
  122255             : #if 0
  122256             :        // Debugging information
  122257             :           if (start->get_parent() == NULL)
  122258             :              {
  122259             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122260             :              }
  122261             : #endif
  122262           0 :           start->set_parent(locatedNode);
  122263           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  122264             : 
  122265           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  122266             : 
  122267             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  122268             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  122269             :        // ROSE_ASSERT(end != NULL);
  122270           0 :           if (end == NULL)
  122271             :              {
  122272           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  122273             :              }
  122274             :             else
  122275             :              {
  122276             : #if 0
  122277             :             // Debugging information
  122278             :                if (end->get_parent() == NULL)
  122279             :                   {
  122280             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122281             :                   }
  122282             : #endif
  122283           0 :                end->set_parent(locatedNode);
  122284           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  122285             :              }
  122286             : 
  122287           0 :           SgExpression* expression = isSgExpression(result);
  122288           0 :           if (isSgExpression(this) != NULL)
  122289             :              {
  122290           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  122291             : 
  122292             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  122293           0 :                if (operatorPosition != NULL)
  122294             :                   {
  122295             : #if 0
  122296             :                  // Debugging information
  122297             :                     if (operatorPosition->get_parent() == NULL)
  122298             :                        {
  122299             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122300             :                        }
  122301             : #endif
  122302           0 :                     operatorPosition->set_parent(expression);
  122303           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  122304             :                   }
  122305             :              }
  122306             :         }
  122307             : 
  122308             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  122309           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  122310           0 :      if (initializedName != NULL)
  122311             :         {
  122312             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  122313           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  122314           0 :           ROSE_ASSERT(start != NULL);
  122315             : #if 0
  122316             :        // Debugging information
  122317             :           if (start->get_parent() == NULL)
  122318             :              {
  122319             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122320             :              }
  122321             : #endif
  122322           0 :           start->set_parent(initializedName);
  122323           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  122324             : 
  122325             : #if 0
  122326             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  122327             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  122328             : 
  122329             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  122330             :        // ROSE_ASSERT(end != NULL);
  122331             :           if (end == NULL)
  122332             :              {
  122333             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  122334             :              }
  122335             :             else
  122336             :              {
  122337             :                if (end->get_parent() == NULL)
  122338             :                   {
  122339             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122340             :                   }
  122341             :                end->set_parent(initializedName);
  122342             :                ROSE_ASSERT(end->get_parent() != NULL);
  122343             :              }
  122344             : #endif
  122345             :         }
  122346             : 
  122347             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  122348           0 :      help.insertCopiedNodePair(this,result);
  122349             : 
  122350             :   // printf ("End of copy SgOmpTargetTeamsDistributeSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  122351             : 
  122352             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  122353             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  122354           0 :      help.decrementDepth();
  122355             : 
  122356             :   // Test if this is the root of the copy!
  122357           0 :      if (help.get_depth() == 0)
  122358             :         {
  122359             :        // This is the original calling node.
  122360             : 
  122361             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  122362             :        // printf ("Calling SgOmpTargetTeamsDistributeSimdStatement::fixupCopy() (from root of AST being copied) \n");
  122363             : #if ALT_FIXUP_COPY
  122364             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  122365           0 :           fixupCopy_scopes (result,help);
  122366           0 :           fixupCopy_symbols (result,help);
  122367           0 :           fixupCopy_references (result,help);
  122368             : #else
  122369             :           fixupCopy(result,help);
  122370             : #endif
  122371             :        // Allow this to be called recursively, so accumulate the state.
  122372             :        // Also, clear the state in the SgCopyHelp object.
  122373             :        // help.clearState();
  122374             :         }
  122375             : 
  122376           0 :      return result;
  122377             :    }
  122378             : 
  122379             : 
  122380             : /* #line 122381 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  122381             : 
  122382             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  122383             : 
  122384           0 : SgNode* SgOmpTargetTeamsLoopStatement::copy ( SgCopyHelp& help) const
  122385             :    {
  122386           0 :      SgOmpTargetTeamsLoopStatement* result = NULL;
  122387             : 
  122388             :   // printf ("Copy SgOmpTargetTeamsLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  122389             : 
  122390             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  122391             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  122392             :   // The default value of the depth is 0, so after this call the depth is 1!
  122393           0 :      help.incrementDepth();
  122394             : 
  122395             : #if 0
  122396             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  122397             :   // but it is not generally true that things can only be copied once!
  122398             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  122399             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetTeamsLoopStatement*>(this)->attribute["copied"];
  122400             :      bool previouslyCopied = const_cast<SgOmpTargetTeamsLoopStatement*>(this)->attribute.exists("copied");
  122401             :      if (previouslyCopied == true)
  122402             :         {
  122403             :           this->get_file_info()->display("Called from copy SgOmpTargetTeamsLoopStatement: debug");
  122404             :         }
  122405             :      ROSE_ASSERT(previouslyCopied == false);
  122406             : 
  122407             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  122408             :      AstAttribute* newAttribute = new AstAttribute();
  122409             :      ROSE_ASSERT(newAttribute != NULL);
  122410             : 
  122411             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  122412             :      const_cast<SgOmpTargetTeamsLoopStatement*>(this)->attribute.add("copied",newAttribute);
  122413             : #endif
  122414             : 
  122415             :   // Copy data members from base classes
  122416             :   // Copy constructor parameter data member: startOfConstruct_copy
  122417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  122418             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  122419           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  122420           0 :      if ( p_startOfConstruct != NULL ) 
  122421             :         { 
  122422           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  122423             :         } 
  122424             :        else 
  122425             :         { 
  122426             :           startOfConstruct_copy = NULL; 
  122427             :         } 
  122428             :   // Copy constructor parameter data member: body_copy
  122429           0 :      SgStatement* body_copy; 
  122430             :   // case: not a listType for (using conditionalToCopyVariable)body
  122431           0 :           if (get_body() != NULL) 
  122432             :              { 
  122433           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  122434             :              } 
  122435             :             else 
  122436             :              { 
  122437             :                body_copy = NULL; 
  122438             :              } 
  122439             :  
  122440             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  122441             : 
  122442             :   // Build an empty copy of this object (will be filled in, but 
  122443             :   // the parent can't be set and must be set by the caller)
  122444           0 :      result = new SgOmpTargetTeamsLoopStatement(  startOfConstruct_copy, body_copy );
  122445           0 :      ROSE_ASSERT(result != NULL);
  122446             : 
  122447             :   // Copy data members of "this" class
  122448             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  122449             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  122450             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  122451           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  122452           0 :      if ( p_endOfConstruct != NULL ) 
  122453             :         { 
  122454           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  122455             :         } 
  122456             :        else 
  122457             :         { 
  122458             :           endOfConstruct_copy = NULL; 
  122459             :         } 
  122460             :   /* check for a valid pointer and delete if present */ 
  122461           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  122462             :   /* add assignment to result here */ 
  122463           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  122464             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  122465             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  122466             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  122467           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  122468           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  122469             :         { 
  122470           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  122471             :         } 
  122472             :        else 
  122473             :         { 
  122474             :           attachedPreprocessingInfoPtr_copy = NULL; 
  122475             :         } 
  122476             :   /* check for a valid pointer and delete if present */ 
  122477           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  122478             :   /* add assignment to result here */ 
  122479           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  122480             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  122481             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  122482             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  122483           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  122484           0 :      if ( p_attributeMechanism != NULL ) 
  122485             :         { 
  122486           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  122487             :         } 
  122488             :        else 
  122489             :         { 
  122490             :           attributeMechanism_copy = NULL; 
  122491             :         } 
  122492             :   /* check for a valid pointer and delete if present */ 
  122493           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  122494             :   /* add assignment to result here */ 
  122495           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  122496             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  122497             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  122498             :   // case: toBeCopied == COPY_DATA for numeric_label
  122499           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  122500           0 :      result->p_numeric_label = numeric_label_copy; 
  122501             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  122502             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  122503             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  122504           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  122505           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  122506             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  122507             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  122508             :   // case: toBeCopied == COPY_DATA for upir_parent
  122509           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  122510           0 :      result->p_upir_parent = upir_parent_copy; 
  122511             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  122512             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  122513             :   // case: toBeCopied == COPY_DATA for upir_children
  122514           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  122515           0 :      result->p_upir_children = upir_children_copy; 
  122516             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  122517           0 :      SgOmpClausePtrList clauses_copy; 
  122518             :   // case: listType for clauses
  122519             :   // case: listType (typeIsPointerToList == false) for clauses
  122520           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  122521           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  122522             :         { 
  122523           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  122524           0 :           SgOmpClause* copy_list_element = NULL; 
  122525           0 :           if (source_list_element != NULL) 
  122526             :              { 
  122527           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  122528             :              } 
  122529             :             else 
  122530             :              { 
  122531             :                copy_list_element = NULL; 
  122532             :              } 
  122533           0 :           clauses_copy.push_back(copy_list_element); 
  122534             :         } 
  122535           0 :      result->p_clauses = clauses_copy; 
  122536             :   // case: listType for clauses
  122537             :   // case: listType (typeIsPointerToList == false) for clauses
  122538           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  122539           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  122540             :         { 
  122541           0 :           SgOmpClause* list_element = *clauses_iterator; 
  122542           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  122543             :              { 
  122544           0 :                list_element->set_parent(result); 
  122545             :              } 
  122546             :         } 
  122547             :   // case: not a listType for (using conditionalToSetParent)body
  122548           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  122549             :              { 
  122550           0 :                body_copy->set_parent(result); 
  122551             :              } 
  122552             : 
  122553             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  122554             : 
  122555             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  122556             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  122557             :   // fixupCopy(result,help);
  122558             : 
  122559             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  122560             :   // the Sg_File_Info objects that are built for the new IR nodes.
  122561           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  122562           0 :      if (locatedNode != NULL)
  122563             :         {
  122564             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  122565           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  122566           0 :           ROSE_ASSERT(start != NULL);
  122567             : #if 0
  122568             :        // Debugging information
  122569             :           if (start->get_parent() == NULL)
  122570             :              {
  122571             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122572             :              }
  122573             : #endif
  122574           0 :           start->set_parent(locatedNode);
  122575           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  122576             : 
  122577           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  122578             : 
  122579             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  122580             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  122581             :        // ROSE_ASSERT(end != NULL);
  122582           0 :           if (end == NULL)
  122583             :              {
  122584           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  122585             :              }
  122586             :             else
  122587             :              {
  122588             : #if 0
  122589             :             // Debugging information
  122590             :                if (end->get_parent() == NULL)
  122591             :                   {
  122592             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122593             :                   }
  122594             : #endif
  122595           0 :                end->set_parent(locatedNode);
  122596           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  122597             :              }
  122598             : 
  122599           0 :           SgExpression* expression = isSgExpression(result);
  122600           0 :           if (isSgExpression(this) != NULL)
  122601             :              {
  122602           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  122603             : 
  122604             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  122605           0 :                if (operatorPosition != NULL)
  122606             :                   {
  122607             : #if 0
  122608             :                  // Debugging information
  122609             :                     if (operatorPosition->get_parent() == NULL)
  122610             :                        {
  122611             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122612             :                        }
  122613             : #endif
  122614           0 :                     operatorPosition->set_parent(expression);
  122615           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  122616             :                   }
  122617             :              }
  122618             :         }
  122619             : 
  122620             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  122621           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  122622           0 :      if (initializedName != NULL)
  122623             :         {
  122624             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  122625           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  122626           0 :           ROSE_ASSERT(start != NULL);
  122627             : #if 0
  122628             :        // Debugging information
  122629             :           if (start->get_parent() == NULL)
  122630             :              {
  122631             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122632             :              }
  122633             : #endif
  122634           0 :           start->set_parent(initializedName);
  122635           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  122636             : 
  122637             : #if 0
  122638             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  122639             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  122640             : 
  122641             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  122642             :        // ROSE_ASSERT(end != NULL);
  122643             :           if (end == NULL)
  122644             :              {
  122645             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  122646             :              }
  122647             :             else
  122648             :              {
  122649             :                if (end->get_parent() == NULL)
  122650             :                   {
  122651             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122652             :                   }
  122653             :                end->set_parent(initializedName);
  122654             :                ROSE_ASSERT(end->get_parent() != NULL);
  122655             :              }
  122656             : #endif
  122657             :         }
  122658             : 
  122659             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  122660           0 :      help.insertCopiedNodePair(this,result);
  122661             : 
  122662             :   // printf ("End of copy SgOmpTargetTeamsLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  122663             : 
  122664             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  122665             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  122666           0 :      help.decrementDepth();
  122667             : 
  122668             :   // Test if this is the root of the copy!
  122669           0 :      if (help.get_depth() == 0)
  122670             :         {
  122671             :        // This is the original calling node.
  122672             : 
  122673             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  122674             :        // printf ("Calling SgOmpTargetTeamsLoopStatement::fixupCopy() (from root of AST being copied) \n");
  122675             : #if ALT_FIXUP_COPY
  122676             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  122677           0 :           fixupCopy_scopes (result,help);
  122678           0 :           fixupCopy_symbols (result,help);
  122679           0 :           fixupCopy_references (result,help);
  122680             : #else
  122681             :           fixupCopy(result,help);
  122682             : #endif
  122683             :        // Allow this to be called recursively, so accumulate the state.
  122684             :        // Also, clear the state in the SgCopyHelp object.
  122685             :        // help.clearState();
  122686             :         }
  122687             : 
  122688           0 :      return result;
  122689             :    }
  122690             : 
  122691             : 
  122692             : /* #line 122693 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  122693             : 
  122694             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  122695             : 
  122696           0 : SgNode* SgOmpTargetTeamsDistributeParallelForStatement::copy ( SgCopyHelp& help) const
  122697             :    {
  122698           0 :      SgOmpTargetTeamsDistributeParallelForStatement* result = NULL;
  122699             : 
  122700             :   // printf ("Copy SgOmpTargetTeamsDistributeParallelForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  122701             : 
  122702             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  122703             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  122704             :   // The default value of the depth is 0, so after this call the depth is 1!
  122705           0 :      help.incrementDepth();
  122706             : 
  122707             : #if 0
  122708             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  122709             :   // but it is not generally true that things can only be copied once!
  122710             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  122711             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetTeamsDistributeParallelForStatement*>(this)->attribute["copied"];
  122712             :      bool previouslyCopied = const_cast<SgOmpTargetTeamsDistributeParallelForStatement*>(this)->attribute.exists("copied");
  122713             :      if (previouslyCopied == true)
  122714             :         {
  122715             :           this->get_file_info()->display("Called from copy SgOmpTargetTeamsDistributeParallelForStatement: debug");
  122716             :         }
  122717             :      ROSE_ASSERT(previouslyCopied == false);
  122718             : 
  122719             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  122720             :      AstAttribute* newAttribute = new AstAttribute();
  122721             :      ROSE_ASSERT(newAttribute != NULL);
  122722             : 
  122723             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  122724             :      const_cast<SgOmpTargetTeamsDistributeParallelForStatement*>(this)->attribute.add("copied",newAttribute);
  122725             : #endif
  122726             : 
  122727             :   // Copy data members from base classes
  122728             :   // Copy constructor parameter data member: startOfConstruct_copy
  122729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  122730             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  122731           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  122732           0 :      if ( p_startOfConstruct != NULL ) 
  122733             :         { 
  122734           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  122735             :         } 
  122736             :        else 
  122737             :         { 
  122738             :           startOfConstruct_copy = NULL; 
  122739             :         } 
  122740             :   // Copy constructor parameter data member: body_copy
  122741           0 :      SgStatement* body_copy; 
  122742             :   // case: not a listType for (using conditionalToCopyVariable)body
  122743           0 :           if (get_body() != NULL) 
  122744             :              { 
  122745           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  122746             :              } 
  122747             :             else 
  122748             :              { 
  122749             :                body_copy = NULL; 
  122750             :              } 
  122751             :  
  122752             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  122753             : 
  122754             :   // Build an empty copy of this object (will be filled in, but 
  122755             :   // the parent can't be set and must be set by the caller)
  122756           0 :      result = new SgOmpTargetTeamsDistributeParallelForStatement(  startOfConstruct_copy, body_copy );
  122757           0 :      ROSE_ASSERT(result != NULL);
  122758             : 
  122759             :   // Copy data members of "this" class
  122760             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  122761             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  122762             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  122763           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  122764           0 :      if ( p_endOfConstruct != NULL ) 
  122765             :         { 
  122766           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  122767             :         } 
  122768             :        else 
  122769             :         { 
  122770             :           endOfConstruct_copy = NULL; 
  122771             :         } 
  122772             :   /* check for a valid pointer and delete if present */ 
  122773           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  122774             :   /* add assignment to result here */ 
  122775           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  122776             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  122777             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  122778             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  122779           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  122780           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  122781             :         { 
  122782           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  122783             :         } 
  122784             :        else 
  122785             :         { 
  122786             :           attachedPreprocessingInfoPtr_copy = NULL; 
  122787             :         } 
  122788             :   /* check for a valid pointer and delete if present */ 
  122789           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  122790             :   /* add assignment to result here */ 
  122791           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  122792             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  122793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  122794             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  122795           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  122796           0 :      if ( p_attributeMechanism != NULL ) 
  122797             :         { 
  122798           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  122799             :         } 
  122800             :        else 
  122801             :         { 
  122802             :           attributeMechanism_copy = NULL; 
  122803             :         } 
  122804             :   /* check for a valid pointer and delete if present */ 
  122805           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  122806             :   /* add assignment to result here */ 
  122807           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  122808             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  122809             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  122810             :   // case: toBeCopied == COPY_DATA for numeric_label
  122811           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  122812           0 :      result->p_numeric_label = numeric_label_copy; 
  122813             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  122814             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  122815             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  122816           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  122817           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  122818             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  122819             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  122820             :   // case: toBeCopied == COPY_DATA for upir_parent
  122821           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  122822           0 :      result->p_upir_parent = upir_parent_copy; 
  122823             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  122824             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  122825             :   // case: toBeCopied == COPY_DATA for upir_children
  122826           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  122827           0 :      result->p_upir_children = upir_children_copy; 
  122828             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  122829           0 :      SgOmpClausePtrList clauses_copy; 
  122830             :   // case: listType for clauses
  122831             :   // case: listType (typeIsPointerToList == false) for clauses
  122832           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  122833           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  122834             :         { 
  122835           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  122836           0 :           SgOmpClause* copy_list_element = NULL; 
  122837           0 :           if (source_list_element != NULL) 
  122838             :              { 
  122839           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  122840             :              } 
  122841             :             else 
  122842             :              { 
  122843             :                copy_list_element = NULL; 
  122844             :              } 
  122845           0 :           clauses_copy.push_back(copy_list_element); 
  122846             :         } 
  122847           0 :      result->p_clauses = clauses_copy; 
  122848             :   // case: listType for clauses
  122849             :   // case: listType (typeIsPointerToList == false) for clauses
  122850           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  122851           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  122852             :         { 
  122853           0 :           SgOmpClause* list_element = *clauses_iterator; 
  122854           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  122855             :              { 
  122856           0 :                list_element->set_parent(result); 
  122857             :              } 
  122858             :         } 
  122859             :   // case: not a listType for (using conditionalToSetParent)body
  122860           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  122861             :              { 
  122862           0 :                body_copy->set_parent(result); 
  122863             :              } 
  122864             : 
  122865             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  122866             : 
  122867             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  122868             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  122869             :   // fixupCopy(result,help);
  122870             : 
  122871             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  122872             :   // the Sg_File_Info objects that are built for the new IR nodes.
  122873           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  122874           0 :      if (locatedNode != NULL)
  122875             :         {
  122876             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  122877           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  122878           0 :           ROSE_ASSERT(start != NULL);
  122879             : #if 0
  122880             :        // Debugging information
  122881             :           if (start->get_parent() == NULL)
  122882             :              {
  122883             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122884             :              }
  122885             : #endif
  122886           0 :           start->set_parent(locatedNode);
  122887           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  122888             : 
  122889           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  122890             : 
  122891             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  122892             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  122893             :        // ROSE_ASSERT(end != NULL);
  122894           0 :           if (end == NULL)
  122895             :              {
  122896           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  122897             :              }
  122898             :             else
  122899             :              {
  122900             : #if 0
  122901             :             // Debugging information
  122902             :                if (end->get_parent() == NULL)
  122903             :                   {
  122904             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122905             :                   }
  122906             : #endif
  122907           0 :                end->set_parent(locatedNode);
  122908           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  122909             :              }
  122910             : 
  122911           0 :           SgExpression* expression = isSgExpression(result);
  122912           0 :           if (isSgExpression(this) != NULL)
  122913             :              {
  122914           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  122915             : 
  122916             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  122917           0 :                if (operatorPosition != NULL)
  122918             :                   {
  122919             : #if 0
  122920             :                  // Debugging information
  122921             :                     if (operatorPosition->get_parent() == NULL)
  122922             :                        {
  122923             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122924             :                        }
  122925             : #endif
  122926           0 :                     operatorPosition->set_parent(expression);
  122927           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  122928             :                   }
  122929             :              }
  122930             :         }
  122931             : 
  122932             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  122933           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  122934           0 :      if (initializedName != NULL)
  122935             :         {
  122936             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  122937           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  122938           0 :           ROSE_ASSERT(start != NULL);
  122939             : #if 0
  122940             :        // Debugging information
  122941             :           if (start->get_parent() == NULL)
  122942             :              {
  122943             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122944             :              }
  122945             : #endif
  122946           0 :           start->set_parent(initializedName);
  122947           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  122948             : 
  122949             : #if 0
  122950             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  122951             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  122952             : 
  122953             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  122954             :        // ROSE_ASSERT(end != NULL);
  122955             :           if (end == NULL)
  122956             :              {
  122957             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  122958             :              }
  122959             :             else
  122960             :              {
  122961             :                if (end->get_parent() == NULL)
  122962             :                   {
  122963             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  122964             :                   }
  122965             :                end->set_parent(initializedName);
  122966             :                ROSE_ASSERT(end->get_parent() != NULL);
  122967             :              }
  122968             : #endif
  122969             :         }
  122970             : 
  122971             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  122972           0 :      help.insertCopiedNodePair(this,result);
  122973             : 
  122974             :   // printf ("End of copy SgOmpTargetTeamsDistributeParallelForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  122975             : 
  122976             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  122977             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  122978           0 :      help.decrementDepth();
  122979             : 
  122980             :   // Test if this is the root of the copy!
  122981           0 :      if (help.get_depth() == 0)
  122982             :         {
  122983             :        // This is the original calling node.
  122984             : 
  122985             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  122986             :        // printf ("Calling SgOmpTargetTeamsDistributeParallelForStatement::fixupCopy() (from root of AST being copied) \n");
  122987             : #if ALT_FIXUP_COPY
  122988             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  122989           0 :           fixupCopy_scopes (result,help);
  122990           0 :           fixupCopy_symbols (result,help);
  122991           0 :           fixupCopy_references (result,help);
  122992             : #else
  122993             :           fixupCopy(result,help);
  122994             : #endif
  122995             :        // Allow this to be called recursively, so accumulate the state.
  122996             :        // Also, clear the state in the SgCopyHelp object.
  122997             :        // help.clearState();
  122998             :         }
  122999             : 
  123000           0 :      return result;
  123001             :    }
  123002             : 
  123003             : 
  123004             : /* #line 123005 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  123005             : 
  123006             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123007             : 
  123008           0 : SgNode* SgOmpTargetTeamsDistributeParallelForSimdStatement::copy ( SgCopyHelp& help) const
  123009             :    {
  123010           0 :      SgOmpTargetTeamsDistributeParallelForSimdStatement* result = NULL;
  123011             : 
  123012             :   // printf ("Copy SgOmpTargetTeamsDistributeParallelForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  123013             : 
  123014             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  123015             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  123016             :   // The default value of the depth is 0, so after this call the depth is 1!
  123017           0 :      help.incrementDepth();
  123018             : 
  123019             : #if 0
  123020             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  123021             :   // but it is not generally true that things can only be copied once!
  123022             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  123023             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetTeamsDistributeParallelForSimdStatement*>(this)->attribute["copied"];
  123024             :      bool previouslyCopied = const_cast<SgOmpTargetTeamsDistributeParallelForSimdStatement*>(this)->attribute.exists("copied");
  123025             :      if (previouslyCopied == true)
  123026             :         {
  123027             :           this->get_file_info()->display("Called from copy SgOmpTargetTeamsDistributeParallelForSimdStatement: debug");
  123028             :         }
  123029             :      ROSE_ASSERT(previouslyCopied == false);
  123030             : 
  123031             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  123032             :      AstAttribute* newAttribute = new AstAttribute();
  123033             :      ROSE_ASSERT(newAttribute != NULL);
  123034             : 
  123035             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  123036             :      const_cast<SgOmpTargetTeamsDistributeParallelForSimdStatement*>(this)->attribute.add("copied",newAttribute);
  123037             : #endif
  123038             : 
  123039             :   // Copy data members from base classes
  123040             :   // Copy constructor parameter data member: startOfConstruct_copy
  123041             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  123042             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  123043           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  123044           0 :      if ( p_startOfConstruct != NULL ) 
  123045             :         { 
  123046           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  123047             :         } 
  123048             :        else 
  123049             :         { 
  123050             :           startOfConstruct_copy = NULL; 
  123051             :         } 
  123052             :   // Copy constructor parameter data member: body_copy
  123053           0 :      SgStatement* body_copy; 
  123054             :   // case: not a listType for (using conditionalToCopyVariable)body
  123055           0 :           if (get_body() != NULL) 
  123056             :              { 
  123057           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  123058             :              } 
  123059             :             else 
  123060             :              { 
  123061             :                body_copy = NULL; 
  123062             :              } 
  123063             :  
  123064             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123065             : 
  123066             :   // Build an empty copy of this object (will be filled in, but 
  123067             :   // the parent can't be set and must be set by the caller)
  123068           0 :      result = new SgOmpTargetTeamsDistributeParallelForSimdStatement(  startOfConstruct_copy, body_copy );
  123069           0 :      ROSE_ASSERT(result != NULL);
  123070             : 
  123071             :   // Copy data members of "this" class
  123072             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  123073             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  123074             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  123075           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  123076           0 :      if ( p_endOfConstruct != NULL ) 
  123077             :         { 
  123078           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  123079             :         } 
  123080             :        else 
  123081             :         { 
  123082             :           endOfConstruct_copy = NULL; 
  123083             :         } 
  123084             :   /* check for a valid pointer and delete if present */ 
  123085           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  123086             :   /* add assignment to result here */ 
  123087           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  123088             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  123089             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  123090             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  123091           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  123092           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  123093             :         { 
  123094           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  123095             :         } 
  123096             :        else 
  123097             :         { 
  123098             :           attachedPreprocessingInfoPtr_copy = NULL; 
  123099             :         } 
  123100             :   /* check for a valid pointer and delete if present */ 
  123101           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  123102             :   /* add assignment to result here */ 
  123103           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  123104             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  123105             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  123106             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  123107           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  123108           0 :      if ( p_attributeMechanism != NULL ) 
  123109             :         { 
  123110           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  123111             :         } 
  123112             :        else 
  123113             :         { 
  123114             :           attributeMechanism_copy = NULL; 
  123115             :         } 
  123116             :   /* check for a valid pointer and delete if present */ 
  123117           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  123118             :   /* add assignment to result here */ 
  123119           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  123120             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  123121             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  123122             :   // case: toBeCopied == COPY_DATA for numeric_label
  123123           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  123124           0 :      result->p_numeric_label = numeric_label_copy; 
  123125             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  123126             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  123127             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  123128           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  123129           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  123130             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  123131             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  123132             :   // case: toBeCopied == COPY_DATA for upir_parent
  123133           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  123134           0 :      result->p_upir_parent = upir_parent_copy; 
  123135             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  123136             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  123137             :   // case: toBeCopied == COPY_DATA for upir_children
  123138           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  123139           0 :      result->p_upir_children = upir_children_copy; 
  123140             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  123141           0 :      SgOmpClausePtrList clauses_copy; 
  123142             :   // case: listType for clauses
  123143             :   // case: listType (typeIsPointerToList == false) for clauses
  123144           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  123145           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  123146             :         { 
  123147           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  123148           0 :           SgOmpClause* copy_list_element = NULL; 
  123149           0 :           if (source_list_element != NULL) 
  123150             :              { 
  123151           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  123152             :              } 
  123153             :             else 
  123154             :              { 
  123155             :                copy_list_element = NULL; 
  123156             :              } 
  123157           0 :           clauses_copy.push_back(copy_list_element); 
  123158             :         } 
  123159           0 :      result->p_clauses = clauses_copy; 
  123160             :   // case: listType for clauses
  123161             :   // case: listType (typeIsPointerToList == false) for clauses
  123162           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  123163           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  123164             :         { 
  123165           0 :           SgOmpClause* list_element = *clauses_iterator; 
  123166           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  123167             :              { 
  123168           0 :                list_element->set_parent(result); 
  123169             :              } 
  123170             :         } 
  123171             :   // case: not a listType for (using conditionalToSetParent)body
  123172           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  123173             :              { 
  123174           0 :                body_copy->set_parent(result); 
  123175             :              } 
  123176             : 
  123177             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123178             : 
  123179             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  123180             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  123181             :   // fixupCopy(result,help);
  123182             : 
  123183             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  123184             :   // the Sg_File_Info objects that are built for the new IR nodes.
  123185           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  123186           0 :      if (locatedNode != NULL)
  123187             :         {
  123188             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  123189           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  123190           0 :           ROSE_ASSERT(start != NULL);
  123191             : #if 0
  123192             :        // Debugging information
  123193             :           if (start->get_parent() == NULL)
  123194             :              {
  123195             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123196             :              }
  123197             : #endif
  123198           0 :           start->set_parent(locatedNode);
  123199           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  123200             : 
  123201           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  123202             : 
  123203             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  123204             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  123205             :        // ROSE_ASSERT(end != NULL);
  123206           0 :           if (end == NULL)
  123207             :              {
  123208           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  123209             :              }
  123210             :             else
  123211             :              {
  123212             : #if 0
  123213             :             // Debugging information
  123214             :                if (end->get_parent() == NULL)
  123215             :                   {
  123216             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123217             :                   }
  123218             : #endif
  123219           0 :                end->set_parent(locatedNode);
  123220           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  123221             :              }
  123222             : 
  123223           0 :           SgExpression* expression = isSgExpression(result);
  123224           0 :           if (isSgExpression(this) != NULL)
  123225             :              {
  123226           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  123227             : 
  123228             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  123229           0 :                if (operatorPosition != NULL)
  123230             :                   {
  123231             : #if 0
  123232             :                  // Debugging information
  123233             :                     if (operatorPosition->get_parent() == NULL)
  123234             :                        {
  123235             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123236             :                        }
  123237             : #endif
  123238           0 :                     operatorPosition->set_parent(expression);
  123239           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  123240             :                   }
  123241             :              }
  123242             :         }
  123243             : 
  123244             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  123245           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  123246           0 :      if (initializedName != NULL)
  123247             :         {
  123248             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  123249           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  123250           0 :           ROSE_ASSERT(start != NULL);
  123251             : #if 0
  123252             :        // Debugging information
  123253             :           if (start->get_parent() == NULL)
  123254             :              {
  123255             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123256             :              }
  123257             : #endif
  123258           0 :           start->set_parent(initializedName);
  123259           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  123260             : 
  123261             : #if 0
  123262             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  123263             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  123264             : 
  123265             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  123266             :        // ROSE_ASSERT(end != NULL);
  123267             :           if (end == NULL)
  123268             :              {
  123269             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  123270             :              }
  123271             :             else
  123272             :              {
  123273             :                if (end->get_parent() == NULL)
  123274             :                   {
  123275             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123276             :                   }
  123277             :                end->set_parent(initializedName);
  123278             :                ROSE_ASSERT(end->get_parent() != NULL);
  123279             :              }
  123280             : #endif
  123281             :         }
  123282             : 
  123283             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  123284           0 :      help.insertCopiedNodePair(this,result);
  123285             : 
  123286             :   // printf ("End of copy SgOmpTargetTeamsDistributeParallelForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  123287             : 
  123288             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  123289             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  123290           0 :      help.decrementDepth();
  123291             : 
  123292             :   // Test if this is the root of the copy!
  123293           0 :      if (help.get_depth() == 0)
  123294             :         {
  123295             :        // This is the original calling node.
  123296             : 
  123297             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  123298             :        // printf ("Calling SgOmpTargetTeamsDistributeParallelForSimdStatement::fixupCopy() (from root of AST being copied) \n");
  123299             : #if ALT_FIXUP_COPY
  123300             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  123301           0 :           fixupCopy_scopes (result,help);
  123302           0 :           fixupCopy_symbols (result,help);
  123303           0 :           fixupCopy_references (result,help);
  123304             : #else
  123305             :           fixupCopy(result,help);
  123306             : #endif
  123307             :        // Allow this to be called recursively, so accumulate the state.
  123308             :        // Also, clear the state in the SgCopyHelp object.
  123309             :        // help.clearState();
  123310             :         }
  123311             : 
  123312           0 :      return result;
  123313             :    }
  123314             : 
  123315             : 
  123316             : /* #line 123317 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  123317             : 
  123318             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123319             : 
  123320           0 : SgNode* SgOmpDistributeSimdStatement::copy ( SgCopyHelp& help) const
  123321             :    {
  123322           0 :      SgOmpDistributeSimdStatement* result = NULL;
  123323             : 
  123324             :   // printf ("Copy SgOmpDistributeSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  123325             : 
  123326             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  123327             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  123328             :   // The default value of the depth is 0, so after this call the depth is 1!
  123329           0 :      help.incrementDepth();
  123330             : 
  123331             : #if 0
  123332             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  123333             :   // but it is not generally true that things can only be copied once!
  123334             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  123335             :   // AstAttribute* existingAttribute = const_cast<SgOmpDistributeSimdStatement*>(this)->attribute["copied"];
  123336             :      bool previouslyCopied = const_cast<SgOmpDistributeSimdStatement*>(this)->attribute.exists("copied");
  123337             :      if (previouslyCopied == true)
  123338             :         {
  123339             :           this->get_file_info()->display("Called from copy SgOmpDistributeSimdStatement: debug");
  123340             :         }
  123341             :      ROSE_ASSERT(previouslyCopied == false);
  123342             : 
  123343             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  123344             :      AstAttribute* newAttribute = new AstAttribute();
  123345             :      ROSE_ASSERT(newAttribute != NULL);
  123346             : 
  123347             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  123348             :      const_cast<SgOmpDistributeSimdStatement*>(this)->attribute.add("copied",newAttribute);
  123349             : #endif
  123350             : 
  123351             :   // Copy data members from base classes
  123352             :   // Copy constructor parameter data member: startOfConstruct_copy
  123353             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  123354             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  123355           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  123356           0 :      if ( p_startOfConstruct != NULL ) 
  123357             :         { 
  123358           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  123359             :         } 
  123360             :        else 
  123361             :         { 
  123362             :           startOfConstruct_copy = NULL; 
  123363             :         } 
  123364             :   // Copy constructor parameter data member: body_copy
  123365           0 :      SgStatement* body_copy; 
  123366             :   // case: not a listType for (using conditionalToCopyVariable)body
  123367           0 :           if (get_body() != NULL) 
  123368             :              { 
  123369           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  123370             :              } 
  123371             :             else 
  123372             :              { 
  123373             :                body_copy = NULL; 
  123374             :              } 
  123375             :  
  123376             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123377             : 
  123378             :   // Build an empty copy of this object (will be filled in, but 
  123379             :   // the parent can't be set and must be set by the caller)
  123380           0 :      result = new SgOmpDistributeSimdStatement(  startOfConstruct_copy, body_copy );
  123381           0 :      ROSE_ASSERT(result != NULL);
  123382             : 
  123383             :   // Copy data members of "this" class
  123384             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  123385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  123386             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  123387           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  123388           0 :      if ( p_endOfConstruct != NULL ) 
  123389             :         { 
  123390           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  123391             :         } 
  123392             :        else 
  123393             :         { 
  123394             :           endOfConstruct_copy = NULL; 
  123395             :         } 
  123396             :   /* check for a valid pointer and delete if present */ 
  123397           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  123398             :   /* add assignment to result here */ 
  123399           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  123400             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  123401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  123402             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  123403           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  123404           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  123405             :         { 
  123406           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  123407             :         } 
  123408             :        else 
  123409             :         { 
  123410             :           attachedPreprocessingInfoPtr_copy = NULL; 
  123411             :         } 
  123412             :   /* check for a valid pointer and delete if present */ 
  123413           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  123414             :   /* add assignment to result here */ 
  123415           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  123416             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  123417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  123418             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  123419           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  123420           0 :      if ( p_attributeMechanism != NULL ) 
  123421             :         { 
  123422           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  123423             :         } 
  123424             :        else 
  123425             :         { 
  123426             :           attributeMechanism_copy = NULL; 
  123427             :         } 
  123428             :   /* check for a valid pointer and delete if present */ 
  123429           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  123430             :   /* add assignment to result here */ 
  123431           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  123432             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  123433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  123434             :   // case: toBeCopied == COPY_DATA for numeric_label
  123435           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  123436           0 :      result->p_numeric_label = numeric_label_copy; 
  123437             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  123438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  123439             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  123440           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  123441           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  123442             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  123443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  123444             :   // case: toBeCopied == COPY_DATA for upir_parent
  123445           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  123446           0 :      result->p_upir_parent = upir_parent_copy; 
  123447             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  123448             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  123449             :   // case: toBeCopied == COPY_DATA for upir_children
  123450           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  123451           0 :      result->p_upir_children = upir_children_copy; 
  123452             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  123453           0 :      SgOmpClausePtrList clauses_copy; 
  123454             :   // case: listType for clauses
  123455             :   // case: listType (typeIsPointerToList == false) for clauses
  123456           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  123457           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  123458             :         { 
  123459           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  123460           0 :           SgOmpClause* copy_list_element = NULL; 
  123461           0 :           if (source_list_element != NULL) 
  123462             :              { 
  123463           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  123464             :              } 
  123465             :             else 
  123466             :              { 
  123467             :                copy_list_element = NULL; 
  123468             :              } 
  123469           0 :           clauses_copy.push_back(copy_list_element); 
  123470             :         } 
  123471           0 :      result->p_clauses = clauses_copy; 
  123472             :   // case: listType for clauses
  123473             :   // case: listType (typeIsPointerToList == false) for clauses
  123474           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  123475           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  123476             :         { 
  123477           0 :           SgOmpClause* list_element = *clauses_iterator; 
  123478           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  123479             :              { 
  123480           0 :                list_element->set_parent(result); 
  123481             :              } 
  123482             :         } 
  123483             :   // case: not a listType for (using conditionalToSetParent)body
  123484           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  123485             :              { 
  123486           0 :                body_copy->set_parent(result); 
  123487             :              } 
  123488             : 
  123489             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123490             : 
  123491             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  123492             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  123493             :   // fixupCopy(result,help);
  123494             : 
  123495             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  123496             :   // the Sg_File_Info objects that are built for the new IR nodes.
  123497           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  123498           0 :      if (locatedNode != NULL)
  123499             :         {
  123500             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  123501           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  123502           0 :           ROSE_ASSERT(start != NULL);
  123503             : #if 0
  123504             :        // Debugging information
  123505             :           if (start->get_parent() == NULL)
  123506             :              {
  123507             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123508             :              }
  123509             : #endif
  123510           0 :           start->set_parent(locatedNode);
  123511           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  123512             : 
  123513           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  123514             : 
  123515             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  123516             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  123517             :        // ROSE_ASSERT(end != NULL);
  123518           0 :           if (end == NULL)
  123519             :              {
  123520           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  123521             :              }
  123522             :             else
  123523             :              {
  123524             : #if 0
  123525             :             // Debugging information
  123526             :                if (end->get_parent() == NULL)
  123527             :                   {
  123528             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123529             :                   }
  123530             : #endif
  123531           0 :                end->set_parent(locatedNode);
  123532           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  123533             :              }
  123534             : 
  123535           0 :           SgExpression* expression = isSgExpression(result);
  123536           0 :           if (isSgExpression(this) != NULL)
  123537             :              {
  123538           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  123539             : 
  123540             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  123541           0 :                if (operatorPosition != NULL)
  123542             :                   {
  123543             : #if 0
  123544             :                  // Debugging information
  123545             :                     if (operatorPosition->get_parent() == NULL)
  123546             :                        {
  123547             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123548             :                        }
  123549             : #endif
  123550           0 :                     operatorPosition->set_parent(expression);
  123551           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  123552             :                   }
  123553             :              }
  123554             :         }
  123555             : 
  123556             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  123557           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  123558           0 :      if (initializedName != NULL)
  123559             :         {
  123560             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  123561           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  123562           0 :           ROSE_ASSERT(start != NULL);
  123563             : #if 0
  123564             :        // Debugging information
  123565             :           if (start->get_parent() == NULL)
  123566             :              {
  123567             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123568             :              }
  123569             : #endif
  123570           0 :           start->set_parent(initializedName);
  123571           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  123572             : 
  123573             : #if 0
  123574             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  123575             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  123576             : 
  123577             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  123578             :        // ROSE_ASSERT(end != NULL);
  123579             :           if (end == NULL)
  123580             :              {
  123581             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  123582             :              }
  123583             :             else
  123584             :              {
  123585             :                if (end->get_parent() == NULL)
  123586             :                   {
  123587             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123588             :                   }
  123589             :                end->set_parent(initializedName);
  123590             :                ROSE_ASSERT(end->get_parent() != NULL);
  123591             :              }
  123592             : #endif
  123593             :         }
  123594             : 
  123595             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  123596           0 :      help.insertCopiedNodePair(this,result);
  123597             : 
  123598             :   // printf ("End of copy SgOmpDistributeSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  123599             : 
  123600             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  123601             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  123602           0 :      help.decrementDepth();
  123603             : 
  123604             :   // Test if this is the root of the copy!
  123605           0 :      if (help.get_depth() == 0)
  123606             :         {
  123607             :        // This is the original calling node.
  123608             : 
  123609             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  123610             :        // printf ("Calling SgOmpDistributeSimdStatement::fixupCopy() (from root of AST being copied) \n");
  123611             : #if ALT_FIXUP_COPY
  123612             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  123613           0 :           fixupCopy_scopes (result,help);
  123614           0 :           fixupCopy_symbols (result,help);
  123615           0 :           fixupCopy_references (result,help);
  123616             : #else
  123617             :           fixupCopy(result,help);
  123618             : #endif
  123619             :        // Allow this to be called recursively, so accumulate the state.
  123620             :        // Also, clear the state in the SgCopyHelp object.
  123621             :        // help.clearState();
  123622             :         }
  123623             : 
  123624           0 :      return result;
  123625             :    }
  123626             : 
  123627             : 
  123628             : /* #line 123629 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  123629             : 
  123630             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123631             : 
  123632           0 : SgNode* SgOmpDistributeParallelForStatement::copy ( SgCopyHelp& help) const
  123633             :    {
  123634           0 :      SgOmpDistributeParallelForStatement* result = NULL;
  123635             : 
  123636             :   // printf ("Copy SgOmpDistributeParallelForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  123637             : 
  123638             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  123639             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  123640             :   // The default value of the depth is 0, so after this call the depth is 1!
  123641           0 :      help.incrementDepth();
  123642             : 
  123643             : #if 0
  123644             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  123645             :   // but it is not generally true that things can only be copied once!
  123646             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  123647             :   // AstAttribute* existingAttribute = const_cast<SgOmpDistributeParallelForStatement*>(this)->attribute["copied"];
  123648             :      bool previouslyCopied = const_cast<SgOmpDistributeParallelForStatement*>(this)->attribute.exists("copied");
  123649             :      if (previouslyCopied == true)
  123650             :         {
  123651             :           this->get_file_info()->display("Called from copy SgOmpDistributeParallelForStatement: debug");
  123652             :         }
  123653             :      ROSE_ASSERT(previouslyCopied == false);
  123654             : 
  123655             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  123656             :      AstAttribute* newAttribute = new AstAttribute();
  123657             :      ROSE_ASSERT(newAttribute != NULL);
  123658             : 
  123659             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  123660             :      const_cast<SgOmpDistributeParallelForStatement*>(this)->attribute.add("copied",newAttribute);
  123661             : #endif
  123662             : 
  123663             :   // Copy data members from base classes
  123664             :   // Copy constructor parameter data member: startOfConstruct_copy
  123665             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  123666             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  123667           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  123668           0 :      if ( p_startOfConstruct != NULL ) 
  123669             :         { 
  123670           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  123671             :         } 
  123672             :        else 
  123673             :         { 
  123674             :           startOfConstruct_copy = NULL; 
  123675             :         } 
  123676             :   // Copy constructor parameter data member: body_copy
  123677           0 :      SgStatement* body_copy; 
  123678             :   // case: not a listType for (using conditionalToCopyVariable)body
  123679           0 :           if (get_body() != NULL) 
  123680             :              { 
  123681           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  123682             :              } 
  123683             :             else 
  123684             :              { 
  123685             :                body_copy = NULL; 
  123686             :              } 
  123687             :  
  123688             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123689             : 
  123690             :   // Build an empty copy of this object (will be filled in, but 
  123691             :   // the parent can't be set and must be set by the caller)
  123692           0 :      result = new SgOmpDistributeParallelForStatement(  startOfConstruct_copy, body_copy );
  123693           0 :      ROSE_ASSERT(result != NULL);
  123694             : 
  123695             :   // Copy data members of "this" class
  123696             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  123697             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  123698             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  123699           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  123700           0 :      if ( p_endOfConstruct != NULL ) 
  123701             :         { 
  123702           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  123703             :         } 
  123704             :        else 
  123705             :         { 
  123706             :           endOfConstruct_copy = NULL; 
  123707             :         } 
  123708             :   /* check for a valid pointer and delete if present */ 
  123709           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  123710             :   /* add assignment to result here */ 
  123711           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  123712             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  123713             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  123714             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  123715           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  123716           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  123717             :         { 
  123718           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  123719             :         } 
  123720             :        else 
  123721             :         { 
  123722             :           attachedPreprocessingInfoPtr_copy = NULL; 
  123723             :         } 
  123724             :   /* check for a valid pointer and delete if present */ 
  123725           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  123726             :   /* add assignment to result here */ 
  123727           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  123728             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  123729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  123730             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  123731           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  123732           0 :      if ( p_attributeMechanism != NULL ) 
  123733             :         { 
  123734           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  123735             :         } 
  123736             :        else 
  123737             :         { 
  123738             :           attributeMechanism_copy = NULL; 
  123739             :         } 
  123740             :   /* check for a valid pointer and delete if present */ 
  123741           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  123742             :   /* add assignment to result here */ 
  123743           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  123744             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  123745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  123746             :   // case: toBeCopied == COPY_DATA for numeric_label
  123747           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  123748           0 :      result->p_numeric_label = numeric_label_copy; 
  123749             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  123750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  123751             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  123752           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  123753           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  123754             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  123755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  123756             :   // case: toBeCopied == COPY_DATA for upir_parent
  123757           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  123758           0 :      result->p_upir_parent = upir_parent_copy; 
  123759             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  123760             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  123761             :   // case: toBeCopied == COPY_DATA for upir_children
  123762           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  123763           0 :      result->p_upir_children = upir_children_copy; 
  123764             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  123765           0 :      SgOmpClausePtrList clauses_copy; 
  123766             :   // case: listType for clauses
  123767             :   // case: listType (typeIsPointerToList == false) for clauses
  123768           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  123769           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  123770             :         { 
  123771           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  123772           0 :           SgOmpClause* copy_list_element = NULL; 
  123773           0 :           if (source_list_element != NULL) 
  123774             :              { 
  123775           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  123776             :              } 
  123777             :             else 
  123778             :              { 
  123779             :                copy_list_element = NULL; 
  123780             :              } 
  123781           0 :           clauses_copy.push_back(copy_list_element); 
  123782             :         } 
  123783           0 :      result->p_clauses = clauses_copy; 
  123784             :   // case: listType for clauses
  123785             :   // case: listType (typeIsPointerToList == false) for clauses
  123786           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  123787           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  123788             :         { 
  123789           0 :           SgOmpClause* list_element = *clauses_iterator; 
  123790           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  123791             :              { 
  123792           0 :                list_element->set_parent(result); 
  123793             :              } 
  123794             :         } 
  123795             :   // case: not a listType for (using conditionalToSetParent)body
  123796           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  123797             :              { 
  123798           0 :                body_copy->set_parent(result); 
  123799             :              } 
  123800             : 
  123801             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123802             : 
  123803             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  123804             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  123805             :   // fixupCopy(result,help);
  123806             : 
  123807             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  123808             :   // the Sg_File_Info objects that are built for the new IR nodes.
  123809           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  123810           0 :      if (locatedNode != NULL)
  123811             :         {
  123812             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  123813           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  123814           0 :           ROSE_ASSERT(start != NULL);
  123815             : #if 0
  123816             :        // Debugging information
  123817             :           if (start->get_parent() == NULL)
  123818             :              {
  123819             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123820             :              }
  123821             : #endif
  123822           0 :           start->set_parent(locatedNode);
  123823           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  123824             : 
  123825           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  123826             : 
  123827             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  123828             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  123829             :        // ROSE_ASSERT(end != NULL);
  123830           0 :           if (end == NULL)
  123831             :              {
  123832           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  123833             :              }
  123834             :             else
  123835             :              {
  123836             : #if 0
  123837             :             // Debugging information
  123838             :                if (end->get_parent() == NULL)
  123839             :                   {
  123840             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123841             :                   }
  123842             : #endif
  123843           0 :                end->set_parent(locatedNode);
  123844           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  123845             :              }
  123846             : 
  123847           0 :           SgExpression* expression = isSgExpression(result);
  123848           0 :           if (isSgExpression(this) != NULL)
  123849             :              {
  123850           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  123851             : 
  123852             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  123853           0 :                if (operatorPosition != NULL)
  123854             :                   {
  123855             : #if 0
  123856             :                  // Debugging information
  123857             :                     if (operatorPosition->get_parent() == NULL)
  123858             :                        {
  123859             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123860             :                        }
  123861             : #endif
  123862           0 :                     operatorPosition->set_parent(expression);
  123863           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  123864             :                   }
  123865             :              }
  123866             :         }
  123867             : 
  123868             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  123869           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  123870           0 :      if (initializedName != NULL)
  123871             :         {
  123872             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  123873           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  123874           0 :           ROSE_ASSERT(start != NULL);
  123875             : #if 0
  123876             :        // Debugging information
  123877             :           if (start->get_parent() == NULL)
  123878             :              {
  123879             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123880             :              }
  123881             : #endif
  123882           0 :           start->set_parent(initializedName);
  123883           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  123884             : 
  123885             : #if 0
  123886             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  123887             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  123888             : 
  123889             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  123890             :        // ROSE_ASSERT(end != NULL);
  123891             :           if (end == NULL)
  123892             :              {
  123893             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  123894             :              }
  123895             :             else
  123896             :              {
  123897             :                if (end->get_parent() == NULL)
  123898             :                   {
  123899             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  123900             :                   }
  123901             :                end->set_parent(initializedName);
  123902             :                ROSE_ASSERT(end->get_parent() != NULL);
  123903             :              }
  123904             : #endif
  123905             :         }
  123906             : 
  123907             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  123908           0 :      help.insertCopiedNodePair(this,result);
  123909             : 
  123910             :   // printf ("End of copy SgOmpDistributeParallelForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  123911             : 
  123912             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  123913             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  123914           0 :      help.decrementDepth();
  123915             : 
  123916             :   // Test if this is the root of the copy!
  123917           0 :      if (help.get_depth() == 0)
  123918             :         {
  123919             :        // This is the original calling node.
  123920             : 
  123921             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  123922             :        // printf ("Calling SgOmpDistributeParallelForStatement::fixupCopy() (from root of AST being copied) \n");
  123923             : #if ALT_FIXUP_COPY
  123924             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  123925           0 :           fixupCopy_scopes (result,help);
  123926           0 :           fixupCopy_symbols (result,help);
  123927           0 :           fixupCopy_references (result,help);
  123928             : #else
  123929             :           fixupCopy(result,help);
  123930             : #endif
  123931             :        // Allow this to be called recursively, so accumulate the state.
  123932             :        // Also, clear the state in the SgCopyHelp object.
  123933             :        // help.clearState();
  123934             :         }
  123935             : 
  123936           0 :      return result;
  123937             :    }
  123938             : 
  123939             : 
  123940             : /* #line 123941 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  123941             : 
  123942             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  123943             : 
  123944           0 : SgNode* SgOmpDistributeParallelForSimdStatement::copy ( SgCopyHelp& help) const
  123945             :    {
  123946           0 :      SgOmpDistributeParallelForSimdStatement* result = NULL;
  123947             : 
  123948             :   // printf ("Copy SgOmpDistributeParallelForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  123949             : 
  123950             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  123951             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  123952             :   // The default value of the depth is 0, so after this call the depth is 1!
  123953           0 :      help.incrementDepth();
  123954             : 
  123955             : #if 0
  123956             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  123957             :   // but it is not generally true that things can only be copied once!
  123958             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  123959             :   // AstAttribute* existingAttribute = const_cast<SgOmpDistributeParallelForSimdStatement*>(this)->attribute["copied"];
  123960             :      bool previouslyCopied = const_cast<SgOmpDistributeParallelForSimdStatement*>(this)->attribute.exists("copied");
  123961             :      if (previouslyCopied == true)
  123962             :         {
  123963             :           this->get_file_info()->display("Called from copy SgOmpDistributeParallelForSimdStatement: debug");
  123964             :         }
  123965             :      ROSE_ASSERT(previouslyCopied == false);
  123966             : 
  123967             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  123968             :      AstAttribute* newAttribute = new AstAttribute();
  123969             :      ROSE_ASSERT(newAttribute != NULL);
  123970             : 
  123971             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  123972             :      const_cast<SgOmpDistributeParallelForSimdStatement*>(this)->attribute.add("copied",newAttribute);
  123973             : #endif
  123974             : 
  123975             :   // Copy data members from base classes
  123976             :   // Copy constructor parameter data member: startOfConstruct_copy
  123977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  123978             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  123979           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  123980           0 :      if ( p_startOfConstruct != NULL ) 
  123981             :         { 
  123982           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  123983             :         } 
  123984             :        else 
  123985             :         { 
  123986             :           startOfConstruct_copy = NULL; 
  123987             :         } 
  123988             :   // Copy constructor parameter data member: body_copy
  123989           0 :      SgStatement* body_copy; 
  123990             :   // case: not a listType for (using conditionalToCopyVariable)body
  123991           0 :           if (get_body() != NULL) 
  123992             :              { 
  123993           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  123994             :              } 
  123995             :             else 
  123996             :              { 
  123997             :                body_copy = NULL; 
  123998             :              } 
  123999             :  
  124000             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124001             : 
  124002             :   // Build an empty copy of this object (will be filled in, but 
  124003             :   // the parent can't be set and must be set by the caller)
  124004           0 :      result = new SgOmpDistributeParallelForSimdStatement(  startOfConstruct_copy, body_copy );
  124005           0 :      ROSE_ASSERT(result != NULL);
  124006             : 
  124007             :   // Copy data members of "this" class
  124008             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  124009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  124010             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  124011           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  124012           0 :      if ( p_endOfConstruct != NULL ) 
  124013             :         { 
  124014           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  124015             :         } 
  124016             :        else 
  124017             :         { 
  124018             :           endOfConstruct_copy = NULL; 
  124019             :         } 
  124020             :   /* check for a valid pointer and delete if present */ 
  124021           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  124022             :   /* add assignment to result here */ 
  124023           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  124024             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  124025             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  124026             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  124027           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  124028           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  124029             :         { 
  124030           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  124031             :         } 
  124032             :        else 
  124033             :         { 
  124034             :           attachedPreprocessingInfoPtr_copy = NULL; 
  124035             :         } 
  124036             :   /* check for a valid pointer and delete if present */ 
  124037           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  124038             :   /* add assignment to result here */ 
  124039           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  124040             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  124041             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  124042             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  124043           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  124044           0 :      if ( p_attributeMechanism != NULL ) 
  124045             :         { 
  124046           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  124047             :         } 
  124048             :        else 
  124049             :         { 
  124050             :           attributeMechanism_copy = NULL; 
  124051             :         } 
  124052             :   /* check for a valid pointer and delete if present */ 
  124053           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  124054             :   /* add assignment to result here */ 
  124055           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  124056             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  124057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  124058             :   // case: toBeCopied == COPY_DATA for numeric_label
  124059           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  124060           0 :      result->p_numeric_label = numeric_label_copy; 
  124061             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  124062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  124063             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  124064           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  124065           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  124066             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  124067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  124068             :   // case: toBeCopied == COPY_DATA for upir_parent
  124069           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  124070           0 :      result->p_upir_parent = upir_parent_copy; 
  124071             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  124072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  124073             :   // case: toBeCopied == COPY_DATA for upir_children
  124074           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  124075           0 :      result->p_upir_children = upir_children_copy; 
  124076             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  124077           0 :      SgOmpClausePtrList clauses_copy; 
  124078             :   // case: listType for clauses
  124079             :   // case: listType (typeIsPointerToList == false) for clauses
  124080           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  124081           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  124082             :         { 
  124083           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  124084           0 :           SgOmpClause* copy_list_element = NULL; 
  124085           0 :           if (source_list_element != NULL) 
  124086             :              { 
  124087           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  124088             :              } 
  124089             :             else 
  124090             :              { 
  124091             :                copy_list_element = NULL; 
  124092             :              } 
  124093           0 :           clauses_copy.push_back(copy_list_element); 
  124094             :         } 
  124095           0 :      result->p_clauses = clauses_copy; 
  124096             :   // case: listType for clauses
  124097             :   // case: listType (typeIsPointerToList == false) for clauses
  124098           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  124099           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  124100             :         { 
  124101           0 :           SgOmpClause* list_element = *clauses_iterator; 
  124102           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  124103             :              { 
  124104           0 :                list_element->set_parent(result); 
  124105             :              } 
  124106             :         } 
  124107             :   // case: not a listType for (using conditionalToSetParent)body
  124108           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  124109             :              { 
  124110           0 :                body_copy->set_parent(result); 
  124111             :              } 
  124112             : 
  124113             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124114             : 
  124115             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  124116             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  124117             :   // fixupCopy(result,help);
  124118             : 
  124119             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  124120             :   // the Sg_File_Info objects that are built for the new IR nodes.
  124121           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  124122           0 :      if (locatedNode != NULL)
  124123             :         {
  124124             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  124125           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  124126           0 :           ROSE_ASSERT(start != NULL);
  124127             : #if 0
  124128             :        // Debugging information
  124129             :           if (start->get_parent() == NULL)
  124130             :              {
  124131             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124132             :              }
  124133             : #endif
  124134           0 :           start->set_parent(locatedNode);
  124135           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  124136             : 
  124137           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  124138             : 
  124139             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  124140             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  124141             :        // ROSE_ASSERT(end != NULL);
  124142           0 :           if (end == NULL)
  124143             :              {
  124144           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  124145             :              }
  124146             :             else
  124147             :              {
  124148             : #if 0
  124149             :             // Debugging information
  124150             :                if (end->get_parent() == NULL)
  124151             :                   {
  124152             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124153             :                   }
  124154             : #endif
  124155           0 :                end->set_parent(locatedNode);
  124156           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  124157             :              }
  124158             : 
  124159           0 :           SgExpression* expression = isSgExpression(result);
  124160           0 :           if (isSgExpression(this) != NULL)
  124161             :              {
  124162           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  124163             : 
  124164             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  124165           0 :                if (operatorPosition != NULL)
  124166             :                   {
  124167             : #if 0
  124168             :                  // Debugging information
  124169             :                     if (operatorPosition->get_parent() == NULL)
  124170             :                        {
  124171             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124172             :                        }
  124173             : #endif
  124174           0 :                     operatorPosition->set_parent(expression);
  124175           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  124176             :                   }
  124177             :              }
  124178             :         }
  124179             : 
  124180             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  124181           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  124182           0 :      if (initializedName != NULL)
  124183             :         {
  124184             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  124185           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  124186           0 :           ROSE_ASSERT(start != NULL);
  124187             : #if 0
  124188             :        // Debugging information
  124189             :           if (start->get_parent() == NULL)
  124190             :              {
  124191             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124192             :              }
  124193             : #endif
  124194           0 :           start->set_parent(initializedName);
  124195           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  124196             : 
  124197             : #if 0
  124198             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  124199             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  124200             : 
  124201             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  124202             :        // ROSE_ASSERT(end != NULL);
  124203             :           if (end == NULL)
  124204             :              {
  124205             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  124206             :              }
  124207             :             else
  124208             :              {
  124209             :                if (end->get_parent() == NULL)
  124210             :                   {
  124211             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124212             :                   }
  124213             :                end->set_parent(initializedName);
  124214             :                ROSE_ASSERT(end->get_parent() != NULL);
  124215             :              }
  124216             : #endif
  124217             :         }
  124218             : 
  124219             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  124220           0 :      help.insertCopiedNodePair(this,result);
  124221             : 
  124222             :   // printf ("End of copy SgOmpDistributeParallelForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  124223             : 
  124224             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  124225             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  124226           0 :      help.decrementDepth();
  124227             : 
  124228             :   // Test if this is the root of the copy!
  124229           0 :      if (help.get_depth() == 0)
  124230             :         {
  124231             :        // This is the original calling node.
  124232             : 
  124233             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  124234             :        // printf ("Calling SgOmpDistributeParallelForSimdStatement::fixupCopy() (from root of AST being copied) \n");
  124235             : #if ALT_FIXUP_COPY
  124236             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  124237           0 :           fixupCopy_scopes (result,help);
  124238           0 :           fixupCopy_symbols (result,help);
  124239           0 :           fixupCopy_references (result,help);
  124240             : #else
  124241             :           fixupCopy(result,help);
  124242             : #endif
  124243             :        // Allow this to be called recursively, so accumulate the state.
  124244             :        // Also, clear the state in the SgCopyHelp object.
  124245             :        // help.clearState();
  124246             :         }
  124247             : 
  124248           0 :      return result;
  124249             :    }
  124250             : 
  124251             : 
  124252             : /* #line 124253 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  124253             : 
  124254             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124255             : 
  124256           0 : SgNode* SgOmpTaskloopSimdStatement::copy ( SgCopyHelp& help) const
  124257             :    {
  124258           0 :      SgOmpTaskloopSimdStatement* result = NULL;
  124259             : 
  124260             :   // printf ("Copy SgOmpTaskloopSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  124261             : 
  124262             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  124263             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  124264             :   // The default value of the depth is 0, so after this call the depth is 1!
  124265           0 :      help.incrementDepth();
  124266             : 
  124267             : #if 0
  124268             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  124269             :   // but it is not generally true that things can only be copied once!
  124270             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  124271             :   // AstAttribute* existingAttribute = const_cast<SgOmpTaskloopSimdStatement*>(this)->attribute["copied"];
  124272             :      bool previouslyCopied = const_cast<SgOmpTaskloopSimdStatement*>(this)->attribute.exists("copied");
  124273             :      if (previouslyCopied == true)
  124274             :         {
  124275             :           this->get_file_info()->display("Called from copy SgOmpTaskloopSimdStatement: debug");
  124276             :         }
  124277             :      ROSE_ASSERT(previouslyCopied == false);
  124278             : 
  124279             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  124280             :      AstAttribute* newAttribute = new AstAttribute();
  124281             :      ROSE_ASSERT(newAttribute != NULL);
  124282             : 
  124283             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  124284             :      const_cast<SgOmpTaskloopSimdStatement*>(this)->attribute.add("copied",newAttribute);
  124285             : #endif
  124286             : 
  124287             :   // Copy data members from base classes
  124288             :   // Copy constructor parameter data member: startOfConstruct_copy
  124289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  124290             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  124291           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  124292           0 :      if ( p_startOfConstruct != NULL ) 
  124293             :         { 
  124294           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  124295             :         } 
  124296             :        else 
  124297             :         { 
  124298             :           startOfConstruct_copy = NULL; 
  124299             :         } 
  124300             :   // Copy constructor parameter data member: body_copy
  124301           0 :      SgStatement* body_copy; 
  124302             :   // case: not a listType for (using conditionalToCopyVariable)body
  124303           0 :           if (get_body() != NULL) 
  124304             :              { 
  124305           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  124306             :              } 
  124307             :             else 
  124308             :              { 
  124309             :                body_copy = NULL; 
  124310             :              } 
  124311             :  
  124312             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124313             : 
  124314             :   // Build an empty copy of this object (will be filled in, but 
  124315             :   // the parent can't be set and must be set by the caller)
  124316           0 :      result = new SgOmpTaskloopSimdStatement(  startOfConstruct_copy, body_copy );
  124317           0 :      ROSE_ASSERT(result != NULL);
  124318             : 
  124319             :   // Copy data members of "this" class
  124320             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  124321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  124322             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  124323           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  124324           0 :      if ( p_endOfConstruct != NULL ) 
  124325             :         { 
  124326           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  124327             :         } 
  124328             :        else 
  124329             :         { 
  124330             :           endOfConstruct_copy = NULL; 
  124331             :         } 
  124332             :   /* check for a valid pointer and delete if present */ 
  124333           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  124334             :   /* add assignment to result here */ 
  124335           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  124336             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  124337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  124338             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  124339           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  124340           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  124341             :         { 
  124342           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  124343             :         } 
  124344             :        else 
  124345             :         { 
  124346             :           attachedPreprocessingInfoPtr_copy = NULL; 
  124347             :         } 
  124348             :   /* check for a valid pointer and delete if present */ 
  124349           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  124350             :   /* add assignment to result here */ 
  124351           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  124352             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  124353             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  124354             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  124355           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  124356           0 :      if ( p_attributeMechanism != NULL ) 
  124357             :         { 
  124358           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  124359             :         } 
  124360             :        else 
  124361             :         { 
  124362             :           attributeMechanism_copy = NULL; 
  124363             :         } 
  124364             :   /* check for a valid pointer and delete if present */ 
  124365           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  124366             :   /* add assignment to result here */ 
  124367           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  124368             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  124369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  124370             :   // case: toBeCopied == COPY_DATA for numeric_label
  124371           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  124372           0 :      result->p_numeric_label = numeric_label_copy; 
  124373             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  124374             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  124375             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  124376           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  124377           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  124378             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  124379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  124380             :   // case: toBeCopied == COPY_DATA for upir_parent
  124381           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  124382           0 :      result->p_upir_parent = upir_parent_copy; 
  124383             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  124384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  124385             :   // case: toBeCopied == COPY_DATA for upir_children
  124386           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  124387           0 :      result->p_upir_children = upir_children_copy; 
  124388             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  124389           0 :      SgOmpClausePtrList clauses_copy; 
  124390             :   // case: listType for clauses
  124391             :   // case: listType (typeIsPointerToList == false) for clauses
  124392           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  124393           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  124394             :         { 
  124395           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  124396           0 :           SgOmpClause* copy_list_element = NULL; 
  124397           0 :           if (source_list_element != NULL) 
  124398             :              { 
  124399           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  124400             :              } 
  124401             :             else 
  124402             :              { 
  124403             :                copy_list_element = NULL; 
  124404             :              } 
  124405           0 :           clauses_copy.push_back(copy_list_element); 
  124406             :         } 
  124407           0 :      result->p_clauses = clauses_copy; 
  124408             :   // case: listType for clauses
  124409             :   // case: listType (typeIsPointerToList == false) for clauses
  124410           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  124411           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  124412             :         { 
  124413           0 :           SgOmpClause* list_element = *clauses_iterator; 
  124414           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  124415             :              { 
  124416           0 :                list_element->set_parent(result); 
  124417             :              } 
  124418             :         } 
  124419             :   // case: not a listType for (using conditionalToSetParent)body
  124420           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  124421             :              { 
  124422           0 :                body_copy->set_parent(result); 
  124423             :              } 
  124424             : 
  124425             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124426             : 
  124427             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  124428             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  124429             :   // fixupCopy(result,help);
  124430             : 
  124431             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  124432             :   // the Sg_File_Info objects that are built for the new IR nodes.
  124433           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  124434           0 :      if (locatedNode != NULL)
  124435             :         {
  124436             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  124437           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  124438           0 :           ROSE_ASSERT(start != NULL);
  124439             : #if 0
  124440             :        // Debugging information
  124441             :           if (start->get_parent() == NULL)
  124442             :              {
  124443             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124444             :              }
  124445             : #endif
  124446           0 :           start->set_parent(locatedNode);
  124447           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  124448             : 
  124449           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  124450             : 
  124451             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  124452             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  124453             :        // ROSE_ASSERT(end != NULL);
  124454           0 :           if (end == NULL)
  124455             :              {
  124456           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  124457             :              }
  124458             :             else
  124459             :              {
  124460             : #if 0
  124461             :             // Debugging information
  124462             :                if (end->get_parent() == NULL)
  124463             :                   {
  124464             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124465             :                   }
  124466             : #endif
  124467           0 :                end->set_parent(locatedNode);
  124468           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  124469             :              }
  124470             : 
  124471           0 :           SgExpression* expression = isSgExpression(result);
  124472           0 :           if (isSgExpression(this) != NULL)
  124473             :              {
  124474           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  124475             : 
  124476             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  124477           0 :                if (operatorPosition != NULL)
  124478             :                   {
  124479             : #if 0
  124480             :                  // Debugging information
  124481             :                     if (operatorPosition->get_parent() == NULL)
  124482             :                        {
  124483             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124484             :                        }
  124485             : #endif
  124486           0 :                     operatorPosition->set_parent(expression);
  124487           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  124488             :                   }
  124489             :              }
  124490             :         }
  124491             : 
  124492             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  124493           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  124494           0 :      if (initializedName != NULL)
  124495             :         {
  124496             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  124497           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  124498           0 :           ROSE_ASSERT(start != NULL);
  124499             : #if 0
  124500             :        // Debugging information
  124501             :           if (start->get_parent() == NULL)
  124502             :              {
  124503             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124504             :              }
  124505             : #endif
  124506           0 :           start->set_parent(initializedName);
  124507           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  124508             : 
  124509             : #if 0
  124510             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  124511             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  124512             : 
  124513             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  124514             :        // ROSE_ASSERT(end != NULL);
  124515             :           if (end == NULL)
  124516             :              {
  124517             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  124518             :              }
  124519             :             else
  124520             :              {
  124521             :                if (end->get_parent() == NULL)
  124522             :                   {
  124523             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124524             :                   }
  124525             :                end->set_parent(initializedName);
  124526             :                ROSE_ASSERT(end->get_parent() != NULL);
  124527             :              }
  124528             : #endif
  124529             :         }
  124530             : 
  124531             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  124532           0 :      help.insertCopiedNodePair(this,result);
  124533             : 
  124534             :   // printf ("End of copy SgOmpTaskloopSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  124535             : 
  124536             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  124537             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  124538           0 :      help.decrementDepth();
  124539             : 
  124540             :   // Test if this is the root of the copy!
  124541           0 :      if (help.get_depth() == 0)
  124542             :         {
  124543             :        // This is the original calling node.
  124544             : 
  124545             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  124546             :        // printf ("Calling SgOmpTaskloopSimdStatement::fixupCopy() (from root of AST being copied) \n");
  124547             : #if ALT_FIXUP_COPY
  124548             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  124549           0 :           fixupCopy_scopes (result,help);
  124550           0 :           fixupCopy_symbols (result,help);
  124551           0 :           fixupCopy_references (result,help);
  124552             : #else
  124553             :           fixupCopy(result,help);
  124554             : #endif
  124555             :        // Allow this to be called recursively, so accumulate the state.
  124556             :        // Also, clear the state in the SgCopyHelp object.
  124557             :        // help.clearState();
  124558             :         }
  124559             : 
  124560           0 :      return result;
  124561             :    }
  124562             : 
  124563             : 
  124564             : /* #line 124565 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  124565             : 
  124566             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124567             : 
  124568           0 : SgNode* SgOmpMasterTaskloopSimdStatement::copy ( SgCopyHelp& help) const
  124569             :    {
  124570           0 :      SgOmpMasterTaskloopSimdStatement* result = NULL;
  124571             : 
  124572             :   // printf ("Copy SgOmpMasterTaskloopSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  124573             : 
  124574             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  124575             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  124576             :   // The default value of the depth is 0, so after this call the depth is 1!
  124577           0 :      help.incrementDepth();
  124578             : 
  124579             : #if 0
  124580             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  124581             :   // but it is not generally true that things can only be copied once!
  124582             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  124583             :   // AstAttribute* existingAttribute = const_cast<SgOmpMasterTaskloopSimdStatement*>(this)->attribute["copied"];
  124584             :      bool previouslyCopied = const_cast<SgOmpMasterTaskloopSimdStatement*>(this)->attribute.exists("copied");
  124585             :      if (previouslyCopied == true)
  124586             :         {
  124587             :           this->get_file_info()->display("Called from copy SgOmpMasterTaskloopSimdStatement: debug");
  124588             :         }
  124589             :      ROSE_ASSERT(previouslyCopied == false);
  124590             : 
  124591             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  124592             :      AstAttribute* newAttribute = new AstAttribute();
  124593             :      ROSE_ASSERT(newAttribute != NULL);
  124594             : 
  124595             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  124596             :      const_cast<SgOmpMasterTaskloopSimdStatement*>(this)->attribute.add("copied",newAttribute);
  124597             : #endif
  124598             : 
  124599             :   // Copy data members from base classes
  124600             :   // Copy constructor parameter data member: startOfConstruct_copy
  124601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  124602             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  124603           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  124604           0 :      if ( p_startOfConstruct != NULL ) 
  124605             :         { 
  124606           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  124607             :         } 
  124608             :        else 
  124609             :         { 
  124610             :           startOfConstruct_copy = NULL; 
  124611             :         } 
  124612             :   // Copy constructor parameter data member: body_copy
  124613           0 :      SgStatement* body_copy; 
  124614             :   // case: not a listType for (using conditionalToCopyVariable)body
  124615           0 :           if (get_body() != NULL) 
  124616             :              { 
  124617           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  124618             :              } 
  124619             :             else 
  124620             :              { 
  124621             :                body_copy = NULL; 
  124622             :              } 
  124623             :  
  124624             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124625             : 
  124626             :   // Build an empty copy of this object (will be filled in, but 
  124627             :   // the parent can't be set and must be set by the caller)
  124628           0 :      result = new SgOmpMasterTaskloopSimdStatement(  startOfConstruct_copy, body_copy );
  124629           0 :      ROSE_ASSERT(result != NULL);
  124630             : 
  124631             :   // Copy data members of "this" class
  124632             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  124633             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  124634             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  124635           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  124636           0 :      if ( p_endOfConstruct != NULL ) 
  124637             :         { 
  124638           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  124639             :         } 
  124640             :        else 
  124641             :         { 
  124642             :           endOfConstruct_copy = NULL; 
  124643             :         } 
  124644             :   /* check for a valid pointer and delete if present */ 
  124645           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  124646             :   /* add assignment to result here */ 
  124647           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  124648             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  124649             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  124650             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  124651           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  124652           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  124653             :         { 
  124654           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  124655             :         } 
  124656             :        else 
  124657             :         { 
  124658             :           attachedPreprocessingInfoPtr_copy = NULL; 
  124659             :         } 
  124660             :   /* check for a valid pointer and delete if present */ 
  124661           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  124662             :   /* add assignment to result here */ 
  124663           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  124664             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  124665             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  124666             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  124667           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  124668           0 :      if ( p_attributeMechanism != NULL ) 
  124669             :         { 
  124670           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  124671             :         } 
  124672             :        else 
  124673             :         { 
  124674             :           attributeMechanism_copy = NULL; 
  124675             :         } 
  124676             :   /* check for a valid pointer and delete if present */ 
  124677           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  124678             :   /* add assignment to result here */ 
  124679           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  124680             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  124681             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  124682             :   // case: toBeCopied == COPY_DATA for numeric_label
  124683           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  124684           0 :      result->p_numeric_label = numeric_label_copy; 
  124685             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  124686             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  124687             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  124688           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  124689           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  124690             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  124691             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  124692             :   // case: toBeCopied == COPY_DATA for upir_parent
  124693           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  124694           0 :      result->p_upir_parent = upir_parent_copy; 
  124695             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  124696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  124697             :   // case: toBeCopied == COPY_DATA for upir_children
  124698           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  124699           0 :      result->p_upir_children = upir_children_copy; 
  124700             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  124701           0 :      SgOmpClausePtrList clauses_copy; 
  124702             :   // case: listType for clauses
  124703             :   // case: listType (typeIsPointerToList == false) for clauses
  124704           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  124705           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  124706             :         { 
  124707           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  124708           0 :           SgOmpClause* copy_list_element = NULL; 
  124709           0 :           if (source_list_element != NULL) 
  124710             :              { 
  124711           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  124712             :              } 
  124713             :             else 
  124714             :              { 
  124715             :                copy_list_element = NULL; 
  124716             :              } 
  124717           0 :           clauses_copy.push_back(copy_list_element); 
  124718             :         } 
  124719           0 :      result->p_clauses = clauses_copy; 
  124720             :   // case: listType for clauses
  124721             :   // case: listType (typeIsPointerToList == false) for clauses
  124722           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  124723           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  124724             :         { 
  124725           0 :           SgOmpClause* list_element = *clauses_iterator; 
  124726           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  124727             :              { 
  124728           0 :                list_element->set_parent(result); 
  124729             :              } 
  124730             :         } 
  124731             :   // case: not a listType for (using conditionalToSetParent)body
  124732           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  124733             :              { 
  124734           0 :                body_copy->set_parent(result); 
  124735             :              } 
  124736             : 
  124737             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124738             : 
  124739             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  124740             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  124741             :   // fixupCopy(result,help);
  124742             : 
  124743             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  124744             :   // the Sg_File_Info objects that are built for the new IR nodes.
  124745           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  124746           0 :      if (locatedNode != NULL)
  124747             :         {
  124748             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  124749           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  124750           0 :           ROSE_ASSERT(start != NULL);
  124751             : #if 0
  124752             :        // Debugging information
  124753             :           if (start->get_parent() == NULL)
  124754             :              {
  124755             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124756             :              }
  124757             : #endif
  124758           0 :           start->set_parent(locatedNode);
  124759           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  124760             : 
  124761           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  124762             : 
  124763             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  124764             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  124765             :        // ROSE_ASSERT(end != NULL);
  124766           0 :           if (end == NULL)
  124767             :              {
  124768           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  124769             :              }
  124770             :             else
  124771             :              {
  124772             : #if 0
  124773             :             // Debugging information
  124774             :                if (end->get_parent() == NULL)
  124775             :                   {
  124776             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124777             :                   }
  124778             : #endif
  124779           0 :                end->set_parent(locatedNode);
  124780           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  124781             :              }
  124782             : 
  124783           0 :           SgExpression* expression = isSgExpression(result);
  124784           0 :           if (isSgExpression(this) != NULL)
  124785             :              {
  124786           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  124787             : 
  124788             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  124789           0 :                if (operatorPosition != NULL)
  124790             :                   {
  124791             : #if 0
  124792             :                  // Debugging information
  124793             :                     if (operatorPosition->get_parent() == NULL)
  124794             :                        {
  124795             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124796             :                        }
  124797             : #endif
  124798           0 :                     operatorPosition->set_parent(expression);
  124799           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  124800             :                   }
  124801             :              }
  124802             :         }
  124803             : 
  124804             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  124805           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  124806           0 :      if (initializedName != NULL)
  124807             :         {
  124808             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  124809           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  124810           0 :           ROSE_ASSERT(start != NULL);
  124811             : #if 0
  124812             :        // Debugging information
  124813             :           if (start->get_parent() == NULL)
  124814             :              {
  124815             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124816             :              }
  124817             : #endif
  124818           0 :           start->set_parent(initializedName);
  124819           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  124820             : 
  124821             : #if 0
  124822             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  124823             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  124824             : 
  124825             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  124826             :        // ROSE_ASSERT(end != NULL);
  124827             :           if (end == NULL)
  124828             :              {
  124829             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  124830             :              }
  124831             :             else
  124832             :              {
  124833             :                if (end->get_parent() == NULL)
  124834             :                   {
  124835             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  124836             :                   }
  124837             :                end->set_parent(initializedName);
  124838             :                ROSE_ASSERT(end->get_parent() != NULL);
  124839             :              }
  124840             : #endif
  124841             :         }
  124842             : 
  124843             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  124844           0 :      help.insertCopiedNodePair(this,result);
  124845             : 
  124846             :   // printf ("End of copy SgOmpMasterTaskloopSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  124847             : 
  124848             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  124849             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  124850           0 :      help.decrementDepth();
  124851             : 
  124852             :   // Test if this is the root of the copy!
  124853           0 :      if (help.get_depth() == 0)
  124854             :         {
  124855             :        // This is the original calling node.
  124856             : 
  124857             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  124858             :        // printf ("Calling SgOmpMasterTaskloopSimdStatement::fixupCopy() (from root of AST being copied) \n");
  124859             : #if ALT_FIXUP_COPY
  124860             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  124861           0 :           fixupCopy_scopes (result,help);
  124862           0 :           fixupCopy_symbols (result,help);
  124863           0 :           fixupCopy_references (result,help);
  124864             : #else
  124865             :           fixupCopy(result,help);
  124866             : #endif
  124867             :        // Allow this to be called recursively, so accumulate the state.
  124868             :        // Also, clear the state in the SgCopyHelp object.
  124869             :        // help.clearState();
  124870             :         }
  124871             : 
  124872           0 :      return result;
  124873             :    }
  124874             : 
  124875             : 
  124876             : /* #line 124877 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  124877             : 
  124878             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124879             : 
  124880           0 : SgNode* SgOmpParallelMasterTaskloopStatement::copy ( SgCopyHelp& help) const
  124881             :    {
  124882           0 :      SgOmpParallelMasterTaskloopStatement* result = NULL;
  124883             : 
  124884             :   // printf ("Copy SgOmpParallelMasterTaskloopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  124885             : 
  124886             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  124887             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  124888             :   // The default value of the depth is 0, so after this call the depth is 1!
  124889           0 :      help.incrementDepth();
  124890             : 
  124891             : #if 0
  124892             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  124893             :   // but it is not generally true that things can only be copied once!
  124894             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  124895             :   // AstAttribute* existingAttribute = const_cast<SgOmpParallelMasterTaskloopStatement*>(this)->attribute["copied"];
  124896             :      bool previouslyCopied = const_cast<SgOmpParallelMasterTaskloopStatement*>(this)->attribute.exists("copied");
  124897             :      if (previouslyCopied == true)
  124898             :         {
  124899             :           this->get_file_info()->display("Called from copy SgOmpParallelMasterTaskloopStatement: debug");
  124900             :         }
  124901             :      ROSE_ASSERT(previouslyCopied == false);
  124902             : 
  124903             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  124904             :      AstAttribute* newAttribute = new AstAttribute();
  124905             :      ROSE_ASSERT(newAttribute != NULL);
  124906             : 
  124907             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  124908             :      const_cast<SgOmpParallelMasterTaskloopStatement*>(this)->attribute.add("copied",newAttribute);
  124909             : #endif
  124910             : 
  124911             :   // Copy data members from base classes
  124912             :   // Copy constructor parameter data member: startOfConstruct_copy
  124913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  124914             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  124915           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  124916           0 :      if ( p_startOfConstruct != NULL ) 
  124917             :         { 
  124918           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  124919             :         } 
  124920             :        else 
  124921             :         { 
  124922             :           startOfConstruct_copy = NULL; 
  124923             :         } 
  124924             :   // Copy constructor parameter data member: body_copy
  124925           0 :      SgStatement* body_copy; 
  124926             :   // case: not a listType for (using conditionalToCopyVariable)body
  124927           0 :           if (get_body() != NULL) 
  124928             :              { 
  124929           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  124930             :              } 
  124931             :             else 
  124932             :              { 
  124933             :                body_copy = NULL; 
  124934             :              } 
  124935             :  
  124936             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  124937             : 
  124938             :   // Build an empty copy of this object (will be filled in, but 
  124939             :   // the parent can't be set and must be set by the caller)
  124940           0 :      result = new SgOmpParallelMasterTaskloopStatement(  startOfConstruct_copy, body_copy );
  124941           0 :      ROSE_ASSERT(result != NULL);
  124942             : 
  124943             :   // Copy data members of "this" class
  124944             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  124945             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  124946             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  124947           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  124948           0 :      if ( p_endOfConstruct != NULL ) 
  124949             :         { 
  124950           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  124951             :         } 
  124952             :        else 
  124953             :         { 
  124954             :           endOfConstruct_copy = NULL; 
  124955             :         } 
  124956             :   /* check for a valid pointer and delete if present */ 
  124957           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  124958             :   /* add assignment to result here */ 
  124959           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  124960             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  124961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  124962             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  124963           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  124964           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  124965             :         { 
  124966           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  124967             :         } 
  124968             :        else 
  124969             :         { 
  124970             :           attachedPreprocessingInfoPtr_copy = NULL; 
  124971             :         } 
  124972             :   /* check for a valid pointer and delete if present */ 
  124973           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  124974             :   /* add assignment to result here */ 
  124975           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  124976             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  124977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  124978             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  124979           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  124980           0 :      if ( p_attributeMechanism != NULL ) 
  124981             :         { 
  124982           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  124983             :         } 
  124984             :        else 
  124985             :         { 
  124986             :           attributeMechanism_copy = NULL; 
  124987             :         } 
  124988             :   /* check for a valid pointer and delete if present */ 
  124989           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  124990             :   /* add assignment to result here */ 
  124991           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  124992             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  124993             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  124994             :   // case: toBeCopied == COPY_DATA for numeric_label
  124995           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  124996           0 :      result->p_numeric_label = numeric_label_copy; 
  124997             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  124998             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  124999             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  125000           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  125001           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  125002             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  125003             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  125004             :   // case: toBeCopied == COPY_DATA for upir_parent
  125005           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  125006           0 :      result->p_upir_parent = upir_parent_copy; 
  125007             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  125008             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  125009             :   // case: toBeCopied == COPY_DATA for upir_children
  125010           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  125011           0 :      result->p_upir_children = upir_children_copy; 
  125012             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  125013           0 :      SgOmpClausePtrList clauses_copy; 
  125014             :   // case: listType for clauses
  125015             :   // case: listType (typeIsPointerToList == false) for clauses
  125016           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  125017           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  125018             :         { 
  125019           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  125020           0 :           SgOmpClause* copy_list_element = NULL; 
  125021           0 :           if (source_list_element != NULL) 
  125022             :              { 
  125023           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  125024             :              } 
  125025             :             else 
  125026             :              { 
  125027             :                copy_list_element = NULL; 
  125028             :              } 
  125029           0 :           clauses_copy.push_back(copy_list_element); 
  125030             :         } 
  125031           0 :      result->p_clauses = clauses_copy; 
  125032             :   // case: listType for clauses
  125033             :   // case: listType (typeIsPointerToList == false) for clauses
  125034           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  125035           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  125036             :         { 
  125037           0 :           SgOmpClause* list_element = *clauses_iterator; 
  125038           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  125039             :              { 
  125040           0 :                list_element->set_parent(result); 
  125041             :              } 
  125042             :         } 
  125043             :   // case: not a listType for (using conditionalToSetParent)body
  125044           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  125045             :              { 
  125046           0 :                body_copy->set_parent(result); 
  125047             :              } 
  125048             : 
  125049             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125050             : 
  125051             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  125052             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  125053             :   // fixupCopy(result,help);
  125054             : 
  125055             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  125056             :   // the Sg_File_Info objects that are built for the new IR nodes.
  125057           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  125058           0 :      if (locatedNode != NULL)
  125059             :         {
  125060             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  125061           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  125062           0 :           ROSE_ASSERT(start != NULL);
  125063             : #if 0
  125064             :        // Debugging information
  125065             :           if (start->get_parent() == NULL)
  125066             :              {
  125067             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125068             :              }
  125069             : #endif
  125070           0 :           start->set_parent(locatedNode);
  125071           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  125072             : 
  125073           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  125074             : 
  125075             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  125076             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  125077             :        // ROSE_ASSERT(end != NULL);
  125078           0 :           if (end == NULL)
  125079             :              {
  125080           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  125081             :              }
  125082             :             else
  125083             :              {
  125084             : #if 0
  125085             :             // Debugging information
  125086             :                if (end->get_parent() == NULL)
  125087             :                   {
  125088             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125089             :                   }
  125090             : #endif
  125091           0 :                end->set_parent(locatedNode);
  125092           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  125093             :              }
  125094             : 
  125095           0 :           SgExpression* expression = isSgExpression(result);
  125096           0 :           if (isSgExpression(this) != NULL)
  125097             :              {
  125098           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  125099             : 
  125100             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  125101           0 :                if (operatorPosition != NULL)
  125102             :                   {
  125103             : #if 0
  125104             :                  // Debugging information
  125105             :                     if (operatorPosition->get_parent() == NULL)
  125106             :                        {
  125107             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125108             :                        }
  125109             : #endif
  125110           0 :                     operatorPosition->set_parent(expression);
  125111           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  125112             :                   }
  125113             :              }
  125114             :         }
  125115             : 
  125116             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  125117           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  125118           0 :      if (initializedName != NULL)
  125119             :         {
  125120             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  125121           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  125122           0 :           ROSE_ASSERT(start != NULL);
  125123             : #if 0
  125124             :        // Debugging information
  125125             :           if (start->get_parent() == NULL)
  125126             :              {
  125127             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125128             :              }
  125129             : #endif
  125130           0 :           start->set_parent(initializedName);
  125131           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  125132             : 
  125133             : #if 0
  125134             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  125135             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  125136             : 
  125137             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  125138             :        // ROSE_ASSERT(end != NULL);
  125139             :           if (end == NULL)
  125140             :              {
  125141             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  125142             :              }
  125143             :             else
  125144             :              {
  125145             :                if (end->get_parent() == NULL)
  125146             :                   {
  125147             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125148             :                   }
  125149             :                end->set_parent(initializedName);
  125150             :                ROSE_ASSERT(end->get_parent() != NULL);
  125151             :              }
  125152             : #endif
  125153             :         }
  125154             : 
  125155             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  125156           0 :      help.insertCopiedNodePair(this,result);
  125157             : 
  125158             :   // printf ("End of copy SgOmpParallelMasterTaskloopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  125159             : 
  125160             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  125161             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  125162           0 :      help.decrementDepth();
  125163             : 
  125164             :   // Test if this is the root of the copy!
  125165           0 :      if (help.get_depth() == 0)
  125166             :         {
  125167             :        // This is the original calling node.
  125168             : 
  125169             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  125170             :        // printf ("Calling SgOmpParallelMasterTaskloopStatement::fixupCopy() (from root of AST being copied) \n");
  125171             : #if ALT_FIXUP_COPY
  125172             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  125173           0 :           fixupCopy_scopes (result,help);
  125174           0 :           fixupCopy_symbols (result,help);
  125175           0 :           fixupCopy_references (result,help);
  125176             : #else
  125177             :           fixupCopy(result,help);
  125178             : #endif
  125179             :        // Allow this to be called recursively, so accumulate the state.
  125180             :        // Also, clear the state in the SgCopyHelp object.
  125181             :        // help.clearState();
  125182             :         }
  125183             : 
  125184           0 :      return result;
  125185             :    }
  125186             : 
  125187             : 
  125188             : /* #line 125189 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  125189             : 
  125190             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125191             : 
  125192           0 : SgNode* SgOmpParallelMasterTaskloopSimdStatement::copy ( SgCopyHelp& help) const
  125193             :    {
  125194           0 :      SgOmpParallelMasterTaskloopSimdStatement* result = NULL;
  125195             : 
  125196             :   // printf ("Copy SgOmpParallelMasterTaskloopSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  125197             : 
  125198             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  125199             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  125200             :   // The default value of the depth is 0, so after this call the depth is 1!
  125201           0 :      help.incrementDepth();
  125202             : 
  125203             : #if 0
  125204             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  125205             :   // but it is not generally true that things can only be copied once!
  125206             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  125207             :   // AstAttribute* existingAttribute = const_cast<SgOmpParallelMasterTaskloopSimdStatement*>(this)->attribute["copied"];
  125208             :      bool previouslyCopied = const_cast<SgOmpParallelMasterTaskloopSimdStatement*>(this)->attribute.exists("copied");
  125209             :      if (previouslyCopied == true)
  125210             :         {
  125211             :           this->get_file_info()->display("Called from copy SgOmpParallelMasterTaskloopSimdStatement: debug");
  125212             :         }
  125213             :      ROSE_ASSERT(previouslyCopied == false);
  125214             : 
  125215             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  125216             :      AstAttribute* newAttribute = new AstAttribute();
  125217             :      ROSE_ASSERT(newAttribute != NULL);
  125218             : 
  125219             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  125220             :      const_cast<SgOmpParallelMasterTaskloopSimdStatement*>(this)->attribute.add("copied",newAttribute);
  125221             : #endif
  125222             : 
  125223             :   // Copy data members from base classes
  125224             :   // Copy constructor parameter data member: startOfConstruct_copy
  125225             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  125226             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  125227           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  125228           0 :      if ( p_startOfConstruct != NULL ) 
  125229             :         { 
  125230           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  125231             :         } 
  125232             :        else 
  125233             :         { 
  125234             :           startOfConstruct_copy = NULL; 
  125235             :         } 
  125236             :   // Copy constructor parameter data member: body_copy
  125237           0 :      SgStatement* body_copy; 
  125238             :   // case: not a listType for (using conditionalToCopyVariable)body
  125239           0 :           if (get_body() != NULL) 
  125240             :              { 
  125241           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  125242             :              } 
  125243             :             else 
  125244             :              { 
  125245             :                body_copy = NULL; 
  125246             :              } 
  125247             :  
  125248             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125249             : 
  125250             :   // Build an empty copy of this object (will be filled in, but 
  125251             :   // the parent can't be set and must be set by the caller)
  125252           0 :      result = new SgOmpParallelMasterTaskloopSimdStatement(  startOfConstruct_copy, body_copy );
  125253           0 :      ROSE_ASSERT(result != NULL);
  125254             : 
  125255             :   // Copy data members of "this" class
  125256             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  125257             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  125258             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  125259           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  125260           0 :      if ( p_endOfConstruct != NULL ) 
  125261             :         { 
  125262           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  125263             :         } 
  125264             :        else 
  125265             :         { 
  125266             :           endOfConstruct_copy = NULL; 
  125267             :         } 
  125268             :   /* check for a valid pointer and delete if present */ 
  125269           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  125270             :   /* add assignment to result here */ 
  125271           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  125272             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  125273             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  125274             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  125275           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  125276           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  125277             :         { 
  125278           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  125279             :         } 
  125280             :        else 
  125281             :         { 
  125282             :           attachedPreprocessingInfoPtr_copy = NULL; 
  125283             :         } 
  125284             :   /* check for a valid pointer and delete if present */ 
  125285           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  125286             :   /* add assignment to result here */ 
  125287           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  125288             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  125289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  125290             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  125291           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  125292           0 :      if ( p_attributeMechanism != NULL ) 
  125293             :         { 
  125294           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  125295             :         } 
  125296             :        else 
  125297             :         { 
  125298             :           attributeMechanism_copy = NULL; 
  125299             :         } 
  125300             :   /* check for a valid pointer and delete if present */ 
  125301           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  125302             :   /* add assignment to result here */ 
  125303           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  125304             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  125305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  125306             :   // case: toBeCopied == COPY_DATA for numeric_label
  125307           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  125308           0 :      result->p_numeric_label = numeric_label_copy; 
  125309             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  125310             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  125311             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  125312           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  125313           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  125314             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  125315             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  125316             :   // case: toBeCopied == COPY_DATA for upir_parent
  125317           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  125318           0 :      result->p_upir_parent = upir_parent_copy; 
  125319             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  125320             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  125321             :   // case: toBeCopied == COPY_DATA for upir_children
  125322           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  125323           0 :      result->p_upir_children = upir_children_copy; 
  125324             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  125325           0 :      SgOmpClausePtrList clauses_copy; 
  125326             :   // case: listType for clauses
  125327             :   // case: listType (typeIsPointerToList == false) for clauses
  125328           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  125329           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  125330             :         { 
  125331           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  125332           0 :           SgOmpClause* copy_list_element = NULL; 
  125333           0 :           if (source_list_element != NULL) 
  125334             :              { 
  125335           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  125336             :              } 
  125337             :             else 
  125338             :              { 
  125339             :                copy_list_element = NULL; 
  125340             :              } 
  125341           0 :           clauses_copy.push_back(copy_list_element); 
  125342             :         } 
  125343           0 :      result->p_clauses = clauses_copy; 
  125344             :   // case: listType for clauses
  125345             :   // case: listType (typeIsPointerToList == false) for clauses
  125346           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  125347           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  125348             :         { 
  125349           0 :           SgOmpClause* list_element = *clauses_iterator; 
  125350           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  125351             :              { 
  125352           0 :                list_element->set_parent(result); 
  125353             :              } 
  125354             :         } 
  125355             :   // case: not a listType for (using conditionalToSetParent)body
  125356           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  125357             :              { 
  125358           0 :                body_copy->set_parent(result); 
  125359             :              } 
  125360             : 
  125361             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125362             : 
  125363             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  125364             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  125365             :   // fixupCopy(result,help);
  125366             : 
  125367             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  125368             :   // the Sg_File_Info objects that are built for the new IR nodes.
  125369           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  125370           0 :      if (locatedNode != NULL)
  125371             :         {
  125372             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  125373           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  125374           0 :           ROSE_ASSERT(start != NULL);
  125375             : #if 0
  125376             :        // Debugging information
  125377             :           if (start->get_parent() == NULL)
  125378             :              {
  125379             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125380             :              }
  125381             : #endif
  125382           0 :           start->set_parent(locatedNode);
  125383           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  125384             : 
  125385           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  125386             : 
  125387             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  125388             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  125389             :        // ROSE_ASSERT(end != NULL);
  125390           0 :           if (end == NULL)
  125391             :              {
  125392           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  125393             :              }
  125394             :             else
  125395             :              {
  125396             : #if 0
  125397             :             // Debugging information
  125398             :                if (end->get_parent() == NULL)
  125399             :                   {
  125400             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125401             :                   }
  125402             : #endif
  125403           0 :                end->set_parent(locatedNode);
  125404           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  125405             :              }
  125406             : 
  125407           0 :           SgExpression* expression = isSgExpression(result);
  125408           0 :           if (isSgExpression(this) != NULL)
  125409             :              {
  125410           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  125411             : 
  125412             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  125413           0 :                if (operatorPosition != NULL)
  125414             :                   {
  125415             : #if 0
  125416             :                  // Debugging information
  125417             :                     if (operatorPosition->get_parent() == NULL)
  125418             :                        {
  125419             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125420             :                        }
  125421             : #endif
  125422           0 :                     operatorPosition->set_parent(expression);
  125423           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  125424             :                   }
  125425             :              }
  125426             :         }
  125427             : 
  125428             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  125429           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  125430           0 :      if (initializedName != NULL)
  125431             :         {
  125432             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  125433           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  125434           0 :           ROSE_ASSERT(start != NULL);
  125435             : #if 0
  125436             :        // Debugging information
  125437             :           if (start->get_parent() == NULL)
  125438             :              {
  125439             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125440             :              }
  125441             : #endif
  125442           0 :           start->set_parent(initializedName);
  125443           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  125444             : 
  125445             : #if 0
  125446             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  125447             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  125448             : 
  125449             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  125450             :        // ROSE_ASSERT(end != NULL);
  125451             :           if (end == NULL)
  125452             :              {
  125453             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  125454             :              }
  125455             :             else
  125456             :              {
  125457             :                if (end->get_parent() == NULL)
  125458             :                   {
  125459             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125460             :                   }
  125461             :                end->set_parent(initializedName);
  125462             :                ROSE_ASSERT(end->get_parent() != NULL);
  125463             :              }
  125464             : #endif
  125465             :         }
  125466             : 
  125467             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  125468           0 :      help.insertCopiedNodePair(this,result);
  125469             : 
  125470             :   // printf ("End of copy SgOmpParallelMasterTaskloopSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  125471             : 
  125472             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  125473             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  125474           0 :      help.decrementDepth();
  125475             : 
  125476             :   // Test if this is the root of the copy!
  125477           0 :      if (help.get_depth() == 0)
  125478             :         {
  125479             :        // This is the original calling node.
  125480             : 
  125481             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  125482             :        // printf ("Calling SgOmpParallelMasterTaskloopSimdStatement::fixupCopy() (from root of AST being copied) \n");
  125483             : #if ALT_FIXUP_COPY
  125484             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  125485           0 :           fixupCopy_scopes (result,help);
  125486           0 :           fixupCopy_symbols (result,help);
  125487           0 :           fixupCopy_references (result,help);
  125488             : #else
  125489             :           fixupCopy(result,help);
  125490             : #endif
  125491             :        // Allow this to be called recursively, so accumulate the state.
  125492             :        // Also, clear the state in the SgCopyHelp object.
  125493             :        // help.clearState();
  125494             :         }
  125495             : 
  125496           0 :      return result;
  125497             :    }
  125498             : 
  125499             : 
  125500             : /* #line 125501 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  125501             : 
  125502             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125503             : 
  125504           0 : SgNode* SgOmpTeamsDistributeStatement::copy ( SgCopyHelp& help) const
  125505             :    {
  125506           0 :      SgOmpTeamsDistributeStatement* result = NULL;
  125507             : 
  125508             :   // printf ("Copy SgOmpTeamsDistributeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  125509             : 
  125510             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  125511             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  125512             :   // The default value of the depth is 0, so after this call the depth is 1!
  125513           0 :      help.incrementDepth();
  125514             : 
  125515             : #if 0
  125516             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  125517             :   // but it is not generally true that things can only be copied once!
  125518             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  125519             :   // AstAttribute* existingAttribute = const_cast<SgOmpTeamsDistributeStatement*>(this)->attribute["copied"];
  125520             :      bool previouslyCopied = const_cast<SgOmpTeamsDistributeStatement*>(this)->attribute.exists("copied");
  125521             :      if (previouslyCopied == true)
  125522             :         {
  125523             :           this->get_file_info()->display("Called from copy SgOmpTeamsDistributeStatement: debug");
  125524             :         }
  125525             :      ROSE_ASSERT(previouslyCopied == false);
  125526             : 
  125527             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  125528             :      AstAttribute* newAttribute = new AstAttribute();
  125529             :      ROSE_ASSERT(newAttribute != NULL);
  125530             : 
  125531             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  125532             :      const_cast<SgOmpTeamsDistributeStatement*>(this)->attribute.add("copied",newAttribute);
  125533             : #endif
  125534             : 
  125535             :   // Copy data members from base classes
  125536             :   // Copy constructor parameter data member: startOfConstruct_copy
  125537             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  125538             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  125539           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  125540           0 :      if ( p_startOfConstruct != NULL ) 
  125541             :         { 
  125542           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  125543             :         } 
  125544             :        else 
  125545             :         { 
  125546             :           startOfConstruct_copy = NULL; 
  125547             :         } 
  125548             :   // Copy constructor parameter data member: body_copy
  125549           0 :      SgStatement* body_copy; 
  125550             :   // case: not a listType for (using conditionalToCopyVariable)body
  125551           0 :           if (get_body() != NULL) 
  125552             :              { 
  125553           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  125554             :              } 
  125555             :             else 
  125556             :              { 
  125557             :                body_copy = NULL; 
  125558             :              } 
  125559             :  
  125560             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125561             : 
  125562             :   // Build an empty copy of this object (will be filled in, but 
  125563             :   // the parent can't be set and must be set by the caller)
  125564           0 :      result = new SgOmpTeamsDistributeStatement(  startOfConstruct_copy, body_copy );
  125565           0 :      ROSE_ASSERT(result != NULL);
  125566             : 
  125567             :   // Copy data members of "this" class
  125568             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  125569             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  125570             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  125571           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  125572           0 :      if ( p_endOfConstruct != NULL ) 
  125573             :         { 
  125574           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  125575             :         } 
  125576             :        else 
  125577             :         { 
  125578             :           endOfConstruct_copy = NULL; 
  125579             :         } 
  125580             :   /* check for a valid pointer and delete if present */ 
  125581           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  125582             :   /* add assignment to result here */ 
  125583           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  125584             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  125585             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  125586             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  125587           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  125588           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  125589             :         { 
  125590           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  125591             :         } 
  125592             :        else 
  125593             :         { 
  125594             :           attachedPreprocessingInfoPtr_copy = NULL; 
  125595             :         } 
  125596             :   /* check for a valid pointer and delete if present */ 
  125597           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  125598             :   /* add assignment to result here */ 
  125599           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  125600             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  125601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  125602             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  125603           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  125604           0 :      if ( p_attributeMechanism != NULL ) 
  125605             :         { 
  125606           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  125607             :         } 
  125608             :        else 
  125609             :         { 
  125610             :           attributeMechanism_copy = NULL; 
  125611             :         } 
  125612             :   /* check for a valid pointer and delete if present */ 
  125613           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  125614             :   /* add assignment to result here */ 
  125615           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  125616             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  125617             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  125618             :   // case: toBeCopied == COPY_DATA for numeric_label
  125619           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  125620           0 :      result->p_numeric_label = numeric_label_copy; 
  125621             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  125622             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  125623             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  125624           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  125625           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  125626             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  125627             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  125628             :   // case: toBeCopied == COPY_DATA for upir_parent
  125629           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  125630           0 :      result->p_upir_parent = upir_parent_copy; 
  125631             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  125632             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  125633             :   // case: toBeCopied == COPY_DATA for upir_children
  125634           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  125635           0 :      result->p_upir_children = upir_children_copy; 
  125636             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  125637           0 :      SgOmpClausePtrList clauses_copy; 
  125638             :   // case: listType for clauses
  125639             :   // case: listType (typeIsPointerToList == false) for clauses
  125640           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  125641           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  125642             :         { 
  125643           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  125644           0 :           SgOmpClause* copy_list_element = NULL; 
  125645           0 :           if (source_list_element != NULL) 
  125646             :              { 
  125647           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  125648             :              } 
  125649             :             else 
  125650             :              { 
  125651             :                copy_list_element = NULL; 
  125652             :              } 
  125653           0 :           clauses_copy.push_back(copy_list_element); 
  125654             :         } 
  125655           0 :      result->p_clauses = clauses_copy; 
  125656             :   // case: listType for clauses
  125657             :   // case: listType (typeIsPointerToList == false) for clauses
  125658           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  125659           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  125660             :         { 
  125661           0 :           SgOmpClause* list_element = *clauses_iterator; 
  125662           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  125663             :              { 
  125664           0 :                list_element->set_parent(result); 
  125665             :              } 
  125666             :         } 
  125667             :   // case: not a listType for (using conditionalToSetParent)body
  125668           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  125669             :              { 
  125670           0 :                body_copy->set_parent(result); 
  125671             :              } 
  125672             : 
  125673             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125674             : 
  125675             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  125676             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  125677             :   // fixupCopy(result,help);
  125678             : 
  125679             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  125680             :   // the Sg_File_Info objects that are built for the new IR nodes.
  125681           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  125682           0 :      if (locatedNode != NULL)
  125683             :         {
  125684             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  125685           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  125686           0 :           ROSE_ASSERT(start != NULL);
  125687             : #if 0
  125688             :        // Debugging information
  125689             :           if (start->get_parent() == NULL)
  125690             :              {
  125691             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125692             :              }
  125693             : #endif
  125694           0 :           start->set_parent(locatedNode);
  125695           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  125696             : 
  125697           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  125698             : 
  125699             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  125700             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  125701             :        // ROSE_ASSERT(end != NULL);
  125702           0 :           if (end == NULL)
  125703             :              {
  125704           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  125705             :              }
  125706             :             else
  125707             :              {
  125708             : #if 0
  125709             :             // Debugging information
  125710             :                if (end->get_parent() == NULL)
  125711             :                   {
  125712             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125713             :                   }
  125714             : #endif
  125715           0 :                end->set_parent(locatedNode);
  125716           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  125717             :              }
  125718             : 
  125719           0 :           SgExpression* expression = isSgExpression(result);
  125720           0 :           if (isSgExpression(this) != NULL)
  125721             :              {
  125722           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  125723             : 
  125724             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  125725           0 :                if (operatorPosition != NULL)
  125726             :                   {
  125727             : #if 0
  125728             :                  // Debugging information
  125729             :                     if (operatorPosition->get_parent() == NULL)
  125730             :                        {
  125731             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125732             :                        }
  125733             : #endif
  125734           0 :                     operatorPosition->set_parent(expression);
  125735           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  125736             :                   }
  125737             :              }
  125738             :         }
  125739             : 
  125740             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  125741           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  125742           0 :      if (initializedName != NULL)
  125743             :         {
  125744             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  125745           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  125746           0 :           ROSE_ASSERT(start != NULL);
  125747             : #if 0
  125748             :        // Debugging information
  125749             :           if (start->get_parent() == NULL)
  125750             :              {
  125751             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125752             :              }
  125753             : #endif
  125754           0 :           start->set_parent(initializedName);
  125755           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  125756             : 
  125757             : #if 0
  125758             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  125759             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  125760             : 
  125761             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  125762             :        // ROSE_ASSERT(end != NULL);
  125763             :           if (end == NULL)
  125764             :              {
  125765             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  125766             :              }
  125767             :             else
  125768             :              {
  125769             :                if (end->get_parent() == NULL)
  125770             :                   {
  125771             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  125772             :                   }
  125773             :                end->set_parent(initializedName);
  125774             :                ROSE_ASSERT(end->get_parent() != NULL);
  125775             :              }
  125776             : #endif
  125777             :         }
  125778             : 
  125779             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  125780           0 :      help.insertCopiedNodePair(this,result);
  125781             : 
  125782             :   // printf ("End of copy SgOmpTeamsDistributeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  125783             : 
  125784             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  125785             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  125786           0 :      help.decrementDepth();
  125787             : 
  125788             :   // Test if this is the root of the copy!
  125789           0 :      if (help.get_depth() == 0)
  125790             :         {
  125791             :        // This is the original calling node.
  125792             : 
  125793             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  125794             :        // printf ("Calling SgOmpTeamsDistributeStatement::fixupCopy() (from root of AST being copied) \n");
  125795             : #if ALT_FIXUP_COPY
  125796             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  125797           0 :           fixupCopy_scopes (result,help);
  125798           0 :           fixupCopy_symbols (result,help);
  125799           0 :           fixupCopy_references (result,help);
  125800             : #else
  125801             :           fixupCopy(result,help);
  125802             : #endif
  125803             :        // Allow this to be called recursively, so accumulate the state.
  125804             :        // Also, clear the state in the SgCopyHelp object.
  125805             :        // help.clearState();
  125806             :         }
  125807             : 
  125808           0 :      return result;
  125809             :    }
  125810             : 
  125811             : 
  125812             : /* #line 125813 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  125813             : 
  125814             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125815             : 
  125816           0 : SgNode* SgOmpTeamsDistributeSimdStatement::copy ( SgCopyHelp& help) const
  125817             :    {
  125818           0 :      SgOmpTeamsDistributeSimdStatement* result = NULL;
  125819             : 
  125820             :   // printf ("Copy SgOmpTeamsDistributeSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  125821             : 
  125822             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  125823             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  125824             :   // The default value of the depth is 0, so after this call the depth is 1!
  125825           0 :      help.incrementDepth();
  125826             : 
  125827             : #if 0
  125828             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  125829             :   // but it is not generally true that things can only be copied once!
  125830             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  125831             :   // AstAttribute* existingAttribute = const_cast<SgOmpTeamsDistributeSimdStatement*>(this)->attribute["copied"];
  125832             :      bool previouslyCopied = const_cast<SgOmpTeamsDistributeSimdStatement*>(this)->attribute.exists("copied");
  125833             :      if (previouslyCopied == true)
  125834             :         {
  125835             :           this->get_file_info()->display("Called from copy SgOmpTeamsDistributeSimdStatement: debug");
  125836             :         }
  125837             :      ROSE_ASSERT(previouslyCopied == false);
  125838             : 
  125839             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  125840             :      AstAttribute* newAttribute = new AstAttribute();
  125841             :      ROSE_ASSERT(newAttribute != NULL);
  125842             : 
  125843             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  125844             :      const_cast<SgOmpTeamsDistributeSimdStatement*>(this)->attribute.add("copied",newAttribute);
  125845             : #endif
  125846             : 
  125847             :   // Copy data members from base classes
  125848             :   // Copy constructor parameter data member: startOfConstruct_copy
  125849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  125850             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  125851           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  125852           0 :      if ( p_startOfConstruct != NULL ) 
  125853             :         { 
  125854           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  125855             :         } 
  125856             :        else 
  125857             :         { 
  125858             :           startOfConstruct_copy = NULL; 
  125859             :         } 
  125860             :   // Copy constructor parameter data member: body_copy
  125861           0 :      SgStatement* body_copy; 
  125862             :   // case: not a listType for (using conditionalToCopyVariable)body
  125863           0 :           if (get_body() != NULL) 
  125864             :              { 
  125865           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  125866             :              } 
  125867             :             else 
  125868             :              { 
  125869             :                body_copy = NULL; 
  125870             :              } 
  125871             :  
  125872             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125873             : 
  125874             :   // Build an empty copy of this object (will be filled in, but 
  125875             :   // the parent can't be set and must be set by the caller)
  125876           0 :      result = new SgOmpTeamsDistributeSimdStatement(  startOfConstruct_copy, body_copy );
  125877           0 :      ROSE_ASSERT(result != NULL);
  125878             : 
  125879             :   // Copy data members of "this" class
  125880             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  125881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  125882             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  125883           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  125884           0 :      if ( p_endOfConstruct != NULL ) 
  125885             :         { 
  125886           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  125887             :         } 
  125888             :        else 
  125889             :         { 
  125890             :           endOfConstruct_copy = NULL; 
  125891             :         } 
  125892             :   /* check for a valid pointer and delete if present */ 
  125893           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  125894             :   /* add assignment to result here */ 
  125895           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  125896             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  125897             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  125898             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  125899           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  125900           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  125901             :         { 
  125902           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  125903             :         } 
  125904             :        else 
  125905             :         { 
  125906             :           attachedPreprocessingInfoPtr_copy = NULL; 
  125907             :         } 
  125908             :   /* check for a valid pointer and delete if present */ 
  125909           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  125910             :   /* add assignment to result here */ 
  125911           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  125912             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  125913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  125914             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  125915           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  125916           0 :      if ( p_attributeMechanism != NULL ) 
  125917             :         { 
  125918           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  125919             :         } 
  125920             :        else 
  125921             :         { 
  125922             :           attributeMechanism_copy = NULL; 
  125923             :         } 
  125924             :   /* check for a valid pointer and delete if present */ 
  125925           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  125926             :   /* add assignment to result here */ 
  125927           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  125928             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  125929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  125930             :   // case: toBeCopied == COPY_DATA for numeric_label
  125931           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  125932           0 :      result->p_numeric_label = numeric_label_copy; 
  125933             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  125934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  125935             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  125936           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  125937           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  125938             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  125939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  125940             :   // case: toBeCopied == COPY_DATA for upir_parent
  125941           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  125942           0 :      result->p_upir_parent = upir_parent_copy; 
  125943             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  125944             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  125945             :   // case: toBeCopied == COPY_DATA for upir_children
  125946           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  125947           0 :      result->p_upir_children = upir_children_copy; 
  125948             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  125949           0 :      SgOmpClausePtrList clauses_copy; 
  125950             :   // case: listType for clauses
  125951             :   // case: listType (typeIsPointerToList == false) for clauses
  125952           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  125953           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  125954             :         { 
  125955           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  125956           0 :           SgOmpClause* copy_list_element = NULL; 
  125957           0 :           if (source_list_element != NULL) 
  125958             :              { 
  125959           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  125960             :              } 
  125961             :             else 
  125962             :              { 
  125963             :                copy_list_element = NULL; 
  125964             :              } 
  125965           0 :           clauses_copy.push_back(copy_list_element); 
  125966             :         } 
  125967           0 :      result->p_clauses = clauses_copy; 
  125968             :   // case: listType for clauses
  125969             :   // case: listType (typeIsPointerToList == false) for clauses
  125970           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  125971           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  125972             :         { 
  125973           0 :           SgOmpClause* list_element = *clauses_iterator; 
  125974           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  125975             :              { 
  125976           0 :                list_element->set_parent(result); 
  125977             :              } 
  125978             :         } 
  125979             :   // case: not a listType for (using conditionalToSetParent)body
  125980           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  125981             :              { 
  125982           0 :                body_copy->set_parent(result); 
  125983             :              } 
  125984             : 
  125985             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  125986             : 
  125987             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  125988             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  125989             :   // fixupCopy(result,help);
  125990             : 
  125991             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  125992             :   // the Sg_File_Info objects that are built for the new IR nodes.
  125993           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  125994           0 :      if (locatedNode != NULL)
  125995             :         {
  125996             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  125997           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  125998           0 :           ROSE_ASSERT(start != NULL);
  125999             : #if 0
  126000             :        // Debugging information
  126001             :           if (start->get_parent() == NULL)
  126002             :              {
  126003             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126004             :              }
  126005             : #endif
  126006           0 :           start->set_parent(locatedNode);
  126007           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  126008             : 
  126009           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  126010             : 
  126011             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  126012             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  126013             :        // ROSE_ASSERT(end != NULL);
  126014           0 :           if (end == NULL)
  126015             :              {
  126016           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  126017             :              }
  126018             :             else
  126019             :              {
  126020             : #if 0
  126021             :             // Debugging information
  126022             :                if (end->get_parent() == NULL)
  126023             :                   {
  126024             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126025             :                   }
  126026             : #endif
  126027           0 :                end->set_parent(locatedNode);
  126028           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  126029             :              }
  126030             : 
  126031           0 :           SgExpression* expression = isSgExpression(result);
  126032           0 :           if (isSgExpression(this) != NULL)
  126033             :              {
  126034           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  126035             : 
  126036             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  126037           0 :                if (operatorPosition != NULL)
  126038             :                   {
  126039             : #if 0
  126040             :                  // Debugging information
  126041             :                     if (operatorPosition->get_parent() == NULL)
  126042             :                        {
  126043             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126044             :                        }
  126045             : #endif
  126046           0 :                     operatorPosition->set_parent(expression);
  126047           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  126048             :                   }
  126049             :              }
  126050             :         }
  126051             : 
  126052             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  126053           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  126054           0 :      if (initializedName != NULL)
  126055             :         {
  126056             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  126057           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  126058           0 :           ROSE_ASSERT(start != NULL);
  126059             : #if 0
  126060             :        // Debugging information
  126061             :           if (start->get_parent() == NULL)
  126062             :              {
  126063             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126064             :              }
  126065             : #endif
  126066           0 :           start->set_parent(initializedName);
  126067           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  126068             : 
  126069             : #if 0
  126070             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  126071             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  126072             : 
  126073             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  126074             :        // ROSE_ASSERT(end != NULL);
  126075             :           if (end == NULL)
  126076             :              {
  126077             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  126078             :              }
  126079             :             else
  126080             :              {
  126081             :                if (end->get_parent() == NULL)
  126082             :                   {
  126083             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126084             :                   }
  126085             :                end->set_parent(initializedName);
  126086             :                ROSE_ASSERT(end->get_parent() != NULL);
  126087             :              }
  126088             : #endif
  126089             :         }
  126090             : 
  126091             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  126092           0 :      help.insertCopiedNodePair(this,result);
  126093             : 
  126094             :   // printf ("End of copy SgOmpTeamsDistributeSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  126095             : 
  126096             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  126097             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  126098           0 :      help.decrementDepth();
  126099             : 
  126100             :   // Test if this is the root of the copy!
  126101           0 :      if (help.get_depth() == 0)
  126102             :         {
  126103             :        // This is the original calling node.
  126104             : 
  126105             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  126106             :        // printf ("Calling SgOmpTeamsDistributeSimdStatement::fixupCopy() (from root of AST being copied) \n");
  126107             : #if ALT_FIXUP_COPY
  126108             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  126109           0 :           fixupCopy_scopes (result,help);
  126110           0 :           fixupCopy_symbols (result,help);
  126111           0 :           fixupCopy_references (result,help);
  126112             : #else
  126113             :           fixupCopy(result,help);
  126114             : #endif
  126115             :        // Allow this to be called recursively, so accumulate the state.
  126116             :        // Also, clear the state in the SgCopyHelp object.
  126117             :        // help.clearState();
  126118             :         }
  126119             : 
  126120           0 :      return result;
  126121             :    }
  126122             : 
  126123             : 
  126124             : /* #line 126125 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  126125             : 
  126126             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  126127             : 
  126128           0 : SgNode* SgOmpTeamsDistributeParallelForStatement::copy ( SgCopyHelp& help) const
  126129             :    {
  126130           0 :      SgOmpTeamsDistributeParallelForStatement* result = NULL;
  126131             : 
  126132             :   // printf ("Copy SgOmpTeamsDistributeParallelForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  126133             : 
  126134             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  126135             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  126136             :   // The default value of the depth is 0, so after this call the depth is 1!
  126137           0 :      help.incrementDepth();
  126138             : 
  126139             : #if 0
  126140             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  126141             :   // but it is not generally true that things can only be copied once!
  126142             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  126143             :   // AstAttribute* existingAttribute = const_cast<SgOmpTeamsDistributeParallelForStatement*>(this)->attribute["copied"];
  126144             :      bool previouslyCopied = const_cast<SgOmpTeamsDistributeParallelForStatement*>(this)->attribute.exists("copied");
  126145             :      if (previouslyCopied == true)
  126146             :         {
  126147             :           this->get_file_info()->display("Called from copy SgOmpTeamsDistributeParallelForStatement: debug");
  126148             :         }
  126149             :      ROSE_ASSERT(previouslyCopied == false);
  126150             : 
  126151             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  126152             :      AstAttribute* newAttribute = new AstAttribute();
  126153             :      ROSE_ASSERT(newAttribute != NULL);
  126154             : 
  126155             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  126156             :      const_cast<SgOmpTeamsDistributeParallelForStatement*>(this)->attribute.add("copied",newAttribute);
  126157             : #endif
  126158             : 
  126159             :   // Copy data members from base classes
  126160             :   // Copy constructor parameter data member: startOfConstruct_copy
  126161             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  126162             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  126163           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  126164           0 :      if ( p_startOfConstruct != NULL ) 
  126165             :         { 
  126166           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  126167             :         } 
  126168             :        else 
  126169             :         { 
  126170             :           startOfConstruct_copy = NULL; 
  126171             :         } 
  126172             :   // Copy constructor parameter data member: body_copy
  126173           0 :      SgStatement* body_copy; 
  126174             :   // case: not a listType for (using conditionalToCopyVariable)body
  126175           0 :           if (get_body() != NULL) 
  126176             :              { 
  126177           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  126178             :              } 
  126179             :             else 
  126180             :              { 
  126181             :                body_copy = NULL; 
  126182             :              } 
  126183             :  
  126184             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  126185             : 
  126186             :   // Build an empty copy of this object (will be filled in, but 
  126187             :   // the parent can't be set and must be set by the caller)
  126188           0 :      result = new SgOmpTeamsDistributeParallelForStatement(  startOfConstruct_copy, body_copy );
  126189           0 :      ROSE_ASSERT(result != NULL);
  126190             : 
  126191             :   // Copy data members of "this" class
  126192             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  126193             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  126194             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  126195           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  126196           0 :      if ( p_endOfConstruct != NULL ) 
  126197             :         { 
  126198           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  126199             :         } 
  126200             :        else 
  126201             :         { 
  126202             :           endOfConstruct_copy = NULL; 
  126203             :         } 
  126204             :   /* check for a valid pointer and delete if present */ 
  126205           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  126206             :   /* add assignment to result here */ 
  126207           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  126208             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  126209             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  126210             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  126211           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  126212           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  126213             :         { 
  126214           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  126215             :         } 
  126216             :        else 
  126217             :         { 
  126218             :           attachedPreprocessingInfoPtr_copy = NULL; 
  126219             :         } 
  126220             :   /* check for a valid pointer and delete if present */ 
  126221           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  126222             :   /* add assignment to result here */ 
  126223           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  126224             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  126225             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  126226             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  126227           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  126228           0 :      if ( p_attributeMechanism != NULL ) 
  126229             :         { 
  126230           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  126231             :         } 
  126232             :        else 
  126233             :         { 
  126234             :           attributeMechanism_copy = NULL; 
  126235             :         } 
  126236             :   /* check for a valid pointer and delete if present */ 
  126237           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  126238             :   /* add assignment to result here */ 
  126239           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  126240             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  126241             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  126242             :   // case: toBeCopied == COPY_DATA for numeric_label
  126243           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  126244           0 :      result->p_numeric_label = numeric_label_copy; 
  126245             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  126246             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  126247             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  126248           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  126249           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  126250             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  126251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  126252             :   // case: toBeCopied == COPY_DATA for upir_parent
  126253           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  126254           0 :      result->p_upir_parent = upir_parent_copy; 
  126255             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  126256             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  126257             :   // case: toBeCopied == COPY_DATA for upir_children
  126258           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  126259           0 :      result->p_upir_children = upir_children_copy; 
  126260             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  126261           0 :      SgOmpClausePtrList clauses_copy; 
  126262             :   // case: listType for clauses
  126263             :   // case: listType (typeIsPointerToList == false) for clauses
  126264           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  126265           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  126266             :         { 
  126267           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  126268           0 :           SgOmpClause* copy_list_element = NULL; 
  126269           0 :           if (source_list_element != NULL) 
  126270             :              { 
  126271           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  126272             :              } 
  126273             :             else 
  126274             :              { 
  126275             :                copy_list_element = NULL; 
  126276             :              } 
  126277           0 :           clauses_copy.push_back(copy_list_element); 
  126278             :         } 
  126279           0 :      result->p_clauses = clauses_copy; 
  126280             :   // case: listType for clauses
  126281             :   // case: listType (typeIsPointerToList == false) for clauses
  126282           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  126283           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  126284             :         { 
  126285           0 :           SgOmpClause* list_element = *clauses_iterator; 
  126286           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  126287             :              { 
  126288           0 :                list_element->set_parent(result); 
  126289             :              } 
  126290             :         } 
  126291             :   // case: not a listType for (using conditionalToSetParent)body
  126292           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  126293             :              { 
  126294           0 :                body_copy->set_parent(result); 
  126295             :              } 
  126296             : 
  126297             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  126298             : 
  126299             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  126300             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  126301             :   // fixupCopy(result,help);
  126302             : 
  126303             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  126304             :   // the Sg_File_Info objects that are built for the new IR nodes.
  126305           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  126306           0 :      if (locatedNode != NULL)
  126307             :         {
  126308             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  126309           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  126310           0 :           ROSE_ASSERT(start != NULL);
  126311             : #if 0
  126312             :        // Debugging information
  126313             :           if (start->get_parent() == NULL)
  126314             :              {
  126315             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126316             :              }
  126317             : #endif
  126318           0 :           start->set_parent(locatedNode);
  126319           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  126320             : 
  126321           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  126322             : 
  126323             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  126324             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  126325             :        // ROSE_ASSERT(end != NULL);
  126326           0 :           if (end == NULL)
  126327             :              {
  126328           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  126329             :              }
  126330             :             else
  126331             :              {
  126332             : #if 0
  126333             :             // Debugging information
  126334             :                if (end->get_parent() == NULL)
  126335             :                   {
  126336             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126337             :                   }
  126338             : #endif
  126339           0 :                end->set_parent(locatedNode);
  126340           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  126341             :              }
  126342             : 
  126343           0 :           SgExpression* expression = isSgExpression(result);
  126344           0 :           if (isSgExpression(this) != NULL)
  126345             :              {
  126346           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  126347             : 
  126348             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  126349           0 :                if (operatorPosition != NULL)
  126350             :                   {
  126351             : #if 0
  126352             :                  // Debugging information
  126353             :                     if (operatorPosition->get_parent() == NULL)
  126354             :                        {
  126355             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126356             :                        }
  126357             : #endif
  126358           0 :                     operatorPosition->set_parent(expression);
  126359           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  126360             :                   }
  126361             :              }
  126362             :         }
  126363             : 
  126364             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  126365           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  126366           0 :      if (initializedName != NULL)
  126367             :         {
  126368             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  126369           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  126370           0 :           ROSE_ASSERT(start != NULL);
  126371             : #if 0
  126372             :        // Debugging information
  126373             :           if (start->get_parent() == NULL)
  126374             :              {
  126375             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126376             :              }
  126377             : #endif
  126378           0 :           start->set_parent(initializedName);
  126379           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  126380             : 
  126381             : #if 0
  126382             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  126383             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  126384             : 
  126385             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  126386             :        // ROSE_ASSERT(end != NULL);
  126387             :           if (end == NULL)
  126388             :              {
  126389             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  126390             :              }
  126391             :             else
  126392             :              {
  126393             :                if (end->get_parent() == NULL)
  126394             :                   {
  126395             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126396             :                   }
  126397             :                end->set_parent(initializedName);
  126398             :                ROSE_ASSERT(end->get_parent() != NULL);
  126399             :              }
  126400             : #endif
  126401             :         }
  126402             : 
  126403             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  126404           0 :      help.insertCopiedNodePair(this,result);
  126405             : 
  126406             :   // printf ("End of copy SgOmpTeamsDistributeParallelForStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  126407             : 
  126408             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  126409             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  126410           0 :      help.decrementDepth();
  126411             : 
  126412             :   // Test if this is the root of the copy!
  126413           0 :      if (help.get_depth() == 0)
  126414             :         {
  126415             :        // This is the original calling node.
  126416             : 
  126417             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  126418             :        // printf ("Calling SgOmpTeamsDistributeParallelForStatement::fixupCopy() (from root of AST being copied) \n");
  126419             : #if ALT_FIXUP_COPY
  126420             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  126421           0 :           fixupCopy_scopes (result,help);
  126422           0 :           fixupCopy_symbols (result,help);
  126423           0 :           fixupCopy_references (result,help);
  126424             : #else
  126425             :           fixupCopy(result,help);
  126426             : #endif
  126427             :        // Allow this to be called recursively, so accumulate the state.
  126428             :        // Also, clear the state in the SgCopyHelp object.
  126429             :        // help.clearState();
  126430             :         }
  126431             : 
  126432           0 :      return result;
  126433             :    }
  126434             : 
  126435             : 
  126436             : /* #line 126437 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  126437             : 
  126438             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  126439             : 
  126440           0 : SgNode* SgOmpTeamsDistributeParallelForSimdStatement::copy ( SgCopyHelp& help) const
  126441             :    {
  126442           0 :      SgOmpTeamsDistributeParallelForSimdStatement* result = NULL;
  126443             : 
  126444             :   // printf ("Copy SgOmpTeamsDistributeParallelForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  126445             : 
  126446             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  126447             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  126448             :   // The default value of the depth is 0, so after this call the depth is 1!
  126449           0 :      help.incrementDepth();
  126450             : 
  126451             : #if 0
  126452             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  126453             :   // but it is not generally true that things can only be copied once!
  126454             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  126455             :   // AstAttribute* existingAttribute = const_cast<SgOmpTeamsDistributeParallelForSimdStatement*>(this)->attribute["copied"];
  126456             :      bool previouslyCopied = const_cast<SgOmpTeamsDistributeParallelForSimdStatement*>(this)->attribute.exists("copied");
  126457             :      if (previouslyCopied == true)
  126458             :         {
  126459             :           this->get_file_info()->display("Called from copy SgOmpTeamsDistributeParallelForSimdStatement: debug");
  126460             :         }
  126461             :      ROSE_ASSERT(previouslyCopied == false);
  126462             : 
  126463             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  126464             :      AstAttribute* newAttribute = new AstAttribute();
  126465             :      ROSE_ASSERT(newAttribute != NULL);
  126466             : 
  126467             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  126468             :      const_cast<SgOmpTeamsDistributeParallelForSimdStatement*>(this)->attribute.add("copied",newAttribute);
  126469             : #endif
  126470             : 
  126471             :   // Copy data members from base classes
  126472             :   // Copy constructor parameter data member: startOfConstruct_copy
  126473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  126474             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  126475           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  126476           0 :      if ( p_startOfConstruct != NULL ) 
  126477             :         { 
  126478           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  126479             :         } 
  126480             :        else 
  126481             :         { 
  126482             :           startOfConstruct_copy = NULL; 
  126483             :         } 
  126484             :   // Copy constructor parameter data member: body_copy
  126485           0 :      SgStatement* body_copy; 
  126486             :   // case: not a listType for (using conditionalToCopyVariable)body
  126487           0 :           if (get_body() != NULL) 
  126488             :              { 
  126489           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  126490             :              } 
  126491             :             else 
  126492             :              { 
  126493             :                body_copy = NULL; 
  126494             :              } 
  126495             :  
  126496             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  126497             : 
  126498             :   // Build an empty copy of this object (will be filled in, but 
  126499             :   // the parent can't be set and must be set by the caller)
  126500           0 :      result = new SgOmpTeamsDistributeParallelForSimdStatement(  startOfConstruct_copy, body_copy );
  126501           0 :      ROSE_ASSERT(result != NULL);
  126502             : 
  126503             :   // Copy data members of "this" class
  126504             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  126505             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  126506             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  126507           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  126508           0 :      if ( p_endOfConstruct != NULL ) 
  126509             :         { 
  126510           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  126511             :         } 
  126512             :        else 
  126513             :         { 
  126514             :           endOfConstruct_copy = NULL; 
  126515             :         } 
  126516             :   /* check for a valid pointer and delete if present */ 
  126517           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  126518             :   /* add assignment to result here */ 
  126519           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  126520             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  126521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  126522             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  126523           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  126524           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  126525             :         { 
  126526           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  126527             :         } 
  126528             :        else 
  126529             :         { 
  126530             :           attachedPreprocessingInfoPtr_copy = NULL; 
  126531             :         } 
  126532             :   /* check for a valid pointer and delete if present */ 
  126533           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  126534             :   /* add assignment to result here */ 
  126535           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  126536             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  126537             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  126538             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  126539           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  126540           0 :      if ( p_attributeMechanism != NULL ) 
  126541             :         { 
  126542           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  126543             :         } 
  126544             :        else 
  126545             :         { 
  126546             :           attributeMechanism_copy = NULL; 
  126547             :         } 
  126548             :   /* check for a valid pointer and delete if present */ 
  126549           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  126550             :   /* add assignment to result here */ 
  126551           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  126552             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  126553             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  126554             :   // case: toBeCopied == COPY_DATA for numeric_label
  126555           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  126556           0 :      result->p_numeric_label = numeric_label_copy; 
  126557             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  126558             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  126559             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  126560           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  126561           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  126562             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  126563             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  126564             :   // case: toBeCopied == COPY_DATA for upir_parent
  126565           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  126566           0 :      result->p_upir_parent = upir_parent_copy; 
  126567             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  126568             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  126569             :   // case: toBeCopied == COPY_DATA for upir_children
  126570           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  126571           0 :      result->p_upir_children = upir_children_copy; 
  126572             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  126573           0 :      SgOmpClausePtrList clauses_copy; 
  126574             :   // case: listType for clauses
  126575             :   // case: listType (typeIsPointerToList == false) for clauses
  126576           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  126577           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  126578             :         { 
  126579           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  126580           0 :           SgOmpClause* copy_list_element = NULL; 
  126581           0 :           if (source_list_element != NULL) 
  126582             :              { 
  126583           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  126584             :              } 
  126585             :             else 
  126586             :              { 
  126587             :                copy_list_element = NULL; 
  126588             :              } 
  126589           0 :           clauses_copy.push_back(copy_list_element); 
  126590             :         } 
  126591           0 :      result->p_clauses = clauses_copy; 
  126592             :   // case: listType for clauses
  126593             :   // case: listType (typeIsPointerToList == false) for clauses
  126594           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  126595           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  126596             :         { 
  126597           0 :           SgOmpClause* list_element = *clauses_iterator; 
  126598           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  126599             :              { 
  126600           0 :                list_element->set_parent(result); 
  126601             :              } 
  126602             :         } 
  126603             :   // case: not a listType for (using conditionalToSetParent)body
  126604           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  126605             :              { 
  126606           0 :                body_copy->set_parent(result); 
  126607             :              } 
  126608             : 
  126609             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  126610             : 
  126611             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  126612             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  126613             :   // fixupCopy(result,help);
  126614             : 
  126615             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  126616             :   // the Sg_File_Info objects that are built for the new IR nodes.
  126617           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  126618           0 :      if (locatedNode != NULL)
  126619             :         {
  126620             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  126621           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  126622           0 :           ROSE_ASSERT(start != NULL);
  126623             : #if 0
  126624             :        // Debugging information
  126625             :           if (start->get_parent() == NULL)
  126626             :              {
  126627             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126628             :              }
  126629             : #endif
  126630           0 :           start->set_parent(locatedNode);
  126631           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  126632             : 
  126633           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  126634             : 
  126635             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  126636             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  126637             :        // ROSE_ASSERT(end != NULL);
  126638           0 :           if (end == NULL)
  126639             :              {
  126640           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  126641             :              }
  126642             :             else
  126643             :              {
  126644             : #if 0
  126645             :             // Debugging information
  126646             :                if (end->get_parent() == NULL)
  126647             :                   {
  126648             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126649             :                   }
  126650             : #endif
  126651           0 :                end->set_parent(locatedNode);
  126652           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  126653             :              }
  126654             : 
  126655           0 :           SgExpression* expression = isSgExpression(result);
  126656           0 :           if (isSgExpression(this) != NULL)
  126657             :              {
  126658           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  126659             : 
  126660             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  126661           0 :                if (operatorPosition != NULL)
  126662             :                   {
  126663             : #if 0
  126664             :                  // Debugging information
  126665             :                     if (operatorPosition->get_parent() == NULL)
  126666             :                        {
  126667             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126668             :                        }
  126669             : #endif
  126670           0 :                     operatorPosition->set_parent(expression);
  126671           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  126672             :                   }
  126673             :              }
  126674             :         }
  126675             : 
  126676             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  126677           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  126678           0 :      if (initializedName != NULL)
  126679             :         {
  126680             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  126681           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  126682           0 :           ROSE_ASSERT(start != NULL);
  126683             : #if 0
  126684             :        // Debugging information
  126685             :           if (start->get_parent() == NULL)
  126686             :              {
  126687             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126688             :              }
  126689             : #endif
  126690           0 :           start->set_parent(initializedName);
  126691           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  126692             : 
  126693             : #if 0
  126694             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  126695             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  126696             : 
  126697             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  126698             :        // ROSE_ASSERT(end != NULL);
  126699             :           if (end == NULL)
  126700             :              {
  126701             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  126702             :              }
  126703             :             else
  126704             :              {
  126705             :                if (end->get_parent() == NULL)
  126706             :                   {
  126707             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126708             :                   }
  126709             :                end->set_parent(initializedName);
  126710             :                ROSE_ASSERT(end->get_parent() != NULL);
  126711             :              }
  126712             : #endif
  126713             :         }
  126714             : 
  126715             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  126716           0 :      help.insertCopiedNodePair(this,result);
  126717             : 
  126718             :   // printf ("End of copy SgOmpTeamsDistributeParallelForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  126719             : 
  126720             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  126721             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  126722           0 :      help.decrementDepth();
  126723             : 
  126724             :   // Test if this is the root of the copy!
  126725           0 :      if (help.get_depth() == 0)
  126726             :         {
  126727             :        // This is the original calling node.
  126728             : 
  126729             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  126730             :        // printf ("Calling SgOmpTeamsDistributeParallelForSimdStatement::fixupCopy() (from root of AST being copied) \n");
  126731             : #if ALT_FIXUP_COPY
  126732             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  126733           0 :           fixupCopy_scopes (result,help);
  126734           0 :           fixupCopy_symbols (result,help);
  126735           0 :           fixupCopy_references (result,help);
  126736             : #else
  126737             :           fixupCopy(result,help);
  126738             : #endif
  126739             :        // Allow this to be called recursively, so accumulate the state.
  126740             :        // Also, clear the state in the SgCopyHelp object.
  126741             :        // help.clearState();
  126742             :         }
  126743             : 
  126744           0 :      return result;
  126745             :    }
  126746             : 
  126747             : 
  126748             : /* #line 126749 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  126749             : 
  126750             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  126751             : 
  126752           0 : SgNode* SgOmpTeamsLoopStatement::copy ( SgCopyHelp& help) const
  126753             :    {
  126754           0 :      SgOmpTeamsLoopStatement* result = NULL;
  126755             : 
  126756             :   // printf ("Copy SgOmpTeamsLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  126757             : 
  126758             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  126759             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  126760             :   // The default value of the depth is 0, so after this call the depth is 1!
  126761           0 :      help.incrementDepth();
  126762             : 
  126763             : #if 0
  126764             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  126765             :   // but it is not generally true that things can only be copied once!
  126766             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  126767             :   // AstAttribute* existingAttribute = const_cast<SgOmpTeamsLoopStatement*>(this)->attribute["copied"];
  126768             :      bool previouslyCopied = const_cast<SgOmpTeamsLoopStatement*>(this)->attribute.exists("copied");
  126769             :      if (previouslyCopied == true)
  126770             :         {
  126771             :           this->get_file_info()->display("Called from copy SgOmpTeamsLoopStatement: debug");
  126772             :         }
  126773             :      ROSE_ASSERT(previouslyCopied == false);
  126774             : 
  126775             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  126776             :      AstAttribute* newAttribute = new AstAttribute();
  126777             :      ROSE_ASSERT(newAttribute != NULL);
  126778             : 
  126779             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  126780             :      const_cast<SgOmpTeamsLoopStatement*>(this)->attribute.add("copied",newAttribute);
  126781             : #endif
  126782             : 
  126783             :   // Copy data members from base classes
  126784             :   // Copy constructor parameter data member: startOfConstruct_copy
  126785             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  126786             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  126787           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  126788           0 :      if ( p_startOfConstruct != NULL ) 
  126789             :         { 
  126790           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  126791             :         } 
  126792             :        else 
  126793             :         { 
  126794             :           startOfConstruct_copy = NULL; 
  126795             :         } 
  126796             :   // Copy constructor parameter data member: body_copy
  126797           0 :      SgStatement* body_copy; 
  126798             :   // case: not a listType for (using conditionalToCopyVariable)body
  126799           0 :           if (get_body() != NULL) 
  126800             :              { 
  126801           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  126802             :              } 
  126803             :             else 
  126804             :              { 
  126805             :                body_copy = NULL; 
  126806             :              } 
  126807             :  
  126808             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  126809             : 
  126810             :   // Build an empty copy of this object (will be filled in, but 
  126811             :   // the parent can't be set and must be set by the caller)
  126812           0 :      result = new SgOmpTeamsLoopStatement(  startOfConstruct_copy, body_copy );
  126813           0 :      ROSE_ASSERT(result != NULL);
  126814             : 
  126815             :   // Copy data members of "this" class
  126816             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  126817             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  126818             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  126819           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  126820           0 :      if ( p_endOfConstruct != NULL ) 
  126821             :         { 
  126822           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  126823             :         } 
  126824             :        else 
  126825             :         { 
  126826             :           endOfConstruct_copy = NULL; 
  126827             :         } 
  126828             :   /* check for a valid pointer and delete if present */ 
  126829           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  126830             :   /* add assignment to result here */ 
  126831           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  126832             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  126833             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  126834             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  126835           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  126836           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  126837             :         { 
  126838           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  126839             :         } 
  126840             :        else 
  126841             :         { 
  126842             :           attachedPreprocessingInfoPtr_copy = NULL; 
  126843             :         } 
  126844             :   /* check for a valid pointer and delete if present */ 
  126845           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  126846             :   /* add assignment to result here */ 
  126847           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  126848             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  126849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  126850             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  126851           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  126852           0 :      if ( p_attributeMechanism != NULL ) 
  126853             :         { 
  126854           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  126855             :         } 
  126856             :        else 
  126857             :         { 
  126858             :           attributeMechanism_copy = NULL; 
  126859             :         } 
  126860             :   /* check for a valid pointer and delete if present */ 
  126861           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  126862             :   /* add assignment to result here */ 
  126863           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  126864             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  126865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  126866             :   // case: toBeCopied == COPY_DATA for numeric_label
  126867           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  126868           0 :      result->p_numeric_label = numeric_label_copy; 
  126869             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  126870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  126871             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  126872           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  126873           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  126874             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  126875             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  126876             :   // case: toBeCopied == COPY_DATA for upir_parent
  126877           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  126878           0 :      result->p_upir_parent = upir_parent_copy; 
  126879             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  126880             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  126881             :   // case: toBeCopied == COPY_DATA for upir_children
  126882           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  126883           0 :      result->p_upir_children = upir_children_copy; 
  126884             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  126885           0 :      SgOmpClausePtrList clauses_copy; 
  126886             :   // case: listType for clauses
  126887             :   // case: listType (typeIsPointerToList == false) for clauses
  126888           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  126889           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  126890             :         { 
  126891           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  126892           0 :           SgOmpClause* copy_list_element = NULL; 
  126893           0 :           if (source_list_element != NULL) 
  126894             :              { 
  126895           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  126896             :              } 
  126897             :             else 
  126898             :              { 
  126899             :                copy_list_element = NULL; 
  126900             :              } 
  126901           0 :           clauses_copy.push_back(copy_list_element); 
  126902             :         } 
  126903           0 :      result->p_clauses = clauses_copy; 
  126904             :   // case: listType for clauses
  126905             :   // case: listType (typeIsPointerToList == false) for clauses
  126906           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  126907           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  126908             :         { 
  126909           0 :           SgOmpClause* list_element = *clauses_iterator; 
  126910           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  126911             :              { 
  126912           0 :                list_element->set_parent(result); 
  126913             :              } 
  126914             :         } 
  126915             :   // case: not a listType for (using conditionalToSetParent)body
  126916           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  126917             :              { 
  126918           0 :                body_copy->set_parent(result); 
  126919             :              } 
  126920             : 
  126921             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  126922             : 
  126923             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  126924             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  126925             :   // fixupCopy(result,help);
  126926             : 
  126927             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  126928             :   // the Sg_File_Info objects that are built for the new IR nodes.
  126929           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  126930           0 :      if (locatedNode != NULL)
  126931             :         {
  126932             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  126933           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  126934           0 :           ROSE_ASSERT(start != NULL);
  126935             : #if 0
  126936             :        // Debugging information
  126937             :           if (start->get_parent() == NULL)
  126938             :              {
  126939             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126940             :              }
  126941             : #endif
  126942           0 :           start->set_parent(locatedNode);
  126943           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  126944             : 
  126945           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  126946             : 
  126947             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  126948             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  126949             :        // ROSE_ASSERT(end != NULL);
  126950           0 :           if (end == NULL)
  126951             :              {
  126952           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  126953             :              }
  126954             :             else
  126955             :              {
  126956             : #if 0
  126957             :             // Debugging information
  126958             :                if (end->get_parent() == NULL)
  126959             :                   {
  126960             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126961             :                   }
  126962             : #endif
  126963           0 :                end->set_parent(locatedNode);
  126964           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  126965             :              }
  126966             : 
  126967           0 :           SgExpression* expression = isSgExpression(result);
  126968           0 :           if (isSgExpression(this) != NULL)
  126969             :              {
  126970           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  126971             : 
  126972             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  126973           0 :                if (operatorPosition != NULL)
  126974             :                   {
  126975             : #if 0
  126976             :                  // Debugging information
  126977             :                     if (operatorPosition->get_parent() == NULL)
  126978             :                        {
  126979             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  126980             :                        }
  126981             : #endif
  126982           0 :                     operatorPosition->set_parent(expression);
  126983           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  126984             :                   }
  126985             :              }
  126986             :         }
  126987             : 
  126988             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  126989           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  126990           0 :      if (initializedName != NULL)
  126991             :         {
  126992             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  126993           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  126994           0 :           ROSE_ASSERT(start != NULL);
  126995             : #if 0
  126996             :        // Debugging information
  126997             :           if (start->get_parent() == NULL)
  126998             :              {
  126999             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127000             :              }
  127001             : #endif
  127002           0 :           start->set_parent(initializedName);
  127003           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  127004             : 
  127005             : #if 0
  127006             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  127007             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  127008             : 
  127009             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  127010             :        // ROSE_ASSERT(end != NULL);
  127011             :           if (end == NULL)
  127012             :              {
  127013             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  127014             :              }
  127015             :             else
  127016             :              {
  127017             :                if (end->get_parent() == NULL)
  127018             :                   {
  127019             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127020             :                   }
  127021             :                end->set_parent(initializedName);
  127022             :                ROSE_ASSERT(end->get_parent() != NULL);
  127023             :              }
  127024             : #endif
  127025             :         }
  127026             : 
  127027             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  127028           0 :      help.insertCopiedNodePair(this,result);
  127029             : 
  127030             :   // printf ("End of copy SgOmpTeamsLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  127031             : 
  127032             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  127033             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  127034           0 :      help.decrementDepth();
  127035             : 
  127036             :   // Test if this is the root of the copy!
  127037           0 :      if (help.get_depth() == 0)
  127038             :         {
  127039             :        // This is the original calling node.
  127040             : 
  127041             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  127042             :        // printf ("Calling SgOmpTeamsLoopStatement::fixupCopy() (from root of AST being copied) \n");
  127043             : #if ALT_FIXUP_COPY
  127044             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  127045           0 :           fixupCopy_scopes (result,help);
  127046           0 :           fixupCopy_symbols (result,help);
  127047           0 :           fixupCopy_references (result,help);
  127048             : #else
  127049             :           fixupCopy(result,help);
  127050             : #endif
  127051             :        // Allow this to be called recursively, so accumulate the state.
  127052             :        // Also, clear the state in the SgCopyHelp object.
  127053             :        // help.clearState();
  127054             :         }
  127055             : 
  127056           0 :      return result;
  127057             :    }
  127058             : 
  127059             : 
  127060             : /* #line 127061 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  127061             : 
  127062             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  127063             : 
  127064           0 : SgNode* SgOmpForSimdStatement::copy ( SgCopyHelp& help) const
  127065             :    {
  127066           0 :      SgOmpForSimdStatement* result = NULL;
  127067             : 
  127068             :   // printf ("Copy SgOmpForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  127069             : 
  127070             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  127071             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  127072             :   // The default value of the depth is 0, so after this call the depth is 1!
  127073           0 :      help.incrementDepth();
  127074             : 
  127075             : #if 0
  127076             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  127077             :   // but it is not generally true that things can only be copied once!
  127078             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  127079             :   // AstAttribute* existingAttribute = const_cast<SgOmpForSimdStatement*>(this)->attribute["copied"];
  127080             :      bool previouslyCopied = const_cast<SgOmpForSimdStatement*>(this)->attribute.exists("copied");
  127081             :      if (previouslyCopied == true)
  127082             :         {
  127083             :           this->get_file_info()->display("Called from copy SgOmpForSimdStatement: debug");
  127084             :         }
  127085             :      ROSE_ASSERT(previouslyCopied == false);
  127086             : 
  127087             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  127088             :      AstAttribute* newAttribute = new AstAttribute();
  127089             :      ROSE_ASSERT(newAttribute != NULL);
  127090             : 
  127091             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  127092             :      const_cast<SgOmpForSimdStatement*>(this)->attribute.add("copied",newAttribute);
  127093             : #endif
  127094             : 
  127095             :   // Copy data members from base classes
  127096             :   // Copy constructor parameter data member: startOfConstruct_copy
  127097             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  127098             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  127099           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  127100           0 :      if ( p_startOfConstruct != NULL ) 
  127101             :         { 
  127102           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  127103             :         } 
  127104             :        else 
  127105             :         { 
  127106             :           startOfConstruct_copy = NULL; 
  127107             :         } 
  127108             :   // Copy constructor parameter data member: body_copy
  127109           0 :      SgStatement* body_copy; 
  127110             :   // case: not a listType for (using conditionalToCopyVariable)body
  127111           0 :           if (get_body() != NULL) 
  127112             :              { 
  127113           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  127114             :              } 
  127115             :             else 
  127116             :              { 
  127117             :                body_copy = NULL; 
  127118             :              } 
  127119             :  
  127120             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  127121             : 
  127122             :   // Build an empty copy of this object (will be filled in, but 
  127123             :   // the parent can't be set and must be set by the caller)
  127124           0 :      result = new SgOmpForSimdStatement(  startOfConstruct_copy, body_copy );
  127125           0 :      ROSE_ASSERT(result != NULL);
  127126             : 
  127127             :   // Copy data members of "this" class
  127128             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  127129             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  127130             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  127131           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  127132           0 :      if ( p_endOfConstruct != NULL ) 
  127133             :         { 
  127134           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  127135             :         } 
  127136             :        else 
  127137             :         { 
  127138             :           endOfConstruct_copy = NULL; 
  127139             :         } 
  127140             :   /* check for a valid pointer and delete if present */ 
  127141           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  127142             :   /* add assignment to result here */ 
  127143           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  127144             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  127145             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  127146             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  127147           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  127148           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  127149             :         { 
  127150           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  127151             :         } 
  127152             :        else 
  127153             :         { 
  127154             :           attachedPreprocessingInfoPtr_copy = NULL; 
  127155             :         } 
  127156             :   /* check for a valid pointer and delete if present */ 
  127157           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  127158             :   /* add assignment to result here */ 
  127159           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  127160             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  127161             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  127162             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  127163           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  127164           0 :      if ( p_attributeMechanism != NULL ) 
  127165             :         { 
  127166           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  127167             :         } 
  127168             :        else 
  127169             :         { 
  127170             :           attributeMechanism_copy = NULL; 
  127171             :         } 
  127172             :   /* check for a valid pointer and delete if present */ 
  127173           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  127174             :   /* add assignment to result here */ 
  127175           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  127176             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  127177             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  127178             :   // case: toBeCopied == COPY_DATA for numeric_label
  127179           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  127180           0 :      result->p_numeric_label = numeric_label_copy; 
  127181             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  127182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  127183             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  127184           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  127185           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  127186             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  127187             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  127188             :   // case: toBeCopied == COPY_DATA for upir_parent
  127189           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  127190           0 :      result->p_upir_parent = upir_parent_copy; 
  127191             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  127192             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  127193             :   // case: toBeCopied == COPY_DATA for upir_children
  127194           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  127195           0 :      result->p_upir_children = upir_children_copy; 
  127196             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  127197           0 :      SgOmpClausePtrList clauses_copy; 
  127198             :   // case: listType for clauses
  127199             :   // case: listType (typeIsPointerToList == false) for clauses
  127200           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  127201           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  127202             :         { 
  127203           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  127204           0 :           SgOmpClause* copy_list_element = NULL; 
  127205           0 :           if (source_list_element != NULL) 
  127206             :              { 
  127207           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  127208             :              } 
  127209             :             else 
  127210             :              { 
  127211             :                copy_list_element = NULL; 
  127212             :              } 
  127213           0 :           clauses_copy.push_back(copy_list_element); 
  127214             :         } 
  127215           0 :      result->p_clauses = clauses_copy; 
  127216             :   // case: listType for clauses
  127217             :   // case: listType (typeIsPointerToList == false) for clauses
  127218           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  127219           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  127220             :         { 
  127221           0 :           SgOmpClause* list_element = *clauses_iterator; 
  127222           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  127223             :              { 
  127224           0 :                list_element->set_parent(result); 
  127225             :              } 
  127226             :         } 
  127227             :   // case: not a listType for (using conditionalToSetParent)body
  127228           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  127229             :              { 
  127230           0 :                body_copy->set_parent(result); 
  127231             :              } 
  127232             : 
  127233             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  127234             : 
  127235             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  127236             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  127237             :   // fixupCopy(result,help);
  127238             : 
  127239             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  127240             :   // the Sg_File_Info objects that are built for the new IR nodes.
  127241           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  127242           0 :      if (locatedNode != NULL)
  127243             :         {
  127244             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  127245           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  127246           0 :           ROSE_ASSERT(start != NULL);
  127247             : #if 0
  127248             :        // Debugging information
  127249             :           if (start->get_parent() == NULL)
  127250             :              {
  127251             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127252             :              }
  127253             : #endif
  127254           0 :           start->set_parent(locatedNode);
  127255           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  127256             : 
  127257           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  127258             : 
  127259             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  127260             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  127261             :        // ROSE_ASSERT(end != NULL);
  127262           0 :           if (end == NULL)
  127263             :              {
  127264           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  127265             :              }
  127266             :             else
  127267             :              {
  127268             : #if 0
  127269             :             // Debugging information
  127270             :                if (end->get_parent() == NULL)
  127271             :                   {
  127272             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127273             :                   }
  127274             : #endif
  127275           0 :                end->set_parent(locatedNode);
  127276           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  127277             :              }
  127278             : 
  127279           0 :           SgExpression* expression = isSgExpression(result);
  127280           0 :           if (isSgExpression(this) != NULL)
  127281             :              {
  127282           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  127283             : 
  127284             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  127285           0 :                if (operatorPosition != NULL)
  127286             :                   {
  127287             : #if 0
  127288             :                  // Debugging information
  127289             :                     if (operatorPosition->get_parent() == NULL)
  127290             :                        {
  127291             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127292             :                        }
  127293             : #endif
  127294           0 :                     operatorPosition->set_parent(expression);
  127295           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  127296             :                   }
  127297             :              }
  127298             :         }
  127299             : 
  127300             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  127301           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  127302           0 :      if (initializedName != NULL)
  127303             :         {
  127304             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  127305           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  127306           0 :           ROSE_ASSERT(start != NULL);
  127307             : #if 0
  127308             :        // Debugging information
  127309             :           if (start->get_parent() == NULL)
  127310             :              {
  127311             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127312             :              }
  127313             : #endif
  127314           0 :           start->set_parent(initializedName);
  127315           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  127316             : 
  127317             : #if 0
  127318             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  127319             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  127320             : 
  127321             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  127322             :        // ROSE_ASSERT(end != NULL);
  127323             :           if (end == NULL)
  127324             :              {
  127325             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  127326             :              }
  127327             :             else
  127328             :              {
  127329             :                if (end->get_parent() == NULL)
  127330             :                   {
  127331             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127332             :                   }
  127333             :                end->set_parent(initializedName);
  127334             :                ROSE_ASSERT(end->get_parent() != NULL);
  127335             :              }
  127336             : #endif
  127337             :         }
  127338             : 
  127339             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  127340           0 :      help.insertCopiedNodePair(this,result);
  127341             : 
  127342             :   // printf ("End of copy SgOmpForSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  127343             : 
  127344             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  127345             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  127346           0 :      help.decrementDepth();
  127347             : 
  127348             :   // Test if this is the root of the copy!
  127349           0 :      if (help.get_depth() == 0)
  127350             :         {
  127351             :        // This is the original calling node.
  127352             : 
  127353             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  127354             :        // printf ("Calling SgOmpForSimdStatement::fixupCopy() (from root of AST being copied) \n");
  127355             : #if ALT_FIXUP_COPY
  127356             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  127357           0 :           fixupCopy_scopes (result,help);
  127358           0 :           fixupCopy_symbols (result,help);
  127359           0 :           fixupCopy_references (result,help);
  127360             : #else
  127361             :           fixupCopy(result,help);
  127362             : #endif
  127363             :        // Allow this to be called recursively, so accumulate the state.
  127364             :        // Also, clear the state in the SgCopyHelp object.
  127365             :        // help.clearState();
  127366             :         }
  127367             : 
  127368           0 :      return result;
  127369             :    }
  127370             : 
  127371             : 
  127372             : /* #line 127373 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  127373             : 
  127374             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  127375             : 
  127376           0 : SgNode* SgOmpCriticalStatement::copy ( SgCopyHelp& help) const
  127377             :    {
  127378           0 :      SgOmpCriticalStatement* result = NULL;
  127379             : 
  127380             :   // printf ("Copy SgOmpCriticalStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  127381             : 
  127382             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  127383             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  127384             :   // The default value of the depth is 0, so after this call the depth is 1!
  127385           0 :      help.incrementDepth();
  127386             : 
  127387             : #if 0
  127388             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  127389             :   // but it is not generally true that things can only be copied once!
  127390             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  127391             :   // AstAttribute* existingAttribute = const_cast<SgOmpCriticalStatement*>(this)->attribute["copied"];
  127392             :      bool previouslyCopied = const_cast<SgOmpCriticalStatement*>(this)->attribute.exists("copied");
  127393             :      if (previouslyCopied == true)
  127394             :         {
  127395             :           this->get_file_info()->display("Called from copy SgOmpCriticalStatement: debug");
  127396             :         }
  127397             :      ROSE_ASSERT(previouslyCopied == false);
  127398             : 
  127399             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  127400             :      AstAttribute* newAttribute = new AstAttribute();
  127401             :      ROSE_ASSERT(newAttribute != NULL);
  127402             : 
  127403             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  127404             :      const_cast<SgOmpCriticalStatement*>(this)->attribute.add("copied",newAttribute);
  127405             : #endif
  127406             : 
  127407             :   // Copy data members from base classes
  127408             :   // Copy constructor parameter data member: startOfConstruct_copy
  127409             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  127410             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  127411           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  127412           0 :      if ( p_startOfConstruct != NULL ) 
  127413             :         { 
  127414           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  127415             :         } 
  127416             :        else 
  127417             :         { 
  127418             :           startOfConstruct_copy = NULL; 
  127419             :         } 
  127420             :   // Copy constructor parameter data member: body_copy
  127421           0 :      SgStatement* body_copy; 
  127422             :   // case: not a listType for (using conditionalToCopyVariable)body
  127423           0 :           if (get_body() != NULL) 
  127424             :              { 
  127425           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  127426             :              } 
  127427             :             else 
  127428             :              { 
  127429             :                body_copy = NULL; 
  127430             :              } 
  127431             :   // Copy constructor parameter data member: name_copy
  127432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  127433             :   // case: toBeCopied == COPY_DATA for name
  127434           0 :      SgName name_copy = p_name; 
  127435             :  
  127436             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  127437             : 
  127438             :   // Build an empty copy of this object (will be filled in, but 
  127439             :   // the parent can't be set and must be set by the caller)
  127440           0 :      result = new SgOmpCriticalStatement(  startOfConstruct_copy, body_copy, name_copy );
  127441           0 :      ROSE_ASSERT(result != NULL);
  127442             : 
  127443             :   // Copy data members of "this" class
  127444             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  127445             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  127446             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  127447           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  127448           0 :      if ( p_endOfConstruct != NULL ) 
  127449             :         { 
  127450           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  127451             :         } 
  127452             :        else 
  127453             :         { 
  127454             :           endOfConstruct_copy = NULL; 
  127455             :         } 
  127456             :   /* check for a valid pointer and delete if present */ 
  127457           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  127458             :   /* add assignment to result here */ 
  127459           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  127460             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  127461             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  127462             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  127463           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  127464           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  127465             :         { 
  127466           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  127467             :         } 
  127468             :        else 
  127469             :         { 
  127470             :           attachedPreprocessingInfoPtr_copy = NULL; 
  127471             :         } 
  127472             :   /* check for a valid pointer and delete if present */ 
  127473           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  127474             :   /* add assignment to result here */ 
  127475           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  127476             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  127477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  127478             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  127479           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  127480           0 :      if ( p_attributeMechanism != NULL ) 
  127481             :         { 
  127482           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  127483             :         } 
  127484             :        else 
  127485             :         { 
  127486             :           attributeMechanism_copy = NULL; 
  127487             :         } 
  127488             :   /* check for a valid pointer and delete if present */ 
  127489           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  127490             :   /* add assignment to result here */ 
  127491           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  127492             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  127493             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  127494             :   // case: toBeCopied == COPY_DATA for numeric_label
  127495           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  127496           0 :      result->p_numeric_label = numeric_label_copy; 
  127497             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  127498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  127499             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  127500           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  127501           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  127502             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  127503             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  127504             :   // case: toBeCopied == COPY_DATA for upir_parent
  127505           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  127506           0 :      result->p_upir_parent = upir_parent_copy; 
  127507             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  127508             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  127509             :   // case: toBeCopied == COPY_DATA for upir_children
  127510           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  127511           0 :      result->p_upir_children = upir_children_copy; 
  127512             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  127513           0 :      SgOmpClausePtrList clauses_copy; 
  127514             :   // case: listType for clauses
  127515             :   // case: listType (typeIsPointerToList == false) for clauses
  127516           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  127517           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  127518             :         { 
  127519           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  127520           0 :           SgOmpClause* copy_list_element = NULL; 
  127521           0 :           if (source_list_element != NULL) 
  127522             :              { 
  127523           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  127524             :              } 
  127525             :             else 
  127526             :              { 
  127527             :                copy_list_element = NULL; 
  127528             :              } 
  127529           0 :           clauses_copy.push_back(copy_list_element); 
  127530             :         } 
  127531           0 :      result->p_clauses = clauses_copy; 
  127532             :   // case: listType for clauses
  127533             :   // case: listType (typeIsPointerToList == false) for clauses
  127534           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  127535           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  127536             :         { 
  127537           0 :           SgOmpClause* list_element = *clauses_iterator; 
  127538           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  127539             :              { 
  127540           0 :                list_element->set_parent(result); 
  127541             :              } 
  127542             :         } 
  127543             :   // case: not a listType for (using conditionalToSetParent)body
  127544           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  127545             :              { 
  127546           0 :                body_copy->set_parent(result); 
  127547             :              } 
  127548             : 
  127549             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  127550             : 
  127551             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  127552             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  127553             :   // fixupCopy(result,help);
  127554             : 
  127555             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  127556             :   // the Sg_File_Info objects that are built for the new IR nodes.
  127557           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  127558           0 :      if (locatedNode != NULL)
  127559             :         {
  127560             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  127561           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  127562           0 :           ROSE_ASSERT(start != NULL);
  127563             : #if 0
  127564             :        // Debugging information
  127565             :           if (start->get_parent() == NULL)
  127566             :              {
  127567             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127568             :              }
  127569             : #endif
  127570           0 :           start->set_parent(locatedNode);
  127571           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  127572             : 
  127573           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  127574             : 
  127575             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  127576             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  127577             :        // ROSE_ASSERT(end != NULL);
  127578           0 :           if (end == NULL)
  127579             :              {
  127580           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  127581             :              }
  127582             :             else
  127583             :              {
  127584             : #if 0
  127585             :             // Debugging information
  127586             :                if (end->get_parent() == NULL)
  127587             :                   {
  127588             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127589             :                   }
  127590             : #endif
  127591           0 :                end->set_parent(locatedNode);
  127592           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  127593             :              }
  127594             : 
  127595           0 :           SgExpression* expression = isSgExpression(result);
  127596           0 :           if (isSgExpression(this) != NULL)
  127597             :              {
  127598           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  127599             : 
  127600             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  127601           0 :                if (operatorPosition != NULL)
  127602             :                   {
  127603             : #if 0
  127604             :                  // Debugging information
  127605             :                     if (operatorPosition->get_parent() == NULL)
  127606             :                        {
  127607             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127608             :                        }
  127609             : #endif
  127610           0 :                     operatorPosition->set_parent(expression);
  127611           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  127612             :                   }
  127613             :              }
  127614             :         }
  127615             : 
  127616             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  127617           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  127618           0 :      if (initializedName != NULL)
  127619             :         {
  127620             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  127621           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  127622           0 :           ROSE_ASSERT(start != NULL);
  127623             : #if 0
  127624             :        // Debugging information
  127625             :           if (start->get_parent() == NULL)
  127626             :              {
  127627             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127628             :              }
  127629             : #endif
  127630           0 :           start->set_parent(initializedName);
  127631           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  127632             : 
  127633             : #if 0
  127634             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  127635             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  127636             : 
  127637             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  127638             :        // ROSE_ASSERT(end != NULL);
  127639             :           if (end == NULL)
  127640             :              {
  127641             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  127642             :              }
  127643             :             else
  127644             :              {
  127645             :                if (end->get_parent() == NULL)
  127646             :                   {
  127647             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127648             :                   }
  127649             :                end->set_parent(initializedName);
  127650             :                ROSE_ASSERT(end->get_parent() != NULL);
  127651             :              }
  127652             : #endif
  127653             :         }
  127654             : 
  127655             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  127656           0 :      help.insertCopiedNodePair(this,result);
  127657             : 
  127658             :   // printf ("End of copy SgOmpCriticalStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  127659             : 
  127660             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  127661             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  127662           0 :      help.decrementDepth();
  127663             : 
  127664             :   // Test if this is the root of the copy!
  127665           0 :      if (help.get_depth() == 0)
  127666             :         {
  127667             :        // This is the original calling node.
  127668             : 
  127669             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  127670             :        // printf ("Calling SgOmpCriticalStatement::fixupCopy() (from root of AST being copied) \n");
  127671             : #if ALT_FIXUP_COPY
  127672             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  127673           0 :           fixupCopy_scopes (result,help);
  127674           0 :           fixupCopy_symbols (result,help);
  127675           0 :           fixupCopy_references (result,help);
  127676             : #else
  127677             :           fixupCopy(result,help);
  127678             : #endif
  127679             :        // Allow this to be called recursively, so accumulate the state.
  127680             :        // Also, clear the state in the SgCopyHelp object.
  127681             :        // help.clearState();
  127682             :         }
  127683             : 
  127684           0 :      return result;
  127685             :    }
  127686             : 
  127687             : 
  127688             : /* #line 127689 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  127689             : 
  127690             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  127691             : 
  127692           0 : SgNode* SgOmpDistributeStatement::copy ( SgCopyHelp& help) const
  127693             :    {
  127694           0 :      SgOmpDistributeStatement* result = NULL;
  127695             : 
  127696             :   // printf ("Copy SgOmpDistributeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  127697             : 
  127698             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  127699             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  127700             :   // The default value of the depth is 0, so after this call the depth is 1!
  127701           0 :      help.incrementDepth();
  127702             : 
  127703             : #if 0
  127704             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  127705             :   // but it is not generally true that things can only be copied once!
  127706             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  127707             :   // AstAttribute* existingAttribute = const_cast<SgOmpDistributeStatement*>(this)->attribute["copied"];
  127708             :      bool previouslyCopied = const_cast<SgOmpDistributeStatement*>(this)->attribute.exists("copied");
  127709             :      if (previouslyCopied == true)
  127710             :         {
  127711             :           this->get_file_info()->display("Called from copy SgOmpDistributeStatement: debug");
  127712             :         }
  127713             :      ROSE_ASSERT(previouslyCopied == false);
  127714             : 
  127715             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  127716             :      AstAttribute* newAttribute = new AstAttribute();
  127717             :      ROSE_ASSERT(newAttribute != NULL);
  127718             : 
  127719             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  127720             :      const_cast<SgOmpDistributeStatement*>(this)->attribute.add("copied",newAttribute);
  127721             : #endif
  127722             : 
  127723             :   // Copy data members from base classes
  127724             :   // Copy constructor parameter data member: startOfConstruct_copy
  127725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  127726             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  127727           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  127728           0 :      if ( p_startOfConstruct != NULL ) 
  127729             :         { 
  127730           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  127731             :         } 
  127732             :        else 
  127733             :         { 
  127734             :           startOfConstruct_copy = NULL; 
  127735             :         } 
  127736             :   // Copy constructor parameter data member: body_copy
  127737           0 :      SgStatement* body_copy; 
  127738             :   // case: not a listType for (using conditionalToCopyVariable)body
  127739           0 :           if (get_body() != NULL) 
  127740             :              { 
  127741           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  127742             :              } 
  127743             :             else 
  127744             :              { 
  127745             :                body_copy = NULL; 
  127746             :              } 
  127747             :  
  127748             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  127749             : 
  127750             :   // Build an empty copy of this object (will be filled in, but 
  127751             :   // the parent can't be set and must be set by the caller)
  127752           0 :      result = new SgOmpDistributeStatement(  startOfConstruct_copy, body_copy );
  127753           0 :      ROSE_ASSERT(result != NULL);
  127754             : 
  127755             :   // Copy data members of "this" class
  127756             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  127757             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  127758             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  127759           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  127760           0 :      if ( p_endOfConstruct != NULL ) 
  127761             :         { 
  127762           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  127763             :         } 
  127764             :        else 
  127765             :         { 
  127766             :           endOfConstruct_copy = NULL; 
  127767             :         } 
  127768             :   /* check for a valid pointer and delete if present */ 
  127769           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  127770             :   /* add assignment to result here */ 
  127771           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  127772             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  127773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  127774             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  127775           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  127776           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  127777             :         { 
  127778           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  127779             :         } 
  127780             :        else 
  127781             :         { 
  127782             :           attachedPreprocessingInfoPtr_copy = NULL; 
  127783             :         } 
  127784             :   /* check for a valid pointer and delete if present */ 
  127785           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  127786             :   /* add assignment to result here */ 
  127787           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  127788             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  127789             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  127790             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  127791           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  127792           0 :      if ( p_attributeMechanism != NULL ) 
  127793             :         { 
  127794           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  127795             :         } 
  127796             :        else 
  127797             :         { 
  127798             :           attributeMechanism_copy = NULL; 
  127799             :         } 
  127800             :   /* check for a valid pointer and delete if present */ 
  127801           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  127802             :   /* add assignment to result here */ 
  127803           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  127804             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  127805             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  127806             :   // case: toBeCopied == COPY_DATA for numeric_label
  127807           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  127808           0 :      result->p_numeric_label = numeric_label_copy; 
  127809             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  127810             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  127811             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  127812           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  127813           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  127814             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  127815             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  127816             :   // case: toBeCopied == COPY_DATA for upir_parent
  127817           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  127818           0 :      result->p_upir_parent = upir_parent_copy; 
  127819             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  127820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  127821             :   // case: toBeCopied == COPY_DATA for upir_children
  127822           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  127823           0 :      result->p_upir_children = upir_children_copy; 
  127824             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  127825           0 :      SgOmpClausePtrList clauses_copy; 
  127826             :   // case: listType for clauses
  127827             :   // case: listType (typeIsPointerToList == false) for clauses
  127828           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  127829           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  127830             :         { 
  127831           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  127832           0 :           SgOmpClause* copy_list_element = NULL; 
  127833           0 :           if (source_list_element != NULL) 
  127834             :              { 
  127835           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  127836             :              } 
  127837             :             else 
  127838             :              { 
  127839             :                copy_list_element = NULL; 
  127840             :              } 
  127841           0 :           clauses_copy.push_back(copy_list_element); 
  127842             :         } 
  127843           0 :      result->p_clauses = clauses_copy; 
  127844             :   // case: listType for clauses
  127845             :   // case: listType (typeIsPointerToList == false) for clauses
  127846           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  127847           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  127848             :         { 
  127849           0 :           SgOmpClause* list_element = *clauses_iterator; 
  127850           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  127851             :              { 
  127852           0 :                list_element->set_parent(result); 
  127853             :              } 
  127854             :         } 
  127855             :   // case: not a listType for (using conditionalToSetParent)body
  127856           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  127857             :              { 
  127858           0 :                body_copy->set_parent(result); 
  127859             :              } 
  127860             : 
  127861             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  127862             : 
  127863             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  127864             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  127865             :   // fixupCopy(result,help);
  127866             : 
  127867             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  127868             :   // the Sg_File_Info objects that are built for the new IR nodes.
  127869           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  127870           0 :      if (locatedNode != NULL)
  127871             :         {
  127872             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  127873           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  127874           0 :           ROSE_ASSERT(start != NULL);
  127875             : #if 0
  127876             :        // Debugging information
  127877             :           if (start->get_parent() == NULL)
  127878             :              {
  127879             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127880             :              }
  127881             : #endif
  127882           0 :           start->set_parent(locatedNode);
  127883           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  127884             : 
  127885           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  127886             : 
  127887             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  127888             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  127889             :        // ROSE_ASSERT(end != NULL);
  127890           0 :           if (end == NULL)
  127891             :              {
  127892           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  127893             :              }
  127894             :             else
  127895             :              {
  127896             : #if 0
  127897             :             // Debugging information
  127898             :                if (end->get_parent() == NULL)
  127899             :                   {
  127900             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127901             :                   }
  127902             : #endif
  127903           0 :                end->set_parent(locatedNode);
  127904           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  127905             :              }
  127906             : 
  127907           0 :           SgExpression* expression = isSgExpression(result);
  127908           0 :           if (isSgExpression(this) != NULL)
  127909             :              {
  127910           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  127911             : 
  127912             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  127913           0 :                if (operatorPosition != NULL)
  127914             :                   {
  127915             : #if 0
  127916             :                  // Debugging information
  127917             :                     if (operatorPosition->get_parent() == NULL)
  127918             :                        {
  127919             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127920             :                        }
  127921             : #endif
  127922           0 :                     operatorPosition->set_parent(expression);
  127923           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  127924             :                   }
  127925             :              }
  127926             :         }
  127927             : 
  127928             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  127929           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  127930           0 :      if (initializedName != NULL)
  127931             :         {
  127932             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  127933           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  127934           0 :           ROSE_ASSERT(start != NULL);
  127935             : #if 0
  127936             :        // Debugging information
  127937             :           if (start->get_parent() == NULL)
  127938             :              {
  127939             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127940             :              }
  127941             : #endif
  127942           0 :           start->set_parent(initializedName);
  127943           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  127944             : 
  127945             : #if 0
  127946             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  127947             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  127948             : 
  127949             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  127950             :        // ROSE_ASSERT(end != NULL);
  127951             :           if (end == NULL)
  127952             :              {
  127953             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  127954             :              }
  127955             :             else
  127956             :              {
  127957             :                if (end->get_parent() == NULL)
  127958             :                   {
  127959             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  127960             :                   }
  127961             :                end->set_parent(initializedName);
  127962             :                ROSE_ASSERT(end->get_parent() != NULL);
  127963             :              }
  127964             : #endif
  127965             :         }
  127966             : 
  127967             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  127968           0 :      help.insertCopiedNodePair(this,result);
  127969             : 
  127970             :   // printf ("End of copy SgOmpDistributeStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  127971             : 
  127972             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  127973             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  127974           0 :      help.decrementDepth();
  127975             : 
  127976             :   // Test if this is the root of the copy!
  127977           0 :      if (help.get_depth() == 0)
  127978             :         {
  127979             :        // This is the original calling node.
  127980             : 
  127981             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  127982             :        // printf ("Calling SgOmpDistributeStatement::fixupCopy() (from root of AST being copied) \n");
  127983             : #if ALT_FIXUP_COPY
  127984             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  127985           0 :           fixupCopy_scopes (result,help);
  127986           0 :           fixupCopy_symbols (result,help);
  127987           0 :           fixupCopy_references (result,help);
  127988             : #else
  127989             :           fixupCopy(result,help);
  127990             : #endif
  127991             :        // Allow this to be called recursively, so accumulate the state.
  127992             :        // Also, clear the state in the SgCopyHelp object.
  127993             :        // help.clearState();
  127994             :         }
  127995             : 
  127996           0 :      return result;
  127997             :    }
  127998             : 
  127999             : 
  128000             : /* #line 128001 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  128001             : 
  128002             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128003             : 
  128004           0 : SgNode* SgOmpUnrollStatement::copy ( SgCopyHelp& help) const
  128005             :    {
  128006           0 :      SgOmpUnrollStatement* result = NULL;
  128007             : 
  128008             :   // printf ("Copy SgOmpUnrollStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  128009             : 
  128010             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  128011             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  128012             :   // The default value of the depth is 0, so after this call the depth is 1!
  128013           0 :      help.incrementDepth();
  128014             : 
  128015             : #if 0
  128016             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  128017             :   // but it is not generally true that things can only be copied once!
  128018             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  128019             :   // AstAttribute* existingAttribute = const_cast<SgOmpUnrollStatement*>(this)->attribute["copied"];
  128020             :      bool previouslyCopied = const_cast<SgOmpUnrollStatement*>(this)->attribute.exists("copied");
  128021             :      if (previouslyCopied == true)
  128022             :         {
  128023             :           this->get_file_info()->display("Called from copy SgOmpUnrollStatement: debug");
  128024             :         }
  128025             :      ROSE_ASSERT(previouslyCopied == false);
  128026             : 
  128027             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  128028             :      AstAttribute* newAttribute = new AstAttribute();
  128029             :      ROSE_ASSERT(newAttribute != NULL);
  128030             : 
  128031             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  128032             :      const_cast<SgOmpUnrollStatement*>(this)->attribute.add("copied",newAttribute);
  128033             : #endif
  128034             : 
  128035             :   // Copy data members from base classes
  128036             :   // Copy constructor parameter data member: startOfConstruct_copy
  128037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  128038             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  128039           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  128040           0 :      if ( p_startOfConstruct != NULL ) 
  128041             :         { 
  128042           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  128043             :         } 
  128044             :        else 
  128045             :         { 
  128046             :           startOfConstruct_copy = NULL; 
  128047             :         } 
  128048             :   // Copy constructor parameter data member: body_copy
  128049           0 :      SgStatement* body_copy; 
  128050             :   // case: not a listType for (using conditionalToCopyVariable)body
  128051           0 :           if (get_body() != NULL) 
  128052             :              { 
  128053           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  128054             :              } 
  128055             :             else 
  128056             :              { 
  128057             :                body_copy = NULL; 
  128058             :              } 
  128059             :  
  128060             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128061             : 
  128062             :   // Build an empty copy of this object (will be filled in, but 
  128063             :   // the parent can't be set and must be set by the caller)
  128064           0 :      result = new SgOmpUnrollStatement(  startOfConstruct_copy, body_copy );
  128065           0 :      ROSE_ASSERT(result != NULL);
  128066             : 
  128067             :   // Copy data members of "this" class
  128068             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  128069             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  128070             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  128071           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  128072           0 :      if ( p_endOfConstruct != NULL ) 
  128073             :         { 
  128074           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  128075             :         } 
  128076             :        else 
  128077             :         { 
  128078             :           endOfConstruct_copy = NULL; 
  128079             :         } 
  128080             :   /* check for a valid pointer and delete if present */ 
  128081           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  128082             :   /* add assignment to result here */ 
  128083           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  128084             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  128085             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  128086             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  128087           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  128088           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  128089             :         { 
  128090           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  128091             :         } 
  128092             :        else 
  128093             :         { 
  128094             :           attachedPreprocessingInfoPtr_copy = NULL; 
  128095             :         } 
  128096             :   /* check for a valid pointer and delete if present */ 
  128097           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  128098             :   /* add assignment to result here */ 
  128099           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  128100             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  128101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  128102             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  128103           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  128104           0 :      if ( p_attributeMechanism != NULL ) 
  128105             :         { 
  128106           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  128107             :         } 
  128108             :        else 
  128109             :         { 
  128110             :           attributeMechanism_copy = NULL; 
  128111             :         } 
  128112             :   /* check for a valid pointer and delete if present */ 
  128113           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  128114             :   /* add assignment to result here */ 
  128115           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  128116             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  128117             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  128118             :   // case: toBeCopied == COPY_DATA for numeric_label
  128119           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  128120           0 :      result->p_numeric_label = numeric_label_copy; 
  128121             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  128122             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  128123             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  128124           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  128125           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  128126             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  128127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  128128             :   // case: toBeCopied == COPY_DATA for upir_parent
  128129           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  128130           0 :      result->p_upir_parent = upir_parent_copy; 
  128131             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  128132             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  128133             :   // case: toBeCopied == COPY_DATA for upir_children
  128134           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  128135           0 :      result->p_upir_children = upir_children_copy; 
  128136             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  128137           0 :      SgOmpClausePtrList clauses_copy; 
  128138             :   // case: listType for clauses
  128139             :   // case: listType (typeIsPointerToList == false) for clauses
  128140           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  128141           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  128142             :         { 
  128143           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  128144           0 :           SgOmpClause* copy_list_element = NULL; 
  128145           0 :           if (source_list_element != NULL) 
  128146             :              { 
  128147           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  128148             :              } 
  128149             :             else 
  128150             :              { 
  128151             :                copy_list_element = NULL; 
  128152             :              } 
  128153           0 :           clauses_copy.push_back(copy_list_element); 
  128154             :         } 
  128155           0 :      result->p_clauses = clauses_copy; 
  128156             :   // case: listType for clauses
  128157             :   // case: listType (typeIsPointerToList == false) for clauses
  128158           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  128159           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  128160             :         { 
  128161           0 :           SgOmpClause* list_element = *clauses_iterator; 
  128162           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  128163             :              { 
  128164           0 :                list_element->set_parent(result); 
  128165             :              } 
  128166             :         } 
  128167             :   // case: not a listType for (using conditionalToSetParent)body
  128168           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  128169             :              { 
  128170           0 :                body_copy->set_parent(result); 
  128171             :              } 
  128172             : 
  128173             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128174             : 
  128175             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  128176             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  128177             :   // fixupCopy(result,help);
  128178             : 
  128179             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  128180             :   // the Sg_File_Info objects that are built for the new IR nodes.
  128181           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  128182           0 :      if (locatedNode != NULL)
  128183             :         {
  128184             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  128185           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  128186           0 :           ROSE_ASSERT(start != NULL);
  128187             : #if 0
  128188             :        // Debugging information
  128189             :           if (start->get_parent() == NULL)
  128190             :              {
  128191             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128192             :              }
  128193             : #endif
  128194           0 :           start->set_parent(locatedNode);
  128195           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  128196             : 
  128197           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  128198             : 
  128199             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  128200             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  128201             :        // ROSE_ASSERT(end != NULL);
  128202           0 :           if (end == NULL)
  128203             :              {
  128204           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  128205             :              }
  128206             :             else
  128207             :              {
  128208             : #if 0
  128209             :             // Debugging information
  128210             :                if (end->get_parent() == NULL)
  128211             :                   {
  128212             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128213             :                   }
  128214             : #endif
  128215           0 :                end->set_parent(locatedNode);
  128216           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  128217             :              }
  128218             : 
  128219           0 :           SgExpression* expression = isSgExpression(result);
  128220           0 :           if (isSgExpression(this) != NULL)
  128221             :              {
  128222           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  128223             : 
  128224             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  128225           0 :                if (operatorPosition != NULL)
  128226             :                   {
  128227             : #if 0
  128228             :                  // Debugging information
  128229             :                     if (operatorPosition->get_parent() == NULL)
  128230             :                        {
  128231             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128232             :                        }
  128233             : #endif
  128234           0 :                     operatorPosition->set_parent(expression);
  128235           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  128236             :                   }
  128237             :              }
  128238             :         }
  128239             : 
  128240             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  128241           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  128242           0 :      if (initializedName != NULL)
  128243             :         {
  128244             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  128245           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  128246           0 :           ROSE_ASSERT(start != NULL);
  128247             : #if 0
  128248             :        // Debugging information
  128249             :           if (start->get_parent() == NULL)
  128250             :              {
  128251             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128252             :              }
  128253             : #endif
  128254           0 :           start->set_parent(initializedName);
  128255           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  128256             : 
  128257             : #if 0
  128258             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  128259             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  128260             : 
  128261             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  128262             :        // ROSE_ASSERT(end != NULL);
  128263             :           if (end == NULL)
  128264             :              {
  128265             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  128266             :              }
  128267             :             else
  128268             :              {
  128269             :                if (end->get_parent() == NULL)
  128270             :                   {
  128271             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128272             :                   }
  128273             :                end->set_parent(initializedName);
  128274             :                ROSE_ASSERT(end->get_parent() != NULL);
  128275             :              }
  128276             : #endif
  128277             :         }
  128278             : 
  128279             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  128280           0 :      help.insertCopiedNodePair(this,result);
  128281             : 
  128282             :   // printf ("End of copy SgOmpUnrollStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  128283             : 
  128284             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  128285             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  128286           0 :      help.decrementDepth();
  128287             : 
  128288             :   // Test if this is the root of the copy!
  128289           0 :      if (help.get_depth() == 0)
  128290             :         {
  128291             :        // This is the original calling node.
  128292             : 
  128293             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  128294             :        // printf ("Calling SgOmpUnrollStatement::fixupCopy() (from root of AST being copied) \n");
  128295             : #if ALT_FIXUP_COPY
  128296             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  128297           0 :           fixupCopy_scopes (result,help);
  128298           0 :           fixupCopy_symbols (result,help);
  128299           0 :           fixupCopy_references (result,help);
  128300             : #else
  128301             :           fixupCopy(result,help);
  128302             : #endif
  128303             :        // Allow this to be called recursively, so accumulate the state.
  128304             :        // Also, clear the state in the SgCopyHelp object.
  128305             :        // help.clearState();
  128306             :         }
  128307             : 
  128308           0 :      return result;
  128309             :    }
  128310             : 
  128311             : 
  128312             : /* #line 128313 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  128313             : 
  128314             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128315             : 
  128316           0 : SgNode* SgOmpTileStatement::copy ( SgCopyHelp& help) const
  128317             :    {
  128318           0 :      SgOmpTileStatement* result = NULL;
  128319             : 
  128320             :   // printf ("Copy SgOmpTileStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  128321             : 
  128322             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  128323             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  128324             :   // The default value of the depth is 0, so after this call the depth is 1!
  128325           0 :      help.incrementDepth();
  128326             : 
  128327             : #if 0
  128328             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  128329             :   // but it is not generally true that things can only be copied once!
  128330             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  128331             :   // AstAttribute* existingAttribute = const_cast<SgOmpTileStatement*>(this)->attribute["copied"];
  128332             :      bool previouslyCopied = const_cast<SgOmpTileStatement*>(this)->attribute.exists("copied");
  128333             :      if (previouslyCopied == true)
  128334             :         {
  128335             :           this->get_file_info()->display("Called from copy SgOmpTileStatement: debug");
  128336             :         }
  128337             :      ROSE_ASSERT(previouslyCopied == false);
  128338             : 
  128339             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  128340             :      AstAttribute* newAttribute = new AstAttribute();
  128341             :      ROSE_ASSERT(newAttribute != NULL);
  128342             : 
  128343             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  128344             :      const_cast<SgOmpTileStatement*>(this)->attribute.add("copied",newAttribute);
  128345             : #endif
  128346             : 
  128347             :   // Copy data members from base classes
  128348             :   // Copy constructor parameter data member: startOfConstruct_copy
  128349             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  128350             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  128351           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  128352           0 :      if ( p_startOfConstruct != NULL ) 
  128353             :         { 
  128354           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  128355             :         } 
  128356             :        else 
  128357             :         { 
  128358             :           startOfConstruct_copy = NULL; 
  128359             :         } 
  128360             :   // Copy constructor parameter data member: body_copy
  128361           0 :      SgStatement* body_copy; 
  128362             :   // case: not a listType for (using conditionalToCopyVariable)body
  128363           0 :           if (get_body() != NULL) 
  128364             :              { 
  128365           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  128366             :              } 
  128367             :             else 
  128368             :              { 
  128369             :                body_copy = NULL; 
  128370             :              } 
  128371             :  
  128372             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128373             : 
  128374             :   // Build an empty copy of this object (will be filled in, but 
  128375             :   // the parent can't be set and must be set by the caller)
  128376           0 :      result = new SgOmpTileStatement(  startOfConstruct_copy, body_copy );
  128377           0 :      ROSE_ASSERT(result != NULL);
  128378             : 
  128379             :   // Copy data members of "this" class
  128380             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  128381             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  128382             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  128383           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  128384           0 :      if ( p_endOfConstruct != NULL ) 
  128385             :         { 
  128386           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  128387             :         } 
  128388             :        else 
  128389             :         { 
  128390             :           endOfConstruct_copy = NULL; 
  128391             :         } 
  128392             :   /* check for a valid pointer and delete if present */ 
  128393           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  128394             :   /* add assignment to result here */ 
  128395           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  128396             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  128397             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  128398             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  128399           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  128400           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  128401             :         { 
  128402           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  128403             :         } 
  128404             :        else 
  128405             :         { 
  128406             :           attachedPreprocessingInfoPtr_copy = NULL; 
  128407             :         } 
  128408             :   /* check for a valid pointer and delete if present */ 
  128409           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  128410             :   /* add assignment to result here */ 
  128411           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  128412             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  128413             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  128414             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  128415           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  128416           0 :      if ( p_attributeMechanism != NULL ) 
  128417             :         { 
  128418           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  128419             :         } 
  128420             :        else 
  128421             :         { 
  128422             :           attributeMechanism_copy = NULL; 
  128423             :         } 
  128424             :   /* check for a valid pointer and delete if present */ 
  128425           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  128426             :   /* add assignment to result here */ 
  128427           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  128428             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  128429             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  128430             :   // case: toBeCopied == COPY_DATA for numeric_label
  128431           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  128432           0 :      result->p_numeric_label = numeric_label_copy; 
  128433             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  128434             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  128435             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  128436           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  128437           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  128438             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  128439             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  128440             :   // case: toBeCopied == COPY_DATA for upir_parent
  128441           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  128442           0 :      result->p_upir_parent = upir_parent_copy; 
  128443             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  128444             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  128445             :   // case: toBeCopied == COPY_DATA for upir_children
  128446           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  128447           0 :      result->p_upir_children = upir_children_copy; 
  128448             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  128449           0 :      SgOmpClausePtrList clauses_copy; 
  128450             :   // case: listType for clauses
  128451             :   // case: listType (typeIsPointerToList == false) for clauses
  128452           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  128453           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  128454             :         { 
  128455           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  128456           0 :           SgOmpClause* copy_list_element = NULL; 
  128457           0 :           if (source_list_element != NULL) 
  128458             :              { 
  128459           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  128460             :              } 
  128461             :             else 
  128462             :              { 
  128463             :                copy_list_element = NULL; 
  128464             :              } 
  128465           0 :           clauses_copy.push_back(copy_list_element); 
  128466             :         } 
  128467           0 :      result->p_clauses = clauses_copy; 
  128468             :   // case: listType for clauses
  128469             :   // case: listType (typeIsPointerToList == false) for clauses
  128470           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  128471           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  128472             :         { 
  128473           0 :           SgOmpClause* list_element = *clauses_iterator; 
  128474           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  128475             :              { 
  128476           0 :                list_element->set_parent(result); 
  128477             :              } 
  128478             :         } 
  128479             :   // case: not a listType for (using conditionalToSetParent)body
  128480           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  128481             :              { 
  128482           0 :                body_copy->set_parent(result); 
  128483             :              } 
  128484             : 
  128485             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128486             : 
  128487             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  128488             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  128489             :   // fixupCopy(result,help);
  128490             : 
  128491             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  128492             :   // the Sg_File_Info objects that are built for the new IR nodes.
  128493           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  128494           0 :      if (locatedNode != NULL)
  128495             :         {
  128496             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  128497           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  128498           0 :           ROSE_ASSERT(start != NULL);
  128499             : #if 0
  128500             :        // Debugging information
  128501             :           if (start->get_parent() == NULL)
  128502             :              {
  128503             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128504             :              }
  128505             : #endif
  128506           0 :           start->set_parent(locatedNode);
  128507           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  128508             : 
  128509           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  128510             : 
  128511             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  128512             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  128513             :        // ROSE_ASSERT(end != NULL);
  128514           0 :           if (end == NULL)
  128515             :              {
  128516           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  128517             :              }
  128518             :             else
  128519             :              {
  128520             : #if 0
  128521             :             // Debugging information
  128522             :                if (end->get_parent() == NULL)
  128523             :                   {
  128524             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128525             :                   }
  128526             : #endif
  128527           0 :                end->set_parent(locatedNode);
  128528           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  128529             :              }
  128530             : 
  128531           0 :           SgExpression* expression = isSgExpression(result);
  128532           0 :           if (isSgExpression(this) != NULL)
  128533             :              {
  128534           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  128535             : 
  128536             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  128537           0 :                if (operatorPosition != NULL)
  128538             :                   {
  128539             : #if 0
  128540             :                  // Debugging information
  128541             :                     if (operatorPosition->get_parent() == NULL)
  128542             :                        {
  128543             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128544             :                        }
  128545             : #endif
  128546           0 :                     operatorPosition->set_parent(expression);
  128547           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  128548             :                   }
  128549             :              }
  128550             :         }
  128551             : 
  128552             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  128553           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  128554           0 :      if (initializedName != NULL)
  128555             :         {
  128556             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  128557           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  128558           0 :           ROSE_ASSERT(start != NULL);
  128559             : #if 0
  128560             :        // Debugging information
  128561             :           if (start->get_parent() == NULL)
  128562             :              {
  128563             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128564             :              }
  128565             : #endif
  128566           0 :           start->set_parent(initializedName);
  128567           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  128568             : 
  128569             : #if 0
  128570             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  128571             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  128572             : 
  128573             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  128574             :        // ROSE_ASSERT(end != NULL);
  128575             :           if (end == NULL)
  128576             :              {
  128577             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  128578             :              }
  128579             :             else
  128580             :              {
  128581             :                if (end->get_parent() == NULL)
  128582             :                   {
  128583             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128584             :                   }
  128585             :                end->set_parent(initializedName);
  128586             :                ROSE_ASSERT(end->get_parent() != NULL);
  128587             :              }
  128588             : #endif
  128589             :         }
  128590             : 
  128591             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  128592           0 :      help.insertCopiedNodePair(this,result);
  128593             : 
  128594             :   // printf ("End of copy SgOmpTileStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  128595             : 
  128596             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  128597             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  128598           0 :      help.decrementDepth();
  128599             : 
  128600             :   // Test if this is the root of the copy!
  128601           0 :      if (help.get_depth() == 0)
  128602             :         {
  128603             :        // This is the original calling node.
  128604             : 
  128605             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  128606             :        // printf ("Calling SgOmpTileStatement::fixupCopy() (from root of AST being copied) \n");
  128607             : #if ALT_FIXUP_COPY
  128608             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  128609           0 :           fixupCopy_scopes (result,help);
  128610           0 :           fixupCopy_symbols (result,help);
  128611           0 :           fixupCopy_references (result,help);
  128612             : #else
  128613             :           fixupCopy(result,help);
  128614             : #endif
  128615             :        // Allow this to be called recursively, so accumulate the state.
  128616             :        // Also, clear the state in the SgCopyHelp object.
  128617             :        // help.clearState();
  128618             :         }
  128619             : 
  128620           0 :      return result;
  128621             :    }
  128622             : 
  128623             : 
  128624             : /* #line 128625 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  128625             : 
  128626             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128627             : 
  128628           0 : SgNode* SgUpirLoopStatement::copy ( SgCopyHelp& help) const
  128629             :    {
  128630           0 :      SgUpirLoopStatement* result = NULL;
  128631             : 
  128632             :   // printf ("Copy SgUpirLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  128633             : 
  128634             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  128635             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  128636             :   // The default value of the depth is 0, so after this call the depth is 1!
  128637           0 :      help.incrementDepth();
  128638             : 
  128639             : #if 0
  128640             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  128641             :   // but it is not generally true that things can only be copied once!
  128642             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  128643             :   // AstAttribute* existingAttribute = const_cast<SgUpirLoopStatement*>(this)->attribute["copied"];
  128644             :      bool previouslyCopied = const_cast<SgUpirLoopStatement*>(this)->attribute.exists("copied");
  128645             :      if (previouslyCopied == true)
  128646             :         {
  128647             :           this->get_file_info()->display("Called from copy SgUpirLoopStatement: debug");
  128648             :         }
  128649             :      ROSE_ASSERT(previouslyCopied == false);
  128650             : 
  128651             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  128652             :      AstAttribute* newAttribute = new AstAttribute();
  128653             :      ROSE_ASSERT(newAttribute != NULL);
  128654             : 
  128655             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  128656             :      const_cast<SgUpirLoopStatement*>(this)->attribute.add("copied",newAttribute);
  128657             : #endif
  128658             : 
  128659             :   // Copy data members from base classes
  128660             :   // Copy constructor parameter data member: startOfConstruct_copy
  128661             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  128662             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  128663           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  128664           0 :      if ( p_startOfConstruct != NULL ) 
  128665             :         { 
  128666           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  128667             :         } 
  128668             :        else 
  128669             :         { 
  128670             :           startOfConstruct_copy = NULL; 
  128671             :         } 
  128672             :   // Copy constructor parameter data member: body_copy
  128673           0 :      SgStatement* body_copy; 
  128674             :   // case: not a listType for (using conditionalToCopyVariable)body
  128675           0 :           if (get_body() != NULL) 
  128676             :              { 
  128677           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  128678             :              } 
  128679             :             else 
  128680             :              { 
  128681             :                body_copy = NULL; 
  128682             :              } 
  128683             :  
  128684             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128685             : 
  128686             :   // Build an empty copy of this object (will be filled in, but 
  128687             :   // the parent can't be set and must be set by the caller)
  128688           0 :      result = new SgUpirLoopStatement(  startOfConstruct_copy, body_copy );
  128689           0 :      ROSE_ASSERT(result != NULL);
  128690             : 
  128691             :   // Copy data members of "this" class
  128692             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  128693             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  128694             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  128695           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  128696           0 :      if ( p_endOfConstruct != NULL ) 
  128697             :         { 
  128698           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  128699             :         } 
  128700             :        else 
  128701             :         { 
  128702             :           endOfConstruct_copy = NULL; 
  128703             :         } 
  128704             :   /* check for a valid pointer and delete if present */ 
  128705           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  128706             :   /* add assignment to result here */ 
  128707           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  128708             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  128709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  128710             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  128711           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  128712           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  128713             :         { 
  128714           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  128715             :         } 
  128716             :        else 
  128717             :         { 
  128718             :           attachedPreprocessingInfoPtr_copy = NULL; 
  128719             :         } 
  128720             :   /* check for a valid pointer and delete if present */ 
  128721           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  128722             :   /* add assignment to result here */ 
  128723           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  128724             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  128725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  128726             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  128727           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  128728           0 :      if ( p_attributeMechanism != NULL ) 
  128729             :         { 
  128730           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  128731             :         } 
  128732             :        else 
  128733             :         { 
  128734             :           attributeMechanism_copy = NULL; 
  128735             :         } 
  128736             :   /* check for a valid pointer and delete if present */ 
  128737           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  128738             :   /* add assignment to result here */ 
  128739           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  128740             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  128741             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  128742             :   // case: toBeCopied == COPY_DATA for numeric_label
  128743           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  128744           0 :      result->p_numeric_label = numeric_label_copy; 
  128745             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  128746             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  128747             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  128748           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  128749           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  128750             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  128751             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  128752             :   // case: toBeCopied == COPY_DATA for upir_parent
  128753           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  128754           0 :      result->p_upir_parent = upir_parent_copy; 
  128755             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  128756             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  128757             :   // case: toBeCopied == COPY_DATA for upir_children
  128758           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  128759           0 :      result->p_upir_children = upir_children_copy; 
  128760             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  128761           0 :      SgOmpClausePtrList clauses_copy; 
  128762             :   // case: listType for clauses
  128763             :   // case: listType (typeIsPointerToList == false) for clauses
  128764           0 :      SgOmpClausePtrList::const_iterator source_clauses_iterator = get_clauses().begin(); 
  128765           0 :      for ( /* empty by design */; source_clauses_iterator != get_clauses().end(); ++source_clauses_iterator) 
  128766             :         { 
  128767           0 :           SgOmpClause* source_list_element = *source_clauses_iterator; 
  128768           0 :           SgOmpClause* copy_list_element = NULL; 
  128769           0 :           if (source_list_element != NULL) 
  128770             :              { 
  128771           0 :                copy_list_element = static_cast<SgOmpClause*>(help.copyAst(*source_clauses_iterator)); 
  128772             :              } 
  128773             :             else 
  128774             :              { 
  128775             :                copy_list_element = NULL; 
  128776             :              } 
  128777           0 :           clauses_copy.push_back(copy_list_element); 
  128778             :         } 
  128779           0 :      result->p_clauses = clauses_copy; 
  128780             :   // case: listType for clauses
  128781             :   // case: listType (typeIsPointerToList == false) for clauses
  128782           0 :      SgOmpClausePtrList::const_iterator clauses_iterator = result->get_clauses().begin(); 
  128783           0 :      for ( /* empty by design */; clauses_iterator != result->get_clauses().end(); ++clauses_iterator) 
  128784             :         { 
  128785           0 :           SgOmpClause* list_element = *clauses_iterator; 
  128786           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  128787             :              { 
  128788           0 :                list_element->set_parent(result); 
  128789             :              } 
  128790             :         } 
  128791             :   // Copy non-constructor parameter data member (access function): induction_copy
  128792             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for induction
  128793             :   // case: toBeCopied == COPY_DATA for induction
  128794           0 :      SgInitializedName* induction_copy = p_induction; 
  128795           0 :      result->p_induction = induction_copy; 
  128796             :   // Copy non-constructor parameter data member (access function): lower_bound_copy
  128797             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lower_bound
  128798             :   // case: toBeCopied == COPY_DATA for lower_bound
  128799           0 :      SgExpression* lower_bound_copy = p_lower_bound; 
  128800           0 :      result->p_lower_bound = lower_bound_copy; 
  128801             :   // Copy non-constructor parameter data member (access function): upper_bound_copy
  128802             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upper_bound
  128803             :   // case: toBeCopied == COPY_DATA for upper_bound
  128804           0 :      SgExpression* upper_bound_copy = p_upper_bound; 
  128805           0 :      result->p_upper_bound = upper_bound_copy; 
  128806             :   // Copy non-constructor parameter data member (access function): step_copy
  128807             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for step
  128808             :   // case: toBeCopied == COPY_DATA for step
  128809           0 :      SgExpression* step_copy = p_step; 
  128810           0 :      result->p_step = step_copy; 
  128811             :   // Copy non-constructor parameter data member (access function): incremental_copy
  128812             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for incremental
  128813             :   // case: toBeCopied == COPY_DATA for incremental
  128814           0 :      bool incremental_copy = p_incremental; 
  128815           0 :      result->p_incremental = incremental_copy; 
  128816             :   // case: not a listType for (using conditionalToSetParent)body
  128817           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  128818             :              { 
  128819           0 :                body_copy->set_parent(result); 
  128820             :              } 
  128821             : 
  128822             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128823             : 
  128824             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  128825             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  128826             :   // fixupCopy(result,help);
  128827             : 
  128828             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  128829             :   // the Sg_File_Info objects that are built for the new IR nodes.
  128830           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  128831           0 :      if (locatedNode != NULL)
  128832             :         {
  128833             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  128834           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  128835           0 :           ROSE_ASSERT(start != NULL);
  128836             : #if 0
  128837             :        // Debugging information
  128838             :           if (start->get_parent() == NULL)
  128839             :              {
  128840             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128841             :              }
  128842             : #endif
  128843           0 :           start->set_parent(locatedNode);
  128844           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  128845             : 
  128846           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  128847             : 
  128848             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  128849             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  128850             :        // ROSE_ASSERT(end != NULL);
  128851           0 :           if (end == NULL)
  128852             :              {
  128853           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  128854             :              }
  128855             :             else
  128856             :              {
  128857             : #if 0
  128858             :             // Debugging information
  128859             :                if (end->get_parent() == NULL)
  128860             :                   {
  128861             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128862             :                   }
  128863             : #endif
  128864           0 :                end->set_parent(locatedNode);
  128865           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  128866             :              }
  128867             : 
  128868           0 :           SgExpression* expression = isSgExpression(result);
  128869           0 :           if (isSgExpression(this) != NULL)
  128870             :              {
  128871           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  128872             : 
  128873             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  128874           0 :                if (operatorPosition != NULL)
  128875             :                   {
  128876             : #if 0
  128877             :                  // Debugging information
  128878             :                     if (operatorPosition->get_parent() == NULL)
  128879             :                        {
  128880             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128881             :                        }
  128882             : #endif
  128883           0 :                     operatorPosition->set_parent(expression);
  128884           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  128885             :                   }
  128886             :              }
  128887             :         }
  128888             : 
  128889             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  128890           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  128891           0 :      if (initializedName != NULL)
  128892             :         {
  128893             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  128894           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  128895           0 :           ROSE_ASSERT(start != NULL);
  128896             : #if 0
  128897             :        // Debugging information
  128898             :           if (start->get_parent() == NULL)
  128899             :              {
  128900             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128901             :              }
  128902             : #endif
  128903           0 :           start->set_parent(initializedName);
  128904           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  128905             : 
  128906             : #if 0
  128907             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  128908             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  128909             : 
  128910             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  128911             :        // ROSE_ASSERT(end != NULL);
  128912             :           if (end == NULL)
  128913             :              {
  128914             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  128915             :              }
  128916             :             else
  128917             :              {
  128918             :                if (end->get_parent() == NULL)
  128919             :                   {
  128920             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  128921             :                   }
  128922             :                end->set_parent(initializedName);
  128923             :                ROSE_ASSERT(end->get_parent() != NULL);
  128924             :              }
  128925             : #endif
  128926             :         }
  128927             : 
  128928             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  128929           0 :      help.insertCopiedNodePair(this,result);
  128930             : 
  128931             :   // printf ("End of copy SgUpirLoopStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  128932             : 
  128933             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  128934             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  128935           0 :      help.decrementDepth();
  128936             : 
  128937             :   // Test if this is the root of the copy!
  128938           0 :      if (help.get_depth() == 0)
  128939             :         {
  128940             :        // This is the original calling node.
  128941             : 
  128942             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  128943             :        // printf ("Calling SgUpirLoopStatement::fixupCopy() (from root of AST being copied) \n");
  128944             : #if ALT_FIXUP_COPY
  128945             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  128946           0 :           fixupCopy_scopes (result,help);
  128947           0 :           fixupCopy_symbols (result,help);
  128948           0 :           fixupCopy_references (result,help);
  128949             : #else
  128950             :           fixupCopy(result,help);
  128951             : #endif
  128952             :        // Allow this to be called recursively, so accumulate the state.
  128953             :        // Also, clear the state in the SgCopyHelp object.
  128954             :        // help.clearState();
  128955             :         }
  128956             : 
  128957           0 :      return result;
  128958             :    }
  128959             : 
  128960             : 
  128961             : /* #line 128962 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  128962             : 
  128963             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  128964             : 
  128965           0 : SgNode* SgUpirFieldStatement::copy ( SgCopyHelp& help) const
  128966             :    {
  128967           0 :      SgUpirFieldStatement* result = NULL;
  128968             : 
  128969             :   // printf ("Copy SgUpirFieldStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  128970             : 
  128971             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  128972             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  128973             :   // The default value of the depth is 0, so after this call the depth is 1!
  128974           0 :      help.incrementDepth();
  128975             : 
  128976             : #if 0
  128977             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  128978             :   // but it is not generally true that things can only be copied once!
  128979             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  128980             :   // AstAttribute* existingAttribute = const_cast<SgUpirFieldStatement*>(this)->attribute["copied"];
  128981             :      bool previouslyCopied = const_cast<SgUpirFieldStatement*>(this)->attribute.exists("copied");
  128982             :      if (previouslyCopied == true)
  128983             :         {
  128984             :           this->get_file_info()->display("Called from copy SgUpirFieldStatement: debug");
  128985             :         }
  128986             :      ROSE_ASSERT(previouslyCopied == false);
  128987             : 
  128988             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  128989             :      AstAttribute* newAttribute = new AstAttribute();
  128990             :      ROSE_ASSERT(newAttribute != NULL);
  128991             : 
  128992             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  128993             :      const_cast<SgUpirFieldStatement*>(this)->attribute.add("copied",newAttribute);
  128994             : #endif
  128995             : 
  128996             :   // Copy data members from base classes
  128997             :   // Copy constructor parameter data member: startOfConstruct_copy
  128998             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  128999             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  129000           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  129001           0 :      if ( p_startOfConstruct != NULL ) 
  129002             :         { 
  129003           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  129004             :         } 
  129005             :        else 
  129006             :         { 
  129007             :           startOfConstruct_copy = NULL; 
  129008             :         } 
  129009             :  
  129010             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129011             : 
  129012             :   // Build an empty copy of this object (will be filled in, but 
  129013             :   // the parent can't be set and must be set by the caller)
  129014           0 :      result = new SgUpirFieldStatement(  startOfConstruct_copy );
  129015           0 :      ROSE_ASSERT(result != NULL);
  129016             : 
  129017             :   // Copy data members of "this" class
  129018             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  129019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  129020             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  129021           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  129022           0 :      if ( p_endOfConstruct != NULL ) 
  129023             :         { 
  129024           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  129025             :         } 
  129026             :        else 
  129027             :         { 
  129028             :           endOfConstruct_copy = NULL; 
  129029             :         } 
  129030             :   /* check for a valid pointer and delete if present */ 
  129031           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  129032             :   /* add assignment to result here */ 
  129033           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  129034             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  129035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  129036             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  129037           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  129038           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  129039             :         { 
  129040           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  129041             :         } 
  129042             :        else 
  129043             :         { 
  129044             :           attachedPreprocessingInfoPtr_copy = NULL; 
  129045             :         } 
  129046             :   /* check for a valid pointer and delete if present */ 
  129047           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  129048             :   /* add assignment to result here */ 
  129049           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  129050             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  129051             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  129052             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  129053           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  129054           0 :      if ( p_attributeMechanism != NULL ) 
  129055             :         { 
  129056           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  129057             :         } 
  129058             :        else 
  129059             :         { 
  129060             :           attributeMechanism_copy = NULL; 
  129061             :         } 
  129062             :   /* check for a valid pointer and delete if present */ 
  129063           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  129064             :   /* add assignment to result here */ 
  129065           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  129066             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  129067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  129068             :   // case: toBeCopied == COPY_DATA for numeric_label
  129069           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  129070           0 :      result->p_numeric_label = numeric_label_copy; 
  129071             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  129072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  129073             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  129074           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  129075           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  129076             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  129077             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  129078             :   // case: toBeCopied == COPY_DATA for upir_parent
  129079           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  129080           0 :      result->p_upir_parent = upir_parent_copy; 
  129081             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  129082             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  129083             :   // case: toBeCopied == COPY_DATA for upir_children
  129084           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  129085           0 :      result->p_upir_children = upir_children_copy; 
  129086             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  129087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  129088             :   // case: toBeCopied == COPY_DATA for clauses
  129089           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  129090           0 :      result->p_clauses = clauses_copy; 
  129091             : 
  129092             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129093             : 
  129094             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  129095             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  129096             :   // fixupCopy(result,help);
  129097             : 
  129098             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  129099             :   // the Sg_File_Info objects that are built for the new IR nodes.
  129100           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  129101           0 :      if (locatedNode != NULL)
  129102             :         {
  129103             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  129104           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  129105           0 :           ROSE_ASSERT(start != NULL);
  129106             : #if 0
  129107             :        // Debugging information
  129108             :           if (start->get_parent() == NULL)
  129109             :              {
  129110             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129111             :              }
  129112             : #endif
  129113           0 :           start->set_parent(locatedNode);
  129114           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  129115             : 
  129116           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  129117             : 
  129118             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  129119             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  129120             :        // ROSE_ASSERT(end != NULL);
  129121           0 :           if (end == NULL)
  129122             :              {
  129123           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  129124             :              }
  129125             :             else
  129126             :              {
  129127             : #if 0
  129128             :             // Debugging information
  129129             :                if (end->get_parent() == NULL)
  129130             :                   {
  129131             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129132             :                   }
  129133             : #endif
  129134           0 :                end->set_parent(locatedNode);
  129135           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  129136             :              }
  129137             : 
  129138           0 :           SgExpression* expression = isSgExpression(result);
  129139           0 :           if (isSgExpression(this) != NULL)
  129140             :              {
  129141           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  129142             : 
  129143             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  129144           0 :                if (operatorPosition != NULL)
  129145             :                   {
  129146             : #if 0
  129147             :                  // Debugging information
  129148             :                     if (operatorPosition->get_parent() == NULL)
  129149             :                        {
  129150             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129151             :                        }
  129152             : #endif
  129153           0 :                     operatorPosition->set_parent(expression);
  129154           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  129155             :                   }
  129156             :              }
  129157             :         }
  129158             : 
  129159             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  129160           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  129161           0 :      if (initializedName != NULL)
  129162             :         {
  129163             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  129164           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  129165           0 :           ROSE_ASSERT(start != NULL);
  129166             : #if 0
  129167             :        // Debugging information
  129168             :           if (start->get_parent() == NULL)
  129169             :              {
  129170             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129171             :              }
  129172             : #endif
  129173           0 :           start->set_parent(initializedName);
  129174           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  129175             : 
  129176             : #if 0
  129177             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  129178             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  129179             : 
  129180             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  129181             :        // ROSE_ASSERT(end != NULL);
  129182             :           if (end == NULL)
  129183             :              {
  129184             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  129185             :              }
  129186             :             else
  129187             :              {
  129188             :                if (end->get_parent() == NULL)
  129189             :                   {
  129190             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129191             :                   }
  129192             :                end->set_parent(initializedName);
  129193             :                ROSE_ASSERT(end->get_parent() != NULL);
  129194             :              }
  129195             : #endif
  129196             :         }
  129197             : 
  129198             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  129199           0 :      help.insertCopiedNodePair(this,result);
  129200             : 
  129201             :   // printf ("End of copy SgUpirFieldStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  129202             : 
  129203             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  129204             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  129205           0 :      help.decrementDepth();
  129206             : 
  129207             :   // Test if this is the root of the copy!
  129208           0 :      if (help.get_depth() == 0)
  129209             :         {
  129210             :        // This is the original calling node.
  129211             : 
  129212             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  129213             :        // printf ("Calling SgUpirFieldStatement::fixupCopy() (from root of AST being copied) \n");
  129214             : #if ALT_FIXUP_COPY
  129215             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  129216           0 :           fixupCopy_scopes (result,help);
  129217           0 :           fixupCopy_symbols (result,help);
  129218           0 :           fixupCopy_references (result,help);
  129219             : #else
  129220             :           fixupCopy(result,help);
  129221             : #endif
  129222             :        // Allow this to be called recursively, so accumulate the state.
  129223             :        // Also, clear the state in the SgCopyHelp object.
  129224             :        // help.clearState();
  129225             :         }
  129226             : 
  129227           0 :      return result;
  129228             :    }
  129229             : 
  129230             : 
  129231             : /* #line 129232 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  129232             : 
  129233             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129234             : 
  129235           0 : SgNode* SgOmpCancelStatement::copy ( SgCopyHelp& help) const
  129236             :    {
  129237           0 :      SgOmpCancelStatement* result = NULL;
  129238             : 
  129239             :   // printf ("Copy SgOmpCancelStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  129240             : 
  129241             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  129242             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  129243             :   // The default value of the depth is 0, so after this call the depth is 1!
  129244           0 :      help.incrementDepth();
  129245             : 
  129246             : #if 0
  129247             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  129248             :   // but it is not generally true that things can only be copied once!
  129249             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  129250             :   // AstAttribute* existingAttribute = const_cast<SgOmpCancelStatement*>(this)->attribute["copied"];
  129251             :      bool previouslyCopied = const_cast<SgOmpCancelStatement*>(this)->attribute.exists("copied");
  129252             :      if (previouslyCopied == true)
  129253             :         {
  129254             :           this->get_file_info()->display("Called from copy SgOmpCancelStatement: debug");
  129255             :         }
  129256             :      ROSE_ASSERT(previouslyCopied == false);
  129257             : 
  129258             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  129259             :      AstAttribute* newAttribute = new AstAttribute();
  129260             :      ROSE_ASSERT(newAttribute != NULL);
  129261             : 
  129262             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  129263             :      const_cast<SgOmpCancelStatement*>(this)->attribute.add("copied",newAttribute);
  129264             : #endif
  129265             : 
  129266             :   // Copy data members from base classes
  129267             :   // Copy constructor parameter data member: startOfConstruct_copy
  129268             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  129269             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  129270           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  129271           0 :      if ( p_startOfConstruct != NULL ) 
  129272             :         { 
  129273           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  129274             :         } 
  129275             :        else 
  129276             :         { 
  129277             :           startOfConstruct_copy = NULL; 
  129278             :         } 
  129279             :  
  129280             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129281             : 
  129282             :   // Build an empty copy of this object (will be filled in, but 
  129283             :   // the parent can't be set and must be set by the caller)
  129284           0 :      result = new SgOmpCancelStatement(  startOfConstruct_copy );
  129285           0 :      ROSE_ASSERT(result != NULL);
  129286             : 
  129287             :   // Copy data members of "this" class
  129288             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  129289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  129290             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  129291           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  129292           0 :      if ( p_endOfConstruct != NULL ) 
  129293             :         { 
  129294           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  129295             :         } 
  129296             :        else 
  129297             :         { 
  129298             :           endOfConstruct_copy = NULL; 
  129299             :         } 
  129300             :   /* check for a valid pointer and delete if present */ 
  129301           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  129302             :   /* add assignment to result here */ 
  129303           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  129304             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  129305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  129306             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  129307           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  129308           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  129309             :         { 
  129310           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  129311             :         } 
  129312             :        else 
  129313             :         { 
  129314             :           attachedPreprocessingInfoPtr_copy = NULL; 
  129315             :         } 
  129316             :   /* check for a valid pointer and delete if present */ 
  129317           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  129318             :   /* add assignment to result here */ 
  129319           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  129320             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  129321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  129322             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  129323           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  129324           0 :      if ( p_attributeMechanism != NULL ) 
  129325             :         { 
  129326           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  129327             :         } 
  129328             :        else 
  129329             :         { 
  129330             :           attributeMechanism_copy = NULL; 
  129331             :         } 
  129332             :   /* check for a valid pointer and delete if present */ 
  129333           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  129334             :   /* add assignment to result here */ 
  129335           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  129336             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  129337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  129338             :   // case: toBeCopied == COPY_DATA for numeric_label
  129339           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  129340           0 :      result->p_numeric_label = numeric_label_copy; 
  129341             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  129342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  129343             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  129344           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  129345           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  129346             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  129347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  129348             :   // case: toBeCopied == COPY_DATA for upir_parent
  129349           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  129350           0 :      result->p_upir_parent = upir_parent_copy; 
  129351             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  129352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  129353             :   // case: toBeCopied == COPY_DATA for upir_children
  129354           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  129355           0 :      result->p_upir_children = upir_children_copy; 
  129356             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  129357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  129358             :   // case: toBeCopied == COPY_DATA for clauses
  129359           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  129360           0 :      result->p_clauses = clauses_copy; 
  129361             : 
  129362             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129363             : 
  129364             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  129365             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  129366             :   // fixupCopy(result,help);
  129367             : 
  129368             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  129369             :   // the Sg_File_Info objects that are built for the new IR nodes.
  129370           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  129371           0 :      if (locatedNode != NULL)
  129372             :         {
  129373             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  129374           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  129375           0 :           ROSE_ASSERT(start != NULL);
  129376             : #if 0
  129377             :        // Debugging information
  129378             :           if (start->get_parent() == NULL)
  129379             :              {
  129380             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129381             :              }
  129382             : #endif
  129383           0 :           start->set_parent(locatedNode);
  129384           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  129385             : 
  129386           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  129387             : 
  129388             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  129389             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  129390             :        // ROSE_ASSERT(end != NULL);
  129391           0 :           if (end == NULL)
  129392             :              {
  129393           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  129394             :              }
  129395             :             else
  129396             :              {
  129397             : #if 0
  129398             :             // Debugging information
  129399             :                if (end->get_parent() == NULL)
  129400             :                   {
  129401             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129402             :                   }
  129403             : #endif
  129404           0 :                end->set_parent(locatedNode);
  129405           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  129406             :              }
  129407             : 
  129408           0 :           SgExpression* expression = isSgExpression(result);
  129409           0 :           if (isSgExpression(this) != NULL)
  129410             :              {
  129411           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  129412             : 
  129413             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  129414           0 :                if (operatorPosition != NULL)
  129415             :                   {
  129416             : #if 0
  129417             :                  // Debugging information
  129418             :                     if (operatorPosition->get_parent() == NULL)
  129419             :                        {
  129420             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129421             :                        }
  129422             : #endif
  129423           0 :                     operatorPosition->set_parent(expression);
  129424           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  129425             :                   }
  129426             :              }
  129427             :         }
  129428             : 
  129429             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  129430           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  129431           0 :      if (initializedName != NULL)
  129432             :         {
  129433             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  129434           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  129435           0 :           ROSE_ASSERT(start != NULL);
  129436             : #if 0
  129437             :        // Debugging information
  129438             :           if (start->get_parent() == NULL)
  129439             :              {
  129440             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129441             :              }
  129442             : #endif
  129443           0 :           start->set_parent(initializedName);
  129444           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  129445             : 
  129446             : #if 0
  129447             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  129448             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  129449             : 
  129450             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  129451             :        // ROSE_ASSERT(end != NULL);
  129452             :           if (end == NULL)
  129453             :              {
  129454             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  129455             :              }
  129456             :             else
  129457             :              {
  129458             :                if (end->get_parent() == NULL)
  129459             :                   {
  129460             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129461             :                   }
  129462             :                end->set_parent(initializedName);
  129463             :                ROSE_ASSERT(end->get_parent() != NULL);
  129464             :              }
  129465             : #endif
  129466             :         }
  129467             : 
  129468             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  129469           0 :      help.insertCopiedNodePair(this,result);
  129470             : 
  129471             :   // printf ("End of copy SgOmpCancelStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  129472             : 
  129473             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  129474             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  129475           0 :      help.decrementDepth();
  129476             : 
  129477             :   // Test if this is the root of the copy!
  129478           0 :      if (help.get_depth() == 0)
  129479             :         {
  129480             :        // This is the original calling node.
  129481             : 
  129482             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  129483             :        // printf ("Calling SgOmpCancelStatement::fixupCopy() (from root of AST being copied) \n");
  129484             : #if ALT_FIXUP_COPY
  129485             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  129486           0 :           fixupCopy_scopes (result,help);
  129487           0 :           fixupCopy_symbols (result,help);
  129488           0 :           fixupCopy_references (result,help);
  129489             : #else
  129490             :           fixupCopy(result,help);
  129491             : #endif
  129492             :        // Allow this to be called recursively, so accumulate the state.
  129493             :        // Also, clear the state in the SgCopyHelp object.
  129494             :        // help.clearState();
  129495             :         }
  129496             : 
  129497           0 :      return result;
  129498             :    }
  129499             : 
  129500             : 
  129501             : /* #line 129502 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  129502             : 
  129503             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129504             : 
  129505           0 : SgNode* SgOmpCancellationPointStatement::copy ( SgCopyHelp& help) const
  129506             :    {
  129507           0 :      SgOmpCancellationPointStatement* result = NULL;
  129508             : 
  129509             :   // printf ("Copy SgOmpCancellationPointStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  129510             : 
  129511             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  129512             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  129513             :   // The default value of the depth is 0, so after this call the depth is 1!
  129514           0 :      help.incrementDepth();
  129515             : 
  129516             : #if 0
  129517             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  129518             :   // but it is not generally true that things can only be copied once!
  129519             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  129520             :   // AstAttribute* existingAttribute = const_cast<SgOmpCancellationPointStatement*>(this)->attribute["copied"];
  129521             :      bool previouslyCopied = const_cast<SgOmpCancellationPointStatement*>(this)->attribute.exists("copied");
  129522             :      if (previouslyCopied == true)
  129523             :         {
  129524             :           this->get_file_info()->display("Called from copy SgOmpCancellationPointStatement: debug");
  129525             :         }
  129526             :      ROSE_ASSERT(previouslyCopied == false);
  129527             : 
  129528             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  129529             :      AstAttribute* newAttribute = new AstAttribute();
  129530             :      ROSE_ASSERT(newAttribute != NULL);
  129531             : 
  129532             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  129533             :      const_cast<SgOmpCancellationPointStatement*>(this)->attribute.add("copied",newAttribute);
  129534             : #endif
  129535             : 
  129536             :   // Copy data members from base classes
  129537             :   // Copy constructor parameter data member: startOfConstruct_copy
  129538             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  129539             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  129540           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  129541           0 :      if ( p_startOfConstruct != NULL ) 
  129542             :         { 
  129543           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  129544             :         } 
  129545             :        else 
  129546             :         { 
  129547             :           startOfConstruct_copy = NULL; 
  129548             :         } 
  129549             :  
  129550             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129551             : 
  129552             :   // Build an empty copy of this object (will be filled in, but 
  129553             :   // the parent can't be set and must be set by the caller)
  129554           0 :      result = new SgOmpCancellationPointStatement(  startOfConstruct_copy );
  129555           0 :      ROSE_ASSERT(result != NULL);
  129556             : 
  129557             :   // Copy data members of "this" class
  129558             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  129559             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  129560             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  129561           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  129562           0 :      if ( p_endOfConstruct != NULL ) 
  129563             :         { 
  129564           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  129565             :         } 
  129566             :        else 
  129567             :         { 
  129568             :           endOfConstruct_copy = NULL; 
  129569             :         } 
  129570             :   /* check for a valid pointer and delete if present */ 
  129571           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  129572             :   /* add assignment to result here */ 
  129573           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  129574             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  129575             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  129576             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  129577           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  129578           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  129579             :         { 
  129580           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  129581             :         } 
  129582             :        else 
  129583             :         { 
  129584             :           attachedPreprocessingInfoPtr_copy = NULL; 
  129585             :         } 
  129586             :   /* check for a valid pointer and delete if present */ 
  129587           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  129588             :   /* add assignment to result here */ 
  129589           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  129590             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  129591             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  129592             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  129593           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  129594           0 :      if ( p_attributeMechanism != NULL ) 
  129595             :         { 
  129596           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  129597             :         } 
  129598             :        else 
  129599             :         { 
  129600             :           attributeMechanism_copy = NULL; 
  129601             :         } 
  129602             :   /* check for a valid pointer and delete if present */ 
  129603           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  129604             :   /* add assignment to result here */ 
  129605           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  129606             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  129607             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  129608             :   // case: toBeCopied == COPY_DATA for numeric_label
  129609           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  129610           0 :      result->p_numeric_label = numeric_label_copy; 
  129611             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  129612             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  129613             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  129614           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  129615           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  129616             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  129617             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  129618             :   // case: toBeCopied == COPY_DATA for upir_parent
  129619           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  129620           0 :      result->p_upir_parent = upir_parent_copy; 
  129621             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  129622             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  129623             :   // case: toBeCopied == COPY_DATA for upir_children
  129624           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  129625           0 :      result->p_upir_children = upir_children_copy; 
  129626             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  129627             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  129628             :   // case: toBeCopied == COPY_DATA for clauses
  129629           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  129630           0 :      result->p_clauses = clauses_copy; 
  129631             : 
  129632             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129633             : 
  129634             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  129635             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  129636             :   // fixupCopy(result,help);
  129637             : 
  129638             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  129639             :   // the Sg_File_Info objects that are built for the new IR nodes.
  129640           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  129641           0 :      if (locatedNode != NULL)
  129642             :         {
  129643             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  129644           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  129645           0 :           ROSE_ASSERT(start != NULL);
  129646             : #if 0
  129647             :        // Debugging information
  129648             :           if (start->get_parent() == NULL)
  129649             :              {
  129650             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129651             :              }
  129652             : #endif
  129653           0 :           start->set_parent(locatedNode);
  129654           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  129655             : 
  129656           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  129657             : 
  129658             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  129659             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  129660             :        // ROSE_ASSERT(end != NULL);
  129661           0 :           if (end == NULL)
  129662             :              {
  129663           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  129664             :              }
  129665             :             else
  129666             :              {
  129667             : #if 0
  129668             :             // Debugging information
  129669             :                if (end->get_parent() == NULL)
  129670             :                   {
  129671             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129672             :                   }
  129673             : #endif
  129674           0 :                end->set_parent(locatedNode);
  129675           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  129676             :              }
  129677             : 
  129678           0 :           SgExpression* expression = isSgExpression(result);
  129679           0 :           if (isSgExpression(this) != NULL)
  129680             :              {
  129681           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  129682             : 
  129683             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  129684           0 :                if (operatorPosition != NULL)
  129685             :                   {
  129686             : #if 0
  129687             :                  // Debugging information
  129688             :                     if (operatorPosition->get_parent() == NULL)
  129689             :                        {
  129690             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129691             :                        }
  129692             : #endif
  129693           0 :                     operatorPosition->set_parent(expression);
  129694           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  129695             :                   }
  129696             :              }
  129697             :         }
  129698             : 
  129699             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  129700           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  129701           0 :      if (initializedName != NULL)
  129702             :         {
  129703             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  129704           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  129705           0 :           ROSE_ASSERT(start != NULL);
  129706             : #if 0
  129707             :        // Debugging information
  129708             :           if (start->get_parent() == NULL)
  129709             :              {
  129710             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129711             :              }
  129712             : #endif
  129713           0 :           start->set_parent(initializedName);
  129714           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  129715             : 
  129716             : #if 0
  129717             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  129718             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  129719             : 
  129720             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  129721             :        // ROSE_ASSERT(end != NULL);
  129722             :           if (end == NULL)
  129723             :              {
  129724             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  129725             :              }
  129726             :             else
  129727             :              {
  129728             :                if (end->get_parent() == NULL)
  129729             :                   {
  129730             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129731             :                   }
  129732             :                end->set_parent(initializedName);
  129733             :                ROSE_ASSERT(end->get_parent() != NULL);
  129734             :              }
  129735             : #endif
  129736             :         }
  129737             : 
  129738             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  129739           0 :      help.insertCopiedNodePair(this,result);
  129740             : 
  129741             :   // printf ("End of copy SgOmpCancellationPointStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  129742             : 
  129743             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  129744             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  129745           0 :      help.decrementDepth();
  129746             : 
  129747             :   // Test if this is the root of the copy!
  129748           0 :      if (help.get_depth() == 0)
  129749             :         {
  129750             :        // This is the original calling node.
  129751             : 
  129752             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  129753             :        // printf ("Calling SgOmpCancellationPointStatement::fixupCopy() (from root of AST being copied) \n");
  129754             : #if ALT_FIXUP_COPY
  129755             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  129756           0 :           fixupCopy_scopes (result,help);
  129757           0 :           fixupCopy_symbols (result,help);
  129758           0 :           fixupCopy_references (result,help);
  129759             : #else
  129760             :           fixupCopy(result,help);
  129761             : #endif
  129762             :        // Allow this to be called recursively, so accumulate the state.
  129763             :        // Also, clear the state in the SgCopyHelp object.
  129764             :        // help.clearState();
  129765             :         }
  129766             : 
  129767           0 :      return result;
  129768             :    }
  129769             : 
  129770             : 
  129771             : /* #line 129772 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  129772             : 
  129773             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129774             : 
  129775           0 : SgNode* SgOmpTargetUpdateStatement::copy ( SgCopyHelp& help) const
  129776             :    {
  129777           0 :      SgOmpTargetUpdateStatement* result = NULL;
  129778             : 
  129779             :   // printf ("Copy SgOmpTargetUpdateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  129780             : 
  129781             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  129782             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  129783             :   // The default value of the depth is 0, so after this call the depth is 1!
  129784           0 :      help.incrementDepth();
  129785             : 
  129786             : #if 0
  129787             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  129788             :   // but it is not generally true that things can only be copied once!
  129789             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  129790             :   // AstAttribute* existingAttribute = const_cast<SgOmpTargetUpdateStatement*>(this)->attribute["copied"];
  129791             :      bool previouslyCopied = const_cast<SgOmpTargetUpdateStatement*>(this)->attribute.exists("copied");
  129792             :      if (previouslyCopied == true)
  129793             :         {
  129794             :           this->get_file_info()->display("Called from copy SgOmpTargetUpdateStatement: debug");
  129795             :         }
  129796             :      ROSE_ASSERT(previouslyCopied == false);
  129797             : 
  129798             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  129799             :      AstAttribute* newAttribute = new AstAttribute();
  129800             :      ROSE_ASSERT(newAttribute != NULL);
  129801             : 
  129802             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  129803             :      const_cast<SgOmpTargetUpdateStatement*>(this)->attribute.add("copied",newAttribute);
  129804             : #endif
  129805             : 
  129806             :   // Copy data members from base classes
  129807             :   // Copy constructor parameter data member: startOfConstruct_copy
  129808             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  129809             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  129810           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  129811           0 :      if ( p_startOfConstruct != NULL ) 
  129812             :         { 
  129813           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  129814             :         } 
  129815             :        else 
  129816             :         { 
  129817             :           startOfConstruct_copy = NULL; 
  129818             :         } 
  129819             :  
  129820             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129821             : 
  129822             :   // Build an empty copy of this object (will be filled in, but 
  129823             :   // the parent can't be set and must be set by the caller)
  129824           0 :      result = new SgOmpTargetUpdateStatement(  startOfConstruct_copy );
  129825           0 :      ROSE_ASSERT(result != NULL);
  129826             : 
  129827             :   // Copy data members of "this" class
  129828             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  129829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  129830             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  129831           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  129832           0 :      if ( p_endOfConstruct != NULL ) 
  129833             :         { 
  129834           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  129835             :         } 
  129836             :        else 
  129837             :         { 
  129838             :           endOfConstruct_copy = NULL; 
  129839             :         } 
  129840             :   /* check for a valid pointer and delete if present */ 
  129841           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  129842             :   /* add assignment to result here */ 
  129843           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  129844             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  129845             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  129846             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  129847           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  129848           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  129849             :         { 
  129850           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  129851             :         } 
  129852             :        else 
  129853             :         { 
  129854             :           attachedPreprocessingInfoPtr_copy = NULL; 
  129855             :         } 
  129856             :   /* check for a valid pointer and delete if present */ 
  129857           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  129858             :   /* add assignment to result here */ 
  129859           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  129860             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  129861             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  129862             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  129863           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  129864           0 :      if ( p_attributeMechanism != NULL ) 
  129865             :         { 
  129866           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  129867             :         } 
  129868             :        else 
  129869             :         { 
  129870             :           attributeMechanism_copy = NULL; 
  129871             :         } 
  129872             :   /* check for a valid pointer and delete if present */ 
  129873           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  129874             :   /* add assignment to result here */ 
  129875           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  129876             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  129877             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  129878             :   // case: toBeCopied == COPY_DATA for numeric_label
  129879           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  129880           0 :      result->p_numeric_label = numeric_label_copy; 
  129881             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  129882             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  129883             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  129884           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  129885           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  129886             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  129887             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  129888             :   // case: toBeCopied == COPY_DATA for upir_parent
  129889           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  129890           0 :      result->p_upir_parent = upir_parent_copy; 
  129891             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  129892             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  129893             :   // case: toBeCopied == COPY_DATA for upir_children
  129894           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  129895           0 :      result->p_upir_children = upir_children_copy; 
  129896             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  129897             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  129898             :   // case: toBeCopied == COPY_DATA for clauses
  129899           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  129900           0 :      result->p_clauses = clauses_copy; 
  129901             : 
  129902             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  129903             : 
  129904             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  129905             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  129906             :   // fixupCopy(result,help);
  129907             : 
  129908             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  129909             :   // the Sg_File_Info objects that are built for the new IR nodes.
  129910           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  129911           0 :      if (locatedNode != NULL)
  129912             :         {
  129913             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  129914           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  129915           0 :           ROSE_ASSERT(start != NULL);
  129916             : #if 0
  129917             :        // Debugging information
  129918             :           if (start->get_parent() == NULL)
  129919             :              {
  129920             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129921             :              }
  129922             : #endif
  129923           0 :           start->set_parent(locatedNode);
  129924           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  129925             : 
  129926           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  129927             : 
  129928             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  129929             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  129930             :        // ROSE_ASSERT(end != NULL);
  129931           0 :           if (end == NULL)
  129932             :              {
  129933           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  129934             :              }
  129935             :             else
  129936             :              {
  129937             : #if 0
  129938             :             // Debugging information
  129939             :                if (end->get_parent() == NULL)
  129940             :                   {
  129941             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129942             :                   }
  129943             : #endif
  129944           0 :                end->set_parent(locatedNode);
  129945           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  129946             :              }
  129947             : 
  129948           0 :           SgExpression* expression = isSgExpression(result);
  129949           0 :           if (isSgExpression(this) != NULL)
  129950             :              {
  129951           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  129952             : 
  129953             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  129954           0 :                if (operatorPosition != NULL)
  129955             :                   {
  129956             : #if 0
  129957             :                  // Debugging information
  129958             :                     if (operatorPosition->get_parent() == NULL)
  129959             :                        {
  129960             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129961             :                        }
  129962             : #endif
  129963           0 :                     operatorPosition->set_parent(expression);
  129964           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  129965             :                   }
  129966             :              }
  129967             :         }
  129968             : 
  129969             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  129970           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  129971           0 :      if (initializedName != NULL)
  129972             :         {
  129973             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  129974           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  129975           0 :           ROSE_ASSERT(start != NULL);
  129976             : #if 0
  129977             :        // Debugging information
  129978             :           if (start->get_parent() == NULL)
  129979             :              {
  129980             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  129981             :              }
  129982             : #endif
  129983           0 :           start->set_parent(initializedName);
  129984           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  129985             : 
  129986             : #if 0
  129987             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  129988             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  129989             : 
  129990             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  129991             :        // ROSE_ASSERT(end != NULL);
  129992             :           if (end == NULL)
  129993             :              {
  129994             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  129995             :              }
  129996             :             else
  129997             :              {
  129998             :                if (end->get_parent() == NULL)
  129999             :                   {
  130000             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130001             :                   }
  130002             :                end->set_parent(initializedName);
  130003             :                ROSE_ASSERT(end->get_parent() != NULL);
  130004             :              }
  130005             : #endif
  130006             :         }
  130007             : 
  130008             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  130009           0 :      help.insertCopiedNodePair(this,result);
  130010             : 
  130011             :   // printf ("End of copy SgOmpTargetUpdateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  130012             : 
  130013             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  130014             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  130015           0 :      help.decrementDepth();
  130016             : 
  130017             :   // Test if this is the root of the copy!
  130018           0 :      if (help.get_depth() == 0)
  130019             :         {
  130020             :        // This is the original calling node.
  130021             : 
  130022             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  130023             :        // printf ("Calling SgOmpTargetUpdateStatement::fixupCopy() (from root of AST being copied) \n");
  130024             : #if ALT_FIXUP_COPY
  130025             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  130026           0 :           fixupCopy_scopes (result,help);
  130027           0 :           fixupCopy_symbols (result,help);
  130028           0 :           fixupCopy_references (result,help);
  130029             : #else
  130030             :           fixupCopy(result,help);
  130031             : #endif
  130032             :        // Allow this to be called recursively, so accumulate the state.
  130033             :        // Also, clear the state in the SgCopyHelp object.
  130034             :        // help.clearState();
  130035             :         }
  130036             : 
  130037           0 :      return result;
  130038             :    }
  130039             : 
  130040             : 
  130041             : /* #line 130042 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  130042             : 
  130043             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130044             : 
  130045           0 : SgNode* SgOmpFlushStatement::copy ( SgCopyHelp& help) const
  130046             :    {
  130047           0 :      SgOmpFlushStatement* result = NULL;
  130048             : 
  130049             :   // printf ("Copy SgOmpFlushStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  130050             : 
  130051             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  130052             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  130053             :   // The default value of the depth is 0, so after this call the depth is 1!
  130054           0 :      help.incrementDepth();
  130055             : 
  130056             : #if 0
  130057             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  130058             :   // but it is not generally true that things can only be copied once!
  130059             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  130060             :   // AstAttribute* existingAttribute = const_cast<SgOmpFlushStatement*>(this)->attribute["copied"];
  130061             :      bool previouslyCopied = const_cast<SgOmpFlushStatement*>(this)->attribute.exists("copied");
  130062             :      if (previouslyCopied == true)
  130063             :         {
  130064             :           this->get_file_info()->display("Called from copy SgOmpFlushStatement: debug");
  130065             :         }
  130066             :      ROSE_ASSERT(previouslyCopied == false);
  130067             : 
  130068             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  130069             :      AstAttribute* newAttribute = new AstAttribute();
  130070             :      ROSE_ASSERT(newAttribute != NULL);
  130071             : 
  130072             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  130073             :      const_cast<SgOmpFlushStatement*>(this)->attribute.add("copied",newAttribute);
  130074             : #endif
  130075             : 
  130076             :   // Copy data members from base classes
  130077             :   // Copy constructor parameter data member: startOfConstruct_copy
  130078             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  130079             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  130080           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  130081           0 :      if ( p_startOfConstruct != NULL ) 
  130082             :         { 
  130083           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  130084             :         } 
  130085             :        else 
  130086             :         { 
  130087             :           startOfConstruct_copy = NULL; 
  130088             :         } 
  130089             :  
  130090             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130091             : 
  130092             :   // Build an empty copy of this object (will be filled in, but 
  130093             :   // the parent can't be set and must be set by the caller)
  130094           0 :      result = new SgOmpFlushStatement(  startOfConstruct_copy );
  130095           0 :      ROSE_ASSERT(result != NULL);
  130096             : 
  130097             :   // Copy data members of "this" class
  130098             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  130099             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  130100             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  130101           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  130102           0 :      if ( p_endOfConstruct != NULL ) 
  130103             :         { 
  130104           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  130105             :         } 
  130106             :        else 
  130107             :         { 
  130108             :           endOfConstruct_copy = NULL; 
  130109             :         } 
  130110             :   /* check for a valid pointer and delete if present */ 
  130111           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  130112             :   /* add assignment to result here */ 
  130113           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  130114             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  130115             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  130116             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  130117           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  130118           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  130119             :         { 
  130120           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  130121             :         } 
  130122             :        else 
  130123             :         { 
  130124             :           attachedPreprocessingInfoPtr_copy = NULL; 
  130125             :         } 
  130126             :   /* check for a valid pointer and delete if present */ 
  130127           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  130128             :   /* add assignment to result here */ 
  130129           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  130130             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  130131             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  130132             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  130133           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  130134           0 :      if ( p_attributeMechanism != NULL ) 
  130135             :         { 
  130136           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  130137             :         } 
  130138             :        else 
  130139             :         { 
  130140             :           attributeMechanism_copy = NULL; 
  130141             :         } 
  130142             :   /* check for a valid pointer and delete if present */ 
  130143           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  130144             :   /* add assignment to result here */ 
  130145           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  130146             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  130147             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  130148             :   // case: toBeCopied == COPY_DATA for numeric_label
  130149           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  130150           0 :      result->p_numeric_label = numeric_label_copy; 
  130151             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  130152             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  130153             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  130154           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  130155           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  130156             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  130157             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  130158             :   // case: toBeCopied == COPY_DATA for upir_parent
  130159           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  130160           0 :      result->p_upir_parent = upir_parent_copy; 
  130161             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  130162             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  130163             :   // case: toBeCopied == COPY_DATA for upir_children
  130164           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  130165           0 :      result->p_upir_children = upir_children_copy; 
  130166             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  130167             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  130168             :   // case: toBeCopied == COPY_DATA for clauses
  130169           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  130170           0 :      result->p_clauses = clauses_copy; 
  130171             :   // Copy non-constructor parameter data member (list access function): result->get_variables()
  130172           0 :      SgVarRefExpPtrList variables_copy; 
  130173             :   // case: listType for variables
  130174             :   // case: listType (typeIsPointerToList == false) for variables
  130175           0 :      SgVarRefExpPtrList::const_iterator source_variables_iterator = get_variables().begin(); 
  130176           0 :      for ( /* empty by design */; source_variables_iterator != get_variables().end(); ++source_variables_iterator) 
  130177             :         { 
  130178           0 :           SgVarRefExp* source_list_element = *source_variables_iterator; 
  130179           0 :           SgVarRefExp* copy_list_element = NULL; 
  130180           0 :           if (source_list_element != NULL) 
  130181             :              { 
  130182           0 :                copy_list_element = static_cast<SgVarRefExp*>(help.copyAst(*source_variables_iterator)); 
  130183             :              } 
  130184             :             else 
  130185             :              { 
  130186             :                copy_list_element = NULL; 
  130187             :              } 
  130188           0 :           variables_copy.push_back(copy_list_element); 
  130189             :         } 
  130190           0 :      result->p_variables = variables_copy; 
  130191             :   // case: listType for variables
  130192             :   // case: listType (typeIsPointerToList == false) for variables
  130193           0 :      SgVarRefExpPtrList::const_iterator variables_iterator = result->get_variables().begin(); 
  130194           0 :      for ( /* empty by design */; variables_iterator != result->get_variables().end(); ++variables_iterator) 
  130195             :         { 
  130196           0 :           SgVarRefExp* list_element = *variables_iterator; 
  130197           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  130198             :              { 
  130199           0 :                list_element->set_parent(result); 
  130200             :              } 
  130201             :         } 
  130202             : 
  130203             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130204             : 
  130205             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  130206             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  130207             :   // fixupCopy(result,help);
  130208             : 
  130209             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  130210             :   // the Sg_File_Info objects that are built for the new IR nodes.
  130211           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  130212           0 :      if (locatedNode != NULL)
  130213             :         {
  130214             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  130215           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  130216           0 :           ROSE_ASSERT(start != NULL);
  130217             : #if 0
  130218             :        // Debugging information
  130219             :           if (start->get_parent() == NULL)
  130220             :              {
  130221             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130222             :              }
  130223             : #endif
  130224           0 :           start->set_parent(locatedNode);
  130225           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  130226             : 
  130227           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  130228             : 
  130229             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  130230             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  130231             :        // ROSE_ASSERT(end != NULL);
  130232           0 :           if (end == NULL)
  130233             :              {
  130234           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  130235             :              }
  130236             :             else
  130237             :              {
  130238             : #if 0
  130239             :             // Debugging information
  130240             :                if (end->get_parent() == NULL)
  130241             :                   {
  130242             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130243             :                   }
  130244             : #endif
  130245           0 :                end->set_parent(locatedNode);
  130246           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  130247             :              }
  130248             : 
  130249           0 :           SgExpression* expression = isSgExpression(result);
  130250           0 :           if (isSgExpression(this) != NULL)
  130251             :              {
  130252           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  130253             : 
  130254             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  130255           0 :                if (operatorPosition != NULL)
  130256             :                   {
  130257             : #if 0
  130258             :                  // Debugging information
  130259             :                     if (operatorPosition->get_parent() == NULL)
  130260             :                        {
  130261             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130262             :                        }
  130263             : #endif
  130264           0 :                     operatorPosition->set_parent(expression);
  130265           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  130266             :                   }
  130267             :              }
  130268             :         }
  130269             : 
  130270             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  130271           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  130272           0 :      if (initializedName != NULL)
  130273             :         {
  130274             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  130275           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  130276           0 :           ROSE_ASSERT(start != NULL);
  130277             : #if 0
  130278             :        // Debugging information
  130279             :           if (start->get_parent() == NULL)
  130280             :              {
  130281             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130282             :              }
  130283             : #endif
  130284           0 :           start->set_parent(initializedName);
  130285           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  130286             : 
  130287             : #if 0
  130288             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  130289             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  130290             : 
  130291             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  130292             :        // ROSE_ASSERT(end != NULL);
  130293             :           if (end == NULL)
  130294             :              {
  130295             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  130296             :              }
  130297             :             else
  130298             :              {
  130299             :                if (end->get_parent() == NULL)
  130300             :                   {
  130301             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130302             :                   }
  130303             :                end->set_parent(initializedName);
  130304             :                ROSE_ASSERT(end->get_parent() != NULL);
  130305             :              }
  130306             : #endif
  130307             :         }
  130308             : 
  130309             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  130310           0 :      help.insertCopiedNodePair(this,result);
  130311             : 
  130312             :   // printf ("End of copy SgOmpFlushStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  130313             : 
  130314             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  130315             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  130316           0 :      help.decrementDepth();
  130317             : 
  130318             :   // Test if this is the root of the copy!
  130319           0 :      if (help.get_depth() == 0)
  130320             :         {
  130321             :        // This is the original calling node.
  130322             : 
  130323             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  130324             :        // printf ("Calling SgOmpFlushStatement::fixupCopy() (from root of AST being copied) \n");
  130325             : #if ALT_FIXUP_COPY
  130326             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  130327           0 :           fixupCopy_scopes (result,help);
  130328           0 :           fixupCopy_symbols (result,help);
  130329           0 :           fixupCopy_references (result,help);
  130330             : #else
  130331             :           fixupCopy(result,help);
  130332             : #endif
  130333             :        // Allow this to be called recursively, so accumulate the state.
  130334             :        // Also, clear the state in the SgCopyHelp object.
  130335             :        // help.clearState();
  130336             :         }
  130337             : 
  130338           0 :      return result;
  130339             :    }
  130340             : 
  130341             : 
  130342             : /* #line 130343 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  130343             : 
  130344             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130345             : 
  130346           0 : SgNode* SgOmpAllocateStatement::copy ( SgCopyHelp& help) const
  130347             :    {
  130348           0 :      SgOmpAllocateStatement* result = NULL;
  130349             : 
  130350             :   // printf ("Copy SgOmpAllocateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  130351             : 
  130352             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  130353             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  130354             :   // The default value of the depth is 0, so after this call the depth is 1!
  130355           0 :      help.incrementDepth();
  130356             : 
  130357             : #if 0
  130358             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  130359             :   // but it is not generally true that things can only be copied once!
  130360             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  130361             :   // AstAttribute* existingAttribute = const_cast<SgOmpAllocateStatement*>(this)->attribute["copied"];
  130362             :      bool previouslyCopied = const_cast<SgOmpAllocateStatement*>(this)->attribute.exists("copied");
  130363             :      if (previouslyCopied == true)
  130364             :         {
  130365             :           this->get_file_info()->display("Called from copy SgOmpAllocateStatement: debug");
  130366             :         }
  130367             :      ROSE_ASSERT(previouslyCopied == false);
  130368             : 
  130369             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  130370             :      AstAttribute* newAttribute = new AstAttribute();
  130371             :      ROSE_ASSERT(newAttribute != NULL);
  130372             : 
  130373             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  130374             :      const_cast<SgOmpAllocateStatement*>(this)->attribute.add("copied",newAttribute);
  130375             : #endif
  130376             : 
  130377             :   // Copy data members from base classes
  130378             :   // Copy constructor parameter data member: startOfConstruct_copy
  130379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  130380             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  130381           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  130382           0 :      if ( p_startOfConstruct != NULL ) 
  130383             :         { 
  130384           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  130385             :         } 
  130386             :        else 
  130387             :         { 
  130388             :           startOfConstruct_copy = NULL; 
  130389             :         } 
  130390             :  
  130391             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130392             : 
  130393             :   // Build an empty copy of this object (will be filled in, but 
  130394             :   // the parent can't be set and must be set by the caller)
  130395           0 :      result = new SgOmpAllocateStatement(  startOfConstruct_copy );
  130396           0 :      ROSE_ASSERT(result != NULL);
  130397             : 
  130398             :   // Copy data members of "this" class
  130399             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  130400             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  130401             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  130402           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  130403           0 :      if ( p_endOfConstruct != NULL ) 
  130404             :         { 
  130405           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  130406             :         } 
  130407             :        else 
  130408             :         { 
  130409             :           endOfConstruct_copy = NULL; 
  130410             :         } 
  130411             :   /* check for a valid pointer and delete if present */ 
  130412           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  130413             :   /* add assignment to result here */ 
  130414           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  130415             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  130416             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  130417             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  130418           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  130419           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  130420             :         { 
  130421           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  130422             :         } 
  130423             :        else 
  130424             :         { 
  130425             :           attachedPreprocessingInfoPtr_copy = NULL; 
  130426             :         } 
  130427             :   /* check for a valid pointer and delete if present */ 
  130428           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  130429             :   /* add assignment to result here */ 
  130430           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  130431             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  130432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  130433             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  130434           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  130435           0 :      if ( p_attributeMechanism != NULL ) 
  130436             :         { 
  130437           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  130438             :         } 
  130439             :        else 
  130440             :         { 
  130441             :           attributeMechanism_copy = NULL; 
  130442             :         } 
  130443             :   /* check for a valid pointer and delete if present */ 
  130444           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  130445             :   /* add assignment to result here */ 
  130446           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  130447             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  130448             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  130449             :   // case: toBeCopied == COPY_DATA for numeric_label
  130450           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  130451           0 :      result->p_numeric_label = numeric_label_copy; 
  130452             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  130453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  130454             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  130455           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  130456           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  130457             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  130458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  130459             :   // case: toBeCopied == COPY_DATA for upir_parent
  130460           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  130461           0 :      result->p_upir_parent = upir_parent_copy; 
  130462             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  130463             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  130464             :   // case: toBeCopied == COPY_DATA for upir_children
  130465           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  130466           0 :      result->p_upir_children = upir_children_copy; 
  130467             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  130468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  130469             :   // case: toBeCopied == COPY_DATA for clauses
  130470           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  130471           0 :      result->p_clauses = clauses_copy; 
  130472             :   // Copy non-constructor parameter data member (list access function): result->get_variables()
  130473           0 :      SgVarRefExpPtrList variables_copy; 
  130474             :   // case: listType for variables
  130475             :   // case: listType (typeIsPointerToList == false) for variables
  130476           0 :      SgVarRefExpPtrList::const_iterator source_variables_iterator = get_variables().begin(); 
  130477           0 :      for ( /* empty by design */; source_variables_iterator != get_variables().end(); ++source_variables_iterator) 
  130478             :         { 
  130479           0 :           SgVarRefExp* source_list_element = *source_variables_iterator; 
  130480           0 :           SgVarRefExp* copy_list_element = NULL; 
  130481           0 :           if (source_list_element != NULL) 
  130482             :              { 
  130483           0 :                copy_list_element = static_cast<SgVarRefExp*>(help.copyAst(*source_variables_iterator)); 
  130484             :              } 
  130485             :             else 
  130486             :              { 
  130487             :                copy_list_element = NULL; 
  130488             :              } 
  130489           0 :           variables_copy.push_back(copy_list_element); 
  130490             :         } 
  130491           0 :      result->p_variables = variables_copy; 
  130492             :   // case: listType for variables
  130493             :   // case: listType (typeIsPointerToList == false) for variables
  130494           0 :      SgVarRefExpPtrList::const_iterator variables_iterator = result->get_variables().begin(); 
  130495           0 :      for ( /* empty by design */; variables_iterator != result->get_variables().end(); ++variables_iterator) 
  130496             :         { 
  130497           0 :           SgVarRefExp* list_element = *variables_iterator; 
  130498           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  130499             :              { 
  130500           0 :                list_element->set_parent(result); 
  130501             :              } 
  130502             :         } 
  130503             : 
  130504             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130505             : 
  130506             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  130507             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  130508             :   // fixupCopy(result,help);
  130509             : 
  130510             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  130511             :   // the Sg_File_Info objects that are built for the new IR nodes.
  130512           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  130513           0 :      if (locatedNode != NULL)
  130514             :         {
  130515             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  130516           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  130517           0 :           ROSE_ASSERT(start != NULL);
  130518             : #if 0
  130519             :        // Debugging information
  130520             :           if (start->get_parent() == NULL)
  130521             :              {
  130522             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130523             :              }
  130524             : #endif
  130525           0 :           start->set_parent(locatedNode);
  130526           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  130527             : 
  130528           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  130529             : 
  130530             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  130531             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  130532             :        // ROSE_ASSERT(end != NULL);
  130533           0 :           if (end == NULL)
  130534             :              {
  130535           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  130536             :              }
  130537             :             else
  130538             :              {
  130539             : #if 0
  130540             :             // Debugging information
  130541             :                if (end->get_parent() == NULL)
  130542             :                   {
  130543             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130544             :                   }
  130545             : #endif
  130546           0 :                end->set_parent(locatedNode);
  130547           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  130548             :              }
  130549             : 
  130550           0 :           SgExpression* expression = isSgExpression(result);
  130551           0 :           if (isSgExpression(this) != NULL)
  130552             :              {
  130553           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  130554             : 
  130555             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  130556           0 :                if (operatorPosition != NULL)
  130557             :                   {
  130558             : #if 0
  130559             :                  // Debugging information
  130560             :                     if (operatorPosition->get_parent() == NULL)
  130561             :                        {
  130562             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130563             :                        }
  130564             : #endif
  130565           0 :                     operatorPosition->set_parent(expression);
  130566           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  130567             :                   }
  130568             :              }
  130569             :         }
  130570             : 
  130571             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  130572           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  130573           0 :      if (initializedName != NULL)
  130574             :         {
  130575             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  130576           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  130577           0 :           ROSE_ASSERT(start != NULL);
  130578             : #if 0
  130579             :        // Debugging information
  130580             :           if (start->get_parent() == NULL)
  130581             :              {
  130582             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130583             :              }
  130584             : #endif
  130585           0 :           start->set_parent(initializedName);
  130586           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  130587             : 
  130588             : #if 0
  130589             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  130590             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  130591             : 
  130592             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  130593             :        // ROSE_ASSERT(end != NULL);
  130594             :           if (end == NULL)
  130595             :              {
  130596             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  130597             :              }
  130598             :             else
  130599             :              {
  130600             :                if (end->get_parent() == NULL)
  130601             :                   {
  130602             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130603             :                   }
  130604             :                end->set_parent(initializedName);
  130605             :                ROSE_ASSERT(end->get_parent() != NULL);
  130606             :              }
  130607             : #endif
  130608             :         }
  130609             : 
  130610             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  130611           0 :      help.insertCopiedNodePair(this,result);
  130612             : 
  130613             :   // printf ("End of copy SgOmpAllocateStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  130614             : 
  130615             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  130616             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  130617           0 :      help.decrementDepth();
  130618             : 
  130619             :   // Test if this is the root of the copy!
  130620           0 :      if (help.get_depth() == 0)
  130621             :         {
  130622             :        // This is the original calling node.
  130623             : 
  130624             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  130625             :        // printf ("Calling SgOmpAllocateStatement::fixupCopy() (from root of AST being copied) \n");
  130626             : #if ALT_FIXUP_COPY
  130627             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  130628           0 :           fixupCopy_scopes (result,help);
  130629           0 :           fixupCopy_symbols (result,help);
  130630           0 :           fixupCopy_references (result,help);
  130631             : #else
  130632             :           fixupCopy(result,help);
  130633             : #endif
  130634             :        // Allow this to be called recursively, so accumulate the state.
  130635             :        // Also, clear the state in the SgCopyHelp object.
  130636             :        // help.clearState();
  130637             :         }
  130638             : 
  130639           0 :      return result;
  130640             :    }
  130641             : 
  130642             : 
  130643             : /* #line 130644 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  130644             : 
  130645             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130646             : 
  130647           0 : SgNode* SgOmpOrderedDependStatement::copy ( SgCopyHelp& help) const
  130648             :    {
  130649           0 :      SgOmpOrderedDependStatement* result = NULL;
  130650             : 
  130651             :   // printf ("Copy SgOmpOrderedDependStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  130652             : 
  130653             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  130654             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  130655             :   // The default value of the depth is 0, so after this call the depth is 1!
  130656           0 :      help.incrementDepth();
  130657             : 
  130658             : #if 0
  130659             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  130660             :   // but it is not generally true that things can only be copied once!
  130661             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  130662             :   // AstAttribute* existingAttribute = const_cast<SgOmpOrderedDependStatement*>(this)->attribute["copied"];
  130663             :      bool previouslyCopied = const_cast<SgOmpOrderedDependStatement*>(this)->attribute.exists("copied");
  130664             :      if (previouslyCopied == true)
  130665             :         {
  130666             :           this->get_file_info()->display("Called from copy SgOmpOrderedDependStatement: debug");
  130667             :         }
  130668             :      ROSE_ASSERT(previouslyCopied == false);
  130669             : 
  130670             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  130671             :      AstAttribute* newAttribute = new AstAttribute();
  130672             :      ROSE_ASSERT(newAttribute != NULL);
  130673             : 
  130674             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  130675             :      const_cast<SgOmpOrderedDependStatement*>(this)->attribute.add("copied",newAttribute);
  130676             : #endif
  130677             : 
  130678             :   // Copy data members from base classes
  130679             :   // Copy constructor parameter data member: startOfConstruct_copy
  130680             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  130681             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  130682           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  130683           0 :      if ( p_startOfConstruct != NULL ) 
  130684             :         { 
  130685           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  130686             :         } 
  130687             :        else 
  130688             :         { 
  130689             :           startOfConstruct_copy = NULL; 
  130690             :         } 
  130691             :  
  130692             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130693             : 
  130694             :   // Build an empty copy of this object (will be filled in, but 
  130695             :   // the parent can't be set and must be set by the caller)
  130696           0 :      result = new SgOmpOrderedDependStatement(  startOfConstruct_copy );
  130697           0 :      ROSE_ASSERT(result != NULL);
  130698             : 
  130699             :   // Copy data members of "this" class
  130700             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  130701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  130702             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  130703           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  130704           0 :      if ( p_endOfConstruct != NULL ) 
  130705             :         { 
  130706           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  130707             :         } 
  130708             :        else 
  130709             :         { 
  130710             :           endOfConstruct_copy = NULL; 
  130711             :         } 
  130712             :   /* check for a valid pointer and delete if present */ 
  130713           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  130714             :   /* add assignment to result here */ 
  130715           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  130716             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  130717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  130718             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  130719           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  130720           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  130721             :         { 
  130722           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  130723             :         } 
  130724             :        else 
  130725             :         { 
  130726             :           attachedPreprocessingInfoPtr_copy = NULL; 
  130727             :         } 
  130728             :   /* check for a valid pointer and delete if present */ 
  130729           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  130730             :   /* add assignment to result here */ 
  130731           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  130732             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  130733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  130734             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  130735           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  130736           0 :      if ( p_attributeMechanism != NULL ) 
  130737             :         { 
  130738           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  130739             :         } 
  130740             :        else 
  130741             :         { 
  130742             :           attributeMechanism_copy = NULL; 
  130743             :         } 
  130744             :   /* check for a valid pointer and delete if present */ 
  130745           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  130746             :   /* add assignment to result here */ 
  130747           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  130748             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  130749             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  130750             :   // case: toBeCopied == COPY_DATA for numeric_label
  130751           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  130752           0 :      result->p_numeric_label = numeric_label_copy; 
  130753             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  130754             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  130755             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  130756           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  130757           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  130758             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  130759             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  130760             :   // case: toBeCopied == COPY_DATA for upir_parent
  130761           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  130762           0 :      result->p_upir_parent = upir_parent_copy; 
  130763             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  130764             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  130765             :   // case: toBeCopied == COPY_DATA for upir_children
  130766           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  130767           0 :      result->p_upir_children = upir_children_copy; 
  130768             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  130769             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  130770             :   // case: toBeCopied == COPY_DATA for clauses
  130771           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  130772           0 :      result->p_clauses = clauses_copy; 
  130773             : 
  130774             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130775             : 
  130776             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  130777             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  130778             :   // fixupCopy(result,help);
  130779             : 
  130780             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  130781             :   // the Sg_File_Info objects that are built for the new IR nodes.
  130782           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  130783           0 :      if (locatedNode != NULL)
  130784             :         {
  130785             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  130786           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  130787           0 :           ROSE_ASSERT(start != NULL);
  130788             : #if 0
  130789             :        // Debugging information
  130790             :           if (start->get_parent() == NULL)
  130791             :              {
  130792             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130793             :              }
  130794             : #endif
  130795           0 :           start->set_parent(locatedNode);
  130796           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  130797             : 
  130798           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  130799             : 
  130800             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  130801             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  130802             :        // ROSE_ASSERT(end != NULL);
  130803           0 :           if (end == NULL)
  130804             :              {
  130805           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  130806             :              }
  130807             :             else
  130808             :              {
  130809             : #if 0
  130810             :             // Debugging information
  130811             :                if (end->get_parent() == NULL)
  130812             :                   {
  130813             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130814             :                   }
  130815             : #endif
  130816           0 :                end->set_parent(locatedNode);
  130817           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  130818             :              }
  130819             : 
  130820           0 :           SgExpression* expression = isSgExpression(result);
  130821           0 :           if (isSgExpression(this) != NULL)
  130822             :              {
  130823           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  130824             : 
  130825             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  130826           0 :                if (operatorPosition != NULL)
  130827             :                   {
  130828             : #if 0
  130829             :                  // Debugging information
  130830             :                     if (operatorPosition->get_parent() == NULL)
  130831             :                        {
  130832             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130833             :                        }
  130834             : #endif
  130835           0 :                     operatorPosition->set_parent(expression);
  130836           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  130837             :                   }
  130838             :              }
  130839             :         }
  130840             : 
  130841             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  130842           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  130843           0 :      if (initializedName != NULL)
  130844             :         {
  130845             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  130846           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  130847           0 :           ROSE_ASSERT(start != NULL);
  130848             : #if 0
  130849             :        // Debugging information
  130850             :           if (start->get_parent() == NULL)
  130851             :              {
  130852             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130853             :              }
  130854             : #endif
  130855           0 :           start->set_parent(initializedName);
  130856           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  130857             : 
  130858             : #if 0
  130859             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  130860             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  130861             : 
  130862             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  130863             :        // ROSE_ASSERT(end != NULL);
  130864             :           if (end == NULL)
  130865             :              {
  130866             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  130867             :              }
  130868             :             else
  130869             :              {
  130870             :                if (end->get_parent() == NULL)
  130871             :                   {
  130872             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  130873             :                   }
  130874             :                end->set_parent(initializedName);
  130875             :                ROSE_ASSERT(end->get_parent() != NULL);
  130876             :              }
  130877             : #endif
  130878             :         }
  130879             : 
  130880             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  130881           0 :      help.insertCopiedNodePair(this,result);
  130882             : 
  130883             :   // printf ("End of copy SgOmpOrderedDependStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  130884             : 
  130885             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  130886             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  130887           0 :      help.decrementDepth();
  130888             : 
  130889             :   // Test if this is the root of the copy!
  130890           0 :      if (help.get_depth() == 0)
  130891             :         {
  130892             :        // This is the original calling node.
  130893             : 
  130894             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  130895             :        // printf ("Calling SgOmpOrderedDependStatement::fixupCopy() (from root of AST being copied) \n");
  130896             : #if ALT_FIXUP_COPY
  130897             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  130898           0 :           fixupCopy_scopes (result,help);
  130899           0 :           fixupCopy_symbols (result,help);
  130900           0 :           fixupCopy_references (result,help);
  130901             : #else
  130902             :           fixupCopy(result,help);
  130903             : #endif
  130904             :        // Allow this to be called recursively, so accumulate the state.
  130905             :        // Also, clear the state in the SgCopyHelp object.
  130906             :        // help.clearState();
  130907             :         }
  130908             : 
  130909           0 :      return result;
  130910             :    }
  130911             : 
  130912             : 
  130913             : /* #line 130914 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  130914             : 
  130915             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130916             : 
  130917           0 : SgNode* SgUpirSyncStatement::copy ( SgCopyHelp& help) const
  130918             :    {
  130919           0 :      SgUpirSyncStatement* result = NULL;
  130920             : 
  130921             :   // printf ("Copy SgUpirSyncStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  130922             : 
  130923             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  130924             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  130925             :   // The default value of the depth is 0, so after this call the depth is 1!
  130926           0 :      help.incrementDepth();
  130927             : 
  130928             : #if 0
  130929             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  130930             :   // but it is not generally true that things can only be copied once!
  130931             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  130932             :   // AstAttribute* existingAttribute = const_cast<SgUpirSyncStatement*>(this)->attribute["copied"];
  130933             :      bool previouslyCopied = const_cast<SgUpirSyncStatement*>(this)->attribute.exists("copied");
  130934             :      if (previouslyCopied == true)
  130935             :         {
  130936             :           this->get_file_info()->display("Called from copy SgUpirSyncStatement: debug");
  130937             :         }
  130938             :      ROSE_ASSERT(previouslyCopied == false);
  130939             : 
  130940             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  130941             :      AstAttribute* newAttribute = new AstAttribute();
  130942             :      ROSE_ASSERT(newAttribute != NULL);
  130943             : 
  130944             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  130945             :      const_cast<SgUpirSyncStatement*>(this)->attribute.add("copied",newAttribute);
  130946             : #endif
  130947             : 
  130948             :   // Copy data members from base classes
  130949             :   // Copy constructor parameter data member: startOfConstruct_copy
  130950             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  130951             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  130952           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  130953           0 :      if ( p_startOfConstruct != NULL ) 
  130954             :         { 
  130955           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  130956             :         } 
  130957             :        else 
  130958             :         { 
  130959             :           startOfConstruct_copy = NULL; 
  130960             :         } 
  130961             :  
  130962             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  130963             : 
  130964             :   // Build an empty copy of this object (will be filled in, but 
  130965             :   // the parent can't be set and must be set by the caller)
  130966           0 :      result = new SgUpirSyncStatement(  startOfConstruct_copy );
  130967           0 :      ROSE_ASSERT(result != NULL);
  130968             : 
  130969             :   // Copy data members of "this" class
  130970             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  130971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  130972             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  130973           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  130974           0 :      if ( p_endOfConstruct != NULL ) 
  130975             :         { 
  130976           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  130977             :         } 
  130978             :        else 
  130979             :         { 
  130980             :           endOfConstruct_copy = NULL; 
  130981             :         } 
  130982             :   /* check for a valid pointer and delete if present */ 
  130983           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  130984             :   /* add assignment to result here */ 
  130985           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  130986             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  130987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  130988             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  130989           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  130990           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  130991             :         { 
  130992           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  130993             :         } 
  130994             :        else 
  130995             :         { 
  130996             :           attachedPreprocessingInfoPtr_copy = NULL; 
  130997             :         } 
  130998             :   /* check for a valid pointer and delete if present */ 
  130999           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  131000             :   /* add assignment to result here */ 
  131001           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  131002             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  131003             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  131004             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  131005           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  131006           0 :      if ( p_attributeMechanism != NULL ) 
  131007             :         { 
  131008           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  131009             :         } 
  131010             :        else 
  131011             :         { 
  131012             :           attributeMechanism_copy = NULL; 
  131013             :         } 
  131014             :   /* check for a valid pointer and delete if present */ 
  131015           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  131016             :   /* add assignment to result here */ 
  131017           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  131018             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  131019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  131020             :   // case: toBeCopied == COPY_DATA for numeric_label
  131021           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  131022           0 :      result->p_numeric_label = numeric_label_copy; 
  131023             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  131024             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  131025             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  131026           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  131027           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  131028             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  131029             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  131030             :   // case: toBeCopied == COPY_DATA for upir_parent
  131031           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  131032           0 :      result->p_upir_parent = upir_parent_copy; 
  131033             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  131034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  131035             :   // case: toBeCopied == COPY_DATA for upir_children
  131036           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  131037           0 :      result->p_upir_children = upir_children_copy; 
  131038             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  131039             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  131040             :   // case: toBeCopied == COPY_DATA for clauses
  131041           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  131042           0 :      result->p_clauses = clauses_copy; 
  131043             : 
  131044             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131045             : 
  131046             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  131047             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  131048             :   // fixupCopy(result,help);
  131049             : 
  131050             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  131051             :   // the Sg_File_Info objects that are built for the new IR nodes.
  131052           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  131053           0 :      if (locatedNode != NULL)
  131054             :         {
  131055             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  131056           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  131057           0 :           ROSE_ASSERT(start != NULL);
  131058             : #if 0
  131059             :        // Debugging information
  131060             :           if (start->get_parent() == NULL)
  131061             :              {
  131062             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131063             :              }
  131064             : #endif
  131065           0 :           start->set_parent(locatedNode);
  131066           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  131067             : 
  131068           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  131069             : 
  131070             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  131071             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  131072             :        // ROSE_ASSERT(end != NULL);
  131073           0 :           if (end == NULL)
  131074             :              {
  131075           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  131076             :              }
  131077             :             else
  131078             :              {
  131079             : #if 0
  131080             :             // Debugging information
  131081             :                if (end->get_parent() == NULL)
  131082             :                   {
  131083             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131084             :                   }
  131085             : #endif
  131086           0 :                end->set_parent(locatedNode);
  131087           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  131088             :              }
  131089             : 
  131090           0 :           SgExpression* expression = isSgExpression(result);
  131091           0 :           if (isSgExpression(this) != NULL)
  131092             :              {
  131093           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  131094             : 
  131095             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  131096           0 :                if (operatorPosition != NULL)
  131097             :                   {
  131098             : #if 0
  131099             :                  // Debugging information
  131100             :                     if (operatorPosition->get_parent() == NULL)
  131101             :                        {
  131102             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131103             :                        }
  131104             : #endif
  131105           0 :                     operatorPosition->set_parent(expression);
  131106           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  131107             :                   }
  131108             :              }
  131109             :         }
  131110             : 
  131111             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  131112           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  131113           0 :      if (initializedName != NULL)
  131114             :         {
  131115             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  131116           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  131117           0 :           ROSE_ASSERT(start != NULL);
  131118             : #if 0
  131119             :        // Debugging information
  131120             :           if (start->get_parent() == NULL)
  131121             :              {
  131122             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131123             :              }
  131124             : #endif
  131125           0 :           start->set_parent(initializedName);
  131126           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  131127             : 
  131128             : #if 0
  131129             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  131130             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  131131             : 
  131132             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  131133             :        // ROSE_ASSERT(end != NULL);
  131134             :           if (end == NULL)
  131135             :              {
  131136             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  131137             :              }
  131138             :             else
  131139             :              {
  131140             :                if (end->get_parent() == NULL)
  131141             :                   {
  131142             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131143             :                   }
  131144             :                end->set_parent(initializedName);
  131145             :                ROSE_ASSERT(end->get_parent() != NULL);
  131146             :              }
  131147             : #endif
  131148             :         }
  131149             : 
  131150             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  131151           0 :      help.insertCopiedNodePair(this,result);
  131152             : 
  131153             :   // printf ("End of copy SgUpirSyncStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  131154             : 
  131155             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  131156             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  131157           0 :      help.decrementDepth();
  131158             : 
  131159             :   // Test if this is the root of the copy!
  131160           0 :      if (help.get_depth() == 0)
  131161             :         {
  131162             :        // This is the original calling node.
  131163             : 
  131164             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  131165             :        // printf ("Calling SgUpirSyncStatement::fixupCopy() (from root of AST being copied) \n");
  131166             : #if ALT_FIXUP_COPY
  131167             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  131168           0 :           fixupCopy_scopes (result,help);
  131169           0 :           fixupCopy_symbols (result,help);
  131170           0 :           fixupCopy_references (result,help);
  131171             : #else
  131172             :           fixupCopy(result,help);
  131173             : #endif
  131174             :        // Allow this to be called recursively, so accumulate the state.
  131175             :        // Also, clear the state in the SgCopyHelp object.
  131176             :        // help.clearState();
  131177             :         }
  131178             : 
  131179           0 :      return result;
  131180             :    }
  131181             : 
  131182             : 
  131183             : /* #line 131184 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  131184             : 
  131185             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131186             : 
  131187           0 : SgNode* SgUpirLoopParallelStatement::copy ( SgCopyHelp& help) const
  131188             :    {
  131189           0 :      SgUpirLoopParallelStatement* result = NULL;
  131190             : 
  131191             :   // printf ("Copy SgUpirLoopParallelStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  131192             : 
  131193             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  131194             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  131195             :   // The default value of the depth is 0, so after this call the depth is 1!
  131196           0 :      help.incrementDepth();
  131197             : 
  131198             : #if 0
  131199             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  131200             :   // but it is not generally true that things can only be copied once!
  131201             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  131202             :   // AstAttribute* existingAttribute = const_cast<SgUpirLoopParallelStatement*>(this)->attribute["copied"];
  131203             :      bool previouslyCopied = const_cast<SgUpirLoopParallelStatement*>(this)->attribute.exists("copied");
  131204             :      if (previouslyCopied == true)
  131205             :         {
  131206             :           this->get_file_info()->display("Called from copy SgUpirLoopParallelStatement: debug");
  131207             :         }
  131208             :      ROSE_ASSERT(previouslyCopied == false);
  131209             : 
  131210             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  131211             :      AstAttribute* newAttribute = new AstAttribute();
  131212             :      ROSE_ASSERT(newAttribute != NULL);
  131213             : 
  131214             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  131215             :      const_cast<SgUpirLoopParallelStatement*>(this)->attribute.add("copied",newAttribute);
  131216             : #endif
  131217             : 
  131218             :   // Copy data members from base classes
  131219             :   // Copy constructor parameter data member: startOfConstruct_copy
  131220             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  131221             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  131222           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  131223           0 :      if ( p_startOfConstruct != NULL ) 
  131224             :         { 
  131225           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  131226             :         } 
  131227             :        else 
  131228             :         { 
  131229             :           startOfConstruct_copy = NULL; 
  131230             :         } 
  131231             :  
  131232             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131233             : 
  131234             :   // Build an empty copy of this object (will be filled in, but 
  131235             :   // the parent can't be set and must be set by the caller)
  131236           0 :      result = new SgUpirLoopParallelStatement(  startOfConstruct_copy );
  131237           0 :      ROSE_ASSERT(result != NULL);
  131238             : 
  131239             :   // Copy data members of "this" class
  131240             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  131241             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  131242             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  131243           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  131244           0 :      if ( p_endOfConstruct != NULL ) 
  131245             :         { 
  131246           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  131247             :         } 
  131248             :        else 
  131249             :         { 
  131250             :           endOfConstruct_copy = NULL; 
  131251             :         } 
  131252             :   /* check for a valid pointer and delete if present */ 
  131253           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  131254             :   /* add assignment to result here */ 
  131255           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  131256             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  131257             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  131258             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  131259           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  131260           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  131261             :         { 
  131262           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  131263             :         } 
  131264             :        else 
  131265             :         { 
  131266             :           attachedPreprocessingInfoPtr_copy = NULL; 
  131267             :         } 
  131268             :   /* check for a valid pointer and delete if present */ 
  131269           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  131270             :   /* add assignment to result here */ 
  131271           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  131272             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  131273             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  131274             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  131275           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  131276           0 :      if ( p_attributeMechanism != NULL ) 
  131277             :         { 
  131278           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  131279             :         } 
  131280             :        else 
  131281             :         { 
  131282             :           attributeMechanism_copy = NULL; 
  131283             :         } 
  131284             :   /* check for a valid pointer and delete if present */ 
  131285           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  131286             :   /* add assignment to result here */ 
  131287           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  131288             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  131289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  131290             :   // case: toBeCopied == COPY_DATA for numeric_label
  131291           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  131292           0 :      result->p_numeric_label = numeric_label_copy; 
  131293             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  131294             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  131295             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  131296           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  131297           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  131298             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  131299             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  131300             :   // case: toBeCopied == COPY_DATA for upir_parent
  131301           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  131302           0 :      result->p_upir_parent = upir_parent_copy; 
  131303             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  131304             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  131305             :   // case: toBeCopied == COPY_DATA for upir_children
  131306           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  131307           0 :      result->p_upir_children = upir_children_copy; 
  131308             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  131309             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  131310             :   // case: toBeCopied == COPY_DATA for clauses
  131311           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  131312           0 :      result->p_clauses = clauses_copy; 
  131313             :   // Copy non-constructor parameter data member (access function): worksharing_copy
  131314             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for worksharing
  131315             :   // case: toBeCopied == COPY_DATA for worksharing
  131316           0 :      SgStatement* worksharing_copy = p_worksharing; 
  131317           0 :      result->p_worksharing = worksharing_copy; 
  131318             :   // Copy non-constructor parameter data member (access function): simd_copy
  131319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for simd
  131320             :   // case: toBeCopied == COPY_DATA for simd
  131321           0 :      SgStatement* simd_copy = p_simd; 
  131322           0 :      result->p_simd = simd_copy; 
  131323             :   // Copy non-constructor parameter data member (access function): taskloop_copy
  131324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for taskloop
  131325             :   // case: toBeCopied == COPY_DATA for taskloop
  131326           0 :      SgStatement* taskloop_copy = p_taskloop; 
  131327           0 :      result->p_taskloop = taskloop_copy; 
  131328             :   // Copy non-constructor parameter data member (access function): loop_copy
  131329             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for loop
  131330             :   // case: toBeCopied == COPY_DATA for loop
  131331           0 :      SgStatement* loop_copy = p_loop; 
  131332           0 :      result->p_loop = loop_copy; 
  131333             : 
  131334             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131335             : 
  131336             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  131337             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  131338             :   // fixupCopy(result,help);
  131339             : 
  131340             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  131341             :   // the Sg_File_Info objects that are built for the new IR nodes.
  131342           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  131343           0 :      if (locatedNode != NULL)
  131344             :         {
  131345             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  131346           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  131347           0 :           ROSE_ASSERT(start != NULL);
  131348             : #if 0
  131349             :        // Debugging information
  131350             :           if (start->get_parent() == NULL)
  131351             :              {
  131352             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131353             :              }
  131354             : #endif
  131355           0 :           start->set_parent(locatedNode);
  131356           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  131357             : 
  131358           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  131359             : 
  131360             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  131361             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  131362             :        // ROSE_ASSERT(end != NULL);
  131363           0 :           if (end == NULL)
  131364             :              {
  131365           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  131366             :              }
  131367             :             else
  131368             :              {
  131369             : #if 0
  131370             :             // Debugging information
  131371             :                if (end->get_parent() == NULL)
  131372             :                   {
  131373             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131374             :                   }
  131375             : #endif
  131376           0 :                end->set_parent(locatedNode);
  131377           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  131378             :              }
  131379             : 
  131380           0 :           SgExpression* expression = isSgExpression(result);
  131381           0 :           if (isSgExpression(this) != NULL)
  131382             :              {
  131383           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  131384             : 
  131385             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  131386           0 :                if (operatorPosition != NULL)
  131387             :                   {
  131388             : #if 0
  131389             :                  // Debugging information
  131390             :                     if (operatorPosition->get_parent() == NULL)
  131391             :                        {
  131392             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131393             :                        }
  131394             : #endif
  131395           0 :                     operatorPosition->set_parent(expression);
  131396           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  131397             :                   }
  131398             :              }
  131399             :         }
  131400             : 
  131401             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  131402           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  131403           0 :      if (initializedName != NULL)
  131404             :         {
  131405             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  131406           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  131407           0 :           ROSE_ASSERT(start != NULL);
  131408             : #if 0
  131409             :        // Debugging information
  131410             :           if (start->get_parent() == NULL)
  131411             :              {
  131412             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131413             :              }
  131414             : #endif
  131415           0 :           start->set_parent(initializedName);
  131416           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  131417             : 
  131418             : #if 0
  131419             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  131420             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  131421             : 
  131422             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  131423             :        // ROSE_ASSERT(end != NULL);
  131424             :           if (end == NULL)
  131425             :              {
  131426             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  131427             :              }
  131428             :             else
  131429             :              {
  131430             :                if (end->get_parent() == NULL)
  131431             :                   {
  131432             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131433             :                   }
  131434             :                end->set_parent(initializedName);
  131435             :                ROSE_ASSERT(end->get_parent() != NULL);
  131436             :              }
  131437             : #endif
  131438             :         }
  131439             : 
  131440             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  131441           0 :      help.insertCopiedNodePair(this,result);
  131442             : 
  131443             :   // printf ("End of copy SgUpirLoopParallelStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  131444             : 
  131445             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  131446             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  131447           0 :      help.decrementDepth();
  131448             : 
  131449             :   // Test if this is the root of the copy!
  131450           0 :      if (help.get_depth() == 0)
  131451             :         {
  131452             :        // This is the original calling node.
  131453             : 
  131454             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  131455             :        // printf ("Calling SgUpirLoopParallelStatement::fixupCopy() (from root of AST being copied) \n");
  131456             : #if ALT_FIXUP_COPY
  131457             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  131458           0 :           fixupCopy_scopes (result,help);
  131459           0 :           fixupCopy_symbols (result,help);
  131460           0 :           fixupCopy_references (result,help);
  131461             : #else
  131462             :           fixupCopy(result,help);
  131463             : #endif
  131464             :        // Allow this to be called recursively, so accumulate the state.
  131465             :        // Also, clear the state in the SgCopyHelp object.
  131466             :        // help.clearState();
  131467             :         }
  131468             : 
  131469           0 :      return result;
  131470             :    }
  131471             : 
  131472             : 
  131473             : /* #line 131474 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  131474             : 
  131475             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131476             : 
  131477           0 : SgNode* SgUpirWorksharingStatement::copy ( SgCopyHelp& help) const
  131478             :    {
  131479           0 :      SgUpirWorksharingStatement* result = NULL;
  131480             : 
  131481             :   // printf ("Copy SgUpirWorksharingStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  131482             : 
  131483             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  131484             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  131485             :   // The default value of the depth is 0, so after this call the depth is 1!
  131486           0 :      help.incrementDepth();
  131487             : 
  131488             : #if 0
  131489             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  131490             :   // but it is not generally true that things can only be copied once!
  131491             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  131492             :   // AstAttribute* existingAttribute = const_cast<SgUpirWorksharingStatement*>(this)->attribute["copied"];
  131493             :      bool previouslyCopied = const_cast<SgUpirWorksharingStatement*>(this)->attribute.exists("copied");
  131494             :      if (previouslyCopied == true)
  131495             :         {
  131496             :           this->get_file_info()->display("Called from copy SgUpirWorksharingStatement: debug");
  131497             :         }
  131498             :      ROSE_ASSERT(previouslyCopied == false);
  131499             : 
  131500             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  131501             :      AstAttribute* newAttribute = new AstAttribute();
  131502             :      ROSE_ASSERT(newAttribute != NULL);
  131503             : 
  131504             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  131505             :      const_cast<SgUpirWorksharingStatement*>(this)->attribute.add("copied",newAttribute);
  131506             : #endif
  131507             : 
  131508             :   // Copy data members from base classes
  131509             :   // Copy constructor parameter data member: startOfConstruct_copy
  131510             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  131511             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  131512           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  131513           0 :      if ( p_startOfConstruct != NULL ) 
  131514             :         { 
  131515           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  131516             :         } 
  131517             :        else 
  131518             :         { 
  131519             :           startOfConstruct_copy = NULL; 
  131520             :         } 
  131521             :  
  131522             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131523             : 
  131524             :   // Build an empty copy of this object (will be filled in, but 
  131525             :   // the parent can't be set and must be set by the caller)
  131526           0 :      result = new SgUpirWorksharingStatement(  startOfConstruct_copy );
  131527           0 :      ROSE_ASSERT(result != NULL);
  131528             : 
  131529             :   // Copy data members of "this" class
  131530             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  131531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  131532             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  131533           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  131534           0 :      if ( p_endOfConstruct != NULL ) 
  131535             :         { 
  131536           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  131537             :         } 
  131538             :        else 
  131539             :         { 
  131540             :           endOfConstruct_copy = NULL; 
  131541             :         } 
  131542             :   /* check for a valid pointer and delete if present */ 
  131543           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  131544             :   /* add assignment to result here */ 
  131545           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  131546             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  131547             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  131548             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  131549           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  131550           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  131551             :         { 
  131552           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  131553             :         } 
  131554             :        else 
  131555             :         { 
  131556             :           attachedPreprocessingInfoPtr_copy = NULL; 
  131557             :         } 
  131558             :   /* check for a valid pointer and delete if present */ 
  131559           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  131560             :   /* add assignment to result here */ 
  131561           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  131562             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  131563             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  131564             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  131565           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  131566           0 :      if ( p_attributeMechanism != NULL ) 
  131567             :         { 
  131568           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  131569             :         } 
  131570             :        else 
  131571             :         { 
  131572             :           attributeMechanism_copy = NULL; 
  131573             :         } 
  131574             :   /* check for a valid pointer and delete if present */ 
  131575           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  131576             :   /* add assignment to result here */ 
  131577           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  131578             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  131579             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  131580             :   // case: toBeCopied == COPY_DATA for numeric_label
  131581           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  131582           0 :      result->p_numeric_label = numeric_label_copy; 
  131583             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  131584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  131585             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  131586           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  131587           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  131588             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  131589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  131590             :   // case: toBeCopied == COPY_DATA for upir_parent
  131591           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  131592           0 :      result->p_upir_parent = upir_parent_copy; 
  131593             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  131594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  131595             :   // case: toBeCopied == COPY_DATA for upir_children
  131596           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  131597           0 :      result->p_upir_children = upir_children_copy; 
  131598             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  131599             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  131600             :   // case: toBeCopied == COPY_DATA for clauses
  131601           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  131602           0 :      result->p_clauses = clauses_copy; 
  131603             : 
  131604             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131605             : 
  131606             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  131607             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  131608             :   // fixupCopy(result,help);
  131609             : 
  131610             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  131611             :   // the Sg_File_Info objects that are built for the new IR nodes.
  131612           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  131613           0 :      if (locatedNode != NULL)
  131614             :         {
  131615             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  131616           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  131617           0 :           ROSE_ASSERT(start != NULL);
  131618             : #if 0
  131619             :        // Debugging information
  131620             :           if (start->get_parent() == NULL)
  131621             :              {
  131622             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131623             :              }
  131624             : #endif
  131625           0 :           start->set_parent(locatedNode);
  131626           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  131627             : 
  131628           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  131629             : 
  131630             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  131631             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  131632             :        // ROSE_ASSERT(end != NULL);
  131633           0 :           if (end == NULL)
  131634             :              {
  131635           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  131636             :              }
  131637             :             else
  131638             :              {
  131639             : #if 0
  131640             :             // Debugging information
  131641             :                if (end->get_parent() == NULL)
  131642             :                   {
  131643             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131644             :                   }
  131645             : #endif
  131646           0 :                end->set_parent(locatedNode);
  131647           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  131648             :              }
  131649             : 
  131650           0 :           SgExpression* expression = isSgExpression(result);
  131651           0 :           if (isSgExpression(this) != NULL)
  131652             :              {
  131653           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  131654             : 
  131655             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  131656           0 :                if (operatorPosition != NULL)
  131657             :                   {
  131658             : #if 0
  131659             :                  // Debugging information
  131660             :                     if (operatorPosition->get_parent() == NULL)
  131661             :                        {
  131662             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131663             :                        }
  131664             : #endif
  131665           0 :                     operatorPosition->set_parent(expression);
  131666           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  131667             :                   }
  131668             :              }
  131669             :         }
  131670             : 
  131671             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  131672           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  131673           0 :      if (initializedName != NULL)
  131674             :         {
  131675             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  131676           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  131677           0 :           ROSE_ASSERT(start != NULL);
  131678             : #if 0
  131679             :        // Debugging information
  131680             :           if (start->get_parent() == NULL)
  131681             :              {
  131682             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131683             :              }
  131684             : #endif
  131685           0 :           start->set_parent(initializedName);
  131686           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  131687             : 
  131688             : #if 0
  131689             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  131690             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  131691             : 
  131692             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  131693             :        // ROSE_ASSERT(end != NULL);
  131694             :           if (end == NULL)
  131695             :              {
  131696             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  131697             :              }
  131698             :             else
  131699             :              {
  131700             :                if (end->get_parent() == NULL)
  131701             :                   {
  131702             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131703             :                   }
  131704             :                end->set_parent(initializedName);
  131705             :                ROSE_ASSERT(end->get_parent() != NULL);
  131706             :              }
  131707             : #endif
  131708             :         }
  131709             : 
  131710             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  131711           0 :      help.insertCopiedNodePair(this,result);
  131712             : 
  131713             :   // printf ("End of copy SgUpirWorksharingStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  131714             : 
  131715             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  131716             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  131717           0 :      help.decrementDepth();
  131718             : 
  131719             :   // Test if this is the root of the copy!
  131720           0 :      if (help.get_depth() == 0)
  131721             :         {
  131722             :        // This is the original calling node.
  131723             : 
  131724             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  131725             :        // printf ("Calling SgUpirWorksharingStatement::fixupCopy() (from root of AST being copied) \n");
  131726             : #if ALT_FIXUP_COPY
  131727             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  131728           0 :           fixupCopy_scopes (result,help);
  131729           0 :           fixupCopy_symbols (result,help);
  131730           0 :           fixupCopy_references (result,help);
  131731             : #else
  131732             :           fixupCopy(result,help);
  131733             : #endif
  131734             :        // Allow this to be called recursively, so accumulate the state.
  131735             :        // Also, clear the state in the SgCopyHelp object.
  131736             :        // help.clearState();
  131737             :         }
  131738             : 
  131739           0 :      return result;
  131740             :    }
  131741             : 
  131742             : 
  131743             : /* #line 131744 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  131744             : 
  131745             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131746             : 
  131747           0 : SgNode* SgUpirSimdStatement::copy ( SgCopyHelp& help) const
  131748             :    {
  131749           0 :      SgUpirSimdStatement* result = NULL;
  131750             : 
  131751             :   // printf ("Copy SgUpirSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  131752             : 
  131753             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  131754             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  131755             :   // The default value of the depth is 0, so after this call the depth is 1!
  131756           0 :      help.incrementDepth();
  131757             : 
  131758             : #if 0
  131759             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  131760             :   // but it is not generally true that things can only be copied once!
  131761             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  131762             :   // AstAttribute* existingAttribute = const_cast<SgUpirSimdStatement*>(this)->attribute["copied"];
  131763             :      bool previouslyCopied = const_cast<SgUpirSimdStatement*>(this)->attribute.exists("copied");
  131764             :      if (previouslyCopied == true)
  131765             :         {
  131766             :           this->get_file_info()->display("Called from copy SgUpirSimdStatement: debug");
  131767             :         }
  131768             :      ROSE_ASSERT(previouslyCopied == false);
  131769             : 
  131770             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  131771             :      AstAttribute* newAttribute = new AstAttribute();
  131772             :      ROSE_ASSERT(newAttribute != NULL);
  131773             : 
  131774             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  131775             :      const_cast<SgUpirSimdStatement*>(this)->attribute.add("copied",newAttribute);
  131776             : #endif
  131777             : 
  131778             :   // Copy data members from base classes
  131779             :   // Copy constructor parameter data member: startOfConstruct_copy
  131780             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  131781             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  131782           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  131783           0 :      if ( p_startOfConstruct != NULL ) 
  131784             :         { 
  131785           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  131786             :         } 
  131787             :        else 
  131788             :         { 
  131789             :           startOfConstruct_copy = NULL; 
  131790             :         } 
  131791             :  
  131792             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131793             : 
  131794             :   // Build an empty copy of this object (will be filled in, but 
  131795             :   // the parent can't be set and must be set by the caller)
  131796           0 :      result = new SgUpirSimdStatement(  startOfConstruct_copy );
  131797           0 :      ROSE_ASSERT(result != NULL);
  131798             : 
  131799             :   // Copy data members of "this" class
  131800             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  131801             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  131802             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  131803           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  131804           0 :      if ( p_endOfConstruct != NULL ) 
  131805             :         { 
  131806           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  131807             :         } 
  131808             :        else 
  131809             :         { 
  131810             :           endOfConstruct_copy = NULL; 
  131811             :         } 
  131812             :   /* check for a valid pointer and delete if present */ 
  131813           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  131814             :   /* add assignment to result here */ 
  131815           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  131816             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  131817             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  131818             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  131819           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  131820           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  131821             :         { 
  131822           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  131823             :         } 
  131824             :        else 
  131825             :         { 
  131826             :           attachedPreprocessingInfoPtr_copy = NULL; 
  131827             :         } 
  131828             :   /* check for a valid pointer and delete if present */ 
  131829           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  131830             :   /* add assignment to result here */ 
  131831           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  131832             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  131833             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  131834             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  131835           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  131836           0 :      if ( p_attributeMechanism != NULL ) 
  131837             :         { 
  131838           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  131839             :         } 
  131840             :        else 
  131841             :         { 
  131842             :           attributeMechanism_copy = NULL; 
  131843             :         } 
  131844             :   /* check for a valid pointer and delete if present */ 
  131845           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  131846             :   /* add assignment to result here */ 
  131847           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  131848             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  131849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  131850             :   // case: toBeCopied == COPY_DATA for numeric_label
  131851           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  131852           0 :      result->p_numeric_label = numeric_label_copy; 
  131853             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  131854             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  131855             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  131856           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  131857           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  131858             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  131859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  131860             :   // case: toBeCopied == COPY_DATA for upir_parent
  131861           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  131862           0 :      result->p_upir_parent = upir_parent_copy; 
  131863             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  131864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  131865             :   // case: toBeCopied == COPY_DATA for upir_children
  131866           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  131867           0 :      result->p_upir_children = upir_children_copy; 
  131868             :   // Copy non-constructor parameter data member (list access function): result->get_clauses()
  131869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for clauses
  131870             :   // case: toBeCopied == COPY_DATA for clauses
  131871           0 :      SgOmpClausePtrList clauses_copy = p_clauses; 
  131872           0 :      result->p_clauses = clauses_copy; 
  131873             : 
  131874             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  131875             : 
  131876             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  131877             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  131878             :   // fixupCopy(result,help);
  131879             : 
  131880             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  131881             :   // the Sg_File_Info objects that are built for the new IR nodes.
  131882           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  131883           0 :      if (locatedNode != NULL)
  131884             :         {
  131885             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  131886           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  131887           0 :           ROSE_ASSERT(start != NULL);
  131888             : #if 0
  131889             :        // Debugging information
  131890             :           if (start->get_parent() == NULL)
  131891             :              {
  131892             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131893             :              }
  131894             : #endif
  131895           0 :           start->set_parent(locatedNode);
  131896           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  131897             : 
  131898           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  131899             : 
  131900             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  131901             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  131902             :        // ROSE_ASSERT(end != NULL);
  131903           0 :           if (end == NULL)
  131904             :              {
  131905           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  131906             :              }
  131907             :             else
  131908             :              {
  131909             : #if 0
  131910             :             // Debugging information
  131911             :                if (end->get_parent() == NULL)
  131912             :                   {
  131913             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131914             :                   }
  131915             : #endif
  131916           0 :                end->set_parent(locatedNode);
  131917           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  131918             :              }
  131919             : 
  131920           0 :           SgExpression* expression = isSgExpression(result);
  131921           0 :           if (isSgExpression(this) != NULL)
  131922             :              {
  131923           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  131924             : 
  131925             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  131926           0 :                if (operatorPosition != NULL)
  131927             :                   {
  131928             : #if 0
  131929             :                  // Debugging information
  131930             :                     if (operatorPosition->get_parent() == NULL)
  131931             :                        {
  131932             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131933             :                        }
  131934             : #endif
  131935           0 :                     operatorPosition->set_parent(expression);
  131936           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  131937             :                   }
  131938             :              }
  131939             :         }
  131940             : 
  131941             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  131942           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  131943           0 :      if (initializedName != NULL)
  131944             :         {
  131945             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  131946           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  131947           0 :           ROSE_ASSERT(start != NULL);
  131948             : #if 0
  131949             :        // Debugging information
  131950             :           if (start->get_parent() == NULL)
  131951             :              {
  131952             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131953             :              }
  131954             : #endif
  131955           0 :           start->set_parent(initializedName);
  131956           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  131957             : 
  131958             : #if 0
  131959             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  131960             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  131961             : 
  131962             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  131963             :        // ROSE_ASSERT(end != NULL);
  131964             :           if (end == NULL)
  131965             :              {
  131966             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  131967             :              }
  131968             :             else
  131969             :              {
  131970             :                if (end->get_parent() == NULL)
  131971             :                   {
  131972             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  131973             :                   }
  131974             :                end->set_parent(initializedName);
  131975             :                ROSE_ASSERT(end->get_parent() != NULL);
  131976             :              }
  131977             : #endif
  131978             :         }
  131979             : 
  131980             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  131981           0 :      help.insertCopiedNodePair(this,result);
  131982             : 
  131983             :   // printf ("End of copy SgUpirSimdStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  131984             : 
  131985             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  131986             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  131987           0 :      help.decrementDepth();
  131988             : 
  131989             :   // Test if this is the root of the copy!
  131990           0 :      if (help.get_depth() == 0)
  131991             :         {
  131992             :        // This is the original calling node.
  131993             : 
  131994             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  131995             :        // printf ("Calling SgUpirSimdStatement::fixupCopy() (from root of AST being copied) \n");
  131996             : #if ALT_FIXUP_COPY
  131997             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  131998           0 :           fixupCopy_scopes (result,help);
  131999           0 :           fixupCopy_symbols (result,help);
  132000           0 :           fixupCopy_references (result,help);
  132001             : #else
  132002             :           fixupCopy(result,help);
  132003             : #endif
  132004             :        // Allow this to be called recursively, so accumulate the state.
  132005             :        // Also, clear the state in the SgCopyHelp object.
  132006             :        // help.clearState();
  132007             :         }
  132008             : 
  132009           0 :      return result;
  132010             :    }
  132011             : 
  132012             : 
  132013             : /* #line 132014 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  132014             : 
  132015             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132016             : 
  132017           0 : SgNode* SgOmpDeclareMapperStatement::copy ( SgCopyHelp& help) const
  132018             :    {
  132019           0 :      SgOmpDeclareMapperStatement* result = NULL;
  132020             : 
  132021             :   // printf ("Copy SgOmpDeclareMapperStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  132022             : 
  132023             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  132024             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  132025             :   // The default value of the depth is 0, so after this call the depth is 1!
  132026           0 :      help.incrementDepth();
  132027             : 
  132028             : #if 0
  132029             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  132030             :   // but it is not generally true that things can only be copied once!
  132031             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  132032             :   // AstAttribute* existingAttribute = const_cast<SgOmpDeclareMapperStatement*>(this)->attribute["copied"];
  132033             :      bool previouslyCopied = const_cast<SgOmpDeclareMapperStatement*>(this)->attribute.exists("copied");
  132034             :      if (previouslyCopied == true)
  132035             :         {
  132036             :           this->get_file_info()->display("Called from copy SgOmpDeclareMapperStatement: debug");
  132037             :         }
  132038             :      ROSE_ASSERT(previouslyCopied == false);
  132039             : 
  132040             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  132041             :      AstAttribute* newAttribute = new AstAttribute();
  132042             :      ROSE_ASSERT(newAttribute != NULL);
  132043             : 
  132044             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  132045             :      const_cast<SgOmpDeclareMapperStatement*>(this)->attribute.add("copied",newAttribute);
  132046             : #endif
  132047             : 
  132048             :   // Copy data members from base classes
  132049             :   // Copy constructor parameter data member: startOfConstruct_copy
  132050             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  132051             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  132052           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  132053           0 :      if ( p_startOfConstruct != NULL ) 
  132054             :         { 
  132055           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  132056             :         } 
  132057             :        else 
  132058             :         { 
  132059             :           startOfConstruct_copy = NULL; 
  132060             :         } 
  132061             :  
  132062             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132063             : 
  132064             :   // Build an empty copy of this object (will be filled in, but 
  132065             :   // the parent can't be set and must be set by the caller)
  132066           0 :      result = new SgOmpDeclareMapperStatement(  startOfConstruct_copy );
  132067           0 :      ROSE_ASSERT(result != NULL);
  132068             : 
  132069             :   // Copy data members of "this" class
  132070             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  132071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  132072             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  132073           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  132074           0 :      if ( p_endOfConstruct != NULL ) 
  132075             :         { 
  132076           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  132077             :         } 
  132078             :        else 
  132079             :         { 
  132080             :           endOfConstruct_copy = NULL; 
  132081             :         } 
  132082             :   /* check for a valid pointer and delete if present */ 
  132083           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  132084             :   /* add assignment to result here */ 
  132085           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  132086             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  132087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  132088             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  132089           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  132090           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  132091             :         { 
  132092           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  132093             :         } 
  132094             :        else 
  132095             :         { 
  132096             :           attachedPreprocessingInfoPtr_copy = NULL; 
  132097             :         } 
  132098             :   /* check for a valid pointer and delete if present */ 
  132099           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  132100             :   /* add assignment to result here */ 
  132101           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  132102             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  132103             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  132104             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  132105           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  132106           0 :      if ( p_attributeMechanism != NULL ) 
  132107             :         { 
  132108           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  132109             :         } 
  132110             :        else 
  132111             :         { 
  132112             :           attributeMechanism_copy = NULL; 
  132113             :         } 
  132114             :   /* check for a valid pointer and delete if present */ 
  132115           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  132116             :   /* add assignment to result here */ 
  132117           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  132118             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  132119             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  132120             :   // case: toBeCopied == COPY_DATA for numeric_label
  132121           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  132122           0 :      result->p_numeric_label = numeric_label_copy; 
  132123             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  132124             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  132125             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  132126           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  132127           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  132128             :   // Copy non-constructor parameter data member (access function): upir_parent_copy
  132129             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_parent
  132130             :   // case: toBeCopied == COPY_DATA for upir_parent
  132131           0 :      SgStatement* upir_parent_copy = p_upir_parent; 
  132132           0 :      result->p_upir_parent = upir_parent_copy; 
  132133             :   // Copy non-constructor parameter data member (list access function): result->get_upir_children()
  132134             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for upir_children
  132135             :   // case: toBeCopied == COPY_DATA for upir_children
  132136           0 :      SgStatementPtrList upir_children_copy = p_upir_children; 
  132137           0 :      result->p_upir_children = upir_children_copy; 
  132138             : 
  132139             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132140             : 
  132141             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  132142             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  132143             :   // fixupCopy(result,help);
  132144             : 
  132145             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  132146             :   // the Sg_File_Info objects that are built for the new IR nodes.
  132147           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  132148           0 :      if (locatedNode != NULL)
  132149             :         {
  132150             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  132151           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  132152           0 :           ROSE_ASSERT(start != NULL);
  132153             : #if 0
  132154             :        // Debugging information
  132155             :           if (start->get_parent() == NULL)
  132156             :              {
  132157             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132158             :              }
  132159             : #endif
  132160           0 :           start->set_parent(locatedNode);
  132161           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  132162             : 
  132163           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  132164             : 
  132165             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  132166             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  132167             :        // ROSE_ASSERT(end != NULL);
  132168           0 :           if (end == NULL)
  132169             :              {
  132170           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  132171             :              }
  132172             :             else
  132173             :              {
  132174             : #if 0
  132175             :             // Debugging information
  132176             :                if (end->get_parent() == NULL)
  132177             :                   {
  132178             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132179             :                   }
  132180             : #endif
  132181           0 :                end->set_parent(locatedNode);
  132182           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  132183             :              }
  132184             : 
  132185           0 :           SgExpression* expression = isSgExpression(result);
  132186           0 :           if (isSgExpression(this) != NULL)
  132187             :              {
  132188           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  132189             : 
  132190             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  132191           0 :                if (operatorPosition != NULL)
  132192             :                   {
  132193             : #if 0
  132194             :                  // Debugging information
  132195             :                     if (operatorPosition->get_parent() == NULL)
  132196             :                        {
  132197             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132198             :                        }
  132199             : #endif
  132200           0 :                     operatorPosition->set_parent(expression);
  132201           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  132202             :                   }
  132203             :              }
  132204             :         }
  132205             : 
  132206             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  132207           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  132208           0 :      if (initializedName != NULL)
  132209             :         {
  132210             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  132211           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  132212           0 :           ROSE_ASSERT(start != NULL);
  132213             : #if 0
  132214             :        // Debugging information
  132215             :           if (start->get_parent() == NULL)
  132216             :              {
  132217             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132218             :              }
  132219             : #endif
  132220           0 :           start->set_parent(initializedName);
  132221           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  132222             : 
  132223             : #if 0
  132224             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  132225             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  132226             : 
  132227             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  132228             :        // ROSE_ASSERT(end != NULL);
  132229             :           if (end == NULL)
  132230             :              {
  132231             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  132232             :              }
  132233             :             else
  132234             :              {
  132235             :                if (end->get_parent() == NULL)
  132236             :                   {
  132237             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132238             :                   }
  132239             :                end->set_parent(initializedName);
  132240             :                ROSE_ASSERT(end->get_parent() != NULL);
  132241             :              }
  132242             : #endif
  132243             :         }
  132244             : 
  132245             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  132246           0 :      help.insertCopiedNodePair(this,result);
  132247             : 
  132248             :   // printf ("End of copy SgOmpDeclareMapperStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  132249             : 
  132250             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  132251             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  132252           0 :      help.decrementDepth();
  132253             : 
  132254             :   // Test if this is the root of the copy!
  132255           0 :      if (help.get_depth() == 0)
  132256             :         {
  132257             :        // This is the original calling node.
  132258             : 
  132259             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  132260             :        // printf ("Calling SgOmpDeclareMapperStatement::fixupCopy() (from root of AST being copied) \n");
  132261             : #if ALT_FIXUP_COPY
  132262             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  132263           0 :           fixupCopy_scopes (result,help);
  132264           0 :           fixupCopy_symbols (result,help);
  132265           0 :           fixupCopy_references (result,help);
  132266             : #else
  132267             :           fixupCopy(result,help);
  132268             : #endif
  132269             :        // Allow this to be called recursively, so accumulate the state.
  132270             :        // Also, clear the state in the SgCopyHelp object.
  132271             :        // help.clearState();
  132272             :         }
  132273             : 
  132274           0 :      return result;
  132275             :    }
  132276             : 
  132277             : 
  132278             : /* #line 132279 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  132279             : 
  132280             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132281             : 
  132282           0 : SgNode* SgSequenceStatement::copy ( SgCopyHelp& help) const
  132283             :    {
  132284           0 :      SgSequenceStatement* result = NULL;
  132285             : 
  132286             :   // printf ("Copy SgSequenceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  132287             : 
  132288             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  132289             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  132290             :   // The default value of the depth is 0, so after this call the depth is 1!
  132291           0 :      help.incrementDepth();
  132292             : 
  132293             : #if 0
  132294             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  132295             :   // but it is not generally true that things can only be copied once!
  132296             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  132297             :   // AstAttribute* existingAttribute = const_cast<SgSequenceStatement*>(this)->attribute["copied"];
  132298             :      bool previouslyCopied = const_cast<SgSequenceStatement*>(this)->attribute.exists("copied");
  132299             :      if (previouslyCopied == true)
  132300             :         {
  132301             :           this->get_file_info()->display("Called from copy SgSequenceStatement: debug");
  132302             :         }
  132303             :      ROSE_ASSERT(previouslyCopied == false);
  132304             : 
  132305             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  132306             :      AstAttribute* newAttribute = new AstAttribute();
  132307             :      ROSE_ASSERT(newAttribute != NULL);
  132308             : 
  132309             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  132310             :      const_cast<SgSequenceStatement*>(this)->attribute.add("copied",newAttribute);
  132311             : #endif
  132312             : 
  132313             :   // Copy data members from base classes
  132314             :   // Copy constructor parameter data member: startOfConstruct_copy
  132315             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  132316             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  132317           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  132318           0 :      if ( p_startOfConstruct != NULL ) 
  132319             :         { 
  132320           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  132321             :         } 
  132322             :        else 
  132323             :         { 
  132324             :           startOfConstruct_copy = NULL; 
  132325             :         } 
  132326             :  
  132327             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132328             : 
  132329             :   // Build an empty copy of this object (will be filled in, but 
  132330             :   // the parent can't be set and must be set by the caller)
  132331           0 :      result = new SgSequenceStatement(  startOfConstruct_copy );
  132332           0 :      ROSE_ASSERT(result != NULL);
  132333             : 
  132334             :   // Copy data members of "this" class
  132335             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  132336             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  132337             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  132338           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  132339           0 :      if ( p_endOfConstruct != NULL ) 
  132340             :         { 
  132341           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  132342             :         } 
  132343             :        else 
  132344             :         { 
  132345             :           endOfConstruct_copy = NULL; 
  132346             :         } 
  132347             :   /* check for a valid pointer and delete if present */ 
  132348           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  132349             :   /* add assignment to result here */ 
  132350           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  132351             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  132352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  132353             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  132354           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  132355           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  132356             :         { 
  132357           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  132358             :         } 
  132359             :        else 
  132360             :         { 
  132361             :           attachedPreprocessingInfoPtr_copy = NULL; 
  132362             :         } 
  132363             :   /* check for a valid pointer and delete if present */ 
  132364           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  132365             :   /* add assignment to result here */ 
  132366           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  132367             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  132368             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  132369             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  132370           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  132371           0 :      if ( p_attributeMechanism != NULL ) 
  132372             :         { 
  132373           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  132374             :         } 
  132375             :        else 
  132376             :         { 
  132377             :           attributeMechanism_copy = NULL; 
  132378             :         } 
  132379             :   /* check for a valid pointer and delete if present */ 
  132380           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  132381             :   /* add assignment to result here */ 
  132382           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  132383             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  132384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  132385             :   // case: toBeCopied == COPY_DATA for numeric_label
  132386           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  132387           0 :      result->p_numeric_label = numeric_label_copy; 
  132388             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  132389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  132390             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  132391           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  132392           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  132393             : 
  132394             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132395             : 
  132396             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  132397             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  132398             :   // fixupCopy(result,help);
  132399             : 
  132400             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  132401             :   // the Sg_File_Info objects that are built for the new IR nodes.
  132402           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  132403           0 :      if (locatedNode != NULL)
  132404             :         {
  132405             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  132406           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  132407           0 :           ROSE_ASSERT(start != NULL);
  132408             : #if 0
  132409             :        // Debugging information
  132410             :           if (start->get_parent() == NULL)
  132411             :              {
  132412             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132413             :              }
  132414             : #endif
  132415           0 :           start->set_parent(locatedNode);
  132416           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  132417             : 
  132418           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  132419             : 
  132420             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  132421             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  132422             :        // ROSE_ASSERT(end != NULL);
  132423           0 :           if (end == NULL)
  132424             :              {
  132425           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  132426             :              }
  132427             :             else
  132428             :              {
  132429             : #if 0
  132430             :             // Debugging information
  132431             :                if (end->get_parent() == NULL)
  132432             :                   {
  132433             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132434             :                   }
  132435             : #endif
  132436           0 :                end->set_parent(locatedNode);
  132437           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  132438             :              }
  132439             : 
  132440           0 :           SgExpression* expression = isSgExpression(result);
  132441           0 :           if (isSgExpression(this) != NULL)
  132442             :              {
  132443           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  132444             : 
  132445             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  132446           0 :                if (operatorPosition != NULL)
  132447             :                   {
  132448             : #if 0
  132449             :                  // Debugging information
  132450             :                     if (operatorPosition->get_parent() == NULL)
  132451             :                        {
  132452             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132453             :                        }
  132454             : #endif
  132455           0 :                     operatorPosition->set_parent(expression);
  132456           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  132457             :                   }
  132458             :              }
  132459             :         }
  132460             : 
  132461             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  132462           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  132463           0 :      if (initializedName != NULL)
  132464             :         {
  132465             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  132466           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  132467           0 :           ROSE_ASSERT(start != NULL);
  132468             : #if 0
  132469             :        // Debugging information
  132470             :           if (start->get_parent() == NULL)
  132471             :              {
  132472             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132473             :              }
  132474             : #endif
  132475           0 :           start->set_parent(initializedName);
  132476           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  132477             : 
  132478             : #if 0
  132479             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  132480             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  132481             : 
  132482             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  132483             :        // ROSE_ASSERT(end != NULL);
  132484             :           if (end == NULL)
  132485             :              {
  132486             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  132487             :              }
  132488             :             else
  132489             :              {
  132490             :                if (end->get_parent() == NULL)
  132491             :                   {
  132492             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132493             :                   }
  132494             :                end->set_parent(initializedName);
  132495             :                ROSE_ASSERT(end->get_parent() != NULL);
  132496             :              }
  132497             : #endif
  132498             :         }
  132499             : 
  132500             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  132501           0 :      help.insertCopiedNodePair(this,result);
  132502             : 
  132503             :   // printf ("End of copy SgSequenceStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  132504             : 
  132505             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  132506             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  132507           0 :      help.decrementDepth();
  132508             : 
  132509             :   // Test if this is the root of the copy!
  132510           0 :      if (help.get_depth() == 0)
  132511             :         {
  132512             :        // This is the original calling node.
  132513             : 
  132514             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  132515             :        // printf ("Calling SgSequenceStatement::fixupCopy() (from root of AST being copied) \n");
  132516             : #if ALT_FIXUP_COPY
  132517             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  132518           0 :           fixupCopy_scopes (result,help);
  132519           0 :           fixupCopy_symbols (result,help);
  132520           0 :           fixupCopy_references (result,help);
  132521             : #else
  132522             :           fixupCopy(result,help);
  132523             : #endif
  132524             :        // Allow this to be called recursively, so accumulate the state.
  132525             :        // Also, clear the state in the SgCopyHelp object.
  132526             :        // help.clearState();
  132527             :         }
  132528             : 
  132529           0 :      return result;
  132530             :    }
  132531             : 
  132532             : 
  132533             : /* #line 132534 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  132534             : 
  132535             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132536             : 
  132537           0 : SgNode* SgWithStatement::copy ( SgCopyHelp& help) const
  132538             :    {
  132539           0 :      SgWithStatement* result = NULL;
  132540             : 
  132541             :   // printf ("Copy SgWithStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  132542             : 
  132543             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  132544             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  132545             :   // The default value of the depth is 0, so after this call the depth is 1!
  132546           0 :      help.incrementDepth();
  132547             : 
  132548             : #if 0
  132549             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  132550             :   // but it is not generally true that things can only be copied once!
  132551             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  132552             :   // AstAttribute* existingAttribute = const_cast<SgWithStatement*>(this)->attribute["copied"];
  132553             :      bool previouslyCopied = const_cast<SgWithStatement*>(this)->attribute.exists("copied");
  132554             :      if (previouslyCopied == true)
  132555             :         {
  132556             :           this->get_file_info()->display("Called from copy SgWithStatement: debug");
  132557             :         }
  132558             :      ROSE_ASSERT(previouslyCopied == false);
  132559             : 
  132560             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  132561             :      AstAttribute* newAttribute = new AstAttribute();
  132562             :      ROSE_ASSERT(newAttribute != NULL);
  132563             : 
  132564             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  132565             :      const_cast<SgWithStatement*>(this)->attribute.add("copied",newAttribute);
  132566             : #endif
  132567             : 
  132568             :   // Copy data members from base classes
  132569             :   // Copy constructor parameter data member: startOfConstruct_copy
  132570             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  132571             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  132572           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  132573           0 :      if ( p_startOfConstruct != NULL ) 
  132574             :         { 
  132575           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  132576             :         } 
  132577             :        else 
  132578             :         { 
  132579             :           startOfConstruct_copy = NULL; 
  132580             :         } 
  132581             :   // Copy constructor parameter data member: expression_copy
  132582           0 :      SgExpression* expression_copy; 
  132583             :   // case: not a listType for (using conditionalToCopyVariable)expression
  132584           0 :           if (get_expression() != NULL) 
  132585             :              { 
  132586           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
  132587             :              } 
  132588             :             else 
  132589             :              { 
  132590             :                expression_copy = NULL; 
  132591             :              } 
  132592             :   // Copy constructor parameter data member: body_copy
  132593           0 :      SgStatement* body_copy; 
  132594             :   // case: not a listType for (using conditionalToCopyVariable)body
  132595           0 :           if (get_body() != NULL) 
  132596             :              { 
  132597           0 :                body_copy = static_cast<SgStatement*>(help.copyAst(get_body())); 
  132598             :              } 
  132599             :             else 
  132600             :              { 
  132601             :                body_copy = NULL; 
  132602             :              } 
  132603             :  
  132604             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132605             : 
  132606             :   // Build an empty copy of this object (will be filled in, but 
  132607             :   // the parent can't be set and must be set by the caller)
  132608           0 :      result = new SgWithStatement(  startOfConstruct_copy, expression_copy, body_copy );
  132609           0 :      ROSE_ASSERT(result != NULL);
  132610             : 
  132611             :   // Copy data members of "this" class
  132612             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  132613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  132614             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  132615           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  132616           0 :      if ( p_endOfConstruct != NULL ) 
  132617             :         { 
  132618           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  132619             :         } 
  132620             :        else 
  132621             :         { 
  132622             :           endOfConstruct_copy = NULL; 
  132623             :         } 
  132624             :   /* check for a valid pointer and delete if present */ 
  132625           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  132626             :   /* add assignment to result here */ 
  132627           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  132628             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  132629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  132630             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  132631           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  132632           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  132633             :         { 
  132634           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  132635             :         } 
  132636             :        else 
  132637             :         { 
  132638             :           attachedPreprocessingInfoPtr_copy = NULL; 
  132639             :         } 
  132640             :   /* check for a valid pointer and delete if present */ 
  132641           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  132642             :   /* add assignment to result here */ 
  132643           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  132644             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  132645             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  132646             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  132647           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  132648           0 :      if ( p_attributeMechanism != NULL ) 
  132649             :         { 
  132650           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  132651             :         } 
  132652             :        else 
  132653             :         { 
  132654             :           attributeMechanism_copy = NULL; 
  132655             :         } 
  132656             :   /* check for a valid pointer and delete if present */ 
  132657           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  132658             :   /* add assignment to result here */ 
  132659           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  132660             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  132661             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  132662             :   // case: toBeCopied == COPY_DATA for numeric_label
  132663           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  132664           0 :      result->p_numeric_label = numeric_label_copy; 
  132665             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  132666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  132667             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  132668           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  132669           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  132670             :   // case: not a listType for (using conditionalToSetParent)expression
  132671           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
  132672             :              { 
  132673           0 :                expression_copy->set_parent(result); 
  132674             :              } 
  132675             :   // case: not a listType for (using conditionalToSetParent)body
  132676           0 :           if ( (body_copy != NULL) && (body_copy->get_parent() == NULL) && (isSgType(body_copy) == NULL) ) 
  132677             :              { 
  132678           0 :                body_copy->set_parent(result); 
  132679             :              } 
  132680             : 
  132681             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132682             : 
  132683             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  132684             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  132685             :   // fixupCopy(result,help);
  132686             : 
  132687             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  132688             :   // the Sg_File_Info objects that are built for the new IR nodes.
  132689           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  132690           0 :      if (locatedNode != NULL)
  132691             :         {
  132692             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  132693           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  132694           0 :           ROSE_ASSERT(start != NULL);
  132695             : #if 0
  132696             :        // Debugging information
  132697             :           if (start->get_parent() == NULL)
  132698             :              {
  132699             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132700             :              }
  132701             : #endif
  132702           0 :           start->set_parent(locatedNode);
  132703           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  132704             : 
  132705           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  132706             : 
  132707             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  132708             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  132709             :        // ROSE_ASSERT(end != NULL);
  132710           0 :           if (end == NULL)
  132711             :              {
  132712           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  132713             :              }
  132714             :             else
  132715             :              {
  132716             : #if 0
  132717             :             // Debugging information
  132718             :                if (end->get_parent() == NULL)
  132719             :                   {
  132720             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132721             :                   }
  132722             : #endif
  132723           0 :                end->set_parent(locatedNode);
  132724           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  132725             :              }
  132726             : 
  132727           0 :           SgExpression* expression = isSgExpression(result);
  132728           0 :           if (isSgExpression(this) != NULL)
  132729             :              {
  132730           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  132731             : 
  132732             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  132733           0 :                if (operatorPosition != NULL)
  132734             :                   {
  132735             : #if 0
  132736             :                  // Debugging information
  132737             :                     if (operatorPosition->get_parent() == NULL)
  132738             :                        {
  132739             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132740             :                        }
  132741             : #endif
  132742           0 :                     operatorPosition->set_parent(expression);
  132743           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  132744             :                   }
  132745             :              }
  132746             :         }
  132747             : 
  132748             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  132749           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  132750           0 :      if (initializedName != NULL)
  132751             :         {
  132752             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  132753           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  132754           0 :           ROSE_ASSERT(start != NULL);
  132755             : #if 0
  132756             :        // Debugging information
  132757             :           if (start->get_parent() == NULL)
  132758             :              {
  132759             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132760             :              }
  132761             : #endif
  132762           0 :           start->set_parent(initializedName);
  132763           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  132764             : 
  132765             : #if 0
  132766             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  132767             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  132768             : 
  132769             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  132770             :        // ROSE_ASSERT(end != NULL);
  132771             :           if (end == NULL)
  132772             :              {
  132773             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  132774             :              }
  132775             :             else
  132776             :              {
  132777             :                if (end->get_parent() == NULL)
  132778             :                   {
  132779             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132780             :                   }
  132781             :                end->set_parent(initializedName);
  132782             :                ROSE_ASSERT(end->get_parent() != NULL);
  132783             :              }
  132784             : #endif
  132785             :         }
  132786             : 
  132787             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  132788           0 :      help.insertCopiedNodePair(this,result);
  132789             : 
  132790             :   // printf ("End of copy SgWithStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  132791             : 
  132792             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  132793             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  132794           0 :      help.decrementDepth();
  132795             : 
  132796             :   // Test if this is the root of the copy!
  132797           0 :      if (help.get_depth() == 0)
  132798             :         {
  132799             :        // This is the original calling node.
  132800             : 
  132801             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  132802             :        // printf ("Calling SgWithStatement::fixupCopy() (from root of AST being copied) \n");
  132803             : #if ALT_FIXUP_COPY
  132804             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  132805           0 :           fixupCopy_scopes (result,help);
  132806           0 :           fixupCopy_symbols (result,help);
  132807           0 :           fixupCopy_references (result,help);
  132808             : #else
  132809             :           fixupCopy(result,help);
  132810             : #endif
  132811             :        // Allow this to be called recursively, so accumulate the state.
  132812             :        // Also, clear the state in the SgCopyHelp object.
  132813             :        // help.clearState();
  132814             :         }
  132815             : 
  132816           0 :      return result;
  132817             :    }
  132818             : 
  132819             : 
  132820             : /* #line 132821 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  132821             : 
  132822             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132823             : 
  132824           0 : SgNode* SgPassStatement::copy ( SgCopyHelp& help) const
  132825             :    {
  132826           0 :      SgPassStatement* result = NULL;
  132827             : 
  132828             :   // printf ("Copy SgPassStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  132829             : 
  132830             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  132831             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  132832             :   // The default value of the depth is 0, so after this call the depth is 1!
  132833           0 :      help.incrementDepth();
  132834             : 
  132835             : #if 0
  132836             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  132837             :   // but it is not generally true that things can only be copied once!
  132838             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  132839             :   // AstAttribute* existingAttribute = const_cast<SgPassStatement*>(this)->attribute["copied"];
  132840             :      bool previouslyCopied = const_cast<SgPassStatement*>(this)->attribute.exists("copied");
  132841             :      if (previouslyCopied == true)
  132842             :         {
  132843             :           this->get_file_info()->display("Called from copy SgPassStatement: debug");
  132844             :         }
  132845             :      ROSE_ASSERT(previouslyCopied == false);
  132846             : 
  132847             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  132848             :      AstAttribute* newAttribute = new AstAttribute();
  132849             :      ROSE_ASSERT(newAttribute != NULL);
  132850             : 
  132851             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  132852             :      const_cast<SgPassStatement*>(this)->attribute.add("copied",newAttribute);
  132853             : #endif
  132854             : 
  132855             :   // Copy data members from base classes
  132856             :   // Copy constructor parameter data member: startOfConstruct_copy
  132857             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  132858             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  132859           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  132860           0 :      if ( p_startOfConstruct != NULL ) 
  132861             :         { 
  132862           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  132863             :         } 
  132864             :        else 
  132865             :         { 
  132866             :           startOfConstruct_copy = NULL; 
  132867             :         } 
  132868             :  
  132869             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132870             : 
  132871             :   // Build an empty copy of this object (will be filled in, but 
  132872             :   // the parent can't be set and must be set by the caller)
  132873           0 :      result = new SgPassStatement(  startOfConstruct_copy );
  132874           0 :      ROSE_ASSERT(result != NULL);
  132875             : 
  132876             :   // Copy data members of "this" class
  132877             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  132878             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  132879             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  132880           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  132881           0 :      if ( p_endOfConstruct != NULL ) 
  132882             :         { 
  132883           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  132884             :         } 
  132885             :        else 
  132886             :         { 
  132887             :           endOfConstruct_copy = NULL; 
  132888             :         } 
  132889             :   /* check for a valid pointer and delete if present */ 
  132890           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  132891             :   /* add assignment to result here */ 
  132892           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  132893             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  132894             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  132895             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  132896           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  132897           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  132898             :         { 
  132899           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  132900             :         } 
  132901             :        else 
  132902             :         { 
  132903             :           attachedPreprocessingInfoPtr_copy = NULL; 
  132904             :         } 
  132905             :   /* check for a valid pointer and delete if present */ 
  132906           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  132907             :   /* add assignment to result here */ 
  132908           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  132909             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  132910             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  132911             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  132912           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  132913           0 :      if ( p_attributeMechanism != NULL ) 
  132914             :         { 
  132915           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  132916             :         } 
  132917             :        else 
  132918             :         { 
  132919             :           attributeMechanism_copy = NULL; 
  132920             :         } 
  132921             :   /* check for a valid pointer and delete if present */ 
  132922           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  132923             :   /* add assignment to result here */ 
  132924           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  132925             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  132926             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  132927             :   // case: toBeCopied == COPY_DATA for numeric_label
  132928           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  132929           0 :      result->p_numeric_label = numeric_label_copy; 
  132930             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  132931             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  132932             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  132933           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  132934           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  132935             : 
  132936             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  132937             : 
  132938             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  132939             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  132940             :   // fixupCopy(result,help);
  132941             : 
  132942             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  132943             :   // the Sg_File_Info objects that are built for the new IR nodes.
  132944           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  132945           0 :      if (locatedNode != NULL)
  132946             :         {
  132947             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  132948           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  132949           0 :           ROSE_ASSERT(start != NULL);
  132950             : #if 0
  132951             :        // Debugging information
  132952             :           if (start->get_parent() == NULL)
  132953             :              {
  132954             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132955             :              }
  132956             : #endif
  132957           0 :           start->set_parent(locatedNode);
  132958           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  132959             : 
  132960           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  132961             : 
  132962             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  132963             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  132964             :        // ROSE_ASSERT(end != NULL);
  132965           0 :           if (end == NULL)
  132966             :              {
  132967           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  132968             :              }
  132969             :             else
  132970             :              {
  132971             : #if 0
  132972             :             // Debugging information
  132973             :                if (end->get_parent() == NULL)
  132974             :                   {
  132975             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132976             :                   }
  132977             : #endif
  132978           0 :                end->set_parent(locatedNode);
  132979           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  132980             :              }
  132981             : 
  132982           0 :           SgExpression* expression = isSgExpression(result);
  132983           0 :           if (isSgExpression(this) != NULL)
  132984             :              {
  132985           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  132986             : 
  132987             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  132988           0 :                if (operatorPosition != NULL)
  132989             :                   {
  132990             : #if 0
  132991             :                  // Debugging information
  132992             :                     if (operatorPosition->get_parent() == NULL)
  132993             :                        {
  132994             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  132995             :                        }
  132996             : #endif
  132997           0 :                     operatorPosition->set_parent(expression);
  132998           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  132999             :                   }
  133000             :              }
  133001             :         }
  133002             : 
  133003             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  133004           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  133005           0 :      if (initializedName != NULL)
  133006             :         {
  133007             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  133008           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  133009           0 :           ROSE_ASSERT(start != NULL);
  133010             : #if 0
  133011             :        // Debugging information
  133012             :           if (start->get_parent() == NULL)
  133013             :              {
  133014             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133015             :              }
  133016             : #endif
  133017           0 :           start->set_parent(initializedName);
  133018           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  133019             : 
  133020             : #if 0
  133021             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  133022             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  133023             : 
  133024             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  133025             :        // ROSE_ASSERT(end != NULL);
  133026             :           if (end == NULL)
  133027             :              {
  133028             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  133029             :              }
  133030             :             else
  133031             :              {
  133032             :                if (end->get_parent() == NULL)
  133033             :                   {
  133034             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133035             :                   }
  133036             :                end->set_parent(initializedName);
  133037             :                ROSE_ASSERT(end->get_parent() != NULL);
  133038             :              }
  133039             : #endif
  133040             :         }
  133041             : 
  133042             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  133043           0 :      help.insertCopiedNodePair(this,result);
  133044             : 
  133045             :   // printf ("End of copy SgPassStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  133046             : 
  133047             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  133048             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  133049           0 :      help.decrementDepth();
  133050             : 
  133051             :   // Test if this is the root of the copy!
  133052           0 :      if (help.get_depth() == 0)
  133053             :         {
  133054             :        // This is the original calling node.
  133055             : 
  133056             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  133057             :        // printf ("Calling SgPassStatement::fixupCopy() (from root of AST being copied) \n");
  133058             : #if ALT_FIXUP_COPY
  133059             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  133060           0 :           fixupCopy_scopes (result,help);
  133061           0 :           fixupCopy_symbols (result,help);
  133062           0 :           fixupCopy_references (result,help);
  133063             : #else
  133064             :           fixupCopy(result,help);
  133065             : #endif
  133066             :        // Allow this to be called recursively, so accumulate the state.
  133067             :        // Also, clear the state in the SgCopyHelp object.
  133068             :        // help.clearState();
  133069             :         }
  133070             : 
  133071           0 :      return result;
  133072             :    }
  133073             : 
  133074             : 
  133075             : /* #line 133076 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  133076             : 
  133077             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133078             : 
  133079           0 : SgNode* SgAssertStmt::copy ( SgCopyHelp& help) const
  133080             :    {
  133081           0 :      SgAssertStmt* result = NULL;
  133082             : 
  133083             :   // printf ("Copy SgAssertStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
  133084             : 
  133085             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  133086             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  133087             :   // The default value of the depth is 0, so after this call the depth is 1!
  133088           0 :      help.incrementDepth();
  133089             : 
  133090             : #if 0
  133091             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  133092             :   // but it is not generally true that things can only be copied once!
  133093             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  133094             :   // AstAttribute* existingAttribute = const_cast<SgAssertStmt*>(this)->attribute["copied"];
  133095             :      bool previouslyCopied = const_cast<SgAssertStmt*>(this)->attribute.exists("copied");
  133096             :      if (previouslyCopied == true)
  133097             :         {
  133098             :           this->get_file_info()->display("Called from copy SgAssertStmt: debug");
  133099             :         }
  133100             :      ROSE_ASSERT(previouslyCopied == false);
  133101             : 
  133102             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  133103             :      AstAttribute* newAttribute = new AstAttribute();
  133104             :      ROSE_ASSERT(newAttribute != NULL);
  133105             : 
  133106             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  133107             :      const_cast<SgAssertStmt*>(this)->attribute.add("copied",newAttribute);
  133108             : #endif
  133109             : 
  133110             :   // Copy data members from base classes
  133111             :   // Copy constructor parameter data member: startOfConstruct_copy
  133112             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  133113             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  133114           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  133115           0 :      if ( p_startOfConstruct != NULL ) 
  133116             :         { 
  133117           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  133118             :         } 
  133119             :        else 
  133120             :         { 
  133121             :           startOfConstruct_copy = NULL; 
  133122             :         } 
  133123             :   // Copy constructor parameter data member: test_copy
  133124           0 :      SgExpression* test_copy; 
  133125             :   // case: not a listType for (using conditionalToCopyVariable)test
  133126           0 :           if (get_test() != NULL) 
  133127             :              { 
  133128           0 :                test_copy = static_cast<SgExpression*>(help.copyAst(get_test())); 
  133129             :              } 
  133130             :             else 
  133131             :              { 
  133132             :                test_copy = NULL; 
  133133             :              } 
  133134             :  
  133135             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133136             : 
  133137             :   // Build an empty copy of this object (will be filled in, but 
  133138             :   // the parent can't be set and must be set by the caller)
  133139           0 :      result = new SgAssertStmt(  startOfConstruct_copy, test_copy );
  133140           0 :      ROSE_ASSERT(result != NULL);
  133141             : 
  133142             :   // Copy data members of "this" class
  133143             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  133144             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  133145             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  133146           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  133147           0 :      if ( p_endOfConstruct != NULL ) 
  133148             :         { 
  133149           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  133150             :         } 
  133151             :        else 
  133152             :         { 
  133153             :           endOfConstruct_copy = NULL; 
  133154             :         } 
  133155             :   /* check for a valid pointer and delete if present */ 
  133156           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  133157             :   /* add assignment to result here */ 
  133158           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  133159             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  133160             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  133161             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  133162           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  133163           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  133164             :         { 
  133165           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  133166             :         } 
  133167             :        else 
  133168             :         { 
  133169             :           attachedPreprocessingInfoPtr_copy = NULL; 
  133170             :         } 
  133171             :   /* check for a valid pointer and delete if present */ 
  133172           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  133173             :   /* add assignment to result here */ 
  133174           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  133175             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  133176             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  133177             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  133178           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  133179           0 :      if ( p_attributeMechanism != NULL ) 
  133180             :         { 
  133181           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  133182             :         } 
  133183             :        else 
  133184             :         { 
  133185             :           attributeMechanism_copy = NULL; 
  133186             :         } 
  133187             :   /* check for a valid pointer and delete if present */ 
  133188           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  133189             :   /* add assignment to result here */ 
  133190           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  133191             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  133192             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  133193             :   // case: toBeCopied == COPY_DATA for numeric_label
  133194           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  133195           0 :      result->p_numeric_label = numeric_label_copy; 
  133196             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  133197             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  133198             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  133199           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  133200           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  133201             :   // Copy non-constructor parameter data member (access function): exception_argument_copy
  133202           0 :      SgExpression* exception_argument_copy; 
  133203             :   // case: not a listType for (using conditionalToCopyVariable)exception_argument
  133204           0 :           if (get_exception_argument() != NULL) 
  133205             :              { 
  133206           0 :                exception_argument_copy = static_cast<SgExpression*>(help.copyAst(get_exception_argument())); 
  133207             :              } 
  133208             :             else 
  133209             :              { 
  133210             :                exception_argument_copy = NULL; 
  133211             :              } 
  133212             :   /* check for a valid pointer and delete if present */ 
  133213           0 :      if (result->p_exception_argument != NULL) delete result->p_exception_argument; 
  133214           0 :      result->p_exception_argument = exception_argument_copy; 
  133215             :   // case: not a listType for (using conditionalToSetParent)exception_argument
  133216           0 :           if ( (exception_argument_copy != NULL) && (exception_argument_copy->get_parent() == NULL) && (isSgType(exception_argument_copy) == NULL) ) 
  133217             :              { 
  133218           0 :                exception_argument_copy->set_parent(result); 
  133219             :              } 
  133220             :   // case: not a listType for (using conditionalToSetParent)test
  133221           0 :           if ( (test_copy != NULL) && (test_copy->get_parent() == NULL) && (isSgType(test_copy) == NULL) ) 
  133222             :              { 
  133223           0 :                test_copy->set_parent(result); 
  133224             :              } 
  133225             : 
  133226             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133227             : 
  133228             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  133229             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  133230             :   // fixupCopy(result,help);
  133231             : 
  133232             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  133233             :   // the Sg_File_Info objects that are built for the new IR nodes.
  133234           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  133235           0 :      if (locatedNode != NULL)
  133236             :         {
  133237             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  133238           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  133239           0 :           ROSE_ASSERT(start != NULL);
  133240             : #if 0
  133241             :        // Debugging information
  133242             :           if (start->get_parent() == NULL)
  133243             :              {
  133244             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133245             :              }
  133246             : #endif
  133247           0 :           start->set_parent(locatedNode);
  133248           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  133249             : 
  133250           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  133251             : 
  133252             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  133253             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  133254             :        // ROSE_ASSERT(end != NULL);
  133255           0 :           if (end == NULL)
  133256             :              {
  133257           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  133258             :              }
  133259             :             else
  133260             :              {
  133261             : #if 0
  133262             :             // Debugging information
  133263             :                if (end->get_parent() == NULL)
  133264             :                   {
  133265             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133266             :                   }
  133267             : #endif
  133268           0 :                end->set_parent(locatedNode);
  133269           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  133270             :              }
  133271             : 
  133272           0 :           SgExpression* expression = isSgExpression(result);
  133273           0 :           if (isSgExpression(this) != NULL)
  133274             :              {
  133275           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  133276             : 
  133277             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  133278           0 :                if (operatorPosition != NULL)
  133279             :                   {
  133280             : #if 0
  133281             :                  // Debugging information
  133282             :                     if (operatorPosition->get_parent() == NULL)
  133283             :                        {
  133284             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133285             :                        }
  133286             : #endif
  133287           0 :                     operatorPosition->set_parent(expression);
  133288           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  133289             :                   }
  133290             :              }
  133291             :         }
  133292             : 
  133293             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  133294           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  133295           0 :      if (initializedName != NULL)
  133296             :         {
  133297             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  133298           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  133299           0 :           ROSE_ASSERT(start != NULL);
  133300             : #if 0
  133301             :        // Debugging information
  133302             :           if (start->get_parent() == NULL)
  133303             :              {
  133304             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133305             :              }
  133306             : #endif
  133307           0 :           start->set_parent(initializedName);
  133308           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  133309             : 
  133310             : #if 0
  133311             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  133312             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  133313             : 
  133314             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  133315             :        // ROSE_ASSERT(end != NULL);
  133316             :           if (end == NULL)
  133317             :              {
  133318             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  133319             :              }
  133320             :             else
  133321             :              {
  133322             :                if (end->get_parent() == NULL)
  133323             :                   {
  133324             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133325             :                   }
  133326             :                end->set_parent(initializedName);
  133327             :                ROSE_ASSERT(end->get_parent() != NULL);
  133328             :              }
  133329             : #endif
  133330             :         }
  133331             : 
  133332             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  133333           0 :      help.insertCopiedNodePair(this,result);
  133334             : 
  133335             :   // printf ("End of copy SgAssertStmt = %p = %s \n",this,SageInterface::get_name(this).c_str());
  133336             : 
  133337             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  133338             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  133339           0 :      help.decrementDepth();
  133340             : 
  133341             :   // Test if this is the root of the copy!
  133342           0 :      if (help.get_depth() == 0)
  133343             :         {
  133344             :        // This is the original calling node.
  133345             : 
  133346             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  133347             :        // printf ("Calling SgAssertStmt::fixupCopy() (from root of AST being copied) \n");
  133348             : #if ALT_FIXUP_COPY
  133349             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  133350           0 :           fixupCopy_scopes (result,help);
  133351           0 :           fixupCopy_symbols (result,help);
  133352           0 :           fixupCopy_references (result,help);
  133353             : #else
  133354             :           fixupCopy(result,help);
  133355             : #endif
  133356             :        // Allow this to be called recursively, so accumulate the state.
  133357             :        // Also, clear the state in the SgCopyHelp object.
  133358             :        // help.clearState();
  133359             :         }
  133360             : 
  133361           0 :      return result;
  133362             :    }
  133363             : 
  133364             : 
  133365             : /* #line 133366 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  133366             : 
  133367             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133368             : 
  133369           0 : SgNode* SgExecStatement::copy ( SgCopyHelp& help) const
  133370             :    {
  133371           0 :      SgExecStatement* result = NULL;
  133372             : 
  133373             :   // printf ("Copy SgExecStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  133374             : 
  133375             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  133376             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  133377             :   // The default value of the depth is 0, so after this call the depth is 1!
  133378           0 :      help.incrementDepth();
  133379             : 
  133380             : #if 0
  133381             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  133382             :   // but it is not generally true that things can only be copied once!
  133383             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  133384             :   // AstAttribute* existingAttribute = const_cast<SgExecStatement*>(this)->attribute["copied"];
  133385             :      bool previouslyCopied = const_cast<SgExecStatement*>(this)->attribute.exists("copied");
  133386             :      if (previouslyCopied == true)
  133387             :         {
  133388             :           this->get_file_info()->display("Called from copy SgExecStatement: debug");
  133389             :         }
  133390             :      ROSE_ASSERT(previouslyCopied == false);
  133391             : 
  133392             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  133393             :      AstAttribute* newAttribute = new AstAttribute();
  133394             :      ROSE_ASSERT(newAttribute != NULL);
  133395             : 
  133396             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  133397             :      const_cast<SgExecStatement*>(this)->attribute.add("copied",newAttribute);
  133398             : #endif
  133399             : 
  133400             :   // Copy data members from base classes
  133401             :   // Copy constructor parameter data member: startOfConstruct_copy
  133402             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  133403             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  133404           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  133405           0 :      if ( p_startOfConstruct != NULL ) 
  133406             :         { 
  133407           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  133408             :         } 
  133409             :        else 
  133410             :         { 
  133411             :           startOfConstruct_copy = NULL; 
  133412             :         } 
  133413             :   // Copy constructor parameter data member: executable_copy
  133414           0 :      SgExpression* executable_copy; 
  133415             :   // case: not a listType for (using conditionalToCopyVariable)executable
  133416           0 :           if (get_executable() != NULL) 
  133417             :              { 
  133418           0 :                executable_copy = static_cast<SgExpression*>(help.copyAst(get_executable())); 
  133419             :              } 
  133420             :             else 
  133421             :              { 
  133422             :                executable_copy = NULL; 
  133423             :              } 
  133424             :   // Copy constructor parameter data member: globals_copy
  133425           0 :      SgExpression* globals_copy; 
  133426             :   // case: not a listType for (using conditionalToCopyVariable)globals
  133427           0 :           if (get_globals() != NULL) 
  133428             :              { 
  133429           0 :                globals_copy = static_cast<SgExpression*>(help.copyAst(get_globals())); 
  133430             :              } 
  133431             :             else 
  133432             :              { 
  133433             :                globals_copy = NULL; 
  133434             :              } 
  133435             :   // Copy constructor parameter data member: locals_copy
  133436           0 :      SgExpression* locals_copy; 
  133437             :   // case: not a listType for (using conditionalToCopyVariable)locals
  133438           0 :           if (get_locals() != NULL) 
  133439             :              { 
  133440           0 :                locals_copy = static_cast<SgExpression*>(help.copyAst(get_locals())); 
  133441             :              } 
  133442             :             else 
  133443             :              { 
  133444             :                locals_copy = NULL; 
  133445             :              } 
  133446             :  
  133447             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133448             : 
  133449             :   // Build an empty copy of this object (will be filled in, but 
  133450             :   // the parent can't be set and must be set by the caller)
  133451           0 :      result = new SgExecStatement(  startOfConstruct_copy, executable_copy, globals_copy, locals_copy );
  133452           0 :      ROSE_ASSERT(result != NULL);
  133453             : 
  133454             :   // Copy data members of "this" class
  133455             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  133456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  133457             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  133458           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  133459           0 :      if ( p_endOfConstruct != NULL ) 
  133460             :         { 
  133461           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  133462             :         } 
  133463             :        else 
  133464             :         { 
  133465             :           endOfConstruct_copy = NULL; 
  133466             :         } 
  133467             :   /* check for a valid pointer and delete if present */ 
  133468           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  133469             :   /* add assignment to result here */ 
  133470           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  133471             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  133472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  133473             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  133474           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  133475           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  133476             :         { 
  133477           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  133478             :         } 
  133479             :        else 
  133480             :         { 
  133481             :           attachedPreprocessingInfoPtr_copy = NULL; 
  133482             :         } 
  133483             :   /* check for a valid pointer and delete if present */ 
  133484           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  133485             :   /* add assignment to result here */ 
  133486           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  133487             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  133488             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  133489             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  133490           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  133491           0 :      if ( p_attributeMechanism != NULL ) 
  133492             :         { 
  133493           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  133494             :         } 
  133495             :        else 
  133496             :         { 
  133497             :           attributeMechanism_copy = NULL; 
  133498             :         } 
  133499             :   /* check for a valid pointer and delete if present */ 
  133500           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  133501             :   /* add assignment to result here */ 
  133502           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  133503             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  133504             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  133505             :   // case: toBeCopied == COPY_DATA for numeric_label
  133506           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  133507           0 :      result->p_numeric_label = numeric_label_copy; 
  133508             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  133509             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  133510             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  133511           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  133512           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  133513             :   // case: not a listType for (using conditionalToSetParent)executable
  133514           0 :           if ( (executable_copy != NULL) && (executable_copy->get_parent() == NULL) && (isSgType(executable_copy) == NULL) ) 
  133515             :              { 
  133516           0 :                executable_copy->set_parent(result); 
  133517             :              } 
  133518             :   // case: not a listType for (using conditionalToSetParent)globals
  133519           0 :           if ( (globals_copy != NULL) && (globals_copy->get_parent() == NULL) && (isSgType(globals_copy) == NULL) ) 
  133520             :              { 
  133521           0 :                globals_copy->set_parent(result); 
  133522             :              } 
  133523             :   // case: not a listType for (using conditionalToSetParent)locals
  133524           0 :           if ( (locals_copy != NULL) && (locals_copy->get_parent() == NULL) && (isSgType(locals_copy) == NULL) ) 
  133525             :              { 
  133526           0 :                locals_copy->set_parent(result); 
  133527             :              } 
  133528             : 
  133529             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133530             : 
  133531             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  133532             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  133533             :   // fixupCopy(result,help);
  133534             : 
  133535             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  133536             :   // the Sg_File_Info objects that are built for the new IR nodes.
  133537           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  133538           0 :      if (locatedNode != NULL)
  133539             :         {
  133540             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  133541           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  133542           0 :           ROSE_ASSERT(start != NULL);
  133543             : #if 0
  133544             :        // Debugging information
  133545             :           if (start->get_parent() == NULL)
  133546             :              {
  133547             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133548             :              }
  133549             : #endif
  133550           0 :           start->set_parent(locatedNode);
  133551           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  133552             : 
  133553           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  133554             : 
  133555             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  133556             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  133557             :        // ROSE_ASSERT(end != NULL);
  133558           0 :           if (end == NULL)
  133559             :              {
  133560           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  133561             :              }
  133562             :             else
  133563             :              {
  133564             : #if 0
  133565             :             // Debugging information
  133566             :                if (end->get_parent() == NULL)
  133567             :                   {
  133568             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133569             :                   }
  133570             : #endif
  133571           0 :                end->set_parent(locatedNode);
  133572           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  133573             :              }
  133574             : 
  133575           0 :           SgExpression* expression = isSgExpression(result);
  133576           0 :           if (isSgExpression(this) != NULL)
  133577             :              {
  133578           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  133579             : 
  133580             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  133581           0 :                if (operatorPosition != NULL)
  133582             :                   {
  133583             : #if 0
  133584             :                  // Debugging information
  133585             :                     if (operatorPosition->get_parent() == NULL)
  133586             :                        {
  133587             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133588             :                        }
  133589             : #endif
  133590           0 :                     operatorPosition->set_parent(expression);
  133591           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  133592             :                   }
  133593             :              }
  133594             :         }
  133595             : 
  133596             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  133597           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  133598           0 :      if (initializedName != NULL)
  133599             :         {
  133600             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  133601           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  133602           0 :           ROSE_ASSERT(start != NULL);
  133603             : #if 0
  133604             :        // Debugging information
  133605             :           if (start->get_parent() == NULL)
  133606             :              {
  133607             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133608             :              }
  133609             : #endif
  133610           0 :           start->set_parent(initializedName);
  133611           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  133612             : 
  133613             : #if 0
  133614             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  133615             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  133616             : 
  133617             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  133618             :        // ROSE_ASSERT(end != NULL);
  133619             :           if (end == NULL)
  133620             :              {
  133621             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  133622             :              }
  133623             :             else
  133624             :              {
  133625             :                if (end->get_parent() == NULL)
  133626             :                   {
  133627             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133628             :                   }
  133629             :                end->set_parent(initializedName);
  133630             :                ROSE_ASSERT(end->get_parent() != NULL);
  133631             :              }
  133632             : #endif
  133633             :         }
  133634             : 
  133635             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  133636           0 :      help.insertCopiedNodePair(this,result);
  133637             : 
  133638             :   // printf ("End of copy SgExecStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  133639             : 
  133640             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  133641             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  133642           0 :      help.decrementDepth();
  133643             : 
  133644             :   // Test if this is the root of the copy!
  133645           0 :      if (help.get_depth() == 0)
  133646             :         {
  133647             :        // This is the original calling node.
  133648             : 
  133649             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  133650             :        // printf ("Calling SgExecStatement::fixupCopy() (from root of AST being copied) \n");
  133651             : #if ALT_FIXUP_COPY
  133652             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  133653           0 :           fixupCopy_scopes (result,help);
  133654           0 :           fixupCopy_symbols (result,help);
  133655           0 :           fixupCopy_references (result,help);
  133656             : #else
  133657             :           fixupCopy(result,help);
  133658             : #endif
  133659             :        // Allow this to be called recursively, so accumulate the state.
  133660             :        // Also, clear the state in the SgCopyHelp object.
  133661             :        // help.clearState();
  133662             :         }
  133663             : 
  133664           0 :      return result;
  133665             :    }
  133666             : 
  133667             : 
  133668             : /* #line 133669 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  133669             : 
  133670             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133671             : 
  133672           0 : SgNode* SgImageControlStatement::copy ( SgCopyHelp& help) const
  133673             :    {
  133674           0 :      SgImageControlStatement* result = NULL;
  133675             : 
  133676             :   // printf ("Copy SgImageControlStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  133677             : 
  133678             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  133679             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  133680             :   // The default value of the depth is 0, so after this call the depth is 1!
  133681           0 :      help.incrementDepth();
  133682             : 
  133683             : #if 0
  133684             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  133685             :   // but it is not generally true that things can only be copied once!
  133686             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  133687             :   // AstAttribute* existingAttribute = const_cast<SgImageControlStatement*>(this)->attribute["copied"];
  133688             :      bool previouslyCopied = const_cast<SgImageControlStatement*>(this)->attribute.exists("copied");
  133689             :      if (previouslyCopied == true)
  133690             :         {
  133691             :           this->get_file_info()->display("Called from copy SgImageControlStatement: debug");
  133692             :         }
  133693             :      ROSE_ASSERT(previouslyCopied == false);
  133694             : 
  133695             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  133696             :      AstAttribute* newAttribute = new AstAttribute();
  133697             :      ROSE_ASSERT(newAttribute != NULL);
  133698             : 
  133699             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  133700             :      const_cast<SgImageControlStatement*>(this)->attribute.add("copied",newAttribute);
  133701             : #endif
  133702             : 
  133703             :   // Copy data members from base classes
  133704             :   // Copy constructor parameter data member: startOfConstruct_copy
  133705             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  133706             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  133707           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  133708           0 :      if ( p_startOfConstruct != NULL ) 
  133709             :         { 
  133710           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  133711             :         } 
  133712             :        else 
  133713             :         { 
  133714             :           startOfConstruct_copy = NULL; 
  133715             :         } 
  133716             :  
  133717             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133718             : 
  133719             :   // Build an empty copy of this object (will be filled in, but 
  133720             :   // the parent can't be set and must be set by the caller)
  133721           0 :      result = new SgImageControlStatement(  startOfConstruct_copy );
  133722           0 :      ROSE_ASSERT(result != NULL);
  133723             : 
  133724             :   // Copy data members of "this" class
  133725             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  133726             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  133727             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  133728           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  133729           0 :      if ( p_endOfConstruct != NULL ) 
  133730             :         { 
  133731           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  133732             :         } 
  133733             :        else 
  133734             :         { 
  133735             :           endOfConstruct_copy = NULL; 
  133736             :         } 
  133737             :   /* check for a valid pointer and delete if present */ 
  133738           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  133739             :   /* add assignment to result here */ 
  133740           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  133741             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  133742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  133743             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  133744           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  133745           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  133746             :         { 
  133747           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  133748             :         } 
  133749             :        else 
  133750             :         { 
  133751             :           attachedPreprocessingInfoPtr_copy = NULL; 
  133752             :         } 
  133753             :   /* check for a valid pointer and delete if present */ 
  133754           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  133755             :   /* add assignment to result here */ 
  133756           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  133757             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  133758             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  133759             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  133760           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  133761           0 :      if ( p_attributeMechanism != NULL ) 
  133762             :         { 
  133763           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  133764             :         } 
  133765             :        else 
  133766             :         { 
  133767             :           attributeMechanism_copy = NULL; 
  133768             :         } 
  133769             :   /* check for a valid pointer and delete if present */ 
  133770           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  133771             :   /* add assignment to result here */ 
  133772           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  133773             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  133774             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  133775             :   // case: toBeCopied == COPY_DATA for numeric_label
  133776           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  133777           0 :      result->p_numeric_label = numeric_label_copy; 
  133778             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  133779             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  133780             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  133781           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  133782           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  133783             :   // Copy non-constructor parameter data member (access function): image_control_statement_copy
  133784             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for image_control_statement
  133785             :   // case: toBeCopied == COPY_DATA for image_control_statement
  133786           0 :      SgImageControlStatement::image_control_statement_enum image_control_statement_copy = p_image_control_statement; 
  133787           0 :      result->p_image_control_statement = image_control_statement_copy; 
  133788             :   // Copy non-constructor parameter data member (access function): stat_copy
  133789           0 :      SgExpression* stat_copy; 
  133790             :   // case: not a listType for (using conditionalToCopyVariable)stat
  133791           0 :           if (get_stat() != NULL) 
  133792             :              { 
  133793           0 :                stat_copy = static_cast<SgExpression*>(help.copyAst(get_stat())); 
  133794             :              } 
  133795             :             else 
  133796             :              { 
  133797             :                stat_copy = NULL; 
  133798             :              } 
  133799             :   /* check for a valid pointer and delete if present */ 
  133800           0 :      if (result->p_stat != NULL) delete result->p_stat; 
  133801           0 :      result->p_stat = stat_copy; 
  133802             :   // case: not a listType for (using conditionalToSetParent)stat
  133803           0 :           if ( (stat_copy != NULL) && (stat_copy->get_parent() == NULL) && (isSgType(stat_copy) == NULL) ) 
  133804             :              { 
  133805           0 :                stat_copy->set_parent(result); 
  133806             :              } 
  133807             :   // Copy non-constructor parameter data member (access function): err_msg_copy
  133808           0 :      SgExpression* err_msg_copy; 
  133809             :   // case: not a listType for (using conditionalToCopyVariable)err_msg
  133810           0 :           if (get_err_msg() != NULL) 
  133811             :              { 
  133812           0 :                err_msg_copy = static_cast<SgExpression*>(help.copyAst(get_err_msg())); 
  133813             :              } 
  133814             :             else 
  133815             :              { 
  133816             :                err_msg_copy = NULL; 
  133817             :              } 
  133818             :   /* check for a valid pointer and delete if present */ 
  133819           0 :      if (result->p_err_msg != NULL) delete result->p_err_msg; 
  133820           0 :      result->p_err_msg = err_msg_copy; 
  133821             :   // case: not a listType for (using conditionalToSetParent)err_msg
  133822           0 :           if ( (err_msg_copy != NULL) && (err_msg_copy->get_parent() == NULL) && (isSgType(err_msg_copy) == NULL) ) 
  133823             :              { 
  133824           0 :                err_msg_copy->set_parent(result); 
  133825             :              } 
  133826             :   // Copy non-constructor parameter data member (access function): acquired_lock_copy
  133827           0 :      SgExpression* acquired_lock_copy; 
  133828             :   // case: not a listType for (using conditionalToCopyVariable)acquired_lock
  133829           0 :           if (get_acquired_lock() != NULL) 
  133830             :              { 
  133831           0 :                acquired_lock_copy = static_cast<SgExpression*>(help.copyAst(get_acquired_lock())); 
  133832             :              } 
  133833             :             else 
  133834             :              { 
  133835             :                acquired_lock_copy = NULL; 
  133836             :              } 
  133837             :   /* check for a valid pointer and delete if present */ 
  133838           0 :      if (result->p_acquired_lock != NULL) delete result->p_acquired_lock; 
  133839           0 :      result->p_acquired_lock = acquired_lock_copy; 
  133840             :   // case: not a listType for (using conditionalToSetParent)acquired_lock
  133841           0 :           if ( (acquired_lock_copy != NULL) && (acquired_lock_copy->get_parent() == NULL) && (isSgType(acquired_lock_copy) == NULL) ) 
  133842             :              { 
  133843           0 :                acquired_lock_copy->set_parent(result); 
  133844             :              } 
  133845             : 
  133846             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133847             : 
  133848             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  133849             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  133850             :   // fixupCopy(result,help);
  133851             : 
  133852             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  133853             :   // the Sg_File_Info objects that are built for the new IR nodes.
  133854           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  133855           0 :      if (locatedNode != NULL)
  133856             :         {
  133857             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  133858           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  133859           0 :           ROSE_ASSERT(start != NULL);
  133860             : #if 0
  133861             :        // Debugging information
  133862             :           if (start->get_parent() == NULL)
  133863             :              {
  133864             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133865             :              }
  133866             : #endif
  133867           0 :           start->set_parent(locatedNode);
  133868           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  133869             : 
  133870           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  133871             : 
  133872             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  133873             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  133874             :        // ROSE_ASSERT(end != NULL);
  133875           0 :           if (end == NULL)
  133876             :              {
  133877           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  133878             :              }
  133879             :             else
  133880             :              {
  133881             : #if 0
  133882             :             // Debugging information
  133883             :                if (end->get_parent() == NULL)
  133884             :                   {
  133885             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133886             :                   }
  133887             : #endif
  133888           0 :                end->set_parent(locatedNode);
  133889           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  133890             :              }
  133891             : 
  133892           0 :           SgExpression* expression = isSgExpression(result);
  133893           0 :           if (isSgExpression(this) != NULL)
  133894             :              {
  133895           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  133896             : 
  133897             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  133898           0 :                if (operatorPosition != NULL)
  133899             :                   {
  133900             : #if 0
  133901             :                  // Debugging information
  133902             :                     if (operatorPosition->get_parent() == NULL)
  133903             :                        {
  133904             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133905             :                        }
  133906             : #endif
  133907           0 :                     operatorPosition->set_parent(expression);
  133908           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  133909             :                   }
  133910             :              }
  133911             :         }
  133912             : 
  133913             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  133914           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  133915           0 :      if (initializedName != NULL)
  133916             :         {
  133917             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  133918           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  133919           0 :           ROSE_ASSERT(start != NULL);
  133920             : #if 0
  133921             :        // Debugging information
  133922             :           if (start->get_parent() == NULL)
  133923             :              {
  133924             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133925             :              }
  133926             : #endif
  133927           0 :           start->set_parent(initializedName);
  133928           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  133929             : 
  133930             : #if 0
  133931             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  133932             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  133933             : 
  133934             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  133935             :        // ROSE_ASSERT(end != NULL);
  133936             :           if (end == NULL)
  133937             :              {
  133938             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  133939             :              }
  133940             :             else
  133941             :              {
  133942             :                if (end->get_parent() == NULL)
  133943             :                   {
  133944             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  133945             :                   }
  133946             :                end->set_parent(initializedName);
  133947             :                ROSE_ASSERT(end->get_parent() != NULL);
  133948             :              }
  133949             : #endif
  133950             :         }
  133951             : 
  133952             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  133953           0 :      help.insertCopiedNodePair(this,result);
  133954             : 
  133955             :   // printf ("End of copy SgImageControlStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  133956             : 
  133957             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  133958             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  133959           0 :      help.decrementDepth();
  133960             : 
  133961             :   // Test if this is the root of the copy!
  133962           0 :      if (help.get_depth() == 0)
  133963             :         {
  133964             :        // This is the original calling node.
  133965             : 
  133966             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  133967             :        // printf ("Calling SgImageControlStatement::fixupCopy() (from root of AST being copied) \n");
  133968             : #if ALT_FIXUP_COPY
  133969             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  133970           0 :           fixupCopy_scopes (result,help);
  133971           0 :           fixupCopy_symbols (result,help);
  133972           0 :           fixupCopy_references (result,help);
  133973             : #else
  133974             :           fixupCopy(result,help);
  133975             : #endif
  133976             :        // Allow this to be called recursively, so accumulate the state.
  133977             :        // Also, clear the state in the SgCopyHelp object.
  133978             :        // help.clearState();
  133979             :         }
  133980             : 
  133981           0 :      return result;
  133982             :    }
  133983             : 
  133984             : 
  133985             : /* #line 133986 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  133986             : 
  133987             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  133988             : 
  133989           0 : SgNode* SgSyncAllStatement::copy ( SgCopyHelp& help) const
  133990             :    {
  133991           0 :      SgSyncAllStatement* result = NULL;
  133992             : 
  133993             :   // printf ("Copy SgSyncAllStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  133994             : 
  133995             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  133996             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  133997             :   // The default value of the depth is 0, so after this call the depth is 1!
  133998           0 :      help.incrementDepth();
  133999             : 
  134000             : #if 0
  134001             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  134002             :   // but it is not generally true that things can only be copied once!
  134003             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  134004             :   // AstAttribute* existingAttribute = const_cast<SgSyncAllStatement*>(this)->attribute["copied"];
  134005             :      bool previouslyCopied = const_cast<SgSyncAllStatement*>(this)->attribute.exists("copied");
  134006             :      if (previouslyCopied == true)
  134007             :         {
  134008             :           this->get_file_info()->display("Called from copy SgSyncAllStatement: debug");
  134009             :         }
  134010             :      ROSE_ASSERT(previouslyCopied == false);
  134011             : 
  134012             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  134013             :      AstAttribute* newAttribute = new AstAttribute();
  134014             :      ROSE_ASSERT(newAttribute != NULL);
  134015             : 
  134016             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  134017             :      const_cast<SgSyncAllStatement*>(this)->attribute.add("copied",newAttribute);
  134018             : #endif
  134019             : 
  134020             :   // Copy data members from base classes
  134021             :   // Copy constructor parameter data member: startOfConstruct_copy
  134022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  134023             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  134024           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  134025           0 :      if ( p_startOfConstruct != NULL ) 
  134026             :         { 
  134027           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  134028             :         } 
  134029             :        else 
  134030             :         { 
  134031             :           startOfConstruct_copy = NULL; 
  134032             :         } 
  134033             :  
  134034             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  134035             : 
  134036             :   // Build an empty copy of this object (will be filled in, but 
  134037             :   // the parent can't be set and must be set by the caller)
  134038           0 :      result = new SgSyncAllStatement(  startOfConstruct_copy );
  134039           0 :      ROSE_ASSERT(result != NULL);
  134040             : 
  134041             :   // Copy data members of "this" class
  134042             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  134043             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  134044             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  134045           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  134046           0 :      if ( p_endOfConstruct != NULL ) 
  134047             :         { 
  134048           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  134049             :         } 
  134050             :        else 
  134051             :         { 
  134052             :           endOfConstruct_copy = NULL; 
  134053             :         } 
  134054             :   /* check for a valid pointer and delete if present */ 
  134055           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  134056             :   /* add assignment to result here */ 
  134057           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  134058             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  134059             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  134060             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  134061           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  134062           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  134063             :         { 
  134064           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  134065             :         } 
  134066             :        else 
  134067             :         { 
  134068             :           attachedPreprocessingInfoPtr_copy = NULL; 
  134069             :         } 
  134070             :   /* check for a valid pointer and delete if present */ 
  134071           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  134072             :   /* add assignment to result here */ 
  134073           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  134074             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  134075             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  134076             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  134077           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  134078           0 :      if ( p_attributeMechanism != NULL ) 
  134079             :         { 
  134080           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  134081             :         } 
  134082             :        else 
  134083             :         { 
  134084             :           attributeMechanism_copy = NULL; 
  134085             :         } 
  134086             :   /* check for a valid pointer and delete if present */ 
  134087           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  134088             :   /* add assignment to result here */ 
  134089           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  134090             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  134091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  134092             :   // case: toBeCopied == COPY_DATA for numeric_label
  134093           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  134094           0 :      result->p_numeric_label = numeric_label_copy; 
  134095             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  134096             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  134097             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  134098           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  134099           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  134100             :   // Copy non-constructor parameter data member (access function): image_control_statement_copy
  134101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for image_control_statement
  134102             :   // case: toBeCopied == COPY_DATA for image_control_statement
  134103           0 :      SgImageControlStatement::image_control_statement_enum image_control_statement_copy = p_image_control_statement; 
  134104           0 :      result->p_image_control_statement = image_control_statement_copy; 
  134105             :   // Copy non-constructor parameter data member (access function): stat_copy
  134106           0 :      SgExpression* stat_copy; 
  134107             :   // case: not a listType for (using conditionalToCopyVariable)stat
  134108           0 :           if (get_stat() != NULL) 
  134109             :              { 
  134110           0 :                stat_copy = static_cast<SgExpression*>(help.copyAst(get_stat())); 
  134111             :              } 
  134112             :             else 
  134113             :              { 
  134114             :                stat_copy = NULL; 
  134115             :              } 
  134116             :   /* check for a valid pointer and delete if present */ 
  134117           0 :      if (result->p_stat != NULL) delete result->p_stat; 
  134118           0 :      result->p_stat = stat_copy; 
  134119             :   // case: not a listType for (using conditionalToSetParent)stat
  134120           0 :           if ( (stat_copy != NULL) && (stat_copy->get_parent() == NULL) && (isSgType(stat_copy) == NULL) ) 
  134121             :              { 
  134122           0 :                stat_copy->set_parent(result); 
  134123             :              } 
  134124             :   // Copy non-constructor parameter data member (access function): err_msg_copy
  134125           0 :      SgExpression* err_msg_copy; 
  134126             :   // case: not a listType for (using conditionalToCopyVariable)err_msg
  134127           0 :           if (get_err_msg() != NULL) 
  134128             :              { 
  134129           0 :                err_msg_copy = static_cast<SgExpression*>(help.copyAst(get_err_msg())); 
  134130             :              } 
  134131             :             else 
  134132             :              { 
  134133             :                err_msg_copy = NULL; 
  134134             :              } 
  134135             :   /* check for a valid pointer and delete if present */ 
  134136           0 :      if (result->p_err_msg != NULL) delete result->p_err_msg; 
  134137           0 :      result->p_err_msg = err_msg_copy; 
  134138             :   // case: not a listType for (using conditionalToSetParent)err_msg
  134139           0 :           if ( (err_msg_copy != NULL) && (err_msg_copy->get_parent() == NULL) && (isSgType(err_msg_copy) == NULL) ) 
  134140             :              { 
  134141           0 :                err_msg_copy->set_parent(result); 
  134142             :              } 
  134143             :   // Copy non-constructor parameter data member (access function): acquired_lock_copy
  134144           0 :      SgExpression* acquired_lock_copy; 
  134145             :   // case: not a listType for (using conditionalToCopyVariable)acquired_lock
  134146           0 :           if (get_acquired_lock() != NULL) 
  134147             :              { 
  134148           0 :                acquired_lock_copy = static_cast<SgExpression*>(help.copyAst(get_acquired_lock())); 
  134149             :              } 
  134150             :             else 
  134151             :              { 
  134152             :                acquired_lock_copy = NULL; 
  134153             :              } 
  134154             :   /* check for a valid pointer and delete if present */ 
  134155           0 :      if (result->p_acquired_lock != NULL) delete result->p_acquired_lock; 
  134156           0 :      result->p_acquired_lock = acquired_lock_copy; 
  134157             :   // case: not a listType for (using conditionalToSetParent)acquired_lock
  134158           0 :           if ( (acquired_lock_copy != NULL) && (acquired_lock_copy->get_parent() == NULL) && (isSgType(acquired_lock_copy) == NULL) ) 
  134159             :              { 
  134160           0 :                acquired_lock_copy->set_parent(result); 
  134161             :              } 
  134162             : 
  134163             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  134164             : 
  134165             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  134166             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  134167             :   // fixupCopy(result,help);
  134168             : 
  134169             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  134170             :   // the Sg_File_Info objects that are built for the new IR nodes.
  134171           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  134172           0 :      if (locatedNode != NULL)
  134173             :         {
  134174             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  134175           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  134176           0 :           ROSE_ASSERT(start != NULL);
  134177             : #if 0
  134178             :        // Debugging information
  134179             :           if (start->get_parent() == NULL)
  134180             :              {
  134181             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134182             :              }
  134183             : #endif
  134184           0 :           start->set_parent(locatedNode);
  134185           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  134186             : 
  134187           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  134188             : 
  134189             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  134190             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  134191             :        // ROSE_ASSERT(end != NULL);
  134192           0 :           if (end == NULL)
  134193             :              {
  134194           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  134195             :              }
  134196             :             else
  134197             :              {
  134198             : #if 0
  134199             :             // Debugging information
  134200             :                if (end->get_parent() == NULL)
  134201             :                   {
  134202             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134203             :                   }
  134204             : #endif
  134205           0 :                end->set_parent(locatedNode);
  134206           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  134207             :              }
  134208             : 
  134209           0 :           SgExpression* expression = isSgExpression(result);
  134210           0 :           if (isSgExpression(this) != NULL)
  134211             :              {
  134212           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  134213             : 
  134214             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  134215           0 :                if (operatorPosition != NULL)
  134216             :                   {
  134217             : #if 0
  134218             :                  // Debugging information
  134219             :                     if (operatorPosition->get_parent() == NULL)
  134220             :                        {
  134221             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134222             :                        }
  134223             : #endif
  134224           0 :                     operatorPosition->set_parent(expression);
  134225           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  134226             :                   }
  134227             :              }
  134228             :         }
  134229             : 
  134230             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  134231           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  134232           0 :      if (initializedName != NULL)
  134233             :         {
  134234             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  134235           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  134236           0 :           ROSE_ASSERT(start != NULL);
  134237             : #if 0
  134238             :        // Debugging information
  134239             :           if (start->get_parent() == NULL)
  134240             :              {
  134241             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134242             :              }
  134243             : #endif
  134244           0 :           start->set_parent(initializedName);
  134245           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  134246             : 
  134247             : #if 0
  134248             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  134249             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  134250             : 
  134251             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  134252             :        // ROSE_ASSERT(end != NULL);
  134253             :           if (end == NULL)
  134254             :              {
  134255             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  134256             :              }
  134257             :             else
  134258             :              {
  134259             :                if (end->get_parent() == NULL)
  134260             :                   {
  134261             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134262             :                   }
  134263             :                end->set_parent(initializedName);
  134264             :                ROSE_ASSERT(end->get_parent() != NULL);
  134265             :              }
  134266             : #endif
  134267             :         }
  134268             : 
  134269             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  134270           0 :      help.insertCopiedNodePair(this,result);
  134271             : 
  134272             :   // printf ("End of copy SgSyncAllStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  134273             : 
  134274             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  134275             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  134276           0 :      help.decrementDepth();
  134277             : 
  134278             :   // Test if this is the root of the copy!
  134279           0 :      if (help.get_depth() == 0)
  134280             :         {
  134281             :        // This is the original calling node.
  134282             : 
  134283             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  134284             :        // printf ("Calling SgSyncAllStatement::fixupCopy() (from root of AST being copied) \n");
  134285             : #if ALT_FIXUP_COPY
  134286             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  134287           0 :           fixupCopy_scopes (result,help);
  134288           0 :           fixupCopy_symbols (result,help);
  134289           0 :           fixupCopy_references (result,help);
  134290             : #else
  134291             :           fixupCopy(result,help);
  134292             : #endif
  134293             :        // Allow this to be called recursively, so accumulate the state.
  134294             :        // Also, clear the state in the SgCopyHelp object.
  134295             :        // help.clearState();
  134296             :         }
  134297             : 
  134298           0 :      return result;
  134299             :    }
  134300             : 
  134301             : 
  134302             : /* #line 134303 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  134303             : 
  134304             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  134305             : 
  134306           0 : SgNode* SgSyncImagesStatement::copy ( SgCopyHelp& help) const
  134307             :    {
  134308           0 :      SgSyncImagesStatement* result = NULL;
  134309             : 
  134310             :   // printf ("Copy SgSyncImagesStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  134311             : 
  134312             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  134313             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  134314             :   // The default value of the depth is 0, so after this call the depth is 1!
  134315           0 :      help.incrementDepth();
  134316             : 
  134317             : #if 0
  134318             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  134319             :   // but it is not generally true that things can only be copied once!
  134320             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  134321             :   // AstAttribute* existingAttribute = const_cast<SgSyncImagesStatement*>(this)->attribute["copied"];
  134322             :      bool previouslyCopied = const_cast<SgSyncImagesStatement*>(this)->attribute.exists("copied");
  134323             :      if (previouslyCopied == true)
  134324             :         {
  134325             :           this->get_file_info()->display("Called from copy SgSyncImagesStatement: debug");
  134326             :         }
  134327             :      ROSE_ASSERT(previouslyCopied == false);
  134328             : 
  134329             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  134330             :      AstAttribute* newAttribute = new AstAttribute();
  134331             :      ROSE_ASSERT(newAttribute != NULL);
  134332             : 
  134333             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  134334             :      const_cast<SgSyncImagesStatement*>(this)->attribute.add("copied",newAttribute);
  134335             : #endif
  134336             : 
  134337             :   // Copy data members from base classes
  134338             :   // Copy constructor parameter data member: startOfConstruct_copy
  134339             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  134340             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  134341           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  134342           0 :      if ( p_startOfConstruct != NULL ) 
  134343             :         { 
  134344           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  134345             :         } 
  134346             :        else 
  134347             :         { 
  134348             :           startOfConstruct_copy = NULL; 
  134349             :         } 
  134350             :   // Copy constructor parameter data member: image_set_copy
  134351           0 :      SgExpression* image_set_copy; 
  134352             :   // case: not a listType for (using conditionalToCopyVariable)image_set
  134353           0 :           if (get_image_set() != NULL) 
  134354             :              { 
  134355           0 :                image_set_copy = static_cast<SgExpression*>(help.copyAst(get_image_set())); 
  134356             :              } 
  134357             :             else 
  134358             :              { 
  134359             :                image_set_copy = NULL; 
  134360             :              } 
  134361             :  
  134362             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  134363             : 
  134364             :   // Build an empty copy of this object (will be filled in, but 
  134365             :   // the parent can't be set and must be set by the caller)
  134366           0 :      result = new SgSyncImagesStatement(  startOfConstruct_copy, image_set_copy );
  134367           0 :      ROSE_ASSERT(result != NULL);
  134368             : 
  134369             :   // Copy data members of "this" class
  134370             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  134371             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  134372             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  134373           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  134374           0 :      if ( p_endOfConstruct != NULL ) 
  134375             :         { 
  134376           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  134377             :         } 
  134378             :        else 
  134379             :         { 
  134380             :           endOfConstruct_copy = NULL; 
  134381             :         } 
  134382             :   /* check for a valid pointer and delete if present */ 
  134383           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  134384             :   /* add assignment to result here */ 
  134385           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  134386             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  134387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  134388             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  134389           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  134390           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  134391             :         { 
  134392           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  134393             :         } 
  134394             :        else 
  134395             :         { 
  134396             :           attachedPreprocessingInfoPtr_copy = NULL; 
  134397             :         } 
  134398             :   /* check for a valid pointer and delete if present */ 
  134399           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  134400             :   /* add assignment to result here */ 
  134401           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  134402             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  134403             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  134404             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  134405           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  134406           0 :      if ( p_attributeMechanism != NULL ) 
  134407             :         { 
  134408           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  134409             :         } 
  134410             :        else 
  134411             :         { 
  134412             :           attributeMechanism_copy = NULL; 
  134413             :         } 
  134414             :   /* check for a valid pointer and delete if present */ 
  134415           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  134416             :   /* add assignment to result here */ 
  134417           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  134418             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  134419             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  134420             :   // case: toBeCopied == COPY_DATA for numeric_label
  134421           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  134422           0 :      result->p_numeric_label = numeric_label_copy; 
  134423             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  134424             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  134425             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  134426           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  134427           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  134428             :   // Copy non-constructor parameter data member (access function): image_control_statement_copy
  134429             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for image_control_statement
  134430             :   // case: toBeCopied == COPY_DATA for image_control_statement
  134431           0 :      SgImageControlStatement::image_control_statement_enum image_control_statement_copy = p_image_control_statement; 
  134432           0 :      result->p_image_control_statement = image_control_statement_copy; 
  134433             :   // Copy non-constructor parameter data member (access function): stat_copy
  134434           0 :      SgExpression* stat_copy; 
  134435             :   // case: not a listType for (using conditionalToCopyVariable)stat
  134436           0 :           if (get_stat() != NULL) 
  134437             :              { 
  134438           0 :                stat_copy = static_cast<SgExpression*>(help.copyAst(get_stat())); 
  134439             :              } 
  134440             :             else 
  134441             :              { 
  134442             :                stat_copy = NULL; 
  134443             :              } 
  134444             :   /* check for a valid pointer and delete if present */ 
  134445           0 :      if (result->p_stat != NULL) delete result->p_stat; 
  134446           0 :      result->p_stat = stat_copy; 
  134447             :   // case: not a listType for (using conditionalToSetParent)stat
  134448           0 :           if ( (stat_copy != NULL) && (stat_copy->get_parent() == NULL) && (isSgType(stat_copy) == NULL) ) 
  134449             :              { 
  134450           0 :                stat_copy->set_parent(result); 
  134451             :              } 
  134452             :   // Copy non-constructor parameter data member (access function): err_msg_copy
  134453           0 :      SgExpression* err_msg_copy; 
  134454             :   // case: not a listType for (using conditionalToCopyVariable)err_msg
  134455           0 :           if (get_err_msg() != NULL) 
  134456             :              { 
  134457           0 :                err_msg_copy = static_cast<SgExpression*>(help.copyAst(get_err_msg())); 
  134458             :              } 
  134459             :             else 
  134460             :              { 
  134461             :                err_msg_copy = NULL; 
  134462             :              } 
  134463             :   /* check for a valid pointer and delete if present */ 
  134464           0 :      if (result->p_err_msg != NULL) delete result->p_err_msg; 
  134465           0 :      result->p_err_msg = err_msg_copy; 
  134466             :   // case: not a listType for (using conditionalToSetParent)err_msg
  134467           0 :           if ( (err_msg_copy != NULL) && (err_msg_copy->get_parent() == NULL) && (isSgType(err_msg_copy) == NULL) ) 
  134468             :              { 
  134469           0 :                err_msg_copy->set_parent(result); 
  134470             :              } 
  134471             :   // Copy non-constructor parameter data member (access function): acquired_lock_copy
  134472           0 :      SgExpression* acquired_lock_copy; 
  134473             :   // case: not a listType for (using conditionalToCopyVariable)acquired_lock
  134474           0 :           if (get_acquired_lock() != NULL) 
  134475             :              { 
  134476           0 :                acquired_lock_copy = static_cast<SgExpression*>(help.copyAst(get_acquired_lock())); 
  134477             :              } 
  134478             :             else 
  134479             :              { 
  134480             :                acquired_lock_copy = NULL; 
  134481             :              } 
  134482             :   /* check for a valid pointer and delete if present */ 
  134483           0 :      if (result->p_acquired_lock != NULL) delete result->p_acquired_lock; 
  134484           0 :      result->p_acquired_lock = acquired_lock_copy; 
  134485             :   // case: not a listType for (using conditionalToSetParent)acquired_lock
  134486           0 :           if ( (acquired_lock_copy != NULL) && (acquired_lock_copy->get_parent() == NULL) && (isSgType(acquired_lock_copy) == NULL) ) 
  134487             :              { 
  134488           0 :                acquired_lock_copy->set_parent(result); 
  134489             :              } 
  134490             :   // case: not a listType for (using conditionalToSetParent)image_set
  134491           0 :           if ( (image_set_copy != NULL) && (image_set_copy->get_parent() == NULL) && (isSgType(image_set_copy) == NULL) ) 
  134492             :              { 
  134493           0 :                image_set_copy->set_parent(result); 
  134494             :              } 
  134495             : 
  134496             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  134497             : 
  134498             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  134499             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  134500             :   // fixupCopy(result,help);
  134501             : 
  134502             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  134503             :   // the Sg_File_Info objects that are built for the new IR nodes.
  134504           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  134505           0 :      if (locatedNode != NULL)
  134506             :         {
  134507             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  134508           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  134509           0 :           ROSE_ASSERT(start != NULL);
  134510             : #if 0
  134511             :        // Debugging information
  134512             :           if (start->get_parent() == NULL)
  134513             :              {
  134514             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134515             :              }
  134516             : #endif
  134517           0 :           start->set_parent(locatedNode);
  134518           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  134519             : 
  134520           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  134521             : 
  134522             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  134523             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  134524             :        // ROSE_ASSERT(end != NULL);
  134525           0 :           if (end == NULL)
  134526             :              {
  134527           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  134528             :              }
  134529             :             else
  134530             :              {
  134531             : #if 0
  134532             :             // Debugging information
  134533             :                if (end->get_parent() == NULL)
  134534             :                   {
  134535             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134536             :                   }
  134537             : #endif
  134538           0 :                end->set_parent(locatedNode);
  134539           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  134540             :              }
  134541             : 
  134542           0 :           SgExpression* expression = isSgExpression(result);
  134543           0 :           if (isSgExpression(this) != NULL)
  134544             :              {
  134545           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  134546             : 
  134547             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  134548           0 :                if (operatorPosition != NULL)
  134549             :                   {
  134550             : #if 0
  134551             :                  // Debugging information
  134552             :                     if (operatorPosition->get_parent() == NULL)
  134553             :                        {
  134554             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134555             :                        }
  134556             : #endif
  134557           0 :                     operatorPosition->set_parent(expression);
  134558           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  134559             :                   }
  134560             :              }
  134561             :         }
  134562             : 
  134563             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  134564           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  134565           0 :      if (initializedName != NULL)
  134566             :         {
  134567             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  134568           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  134569           0 :           ROSE_ASSERT(start != NULL);
  134570             : #if 0
  134571             :        // Debugging information
  134572             :           if (start->get_parent() == NULL)
  134573             :              {
  134574             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134575             :              }
  134576             : #endif
  134577           0 :           start->set_parent(initializedName);
  134578           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  134579             : 
  134580             : #if 0
  134581             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  134582             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  134583             : 
  134584             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  134585             :        // ROSE_ASSERT(end != NULL);
  134586             :           if (end == NULL)
  134587             :              {
  134588             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  134589             :              }
  134590             :             else
  134591             :              {
  134592             :                if (end->get_parent() == NULL)
  134593             :                   {
  134594             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134595             :                   }
  134596             :                end->set_parent(initializedName);
  134597             :                ROSE_ASSERT(end->get_parent() != NULL);
  134598             :              }
  134599             : #endif
  134600             :         }
  134601             : 
  134602             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  134603           0 :      help.insertCopiedNodePair(this,result);
  134604             : 
  134605             :   // printf ("End of copy SgSyncImagesStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  134606             : 
  134607             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  134608             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  134609           0 :      help.decrementDepth();
  134610             : 
  134611             :   // Test if this is the root of the copy!
  134612           0 :      if (help.get_depth() == 0)
  134613             :         {
  134614             :        // This is the original calling node.
  134615             : 
  134616             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  134617             :        // printf ("Calling SgSyncImagesStatement::fixupCopy() (from root of AST being copied) \n");
  134618             : #if ALT_FIXUP_COPY
  134619             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  134620           0 :           fixupCopy_scopes (result,help);
  134621           0 :           fixupCopy_symbols (result,help);
  134622           0 :           fixupCopy_references (result,help);
  134623             : #else
  134624             :           fixupCopy(result,help);
  134625             : #endif
  134626             :        // Allow this to be called recursively, so accumulate the state.
  134627             :        // Also, clear the state in the SgCopyHelp object.
  134628             :        // help.clearState();
  134629             :         }
  134630             : 
  134631           0 :      return result;
  134632             :    }
  134633             : 
  134634             : 
  134635             : /* #line 134636 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  134636             : 
  134637             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  134638             : 
  134639           0 : SgNode* SgSyncMemoryStatement::copy ( SgCopyHelp& help) const
  134640             :    {
  134641           0 :      SgSyncMemoryStatement* result = NULL;
  134642             : 
  134643             :   // printf ("Copy SgSyncMemoryStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  134644             : 
  134645             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  134646             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  134647             :   // The default value of the depth is 0, so after this call the depth is 1!
  134648           0 :      help.incrementDepth();
  134649             : 
  134650             : #if 0
  134651             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  134652             :   // but it is not generally true that things can only be copied once!
  134653             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  134654             :   // AstAttribute* existingAttribute = const_cast<SgSyncMemoryStatement*>(this)->attribute["copied"];
  134655             :      bool previouslyCopied = const_cast<SgSyncMemoryStatement*>(this)->attribute.exists("copied");
  134656             :      if (previouslyCopied == true)
  134657             :         {
  134658             :           this->get_file_info()->display("Called from copy SgSyncMemoryStatement: debug");
  134659             :         }
  134660             :      ROSE_ASSERT(previouslyCopied == false);
  134661             : 
  134662             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  134663             :      AstAttribute* newAttribute = new AstAttribute();
  134664             :      ROSE_ASSERT(newAttribute != NULL);
  134665             : 
  134666             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  134667             :      const_cast<SgSyncMemoryStatement*>(this)->attribute.add("copied",newAttribute);
  134668             : #endif
  134669             : 
  134670             :   // Copy data members from base classes
  134671             :   // Copy constructor parameter data member: startOfConstruct_copy
  134672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  134673             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  134674           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  134675           0 :      if ( p_startOfConstruct != NULL ) 
  134676             :         { 
  134677           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  134678             :         } 
  134679             :        else 
  134680             :         { 
  134681             :           startOfConstruct_copy = NULL; 
  134682             :         } 
  134683             :  
  134684             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  134685             : 
  134686             :   // Build an empty copy of this object (will be filled in, but 
  134687             :   // the parent can't be set and must be set by the caller)
  134688           0 :      result = new SgSyncMemoryStatement(  startOfConstruct_copy );
  134689           0 :      ROSE_ASSERT(result != NULL);
  134690             : 
  134691             :   // Copy data members of "this" class
  134692             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  134693             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  134694             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  134695           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  134696           0 :      if ( p_endOfConstruct != NULL ) 
  134697             :         { 
  134698           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  134699             :         } 
  134700             :        else 
  134701             :         { 
  134702             :           endOfConstruct_copy = NULL; 
  134703             :         } 
  134704             :   /* check for a valid pointer and delete if present */ 
  134705           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  134706             :   /* add assignment to result here */ 
  134707           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  134708             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  134709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  134710             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  134711           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  134712           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  134713             :         { 
  134714           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  134715             :         } 
  134716             :        else 
  134717             :         { 
  134718             :           attachedPreprocessingInfoPtr_copy = NULL; 
  134719             :         } 
  134720             :   /* check for a valid pointer and delete if present */ 
  134721           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  134722             :   /* add assignment to result here */ 
  134723           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  134724             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  134725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  134726             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  134727           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  134728           0 :      if ( p_attributeMechanism != NULL ) 
  134729             :         { 
  134730           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  134731             :         } 
  134732             :        else 
  134733             :         { 
  134734             :           attributeMechanism_copy = NULL; 
  134735             :         } 
  134736             :   /* check for a valid pointer and delete if present */ 
  134737           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  134738             :   /* add assignment to result here */ 
  134739           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  134740             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  134741             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  134742             :   // case: toBeCopied == COPY_DATA for numeric_label
  134743           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  134744           0 :      result->p_numeric_label = numeric_label_copy; 
  134745             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  134746             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  134747             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  134748           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  134749           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  134750             :   // Copy non-constructor parameter data member (access function): image_control_statement_copy
  134751             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for image_control_statement
  134752             :   // case: toBeCopied == COPY_DATA for image_control_statement
  134753           0 :      SgImageControlStatement::image_control_statement_enum image_control_statement_copy = p_image_control_statement; 
  134754           0 :      result->p_image_control_statement = image_control_statement_copy; 
  134755             :   // Copy non-constructor parameter data member (access function): stat_copy
  134756           0 :      SgExpression* stat_copy; 
  134757             :   // case: not a listType for (using conditionalToCopyVariable)stat
  134758           0 :           if (get_stat() != NULL) 
  134759             :              { 
  134760           0 :                stat_copy = static_cast<SgExpression*>(help.copyAst(get_stat())); 
  134761             :              } 
  134762             :             else 
  134763             :              { 
  134764             :                stat_copy = NULL; 
  134765             :              } 
  134766             :   /* check for a valid pointer and delete if present */ 
  134767           0 :      if (result->p_stat != NULL) delete result->p_stat; 
  134768           0 :      result->p_stat = stat_copy; 
  134769             :   // case: not a listType for (using conditionalToSetParent)stat
  134770           0 :           if ( (stat_copy != NULL) && (stat_copy->get_parent() == NULL) && (isSgType(stat_copy) == NULL) ) 
  134771             :              { 
  134772           0 :                stat_copy->set_parent(result); 
  134773             :              } 
  134774             :   // Copy non-constructor parameter data member (access function): err_msg_copy
  134775           0 :      SgExpression* err_msg_copy; 
  134776             :   // case: not a listType for (using conditionalToCopyVariable)err_msg
  134777           0 :           if (get_err_msg() != NULL) 
  134778             :              { 
  134779           0 :                err_msg_copy = static_cast<SgExpression*>(help.copyAst(get_err_msg())); 
  134780             :              } 
  134781             :             else 
  134782             :              { 
  134783             :                err_msg_copy = NULL; 
  134784             :              } 
  134785             :   /* check for a valid pointer and delete if present */ 
  134786           0 :      if (result->p_err_msg != NULL) delete result->p_err_msg; 
  134787           0 :      result->p_err_msg = err_msg_copy; 
  134788             :   // case: not a listType for (using conditionalToSetParent)err_msg
  134789           0 :           if ( (err_msg_copy != NULL) && (err_msg_copy->get_parent() == NULL) && (isSgType(err_msg_copy) == NULL) ) 
  134790             :              { 
  134791           0 :                err_msg_copy->set_parent(result); 
  134792             :              } 
  134793             :   // Copy non-constructor parameter data member (access function): acquired_lock_copy
  134794           0 :      SgExpression* acquired_lock_copy; 
  134795             :   // case: not a listType for (using conditionalToCopyVariable)acquired_lock
  134796           0 :           if (get_acquired_lock() != NULL) 
  134797             :              { 
  134798           0 :                acquired_lock_copy = static_cast<SgExpression*>(help.copyAst(get_acquired_lock())); 
  134799             :              } 
  134800             :             else 
  134801             :              { 
  134802             :                acquired_lock_copy = NULL; 
  134803             :              } 
  134804             :   /* check for a valid pointer and delete if present */ 
  134805           0 :      if (result->p_acquired_lock != NULL) delete result->p_acquired_lock; 
  134806           0 :      result->p_acquired_lock = acquired_lock_copy; 
  134807             :   // case: not a listType for (using conditionalToSetParent)acquired_lock
  134808           0 :           if ( (acquired_lock_copy != NULL) && (acquired_lock_copy->get_parent() == NULL) && (isSgType(acquired_lock_copy) == NULL) ) 
  134809             :              { 
  134810           0 :                acquired_lock_copy->set_parent(result); 
  134811             :              } 
  134812             : 
  134813             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  134814             : 
  134815             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  134816             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  134817             :   // fixupCopy(result,help);
  134818             : 
  134819             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  134820             :   // the Sg_File_Info objects that are built for the new IR nodes.
  134821           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  134822           0 :      if (locatedNode != NULL)
  134823             :         {
  134824             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  134825           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  134826           0 :           ROSE_ASSERT(start != NULL);
  134827             : #if 0
  134828             :        // Debugging information
  134829             :           if (start->get_parent() == NULL)
  134830             :              {
  134831             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134832             :              }
  134833             : #endif
  134834           0 :           start->set_parent(locatedNode);
  134835           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  134836             : 
  134837           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  134838             : 
  134839             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  134840             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  134841             :        // ROSE_ASSERT(end != NULL);
  134842           0 :           if (end == NULL)
  134843             :              {
  134844           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  134845             :              }
  134846             :             else
  134847             :              {
  134848             : #if 0
  134849             :             // Debugging information
  134850             :                if (end->get_parent() == NULL)
  134851             :                   {
  134852             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134853             :                   }
  134854             : #endif
  134855           0 :                end->set_parent(locatedNode);
  134856           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  134857             :              }
  134858             : 
  134859           0 :           SgExpression* expression = isSgExpression(result);
  134860           0 :           if (isSgExpression(this) != NULL)
  134861             :              {
  134862           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  134863             : 
  134864             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  134865           0 :                if (operatorPosition != NULL)
  134866             :                   {
  134867             : #if 0
  134868             :                  // Debugging information
  134869             :                     if (operatorPosition->get_parent() == NULL)
  134870             :                        {
  134871             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134872             :                        }
  134873             : #endif
  134874           0 :                     operatorPosition->set_parent(expression);
  134875           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  134876             :                   }
  134877             :              }
  134878             :         }
  134879             : 
  134880             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  134881           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  134882           0 :      if (initializedName != NULL)
  134883             :         {
  134884             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  134885           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  134886           0 :           ROSE_ASSERT(start != NULL);
  134887             : #if 0
  134888             :        // Debugging information
  134889             :           if (start->get_parent() == NULL)
  134890             :              {
  134891             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134892             :              }
  134893             : #endif
  134894           0 :           start->set_parent(initializedName);
  134895           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  134896             : 
  134897             : #if 0
  134898             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  134899             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  134900             : 
  134901             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  134902             :        // ROSE_ASSERT(end != NULL);
  134903             :           if (end == NULL)
  134904             :              {
  134905             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  134906             :              }
  134907             :             else
  134908             :              {
  134909             :                if (end->get_parent() == NULL)
  134910             :                   {
  134911             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  134912             :                   }
  134913             :                end->set_parent(initializedName);
  134914             :                ROSE_ASSERT(end->get_parent() != NULL);
  134915             :              }
  134916             : #endif
  134917             :         }
  134918             : 
  134919             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  134920           0 :      help.insertCopiedNodePair(this,result);
  134921             : 
  134922             :   // printf ("End of copy SgSyncMemoryStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  134923             : 
  134924             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  134925             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  134926           0 :      help.decrementDepth();
  134927             : 
  134928             :   // Test if this is the root of the copy!
  134929           0 :      if (help.get_depth() == 0)
  134930             :         {
  134931             :        // This is the original calling node.
  134932             : 
  134933             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  134934             :        // printf ("Calling SgSyncMemoryStatement::fixupCopy() (from root of AST being copied) \n");
  134935             : #if ALT_FIXUP_COPY
  134936             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  134937           0 :           fixupCopy_scopes (result,help);
  134938           0 :           fixupCopy_symbols (result,help);
  134939           0 :           fixupCopy_references (result,help);
  134940             : #else
  134941             :           fixupCopy(result,help);
  134942             : #endif
  134943             :        // Allow this to be called recursively, so accumulate the state.
  134944             :        // Also, clear the state in the SgCopyHelp object.
  134945             :        // help.clearState();
  134946             :         }
  134947             : 
  134948           0 :      return result;
  134949             :    }
  134950             : 
  134951             : 
  134952             : /* #line 134953 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  134953             : 
  134954             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  134955             : 
  134956           0 : SgNode* SgSyncTeamStatement::copy ( SgCopyHelp& help) const
  134957             :    {
  134958           0 :      SgSyncTeamStatement* result = NULL;
  134959             : 
  134960             :   // printf ("Copy SgSyncTeamStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  134961             : 
  134962             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  134963             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  134964             :   // The default value of the depth is 0, so after this call the depth is 1!
  134965           0 :      help.incrementDepth();
  134966             : 
  134967             : #if 0
  134968             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  134969             :   // but it is not generally true that things can only be copied once!
  134970             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  134971             :   // AstAttribute* existingAttribute = const_cast<SgSyncTeamStatement*>(this)->attribute["copied"];
  134972             :      bool previouslyCopied = const_cast<SgSyncTeamStatement*>(this)->attribute.exists("copied");
  134973             :      if (previouslyCopied == true)
  134974             :         {
  134975             :           this->get_file_info()->display("Called from copy SgSyncTeamStatement: debug");
  134976             :         }
  134977             :      ROSE_ASSERT(previouslyCopied == false);
  134978             : 
  134979             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  134980             :      AstAttribute* newAttribute = new AstAttribute();
  134981             :      ROSE_ASSERT(newAttribute != NULL);
  134982             : 
  134983             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  134984             :      const_cast<SgSyncTeamStatement*>(this)->attribute.add("copied",newAttribute);
  134985             : #endif
  134986             : 
  134987             :   // Copy data members from base classes
  134988             :   // Copy constructor parameter data member: startOfConstruct_copy
  134989             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  134990             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  134991           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  134992           0 :      if ( p_startOfConstruct != NULL ) 
  134993             :         { 
  134994           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  134995             :         } 
  134996             :        else 
  134997             :         { 
  134998             :           startOfConstruct_copy = NULL; 
  134999             :         } 
  135000             :   // Copy constructor parameter data member: team_value_copy
  135001           0 :      SgExpression* team_value_copy; 
  135002             :   // case: not a listType for (using conditionalToCopyVariable)team_value
  135003           0 :           if (get_team_value() != NULL) 
  135004             :              { 
  135005           0 :                team_value_copy = static_cast<SgExpression*>(help.copyAst(get_team_value())); 
  135006             :              } 
  135007             :             else 
  135008             :              { 
  135009             :                team_value_copy = NULL; 
  135010             :              } 
  135011             :  
  135012             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  135013             : 
  135014             :   // Build an empty copy of this object (will be filled in, but 
  135015             :   // the parent can't be set and must be set by the caller)
  135016           0 :      result = new SgSyncTeamStatement(  startOfConstruct_copy, team_value_copy );
  135017           0 :      ROSE_ASSERT(result != NULL);
  135018             : 
  135019             :   // Copy data members of "this" class
  135020             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  135021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  135022             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  135023           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  135024           0 :      if ( p_endOfConstruct != NULL ) 
  135025             :         { 
  135026           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  135027             :         } 
  135028             :        else 
  135029             :         { 
  135030             :           endOfConstruct_copy = NULL; 
  135031             :         } 
  135032             :   /* check for a valid pointer and delete if present */ 
  135033           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  135034             :   /* add assignment to result here */ 
  135035           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  135036             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  135037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  135038             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  135039           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  135040           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  135041             :         { 
  135042           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  135043             :         } 
  135044             :        else 
  135045             :         { 
  135046             :           attachedPreprocessingInfoPtr_copy = NULL; 
  135047             :         } 
  135048             :   /* check for a valid pointer and delete if present */ 
  135049           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  135050             :   /* add assignment to result here */ 
  135051           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  135052             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  135053             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  135054             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  135055           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  135056           0 :      if ( p_attributeMechanism != NULL ) 
  135057             :         { 
  135058           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  135059             :         } 
  135060             :        else 
  135061             :         { 
  135062             :           attributeMechanism_copy = NULL; 
  135063             :         } 
  135064             :   /* check for a valid pointer and delete if present */ 
  135065           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  135066             :   /* add assignment to result here */ 
  135067           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  135068             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  135069             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  135070             :   // case: toBeCopied == COPY_DATA for numeric_label
  135071           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  135072           0 :      result->p_numeric_label = numeric_label_copy; 
  135073             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  135074             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  135075             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  135076           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  135077           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  135078             :   // Copy non-constructor parameter data member (access function): image_control_statement_copy
  135079             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for image_control_statement
  135080             :   // case: toBeCopied == COPY_DATA for image_control_statement
  135081           0 :      SgImageControlStatement::image_control_statement_enum image_control_statement_copy = p_image_control_statement; 
  135082           0 :      result->p_image_control_statement = image_control_statement_copy; 
  135083             :   // Copy non-constructor parameter data member (access function): stat_copy
  135084           0 :      SgExpression* stat_copy; 
  135085             :   // case: not a listType for (using conditionalToCopyVariable)stat
  135086           0 :           if (get_stat() != NULL) 
  135087             :              { 
  135088           0 :                stat_copy = static_cast<SgExpression*>(help.copyAst(get_stat())); 
  135089             :              } 
  135090             :             else 
  135091             :              { 
  135092             :                stat_copy = NULL; 
  135093             :              } 
  135094             :   /* check for a valid pointer and delete if present */ 
  135095           0 :      if (result->p_stat != NULL) delete result->p_stat; 
  135096           0 :      result->p_stat = stat_copy; 
  135097             :   // case: not a listType for (using conditionalToSetParent)stat
  135098           0 :           if ( (stat_copy != NULL) && (stat_copy->get_parent() == NULL) && (isSgType(stat_copy) == NULL) ) 
  135099             :              { 
  135100           0 :                stat_copy->set_parent(result); 
  135101             :              } 
  135102             :   // Copy non-constructor parameter data member (access function): err_msg_copy
  135103           0 :      SgExpression* err_msg_copy; 
  135104             :   // case: not a listType for (using conditionalToCopyVariable)err_msg
  135105           0 :           if (get_err_msg() != NULL) 
  135106             :              { 
  135107           0 :                err_msg_copy = static_cast<SgExpression*>(help.copyAst(get_err_msg())); 
  135108             :              } 
  135109             :             else 
  135110             :              { 
  135111             :                err_msg_copy = NULL; 
  135112             :              } 
  135113             :   /* check for a valid pointer and delete if present */ 
  135114           0 :      if (result->p_err_msg != NULL) delete result->p_err_msg; 
  135115           0 :      result->p_err_msg = err_msg_copy; 
  135116             :   // case: not a listType for (using conditionalToSetParent)err_msg
  135117           0 :           if ( (err_msg_copy != NULL) && (err_msg_copy->get_parent() == NULL) && (isSgType(err_msg_copy) == NULL) ) 
  135118             :              { 
  135119           0 :                err_msg_copy->set_parent(result); 
  135120             :              } 
  135121             :   // Copy non-constructor parameter data member (access function): acquired_lock_copy
  135122           0 :      SgExpression* acquired_lock_copy; 
  135123             :   // case: not a listType for (using conditionalToCopyVariable)acquired_lock
  135124           0 :           if (get_acquired_lock() != NULL) 
  135125             :              { 
  135126           0 :                acquired_lock_copy = static_cast<SgExpression*>(help.copyAst(get_acquired_lock())); 
  135127             :              } 
  135128             :             else 
  135129             :              { 
  135130             :                acquired_lock_copy = NULL; 
  135131             :              } 
  135132             :   /* check for a valid pointer and delete if present */ 
  135133           0 :      if (result->p_acquired_lock != NULL) delete result->p_acquired_lock; 
  135134           0 :      result->p_acquired_lock = acquired_lock_copy; 
  135135             :   // case: not a listType for (using conditionalToSetParent)acquired_lock
  135136           0 :           if ( (acquired_lock_copy != NULL) && (acquired_lock_copy->get_parent() == NULL) && (isSgType(acquired_lock_copy) == NULL) ) 
  135137             :              { 
  135138           0 :                acquired_lock_copy->set_parent(result); 
  135139             :              } 
  135140             :   // case: not a listType for (using conditionalToSetParent)team_value
  135141           0 :           if ( (team_value_copy != NULL) && (team_value_copy->get_parent() == NULL) && (isSgType(team_value_copy) == NULL) ) 
  135142             :              { 
  135143           0 :                team_value_copy->set_parent(result); 
  135144             :              } 
  135145             : 
  135146             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  135147             : 
  135148             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  135149             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  135150             :   // fixupCopy(result,help);
  135151             : 
  135152             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  135153             :   // the Sg_File_Info objects that are built for the new IR nodes.
  135154           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  135155           0 :      if (locatedNode != NULL)
  135156             :         {
  135157             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  135158           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  135159           0 :           ROSE_ASSERT(start != NULL);
  135160             : #if 0
  135161             :        // Debugging information
  135162             :           if (start->get_parent() == NULL)
  135163             :              {
  135164             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135165             :              }
  135166             : #endif
  135167           0 :           start->set_parent(locatedNode);
  135168           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  135169             : 
  135170           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  135171             : 
  135172             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  135173             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  135174             :        // ROSE_ASSERT(end != NULL);
  135175           0 :           if (end == NULL)
  135176             :              {
  135177           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  135178             :              }
  135179             :             else
  135180             :              {
  135181             : #if 0
  135182             :             // Debugging information
  135183             :                if (end->get_parent() == NULL)
  135184             :                   {
  135185             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135186             :                   }
  135187             : #endif
  135188           0 :                end->set_parent(locatedNode);
  135189           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  135190             :              }
  135191             : 
  135192           0 :           SgExpression* expression = isSgExpression(result);
  135193           0 :           if (isSgExpression(this) != NULL)
  135194             :              {
  135195           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  135196             : 
  135197             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  135198           0 :                if (operatorPosition != NULL)
  135199             :                   {
  135200             : #if 0
  135201             :                  // Debugging information
  135202             :                     if (operatorPosition->get_parent() == NULL)
  135203             :                        {
  135204             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135205             :                        }
  135206             : #endif
  135207           0 :                     operatorPosition->set_parent(expression);
  135208           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  135209             :                   }
  135210             :              }
  135211             :         }
  135212             : 
  135213             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  135214           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  135215           0 :      if (initializedName != NULL)
  135216             :         {
  135217             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  135218           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  135219           0 :           ROSE_ASSERT(start != NULL);
  135220             : #if 0
  135221             :        // Debugging information
  135222             :           if (start->get_parent() == NULL)
  135223             :              {
  135224             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135225             :              }
  135226             : #endif
  135227           0 :           start->set_parent(initializedName);
  135228           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  135229             : 
  135230             : #if 0
  135231             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  135232             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  135233             : 
  135234             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  135235             :        // ROSE_ASSERT(end != NULL);
  135236             :           if (end == NULL)
  135237             :              {
  135238             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  135239             :              }
  135240             :             else
  135241             :              {
  135242             :                if (end->get_parent() == NULL)
  135243             :                   {
  135244             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135245             :                   }
  135246             :                end->set_parent(initializedName);
  135247             :                ROSE_ASSERT(end->get_parent() != NULL);
  135248             :              }
  135249             : #endif
  135250             :         }
  135251             : 
  135252             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  135253           0 :      help.insertCopiedNodePair(this,result);
  135254             : 
  135255             :   // printf ("End of copy SgSyncTeamStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  135256             : 
  135257             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  135258             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  135259           0 :      help.decrementDepth();
  135260             : 
  135261             :   // Test if this is the root of the copy!
  135262           0 :      if (help.get_depth() == 0)
  135263             :         {
  135264             :        // This is the original calling node.
  135265             : 
  135266             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  135267             :        // printf ("Calling SgSyncTeamStatement::fixupCopy() (from root of AST being copied) \n");
  135268             : #if ALT_FIXUP_COPY
  135269             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  135270           0 :           fixupCopy_scopes (result,help);
  135271           0 :           fixupCopy_symbols (result,help);
  135272           0 :           fixupCopy_references (result,help);
  135273             : #else
  135274             :           fixupCopy(result,help);
  135275             : #endif
  135276             :        // Allow this to be called recursively, so accumulate the state.
  135277             :        // Also, clear the state in the SgCopyHelp object.
  135278             :        // help.clearState();
  135279             :         }
  135280             : 
  135281           0 :      return result;
  135282             :    }
  135283             : 
  135284             : 
  135285             : /* #line 135286 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  135286             : 
  135287             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  135288             : 
  135289           0 : SgNode* SgLockStatement::copy ( SgCopyHelp& help) const
  135290             :    {
  135291           0 :      SgLockStatement* result = NULL;
  135292             : 
  135293             :   // printf ("Copy SgLockStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  135294             : 
  135295             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  135296             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  135297             :   // The default value of the depth is 0, so after this call the depth is 1!
  135298           0 :      help.incrementDepth();
  135299             : 
  135300             : #if 0
  135301             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  135302             :   // but it is not generally true that things can only be copied once!
  135303             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  135304             :   // AstAttribute* existingAttribute = const_cast<SgLockStatement*>(this)->attribute["copied"];
  135305             :      bool previouslyCopied = const_cast<SgLockStatement*>(this)->attribute.exists("copied");
  135306             :      if (previouslyCopied == true)
  135307             :         {
  135308             :           this->get_file_info()->display("Called from copy SgLockStatement: debug");
  135309             :         }
  135310             :      ROSE_ASSERT(previouslyCopied == false);
  135311             : 
  135312             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  135313             :      AstAttribute* newAttribute = new AstAttribute();
  135314             :      ROSE_ASSERT(newAttribute != NULL);
  135315             : 
  135316             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  135317             :      const_cast<SgLockStatement*>(this)->attribute.add("copied",newAttribute);
  135318             : #endif
  135319             : 
  135320             :   // Copy data members from base classes
  135321             :   // Copy constructor parameter data member: startOfConstruct_copy
  135322             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  135323             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  135324           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  135325           0 :      if ( p_startOfConstruct != NULL ) 
  135326             :         { 
  135327           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  135328             :         } 
  135329             :        else 
  135330             :         { 
  135331             :           startOfConstruct_copy = NULL; 
  135332             :         } 
  135333             :   // Copy constructor parameter data member: lock_variable_copy
  135334           0 :      SgExpression* lock_variable_copy; 
  135335             :   // case: not a listType for (using conditionalToCopyVariable)lock_variable
  135336           0 :           if (get_lock_variable() != NULL) 
  135337             :              { 
  135338           0 :                lock_variable_copy = static_cast<SgExpression*>(help.copyAst(get_lock_variable())); 
  135339             :              } 
  135340             :             else 
  135341             :              { 
  135342             :                lock_variable_copy = NULL; 
  135343             :              } 
  135344             :  
  135345             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  135346             : 
  135347             :   // Build an empty copy of this object (will be filled in, but 
  135348             :   // the parent can't be set and must be set by the caller)
  135349           0 :      result = new SgLockStatement(  startOfConstruct_copy, lock_variable_copy );
  135350           0 :      ROSE_ASSERT(result != NULL);
  135351             : 
  135352             :   // Copy data members of "this" class
  135353             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  135354             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  135355             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  135356           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  135357           0 :      if ( p_endOfConstruct != NULL ) 
  135358             :         { 
  135359           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  135360             :         } 
  135361             :        else 
  135362             :         { 
  135363             :           endOfConstruct_copy = NULL; 
  135364             :         } 
  135365             :   /* check for a valid pointer and delete if present */ 
  135366           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  135367             :   /* add assignment to result here */ 
  135368           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  135369             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  135370             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  135371             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  135372           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  135373           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  135374             :         { 
  135375           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  135376             :         } 
  135377             :        else 
  135378             :         { 
  135379             :           attachedPreprocessingInfoPtr_copy = NULL; 
  135380             :         } 
  135381             :   /* check for a valid pointer and delete if present */ 
  135382           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  135383             :   /* add assignment to result here */ 
  135384           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  135385             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  135386             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  135387             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  135388           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  135389           0 :      if ( p_attributeMechanism != NULL ) 
  135390             :         { 
  135391           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  135392             :         } 
  135393             :        else 
  135394             :         { 
  135395             :           attributeMechanism_copy = NULL; 
  135396             :         } 
  135397             :   /* check for a valid pointer and delete if present */ 
  135398           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  135399             :   /* add assignment to result here */ 
  135400           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  135401             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  135402             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  135403             :   // case: toBeCopied == COPY_DATA for numeric_label
  135404           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  135405           0 :      result->p_numeric_label = numeric_label_copy; 
  135406             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  135407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  135408             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  135409           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  135410           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  135411             :   // Copy non-constructor parameter data member (access function): image_control_statement_copy
  135412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for image_control_statement
  135413             :   // case: toBeCopied == COPY_DATA for image_control_statement
  135414           0 :      SgImageControlStatement::image_control_statement_enum image_control_statement_copy = p_image_control_statement; 
  135415           0 :      result->p_image_control_statement = image_control_statement_copy; 
  135416             :   // Copy non-constructor parameter data member (access function): stat_copy
  135417           0 :      SgExpression* stat_copy; 
  135418             :   // case: not a listType for (using conditionalToCopyVariable)stat
  135419           0 :           if (get_stat() != NULL) 
  135420             :              { 
  135421           0 :                stat_copy = static_cast<SgExpression*>(help.copyAst(get_stat())); 
  135422             :              } 
  135423             :             else 
  135424             :              { 
  135425             :                stat_copy = NULL; 
  135426             :              } 
  135427             :   /* check for a valid pointer and delete if present */ 
  135428           0 :      if (result->p_stat != NULL) delete result->p_stat; 
  135429           0 :      result->p_stat = stat_copy; 
  135430             :   // case: not a listType for (using conditionalToSetParent)stat
  135431           0 :           if ( (stat_copy != NULL) && (stat_copy->get_parent() == NULL) && (isSgType(stat_copy) == NULL) ) 
  135432             :              { 
  135433           0 :                stat_copy->set_parent(result); 
  135434             :              } 
  135435             :   // Copy non-constructor parameter data member (access function): err_msg_copy
  135436           0 :      SgExpression* err_msg_copy; 
  135437             :   // case: not a listType for (using conditionalToCopyVariable)err_msg
  135438           0 :           if (get_err_msg() != NULL) 
  135439             :              { 
  135440           0 :                err_msg_copy = static_cast<SgExpression*>(help.copyAst(get_err_msg())); 
  135441             :              } 
  135442             :             else 
  135443             :              { 
  135444             :                err_msg_copy = NULL; 
  135445             :              } 
  135446             :   /* check for a valid pointer and delete if present */ 
  135447           0 :      if (result->p_err_msg != NULL) delete result->p_err_msg; 
  135448           0 :      result->p_err_msg = err_msg_copy; 
  135449             :   // case: not a listType for (using conditionalToSetParent)err_msg
  135450           0 :           if ( (err_msg_copy != NULL) && (err_msg_copy->get_parent() == NULL) && (isSgType(err_msg_copy) == NULL) ) 
  135451             :              { 
  135452           0 :                err_msg_copy->set_parent(result); 
  135453             :              } 
  135454             :   // Copy non-constructor parameter data member (access function): acquired_lock_copy
  135455           0 :      SgExpression* acquired_lock_copy; 
  135456             :   // case: not a listType for (using conditionalToCopyVariable)acquired_lock
  135457           0 :           if (get_acquired_lock() != NULL) 
  135458             :              { 
  135459           0 :                acquired_lock_copy = static_cast<SgExpression*>(help.copyAst(get_acquired_lock())); 
  135460             :              } 
  135461             :             else 
  135462             :              { 
  135463             :                acquired_lock_copy = NULL; 
  135464             :              } 
  135465             :   /* check for a valid pointer and delete if present */ 
  135466           0 :      if (result->p_acquired_lock != NULL) delete result->p_acquired_lock; 
  135467           0 :      result->p_acquired_lock = acquired_lock_copy; 
  135468             :   // case: not a listType for (using conditionalToSetParent)acquired_lock
  135469           0 :           if ( (acquired_lock_copy != NULL) && (acquired_lock_copy->get_parent() == NULL) && (isSgType(acquired_lock_copy) == NULL) ) 
  135470             :              { 
  135471           0 :                acquired_lock_copy->set_parent(result); 
  135472             :              } 
  135473             :   // case: not a listType for (using conditionalToSetParent)lock_variable
  135474           0 :           if ( (lock_variable_copy != NULL) && (lock_variable_copy->get_parent() == NULL) && (isSgType(lock_variable_copy) == NULL) ) 
  135475             :              { 
  135476           0 :                lock_variable_copy->set_parent(result); 
  135477             :              } 
  135478             : 
  135479             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  135480             : 
  135481             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  135482             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  135483             :   // fixupCopy(result,help);
  135484             : 
  135485             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  135486             :   // the Sg_File_Info objects that are built for the new IR nodes.
  135487           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  135488           0 :      if (locatedNode != NULL)
  135489             :         {
  135490             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  135491           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  135492           0 :           ROSE_ASSERT(start != NULL);
  135493             : #if 0
  135494             :        // Debugging information
  135495             :           if (start->get_parent() == NULL)
  135496             :              {
  135497             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135498             :              }
  135499             : #endif
  135500           0 :           start->set_parent(locatedNode);
  135501           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  135502             : 
  135503           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  135504             : 
  135505             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  135506             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  135507             :        // ROSE_ASSERT(end != NULL);
  135508           0 :           if (end == NULL)
  135509             :              {
  135510           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  135511             :              }
  135512             :             else
  135513             :              {
  135514             : #if 0
  135515             :             // Debugging information
  135516             :                if (end->get_parent() == NULL)
  135517             :                   {
  135518             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135519             :                   }
  135520             : #endif
  135521           0 :                end->set_parent(locatedNode);
  135522           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  135523             :              }
  135524             : 
  135525           0 :           SgExpression* expression = isSgExpression(result);
  135526           0 :           if (isSgExpression(this) != NULL)
  135527             :              {
  135528           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  135529             : 
  135530             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  135531           0 :                if (operatorPosition != NULL)
  135532             :                   {
  135533             : #if 0
  135534             :                  // Debugging information
  135535             :                     if (operatorPosition->get_parent() == NULL)
  135536             :                        {
  135537             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135538             :                        }
  135539             : #endif
  135540           0 :                     operatorPosition->set_parent(expression);
  135541           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  135542             :                   }
  135543             :              }
  135544             :         }
  135545             : 
  135546             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  135547           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  135548           0 :      if (initializedName != NULL)
  135549             :         {
  135550             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  135551           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  135552           0 :           ROSE_ASSERT(start != NULL);
  135553             : #if 0
  135554             :        // Debugging information
  135555             :           if (start->get_parent() == NULL)
  135556             :              {
  135557             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135558             :              }
  135559             : #endif
  135560           0 :           start->set_parent(initializedName);
  135561           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  135562             : 
  135563             : #if 0
  135564             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  135565             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  135566             : 
  135567             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  135568             :        // ROSE_ASSERT(end != NULL);
  135569             :           if (end == NULL)
  135570             :              {
  135571             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  135572             :              }
  135573             :             else
  135574             :              {
  135575             :                if (end->get_parent() == NULL)
  135576             :                   {
  135577             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135578             :                   }
  135579             :                end->set_parent(initializedName);
  135580             :                ROSE_ASSERT(end->get_parent() != NULL);
  135581             :              }
  135582             : #endif
  135583             :         }
  135584             : 
  135585             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  135586           0 :      help.insertCopiedNodePair(this,result);
  135587             : 
  135588             :   // printf ("End of copy SgLockStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  135589             : 
  135590             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  135591             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  135592           0 :      help.decrementDepth();
  135593             : 
  135594             :   // Test if this is the root of the copy!
  135595           0 :      if (help.get_depth() == 0)
  135596             :         {
  135597             :        // This is the original calling node.
  135598             : 
  135599             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  135600             :        // printf ("Calling SgLockStatement::fixupCopy() (from root of AST being copied) \n");
  135601             : #if ALT_FIXUP_COPY
  135602             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  135603           0 :           fixupCopy_scopes (result,help);
  135604           0 :           fixupCopy_symbols (result,help);
  135605           0 :           fixupCopy_references (result,help);
  135606             : #else
  135607             :           fixupCopy(result,help);
  135608             : #endif
  135609             :        // Allow this to be called recursively, so accumulate the state.
  135610             :        // Also, clear the state in the SgCopyHelp object.
  135611             :        // help.clearState();
  135612             :         }
  135613             : 
  135614           0 :      return result;
  135615             :    }
  135616             : 
  135617             : 
  135618             : /* #line 135619 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  135619             : 
  135620             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  135621             : 
  135622           0 : SgNode* SgUnlockStatement::copy ( SgCopyHelp& help) const
  135623             :    {
  135624           0 :      SgUnlockStatement* result = NULL;
  135625             : 
  135626             :   // printf ("Copy SgUnlockStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  135627             : 
  135628             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  135629             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  135630             :   // The default value of the depth is 0, so after this call the depth is 1!
  135631           0 :      help.incrementDepth();
  135632             : 
  135633             : #if 0
  135634             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  135635             :   // but it is not generally true that things can only be copied once!
  135636             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  135637             :   // AstAttribute* existingAttribute = const_cast<SgUnlockStatement*>(this)->attribute["copied"];
  135638             :      bool previouslyCopied = const_cast<SgUnlockStatement*>(this)->attribute.exists("copied");
  135639             :      if (previouslyCopied == true)
  135640             :         {
  135641             :           this->get_file_info()->display("Called from copy SgUnlockStatement: debug");
  135642             :         }
  135643             :      ROSE_ASSERT(previouslyCopied == false);
  135644             : 
  135645             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  135646             :      AstAttribute* newAttribute = new AstAttribute();
  135647             :      ROSE_ASSERT(newAttribute != NULL);
  135648             : 
  135649             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  135650             :      const_cast<SgUnlockStatement*>(this)->attribute.add("copied",newAttribute);
  135651             : #endif
  135652             : 
  135653             :   // Copy data members from base classes
  135654             :   // Copy constructor parameter data member: startOfConstruct_copy
  135655             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  135656             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  135657           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  135658           0 :      if ( p_startOfConstruct != NULL ) 
  135659             :         { 
  135660           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  135661             :         } 
  135662             :        else 
  135663             :         { 
  135664             :           startOfConstruct_copy = NULL; 
  135665             :         } 
  135666             :   // Copy constructor parameter data member: lock_variable_copy
  135667           0 :      SgExpression* lock_variable_copy; 
  135668             :   // case: not a listType for (using conditionalToCopyVariable)lock_variable
  135669           0 :           if (get_lock_variable() != NULL) 
  135670             :              { 
  135671           0 :                lock_variable_copy = static_cast<SgExpression*>(help.copyAst(get_lock_variable())); 
  135672             :              } 
  135673             :             else 
  135674             :              { 
  135675             :                lock_variable_copy = NULL; 
  135676             :              } 
  135677             :  
  135678             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  135679             : 
  135680             :   // Build an empty copy of this object (will be filled in, but 
  135681             :   // the parent can't be set and must be set by the caller)
  135682           0 :      result = new SgUnlockStatement(  startOfConstruct_copy, lock_variable_copy );
  135683           0 :      ROSE_ASSERT(result != NULL);
  135684             : 
  135685             :   // Copy data members of "this" class
  135686             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  135687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  135688             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  135689           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  135690           0 :      if ( p_endOfConstruct != NULL ) 
  135691             :         { 
  135692           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  135693             :         } 
  135694             :        else 
  135695             :         { 
  135696             :           endOfConstruct_copy = NULL; 
  135697             :         } 
  135698             :   /* check for a valid pointer and delete if present */ 
  135699           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  135700             :   /* add assignment to result here */ 
  135701           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  135702             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  135703             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  135704             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  135705           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  135706           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  135707             :         { 
  135708           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  135709             :         } 
  135710             :        else 
  135711             :         { 
  135712             :           attachedPreprocessingInfoPtr_copy = NULL; 
  135713             :         } 
  135714             :   /* check for a valid pointer and delete if present */ 
  135715           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  135716             :   /* add assignment to result here */ 
  135717           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  135718             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  135719             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  135720             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  135721           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  135722           0 :      if ( p_attributeMechanism != NULL ) 
  135723             :         { 
  135724           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  135725             :         } 
  135726             :        else 
  135727             :         { 
  135728             :           attributeMechanism_copy = NULL; 
  135729             :         } 
  135730             :   /* check for a valid pointer and delete if present */ 
  135731           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  135732             :   /* add assignment to result here */ 
  135733           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  135734             :   // Copy non-constructor parameter data member (access function): numeric_label_copy
  135735             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label
  135736             :   // case: toBeCopied == COPY_DATA for numeric_label
  135737           0 :      SgLabelRefExp* numeric_label_copy = p_numeric_label; 
  135738           0 :      result->p_numeric_label = numeric_label_copy; 
  135739             :   // Copy non-constructor parameter data member (access function): source_sequence_value_copy
  135740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for source_sequence_value
  135741             :   // case: toBeCopied == COPY_DATA for source_sequence_value
  135742           0 :      int source_sequence_value_copy = p_source_sequence_value; 
  135743           0 :      result->p_source_sequence_value = source_sequence_value_copy; 
  135744             :   // Copy non-constructor parameter data member (access function): image_control_statement_copy
  135745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for image_control_statement
  135746             :   // case: toBeCopied == COPY_DATA for image_control_statement
  135747           0 :      SgImageControlStatement::image_control_statement_enum image_control_statement_copy = p_image_control_statement; 
  135748           0 :      result->p_image_control_statement = image_control_statement_copy; 
  135749             :   // Copy non-constructor parameter data member (access function): stat_copy
  135750           0 :      SgExpression* stat_copy; 
  135751             :   // case: not a listType for (using conditionalToCopyVariable)stat
  135752           0 :           if (get_stat() != NULL) 
  135753             :              { 
  135754           0 :                stat_copy = static_cast<SgExpression*>(help.copyAst(get_stat())); 
  135755             :              } 
  135756             :             else 
  135757             :              { 
  135758             :                stat_copy = NULL; 
  135759             :              } 
  135760             :   /* check for a valid pointer and delete if present */ 
  135761           0 :      if (result->p_stat != NULL) delete result->p_stat; 
  135762           0 :      result->p_stat = stat_copy; 
  135763             :   // case: not a listType for (using conditionalToSetParent)stat
  135764           0 :           if ( (stat_copy != NULL) && (stat_copy->get_parent() == NULL) && (isSgType(stat_copy) == NULL) ) 
  135765             :              { 
  135766           0 :                stat_copy->set_parent(result); 
  135767             :              } 
  135768             :   // Copy non-constructor parameter data member (access function): err_msg_copy
  135769           0 :      SgExpression* err_msg_copy; 
  135770             :   // case: not a listType for (using conditionalToCopyVariable)err_msg
  135771           0 :           if (get_err_msg() != NULL) 
  135772             :              { 
  135773           0 :                err_msg_copy = static_cast<SgExpression*>(help.copyAst(get_err_msg())); 
  135774             :              } 
  135775             :             else 
  135776             :              { 
  135777             :                err_msg_copy = NULL; 
  135778             :              } 
  135779             :   /* check for a valid pointer and delete if present */ 
  135780           0 :      if (result->p_err_msg != NULL) delete result->p_err_msg; 
  135781           0 :      result->p_err_msg = err_msg_copy; 
  135782             :   // case: not a listType for (using conditionalToSetParent)err_msg
  135783           0 :           if ( (err_msg_copy != NULL) && (err_msg_copy->get_parent() == NULL) && (isSgType(err_msg_copy) == NULL) ) 
  135784             :              { 
  135785           0 :                err_msg_copy->set_parent(result); 
  135786             :              } 
  135787             :   // Copy non-constructor parameter data member (access function): acquired_lock_copy
  135788           0 :      SgExpression* acquired_lock_copy; 
  135789             :   // case: not a listType for (using conditionalToCopyVariable)acquired_lock
  135790           0 :           if (get_acquired_lock() != NULL) 
  135791             :              { 
  135792           0 :                acquired_lock_copy = static_cast<SgExpression*>(help.copyAst(get_acquired_lock())); 
  135793             :              } 
  135794             :             else 
  135795             :              { 
  135796             :                acquired_lock_copy = NULL; 
  135797             :              } 
  135798             :   /* check for a valid pointer and delete if present */ 
  135799           0 :      if (result->p_acquired_lock != NULL) delete result->p_acquired_lock; 
  135800           0 :      result->p_acquired_lock = acquired_lock_copy; 
  135801             :   // case: not a listType for (using conditionalToSetParent)acquired_lock
  135802           0 :           if ( (acquired_lock_copy != NULL) && (acquired_lock_copy->get_parent() == NULL) && (isSgType(acquired_lock_copy) == NULL) ) 
  135803             :              { 
  135804           0 :                acquired_lock_copy->set_parent(result); 
  135805             :              } 
  135806             :   // case: not a listType for (using conditionalToSetParent)lock_variable
  135807           0 :           if ( (lock_variable_copy != NULL) && (lock_variable_copy->get_parent() == NULL) && (isSgType(lock_variable_copy) == NULL) ) 
  135808             :              { 
  135809           0 :                lock_variable_copy->set_parent(result); 
  135810             :              } 
  135811             : 
  135812             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  135813             : 
  135814             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  135815             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  135816             :   // fixupCopy(result,help);
  135817             : 
  135818             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  135819             :   // the Sg_File_Info objects that are built for the new IR nodes.
  135820           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  135821           0 :      if (locatedNode != NULL)
  135822             :         {
  135823             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  135824           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  135825           0 :           ROSE_ASSERT(start != NULL);
  135826             : #if 0
  135827             :        // Debugging information
  135828             :           if (start->get_parent() == NULL)
  135829             :              {
  135830             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135831             :              }
  135832             : #endif
  135833           0 :           start->set_parent(locatedNode);
  135834           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  135835             : 
  135836           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  135837             : 
  135838             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  135839             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  135840             :        // ROSE_ASSERT(end != NULL);
  135841           0 :           if (end == NULL)
  135842             :              {
  135843           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  135844             :              }
  135845             :             else
  135846             :              {
  135847             : #if 0
  135848             :             // Debugging information
  135849             :                if (end->get_parent() == NULL)
  135850             :                   {
  135851             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135852             :                   }
  135853             : #endif
  135854           0 :                end->set_parent(locatedNode);
  135855           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  135856             :              }
  135857             : 
  135858           0 :           SgExpression* expression = isSgExpression(result);
  135859           0 :           if (isSgExpression(this) != NULL)
  135860             :              {
  135861           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  135862             : 
  135863             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  135864           0 :                if (operatorPosition != NULL)
  135865             :                   {
  135866             : #if 0
  135867             :                  // Debugging information
  135868             :                     if (operatorPosition->get_parent() == NULL)
  135869             :                        {
  135870             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135871             :                        }
  135872             : #endif
  135873           0 :                     operatorPosition->set_parent(expression);
  135874           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  135875             :                   }
  135876             :              }
  135877             :         }
  135878             : 
  135879             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  135880           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  135881           0 :      if (initializedName != NULL)
  135882             :         {
  135883             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  135884           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  135885           0 :           ROSE_ASSERT(start != NULL);
  135886             : #if 0
  135887             :        // Debugging information
  135888             :           if (start->get_parent() == NULL)
  135889             :              {
  135890             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135891             :              }
  135892             : #endif
  135893           0 :           start->set_parent(initializedName);
  135894           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  135895             : 
  135896             : #if 0
  135897             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  135898             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  135899             : 
  135900             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  135901             :        // ROSE_ASSERT(end != NULL);
  135902             :           if (end == NULL)
  135903             :              {
  135904             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  135905             :              }
  135906             :             else
  135907             :              {
  135908             :                if (end->get_parent() == NULL)
  135909             :                   {
  135910             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  135911             :                   }
  135912             :                end->set_parent(initializedName);
  135913             :                ROSE_ASSERT(end->get_parent() != NULL);
  135914             :              }
  135915             : #endif
  135916             :         }
  135917             : 
  135918             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  135919           0 :      help.insertCopiedNodePair(this,result);
  135920             : 
  135921             :   // printf ("End of copy SgUnlockStatement = %p = %s \n",this,SageInterface::get_name(this).c_str());
  135922             : 
  135923             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  135924             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  135925           0 :      help.decrementDepth();
  135926             : 
  135927             :   // Test if this is the root of the copy!
  135928           0 :      if (help.get_depth() == 0)
  135929             :         {
  135930             :        // This is the original calling node.
  135931             : 
  135932             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  135933             :        // printf ("Calling SgUnlockStatement::fixupCopy() (from root of AST being copied) \n");
  135934             : #if ALT_FIXUP_COPY
  135935             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  135936           0 :           fixupCopy_scopes (result,help);
  135937           0 :           fixupCopy_symbols (result,help);
  135938           0 :           fixupCopy_references (result,help);
  135939             : #else
  135940             :           fixupCopy(result,help);
  135941             : #endif
  135942             :        // Allow this to be called recursively, so accumulate the state.
  135943             :        // Also, clear the state in the SgCopyHelp object.
  135944             :        // help.clearState();
  135945             :         }
  135946             : 
  135947           0 :      return result;
  135948             :    }
  135949             : 
  135950             : 
  135951             : /* #line 135952 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  135952             : 
  135953             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  135954             : 
  135955           0 : SgNode* SgExpression::copy ( SgCopyHelp& help) const
  135956             :    {
  135957           0 :      SgExpression* result = NULL;
  135958             : 
  135959             :   // printf ("Copy SgExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  135960             : 
  135961             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  135962             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  135963             :   // The default value of the depth is 0, so after this call the depth is 1!
  135964           0 :      help.incrementDepth();
  135965             : 
  135966             : #if 0
  135967             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  135968             :   // but it is not generally true that things can only be copied once!
  135969             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  135970             :   // AstAttribute* existingAttribute = const_cast<SgExpression*>(this)->attribute["copied"];
  135971             :      bool previouslyCopied = const_cast<SgExpression*>(this)->attribute.exists("copied");
  135972             :      if (previouslyCopied == true)
  135973             :         {
  135974             :           this->get_file_info()->display("Called from copy SgExpression: debug");
  135975             :         }
  135976             :      ROSE_ASSERT(previouslyCopied == false);
  135977             : 
  135978             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  135979             :      AstAttribute* newAttribute = new AstAttribute();
  135980             :      ROSE_ASSERT(newAttribute != NULL);
  135981             : 
  135982             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  135983             :      const_cast<SgExpression*>(this)->attribute.add("copied",newAttribute);
  135984             : #endif
  135985             : 
  135986             :   // Copy data members from base classes
  135987             :   // Copy constructor parameter data member: startOfConstruct_copy
  135988             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  135989             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  135990           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  135991           0 :      if ( p_startOfConstruct != NULL ) 
  135992             :         { 
  135993           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  135994             :         } 
  135995             :        else 
  135996             :         { 
  135997             :           startOfConstruct_copy = NULL; 
  135998             :         } 
  135999             :  
  136000             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136001             : 
  136002             :   // Build an empty copy of this object (will be filled in, but 
  136003             :   // the parent can't be set and must be set by the caller)
  136004           0 :      result = new SgExpression(  startOfConstruct_copy );
  136005           0 :      ROSE_ASSERT(result != NULL);
  136006             : 
  136007             :   // Copy data members of "this" class
  136008             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  136009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  136010             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  136011           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  136012           0 :      if ( p_endOfConstruct != NULL ) 
  136013             :         { 
  136014           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  136015             :         } 
  136016             :        else 
  136017             :         { 
  136018             :           endOfConstruct_copy = NULL; 
  136019             :         } 
  136020             :   /* check for a valid pointer and delete if present */ 
  136021           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  136022             :   /* add assignment to result here */ 
  136023           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  136024             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  136025             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  136026             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  136027           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  136028           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  136029             :         { 
  136030           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  136031             :         } 
  136032             :        else 
  136033             :         { 
  136034             :           attachedPreprocessingInfoPtr_copy = NULL; 
  136035             :         } 
  136036             :   /* check for a valid pointer and delete if present */ 
  136037           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  136038             :   /* add assignment to result here */ 
  136039           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  136040             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  136041             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  136042             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  136043           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  136044           0 :      if ( p_attributeMechanism != NULL ) 
  136045             :         { 
  136046           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  136047             :         } 
  136048             :        else 
  136049             :         { 
  136050             :           attributeMechanism_copy = NULL; 
  136051             :         } 
  136052             :   /* check for a valid pointer and delete if present */ 
  136053           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  136054             :   /* add assignment to result here */ 
  136055           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  136056             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  136057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  136058             :   // case: toBeCopied == COPY_DATA for need_paren
  136059           0 :      bool need_paren_copy = p_need_paren; 
  136060           0 :      result->p_need_paren = need_paren_copy; 
  136061             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  136062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  136063             :   // case: toBeCopied == COPY_DATA for lvalue
  136064           0 :      bool lvalue_copy = p_lvalue; 
  136065           0 :      result->p_lvalue = lvalue_copy; 
  136066             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  136067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  136068             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  136069           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  136070           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  136071             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  136072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  136073             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  136074           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  136075           0 :      if ( p_operatorPosition != NULL ) 
  136076             :         { 
  136077           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  136078             :         } 
  136079             :        else 
  136080             :         { 
  136081             :           operatorPosition_copy = NULL; 
  136082             :         } 
  136083             :   /* check for a valid pointer and delete if present */ 
  136084           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  136085             :   /* add assignment to result here */ 
  136086           0 :      result->p_operatorPosition = operatorPosition_copy; 
  136087             : 
  136088             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136089             : 
  136090             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  136091             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  136092             :   // fixupCopy(result,help);
  136093             : 
  136094             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  136095             :   // the Sg_File_Info objects that are built for the new IR nodes.
  136096           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  136097           0 :      if (locatedNode != NULL)
  136098             :         {
  136099             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  136100           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  136101           0 :           ROSE_ASSERT(start != NULL);
  136102             : #if 0
  136103             :        // Debugging information
  136104             :           if (start->get_parent() == NULL)
  136105             :              {
  136106             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136107             :              }
  136108             : #endif
  136109           0 :           start->set_parent(locatedNode);
  136110           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  136111             : 
  136112           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  136113             : 
  136114             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  136115             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  136116             :        // ROSE_ASSERT(end != NULL);
  136117           0 :           if (end == NULL)
  136118             :              {
  136119           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  136120             :              }
  136121             :             else
  136122             :              {
  136123             : #if 0
  136124             :             // Debugging information
  136125             :                if (end->get_parent() == NULL)
  136126             :                   {
  136127             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136128             :                   }
  136129             : #endif
  136130           0 :                end->set_parent(locatedNode);
  136131           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  136132             :              }
  136133             : 
  136134           0 :           SgExpression* expression = isSgExpression(result);
  136135           0 :           if (isSgExpression(this) != NULL)
  136136             :              {
  136137           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  136138             : 
  136139             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  136140           0 :                if (operatorPosition != NULL)
  136141             :                   {
  136142             : #if 0
  136143             :                  // Debugging information
  136144             :                     if (operatorPosition->get_parent() == NULL)
  136145             :                        {
  136146             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136147             :                        }
  136148             : #endif
  136149           0 :                     operatorPosition->set_parent(expression);
  136150           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  136151             :                   }
  136152             :              }
  136153             :         }
  136154             : 
  136155             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  136156           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  136157           0 :      if (initializedName != NULL)
  136158             :         {
  136159             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  136160           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  136161           0 :           ROSE_ASSERT(start != NULL);
  136162             : #if 0
  136163             :        // Debugging information
  136164             :           if (start->get_parent() == NULL)
  136165             :              {
  136166             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136167             :              }
  136168             : #endif
  136169           0 :           start->set_parent(initializedName);
  136170           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  136171             : 
  136172             : #if 0
  136173             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  136174             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  136175             : 
  136176             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  136177             :        // ROSE_ASSERT(end != NULL);
  136178             :           if (end == NULL)
  136179             :              {
  136180             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  136181             :              }
  136182             :             else
  136183             :              {
  136184             :                if (end->get_parent() == NULL)
  136185             :                   {
  136186             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136187             :                   }
  136188             :                end->set_parent(initializedName);
  136189             :                ROSE_ASSERT(end->get_parent() != NULL);
  136190             :              }
  136191             : #endif
  136192             :         }
  136193             : 
  136194             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  136195           0 :      help.insertCopiedNodePair(this,result);
  136196             : 
  136197             :   // printf ("End of copy SgExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  136198             : 
  136199             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  136200             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  136201           0 :      help.decrementDepth();
  136202             : 
  136203             :   // Test if this is the root of the copy!
  136204           0 :      if (help.get_depth() == 0)
  136205             :         {
  136206             :        // This is the original calling node.
  136207             : 
  136208             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  136209             :        // printf ("Calling SgExpression::fixupCopy() (from root of AST being copied) \n");
  136210             : #if ALT_FIXUP_COPY
  136211             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  136212           0 :           fixupCopy_scopes (result,help);
  136213           0 :           fixupCopy_symbols (result,help);
  136214           0 :           fixupCopy_references (result,help);
  136215             : #else
  136216             :           fixupCopy(result,help);
  136217             : #endif
  136218             :        // Allow this to be called recursively, so accumulate the state.
  136219             :        // Also, clear the state in the SgCopyHelp object.
  136220             :        // help.clearState();
  136221             :         }
  136222             : 
  136223           0 :      return result;
  136224             :    }
  136225             : 
  136226             : 
  136227             : /* #line 136228 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  136228             : 
  136229             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136230             : 
  136231           0 : SgNode* SgUnaryOp::copy ( SgCopyHelp& help) const
  136232             :    {
  136233           0 :      SgUnaryOp* result = NULL;
  136234             : 
  136235             :   // printf ("Copy SgUnaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  136236             : 
  136237             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  136238             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  136239             :   // The default value of the depth is 0, so after this call the depth is 1!
  136240           0 :      help.incrementDepth();
  136241             : 
  136242             : #if 0
  136243             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  136244             :   // but it is not generally true that things can only be copied once!
  136245             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  136246             :   // AstAttribute* existingAttribute = const_cast<SgUnaryOp*>(this)->attribute["copied"];
  136247             :      bool previouslyCopied = const_cast<SgUnaryOp*>(this)->attribute.exists("copied");
  136248             :      if (previouslyCopied == true)
  136249             :         {
  136250             :           this->get_file_info()->display("Called from copy SgUnaryOp: debug");
  136251             :         }
  136252             :      ROSE_ASSERT(previouslyCopied == false);
  136253             : 
  136254             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  136255             :      AstAttribute* newAttribute = new AstAttribute();
  136256             :      ROSE_ASSERT(newAttribute != NULL);
  136257             : 
  136258             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  136259             :      const_cast<SgUnaryOp*>(this)->attribute.add("copied",newAttribute);
  136260             : #endif
  136261             : 
  136262             :   // Copy data members from base classes
  136263             :   // Copy constructor parameter data member: startOfConstruct_copy
  136264             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  136265             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  136266           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  136267           0 :      if ( p_startOfConstruct != NULL ) 
  136268             :         { 
  136269           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  136270             :         } 
  136271             :        else 
  136272             :         { 
  136273             :           startOfConstruct_copy = NULL; 
  136274             :         } 
  136275             :   // Copy constructor parameter data member: operand_i_copy
  136276           0 :      SgExpression* operand_i_copy; 
  136277             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  136278           0 :           if (get_operand_i() != NULL) 
  136279             :              { 
  136280           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  136281             :              } 
  136282             :             else 
  136283             :              { 
  136284             :                operand_i_copy = NULL; 
  136285             :              } 
  136286             :   // Copy constructor parameter data member: expression_type_copy
  136287             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  136288             :   // case: toBeCopied == COPY_DATA for expression_type
  136289           0 :      SgType* expression_type_copy = p_expression_type; 
  136290             :  
  136291             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136292             : 
  136293             :   // Build an empty copy of this object (will be filled in, but 
  136294             :   // the parent can't be set and must be set by the caller)
  136295           0 :      result = new SgUnaryOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  136296           0 :      ROSE_ASSERT(result != NULL);
  136297             : 
  136298             :   // Copy data members of "this" class
  136299             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  136300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  136301             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  136302           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  136303           0 :      if ( p_endOfConstruct != NULL ) 
  136304             :         { 
  136305           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  136306             :         } 
  136307             :        else 
  136308             :         { 
  136309             :           endOfConstruct_copy = NULL; 
  136310             :         } 
  136311             :   /* check for a valid pointer and delete if present */ 
  136312           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  136313             :   /* add assignment to result here */ 
  136314           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  136315             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  136316             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  136317             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  136318           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  136319           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  136320             :         { 
  136321           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  136322             :         } 
  136323             :        else 
  136324             :         { 
  136325             :           attachedPreprocessingInfoPtr_copy = NULL; 
  136326             :         } 
  136327             :   /* check for a valid pointer and delete if present */ 
  136328           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  136329             :   /* add assignment to result here */ 
  136330           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  136331             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  136332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  136333             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  136334           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  136335           0 :      if ( p_attributeMechanism != NULL ) 
  136336             :         { 
  136337           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  136338             :         } 
  136339             :        else 
  136340             :         { 
  136341             :           attributeMechanism_copy = NULL; 
  136342             :         } 
  136343             :   /* check for a valid pointer and delete if present */ 
  136344           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  136345             :   /* add assignment to result here */ 
  136346           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  136347             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  136348             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  136349             :   // case: toBeCopied == COPY_DATA for need_paren
  136350           0 :      bool need_paren_copy = p_need_paren; 
  136351           0 :      result->p_need_paren = need_paren_copy; 
  136352             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  136353             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  136354             :   // case: toBeCopied == COPY_DATA for lvalue
  136355           0 :      bool lvalue_copy = p_lvalue; 
  136356           0 :      result->p_lvalue = lvalue_copy; 
  136357             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  136358             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  136359             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  136360           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  136361           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  136362             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  136363             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  136364             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  136365           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  136366           0 :      if ( p_operatorPosition != NULL ) 
  136367             :         { 
  136368           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  136369             :         } 
  136370             :        else 
  136371             :         { 
  136372             :           operatorPosition_copy = NULL; 
  136373             :         } 
  136374             :   /* check for a valid pointer and delete if present */ 
  136375           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  136376             :   /* add assignment to result here */ 
  136377           0 :      result->p_operatorPosition = operatorPosition_copy; 
  136378             :   // Copy non-constructor parameter data member (access function): mode_copy
  136379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  136380             :   // case: toBeCopied == COPY_DATA for mode
  136381           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  136382           0 :      result->p_mode = mode_copy; 
  136383             :   // case: not a listType for (using conditionalToSetParent)operand_i
  136384           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  136385             :              { 
  136386           0 :                operand_i_copy->set_parent(result); 
  136387             :              } 
  136388             : 
  136389             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136390             : 
  136391             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  136392             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  136393             :   // fixupCopy(result,help);
  136394             : 
  136395             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  136396             :   // the Sg_File_Info objects that are built for the new IR nodes.
  136397           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  136398           0 :      if (locatedNode != NULL)
  136399             :         {
  136400             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  136401           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  136402           0 :           ROSE_ASSERT(start != NULL);
  136403             : #if 0
  136404             :        // Debugging information
  136405             :           if (start->get_parent() == NULL)
  136406             :              {
  136407             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136408             :              }
  136409             : #endif
  136410           0 :           start->set_parent(locatedNode);
  136411           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  136412             : 
  136413           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  136414             : 
  136415             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  136416             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  136417             :        // ROSE_ASSERT(end != NULL);
  136418           0 :           if (end == NULL)
  136419             :              {
  136420           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  136421             :              }
  136422             :             else
  136423             :              {
  136424             : #if 0
  136425             :             // Debugging information
  136426             :                if (end->get_parent() == NULL)
  136427             :                   {
  136428             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136429             :                   }
  136430             : #endif
  136431           0 :                end->set_parent(locatedNode);
  136432           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  136433             :              }
  136434             : 
  136435           0 :           SgExpression* expression = isSgExpression(result);
  136436           0 :           if (isSgExpression(this) != NULL)
  136437             :              {
  136438           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  136439             : 
  136440             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  136441           0 :                if (operatorPosition != NULL)
  136442             :                   {
  136443             : #if 0
  136444             :                  // Debugging information
  136445             :                     if (operatorPosition->get_parent() == NULL)
  136446             :                        {
  136447             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136448             :                        }
  136449             : #endif
  136450           0 :                     operatorPosition->set_parent(expression);
  136451           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  136452             :                   }
  136453             :              }
  136454             :         }
  136455             : 
  136456             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  136457           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  136458           0 :      if (initializedName != NULL)
  136459             :         {
  136460             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  136461           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  136462           0 :           ROSE_ASSERT(start != NULL);
  136463             : #if 0
  136464             :        // Debugging information
  136465             :           if (start->get_parent() == NULL)
  136466             :              {
  136467             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136468             :              }
  136469             : #endif
  136470           0 :           start->set_parent(initializedName);
  136471           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  136472             : 
  136473             : #if 0
  136474             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  136475             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  136476             : 
  136477             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  136478             :        // ROSE_ASSERT(end != NULL);
  136479             :           if (end == NULL)
  136480             :              {
  136481             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  136482             :              }
  136483             :             else
  136484             :              {
  136485             :                if (end->get_parent() == NULL)
  136486             :                   {
  136487             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136488             :                   }
  136489             :                end->set_parent(initializedName);
  136490             :                ROSE_ASSERT(end->get_parent() != NULL);
  136491             :              }
  136492             : #endif
  136493             :         }
  136494             : 
  136495             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  136496           0 :      help.insertCopiedNodePair(this,result);
  136497             : 
  136498             :   // printf ("End of copy SgUnaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  136499             : 
  136500             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  136501             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  136502           0 :      help.decrementDepth();
  136503             : 
  136504             :   // Test if this is the root of the copy!
  136505           0 :      if (help.get_depth() == 0)
  136506             :         {
  136507             :        // This is the original calling node.
  136508             : 
  136509             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  136510             :        // printf ("Calling SgUnaryOp::fixupCopy() (from root of AST being copied) \n");
  136511             : #if ALT_FIXUP_COPY
  136512             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  136513           0 :           fixupCopy_scopes (result,help);
  136514           0 :           fixupCopy_symbols (result,help);
  136515           0 :           fixupCopy_references (result,help);
  136516             : #else
  136517             :           fixupCopy(result,help);
  136518             : #endif
  136519             :        // Allow this to be called recursively, so accumulate the state.
  136520             :        // Also, clear the state in the SgCopyHelp object.
  136521             :        // help.clearState();
  136522             :         }
  136523             : 
  136524           0 :      return result;
  136525             :    }
  136526             : 
  136527             : 
  136528             : /* #line 136529 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  136529             : 
  136530             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136531             : 
  136532           0 : SgNode* SgExpressionRoot::copy ( SgCopyHelp& help) const
  136533             :    {
  136534           0 :      SgExpressionRoot* result = NULL;
  136535             : 
  136536             :   // printf ("Copy SgExpressionRoot = %p = %s \n",this,SageInterface::get_name(this).c_str());
  136537             : 
  136538             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  136539             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  136540             :   // The default value of the depth is 0, so after this call the depth is 1!
  136541           0 :      help.incrementDepth();
  136542             : 
  136543             : #if 0
  136544             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  136545             :   // but it is not generally true that things can only be copied once!
  136546             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  136547             :   // AstAttribute* existingAttribute = const_cast<SgExpressionRoot*>(this)->attribute["copied"];
  136548             :      bool previouslyCopied = const_cast<SgExpressionRoot*>(this)->attribute.exists("copied");
  136549             :      if (previouslyCopied == true)
  136550             :         {
  136551             :           this->get_file_info()->display("Called from copy SgExpressionRoot: debug");
  136552             :         }
  136553             :      ROSE_ASSERT(previouslyCopied == false);
  136554             : 
  136555             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  136556             :      AstAttribute* newAttribute = new AstAttribute();
  136557             :      ROSE_ASSERT(newAttribute != NULL);
  136558             : 
  136559             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  136560             :      const_cast<SgExpressionRoot*>(this)->attribute.add("copied",newAttribute);
  136561             : #endif
  136562             : 
  136563             :   // Copy data members from base classes
  136564             :   // Copy constructor parameter data member: startOfConstruct_copy
  136565             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  136566             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  136567           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  136568           0 :      if ( p_startOfConstruct != NULL ) 
  136569             :         { 
  136570           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  136571             :         } 
  136572             :        else 
  136573             :         { 
  136574             :           startOfConstruct_copy = NULL; 
  136575             :         } 
  136576             :   // Copy constructor parameter data member: operand_i_copy
  136577           0 :      SgExpression* operand_i_copy; 
  136578             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  136579           0 :           if (get_operand_i() != NULL) 
  136580             :              { 
  136581           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  136582             :              } 
  136583             :             else 
  136584             :              { 
  136585             :                operand_i_copy = NULL; 
  136586             :              } 
  136587             :   // Copy constructor parameter data member: expression_type_copy
  136588             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  136589             :   // case: toBeCopied == COPY_DATA for expression_type
  136590           0 :      SgType* expression_type_copy = p_expression_type; 
  136591             :  
  136592             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136593             : 
  136594             :   // Build an empty copy of this object (will be filled in, but 
  136595             :   // the parent can't be set and must be set by the caller)
  136596           0 :      result = new SgExpressionRoot(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  136597           0 :      ROSE_ASSERT(result != NULL);
  136598             : 
  136599             :   // Copy data members of "this" class
  136600             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  136601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  136602             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  136603           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  136604           0 :      if ( p_endOfConstruct != NULL ) 
  136605             :         { 
  136606           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  136607             :         } 
  136608             :        else 
  136609             :         { 
  136610             :           endOfConstruct_copy = NULL; 
  136611             :         } 
  136612             :   /* check for a valid pointer and delete if present */ 
  136613           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  136614             :   /* add assignment to result here */ 
  136615           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  136616             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  136617             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  136618             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  136619           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  136620           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  136621             :         { 
  136622           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  136623             :         } 
  136624             :        else 
  136625             :         { 
  136626             :           attachedPreprocessingInfoPtr_copy = NULL; 
  136627             :         } 
  136628             :   /* check for a valid pointer and delete if present */ 
  136629           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  136630             :   /* add assignment to result here */ 
  136631           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  136632             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  136633             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  136634             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  136635           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  136636           0 :      if ( p_attributeMechanism != NULL ) 
  136637             :         { 
  136638           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  136639             :         } 
  136640             :        else 
  136641             :         { 
  136642             :           attributeMechanism_copy = NULL; 
  136643             :         } 
  136644             :   /* check for a valid pointer and delete if present */ 
  136645           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  136646             :   /* add assignment to result here */ 
  136647           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  136648             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  136649             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  136650             :   // case: toBeCopied == COPY_DATA for need_paren
  136651           0 :      bool need_paren_copy = p_need_paren; 
  136652           0 :      result->p_need_paren = need_paren_copy; 
  136653             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  136654             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  136655             :   // case: toBeCopied == COPY_DATA for lvalue
  136656           0 :      bool lvalue_copy = p_lvalue; 
  136657           0 :      result->p_lvalue = lvalue_copy; 
  136658             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  136659             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  136660             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  136661           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  136662           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  136663             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  136664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  136665             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  136666           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  136667           0 :      if ( p_operatorPosition != NULL ) 
  136668             :         { 
  136669           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  136670             :         } 
  136671             :        else 
  136672             :         { 
  136673             :           operatorPosition_copy = NULL; 
  136674             :         } 
  136675             :   /* check for a valid pointer and delete if present */ 
  136676           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  136677             :   /* add assignment to result here */ 
  136678           0 :      result->p_operatorPosition = operatorPosition_copy; 
  136679             :   // Copy non-constructor parameter data member (access function): mode_copy
  136680             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  136681             :   // case: toBeCopied == COPY_DATA for mode
  136682           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  136683           0 :      result->p_mode = mode_copy; 
  136684             :   // case: not a listType for (using conditionalToSetParent)operand_i
  136685           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  136686             :              { 
  136687           0 :                operand_i_copy->set_parent(result); 
  136688             :              } 
  136689             : 
  136690             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136691             : 
  136692             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  136693             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  136694             :   // fixupCopy(result,help);
  136695             : 
  136696             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  136697             :   // the Sg_File_Info objects that are built for the new IR nodes.
  136698           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  136699           0 :      if (locatedNode != NULL)
  136700             :         {
  136701             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  136702           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  136703           0 :           ROSE_ASSERT(start != NULL);
  136704             : #if 0
  136705             :        // Debugging information
  136706             :           if (start->get_parent() == NULL)
  136707             :              {
  136708             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136709             :              }
  136710             : #endif
  136711           0 :           start->set_parent(locatedNode);
  136712           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  136713             : 
  136714           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  136715             : 
  136716             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  136717             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  136718             :        // ROSE_ASSERT(end != NULL);
  136719           0 :           if (end == NULL)
  136720             :              {
  136721           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  136722             :              }
  136723             :             else
  136724             :              {
  136725             : #if 0
  136726             :             // Debugging information
  136727             :                if (end->get_parent() == NULL)
  136728             :                   {
  136729             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136730             :                   }
  136731             : #endif
  136732           0 :                end->set_parent(locatedNode);
  136733           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  136734             :              }
  136735             : 
  136736           0 :           SgExpression* expression = isSgExpression(result);
  136737           0 :           if (isSgExpression(this) != NULL)
  136738             :              {
  136739           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  136740             : 
  136741             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  136742           0 :                if (operatorPosition != NULL)
  136743             :                   {
  136744             : #if 0
  136745             :                  // Debugging information
  136746             :                     if (operatorPosition->get_parent() == NULL)
  136747             :                        {
  136748             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136749             :                        }
  136750             : #endif
  136751           0 :                     operatorPosition->set_parent(expression);
  136752           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  136753             :                   }
  136754             :              }
  136755             :         }
  136756             : 
  136757             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  136758           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  136759           0 :      if (initializedName != NULL)
  136760             :         {
  136761             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  136762           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  136763           0 :           ROSE_ASSERT(start != NULL);
  136764             : #if 0
  136765             :        // Debugging information
  136766             :           if (start->get_parent() == NULL)
  136767             :              {
  136768             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136769             :              }
  136770             : #endif
  136771           0 :           start->set_parent(initializedName);
  136772           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  136773             : 
  136774             : #if 0
  136775             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  136776             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  136777             : 
  136778             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  136779             :        // ROSE_ASSERT(end != NULL);
  136780             :           if (end == NULL)
  136781             :              {
  136782             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  136783             :              }
  136784             :             else
  136785             :              {
  136786             :                if (end->get_parent() == NULL)
  136787             :                   {
  136788             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  136789             :                   }
  136790             :                end->set_parent(initializedName);
  136791             :                ROSE_ASSERT(end->get_parent() != NULL);
  136792             :              }
  136793             : #endif
  136794             :         }
  136795             : 
  136796             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  136797           0 :      help.insertCopiedNodePair(this,result);
  136798             : 
  136799             :   // printf ("End of copy SgExpressionRoot = %p = %s \n",this,SageInterface::get_name(this).c_str());
  136800             : 
  136801             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  136802             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  136803           0 :      help.decrementDepth();
  136804             : 
  136805             :   // Test if this is the root of the copy!
  136806           0 :      if (help.get_depth() == 0)
  136807             :         {
  136808             :        // This is the original calling node.
  136809             : 
  136810             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  136811             :        // printf ("Calling SgExpressionRoot::fixupCopy() (from root of AST being copied) \n");
  136812             : #if ALT_FIXUP_COPY
  136813             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  136814           0 :           fixupCopy_scopes (result,help);
  136815           0 :           fixupCopy_symbols (result,help);
  136816           0 :           fixupCopy_references (result,help);
  136817             : #else
  136818             :           fixupCopy(result,help);
  136819             : #endif
  136820             :        // Allow this to be called recursively, so accumulate the state.
  136821             :        // Also, clear the state in the SgCopyHelp object.
  136822             :        // help.clearState();
  136823             :         }
  136824             : 
  136825           0 :      return result;
  136826             :    }
  136827             : 
  136828             : 
  136829             : /* #line 136830 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  136830             : 
  136831             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136832             : 
  136833          37 : SgNode* SgMinusOp::copy ( SgCopyHelp& help) const
  136834             :    {
  136835          37 :      SgMinusOp* result = NULL;
  136836             : 
  136837             :   // printf ("Copy SgMinusOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  136838             : 
  136839             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  136840             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  136841             :   // The default value of the depth is 0, so after this call the depth is 1!
  136842          37 :      help.incrementDepth();
  136843             : 
  136844             : #if 0
  136845             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  136846             :   // but it is not generally true that things can only be copied once!
  136847             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  136848             :   // AstAttribute* existingAttribute = const_cast<SgMinusOp*>(this)->attribute["copied"];
  136849             :      bool previouslyCopied = const_cast<SgMinusOp*>(this)->attribute.exists("copied");
  136850             :      if (previouslyCopied == true)
  136851             :         {
  136852             :           this->get_file_info()->display("Called from copy SgMinusOp: debug");
  136853             :         }
  136854             :      ROSE_ASSERT(previouslyCopied == false);
  136855             : 
  136856             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  136857             :      AstAttribute* newAttribute = new AstAttribute();
  136858             :      ROSE_ASSERT(newAttribute != NULL);
  136859             : 
  136860             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  136861             :      const_cast<SgMinusOp*>(this)->attribute.add("copied",newAttribute);
  136862             : #endif
  136863             : 
  136864             :   // Copy data members from base classes
  136865             :   // Copy constructor parameter data member: startOfConstruct_copy
  136866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  136867             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  136868          37 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  136869          37 :      if ( p_startOfConstruct != NULL ) 
  136870             :         { 
  136871          37 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  136872             :         } 
  136873             :        else 
  136874             :         { 
  136875             :           startOfConstruct_copy = NULL; 
  136876             :         } 
  136877             :   // Copy constructor parameter data member: operand_i_copy
  136878          37 :      SgExpression* operand_i_copy; 
  136879             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  136880          37 :           if (get_operand_i() != NULL) 
  136881             :              { 
  136882          37 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  136883             :              } 
  136884             :             else 
  136885             :              { 
  136886             :                operand_i_copy = NULL; 
  136887             :              } 
  136888             :   // Copy constructor parameter data member: expression_type_copy
  136889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  136890             :   // case: toBeCopied == COPY_DATA for expression_type
  136891          37 :      SgType* expression_type_copy = p_expression_type; 
  136892             :  
  136893             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136894             : 
  136895             :   // Build an empty copy of this object (will be filled in, but 
  136896             :   // the parent can't be set and must be set by the caller)
  136897          37 :      result = new SgMinusOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  136898          37 :      ROSE_ASSERT(result != NULL);
  136899             : 
  136900             :   // Copy data members of "this" class
  136901             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  136902             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  136903             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  136904          37 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  136905          37 :      if ( p_endOfConstruct != NULL ) 
  136906             :         { 
  136907          37 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  136908             :         } 
  136909             :        else 
  136910             :         { 
  136911             :           endOfConstruct_copy = NULL; 
  136912             :         } 
  136913             :   /* check for a valid pointer and delete if present */ 
  136914          37 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  136915             :   /* add assignment to result here */ 
  136916          37 :      result->p_endOfConstruct = endOfConstruct_copy; 
  136917             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  136918             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  136919             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  136920          37 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  136921          37 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  136922             :         { 
  136923           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  136924             :         } 
  136925             :        else 
  136926             :         { 
  136927             :           attachedPreprocessingInfoPtr_copy = NULL; 
  136928             :         } 
  136929             :   /* check for a valid pointer and delete if present */ 
  136930          37 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  136931             :   /* add assignment to result here */ 
  136932          37 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  136933             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  136934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  136935             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  136936          37 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  136937          37 :      if ( p_attributeMechanism != NULL ) 
  136938             :         { 
  136939           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  136940             :         } 
  136941             :        else 
  136942             :         { 
  136943             :           attributeMechanism_copy = NULL; 
  136944             :         } 
  136945             :   /* check for a valid pointer and delete if present */ 
  136946          37 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  136947             :   /* add assignment to result here */ 
  136948          37 :      result->p_attributeMechanism = attributeMechanism_copy; 
  136949             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  136950             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  136951             :   // case: toBeCopied == COPY_DATA for need_paren
  136952          37 :      bool need_paren_copy = p_need_paren; 
  136953          37 :      result->p_need_paren = need_paren_copy; 
  136954             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  136955             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  136956             :   // case: toBeCopied == COPY_DATA for lvalue
  136957          37 :      bool lvalue_copy = p_lvalue; 
  136958          37 :      result->p_lvalue = lvalue_copy; 
  136959             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  136960             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  136961             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  136962          37 :      bool global_qualified_name_copy = p_global_qualified_name; 
  136963          37 :      result->p_global_qualified_name = global_qualified_name_copy; 
  136964             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  136965             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  136966             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  136967          37 :      Sg_File_Info* operatorPosition_copy = NULL; 
  136968          37 :      if ( p_operatorPosition != NULL ) 
  136969             :         { 
  136970          37 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  136971             :         } 
  136972             :        else 
  136973             :         { 
  136974             :           operatorPosition_copy = NULL; 
  136975             :         } 
  136976             :   /* check for a valid pointer and delete if present */ 
  136977          37 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  136978             :   /* add assignment to result here */ 
  136979          37 :      result->p_operatorPosition = operatorPosition_copy; 
  136980             :   // Copy non-constructor parameter data member (access function): mode_copy
  136981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  136982             :   // case: toBeCopied == COPY_DATA for mode
  136983          37 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  136984          37 :      result->p_mode = mode_copy; 
  136985             :   // case: not a listType for (using conditionalToSetParent)operand_i
  136986          37 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  136987             :              { 
  136988           0 :                operand_i_copy->set_parent(result); 
  136989             :              } 
  136990             : 
  136991             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  136992             : 
  136993             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  136994             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  136995             :   // fixupCopy(result,help);
  136996             : 
  136997             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  136998             :   // the Sg_File_Info objects that are built for the new IR nodes.
  136999          37 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  137000          37 :      if (locatedNode != NULL)
  137001             :         {
  137002             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  137003          37 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  137004          37 :           ROSE_ASSERT(start != NULL);
  137005             : #if 0
  137006             :        // Debugging information
  137007             :           if (start->get_parent() == NULL)
  137008             :              {
  137009             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137010             :              }
  137011             : #endif
  137012          37 :           start->set_parent(locatedNode);
  137013          37 :           ROSE_ASSERT(start->get_parent() != NULL);
  137014             : 
  137015          37 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  137016             : 
  137017             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  137018             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  137019             :        // ROSE_ASSERT(end != NULL);
  137020          37 :           if (end == NULL)
  137021             :              {
  137022           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  137023             :              }
  137024             :             else
  137025             :              {
  137026             : #if 0
  137027             :             // Debugging information
  137028             :                if (end->get_parent() == NULL)
  137029             :                   {
  137030             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137031             :                   }
  137032             : #endif
  137033          37 :                end->set_parent(locatedNode);
  137034          37 :                ROSE_ASSERT(end->get_parent() != NULL);
  137035             :              }
  137036             : 
  137037          37 :           SgExpression* expression = isSgExpression(result);
  137038          37 :           if (isSgExpression(this) != NULL)
  137039             :              {
  137040          37 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  137041             : 
  137042             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  137043          37 :                if (operatorPosition != NULL)
  137044             :                   {
  137045             : #if 0
  137046             :                  // Debugging information
  137047             :                     if (operatorPosition->get_parent() == NULL)
  137048             :                        {
  137049             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137050             :                        }
  137051             : #endif
  137052          37 :                     operatorPosition->set_parent(expression);
  137053          37 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  137054             :                   }
  137055             :              }
  137056             :         }
  137057             : 
  137058             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  137059          37 :      SgInitializedName* initializedName = isSgInitializedName(result);
  137060          37 :      if (initializedName != NULL)
  137061             :         {
  137062             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  137063           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  137064           0 :           ROSE_ASSERT(start != NULL);
  137065             : #if 0
  137066             :        // Debugging information
  137067             :           if (start->get_parent() == NULL)
  137068             :              {
  137069             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137070             :              }
  137071             : #endif
  137072           0 :           start->set_parent(initializedName);
  137073           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  137074             : 
  137075             : #if 0
  137076             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  137077             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  137078             : 
  137079             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  137080             :        // ROSE_ASSERT(end != NULL);
  137081             :           if (end == NULL)
  137082             :              {
  137083             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  137084             :              }
  137085             :             else
  137086             :              {
  137087             :                if (end->get_parent() == NULL)
  137088             :                   {
  137089             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137090             :                   }
  137091             :                end->set_parent(initializedName);
  137092             :                ROSE_ASSERT(end->get_parent() != NULL);
  137093             :              }
  137094             : #endif
  137095             :         }
  137096             : 
  137097             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  137098          37 :      help.insertCopiedNodePair(this,result);
  137099             : 
  137100             :   // printf ("End of copy SgMinusOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  137101             : 
  137102             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  137103             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  137104          37 :      help.decrementDepth();
  137105             : 
  137106             :   // Test if this is the root of the copy!
  137107          37 :      if (help.get_depth() == 0)
  137108             :         {
  137109             :        // This is the original calling node.
  137110             : 
  137111             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  137112             :        // printf ("Calling SgMinusOp::fixupCopy() (from root of AST being copied) \n");
  137113             : #if ALT_FIXUP_COPY
  137114             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  137115           1 :           fixupCopy_scopes (result,help);
  137116           1 :           fixupCopy_symbols (result,help);
  137117           1 :           fixupCopy_references (result,help);
  137118             : #else
  137119             :           fixupCopy(result,help);
  137120             : #endif
  137121             :        // Allow this to be called recursively, so accumulate the state.
  137122             :        // Also, clear the state in the SgCopyHelp object.
  137123             :        // help.clearState();
  137124             :         }
  137125             : 
  137126          37 :      return result;
  137127             :    }
  137128             : 
  137129             : 
  137130             : /* #line 137131 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  137131             : 
  137132             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  137133             : 
  137134           0 : SgNode* SgUnaryAddOp::copy ( SgCopyHelp& help) const
  137135             :    {
  137136           0 :      SgUnaryAddOp* result = NULL;
  137137             : 
  137138             :   // printf ("Copy SgUnaryAddOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  137139             : 
  137140             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  137141             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  137142             :   // The default value of the depth is 0, so after this call the depth is 1!
  137143           0 :      help.incrementDepth();
  137144             : 
  137145             : #if 0
  137146             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  137147             :   // but it is not generally true that things can only be copied once!
  137148             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  137149             :   // AstAttribute* existingAttribute = const_cast<SgUnaryAddOp*>(this)->attribute["copied"];
  137150             :      bool previouslyCopied = const_cast<SgUnaryAddOp*>(this)->attribute.exists("copied");
  137151             :      if (previouslyCopied == true)
  137152             :         {
  137153             :           this->get_file_info()->display("Called from copy SgUnaryAddOp: debug");
  137154             :         }
  137155             :      ROSE_ASSERT(previouslyCopied == false);
  137156             : 
  137157             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  137158             :      AstAttribute* newAttribute = new AstAttribute();
  137159             :      ROSE_ASSERT(newAttribute != NULL);
  137160             : 
  137161             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  137162             :      const_cast<SgUnaryAddOp*>(this)->attribute.add("copied",newAttribute);
  137163             : #endif
  137164             : 
  137165             :   // Copy data members from base classes
  137166             :   // Copy constructor parameter data member: startOfConstruct_copy
  137167             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  137168             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  137169           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  137170           0 :      if ( p_startOfConstruct != NULL ) 
  137171             :         { 
  137172           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  137173             :         } 
  137174             :        else 
  137175             :         { 
  137176             :           startOfConstruct_copy = NULL; 
  137177             :         } 
  137178             :   // Copy constructor parameter data member: operand_i_copy
  137179           0 :      SgExpression* operand_i_copy; 
  137180             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  137181           0 :           if (get_operand_i() != NULL) 
  137182             :              { 
  137183           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  137184             :              } 
  137185             :             else 
  137186             :              { 
  137187             :                operand_i_copy = NULL; 
  137188             :              } 
  137189             :   // Copy constructor parameter data member: expression_type_copy
  137190             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  137191             :   // case: toBeCopied == COPY_DATA for expression_type
  137192           0 :      SgType* expression_type_copy = p_expression_type; 
  137193             :  
  137194             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  137195             : 
  137196             :   // Build an empty copy of this object (will be filled in, but 
  137197             :   // the parent can't be set and must be set by the caller)
  137198           0 :      result = new SgUnaryAddOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  137199           0 :      ROSE_ASSERT(result != NULL);
  137200             : 
  137201             :   // Copy data members of "this" class
  137202             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  137203             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  137204             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  137205           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  137206           0 :      if ( p_endOfConstruct != NULL ) 
  137207             :         { 
  137208           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  137209             :         } 
  137210             :        else 
  137211             :         { 
  137212             :           endOfConstruct_copy = NULL; 
  137213             :         } 
  137214             :   /* check for a valid pointer and delete if present */ 
  137215           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  137216             :   /* add assignment to result here */ 
  137217           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  137218             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  137219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  137220             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  137221           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  137222           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  137223             :         { 
  137224           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  137225             :         } 
  137226             :        else 
  137227             :         { 
  137228             :           attachedPreprocessingInfoPtr_copy = NULL; 
  137229             :         } 
  137230             :   /* check for a valid pointer and delete if present */ 
  137231           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  137232             :   /* add assignment to result here */ 
  137233           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  137234             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  137235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  137236             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  137237           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  137238           0 :      if ( p_attributeMechanism != NULL ) 
  137239             :         { 
  137240           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  137241             :         } 
  137242             :        else 
  137243             :         { 
  137244             :           attributeMechanism_copy = NULL; 
  137245             :         } 
  137246             :   /* check for a valid pointer and delete if present */ 
  137247           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  137248             :   /* add assignment to result here */ 
  137249           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  137250             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  137251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  137252             :   // case: toBeCopied == COPY_DATA for need_paren
  137253           0 :      bool need_paren_copy = p_need_paren; 
  137254           0 :      result->p_need_paren = need_paren_copy; 
  137255             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  137256             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  137257             :   // case: toBeCopied == COPY_DATA for lvalue
  137258           0 :      bool lvalue_copy = p_lvalue; 
  137259           0 :      result->p_lvalue = lvalue_copy; 
  137260             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  137261             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  137262             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  137263           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  137264           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  137265             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  137266             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  137267             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  137268           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  137269           0 :      if ( p_operatorPosition != NULL ) 
  137270             :         { 
  137271           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  137272             :         } 
  137273             :        else 
  137274             :         { 
  137275             :           operatorPosition_copy = NULL; 
  137276             :         } 
  137277             :   /* check for a valid pointer and delete if present */ 
  137278           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  137279             :   /* add assignment to result here */ 
  137280           0 :      result->p_operatorPosition = operatorPosition_copy; 
  137281             :   // Copy non-constructor parameter data member (access function): mode_copy
  137282             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  137283             :   // case: toBeCopied == COPY_DATA for mode
  137284           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  137285           0 :      result->p_mode = mode_copy; 
  137286             :   // case: not a listType for (using conditionalToSetParent)operand_i
  137287           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  137288             :              { 
  137289           0 :                operand_i_copy->set_parent(result); 
  137290             :              } 
  137291             : 
  137292             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  137293             : 
  137294             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  137295             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  137296             :   // fixupCopy(result,help);
  137297             : 
  137298             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  137299             :   // the Sg_File_Info objects that are built for the new IR nodes.
  137300           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  137301           0 :      if (locatedNode != NULL)
  137302             :         {
  137303             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  137304           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  137305           0 :           ROSE_ASSERT(start != NULL);
  137306             : #if 0
  137307             :        // Debugging information
  137308             :           if (start->get_parent() == NULL)
  137309             :              {
  137310             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137311             :              }
  137312             : #endif
  137313           0 :           start->set_parent(locatedNode);
  137314           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  137315             : 
  137316           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  137317             : 
  137318             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  137319             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  137320             :        // ROSE_ASSERT(end != NULL);
  137321           0 :           if (end == NULL)
  137322             :              {
  137323           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  137324             :              }
  137325             :             else
  137326             :              {
  137327             : #if 0
  137328             :             // Debugging information
  137329             :                if (end->get_parent() == NULL)
  137330             :                   {
  137331             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137332             :                   }
  137333             : #endif
  137334           0 :                end->set_parent(locatedNode);
  137335           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  137336             :              }
  137337             : 
  137338           0 :           SgExpression* expression = isSgExpression(result);
  137339           0 :           if (isSgExpression(this) != NULL)
  137340             :              {
  137341           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  137342             : 
  137343             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  137344           0 :                if (operatorPosition != NULL)
  137345             :                   {
  137346             : #if 0
  137347             :                  // Debugging information
  137348             :                     if (operatorPosition->get_parent() == NULL)
  137349             :                        {
  137350             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137351             :                        }
  137352             : #endif
  137353           0 :                     operatorPosition->set_parent(expression);
  137354           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  137355             :                   }
  137356             :              }
  137357             :         }
  137358             : 
  137359             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  137360           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  137361           0 :      if (initializedName != NULL)
  137362             :         {
  137363             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  137364           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  137365           0 :           ROSE_ASSERT(start != NULL);
  137366             : #if 0
  137367             :        // Debugging information
  137368             :           if (start->get_parent() == NULL)
  137369             :              {
  137370             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137371             :              }
  137372             : #endif
  137373           0 :           start->set_parent(initializedName);
  137374           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  137375             : 
  137376             : #if 0
  137377             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  137378             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  137379             : 
  137380             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  137381             :        // ROSE_ASSERT(end != NULL);
  137382             :           if (end == NULL)
  137383             :              {
  137384             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  137385             :              }
  137386             :             else
  137387             :              {
  137388             :                if (end->get_parent() == NULL)
  137389             :                   {
  137390             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137391             :                   }
  137392             :                end->set_parent(initializedName);
  137393             :                ROSE_ASSERT(end->get_parent() != NULL);
  137394             :              }
  137395             : #endif
  137396             :         }
  137397             : 
  137398             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  137399           0 :      help.insertCopiedNodePair(this,result);
  137400             : 
  137401             :   // printf ("End of copy SgUnaryAddOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  137402             : 
  137403             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  137404             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  137405           0 :      help.decrementDepth();
  137406             : 
  137407             :   // Test if this is the root of the copy!
  137408           0 :      if (help.get_depth() == 0)
  137409             :         {
  137410             :        // This is the original calling node.
  137411             : 
  137412             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  137413             :        // printf ("Calling SgUnaryAddOp::fixupCopy() (from root of AST being copied) \n");
  137414             : #if ALT_FIXUP_COPY
  137415             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  137416           0 :           fixupCopy_scopes (result,help);
  137417           0 :           fixupCopy_symbols (result,help);
  137418           0 :           fixupCopy_references (result,help);
  137419             : #else
  137420             :           fixupCopy(result,help);
  137421             : #endif
  137422             :        // Allow this to be called recursively, so accumulate the state.
  137423             :        // Also, clear the state in the SgCopyHelp object.
  137424             :        // help.clearState();
  137425             :         }
  137426             : 
  137427           0 :      return result;
  137428             :    }
  137429             : 
  137430             : 
  137431             : /* #line 137432 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  137432             : 
  137433             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  137434             : 
  137435         242 : SgNode* SgNotOp::copy ( SgCopyHelp& help) const
  137436             :    {
  137437         242 :      SgNotOp* result = NULL;
  137438             : 
  137439             :   // printf ("Copy SgNotOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  137440             : 
  137441             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  137442             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  137443             :   // The default value of the depth is 0, so after this call the depth is 1!
  137444         242 :      help.incrementDepth();
  137445             : 
  137446             : #if 0
  137447             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  137448             :   // but it is not generally true that things can only be copied once!
  137449             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  137450             :   // AstAttribute* existingAttribute = const_cast<SgNotOp*>(this)->attribute["copied"];
  137451             :      bool previouslyCopied = const_cast<SgNotOp*>(this)->attribute.exists("copied");
  137452             :      if (previouslyCopied == true)
  137453             :         {
  137454             :           this->get_file_info()->display("Called from copy SgNotOp: debug");
  137455             :         }
  137456             :      ROSE_ASSERT(previouslyCopied == false);
  137457             : 
  137458             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  137459             :      AstAttribute* newAttribute = new AstAttribute();
  137460             :      ROSE_ASSERT(newAttribute != NULL);
  137461             : 
  137462             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  137463             :      const_cast<SgNotOp*>(this)->attribute.add("copied",newAttribute);
  137464             : #endif
  137465             : 
  137466             :   // Copy data members from base classes
  137467             :   // Copy constructor parameter data member: startOfConstruct_copy
  137468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  137469             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  137470         242 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  137471         242 :      if ( p_startOfConstruct != NULL ) 
  137472             :         { 
  137473         242 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  137474             :         } 
  137475             :        else 
  137476             :         { 
  137477             :           startOfConstruct_copy = NULL; 
  137478             :         } 
  137479             :   // Copy constructor parameter data member: operand_i_copy
  137480         242 :      SgExpression* operand_i_copy; 
  137481             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  137482         242 :           if (get_operand_i() != NULL) 
  137483             :              { 
  137484         242 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  137485             :              } 
  137486             :             else 
  137487             :              { 
  137488             :                operand_i_copy = NULL; 
  137489             :              } 
  137490             :   // Copy constructor parameter data member: expression_type_copy
  137491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  137492             :   // case: toBeCopied == COPY_DATA for expression_type
  137493         242 :      SgType* expression_type_copy = p_expression_type; 
  137494             :  
  137495             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  137496             : 
  137497             :   // Build an empty copy of this object (will be filled in, but 
  137498             :   // the parent can't be set and must be set by the caller)
  137499         242 :      result = new SgNotOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  137500         242 :      ROSE_ASSERT(result != NULL);
  137501             : 
  137502             :   // Copy data members of "this" class
  137503             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  137504             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  137505             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  137506         242 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  137507         242 :      if ( p_endOfConstruct != NULL ) 
  137508             :         { 
  137509         242 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  137510             :         } 
  137511             :        else 
  137512             :         { 
  137513             :           endOfConstruct_copy = NULL; 
  137514             :         } 
  137515             :   /* check for a valid pointer and delete if present */ 
  137516         242 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  137517             :   /* add assignment to result here */ 
  137518         242 :      result->p_endOfConstruct = endOfConstruct_copy; 
  137519             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  137520             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  137521             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  137522         242 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  137523         242 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  137524             :         { 
  137525           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  137526             :         } 
  137527             :        else 
  137528             :         { 
  137529             :           attachedPreprocessingInfoPtr_copy = NULL; 
  137530             :         } 
  137531             :   /* check for a valid pointer and delete if present */ 
  137532         242 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  137533             :   /* add assignment to result here */ 
  137534         242 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  137535             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  137536             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  137537             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  137538         242 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  137539         242 :      if ( p_attributeMechanism != NULL ) 
  137540             :         { 
  137541           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  137542             :         } 
  137543             :        else 
  137544             :         { 
  137545             :           attributeMechanism_copy = NULL; 
  137546             :         } 
  137547             :   /* check for a valid pointer and delete if present */ 
  137548         242 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  137549             :   /* add assignment to result here */ 
  137550         242 :      result->p_attributeMechanism = attributeMechanism_copy; 
  137551             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  137552             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  137553             :   // case: toBeCopied == COPY_DATA for need_paren
  137554         242 :      bool need_paren_copy = p_need_paren; 
  137555         242 :      result->p_need_paren = need_paren_copy; 
  137556             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  137557             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  137558             :   // case: toBeCopied == COPY_DATA for lvalue
  137559         242 :      bool lvalue_copy = p_lvalue; 
  137560         242 :      result->p_lvalue = lvalue_copy; 
  137561             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  137562             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  137563             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  137564         242 :      bool global_qualified_name_copy = p_global_qualified_name; 
  137565         242 :      result->p_global_qualified_name = global_qualified_name_copy; 
  137566             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  137567             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  137568             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  137569         242 :      Sg_File_Info* operatorPosition_copy = NULL; 
  137570         242 :      if ( p_operatorPosition != NULL ) 
  137571             :         { 
  137572         242 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  137573             :         } 
  137574             :        else 
  137575             :         { 
  137576             :           operatorPosition_copy = NULL; 
  137577             :         } 
  137578             :   /* check for a valid pointer and delete if present */ 
  137579         242 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  137580             :   /* add assignment to result here */ 
  137581         242 :      result->p_operatorPosition = operatorPosition_copy; 
  137582             :   // Copy non-constructor parameter data member (access function): mode_copy
  137583             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  137584             :   // case: toBeCopied == COPY_DATA for mode
  137585         242 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  137586         242 :      result->p_mode = mode_copy; 
  137587             :   // case: not a listType for (using conditionalToSetParent)operand_i
  137588         242 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  137589             :              { 
  137590           0 :                operand_i_copy->set_parent(result); 
  137591             :              } 
  137592             : 
  137593             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  137594             : 
  137595             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  137596             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  137597             :   // fixupCopy(result,help);
  137598             : 
  137599             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  137600             :   // the Sg_File_Info objects that are built for the new IR nodes.
  137601         242 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  137602         242 :      if (locatedNode != NULL)
  137603             :         {
  137604             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  137605         242 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  137606         242 :           ROSE_ASSERT(start != NULL);
  137607             : #if 0
  137608             :        // Debugging information
  137609             :           if (start->get_parent() == NULL)
  137610             :              {
  137611             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137612             :              }
  137613             : #endif
  137614         242 :           start->set_parent(locatedNode);
  137615         242 :           ROSE_ASSERT(start->get_parent() != NULL);
  137616             : 
  137617         242 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  137618             : 
  137619             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  137620             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  137621             :        // ROSE_ASSERT(end != NULL);
  137622         242 :           if (end == NULL)
  137623             :              {
  137624           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  137625             :              }
  137626             :             else
  137627             :              {
  137628             : #if 0
  137629             :             // Debugging information
  137630             :                if (end->get_parent() == NULL)
  137631             :                   {
  137632             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137633             :                   }
  137634             : #endif
  137635         242 :                end->set_parent(locatedNode);
  137636         242 :                ROSE_ASSERT(end->get_parent() != NULL);
  137637             :              }
  137638             : 
  137639         242 :           SgExpression* expression = isSgExpression(result);
  137640         242 :           if (isSgExpression(this) != NULL)
  137641             :              {
  137642         242 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  137643             : 
  137644             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  137645         242 :                if (operatorPosition != NULL)
  137646             :                   {
  137647             : #if 0
  137648             :                  // Debugging information
  137649             :                     if (operatorPosition->get_parent() == NULL)
  137650             :                        {
  137651             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137652             :                        }
  137653             : #endif
  137654         242 :                     operatorPosition->set_parent(expression);
  137655         242 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  137656             :                   }
  137657             :              }
  137658             :         }
  137659             : 
  137660             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  137661         242 :      SgInitializedName* initializedName = isSgInitializedName(result);
  137662         242 :      if (initializedName != NULL)
  137663             :         {
  137664             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  137665           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  137666           0 :           ROSE_ASSERT(start != NULL);
  137667             : #if 0
  137668             :        // Debugging information
  137669             :           if (start->get_parent() == NULL)
  137670             :              {
  137671             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137672             :              }
  137673             : #endif
  137674           0 :           start->set_parent(initializedName);
  137675           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  137676             : 
  137677             : #if 0
  137678             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  137679             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  137680             : 
  137681             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  137682             :        // ROSE_ASSERT(end != NULL);
  137683             :           if (end == NULL)
  137684             :              {
  137685             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  137686             :              }
  137687             :             else
  137688             :              {
  137689             :                if (end->get_parent() == NULL)
  137690             :                   {
  137691             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137692             :                   }
  137693             :                end->set_parent(initializedName);
  137694             :                ROSE_ASSERT(end->get_parent() != NULL);
  137695             :              }
  137696             : #endif
  137697             :         }
  137698             : 
  137699             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  137700         242 :      help.insertCopiedNodePair(this,result);
  137701             : 
  137702             :   // printf ("End of copy SgNotOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  137703             : 
  137704             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  137705             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  137706         242 :      help.decrementDepth();
  137707             : 
  137708             :   // Test if this is the root of the copy!
  137709         242 :      if (help.get_depth() == 0)
  137710             :         {
  137711             :        // This is the original calling node.
  137712             : 
  137713             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  137714             :        // printf ("Calling SgNotOp::fixupCopy() (from root of AST being copied) \n");
  137715             : #if ALT_FIXUP_COPY
  137716             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  137717          88 :           fixupCopy_scopes (result,help);
  137718          88 :           fixupCopy_symbols (result,help);
  137719          88 :           fixupCopy_references (result,help);
  137720             : #else
  137721             :           fixupCopy(result,help);
  137722             : #endif
  137723             :        // Allow this to be called recursively, so accumulate the state.
  137724             :        // Also, clear the state in the SgCopyHelp object.
  137725             :        // help.clearState();
  137726             :         }
  137727             : 
  137728         242 :      return result;
  137729             :    }
  137730             : 
  137731             : 
  137732             : /* #line 137733 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  137733             : 
  137734             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  137735             : 
  137736          88 : SgNode* SgPointerDerefExp::copy ( SgCopyHelp& help) const
  137737             :    {
  137738          88 :      SgPointerDerefExp* result = NULL;
  137739             : 
  137740             :   // printf ("Copy SgPointerDerefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  137741             : 
  137742             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  137743             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  137744             :   // The default value of the depth is 0, so after this call the depth is 1!
  137745          88 :      help.incrementDepth();
  137746             : 
  137747             : #if 0
  137748             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  137749             :   // but it is not generally true that things can only be copied once!
  137750             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  137751             :   // AstAttribute* existingAttribute = const_cast<SgPointerDerefExp*>(this)->attribute["copied"];
  137752             :      bool previouslyCopied = const_cast<SgPointerDerefExp*>(this)->attribute.exists("copied");
  137753             :      if (previouslyCopied == true)
  137754             :         {
  137755             :           this->get_file_info()->display("Called from copy SgPointerDerefExp: debug");
  137756             :         }
  137757             :      ROSE_ASSERT(previouslyCopied == false);
  137758             : 
  137759             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  137760             :      AstAttribute* newAttribute = new AstAttribute();
  137761             :      ROSE_ASSERT(newAttribute != NULL);
  137762             : 
  137763             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  137764             :      const_cast<SgPointerDerefExp*>(this)->attribute.add("copied",newAttribute);
  137765             : #endif
  137766             : 
  137767             :   // Copy data members from base classes
  137768             :   // Copy constructor parameter data member: startOfConstruct_copy
  137769             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  137770             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  137771          88 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  137772          88 :      if ( p_startOfConstruct != NULL ) 
  137773             :         { 
  137774          88 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  137775             :         } 
  137776             :        else 
  137777             :         { 
  137778             :           startOfConstruct_copy = NULL; 
  137779             :         } 
  137780             :   // Copy constructor parameter data member: operand_i_copy
  137781          88 :      SgExpression* operand_i_copy; 
  137782             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  137783          88 :           if (get_operand_i() != NULL) 
  137784             :              { 
  137785          88 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  137786             :              } 
  137787             :             else 
  137788             :              { 
  137789             :                operand_i_copy = NULL; 
  137790             :              } 
  137791             :   // Copy constructor parameter data member: expression_type_copy
  137792             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  137793             :   // case: toBeCopied == COPY_DATA for expression_type
  137794          88 :      SgType* expression_type_copy = p_expression_type; 
  137795             :  
  137796             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  137797             : 
  137798             :   // Build an empty copy of this object (will be filled in, but 
  137799             :   // the parent can't be set and must be set by the caller)
  137800          88 :      result = new SgPointerDerefExp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  137801          88 :      ROSE_ASSERT(result != NULL);
  137802             : 
  137803             :   // Copy data members of "this" class
  137804             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  137805             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  137806             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  137807          88 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  137808          88 :      if ( p_endOfConstruct != NULL ) 
  137809             :         { 
  137810          88 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  137811             :         } 
  137812             :        else 
  137813             :         { 
  137814             :           endOfConstruct_copy = NULL; 
  137815             :         } 
  137816             :   /* check for a valid pointer and delete if present */ 
  137817          88 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  137818             :   /* add assignment to result here */ 
  137819          88 :      result->p_endOfConstruct = endOfConstruct_copy; 
  137820             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  137821             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  137822             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  137823          88 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  137824          88 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  137825             :         { 
  137826           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  137827             :         } 
  137828             :        else 
  137829             :         { 
  137830             :           attachedPreprocessingInfoPtr_copy = NULL; 
  137831             :         } 
  137832             :   /* check for a valid pointer and delete if present */ 
  137833          88 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  137834             :   /* add assignment to result here */ 
  137835          88 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  137836             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  137837             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  137838             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  137839          88 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  137840          88 :      if ( p_attributeMechanism != NULL ) 
  137841             :         { 
  137842           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  137843             :         } 
  137844             :        else 
  137845             :         { 
  137846             :           attributeMechanism_copy = NULL; 
  137847             :         } 
  137848             :   /* check for a valid pointer and delete if present */ 
  137849          88 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  137850             :   /* add assignment to result here */ 
  137851          88 :      result->p_attributeMechanism = attributeMechanism_copy; 
  137852             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  137853             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  137854             :   // case: toBeCopied == COPY_DATA for need_paren
  137855          88 :      bool need_paren_copy = p_need_paren; 
  137856          88 :      result->p_need_paren = need_paren_copy; 
  137857             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  137858             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  137859             :   // case: toBeCopied == COPY_DATA for lvalue
  137860          88 :      bool lvalue_copy = p_lvalue; 
  137861          88 :      result->p_lvalue = lvalue_copy; 
  137862             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  137863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  137864             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  137865          88 :      bool global_qualified_name_copy = p_global_qualified_name; 
  137866          88 :      result->p_global_qualified_name = global_qualified_name_copy; 
  137867             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  137868             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  137869             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  137870          88 :      Sg_File_Info* operatorPosition_copy = NULL; 
  137871          88 :      if ( p_operatorPosition != NULL ) 
  137872             :         { 
  137873          88 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  137874             :         } 
  137875             :        else 
  137876             :         { 
  137877             :           operatorPosition_copy = NULL; 
  137878             :         } 
  137879             :   /* check for a valid pointer and delete if present */ 
  137880          88 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  137881             :   /* add assignment to result here */ 
  137882          88 :      result->p_operatorPosition = operatorPosition_copy; 
  137883             :   // Copy non-constructor parameter data member (access function): mode_copy
  137884             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  137885             :   // case: toBeCopied == COPY_DATA for mode
  137886          88 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  137887          88 :      result->p_mode = mode_copy; 
  137888             :   // case: not a listType for (using conditionalToSetParent)operand_i
  137889          88 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  137890             :              { 
  137891           0 :                operand_i_copy->set_parent(result); 
  137892             :              } 
  137893             : 
  137894             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  137895             : 
  137896             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  137897             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  137898             :   // fixupCopy(result,help);
  137899             : 
  137900             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  137901             :   // the Sg_File_Info objects that are built for the new IR nodes.
  137902          88 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  137903          88 :      if (locatedNode != NULL)
  137904             :         {
  137905             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  137906          88 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  137907          88 :           ROSE_ASSERT(start != NULL);
  137908             : #if 0
  137909             :        // Debugging information
  137910             :           if (start->get_parent() == NULL)
  137911             :              {
  137912             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137913             :              }
  137914             : #endif
  137915          88 :           start->set_parent(locatedNode);
  137916          88 :           ROSE_ASSERT(start->get_parent() != NULL);
  137917             : 
  137918          88 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  137919             : 
  137920             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  137921             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  137922             :        // ROSE_ASSERT(end != NULL);
  137923          88 :           if (end == NULL)
  137924             :              {
  137925           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  137926             :              }
  137927             :             else
  137928             :              {
  137929             : #if 0
  137930             :             // Debugging information
  137931             :                if (end->get_parent() == NULL)
  137932             :                   {
  137933             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137934             :                   }
  137935             : #endif
  137936          88 :                end->set_parent(locatedNode);
  137937          88 :                ROSE_ASSERT(end->get_parent() != NULL);
  137938             :              }
  137939             : 
  137940          88 :           SgExpression* expression = isSgExpression(result);
  137941          88 :           if (isSgExpression(this) != NULL)
  137942             :              {
  137943          88 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  137944             : 
  137945             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  137946          88 :                if (operatorPosition != NULL)
  137947             :                   {
  137948             : #if 0
  137949             :                  // Debugging information
  137950             :                     if (operatorPosition->get_parent() == NULL)
  137951             :                        {
  137952             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137953             :                        }
  137954             : #endif
  137955          88 :                     operatorPosition->set_parent(expression);
  137956          88 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  137957             :                   }
  137958             :              }
  137959             :         }
  137960             : 
  137961             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  137962          88 :      SgInitializedName* initializedName = isSgInitializedName(result);
  137963          88 :      if (initializedName != NULL)
  137964             :         {
  137965             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  137966           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  137967           0 :           ROSE_ASSERT(start != NULL);
  137968             : #if 0
  137969             :        // Debugging information
  137970             :           if (start->get_parent() == NULL)
  137971             :              {
  137972             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137973             :              }
  137974             : #endif
  137975           0 :           start->set_parent(initializedName);
  137976           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  137977             : 
  137978             : #if 0
  137979             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  137980             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  137981             : 
  137982             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  137983             :        // ROSE_ASSERT(end != NULL);
  137984             :           if (end == NULL)
  137985             :              {
  137986             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  137987             :              }
  137988             :             else
  137989             :              {
  137990             :                if (end->get_parent() == NULL)
  137991             :                   {
  137992             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  137993             :                   }
  137994             :                end->set_parent(initializedName);
  137995             :                ROSE_ASSERT(end->get_parent() != NULL);
  137996             :              }
  137997             : #endif
  137998             :         }
  137999             : 
  138000             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  138001          88 :      help.insertCopiedNodePair(this,result);
  138002             : 
  138003             :   // printf ("End of copy SgPointerDerefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  138004             : 
  138005             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  138006             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  138007          88 :      help.decrementDepth();
  138008             : 
  138009             :   // Test if this is the root of the copy!
  138010          88 :      if (help.get_depth() == 0)
  138011             :         {
  138012             :        // This is the original calling node.
  138013             : 
  138014             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  138015             :        // printf ("Calling SgPointerDerefExp::fixupCopy() (from root of AST being copied) \n");
  138016             : #if ALT_FIXUP_COPY
  138017             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  138018           0 :           fixupCopy_scopes (result,help);
  138019           0 :           fixupCopy_symbols (result,help);
  138020           0 :           fixupCopy_references (result,help);
  138021             : #else
  138022             :           fixupCopy(result,help);
  138023             : #endif
  138024             :        // Allow this to be called recursively, so accumulate the state.
  138025             :        // Also, clear the state in the SgCopyHelp object.
  138026             :        // help.clearState();
  138027             :         }
  138028             : 
  138029          88 :      return result;
  138030             :    }
  138031             : 
  138032             : 
  138033             : /* #line 138034 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  138034             : 
  138035             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138036             : 
  138037          16 : SgNode* SgAddressOfOp::copy ( SgCopyHelp& help) const
  138038             :    {
  138039          16 :      SgAddressOfOp* result = NULL;
  138040             : 
  138041             :   // printf ("Copy SgAddressOfOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  138042             : 
  138043             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  138044             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  138045             :   // The default value of the depth is 0, so after this call the depth is 1!
  138046          16 :      help.incrementDepth();
  138047             : 
  138048             : #if 0
  138049             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  138050             :   // but it is not generally true that things can only be copied once!
  138051             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  138052             :   // AstAttribute* existingAttribute = const_cast<SgAddressOfOp*>(this)->attribute["copied"];
  138053             :      bool previouslyCopied = const_cast<SgAddressOfOp*>(this)->attribute.exists("copied");
  138054             :      if (previouslyCopied == true)
  138055             :         {
  138056             :           this->get_file_info()->display("Called from copy SgAddressOfOp: debug");
  138057             :         }
  138058             :      ROSE_ASSERT(previouslyCopied == false);
  138059             : 
  138060             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  138061             :      AstAttribute* newAttribute = new AstAttribute();
  138062             :      ROSE_ASSERT(newAttribute != NULL);
  138063             : 
  138064             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  138065             :      const_cast<SgAddressOfOp*>(this)->attribute.add("copied",newAttribute);
  138066             : #endif
  138067             : 
  138068             :   // Copy data members from base classes
  138069             :   // Copy constructor parameter data member: startOfConstruct_copy
  138070             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  138071             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  138072          16 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  138073          16 :      if ( p_startOfConstruct != NULL ) 
  138074             :         { 
  138075          16 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  138076             :         } 
  138077             :        else 
  138078             :         { 
  138079             :           startOfConstruct_copy = NULL; 
  138080             :         } 
  138081             :   // Copy constructor parameter data member: operand_i_copy
  138082          16 :      SgExpression* operand_i_copy; 
  138083             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  138084          16 :           if (get_operand_i() != NULL) 
  138085             :              { 
  138086          16 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  138087             :              } 
  138088             :             else 
  138089             :              { 
  138090             :                operand_i_copy = NULL; 
  138091             :              } 
  138092             :   // Copy constructor parameter data member: expression_type_copy
  138093             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  138094             :   // case: toBeCopied == COPY_DATA for expression_type
  138095          16 :      SgType* expression_type_copy = p_expression_type; 
  138096             :  
  138097             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138098             : 
  138099             :   // Build an empty copy of this object (will be filled in, but 
  138100             :   // the parent can't be set and must be set by the caller)
  138101          16 :      result = new SgAddressOfOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  138102          16 :      ROSE_ASSERT(result != NULL);
  138103             : 
  138104             :   // Copy data members of "this" class
  138105             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  138106             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  138107             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  138108          16 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  138109          16 :      if ( p_endOfConstruct != NULL ) 
  138110             :         { 
  138111          16 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  138112             :         } 
  138113             :        else 
  138114             :         { 
  138115             :           endOfConstruct_copy = NULL; 
  138116             :         } 
  138117             :   /* check for a valid pointer and delete if present */ 
  138118          16 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  138119             :   /* add assignment to result here */ 
  138120          16 :      result->p_endOfConstruct = endOfConstruct_copy; 
  138121             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  138122             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  138123             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  138124          16 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  138125          16 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  138126             :         { 
  138127           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  138128             :         } 
  138129             :        else 
  138130             :         { 
  138131             :           attachedPreprocessingInfoPtr_copy = NULL; 
  138132             :         } 
  138133             :   /* check for a valid pointer and delete if present */ 
  138134          16 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  138135             :   /* add assignment to result here */ 
  138136          16 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  138137             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  138138             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  138139             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  138140          16 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  138141          16 :      if ( p_attributeMechanism != NULL ) 
  138142             :         { 
  138143           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  138144             :         } 
  138145             :        else 
  138146             :         { 
  138147             :           attributeMechanism_copy = NULL; 
  138148             :         } 
  138149             :   /* check for a valid pointer and delete if present */ 
  138150          16 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  138151             :   /* add assignment to result here */ 
  138152          16 :      result->p_attributeMechanism = attributeMechanism_copy; 
  138153             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  138154             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  138155             :   // case: toBeCopied == COPY_DATA for need_paren
  138156          16 :      bool need_paren_copy = p_need_paren; 
  138157          16 :      result->p_need_paren = need_paren_copy; 
  138158             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  138159             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  138160             :   // case: toBeCopied == COPY_DATA for lvalue
  138161          16 :      bool lvalue_copy = p_lvalue; 
  138162          16 :      result->p_lvalue = lvalue_copy; 
  138163             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  138164             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  138165             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  138166          16 :      bool global_qualified_name_copy = p_global_qualified_name; 
  138167          16 :      result->p_global_qualified_name = global_qualified_name_copy; 
  138168             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  138169             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  138170             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  138171          16 :      Sg_File_Info* operatorPosition_copy = NULL; 
  138172          16 :      if ( p_operatorPosition != NULL ) 
  138173             :         { 
  138174          16 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  138175             :         } 
  138176             :        else 
  138177             :         { 
  138178             :           operatorPosition_copy = NULL; 
  138179             :         } 
  138180             :   /* check for a valid pointer and delete if present */ 
  138181          16 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  138182             :   /* add assignment to result here */ 
  138183          16 :      result->p_operatorPosition = operatorPosition_copy; 
  138184             :   // Copy non-constructor parameter data member (access function): mode_copy
  138185             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  138186             :   // case: toBeCopied == COPY_DATA for mode
  138187          16 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  138188          16 :      result->p_mode = mode_copy; 
  138189             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  138190             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  138191             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  138192          16 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  138193          16 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  138194             :   // case: not a listType for (using conditionalToSetParent)operand_i
  138195          16 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  138196             :              { 
  138197           0 :                operand_i_copy->set_parent(result); 
  138198             :              } 
  138199             : 
  138200             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138201             : 
  138202             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  138203             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  138204             :   // fixupCopy(result,help);
  138205             : 
  138206             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  138207             :   // the Sg_File_Info objects that are built for the new IR nodes.
  138208          16 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  138209          16 :      if (locatedNode != NULL)
  138210             :         {
  138211             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  138212          16 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  138213          16 :           ROSE_ASSERT(start != NULL);
  138214             : #if 0
  138215             :        // Debugging information
  138216             :           if (start->get_parent() == NULL)
  138217             :              {
  138218             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138219             :              }
  138220             : #endif
  138221          16 :           start->set_parent(locatedNode);
  138222          16 :           ROSE_ASSERT(start->get_parent() != NULL);
  138223             : 
  138224          16 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  138225             : 
  138226             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  138227             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  138228             :        // ROSE_ASSERT(end != NULL);
  138229          16 :           if (end == NULL)
  138230             :              {
  138231           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  138232             :              }
  138233             :             else
  138234             :              {
  138235             : #if 0
  138236             :             // Debugging information
  138237             :                if (end->get_parent() == NULL)
  138238             :                   {
  138239             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138240             :                   }
  138241             : #endif
  138242          16 :                end->set_parent(locatedNode);
  138243          16 :                ROSE_ASSERT(end->get_parent() != NULL);
  138244             :              }
  138245             : 
  138246          16 :           SgExpression* expression = isSgExpression(result);
  138247          16 :           if (isSgExpression(this) != NULL)
  138248             :              {
  138249          16 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  138250             : 
  138251             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  138252          16 :                if (operatorPosition != NULL)
  138253             :                   {
  138254             : #if 0
  138255             :                  // Debugging information
  138256             :                     if (operatorPosition->get_parent() == NULL)
  138257             :                        {
  138258             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138259             :                        }
  138260             : #endif
  138261          16 :                     operatorPosition->set_parent(expression);
  138262          16 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  138263             :                   }
  138264             :              }
  138265             :         }
  138266             : 
  138267             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  138268          16 :      SgInitializedName* initializedName = isSgInitializedName(result);
  138269          16 :      if (initializedName != NULL)
  138270             :         {
  138271             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  138272           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  138273           0 :           ROSE_ASSERT(start != NULL);
  138274             : #if 0
  138275             :        // Debugging information
  138276             :           if (start->get_parent() == NULL)
  138277             :              {
  138278             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138279             :              }
  138280             : #endif
  138281           0 :           start->set_parent(initializedName);
  138282           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  138283             : 
  138284             : #if 0
  138285             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  138286             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  138287             : 
  138288             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  138289             :        // ROSE_ASSERT(end != NULL);
  138290             :           if (end == NULL)
  138291             :              {
  138292             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  138293             :              }
  138294             :             else
  138295             :              {
  138296             :                if (end->get_parent() == NULL)
  138297             :                   {
  138298             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138299             :                   }
  138300             :                end->set_parent(initializedName);
  138301             :                ROSE_ASSERT(end->get_parent() != NULL);
  138302             :              }
  138303             : #endif
  138304             :         }
  138305             : 
  138306             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  138307          16 :      help.insertCopiedNodePair(this,result);
  138308             : 
  138309             :   // printf ("End of copy SgAddressOfOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  138310             : 
  138311             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  138312             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  138313          16 :      help.decrementDepth();
  138314             : 
  138315             :   // Test if this is the root of the copy!
  138316          16 :      if (help.get_depth() == 0)
  138317             :         {
  138318             :        // This is the original calling node.
  138319             : 
  138320             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  138321             :        // printf ("Calling SgAddressOfOp::fixupCopy() (from root of AST being copied) \n");
  138322             : #if ALT_FIXUP_COPY
  138323             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  138324           0 :           fixupCopy_scopes (result,help);
  138325           0 :           fixupCopy_symbols (result,help);
  138326           0 :           fixupCopy_references (result,help);
  138327             : #else
  138328             :           fixupCopy(result,help);
  138329             : #endif
  138330             :        // Allow this to be called recursively, so accumulate the state.
  138331             :        // Also, clear the state in the SgCopyHelp object.
  138332             :        // help.clearState();
  138333             :         }
  138334             : 
  138335          16 :      return result;
  138336             :    }
  138337             : 
  138338             : 
  138339             : /* #line 138340 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  138340             : 
  138341             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138342             : 
  138343          10 : SgNode* SgMinusMinusOp::copy ( SgCopyHelp& help) const
  138344             :    {
  138345          10 :      SgMinusMinusOp* result = NULL;
  138346             : 
  138347             :   // printf ("Copy SgMinusMinusOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  138348             : 
  138349             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  138350             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  138351             :   // The default value of the depth is 0, so after this call the depth is 1!
  138352          10 :      help.incrementDepth();
  138353             : 
  138354             : #if 0
  138355             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  138356             :   // but it is not generally true that things can only be copied once!
  138357             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  138358             :   // AstAttribute* existingAttribute = const_cast<SgMinusMinusOp*>(this)->attribute["copied"];
  138359             :      bool previouslyCopied = const_cast<SgMinusMinusOp*>(this)->attribute.exists("copied");
  138360             :      if (previouslyCopied == true)
  138361             :         {
  138362             :           this->get_file_info()->display("Called from copy SgMinusMinusOp: debug");
  138363             :         }
  138364             :      ROSE_ASSERT(previouslyCopied == false);
  138365             : 
  138366             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  138367             :      AstAttribute* newAttribute = new AstAttribute();
  138368             :      ROSE_ASSERT(newAttribute != NULL);
  138369             : 
  138370             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  138371             :      const_cast<SgMinusMinusOp*>(this)->attribute.add("copied",newAttribute);
  138372             : #endif
  138373             : 
  138374             :   // Copy data members from base classes
  138375             :   // Copy constructor parameter data member: startOfConstruct_copy
  138376             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  138377             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  138378          10 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  138379          10 :      if ( p_startOfConstruct != NULL ) 
  138380             :         { 
  138381          10 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  138382             :         } 
  138383             :        else 
  138384             :         { 
  138385             :           startOfConstruct_copy = NULL; 
  138386             :         } 
  138387             :   // Copy constructor parameter data member: operand_i_copy
  138388          10 :      SgExpression* operand_i_copy; 
  138389             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  138390          10 :           if (get_operand_i() != NULL) 
  138391             :              { 
  138392          10 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  138393             :              } 
  138394             :             else 
  138395             :              { 
  138396             :                operand_i_copy = NULL; 
  138397             :              } 
  138398             :   // Copy constructor parameter data member: expression_type_copy
  138399             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  138400             :   // case: toBeCopied == COPY_DATA for expression_type
  138401          10 :      SgType* expression_type_copy = p_expression_type; 
  138402             :  
  138403             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138404             : 
  138405             :   // Build an empty copy of this object (will be filled in, but 
  138406             :   // the parent can't be set and must be set by the caller)
  138407          10 :      result = new SgMinusMinusOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  138408          10 :      ROSE_ASSERT(result != NULL);
  138409             : 
  138410             :   // Copy data members of "this" class
  138411             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  138412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  138413             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  138414          10 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  138415          10 :      if ( p_endOfConstruct != NULL ) 
  138416             :         { 
  138417          10 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  138418             :         } 
  138419             :        else 
  138420             :         { 
  138421             :           endOfConstruct_copy = NULL; 
  138422             :         } 
  138423             :   /* check for a valid pointer and delete if present */ 
  138424          10 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  138425             :   /* add assignment to result here */ 
  138426          10 :      result->p_endOfConstruct = endOfConstruct_copy; 
  138427             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  138428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  138429             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  138430          10 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  138431          10 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  138432             :         { 
  138433           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  138434             :         } 
  138435             :        else 
  138436             :         { 
  138437             :           attachedPreprocessingInfoPtr_copy = NULL; 
  138438             :         } 
  138439             :   /* check for a valid pointer and delete if present */ 
  138440          10 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  138441             :   /* add assignment to result here */ 
  138442          10 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  138443             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  138444             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  138445             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  138446          10 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  138447          10 :      if ( p_attributeMechanism != NULL ) 
  138448             :         { 
  138449           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  138450             :         } 
  138451             :        else 
  138452             :         { 
  138453             :           attributeMechanism_copy = NULL; 
  138454             :         } 
  138455             :   /* check for a valid pointer and delete if present */ 
  138456          10 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  138457             :   /* add assignment to result here */ 
  138458          10 :      result->p_attributeMechanism = attributeMechanism_copy; 
  138459             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  138460             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  138461             :   // case: toBeCopied == COPY_DATA for need_paren
  138462          10 :      bool need_paren_copy = p_need_paren; 
  138463          10 :      result->p_need_paren = need_paren_copy; 
  138464             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  138465             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  138466             :   // case: toBeCopied == COPY_DATA for lvalue
  138467          10 :      bool lvalue_copy = p_lvalue; 
  138468          10 :      result->p_lvalue = lvalue_copy; 
  138469             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  138470             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  138471             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  138472          10 :      bool global_qualified_name_copy = p_global_qualified_name; 
  138473          10 :      result->p_global_qualified_name = global_qualified_name_copy; 
  138474             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  138475             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  138476             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  138477          10 :      Sg_File_Info* operatorPosition_copy = NULL; 
  138478          10 :      if ( p_operatorPosition != NULL ) 
  138479             :         { 
  138480          10 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  138481             :         } 
  138482             :        else 
  138483             :         { 
  138484             :           operatorPosition_copy = NULL; 
  138485             :         } 
  138486             :   /* check for a valid pointer and delete if present */ 
  138487          10 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  138488             :   /* add assignment to result here */ 
  138489          10 :      result->p_operatorPosition = operatorPosition_copy; 
  138490             :   // Copy non-constructor parameter data member (access function): mode_copy
  138491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  138492             :   // case: toBeCopied == COPY_DATA for mode
  138493          10 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  138494          10 :      result->p_mode = mode_copy; 
  138495             :   // case: not a listType for (using conditionalToSetParent)operand_i
  138496          10 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  138497             :              { 
  138498           0 :                operand_i_copy->set_parent(result); 
  138499             :              } 
  138500             : 
  138501             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138502             : 
  138503             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  138504             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  138505             :   // fixupCopy(result,help);
  138506             : 
  138507             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  138508             :   // the Sg_File_Info objects that are built for the new IR nodes.
  138509          10 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  138510          10 :      if (locatedNode != NULL)
  138511             :         {
  138512             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  138513          10 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  138514          10 :           ROSE_ASSERT(start != NULL);
  138515             : #if 0
  138516             :        // Debugging information
  138517             :           if (start->get_parent() == NULL)
  138518             :              {
  138519             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138520             :              }
  138521             : #endif
  138522          10 :           start->set_parent(locatedNode);
  138523          10 :           ROSE_ASSERT(start->get_parent() != NULL);
  138524             : 
  138525          10 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  138526             : 
  138527             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  138528             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  138529             :        // ROSE_ASSERT(end != NULL);
  138530          10 :           if (end == NULL)
  138531             :              {
  138532           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  138533             :              }
  138534             :             else
  138535             :              {
  138536             : #if 0
  138537             :             // Debugging information
  138538             :                if (end->get_parent() == NULL)
  138539             :                   {
  138540             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138541             :                   }
  138542             : #endif
  138543          10 :                end->set_parent(locatedNode);
  138544          10 :                ROSE_ASSERT(end->get_parent() != NULL);
  138545             :              }
  138546             : 
  138547          10 :           SgExpression* expression = isSgExpression(result);
  138548          10 :           if (isSgExpression(this) != NULL)
  138549             :              {
  138550          10 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  138551             : 
  138552             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  138553          10 :                if (operatorPosition != NULL)
  138554             :                   {
  138555             : #if 0
  138556             :                  // Debugging information
  138557             :                     if (operatorPosition->get_parent() == NULL)
  138558             :                        {
  138559             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138560             :                        }
  138561             : #endif
  138562          10 :                     operatorPosition->set_parent(expression);
  138563          10 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  138564             :                   }
  138565             :              }
  138566             :         }
  138567             : 
  138568             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  138569          10 :      SgInitializedName* initializedName = isSgInitializedName(result);
  138570          10 :      if (initializedName != NULL)
  138571             :         {
  138572             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  138573           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  138574           0 :           ROSE_ASSERT(start != NULL);
  138575             : #if 0
  138576             :        // Debugging information
  138577             :           if (start->get_parent() == NULL)
  138578             :              {
  138579             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138580             :              }
  138581             : #endif
  138582           0 :           start->set_parent(initializedName);
  138583           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  138584             : 
  138585             : #if 0
  138586             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  138587             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  138588             : 
  138589             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  138590             :        // ROSE_ASSERT(end != NULL);
  138591             :           if (end == NULL)
  138592             :              {
  138593             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  138594             :              }
  138595             :             else
  138596             :              {
  138597             :                if (end->get_parent() == NULL)
  138598             :                   {
  138599             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138600             :                   }
  138601             :                end->set_parent(initializedName);
  138602             :                ROSE_ASSERT(end->get_parent() != NULL);
  138603             :              }
  138604             : #endif
  138605             :         }
  138606             : 
  138607             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  138608          10 :      help.insertCopiedNodePair(this,result);
  138609             : 
  138610             :   // printf ("End of copy SgMinusMinusOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  138611             : 
  138612             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  138613             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  138614          10 :      help.decrementDepth();
  138615             : 
  138616             :   // Test if this is the root of the copy!
  138617          10 :      if (help.get_depth() == 0)
  138618             :         {
  138619             :        // This is the original calling node.
  138620             : 
  138621             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  138622             :        // printf ("Calling SgMinusMinusOp::fixupCopy() (from root of AST being copied) \n");
  138623             : #if ALT_FIXUP_COPY
  138624             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  138625           0 :           fixupCopy_scopes (result,help);
  138626           0 :           fixupCopy_symbols (result,help);
  138627           0 :           fixupCopy_references (result,help);
  138628             : #else
  138629             :           fixupCopy(result,help);
  138630             : #endif
  138631             :        // Allow this to be called recursively, so accumulate the state.
  138632             :        // Also, clear the state in the SgCopyHelp object.
  138633             :        // help.clearState();
  138634             :         }
  138635             : 
  138636          10 :      return result;
  138637             :    }
  138638             : 
  138639             : 
  138640             : /* #line 138641 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  138641             : 
  138642             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138643             : 
  138644          22 : SgNode* SgPlusPlusOp::copy ( SgCopyHelp& help) const
  138645             :    {
  138646          22 :      SgPlusPlusOp* result = NULL;
  138647             : 
  138648             :   // printf ("Copy SgPlusPlusOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  138649             : 
  138650             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  138651             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  138652             :   // The default value of the depth is 0, so after this call the depth is 1!
  138653          22 :      help.incrementDepth();
  138654             : 
  138655             : #if 0
  138656             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  138657             :   // but it is not generally true that things can only be copied once!
  138658             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  138659             :   // AstAttribute* existingAttribute = const_cast<SgPlusPlusOp*>(this)->attribute["copied"];
  138660             :      bool previouslyCopied = const_cast<SgPlusPlusOp*>(this)->attribute.exists("copied");
  138661             :      if (previouslyCopied == true)
  138662             :         {
  138663             :           this->get_file_info()->display("Called from copy SgPlusPlusOp: debug");
  138664             :         }
  138665             :      ROSE_ASSERT(previouslyCopied == false);
  138666             : 
  138667             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  138668             :      AstAttribute* newAttribute = new AstAttribute();
  138669             :      ROSE_ASSERT(newAttribute != NULL);
  138670             : 
  138671             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  138672             :      const_cast<SgPlusPlusOp*>(this)->attribute.add("copied",newAttribute);
  138673             : #endif
  138674             : 
  138675             :   // Copy data members from base classes
  138676             :   // Copy constructor parameter data member: startOfConstruct_copy
  138677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  138678             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  138679          22 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  138680          22 :      if ( p_startOfConstruct != NULL ) 
  138681             :         { 
  138682          22 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  138683             :         } 
  138684             :        else 
  138685             :         { 
  138686             :           startOfConstruct_copy = NULL; 
  138687             :         } 
  138688             :   // Copy constructor parameter data member: operand_i_copy
  138689          22 :      SgExpression* operand_i_copy; 
  138690             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  138691          22 :           if (get_operand_i() != NULL) 
  138692             :              { 
  138693          22 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  138694             :              } 
  138695             :             else 
  138696             :              { 
  138697             :                operand_i_copy = NULL; 
  138698             :              } 
  138699             :   // Copy constructor parameter data member: expression_type_copy
  138700             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  138701             :   // case: toBeCopied == COPY_DATA for expression_type
  138702          22 :      SgType* expression_type_copy = p_expression_type; 
  138703             :  
  138704             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138705             : 
  138706             :   // Build an empty copy of this object (will be filled in, but 
  138707             :   // the parent can't be set and must be set by the caller)
  138708          22 :      result = new SgPlusPlusOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  138709          22 :      ROSE_ASSERT(result != NULL);
  138710             : 
  138711             :   // Copy data members of "this" class
  138712             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  138713             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  138714             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  138715          22 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  138716          22 :      if ( p_endOfConstruct != NULL ) 
  138717             :         { 
  138718          22 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  138719             :         } 
  138720             :        else 
  138721             :         { 
  138722             :           endOfConstruct_copy = NULL; 
  138723             :         } 
  138724             :   /* check for a valid pointer and delete if present */ 
  138725          22 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  138726             :   /* add assignment to result here */ 
  138727          22 :      result->p_endOfConstruct = endOfConstruct_copy; 
  138728             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  138729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  138730             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  138731          22 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  138732          22 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  138733             :         { 
  138734           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  138735             :         } 
  138736             :        else 
  138737             :         { 
  138738             :           attachedPreprocessingInfoPtr_copy = NULL; 
  138739             :         } 
  138740             :   /* check for a valid pointer and delete if present */ 
  138741          22 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  138742             :   /* add assignment to result here */ 
  138743          22 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  138744             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  138745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  138746             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  138747          22 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  138748          22 :      if ( p_attributeMechanism != NULL ) 
  138749             :         { 
  138750           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  138751             :         } 
  138752             :        else 
  138753             :         { 
  138754             :           attributeMechanism_copy = NULL; 
  138755             :         } 
  138756             :   /* check for a valid pointer and delete if present */ 
  138757          22 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  138758             :   /* add assignment to result here */ 
  138759          22 :      result->p_attributeMechanism = attributeMechanism_copy; 
  138760             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  138761             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  138762             :   // case: toBeCopied == COPY_DATA for need_paren
  138763          22 :      bool need_paren_copy = p_need_paren; 
  138764          22 :      result->p_need_paren = need_paren_copy; 
  138765             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  138766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  138767             :   // case: toBeCopied == COPY_DATA for lvalue
  138768          22 :      bool lvalue_copy = p_lvalue; 
  138769          22 :      result->p_lvalue = lvalue_copy; 
  138770             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  138771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  138772             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  138773          22 :      bool global_qualified_name_copy = p_global_qualified_name; 
  138774          22 :      result->p_global_qualified_name = global_qualified_name_copy; 
  138775             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  138776             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  138777             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  138778          22 :      Sg_File_Info* operatorPosition_copy = NULL; 
  138779          22 :      if ( p_operatorPosition != NULL ) 
  138780             :         { 
  138781          22 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  138782             :         } 
  138783             :        else 
  138784             :         { 
  138785             :           operatorPosition_copy = NULL; 
  138786             :         } 
  138787             :   /* check for a valid pointer and delete if present */ 
  138788          22 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  138789             :   /* add assignment to result here */ 
  138790          22 :      result->p_operatorPosition = operatorPosition_copy; 
  138791             :   // Copy non-constructor parameter data member (access function): mode_copy
  138792             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  138793             :   // case: toBeCopied == COPY_DATA for mode
  138794          22 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  138795          22 :      result->p_mode = mode_copy; 
  138796             :   // case: not a listType for (using conditionalToSetParent)operand_i
  138797          22 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  138798             :              { 
  138799           0 :                operand_i_copy->set_parent(result); 
  138800             :              } 
  138801             : 
  138802             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138803             : 
  138804             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  138805             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  138806             :   // fixupCopy(result,help);
  138807             : 
  138808             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  138809             :   // the Sg_File_Info objects that are built for the new IR nodes.
  138810          22 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  138811          22 :      if (locatedNode != NULL)
  138812             :         {
  138813             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  138814          22 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  138815          22 :           ROSE_ASSERT(start != NULL);
  138816             : #if 0
  138817             :        // Debugging information
  138818             :           if (start->get_parent() == NULL)
  138819             :              {
  138820             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138821             :              }
  138822             : #endif
  138823          22 :           start->set_parent(locatedNode);
  138824          22 :           ROSE_ASSERT(start->get_parent() != NULL);
  138825             : 
  138826          22 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  138827             : 
  138828             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  138829             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  138830             :        // ROSE_ASSERT(end != NULL);
  138831          22 :           if (end == NULL)
  138832             :              {
  138833           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  138834             :              }
  138835             :             else
  138836             :              {
  138837             : #if 0
  138838             :             // Debugging information
  138839             :                if (end->get_parent() == NULL)
  138840             :                   {
  138841             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138842             :                   }
  138843             : #endif
  138844          22 :                end->set_parent(locatedNode);
  138845          22 :                ROSE_ASSERT(end->get_parent() != NULL);
  138846             :              }
  138847             : 
  138848          22 :           SgExpression* expression = isSgExpression(result);
  138849          22 :           if (isSgExpression(this) != NULL)
  138850             :              {
  138851          22 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  138852             : 
  138853             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  138854          22 :                if (operatorPosition != NULL)
  138855             :                   {
  138856             : #if 0
  138857             :                  // Debugging information
  138858             :                     if (operatorPosition->get_parent() == NULL)
  138859             :                        {
  138860             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138861             :                        }
  138862             : #endif
  138863          22 :                     operatorPosition->set_parent(expression);
  138864          22 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  138865             :                   }
  138866             :              }
  138867             :         }
  138868             : 
  138869             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  138870          22 :      SgInitializedName* initializedName = isSgInitializedName(result);
  138871          22 :      if (initializedName != NULL)
  138872             :         {
  138873             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  138874           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  138875           0 :           ROSE_ASSERT(start != NULL);
  138876             : #if 0
  138877             :        // Debugging information
  138878             :           if (start->get_parent() == NULL)
  138879             :              {
  138880             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138881             :              }
  138882             : #endif
  138883           0 :           start->set_parent(initializedName);
  138884           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  138885             : 
  138886             : #if 0
  138887             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  138888             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  138889             : 
  138890             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  138891             :        // ROSE_ASSERT(end != NULL);
  138892             :           if (end == NULL)
  138893             :              {
  138894             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  138895             :              }
  138896             :             else
  138897             :              {
  138898             :                if (end->get_parent() == NULL)
  138899             :                   {
  138900             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  138901             :                   }
  138902             :                end->set_parent(initializedName);
  138903             :                ROSE_ASSERT(end->get_parent() != NULL);
  138904             :              }
  138905             : #endif
  138906             :         }
  138907             : 
  138908             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  138909          22 :      help.insertCopiedNodePair(this,result);
  138910             : 
  138911             :   // printf ("End of copy SgPlusPlusOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  138912             : 
  138913             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  138914             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  138915          22 :      help.decrementDepth();
  138916             : 
  138917             :   // Test if this is the root of the copy!
  138918          22 :      if (help.get_depth() == 0)
  138919             :         {
  138920             :        // This is the original calling node.
  138921             : 
  138922             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  138923             :        // printf ("Calling SgPlusPlusOp::fixupCopy() (from root of AST being copied) \n");
  138924             : #if ALT_FIXUP_COPY
  138925             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  138926           0 :           fixupCopy_scopes (result,help);
  138927           0 :           fixupCopy_symbols (result,help);
  138928           0 :           fixupCopy_references (result,help);
  138929             : #else
  138930             :           fixupCopy(result,help);
  138931             : #endif
  138932             :        // Allow this to be called recursively, so accumulate the state.
  138933             :        // Also, clear the state in the SgCopyHelp object.
  138934             :        // help.clearState();
  138935             :         }
  138936             : 
  138937          22 :      return result;
  138938             :    }
  138939             : 
  138940             : 
  138941             : /* #line 138942 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  138942             : 
  138943             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  138944             : 
  138945           0 : SgNode* SgBitComplementOp::copy ( SgCopyHelp& help) const
  138946             :    {
  138947           0 :      SgBitComplementOp* result = NULL;
  138948             : 
  138949             :   // printf ("Copy SgBitComplementOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  138950             : 
  138951             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  138952             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  138953             :   // The default value of the depth is 0, so after this call the depth is 1!
  138954           0 :      help.incrementDepth();
  138955             : 
  138956             : #if 0
  138957             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  138958             :   // but it is not generally true that things can only be copied once!
  138959             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  138960             :   // AstAttribute* existingAttribute = const_cast<SgBitComplementOp*>(this)->attribute["copied"];
  138961             :      bool previouslyCopied = const_cast<SgBitComplementOp*>(this)->attribute.exists("copied");
  138962             :      if (previouslyCopied == true)
  138963             :         {
  138964             :           this->get_file_info()->display("Called from copy SgBitComplementOp: debug");
  138965             :         }
  138966             :      ROSE_ASSERT(previouslyCopied == false);
  138967             : 
  138968             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  138969             :      AstAttribute* newAttribute = new AstAttribute();
  138970             :      ROSE_ASSERT(newAttribute != NULL);
  138971             : 
  138972             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  138973             :      const_cast<SgBitComplementOp*>(this)->attribute.add("copied",newAttribute);
  138974             : #endif
  138975             : 
  138976             :   // Copy data members from base classes
  138977             :   // Copy constructor parameter data member: startOfConstruct_copy
  138978             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  138979             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  138980           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  138981           0 :      if ( p_startOfConstruct != NULL ) 
  138982             :         { 
  138983           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  138984             :         } 
  138985             :        else 
  138986             :         { 
  138987             :           startOfConstruct_copy = NULL; 
  138988             :         } 
  138989             :   // Copy constructor parameter data member: operand_i_copy
  138990           0 :      SgExpression* operand_i_copy; 
  138991             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  138992           0 :           if (get_operand_i() != NULL) 
  138993             :              { 
  138994           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  138995             :              } 
  138996             :             else 
  138997             :              { 
  138998             :                operand_i_copy = NULL; 
  138999             :              } 
  139000             :   // Copy constructor parameter data member: expression_type_copy
  139001             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  139002             :   // case: toBeCopied == COPY_DATA for expression_type
  139003           0 :      SgType* expression_type_copy = p_expression_type; 
  139004             :  
  139005             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139006             : 
  139007             :   // Build an empty copy of this object (will be filled in, but 
  139008             :   // the parent can't be set and must be set by the caller)
  139009           0 :      result = new SgBitComplementOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  139010           0 :      ROSE_ASSERT(result != NULL);
  139011             : 
  139012             :   // Copy data members of "this" class
  139013             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  139014             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  139015             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  139016           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  139017           0 :      if ( p_endOfConstruct != NULL ) 
  139018             :         { 
  139019           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  139020             :         } 
  139021             :        else 
  139022             :         { 
  139023             :           endOfConstruct_copy = NULL; 
  139024             :         } 
  139025             :   /* check for a valid pointer and delete if present */ 
  139026           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  139027             :   /* add assignment to result here */ 
  139028           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  139029             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  139030             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  139031             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  139032           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  139033           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  139034             :         { 
  139035           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  139036             :         } 
  139037             :        else 
  139038             :         { 
  139039             :           attachedPreprocessingInfoPtr_copy = NULL; 
  139040             :         } 
  139041             :   /* check for a valid pointer and delete if present */ 
  139042           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  139043             :   /* add assignment to result here */ 
  139044           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  139045             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  139046             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  139047             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  139048           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  139049           0 :      if ( p_attributeMechanism != NULL ) 
  139050             :         { 
  139051           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  139052             :         } 
  139053             :        else 
  139054             :         { 
  139055             :           attributeMechanism_copy = NULL; 
  139056             :         } 
  139057             :   /* check for a valid pointer and delete if present */ 
  139058           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  139059             :   /* add assignment to result here */ 
  139060           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  139061             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  139062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  139063             :   // case: toBeCopied == COPY_DATA for need_paren
  139064           0 :      bool need_paren_copy = p_need_paren; 
  139065           0 :      result->p_need_paren = need_paren_copy; 
  139066             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  139067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  139068             :   // case: toBeCopied == COPY_DATA for lvalue
  139069           0 :      bool lvalue_copy = p_lvalue; 
  139070           0 :      result->p_lvalue = lvalue_copy; 
  139071             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  139072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  139073             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  139074           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  139075           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  139076             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  139077             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  139078             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  139079           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  139080           0 :      if ( p_operatorPosition != NULL ) 
  139081             :         { 
  139082           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  139083             :         } 
  139084             :        else 
  139085             :         { 
  139086             :           operatorPosition_copy = NULL; 
  139087             :         } 
  139088             :   /* check for a valid pointer and delete if present */ 
  139089           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  139090             :   /* add assignment to result here */ 
  139091           0 :      result->p_operatorPosition = operatorPosition_copy; 
  139092             :   // Copy non-constructor parameter data member (access function): mode_copy
  139093             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  139094             :   // case: toBeCopied == COPY_DATA for mode
  139095           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  139096           0 :      result->p_mode = mode_copy; 
  139097             :   // case: not a listType for (using conditionalToSetParent)operand_i
  139098           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  139099             :              { 
  139100           0 :                operand_i_copy->set_parent(result); 
  139101             :              } 
  139102             : 
  139103             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139104             : 
  139105             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  139106             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  139107             :   // fixupCopy(result,help);
  139108             : 
  139109             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  139110             :   // the Sg_File_Info objects that are built for the new IR nodes.
  139111           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  139112           0 :      if (locatedNode != NULL)
  139113             :         {
  139114             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  139115           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  139116           0 :           ROSE_ASSERT(start != NULL);
  139117             : #if 0
  139118             :        // Debugging information
  139119             :           if (start->get_parent() == NULL)
  139120             :              {
  139121             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139122             :              }
  139123             : #endif
  139124           0 :           start->set_parent(locatedNode);
  139125           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  139126             : 
  139127           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  139128             : 
  139129             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  139130             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  139131             :        // ROSE_ASSERT(end != NULL);
  139132           0 :           if (end == NULL)
  139133             :              {
  139134           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  139135             :              }
  139136             :             else
  139137             :              {
  139138             : #if 0
  139139             :             // Debugging information
  139140             :                if (end->get_parent() == NULL)
  139141             :                   {
  139142             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139143             :                   }
  139144             : #endif
  139145           0 :                end->set_parent(locatedNode);
  139146           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  139147             :              }
  139148             : 
  139149           0 :           SgExpression* expression = isSgExpression(result);
  139150           0 :           if (isSgExpression(this) != NULL)
  139151             :              {
  139152           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  139153             : 
  139154             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  139155           0 :                if (operatorPosition != NULL)
  139156             :                   {
  139157             : #if 0
  139158             :                  // Debugging information
  139159             :                     if (operatorPosition->get_parent() == NULL)
  139160             :                        {
  139161             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139162             :                        }
  139163             : #endif
  139164           0 :                     operatorPosition->set_parent(expression);
  139165           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  139166             :                   }
  139167             :              }
  139168             :         }
  139169             : 
  139170             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  139171           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  139172           0 :      if (initializedName != NULL)
  139173             :         {
  139174             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  139175           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  139176           0 :           ROSE_ASSERT(start != NULL);
  139177             : #if 0
  139178             :        // Debugging information
  139179             :           if (start->get_parent() == NULL)
  139180             :              {
  139181             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139182             :              }
  139183             : #endif
  139184           0 :           start->set_parent(initializedName);
  139185           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  139186             : 
  139187             : #if 0
  139188             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  139189             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  139190             : 
  139191             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  139192             :        // ROSE_ASSERT(end != NULL);
  139193             :           if (end == NULL)
  139194             :              {
  139195             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  139196             :              }
  139197             :             else
  139198             :              {
  139199             :                if (end->get_parent() == NULL)
  139200             :                   {
  139201             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139202             :                   }
  139203             :                end->set_parent(initializedName);
  139204             :                ROSE_ASSERT(end->get_parent() != NULL);
  139205             :              }
  139206             : #endif
  139207             :         }
  139208             : 
  139209             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  139210           0 :      help.insertCopiedNodePair(this,result);
  139211             : 
  139212             :   // printf ("End of copy SgBitComplementOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  139213             : 
  139214             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  139215             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  139216           0 :      help.decrementDepth();
  139217             : 
  139218             :   // Test if this is the root of the copy!
  139219           0 :      if (help.get_depth() == 0)
  139220             :         {
  139221             :        // This is the original calling node.
  139222             : 
  139223             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  139224             :        // printf ("Calling SgBitComplementOp::fixupCopy() (from root of AST being copied) \n");
  139225             : #if ALT_FIXUP_COPY
  139226             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  139227           0 :           fixupCopy_scopes (result,help);
  139228           0 :           fixupCopy_symbols (result,help);
  139229           0 :           fixupCopy_references (result,help);
  139230             : #else
  139231             :           fixupCopy(result,help);
  139232             : #endif
  139233             :        // Allow this to be called recursively, so accumulate the state.
  139234             :        // Also, clear the state in the SgCopyHelp object.
  139235             :        // help.clearState();
  139236             :         }
  139237             : 
  139238           0 :      return result;
  139239             :    }
  139240             : 
  139241             : 
  139242             : /* #line 139243 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  139243             : 
  139244             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139245             : 
  139246        1475 : SgNode* SgCastExp::copy ( SgCopyHelp& help) const
  139247             :    {
  139248        1475 :      SgCastExp* result = NULL;
  139249             : 
  139250             :   // printf ("Copy SgCastExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  139251             : 
  139252             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  139253             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  139254             :   // The default value of the depth is 0, so after this call the depth is 1!
  139255        1475 :      help.incrementDepth();
  139256             : 
  139257             : #if 0
  139258             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  139259             :   // but it is not generally true that things can only be copied once!
  139260             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  139261             :   // AstAttribute* existingAttribute = const_cast<SgCastExp*>(this)->attribute["copied"];
  139262             :      bool previouslyCopied = const_cast<SgCastExp*>(this)->attribute.exists("copied");
  139263             :      if (previouslyCopied == true)
  139264             :         {
  139265             :           this->get_file_info()->display("Called from copy SgCastExp: debug");
  139266             :         }
  139267             :      ROSE_ASSERT(previouslyCopied == false);
  139268             : 
  139269             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  139270             :      AstAttribute* newAttribute = new AstAttribute();
  139271             :      ROSE_ASSERT(newAttribute != NULL);
  139272             : 
  139273             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  139274             :      const_cast<SgCastExp*>(this)->attribute.add("copied",newAttribute);
  139275             : #endif
  139276             : 
  139277             :   // Copy data members from base classes
  139278             :   // Copy constructor parameter data member: startOfConstruct_copy
  139279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  139280             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  139281        1475 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  139282        1475 :      if ( p_startOfConstruct != NULL ) 
  139283             :         { 
  139284        1475 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  139285             :         } 
  139286             :        else 
  139287             :         { 
  139288             :           startOfConstruct_copy = NULL; 
  139289             :         } 
  139290             :   // Copy constructor parameter data member: operand_i_copy
  139291        1475 :      SgExpression* operand_i_copy; 
  139292             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  139293        1475 :           if (get_operand_i() != NULL) 
  139294             :              { 
  139295        1475 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  139296             :              } 
  139297             :             else 
  139298             :              { 
  139299             :                operand_i_copy = NULL; 
  139300             :              } 
  139301             :   // Copy constructor parameter data member: expression_type_copy
  139302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  139303             :   // case: toBeCopied == COPY_DATA for expression_type
  139304        1475 :      SgType* expression_type_copy = p_expression_type; 
  139305             :   // Copy constructor parameter data member: cast_type_copy
  139306             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for cast_type
  139307             :   // case: toBeCopied == COPY_DATA for cast_type
  139308        1475 :      SgCastExp::cast_type_enum cast_type_copy = p_cast_type; 
  139309             :  
  139310             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139311             : 
  139312             :   // Build an empty copy of this object (will be filled in, but 
  139313             :   // the parent can't be set and must be set by the caller)
  139314        1475 :      result = new SgCastExp(  startOfConstruct_copy, operand_i_copy, expression_type_copy, cast_type_copy );
  139315        1475 :      ROSE_ASSERT(result != NULL);
  139316             : 
  139317             :   // Copy data members of "this" class
  139318             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  139319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  139320             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  139321        1475 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  139322        1475 :      if ( p_endOfConstruct != NULL ) 
  139323             :         { 
  139324        1475 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  139325             :         } 
  139326             :        else 
  139327             :         { 
  139328             :           endOfConstruct_copy = NULL; 
  139329             :         } 
  139330             :   /* check for a valid pointer and delete if present */ 
  139331        1475 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  139332             :   /* add assignment to result here */ 
  139333        1475 :      result->p_endOfConstruct = endOfConstruct_copy; 
  139334             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  139335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  139336             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  139337        1475 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  139338        1475 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  139339             :         { 
  139340           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  139341             :         } 
  139342             :        else 
  139343             :         { 
  139344             :           attachedPreprocessingInfoPtr_copy = NULL; 
  139345             :         } 
  139346             :   /* check for a valid pointer and delete if present */ 
  139347        1475 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  139348             :   /* add assignment to result here */ 
  139349        1475 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  139350             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  139351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  139352             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  139353        1475 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  139354        1475 :      if ( p_attributeMechanism != NULL ) 
  139355             :         { 
  139356           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  139357             :         } 
  139358             :        else 
  139359             :         { 
  139360             :           attributeMechanism_copy = NULL; 
  139361             :         } 
  139362             :   /* check for a valid pointer and delete if present */ 
  139363        1475 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  139364             :   /* add assignment to result here */ 
  139365        1475 :      result->p_attributeMechanism = attributeMechanism_copy; 
  139366             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  139367             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  139368             :   // case: toBeCopied == COPY_DATA for need_paren
  139369        1475 :      bool need_paren_copy = p_need_paren; 
  139370        1475 :      result->p_need_paren = need_paren_copy; 
  139371             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  139372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  139373             :   // case: toBeCopied == COPY_DATA for lvalue
  139374        1475 :      bool lvalue_copy = p_lvalue; 
  139375        1475 :      result->p_lvalue = lvalue_copy; 
  139376             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  139377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  139378             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  139379        1475 :      bool global_qualified_name_copy = p_global_qualified_name; 
  139380        1475 :      result->p_global_qualified_name = global_qualified_name_copy; 
  139381             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  139382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  139383             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  139384        1475 :      Sg_File_Info* operatorPosition_copy = NULL; 
  139385        1475 :      if ( p_operatorPosition != NULL ) 
  139386             :         { 
  139387        1475 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  139388             :         } 
  139389             :        else 
  139390             :         { 
  139391             :           operatorPosition_copy = NULL; 
  139392             :         } 
  139393             :   /* check for a valid pointer and delete if present */ 
  139394        1475 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  139395             :   /* add assignment to result here */ 
  139396        1475 :      result->p_operatorPosition = operatorPosition_copy; 
  139397             :   // Copy non-constructor parameter data member (access function): mode_copy
  139398             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  139399             :   // case: toBeCopied == COPY_DATA for mode
  139400        1475 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  139401        1475 :      result->p_mode = mode_copy; 
  139402             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  139403             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  139404             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  139405        1475 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  139406        1475 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  139407             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  139408             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  139409             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  139410        1475 :      int name_qualification_length_copy = p_name_qualification_length; 
  139411        1475 :      result->p_name_qualification_length = name_qualification_length_copy; 
  139412             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  139413             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  139414             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  139415        1475 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  139416        1475 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  139417             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  139418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  139419             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  139420        1475 :      bool global_qualification_required_copy = p_global_qualification_required; 
  139421        1475 :      result->p_global_qualification_required = global_qualification_required_copy; 
  139422             :   // Copy non-constructor parameter data member (access function): castContainsBaseTypeDefiningDeclaration_copy
  139423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for castContainsBaseTypeDefiningDeclaration
  139424             :   // case: toBeCopied == COPY_DATA for castContainsBaseTypeDefiningDeclaration
  139425        1475 :      bool castContainsBaseTypeDefiningDeclaration_copy = p_castContainsBaseTypeDefiningDeclaration; 
  139426        1475 :      result->p_castContainsBaseTypeDefiningDeclaration = castContainsBaseTypeDefiningDeclaration_copy; 
  139427             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_for_pointer_to_member_class_length
  139428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_for_pointer_to_member_class_length
  139429             :   // case: toBeCopied == COPY_DATA for name_qualification_for_pointer_to_member_class_length
  139430        1475 :      int name_qualification_for_pointer_to_member_class_length_copy = p_name_qualification_for_pointer_to_member_class_length; 
  139431        1475 :      result->p_name_qualification_for_pointer_to_member_class_length = name_qualification_for_pointer_to_member_class_length_copy; 
  139432             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_for_pointer_to_member_class_required
  139433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_for_pointer_to_member_class_required
  139434             :   // case: toBeCopied == COPY_DATA for type_elaboration_for_pointer_to_member_class_required
  139435        1475 :      bool type_elaboration_for_pointer_to_member_class_required_copy = p_type_elaboration_for_pointer_to_member_class_required; 
  139436        1475 :      result->p_type_elaboration_for_pointer_to_member_class_required = type_elaboration_for_pointer_to_member_class_required_copy; 
  139437             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_for_pointer_to_member_class_required
  139438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_for_pointer_to_member_class_required
  139439             :   // case: toBeCopied == COPY_DATA for global_qualification_for_pointer_to_member_class_required
  139440        1475 :      bool global_qualification_for_pointer_to_member_class_required_copy = p_global_qualification_for_pointer_to_member_class_required; 
  139441        1475 :      result->p_global_qualification_for_pointer_to_member_class_required = global_qualification_for_pointer_to_member_class_required_copy; 
  139442             :   // case: not a listType for (using conditionalToSetParent)operand_i
  139443        1475 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  139444             :              { 
  139445           0 :                operand_i_copy->set_parent(result); 
  139446             :              } 
  139447             : 
  139448             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139449             : 
  139450             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  139451             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  139452             :   // fixupCopy(result,help);
  139453             : 
  139454             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  139455             :   // the Sg_File_Info objects that are built for the new IR nodes.
  139456        1475 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  139457        1475 :      if (locatedNode != NULL)
  139458             :         {
  139459             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  139460        1475 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  139461        1475 :           ROSE_ASSERT(start != NULL);
  139462             : #if 0
  139463             :        // Debugging information
  139464             :           if (start->get_parent() == NULL)
  139465             :              {
  139466             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139467             :              }
  139468             : #endif
  139469        1475 :           start->set_parent(locatedNode);
  139470        1475 :           ROSE_ASSERT(start->get_parent() != NULL);
  139471             : 
  139472        1475 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  139473             : 
  139474             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  139475             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  139476             :        // ROSE_ASSERT(end != NULL);
  139477        1475 :           if (end == NULL)
  139478             :              {
  139479           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  139480             :              }
  139481             :             else
  139482             :              {
  139483             : #if 0
  139484             :             // Debugging information
  139485             :                if (end->get_parent() == NULL)
  139486             :                   {
  139487             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139488             :                   }
  139489             : #endif
  139490        1475 :                end->set_parent(locatedNode);
  139491        1475 :                ROSE_ASSERT(end->get_parent() != NULL);
  139492             :              }
  139493             : 
  139494        1475 :           SgExpression* expression = isSgExpression(result);
  139495        1475 :           if (isSgExpression(this) != NULL)
  139496             :              {
  139497        1475 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  139498             : 
  139499             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  139500        1475 :                if (operatorPosition != NULL)
  139501             :                   {
  139502             : #if 0
  139503             :                  // Debugging information
  139504             :                     if (operatorPosition->get_parent() == NULL)
  139505             :                        {
  139506             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139507             :                        }
  139508             : #endif
  139509        1475 :                     operatorPosition->set_parent(expression);
  139510        1475 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  139511             :                   }
  139512             :              }
  139513             :         }
  139514             : 
  139515             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  139516        1475 :      SgInitializedName* initializedName = isSgInitializedName(result);
  139517        1475 :      if (initializedName != NULL)
  139518             :         {
  139519             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  139520           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  139521           0 :           ROSE_ASSERT(start != NULL);
  139522             : #if 0
  139523             :        // Debugging information
  139524             :           if (start->get_parent() == NULL)
  139525             :              {
  139526             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139527             :              }
  139528             : #endif
  139529           0 :           start->set_parent(initializedName);
  139530           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  139531             : 
  139532             : #if 0
  139533             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  139534             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  139535             : 
  139536             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  139537             :        // ROSE_ASSERT(end != NULL);
  139538             :           if (end == NULL)
  139539             :              {
  139540             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  139541             :              }
  139542             :             else
  139543             :              {
  139544             :                if (end->get_parent() == NULL)
  139545             :                   {
  139546             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139547             :                   }
  139548             :                end->set_parent(initializedName);
  139549             :                ROSE_ASSERT(end->get_parent() != NULL);
  139550             :              }
  139551             : #endif
  139552             :         }
  139553             : 
  139554             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  139555        1475 :      help.insertCopiedNodePair(this,result);
  139556             : 
  139557             :   // printf ("End of copy SgCastExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  139558             : 
  139559             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  139560             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  139561        1475 :      help.decrementDepth();
  139562             : 
  139563             :   // Test if this is the root of the copy!
  139564        1475 :      if (help.get_depth() == 0)
  139565             :         {
  139566             :        // This is the original calling node.
  139567             : 
  139568             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  139569             :        // printf ("Calling SgCastExp::fixupCopy() (from root of AST being copied) \n");
  139570             : #if ALT_FIXUP_COPY
  139571             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  139572         893 :           fixupCopy_scopes (result,help);
  139573         893 :           fixupCopy_symbols (result,help);
  139574         893 :           fixupCopy_references (result,help);
  139575             : #else
  139576             :           fixupCopy(result,help);
  139577             : #endif
  139578             :        // Allow this to be called recursively, so accumulate the state.
  139579             :        // Also, clear the state in the SgCopyHelp object.
  139580             :        // help.clearState();
  139581             :         }
  139582             : 
  139583        1475 :      return result;
  139584             :    }
  139585             : 
  139586             : 
  139587             : /* #line 139588 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  139588             : 
  139589             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139590             : 
  139591           0 : SgNode* SgThrowOp::copy ( SgCopyHelp& help) const
  139592             :    {
  139593           0 :      SgThrowOp* result = NULL;
  139594             : 
  139595             :   // printf ("Copy SgThrowOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  139596             : 
  139597             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  139598             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  139599             :   // The default value of the depth is 0, so after this call the depth is 1!
  139600           0 :      help.incrementDepth();
  139601             : 
  139602             : #if 0
  139603             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  139604             :   // but it is not generally true that things can only be copied once!
  139605             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  139606             :   // AstAttribute* existingAttribute = const_cast<SgThrowOp*>(this)->attribute["copied"];
  139607             :      bool previouslyCopied = const_cast<SgThrowOp*>(this)->attribute.exists("copied");
  139608             :      if (previouslyCopied == true)
  139609             :         {
  139610             :           this->get_file_info()->display("Called from copy SgThrowOp: debug");
  139611             :         }
  139612             :      ROSE_ASSERT(previouslyCopied == false);
  139613             : 
  139614             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  139615             :      AstAttribute* newAttribute = new AstAttribute();
  139616             :      ROSE_ASSERT(newAttribute != NULL);
  139617             : 
  139618             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  139619             :      const_cast<SgThrowOp*>(this)->attribute.add("copied",newAttribute);
  139620             : #endif
  139621             : 
  139622             :   // Copy data members from base classes
  139623             :   // Copy constructor parameter data member: startOfConstruct_copy
  139624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  139625             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  139626           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  139627           0 :      if ( p_startOfConstruct != NULL ) 
  139628             :         { 
  139629           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  139630             :         } 
  139631             :        else 
  139632             :         { 
  139633             :           startOfConstruct_copy = NULL; 
  139634             :         } 
  139635             :   // Copy constructor parameter data member: operand_i_copy
  139636           0 :      SgExpression* operand_i_copy; 
  139637             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  139638           0 :           if (get_operand_i() != NULL) 
  139639             :              { 
  139640           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  139641             :              } 
  139642             :             else 
  139643             :              { 
  139644             :                operand_i_copy = NULL; 
  139645             :              } 
  139646             :   // Copy constructor parameter data member: expression_type_copy
  139647             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  139648             :   // case: toBeCopied == COPY_DATA for expression_type
  139649           0 :      SgType* expression_type_copy = p_expression_type; 
  139650             :   // Copy constructor parameter data member: throwKind_copy
  139651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for throwKind
  139652             :   // case: toBeCopied == COPY_DATA for throwKind
  139653           0 :      SgThrowOp::e_throw_kind throwKind_copy = p_throwKind; 
  139654             :  
  139655             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139656             : 
  139657             :   // Build an empty copy of this object (will be filled in, but 
  139658             :   // the parent can't be set and must be set by the caller)
  139659           0 :      result = new SgThrowOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy, throwKind_copy );
  139660           0 :      ROSE_ASSERT(result != NULL);
  139661             : 
  139662             :   // Copy data members of "this" class
  139663             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  139664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  139665             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  139666           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  139667           0 :      if ( p_endOfConstruct != NULL ) 
  139668             :         { 
  139669           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  139670             :         } 
  139671             :        else 
  139672             :         { 
  139673             :           endOfConstruct_copy = NULL; 
  139674             :         } 
  139675             :   /* check for a valid pointer and delete if present */ 
  139676           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  139677             :   /* add assignment to result here */ 
  139678           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  139679             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  139680             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  139681             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  139682           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  139683           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  139684             :         { 
  139685           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  139686             :         } 
  139687             :        else 
  139688             :         { 
  139689             :           attachedPreprocessingInfoPtr_copy = NULL; 
  139690             :         } 
  139691             :   /* check for a valid pointer and delete if present */ 
  139692           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  139693             :   /* add assignment to result here */ 
  139694           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  139695             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  139696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  139697             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  139698           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  139699           0 :      if ( p_attributeMechanism != NULL ) 
  139700             :         { 
  139701           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  139702             :         } 
  139703             :        else 
  139704             :         { 
  139705             :           attributeMechanism_copy = NULL; 
  139706             :         } 
  139707             :   /* check for a valid pointer and delete if present */ 
  139708           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  139709             :   /* add assignment to result here */ 
  139710           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  139711             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  139712             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  139713             :   // case: toBeCopied == COPY_DATA for need_paren
  139714           0 :      bool need_paren_copy = p_need_paren; 
  139715           0 :      result->p_need_paren = need_paren_copy; 
  139716             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  139717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  139718             :   // case: toBeCopied == COPY_DATA for lvalue
  139719           0 :      bool lvalue_copy = p_lvalue; 
  139720           0 :      result->p_lvalue = lvalue_copy; 
  139721             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  139722             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  139723             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  139724           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  139725           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  139726             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  139727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  139728             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  139729           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  139730           0 :      if ( p_operatorPosition != NULL ) 
  139731             :         { 
  139732           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  139733             :         } 
  139734             :        else 
  139735             :         { 
  139736             :           operatorPosition_copy = NULL; 
  139737             :         } 
  139738             :   /* check for a valid pointer and delete if present */ 
  139739           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  139740             :   /* add assignment to result here */ 
  139741           0 :      result->p_operatorPosition = operatorPosition_copy; 
  139742             :   // Copy non-constructor parameter data member (access function): mode_copy
  139743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  139744             :   // case: toBeCopied == COPY_DATA for mode
  139745           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  139746           0 :      result->p_mode = mode_copy; 
  139747             :   // case: not a listType for (using conditionalToSetParent)operand_i
  139748           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  139749             :              { 
  139750           0 :                operand_i_copy->set_parent(result); 
  139751             :              } 
  139752             : 
  139753             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139754             : 
  139755             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  139756             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  139757             :   // fixupCopy(result,help);
  139758             : 
  139759             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  139760             :   // the Sg_File_Info objects that are built for the new IR nodes.
  139761           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  139762           0 :      if (locatedNode != NULL)
  139763             :         {
  139764             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  139765           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  139766           0 :           ROSE_ASSERT(start != NULL);
  139767             : #if 0
  139768             :        // Debugging information
  139769             :           if (start->get_parent() == NULL)
  139770             :              {
  139771             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139772             :              }
  139773             : #endif
  139774           0 :           start->set_parent(locatedNode);
  139775           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  139776             : 
  139777           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  139778             : 
  139779             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  139780             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  139781             :        // ROSE_ASSERT(end != NULL);
  139782           0 :           if (end == NULL)
  139783             :              {
  139784           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  139785             :              }
  139786             :             else
  139787             :              {
  139788             : #if 0
  139789             :             // Debugging information
  139790             :                if (end->get_parent() == NULL)
  139791             :                   {
  139792             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139793             :                   }
  139794             : #endif
  139795           0 :                end->set_parent(locatedNode);
  139796           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  139797             :              }
  139798             : 
  139799           0 :           SgExpression* expression = isSgExpression(result);
  139800           0 :           if (isSgExpression(this) != NULL)
  139801             :              {
  139802           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  139803             : 
  139804             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  139805           0 :                if (operatorPosition != NULL)
  139806             :                   {
  139807             : #if 0
  139808             :                  // Debugging information
  139809             :                     if (operatorPosition->get_parent() == NULL)
  139810             :                        {
  139811             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139812             :                        }
  139813             : #endif
  139814           0 :                     operatorPosition->set_parent(expression);
  139815           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  139816             :                   }
  139817             :              }
  139818             :         }
  139819             : 
  139820             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  139821           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  139822           0 :      if (initializedName != NULL)
  139823             :         {
  139824             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  139825           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  139826           0 :           ROSE_ASSERT(start != NULL);
  139827             : #if 0
  139828             :        // Debugging information
  139829             :           if (start->get_parent() == NULL)
  139830             :              {
  139831             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139832             :              }
  139833             : #endif
  139834           0 :           start->set_parent(initializedName);
  139835           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  139836             : 
  139837             : #if 0
  139838             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  139839             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  139840             : 
  139841             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  139842             :        // ROSE_ASSERT(end != NULL);
  139843             :           if (end == NULL)
  139844             :              {
  139845             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  139846             :              }
  139847             :             else
  139848             :              {
  139849             :                if (end->get_parent() == NULL)
  139850             :                   {
  139851             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  139852             :                   }
  139853             :                end->set_parent(initializedName);
  139854             :                ROSE_ASSERT(end->get_parent() != NULL);
  139855             :              }
  139856             : #endif
  139857             :         }
  139858             : 
  139859             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  139860           0 :      help.insertCopiedNodePair(this,result);
  139861             : 
  139862             :   // printf ("End of copy SgThrowOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  139863             : 
  139864             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  139865             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  139866           0 :      help.decrementDepth();
  139867             : 
  139868             :   // Test if this is the root of the copy!
  139869           0 :      if (help.get_depth() == 0)
  139870             :         {
  139871             :        // This is the original calling node.
  139872             : 
  139873             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  139874             :        // printf ("Calling SgThrowOp::fixupCopy() (from root of AST being copied) \n");
  139875             : #if ALT_FIXUP_COPY
  139876             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  139877           0 :           fixupCopy_scopes (result,help);
  139878           0 :           fixupCopy_symbols (result,help);
  139879           0 :           fixupCopy_references (result,help);
  139880             : #else
  139881             :           fixupCopy(result,help);
  139882             : #endif
  139883             :        // Allow this to be called recursively, so accumulate the state.
  139884             :        // Also, clear the state in the SgCopyHelp object.
  139885             :        // help.clearState();
  139886             :         }
  139887             : 
  139888           0 :      return result;
  139889             :    }
  139890             : 
  139891             : 
  139892             : /* #line 139893 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  139893             : 
  139894             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139895             : 
  139896           0 : SgNode* SgRealPartOp::copy ( SgCopyHelp& help) const
  139897             :    {
  139898           0 :      SgRealPartOp* result = NULL;
  139899             : 
  139900             :   // printf ("Copy SgRealPartOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  139901             : 
  139902             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  139903             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  139904             :   // The default value of the depth is 0, so after this call the depth is 1!
  139905           0 :      help.incrementDepth();
  139906             : 
  139907             : #if 0
  139908             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  139909             :   // but it is not generally true that things can only be copied once!
  139910             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  139911             :   // AstAttribute* existingAttribute = const_cast<SgRealPartOp*>(this)->attribute["copied"];
  139912             :      bool previouslyCopied = const_cast<SgRealPartOp*>(this)->attribute.exists("copied");
  139913             :      if (previouslyCopied == true)
  139914             :         {
  139915             :           this->get_file_info()->display("Called from copy SgRealPartOp: debug");
  139916             :         }
  139917             :      ROSE_ASSERT(previouslyCopied == false);
  139918             : 
  139919             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  139920             :      AstAttribute* newAttribute = new AstAttribute();
  139921             :      ROSE_ASSERT(newAttribute != NULL);
  139922             : 
  139923             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  139924             :      const_cast<SgRealPartOp*>(this)->attribute.add("copied",newAttribute);
  139925             : #endif
  139926             : 
  139927             :   // Copy data members from base classes
  139928             :   // Copy constructor parameter data member: startOfConstruct_copy
  139929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  139930             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  139931           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  139932           0 :      if ( p_startOfConstruct != NULL ) 
  139933             :         { 
  139934           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  139935             :         } 
  139936             :        else 
  139937             :         { 
  139938             :           startOfConstruct_copy = NULL; 
  139939             :         } 
  139940             :   // Copy constructor parameter data member: operand_i_copy
  139941           0 :      SgExpression* operand_i_copy; 
  139942             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  139943           0 :           if (get_operand_i() != NULL) 
  139944             :              { 
  139945           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  139946             :              } 
  139947             :             else 
  139948             :              { 
  139949             :                operand_i_copy = NULL; 
  139950             :              } 
  139951             :   // Copy constructor parameter data member: expression_type_copy
  139952             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  139953             :   // case: toBeCopied == COPY_DATA for expression_type
  139954           0 :      SgType* expression_type_copy = p_expression_type; 
  139955             :  
  139956             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  139957             : 
  139958             :   // Build an empty copy of this object (will be filled in, but 
  139959             :   // the parent can't be set and must be set by the caller)
  139960           0 :      result = new SgRealPartOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  139961           0 :      ROSE_ASSERT(result != NULL);
  139962             : 
  139963             :   // Copy data members of "this" class
  139964             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  139965             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  139966             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  139967           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  139968           0 :      if ( p_endOfConstruct != NULL ) 
  139969             :         { 
  139970           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  139971             :         } 
  139972             :        else 
  139973             :         { 
  139974             :           endOfConstruct_copy = NULL; 
  139975             :         } 
  139976             :   /* check for a valid pointer and delete if present */ 
  139977           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  139978             :   /* add assignment to result here */ 
  139979           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  139980             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  139981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  139982             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  139983           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  139984           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  139985             :         { 
  139986           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  139987             :         } 
  139988             :        else 
  139989             :         { 
  139990             :           attachedPreprocessingInfoPtr_copy = NULL; 
  139991             :         } 
  139992             :   /* check for a valid pointer and delete if present */ 
  139993           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  139994             :   /* add assignment to result here */ 
  139995           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  139996             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  139997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  139998             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  139999           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  140000           0 :      if ( p_attributeMechanism != NULL ) 
  140001             :         { 
  140002           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  140003             :         } 
  140004             :        else 
  140005             :         { 
  140006             :           attributeMechanism_copy = NULL; 
  140007             :         } 
  140008             :   /* check for a valid pointer and delete if present */ 
  140009           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  140010             :   /* add assignment to result here */ 
  140011           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  140012             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  140013             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  140014             :   // case: toBeCopied == COPY_DATA for need_paren
  140015           0 :      bool need_paren_copy = p_need_paren; 
  140016           0 :      result->p_need_paren = need_paren_copy; 
  140017             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  140018             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  140019             :   // case: toBeCopied == COPY_DATA for lvalue
  140020           0 :      bool lvalue_copy = p_lvalue; 
  140021           0 :      result->p_lvalue = lvalue_copy; 
  140022             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  140023             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  140024             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  140025           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  140026           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  140027             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  140028             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  140029             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  140030           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  140031           0 :      if ( p_operatorPosition != NULL ) 
  140032             :         { 
  140033           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  140034             :         } 
  140035             :        else 
  140036             :         { 
  140037             :           operatorPosition_copy = NULL; 
  140038             :         } 
  140039             :   /* check for a valid pointer and delete if present */ 
  140040           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  140041             :   /* add assignment to result here */ 
  140042           0 :      result->p_operatorPosition = operatorPosition_copy; 
  140043             :   // Copy non-constructor parameter data member (access function): mode_copy
  140044             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  140045             :   // case: toBeCopied == COPY_DATA for mode
  140046           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  140047           0 :      result->p_mode = mode_copy; 
  140048             :   // case: not a listType for (using conditionalToSetParent)operand_i
  140049           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  140050             :              { 
  140051           0 :                operand_i_copy->set_parent(result); 
  140052             :              } 
  140053             : 
  140054             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140055             : 
  140056             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  140057             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  140058             :   // fixupCopy(result,help);
  140059             : 
  140060             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  140061             :   // the Sg_File_Info objects that are built for the new IR nodes.
  140062           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  140063           0 :      if (locatedNode != NULL)
  140064             :         {
  140065             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  140066           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  140067           0 :           ROSE_ASSERT(start != NULL);
  140068             : #if 0
  140069             :        // Debugging information
  140070             :           if (start->get_parent() == NULL)
  140071             :              {
  140072             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140073             :              }
  140074             : #endif
  140075           0 :           start->set_parent(locatedNode);
  140076           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  140077             : 
  140078           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  140079             : 
  140080             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  140081             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  140082             :        // ROSE_ASSERT(end != NULL);
  140083           0 :           if (end == NULL)
  140084             :              {
  140085           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  140086             :              }
  140087             :             else
  140088             :              {
  140089             : #if 0
  140090             :             // Debugging information
  140091             :                if (end->get_parent() == NULL)
  140092             :                   {
  140093             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140094             :                   }
  140095             : #endif
  140096           0 :                end->set_parent(locatedNode);
  140097           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  140098             :              }
  140099             : 
  140100           0 :           SgExpression* expression = isSgExpression(result);
  140101           0 :           if (isSgExpression(this) != NULL)
  140102             :              {
  140103           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  140104             : 
  140105             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  140106           0 :                if (operatorPosition != NULL)
  140107             :                   {
  140108             : #if 0
  140109             :                  // Debugging information
  140110             :                     if (operatorPosition->get_parent() == NULL)
  140111             :                        {
  140112             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140113             :                        }
  140114             : #endif
  140115           0 :                     operatorPosition->set_parent(expression);
  140116           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  140117             :                   }
  140118             :              }
  140119             :         }
  140120             : 
  140121             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  140122           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  140123           0 :      if (initializedName != NULL)
  140124             :         {
  140125             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  140126           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  140127           0 :           ROSE_ASSERT(start != NULL);
  140128             : #if 0
  140129             :        // Debugging information
  140130             :           if (start->get_parent() == NULL)
  140131             :              {
  140132             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140133             :              }
  140134             : #endif
  140135           0 :           start->set_parent(initializedName);
  140136           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  140137             : 
  140138             : #if 0
  140139             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  140140             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  140141             : 
  140142             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  140143             :        // ROSE_ASSERT(end != NULL);
  140144             :           if (end == NULL)
  140145             :              {
  140146             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  140147             :              }
  140148             :             else
  140149             :              {
  140150             :                if (end->get_parent() == NULL)
  140151             :                   {
  140152             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140153             :                   }
  140154             :                end->set_parent(initializedName);
  140155             :                ROSE_ASSERT(end->get_parent() != NULL);
  140156             :              }
  140157             : #endif
  140158             :         }
  140159             : 
  140160             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  140161           0 :      help.insertCopiedNodePair(this,result);
  140162             : 
  140163             :   // printf ("End of copy SgRealPartOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  140164             : 
  140165             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  140166             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  140167           0 :      help.decrementDepth();
  140168             : 
  140169             :   // Test if this is the root of the copy!
  140170           0 :      if (help.get_depth() == 0)
  140171             :         {
  140172             :        // This is the original calling node.
  140173             : 
  140174             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  140175             :        // printf ("Calling SgRealPartOp::fixupCopy() (from root of AST being copied) \n");
  140176             : #if ALT_FIXUP_COPY
  140177             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  140178           0 :           fixupCopy_scopes (result,help);
  140179           0 :           fixupCopy_symbols (result,help);
  140180           0 :           fixupCopy_references (result,help);
  140181             : #else
  140182             :           fixupCopy(result,help);
  140183             : #endif
  140184             :        // Allow this to be called recursively, so accumulate the state.
  140185             :        // Also, clear the state in the SgCopyHelp object.
  140186             :        // help.clearState();
  140187             :         }
  140188             : 
  140189           0 :      return result;
  140190             :    }
  140191             : 
  140192             : 
  140193             : /* #line 140194 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  140194             : 
  140195             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140196             : 
  140197           0 : SgNode* SgImagPartOp::copy ( SgCopyHelp& help) const
  140198             :    {
  140199           0 :      SgImagPartOp* result = NULL;
  140200             : 
  140201             :   // printf ("Copy SgImagPartOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  140202             : 
  140203             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  140204             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  140205             :   // The default value of the depth is 0, so after this call the depth is 1!
  140206           0 :      help.incrementDepth();
  140207             : 
  140208             : #if 0
  140209             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  140210             :   // but it is not generally true that things can only be copied once!
  140211             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  140212             :   // AstAttribute* existingAttribute = const_cast<SgImagPartOp*>(this)->attribute["copied"];
  140213             :      bool previouslyCopied = const_cast<SgImagPartOp*>(this)->attribute.exists("copied");
  140214             :      if (previouslyCopied == true)
  140215             :         {
  140216             :           this->get_file_info()->display("Called from copy SgImagPartOp: debug");
  140217             :         }
  140218             :      ROSE_ASSERT(previouslyCopied == false);
  140219             : 
  140220             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  140221             :      AstAttribute* newAttribute = new AstAttribute();
  140222             :      ROSE_ASSERT(newAttribute != NULL);
  140223             : 
  140224             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  140225             :      const_cast<SgImagPartOp*>(this)->attribute.add("copied",newAttribute);
  140226             : #endif
  140227             : 
  140228             :   // Copy data members from base classes
  140229             :   // Copy constructor parameter data member: startOfConstruct_copy
  140230             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  140231             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  140232           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  140233           0 :      if ( p_startOfConstruct != NULL ) 
  140234             :         { 
  140235           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  140236             :         } 
  140237             :        else 
  140238             :         { 
  140239             :           startOfConstruct_copy = NULL; 
  140240             :         } 
  140241             :   // Copy constructor parameter data member: operand_i_copy
  140242           0 :      SgExpression* operand_i_copy; 
  140243             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  140244           0 :           if (get_operand_i() != NULL) 
  140245             :              { 
  140246           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  140247             :              } 
  140248             :             else 
  140249             :              { 
  140250             :                operand_i_copy = NULL; 
  140251             :              } 
  140252             :   // Copy constructor parameter data member: expression_type_copy
  140253             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  140254             :   // case: toBeCopied == COPY_DATA for expression_type
  140255           0 :      SgType* expression_type_copy = p_expression_type; 
  140256             :  
  140257             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140258             : 
  140259             :   // Build an empty copy of this object (will be filled in, but 
  140260             :   // the parent can't be set and must be set by the caller)
  140261           0 :      result = new SgImagPartOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  140262           0 :      ROSE_ASSERT(result != NULL);
  140263             : 
  140264             :   // Copy data members of "this" class
  140265             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  140266             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  140267             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  140268           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  140269           0 :      if ( p_endOfConstruct != NULL ) 
  140270             :         { 
  140271           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  140272             :         } 
  140273             :        else 
  140274             :         { 
  140275             :           endOfConstruct_copy = NULL; 
  140276             :         } 
  140277             :   /* check for a valid pointer and delete if present */ 
  140278           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  140279             :   /* add assignment to result here */ 
  140280           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  140281             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  140282             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  140283             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  140284           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  140285           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  140286             :         { 
  140287           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  140288             :         } 
  140289             :        else 
  140290             :         { 
  140291             :           attachedPreprocessingInfoPtr_copy = NULL; 
  140292             :         } 
  140293             :   /* check for a valid pointer and delete if present */ 
  140294           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  140295             :   /* add assignment to result here */ 
  140296           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  140297             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  140298             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  140299             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  140300           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  140301           0 :      if ( p_attributeMechanism != NULL ) 
  140302             :         { 
  140303           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  140304             :         } 
  140305             :        else 
  140306             :         { 
  140307             :           attributeMechanism_copy = NULL; 
  140308             :         } 
  140309             :   /* check for a valid pointer and delete if present */ 
  140310           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  140311             :   /* add assignment to result here */ 
  140312           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  140313             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  140314             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  140315             :   // case: toBeCopied == COPY_DATA for need_paren
  140316           0 :      bool need_paren_copy = p_need_paren; 
  140317           0 :      result->p_need_paren = need_paren_copy; 
  140318             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  140319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  140320             :   // case: toBeCopied == COPY_DATA for lvalue
  140321           0 :      bool lvalue_copy = p_lvalue; 
  140322           0 :      result->p_lvalue = lvalue_copy; 
  140323             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  140324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  140325             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  140326           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  140327           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  140328             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  140329             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  140330             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  140331           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  140332           0 :      if ( p_operatorPosition != NULL ) 
  140333             :         { 
  140334           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  140335             :         } 
  140336             :        else 
  140337             :         { 
  140338             :           operatorPosition_copy = NULL; 
  140339             :         } 
  140340             :   /* check for a valid pointer and delete if present */ 
  140341           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  140342             :   /* add assignment to result here */ 
  140343           0 :      result->p_operatorPosition = operatorPosition_copy; 
  140344             :   // Copy non-constructor parameter data member (access function): mode_copy
  140345             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  140346             :   // case: toBeCopied == COPY_DATA for mode
  140347           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  140348           0 :      result->p_mode = mode_copy; 
  140349             :   // case: not a listType for (using conditionalToSetParent)operand_i
  140350           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  140351             :              { 
  140352           0 :                operand_i_copy->set_parent(result); 
  140353             :              } 
  140354             : 
  140355             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140356             : 
  140357             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  140358             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  140359             :   // fixupCopy(result,help);
  140360             : 
  140361             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  140362             :   // the Sg_File_Info objects that are built for the new IR nodes.
  140363           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  140364           0 :      if (locatedNode != NULL)
  140365             :         {
  140366             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  140367           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  140368           0 :           ROSE_ASSERT(start != NULL);
  140369             : #if 0
  140370             :        // Debugging information
  140371             :           if (start->get_parent() == NULL)
  140372             :              {
  140373             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140374             :              }
  140375             : #endif
  140376           0 :           start->set_parent(locatedNode);
  140377           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  140378             : 
  140379           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  140380             : 
  140381             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  140382             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  140383             :        // ROSE_ASSERT(end != NULL);
  140384           0 :           if (end == NULL)
  140385             :              {
  140386           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  140387             :              }
  140388             :             else
  140389             :              {
  140390             : #if 0
  140391             :             // Debugging information
  140392             :                if (end->get_parent() == NULL)
  140393             :                   {
  140394             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140395             :                   }
  140396             : #endif
  140397           0 :                end->set_parent(locatedNode);
  140398           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  140399             :              }
  140400             : 
  140401           0 :           SgExpression* expression = isSgExpression(result);
  140402           0 :           if (isSgExpression(this) != NULL)
  140403             :              {
  140404           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  140405             : 
  140406             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  140407           0 :                if (operatorPosition != NULL)
  140408             :                   {
  140409             : #if 0
  140410             :                  // Debugging information
  140411             :                     if (operatorPosition->get_parent() == NULL)
  140412             :                        {
  140413             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140414             :                        }
  140415             : #endif
  140416           0 :                     operatorPosition->set_parent(expression);
  140417           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  140418             :                   }
  140419             :              }
  140420             :         }
  140421             : 
  140422             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  140423           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  140424           0 :      if (initializedName != NULL)
  140425             :         {
  140426             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  140427           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  140428           0 :           ROSE_ASSERT(start != NULL);
  140429             : #if 0
  140430             :        // Debugging information
  140431             :           if (start->get_parent() == NULL)
  140432             :              {
  140433             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140434             :              }
  140435             : #endif
  140436           0 :           start->set_parent(initializedName);
  140437           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  140438             : 
  140439             : #if 0
  140440             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  140441             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  140442             : 
  140443             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  140444             :        // ROSE_ASSERT(end != NULL);
  140445             :           if (end == NULL)
  140446             :              {
  140447             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  140448             :              }
  140449             :             else
  140450             :              {
  140451             :                if (end->get_parent() == NULL)
  140452             :                   {
  140453             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140454             :                   }
  140455             :                end->set_parent(initializedName);
  140456             :                ROSE_ASSERT(end->get_parent() != NULL);
  140457             :              }
  140458             : #endif
  140459             :         }
  140460             : 
  140461             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  140462           0 :      help.insertCopiedNodePair(this,result);
  140463             : 
  140464             :   // printf ("End of copy SgImagPartOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  140465             : 
  140466             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  140467             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  140468           0 :      help.decrementDepth();
  140469             : 
  140470             :   // Test if this is the root of the copy!
  140471           0 :      if (help.get_depth() == 0)
  140472             :         {
  140473             :        // This is the original calling node.
  140474             : 
  140475             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  140476             :        // printf ("Calling SgImagPartOp::fixupCopy() (from root of AST being copied) \n");
  140477             : #if ALT_FIXUP_COPY
  140478             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  140479           0 :           fixupCopy_scopes (result,help);
  140480           0 :           fixupCopy_symbols (result,help);
  140481           0 :           fixupCopy_references (result,help);
  140482             : #else
  140483             :           fixupCopy(result,help);
  140484             : #endif
  140485             :        // Allow this to be called recursively, so accumulate the state.
  140486             :        // Also, clear the state in the SgCopyHelp object.
  140487             :        // help.clearState();
  140488             :         }
  140489             : 
  140490           0 :      return result;
  140491             :    }
  140492             : 
  140493             : 
  140494             : /* #line 140495 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  140495             : 
  140496             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140497             : 
  140498           0 : SgNode* SgConjugateOp::copy ( SgCopyHelp& help) const
  140499             :    {
  140500           0 :      SgConjugateOp* result = NULL;
  140501             : 
  140502             :   // printf ("Copy SgConjugateOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  140503             : 
  140504             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  140505             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  140506             :   // The default value of the depth is 0, so after this call the depth is 1!
  140507           0 :      help.incrementDepth();
  140508             : 
  140509             : #if 0
  140510             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  140511             :   // but it is not generally true that things can only be copied once!
  140512             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  140513             :   // AstAttribute* existingAttribute = const_cast<SgConjugateOp*>(this)->attribute["copied"];
  140514             :      bool previouslyCopied = const_cast<SgConjugateOp*>(this)->attribute.exists("copied");
  140515             :      if (previouslyCopied == true)
  140516             :         {
  140517             :           this->get_file_info()->display("Called from copy SgConjugateOp: debug");
  140518             :         }
  140519             :      ROSE_ASSERT(previouslyCopied == false);
  140520             : 
  140521             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  140522             :      AstAttribute* newAttribute = new AstAttribute();
  140523             :      ROSE_ASSERT(newAttribute != NULL);
  140524             : 
  140525             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  140526             :      const_cast<SgConjugateOp*>(this)->attribute.add("copied",newAttribute);
  140527             : #endif
  140528             : 
  140529             :   // Copy data members from base classes
  140530             :   // Copy constructor parameter data member: startOfConstruct_copy
  140531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  140532             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  140533           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  140534           0 :      if ( p_startOfConstruct != NULL ) 
  140535             :         { 
  140536           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  140537             :         } 
  140538             :        else 
  140539             :         { 
  140540             :           startOfConstruct_copy = NULL; 
  140541             :         } 
  140542             :   // Copy constructor parameter data member: operand_i_copy
  140543           0 :      SgExpression* operand_i_copy; 
  140544             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  140545           0 :           if (get_operand_i() != NULL) 
  140546             :              { 
  140547           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  140548             :              } 
  140549             :             else 
  140550             :              { 
  140551             :                operand_i_copy = NULL; 
  140552             :              } 
  140553             :   // Copy constructor parameter data member: expression_type_copy
  140554             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  140555             :   // case: toBeCopied == COPY_DATA for expression_type
  140556           0 :      SgType* expression_type_copy = p_expression_type; 
  140557             :  
  140558             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140559             : 
  140560             :   // Build an empty copy of this object (will be filled in, but 
  140561             :   // the parent can't be set and must be set by the caller)
  140562           0 :      result = new SgConjugateOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  140563           0 :      ROSE_ASSERT(result != NULL);
  140564             : 
  140565             :   // Copy data members of "this" class
  140566             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  140567             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  140568             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  140569           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  140570           0 :      if ( p_endOfConstruct != NULL ) 
  140571             :         { 
  140572           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  140573             :         } 
  140574             :        else 
  140575             :         { 
  140576             :           endOfConstruct_copy = NULL; 
  140577             :         } 
  140578             :   /* check for a valid pointer and delete if present */ 
  140579           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  140580             :   /* add assignment to result here */ 
  140581           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  140582             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  140583             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  140584             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  140585           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  140586           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  140587             :         { 
  140588           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  140589             :         } 
  140590             :        else 
  140591             :         { 
  140592             :           attachedPreprocessingInfoPtr_copy = NULL; 
  140593             :         } 
  140594             :   /* check for a valid pointer and delete if present */ 
  140595           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  140596             :   /* add assignment to result here */ 
  140597           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  140598             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  140599             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  140600             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  140601           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  140602           0 :      if ( p_attributeMechanism != NULL ) 
  140603             :         { 
  140604           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  140605             :         } 
  140606             :        else 
  140607             :         { 
  140608             :           attributeMechanism_copy = NULL; 
  140609             :         } 
  140610             :   /* check for a valid pointer and delete if present */ 
  140611           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  140612             :   /* add assignment to result here */ 
  140613           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  140614             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  140615             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  140616             :   // case: toBeCopied == COPY_DATA for need_paren
  140617           0 :      bool need_paren_copy = p_need_paren; 
  140618           0 :      result->p_need_paren = need_paren_copy; 
  140619             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  140620             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  140621             :   // case: toBeCopied == COPY_DATA for lvalue
  140622           0 :      bool lvalue_copy = p_lvalue; 
  140623           0 :      result->p_lvalue = lvalue_copy; 
  140624             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  140625             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  140626             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  140627           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  140628           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  140629             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  140630             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  140631             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  140632           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  140633           0 :      if ( p_operatorPosition != NULL ) 
  140634             :         { 
  140635           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  140636             :         } 
  140637             :        else 
  140638             :         { 
  140639             :           operatorPosition_copy = NULL; 
  140640             :         } 
  140641             :   /* check for a valid pointer and delete if present */ 
  140642           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  140643             :   /* add assignment to result here */ 
  140644           0 :      result->p_operatorPosition = operatorPosition_copy; 
  140645             :   // Copy non-constructor parameter data member (access function): mode_copy
  140646             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  140647             :   // case: toBeCopied == COPY_DATA for mode
  140648           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  140649           0 :      result->p_mode = mode_copy; 
  140650             :   // case: not a listType for (using conditionalToSetParent)operand_i
  140651           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  140652             :              { 
  140653           0 :                operand_i_copy->set_parent(result); 
  140654             :              } 
  140655             : 
  140656             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140657             : 
  140658             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  140659             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  140660             :   // fixupCopy(result,help);
  140661             : 
  140662             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  140663             :   // the Sg_File_Info objects that are built for the new IR nodes.
  140664           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  140665           0 :      if (locatedNode != NULL)
  140666             :         {
  140667             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  140668           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  140669           0 :           ROSE_ASSERT(start != NULL);
  140670             : #if 0
  140671             :        // Debugging information
  140672             :           if (start->get_parent() == NULL)
  140673             :              {
  140674             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140675             :              }
  140676             : #endif
  140677           0 :           start->set_parent(locatedNode);
  140678           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  140679             : 
  140680           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  140681             : 
  140682             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  140683             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  140684             :        // ROSE_ASSERT(end != NULL);
  140685           0 :           if (end == NULL)
  140686             :              {
  140687           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  140688             :              }
  140689             :             else
  140690             :              {
  140691             : #if 0
  140692             :             // Debugging information
  140693             :                if (end->get_parent() == NULL)
  140694             :                   {
  140695             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140696             :                   }
  140697             : #endif
  140698           0 :                end->set_parent(locatedNode);
  140699           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  140700             :              }
  140701             : 
  140702           0 :           SgExpression* expression = isSgExpression(result);
  140703           0 :           if (isSgExpression(this) != NULL)
  140704             :              {
  140705           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  140706             : 
  140707             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  140708           0 :                if (operatorPosition != NULL)
  140709             :                   {
  140710             : #if 0
  140711             :                  // Debugging information
  140712             :                     if (operatorPosition->get_parent() == NULL)
  140713             :                        {
  140714             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140715             :                        }
  140716             : #endif
  140717           0 :                     operatorPosition->set_parent(expression);
  140718           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  140719             :                   }
  140720             :              }
  140721             :         }
  140722             : 
  140723             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  140724           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  140725           0 :      if (initializedName != NULL)
  140726             :         {
  140727             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  140728           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  140729           0 :           ROSE_ASSERT(start != NULL);
  140730             : #if 0
  140731             :        // Debugging information
  140732             :           if (start->get_parent() == NULL)
  140733             :              {
  140734             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140735             :              }
  140736             : #endif
  140737           0 :           start->set_parent(initializedName);
  140738           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  140739             : 
  140740             : #if 0
  140741             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  140742             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  140743             : 
  140744             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  140745             :        // ROSE_ASSERT(end != NULL);
  140746             :           if (end == NULL)
  140747             :              {
  140748             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  140749             :              }
  140750             :             else
  140751             :              {
  140752             :                if (end->get_parent() == NULL)
  140753             :                   {
  140754             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140755             :                   }
  140756             :                end->set_parent(initializedName);
  140757             :                ROSE_ASSERT(end->get_parent() != NULL);
  140758             :              }
  140759             : #endif
  140760             :         }
  140761             : 
  140762             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  140763           0 :      help.insertCopiedNodePair(this,result);
  140764             : 
  140765             :   // printf ("End of copy SgConjugateOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  140766             : 
  140767             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  140768             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  140769           0 :      help.decrementDepth();
  140770             : 
  140771             :   // Test if this is the root of the copy!
  140772           0 :      if (help.get_depth() == 0)
  140773             :         {
  140774             :        // This is the original calling node.
  140775             : 
  140776             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  140777             :        // printf ("Calling SgConjugateOp::fixupCopy() (from root of AST being copied) \n");
  140778             : #if ALT_FIXUP_COPY
  140779             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  140780           0 :           fixupCopy_scopes (result,help);
  140781           0 :           fixupCopy_symbols (result,help);
  140782           0 :           fixupCopy_references (result,help);
  140783             : #else
  140784             :           fixupCopy(result,help);
  140785             : #endif
  140786             :        // Allow this to be called recursively, so accumulate the state.
  140787             :        // Also, clear the state in the SgCopyHelp object.
  140788             :        // help.clearState();
  140789             :         }
  140790             : 
  140791           0 :      return result;
  140792             :    }
  140793             : 
  140794             : 
  140795             : /* #line 140796 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  140796             : 
  140797             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140798             : 
  140799           0 : SgNode* SgUserDefinedUnaryOp::copy ( SgCopyHelp& help) const
  140800             :    {
  140801           0 :      SgUserDefinedUnaryOp* result = NULL;
  140802             : 
  140803             :   // printf ("Copy SgUserDefinedUnaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  140804             : 
  140805             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  140806             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  140807             :   // The default value of the depth is 0, so after this call the depth is 1!
  140808           0 :      help.incrementDepth();
  140809             : 
  140810             : #if 0
  140811             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  140812             :   // but it is not generally true that things can only be copied once!
  140813             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  140814             :   // AstAttribute* existingAttribute = const_cast<SgUserDefinedUnaryOp*>(this)->attribute["copied"];
  140815             :      bool previouslyCopied = const_cast<SgUserDefinedUnaryOp*>(this)->attribute.exists("copied");
  140816             :      if (previouslyCopied == true)
  140817             :         {
  140818             :           this->get_file_info()->display("Called from copy SgUserDefinedUnaryOp: debug");
  140819             :         }
  140820             :      ROSE_ASSERT(previouslyCopied == false);
  140821             : 
  140822             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  140823             :      AstAttribute* newAttribute = new AstAttribute();
  140824             :      ROSE_ASSERT(newAttribute != NULL);
  140825             : 
  140826             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  140827             :      const_cast<SgUserDefinedUnaryOp*>(this)->attribute.add("copied",newAttribute);
  140828             : #endif
  140829             : 
  140830             :   // Copy data members from base classes
  140831             :   // Copy constructor parameter data member: startOfConstruct_copy
  140832             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  140833             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  140834           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  140835           0 :      if ( p_startOfConstruct != NULL ) 
  140836             :         { 
  140837           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  140838             :         } 
  140839             :        else 
  140840             :         { 
  140841             :           startOfConstruct_copy = NULL; 
  140842             :         } 
  140843             :   // Copy constructor parameter data member: operand_i_copy
  140844           0 :      SgExpression* operand_i_copy; 
  140845             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  140846           0 :           if (get_operand_i() != NULL) 
  140847             :              { 
  140848           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  140849             :              } 
  140850             :             else 
  140851             :              { 
  140852             :                operand_i_copy = NULL; 
  140853             :              } 
  140854             :   // Copy constructor parameter data member: expression_type_copy
  140855             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  140856             :   // case: toBeCopied == COPY_DATA for expression_type
  140857           0 :      SgType* expression_type_copy = p_expression_type; 
  140858             :   // Copy constructor parameter data member: operator_name_copy
  140859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operator_name
  140860             :   // case: toBeCopied == COPY_DATA for operator_name
  140861           0 :      SgName operator_name_copy = p_operator_name; 
  140862             :   // Copy constructor parameter data member: symbol_copy
  140863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol
  140864             :   // case: toBeCopied == COPY_DATA for symbol
  140865           0 :      SgFunctionSymbol* symbol_copy = p_symbol; 
  140866             :  
  140867             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140868             : 
  140869             :   // Build an empty copy of this object (will be filled in, but 
  140870             :   // the parent can't be set and must be set by the caller)
  140871           0 :      result = new SgUserDefinedUnaryOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy, operator_name_copy, symbol_copy );
  140872           0 :      ROSE_ASSERT(result != NULL);
  140873             : 
  140874             :   // Copy data members of "this" class
  140875             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  140876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  140877             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  140878           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  140879           0 :      if ( p_endOfConstruct != NULL ) 
  140880             :         { 
  140881           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  140882             :         } 
  140883             :        else 
  140884             :         { 
  140885             :           endOfConstruct_copy = NULL; 
  140886             :         } 
  140887             :   /* check for a valid pointer and delete if present */ 
  140888           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  140889             :   /* add assignment to result here */ 
  140890           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  140891             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  140892             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  140893             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  140894           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  140895           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  140896             :         { 
  140897           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  140898             :         } 
  140899             :        else 
  140900             :         { 
  140901             :           attachedPreprocessingInfoPtr_copy = NULL; 
  140902             :         } 
  140903             :   /* check for a valid pointer and delete if present */ 
  140904           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  140905             :   /* add assignment to result here */ 
  140906           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  140907             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  140908             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  140909             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  140910           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  140911           0 :      if ( p_attributeMechanism != NULL ) 
  140912             :         { 
  140913           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  140914             :         } 
  140915             :        else 
  140916             :         { 
  140917             :           attributeMechanism_copy = NULL; 
  140918             :         } 
  140919             :   /* check for a valid pointer and delete if present */ 
  140920           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  140921             :   /* add assignment to result here */ 
  140922           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  140923             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  140924             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  140925             :   // case: toBeCopied == COPY_DATA for need_paren
  140926           0 :      bool need_paren_copy = p_need_paren; 
  140927           0 :      result->p_need_paren = need_paren_copy; 
  140928             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  140929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  140930             :   // case: toBeCopied == COPY_DATA for lvalue
  140931           0 :      bool lvalue_copy = p_lvalue; 
  140932           0 :      result->p_lvalue = lvalue_copy; 
  140933             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  140934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  140935             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  140936           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  140937           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  140938             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  140939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  140940             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  140941           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  140942           0 :      if ( p_operatorPosition != NULL ) 
  140943             :         { 
  140944           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  140945             :         } 
  140946             :        else 
  140947             :         { 
  140948             :           operatorPosition_copy = NULL; 
  140949             :         } 
  140950             :   /* check for a valid pointer and delete if present */ 
  140951           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  140952             :   /* add assignment to result here */ 
  140953           0 :      result->p_operatorPosition = operatorPosition_copy; 
  140954             :   // Copy non-constructor parameter data member (access function): mode_copy
  140955             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  140956             :   // case: toBeCopied == COPY_DATA for mode
  140957           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  140958           0 :      result->p_mode = mode_copy; 
  140959             :   // case: not a listType for (using conditionalToSetParent)operand_i
  140960           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  140961             :              { 
  140962           0 :                operand_i_copy->set_parent(result); 
  140963             :              } 
  140964             : 
  140965             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  140966             : 
  140967             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  140968             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  140969             :   // fixupCopy(result,help);
  140970             : 
  140971             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  140972             :   // the Sg_File_Info objects that are built for the new IR nodes.
  140973           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  140974           0 :      if (locatedNode != NULL)
  140975             :         {
  140976             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  140977           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  140978           0 :           ROSE_ASSERT(start != NULL);
  140979             : #if 0
  140980             :        // Debugging information
  140981             :           if (start->get_parent() == NULL)
  140982             :              {
  140983             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  140984             :              }
  140985             : #endif
  140986           0 :           start->set_parent(locatedNode);
  140987           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  140988             : 
  140989           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  140990             : 
  140991             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  140992             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  140993             :        // ROSE_ASSERT(end != NULL);
  140994           0 :           if (end == NULL)
  140995             :              {
  140996           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  140997             :              }
  140998             :             else
  140999             :              {
  141000             : #if 0
  141001             :             // Debugging information
  141002             :                if (end->get_parent() == NULL)
  141003             :                   {
  141004             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141005             :                   }
  141006             : #endif
  141007           0 :                end->set_parent(locatedNode);
  141008           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  141009             :              }
  141010             : 
  141011           0 :           SgExpression* expression = isSgExpression(result);
  141012           0 :           if (isSgExpression(this) != NULL)
  141013             :              {
  141014           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  141015             : 
  141016             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  141017           0 :                if (operatorPosition != NULL)
  141018             :                   {
  141019             : #if 0
  141020             :                  // Debugging information
  141021             :                     if (operatorPosition->get_parent() == NULL)
  141022             :                        {
  141023             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141024             :                        }
  141025             : #endif
  141026           0 :                     operatorPosition->set_parent(expression);
  141027           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  141028             :                   }
  141029             :              }
  141030             :         }
  141031             : 
  141032             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  141033           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  141034           0 :      if (initializedName != NULL)
  141035             :         {
  141036             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  141037           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  141038           0 :           ROSE_ASSERT(start != NULL);
  141039             : #if 0
  141040             :        // Debugging information
  141041             :           if (start->get_parent() == NULL)
  141042             :              {
  141043             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141044             :              }
  141045             : #endif
  141046           0 :           start->set_parent(initializedName);
  141047           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  141048             : 
  141049             : #if 0
  141050             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  141051             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  141052             : 
  141053             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  141054             :        // ROSE_ASSERT(end != NULL);
  141055             :           if (end == NULL)
  141056             :              {
  141057             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  141058             :              }
  141059             :             else
  141060             :              {
  141061             :                if (end->get_parent() == NULL)
  141062             :                   {
  141063             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141064             :                   }
  141065             :                end->set_parent(initializedName);
  141066             :                ROSE_ASSERT(end->get_parent() != NULL);
  141067             :              }
  141068             : #endif
  141069             :         }
  141070             : 
  141071             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  141072           0 :      help.insertCopiedNodePair(this,result);
  141073             : 
  141074             :   // printf ("End of copy SgUserDefinedUnaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  141075             : 
  141076             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  141077             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  141078           0 :      help.decrementDepth();
  141079             : 
  141080             :   // Test if this is the root of the copy!
  141081           0 :      if (help.get_depth() == 0)
  141082             :         {
  141083             :        // This is the original calling node.
  141084             : 
  141085             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  141086             :        // printf ("Calling SgUserDefinedUnaryOp::fixupCopy() (from root of AST being copied) \n");
  141087             : #if ALT_FIXUP_COPY
  141088             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  141089           0 :           fixupCopy_scopes (result,help);
  141090           0 :           fixupCopy_symbols (result,help);
  141091           0 :           fixupCopy_references (result,help);
  141092             : #else
  141093             :           fixupCopy(result,help);
  141094             : #endif
  141095             :        // Allow this to be called recursively, so accumulate the state.
  141096             :        // Also, clear the state in the SgCopyHelp object.
  141097             :        // help.clearState();
  141098             :         }
  141099             : 
  141100           0 :      return result;
  141101             :    }
  141102             : 
  141103             : 
  141104             : /* #line 141105 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  141105             : 
  141106             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  141107             : 
  141108           0 : SgNode* SgMatrixTransposeOp::copy ( SgCopyHelp& help) const
  141109             :    {
  141110           0 :      SgMatrixTransposeOp* result = NULL;
  141111             : 
  141112             :   // printf ("Copy SgMatrixTransposeOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  141113             : 
  141114             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  141115             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  141116             :   // The default value of the depth is 0, so after this call the depth is 1!
  141117           0 :      help.incrementDepth();
  141118             : 
  141119             : #if 0
  141120             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  141121             :   // but it is not generally true that things can only be copied once!
  141122             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  141123             :   // AstAttribute* existingAttribute = const_cast<SgMatrixTransposeOp*>(this)->attribute["copied"];
  141124             :      bool previouslyCopied = const_cast<SgMatrixTransposeOp*>(this)->attribute.exists("copied");
  141125             :      if (previouslyCopied == true)
  141126             :         {
  141127             :           this->get_file_info()->display("Called from copy SgMatrixTransposeOp: debug");
  141128             :         }
  141129             :      ROSE_ASSERT(previouslyCopied == false);
  141130             : 
  141131             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  141132             :      AstAttribute* newAttribute = new AstAttribute();
  141133             :      ROSE_ASSERT(newAttribute != NULL);
  141134             : 
  141135             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  141136             :      const_cast<SgMatrixTransposeOp*>(this)->attribute.add("copied",newAttribute);
  141137             : #endif
  141138             : 
  141139             :   // Copy data members from base classes
  141140             :   // Copy constructor parameter data member: startOfConstruct_copy
  141141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  141142             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  141143           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  141144           0 :      if ( p_startOfConstruct != NULL ) 
  141145             :         { 
  141146           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  141147             :         } 
  141148             :        else 
  141149             :         { 
  141150             :           startOfConstruct_copy = NULL; 
  141151             :         } 
  141152             :   // Copy constructor parameter data member: operand_i_copy
  141153           0 :      SgExpression* operand_i_copy; 
  141154             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  141155           0 :           if (get_operand_i() != NULL) 
  141156             :              { 
  141157           0 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  141158             :              } 
  141159             :             else 
  141160             :              { 
  141161             :                operand_i_copy = NULL; 
  141162             :              } 
  141163             :   // Copy constructor parameter data member: expression_type_copy
  141164             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  141165             :   // case: toBeCopied == COPY_DATA for expression_type
  141166           0 :      SgType* expression_type_copy = p_expression_type; 
  141167             :  
  141168             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  141169             : 
  141170             :   // Build an empty copy of this object (will be filled in, but 
  141171             :   // the parent can't be set and must be set by the caller)
  141172           0 :      result = new SgMatrixTransposeOp(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  141173           0 :      ROSE_ASSERT(result != NULL);
  141174             : 
  141175             :   // Copy data members of "this" class
  141176             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  141177             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  141178             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  141179           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  141180           0 :      if ( p_endOfConstruct != NULL ) 
  141181             :         { 
  141182           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  141183             :         } 
  141184             :        else 
  141185             :         { 
  141186             :           endOfConstruct_copy = NULL; 
  141187             :         } 
  141188             :   /* check for a valid pointer and delete if present */ 
  141189           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  141190             :   /* add assignment to result here */ 
  141191           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  141192             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  141193             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  141194             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  141195           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  141196           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  141197             :         { 
  141198           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  141199             :         } 
  141200             :        else 
  141201             :         { 
  141202             :           attachedPreprocessingInfoPtr_copy = NULL; 
  141203             :         } 
  141204             :   /* check for a valid pointer and delete if present */ 
  141205           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  141206             :   /* add assignment to result here */ 
  141207           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  141208             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  141209             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  141210             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  141211           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  141212           0 :      if ( p_attributeMechanism != NULL ) 
  141213             :         { 
  141214           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  141215             :         } 
  141216             :        else 
  141217             :         { 
  141218             :           attributeMechanism_copy = NULL; 
  141219             :         } 
  141220             :   /* check for a valid pointer and delete if present */ 
  141221           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  141222             :   /* add assignment to result here */ 
  141223           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  141224             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  141225             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  141226             :   // case: toBeCopied == COPY_DATA for need_paren
  141227           0 :      bool need_paren_copy = p_need_paren; 
  141228           0 :      result->p_need_paren = need_paren_copy; 
  141229             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  141230             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  141231             :   // case: toBeCopied == COPY_DATA for lvalue
  141232           0 :      bool lvalue_copy = p_lvalue; 
  141233           0 :      result->p_lvalue = lvalue_copy; 
  141234             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  141235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  141236             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  141237           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  141238           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  141239             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  141240             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  141241             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  141242           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  141243           0 :      if ( p_operatorPosition != NULL ) 
  141244             :         { 
  141245           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  141246             :         } 
  141247             :        else 
  141248             :         { 
  141249             :           operatorPosition_copy = NULL; 
  141250             :         } 
  141251             :   /* check for a valid pointer and delete if present */ 
  141252           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  141253             :   /* add assignment to result here */ 
  141254           0 :      result->p_operatorPosition = operatorPosition_copy; 
  141255             :   // Copy non-constructor parameter data member (access function): mode_copy
  141256             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for mode
  141257             :   // case: toBeCopied == COPY_DATA for mode
  141258           0 :      SgUnaryOp::Sgop_mode mode_copy = p_mode; 
  141259           0 :      result->p_mode = mode_copy; 
  141260             :   // Copy non-constructor parameter data member (access function): is_conjugate_copy
  141261             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_conjugate
  141262             :   // case: toBeCopied == COPY_DATA for is_conjugate
  141263           0 :      bool is_conjugate_copy = p_is_conjugate; 
  141264           0 :      result->p_is_conjugate = is_conjugate_copy; 
  141265             :   // case: not a listType for (using conditionalToSetParent)operand_i
  141266           0 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  141267             :              { 
  141268           0 :                operand_i_copy->set_parent(result); 
  141269             :              } 
  141270             : 
  141271             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  141272             : 
  141273             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  141274             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  141275             :   // fixupCopy(result,help);
  141276             : 
  141277             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  141278             :   // the Sg_File_Info objects that are built for the new IR nodes.
  141279           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  141280           0 :      if (locatedNode != NULL)
  141281             :         {
  141282             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  141283           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  141284           0 :           ROSE_ASSERT(start != NULL);
  141285             : #if 0
  141286             :        // Debugging information
  141287             :           if (start->get_parent() == NULL)
  141288             :              {
  141289             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141290             :              }
  141291             : #endif
  141292           0 :           start->set_parent(locatedNode);
  141293           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  141294             : 
  141295           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  141296             : 
  141297             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  141298             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  141299             :        // ROSE_ASSERT(end != NULL);
  141300           0 :           if (end == NULL)
  141301             :              {
  141302           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  141303             :              }
  141304             :             else
  141305             :              {
  141306             : #if 0
  141307             :             // Debugging information
  141308             :                if (end->get_parent() == NULL)
  141309             :                   {
  141310             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141311             :                   }
  141312             : #endif
  141313           0 :                end->set_parent(locatedNode);
  141314           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  141315             :              }
  141316             : 
  141317           0 :           SgExpression* expression = isSgExpression(result);
  141318           0 :           if (isSgExpression(this) != NULL)
  141319             :              {
  141320           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  141321             : 
  141322             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  141323           0 :                if (operatorPosition != NULL)
  141324             :                   {
  141325             : #if 0
  141326             :                  // Debugging information
  141327             :                     if (operatorPosition->get_parent() == NULL)
  141328             :                        {
  141329             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141330             :                        }
  141331             : #endif
  141332           0 :                     operatorPosition->set_parent(expression);
  141333           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  141334             :                   }
  141335             :              }
  141336             :         }
  141337             : 
  141338             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  141339           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  141340           0 :      if (initializedName != NULL)
  141341             :         {
  141342             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  141343           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  141344           0 :           ROSE_ASSERT(start != NULL);
  141345             : #if 0
  141346             :        // Debugging information
  141347             :           if (start->get_parent() == NULL)
  141348             :              {
  141349             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141350             :              }
  141351             : #endif
  141352           0 :           start->set_parent(initializedName);
  141353           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  141354             : 
  141355             : #if 0
  141356             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  141357             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  141358             : 
  141359             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  141360             :        // ROSE_ASSERT(end != NULL);
  141361             :           if (end == NULL)
  141362             :              {
  141363             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  141364             :              }
  141365             :             else
  141366             :              {
  141367             :                if (end->get_parent() == NULL)
  141368             :                   {
  141369             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141370             :                   }
  141371             :                end->set_parent(initializedName);
  141372             :                ROSE_ASSERT(end->get_parent() != NULL);
  141373             :              }
  141374             : #endif
  141375             :         }
  141376             : 
  141377             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  141378           0 :      help.insertCopiedNodePair(this,result);
  141379             : 
  141380             :   // printf ("End of copy SgMatrixTransposeOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  141381             : 
  141382             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  141383             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  141384           0 :      help.decrementDepth();
  141385             : 
  141386             :   // Test if this is the root of the copy!
  141387           0 :      if (help.get_depth() == 0)
  141388             :         {
  141389             :        // This is the original calling node.
  141390             : 
  141391             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  141392             :        // printf ("Calling SgMatrixTransposeOp::fixupCopy() (from root of AST being copied) \n");
  141393             : #if ALT_FIXUP_COPY
  141394             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  141395           0 :           fixupCopy_scopes (result,help);
  141396           0 :           fixupCopy_symbols (result,help);
  141397           0 :           fixupCopy_references (result,help);
  141398             : #else
  141399             :           fixupCopy(result,help);
  141400             : #endif
  141401             :        // Allow this to be called recursively, so accumulate the state.
  141402             :        // Also, clear the state in the SgCopyHelp object.
  141403             :        // help.clearState();
  141404             :         }
  141405             : 
  141406           0 :      return result;
  141407             :    }
  141408             : 
  141409             : 
  141410             : /* #line 141411 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  141411             : 
  141412             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  141413             : 
  141414           0 : SgNode* SgBinaryOp::copy ( SgCopyHelp& help) const
  141415             :    {
  141416           0 :      SgBinaryOp* result = NULL;
  141417             : 
  141418             :   // printf ("Copy SgBinaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  141419             : 
  141420             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  141421             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  141422             :   // The default value of the depth is 0, so after this call the depth is 1!
  141423           0 :      help.incrementDepth();
  141424             : 
  141425             : #if 0
  141426             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  141427             :   // but it is not generally true that things can only be copied once!
  141428             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  141429             :   // AstAttribute* existingAttribute = const_cast<SgBinaryOp*>(this)->attribute["copied"];
  141430             :      bool previouslyCopied = const_cast<SgBinaryOp*>(this)->attribute.exists("copied");
  141431             :      if (previouslyCopied == true)
  141432             :         {
  141433             :           this->get_file_info()->display("Called from copy SgBinaryOp: debug");
  141434             :         }
  141435             :      ROSE_ASSERT(previouslyCopied == false);
  141436             : 
  141437             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  141438             :      AstAttribute* newAttribute = new AstAttribute();
  141439             :      ROSE_ASSERT(newAttribute != NULL);
  141440             : 
  141441             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  141442             :      const_cast<SgBinaryOp*>(this)->attribute.add("copied",newAttribute);
  141443             : #endif
  141444             : 
  141445             :   // Copy data members from base classes
  141446             :   // Copy constructor parameter data member: startOfConstruct_copy
  141447             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  141448             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  141449           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  141450           0 :      if ( p_startOfConstruct != NULL ) 
  141451             :         { 
  141452           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  141453             :         } 
  141454             :        else 
  141455             :         { 
  141456             :           startOfConstruct_copy = NULL; 
  141457             :         } 
  141458             :   // Copy constructor parameter data member: lhs_operand_i_copy
  141459           0 :      SgExpression* lhs_operand_i_copy; 
  141460             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  141461           0 :           if (get_lhs_operand_i() != NULL) 
  141462             :              { 
  141463           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  141464             :              } 
  141465             :             else 
  141466             :              { 
  141467             :                lhs_operand_i_copy = NULL; 
  141468             :              } 
  141469             :   // Copy constructor parameter data member: rhs_operand_i_copy
  141470           0 :      SgExpression* rhs_operand_i_copy; 
  141471             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  141472           0 :           if (get_rhs_operand_i() != NULL) 
  141473             :              { 
  141474           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  141475             :              } 
  141476             :             else 
  141477             :              { 
  141478             :                rhs_operand_i_copy = NULL; 
  141479             :              } 
  141480             :   // Copy constructor parameter data member: expression_type_copy
  141481             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  141482             :   // case: toBeCopied == COPY_DATA for expression_type
  141483           0 :      SgType* expression_type_copy = p_expression_type; 
  141484             :  
  141485             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  141486             : 
  141487             :   // Build an empty copy of this object (will be filled in, but 
  141488             :   // the parent can't be set and must be set by the caller)
  141489           0 :      result = new SgBinaryOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  141490           0 :      ROSE_ASSERT(result != NULL);
  141491             : 
  141492             :   // Copy data members of "this" class
  141493             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  141494             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  141495             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  141496           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  141497           0 :      if ( p_endOfConstruct != NULL ) 
  141498             :         { 
  141499           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  141500             :         } 
  141501             :        else 
  141502             :         { 
  141503             :           endOfConstruct_copy = NULL; 
  141504             :         } 
  141505             :   /* check for a valid pointer and delete if present */ 
  141506           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  141507             :   /* add assignment to result here */ 
  141508           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  141509             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  141510             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  141511             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  141512           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  141513           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  141514             :         { 
  141515           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  141516             :         } 
  141517             :        else 
  141518             :         { 
  141519             :           attachedPreprocessingInfoPtr_copy = NULL; 
  141520             :         } 
  141521             :   /* check for a valid pointer and delete if present */ 
  141522           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  141523             :   /* add assignment to result here */ 
  141524           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  141525             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  141526             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  141527             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  141528           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  141529           0 :      if ( p_attributeMechanism != NULL ) 
  141530             :         { 
  141531           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  141532             :         } 
  141533             :        else 
  141534             :         { 
  141535             :           attributeMechanism_copy = NULL; 
  141536             :         } 
  141537             :   /* check for a valid pointer and delete if present */ 
  141538           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  141539             :   /* add assignment to result here */ 
  141540           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  141541             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  141542             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  141543             :   // case: toBeCopied == COPY_DATA for need_paren
  141544           0 :      bool need_paren_copy = p_need_paren; 
  141545           0 :      result->p_need_paren = need_paren_copy; 
  141546             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  141547             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  141548             :   // case: toBeCopied == COPY_DATA for lvalue
  141549           0 :      bool lvalue_copy = p_lvalue; 
  141550           0 :      result->p_lvalue = lvalue_copy; 
  141551             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  141552             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  141553             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  141554           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  141555           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  141556             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  141557             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  141558             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  141559           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  141560           0 :      if ( p_operatorPosition != NULL ) 
  141561             :         { 
  141562           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  141563             :         } 
  141564             :        else 
  141565             :         { 
  141566             :           operatorPosition_copy = NULL; 
  141567             :         } 
  141568             :   /* check for a valid pointer and delete if present */ 
  141569           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  141570             :   /* add assignment to result here */ 
  141571           0 :      result->p_operatorPosition = operatorPosition_copy; 
  141572             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  141573             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  141574             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  141575           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  141576           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  141577             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  141578           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  141579             :              { 
  141580           0 :                lhs_operand_i_copy->set_parent(result); 
  141581             :              } 
  141582             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  141583           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  141584             :              { 
  141585           0 :                rhs_operand_i_copy->set_parent(result); 
  141586             :              } 
  141587             : 
  141588             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  141589             : 
  141590             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  141591             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  141592             :   // fixupCopy(result,help);
  141593             : 
  141594             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  141595             :   // the Sg_File_Info objects that are built for the new IR nodes.
  141596           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  141597           0 :      if (locatedNode != NULL)
  141598             :         {
  141599             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  141600           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  141601           0 :           ROSE_ASSERT(start != NULL);
  141602             : #if 0
  141603             :        // Debugging information
  141604             :           if (start->get_parent() == NULL)
  141605             :              {
  141606             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141607             :              }
  141608             : #endif
  141609           0 :           start->set_parent(locatedNode);
  141610           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  141611             : 
  141612           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  141613             : 
  141614             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  141615             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  141616             :        // ROSE_ASSERT(end != NULL);
  141617           0 :           if (end == NULL)
  141618             :              {
  141619           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  141620             :              }
  141621             :             else
  141622             :              {
  141623             : #if 0
  141624             :             // Debugging information
  141625             :                if (end->get_parent() == NULL)
  141626             :                   {
  141627             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141628             :                   }
  141629             : #endif
  141630           0 :                end->set_parent(locatedNode);
  141631           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  141632             :              }
  141633             : 
  141634           0 :           SgExpression* expression = isSgExpression(result);
  141635           0 :           if (isSgExpression(this) != NULL)
  141636             :              {
  141637           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  141638             : 
  141639             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  141640           0 :                if (operatorPosition != NULL)
  141641             :                   {
  141642             : #if 0
  141643             :                  // Debugging information
  141644             :                     if (operatorPosition->get_parent() == NULL)
  141645             :                        {
  141646             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141647             :                        }
  141648             : #endif
  141649           0 :                     operatorPosition->set_parent(expression);
  141650           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  141651             :                   }
  141652             :              }
  141653             :         }
  141654             : 
  141655             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  141656           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  141657           0 :      if (initializedName != NULL)
  141658             :         {
  141659             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  141660           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  141661           0 :           ROSE_ASSERT(start != NULL);
  141662             : #if 0
  141663             :        // Debugging information
  141664             :           if (start->get_parent() == NULL)
  141665             :              {
  141666             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141667             :              }
  141668             : #endif
  141669           0 :           start->set_parent(initializedName);
  141670           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  141671             : 
  141672             : #if 0
  141673             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  141674             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  141675             : 
  141676             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  141677             :        // ROSE_ASSERT(end != NULL);
  141678             :           if (end == NULL)
  141679             :              {
  141680             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  141681             :              }
  141682             :             else
  141683             :              {
  141684             :                if (end->get_parent() == NULL)
  141685             :                   {
  141686             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141687             :                   }
  141688             :                end->set_parent(initializedName);
  141689             :                ROSE_ASSERT(end->get_parent() != NULL);
  141690             :              }
  141691             : #endif
  141692             :         }
  141693             : 
  141694             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  141695           0 :      help.insertCopiedNodePair(this,result);
  141696             : 
  141697             :   // printf ("End of copy SgBinaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  141698             : 
  141699             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  141700             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  141701           0 :      help.decrementDepth();
  141702             : 
  141703             :   // Test if this is the root of the copy!
  141704           0 :      if (help.get_depth() == 0)
  141705             :         {
  141706             :        // This is the original calling node.
  141707             : 
  141708             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  141709             :        // printf ("Calling SgBinaryOp::fixupCopy() (from root of AST being copied) \n");
  141710             : #if ALT_FIXUP_COPY
  141711             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  141712           0 :           fixupCopy_scopes (result,help);
  141713           0 :           fixupCopy_symbols (result,help);
  141714           0 :           fixupCopy_references (result,help);
  141715             : #else
  141716             :           fixupCopy(result,help);
  141717             : #endif
  141718             :        // Allow this to be called recursively, so accumulate the state.
  141719             :        // Also, clear the state in the SgCopyHelp object.
  141720             :        // help.clearState();
  141721             :         }
  141722             : 
  141723           0 :      return result;
  141724             :    }
  141725             : 
  141726             : 
  141727             : /* #line 141728 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  141728             : 
  141729             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  141730             : 
  141731         336 : SgNode* SgArrowExp::copy ( SgCopyHelp& help) const
  141732             :    {
  141733         336 :      SgArrowExp* result = NULL;
  141734             : 
  141735             :   // printf ("Copy SgArrowExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  141736             : 
  141737             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  141738             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  141739             :   // The default value of the depth is 0, so after this call the depth is 1!
  141740         336 :      help.incrementDepth();
  141741             : 
  141742             : #if 0
  141743             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  141744             :   // but it is not generally true that things can only be copied once!
  141745             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  141746             :   // AstAttribute* existingAttribute = const_cast<SgArrowExp*>(this)->attribute["copied"];
  141747             :      bool previouslyCopied = const_cast<SgArrowExp*>(this)->attribute.exists("copied");
  141748             :      if (previouslyCopied == true)
  141749             :         {
  141750             :           this->get_file_info()->display("Called from copy SgArrowExp: debug");
  141751             :         }
  141752             :      ROSE_ASSERT(previouslyCopied == false);
  141753             : 
  141754             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  141755             :      AstAttribute* newAttribute = new AstAttribute();
  141756             :      ROSE_ASSERT(newAttribute != NULL);
  141757             : 
  141758             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  141759             :      const_cast<SgArrowExp*>(this)->attribute.add("copied",newAttribute);
  141760             : #endif
  141761             : 
  141762             :   // Copy data members from base classes
  141763             :   // Copy constructor parameter data member: startOfConstruct_copy
  141764             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  141765             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  141766         336 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  141767         336 :      if ( p_startOfConstruct != NULL ) 
  141768             :         { 
  141769         336 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  141770             :         } 
  141771             :        else 
  141772             :         { 
  141773             :           startOfConstruct_copy = NULL; 
  141774             :         } 
  141775             :   // Copy constructor parameter data member: lhs_operand_i_copy
  141776         336 :      SgExpression* lhs_operand_i_copy; 
  141777             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  141778         336 :           if (get_lhs_operand_i() != NULL) 
  141779             :              { 
  141780         336 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  141781             :              } 
  141782             :             else 
  141783             :              { 
  141784             :                lhs_operand_i_copy = NULL; 
  141785             :              } 
  141786             :   // Copy constructor parameter data member: rhs_operand_i_copy
  141787         336 :      SgExpression* rhs_operand_i_copy; 
  141788             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  141789         336 :           if (get_rhs_operand_i() != NULL) 
  141790             :              { 
  141791         336 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  141792             :              } 
  141793             :             else 
  141794             :              { 
  141795             :                rhs_operand_i_copy = NULL; 
  141796             :              } 
  141797             :   // Copy constructor parameter data member: expression_type_copy
  141798             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  141799             :   // case: toBeCopied == COPY_DATA for expression_type
  141800         336 :      SgType* expression_type_copy = p_expression_type; 
  141801             :  
  141802             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  141803             : 
  141804             :   // Build an empty copy of this object (will be filled in, but 
  141805             :   // the parent can't be set and must be set by the caller)
  141806         336 :      result = new SgArrowExp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  141807         336 :      ROSE_ASSERT(result != NULL);
  141808             : 
  141809             :   // Copy data members of "this" class
  141810             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  141811             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  141812             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  141813         336 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  141814         336 :      if ( p_endOfConstruct != NULL ) 
  141815             :         { 
  141816         336 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  141817             :         } 
  141818             :        else 
  141819             :         { 
  141820             :           endOfConstruct_copy = NULL; 
  141821             :         } 
  141822             :   /* check for a valid pointer and delete if present */ 
  141823         336 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  141824             :   /* add assignment to result here */ 
  141825         336 :      result->p_endOfConstruct = endOfConstruct_copy; 
  141826             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  141827             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  141828             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  141829         336 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  141830         336 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  141831             :         { 
  141832           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  141833             :         } 
  141834             :        else 
  141835             :         { 
  141836             :           attachedPreprocessingInfoPtr_copy = NULL; 
  141837             :         } 
  141838             :   /* check for a valid pointer and delete if present */ 
  141839         336 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  141840             :   /* add assignment to result here */ 
  141841         336 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  141842             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  141843             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  141844             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  141845         336 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  141846         336 :      if ( p_attributeMechanism != NULL ) 
  141847             :         { 
  141848           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  141849             :         } 
  141850             :        else 
  141851             :         { 
  141852             :           attributeMechanism_copy = NULL; 
  141853             :         } 
  141854             :   /* check for a valid pointer and delete if present */ 
  141855         336 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  141856             :   /* add assignment to result here */ 
  141857         336 :      result->p_attributeMechanism = attributeMechanism_copy; 
  141858             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  141859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  141860             :   // case: toBeCopied == COPY_DATA for need_paren
  141861         336 :      bool need_paren_copy = p_need_paren; 
  141862         336 :      result->p_need_paren = need_paren_copy; 
  141863             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  141864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  141865             :   // case: toBeCopied == COPY_DATA for lvalue
  141866         336 :      bool lvalue_copy = p_lvalue; 
  141867         336 :      result->p_lvalue = lvalue_copy; 
  141868             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  141869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  141870             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  141871         336 :      bool global_qualified_name_copy = p_global_qualified_name; 
  141872         336 :      result->p_global_qualified_name = global_qualified_name_copy; 
  141873             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  141874             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  141875             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  141876         336 :      Sg_File_Info* operatorPosition_copy = NULL; 
  141877         336 :      if ( p_operatorPosition != NULL ) 
  141878             :         { 
  141879         336 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  141880             :         } 
  141881             :        else 
  141882             :         { 
  141883             :           operatorPosition_copy = NULL; 
  141884             :         } 
  141885             :   /* check for a valid pointer and delete if present */ 
  141886         336 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  141887             :   /* add assignment to result here */ 
  141888         336 :      result->p_operatorPosition = operatorPosition_copy; 
  141889             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  141890             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  141891             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  141892         336 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  141893         336 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  141894             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  141895         336 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  141896             :              { 
  141897           0 :                lhs_operand_i_copy->set_parent(result); 
  141898             :              } 
  141899             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  141900         336 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  141901             :              { 
  141902           0 :                rhs_operand_i_copy->set_parent(result); 
  141903             :              } 
  141904             : 
  141905             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  141906             : 
  141907             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  141908             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  141909             :   // fixupCopy(result,help);
  141910             : 
  141911             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  141912             :   // the Sg_File_Info objects that are built for the new IR nodes.
  141913         336 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  141914         336 :      if (locatedNode != NULL)
  141915             :         {
  141916             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  141917         336 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  141918         336 :           ROSE_ASSERT(start != NULL);
  141919             : #if 0
  141920             :        // Debugging information
  141921             :           if (start->get_parent() == NULL)
  141922             :              {
  141923             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141924             :              }
  141925             : #endif
  141926         336 :           start->set_parent(locatedNode);
  141927         336 :           ROSE_ASSERT(start->get_parent() != NULL);
  141928             : 
  141929         336 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  141930             : 
  141931             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  141932             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  141933             :        // ROSE_ASSERT(end != NULL);
  141934         336 :           if (end == NULL)
  141935             :              {
  141936           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  141937             :              }
  141938             :             else
  141939             :              {
  141940             : #if 0
  141941             :             // Debugging information
  141942             :                if (end->get_parent() == NULL)
  141943             :                   {
  141944             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141945             :                   }
  141946             : #endif
  141947         336 :                end->set_parent(locatedNode);
  141948         336 :                ROSE_ASSERT(end->get_parent() != NULL);
  141949             :              }
  141950             : 
  141951         336 :           SgExpression* expression = isSgExpression(result);
  141952         336 :           if (isSgExpression(this) != NULL)
  141953             :              {
  141954         336 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  141955             : 
  141956             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  141957         336 :                if (operatorPosition != NULL)
  141958             :                   {
  141959             : #if 0
  141960             :                  // Debugging information
  141961             :                     if (operatorPosition->get_parent() == NULL)
  141962             :                        {
  141963             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141964             :                        }
  141965             : #endif
  141966         336 :                     operatorPosition->set_parent(expression);
  141967         336 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  141968             :                   }
  141969             :              }
  141970             :         }
  141971             : 
  141972             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  141973         336 :      SgInitializedName* initializedName = isSgInitializedName(result);
  141974         336 :      if (initializedName != NULL)
  141975             :         {
  141976             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  141977           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  141978           0 :           ROSE_ASSERT(start != NULL);
  141979             : #if 0
  141980             :        // Debugging information
  141981             :           if (start->get_parent() == NULL)
  141982             :              {
  141983             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  141984             :              }
  141985             : #endif
  141986           0 :           start->set_parent(initializedName);
  141987           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  141988             : 
  141989             : #if 0
  141990             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  141991             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  141992             : 
  141993             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  141994             :        // ROSE_ASSERT(end != NULL);
  141995             :           if (end == NULL)
  141996             :              {
  141997             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  141998             :              }
  141999             :             else
  142000             :              {
  142001             :                if (end->get_parent() == NULL)
  142002             :                   {
  142003             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142004             :                   }
  142005             :                end->set_parent(initializedName);
  142006             :                ROSE_ASSERT(end->get_parent() != NULL);
  142007             :              }
  142008             : #endif
  142009             :         }
  142010             : 
  142011             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  142012         336 :      help.insertCopiedNodePair(this,result);
  142013             : 
  142014             :   // printf ("End of copy SgArrowExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  142015             : 
  142016             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  142017             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  142018         336 :      help.decrementDepth();
  142019             : 
  142020             :   // Test if this is the root of the copy!
  142021         336 :      if (help.get_depth() == 0)
  142022             :         {
  142023             :        // This is the original calling node.
  142024             : 
  142025             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  142026             :        // printf ("Calling SgArrowExp::fixupCopy() (from root of AST being copied) \n");
  142027             : #if ALT_FIXUP_COPY
  142028             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  142029           2 :           fixupCopy_scopes (result,help);
  142030           2 :           fixupCopy_symbols (result,help);
  142031           2 :           fixupCopy_references (result,help);
  142032             : #else
  142033             :           fixupCopy(result,help);
  142034             : #endif
  142035             :        // Allow this to be called recursively, so accumulate the state.
  142036             :        // Also, clear the state in the SgCopyHelp object.
  142037             :        // help.clearState();
  142038             :         }
  142039             : 
  142040         336 :      return result;
  142041             :    }
  142042             : 
  142043             : 
  142044             : /* #line 142045 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  142045             : 
  142046             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142047             : 
  142048         192 : SgNode* SgDotExp::copy ( SgCopyHelp& help) const
  142049             :    {
  142050         192 :      SgDotExp* result = NULL;
  142051             : 
  142052             :   // printf ("Copy SgDotExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  142053             : 
  142054             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  142055             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  142056             :   // The default value of the depth is 0, so after this call the depth is 1!
  142057         192 :      help.incrementDepth();
  142058             : 
  142059             : #if 0
  142060             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  142061             :   // but it is not generally true that things can only be copied once!
  142062             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  142063             :   // AstAttribute* existingAttribute = const_cast<SgDotExp*>(this)->attribute["copied"];
  142064             :      bool previouslyCopied = const_cast<SgDotExp*>(this)->attribute.exists("copied");
  142065             :      if (previouslyCopied == true)
  142066             :         {
  142067             :           this->get_file_info()->display("Called from copy SgDotExp: debug");
  142068             :         }
  142069             :      ROSE_ASSERT(previouslyCopied == false);
  142070             : 
  142071             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  142072             :      AstAttribute* newAttribute = new AstAttribute();
  142073             :      ROSE_ASSERT(newAttribute != NULL);
  142074             : 
  142075             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  142076             :      const_cast<SgDotExp*>(this)->attribute.add("copied",newAttribute);
  142077             : #endif
  142078             : 
  142079             :   // Copy data members from base classes
  142080             :   // Copy constructor parameter data member: startOfConstruct_copy
  142081             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  142082             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  142083         192 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  142084         192 :      if ( p_startOfConstruct != NULL ) 
  142085             :         { 
  142086         192 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  142087             :         } 
  142088             :        else 
  142089             :         { 
  142090             :           startOfConstruct_copy = NULL; 
  142091             :         } 
  142092             :   // Copy constructor parameter data member: lhs_operand_i_copy
  142093         192 :      SgExpression* lhs_operand_i_copy; 
  142094             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  142095         192 :           if (get_lhs_operand_i() != NULL) 
  142096             :              { 
  142097         192 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  142098             :              } 
  142099             :             else 
  142100             :              { 
  142101             :                lhs_operand_i_copy = NULL; 
  142102             :              } 
  142103             :   // Copy constructor parameter data member: rhs_operand_i_copy
  142104         192 :      SgExpression* rhs_operand_i_copy; 
  142105             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  142106         192 :           if (get_rhs_operand_i() != NULL) 
  142107             :              { 
  142108         192 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  142109             :              } 
  142110             :             else 
  142111             :              { 
  142112             :                rhs_operand_i_copy = NULL; 
  142113             :              } 
  142114             :   // Copy constructor parameter data member: expression_type_copy
  142115             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  142116             :   // case: toBeCopied == COPY_DATA for expression_type
  142117         192 :      SgType* expression_type_copy = p_expression_type; 
  142118             :  
  142119             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142120             : 
  142121             :   // Build an empty copy of this object (will be filled in, but 
  142122             :   // the parent can't be set and must be set by the caller)
  142123         192 :      result = new SgDotExp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  142124         192 :      ROSE_ASSERT(result != NULL);
  142125             : 
  142126             :   // Copy data members of "this" class
  142127             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  142128             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  142129             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  142130         192 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  142131         192 :      if ( p_endOfConstruct != NULL ) 
  142132             :         { 
  142133         192 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  142134             :         } 
  142135             :        else 
  142136             :         { 
  142137             :           endOfConstruct_copy = NULL; 
  142138             :         } 
  142139             :   /* check for a valid pointer and delete if present */ 
  142140         192 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  142141             :   /* add assignment to result here */ 
  142142         192 :      result->p_endOfConstruct = endOfConstruct_copy; 
  142143             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  142144             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  142145             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  142146         192 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  142147         192 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  142148             :         { 
  142149           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  142150             :         } 
  142151             :        else 
  142152             :         { 
  142153             :           attachedPreprocessingInfoPtr_copy = NULL; 
  142154             :         } 
  142155             :   /* check for a valid pointer and delete if present */ 
  142156         192 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  142157             :   /* add assignment to result here */ 
  142158         192 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  142159             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  142160             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  142161             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  142162         192 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  142163         192 :      if ( p_attributeMechanism != NULL ) 
  142164             :         { 
  142165           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  142166             :         } 
  142167             :        else 
  142168             :         { 
  142169             :           attributeMechanism_copy = NULL; 
  142170             :         } 
  142171             :   /* check for a valid pointer and delete if present */ 
  142172         192 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  142173             :   /* add assignment to result here */ 
  142174         192 :      result->p_attributeMechanism = attributeMechanism_copy; 
  142175             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  142176             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  142177             :   // case: toBeCopied == COPY_DATA for need_paren
  142178         192 :      bool need_paren_copy = p_need_paren; 
  142179         192 :      result->p_need_paren = need_paren_copy; 
  142180             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  142181             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  142182             :   // case: toBeCopied == COPY_DATA for lvalue
  142183         192 :      bool lvalue_copy = p_lvalue; 
  142184         192 :      result->p_lvalue = lvalue_copy; 
  142185             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  142186             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  142187             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  142188         192 :      bool global_qualified_name_copy = p_global_qualified_name; 
  142189         192 :      result->p_global_qualified_name = global_qualified_name_copy; 
  142190             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  142191             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  142192             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  142193         192 :      Sg_File_Info* operatorPosition_copy = NULL; 
  142194         192 :      if ( p_operatorPosition != NULL ) 
  142195             :         { 
  142196         192 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  142197             :         } 
  142198             :        else 
  142199             :         { 
  142200             :           operatorPosition_copy = NULL; 
  142201             :         } 
  142202             :   /* check for a valid pointer and delete if present */ 
  142203         192 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  142204             :   /* add assignment to result here */ 
  142205         192 :      result->p_operatorPosition = operatorPosition_copy; 
  142206             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  142207             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  142208             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  142209         192 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  142210         192 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  142211             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  142212         192 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  142213             :              { 
  142214           0 :                lhs_operand_i_copy->set_parent(result); 
  142215             :              } 
  142216             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  142217         192 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  142218             :              { 
  142219           0 :                rhs_operand_i_copy->set_parent(result); 
  142220             :              } 
  142221             : 
  142222             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142223             : 
  142224             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  142225             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  142226             :   // fixupCopy(result,help);
  142227             : 
  142228             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  142229             :   // the Sg_File_Info objects that are built for the new IR nodes.
  142230         192 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  142231         192 :      if (locatedNode != NULL)
  142232             :         {
  142233             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  142234         192 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  142235         192 :           ROSE_ASSERT(start != NULL);
  142236             : #if 0
  142237             :        // Debugging information
  142238             :           if (start->get_parent() == NULL)
  142239             :              {
  142240             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142241             :              }
  142242             : #endif
  142243         192 :           start->set_parent(locatedNode);
  142244         192 :           ROSE_ASSERT(start->get_parent() != NULL);
  142245             : 
  142246         192 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  142247             : 
  142248             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  142249             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  142250             :        // ROSE_ASSERT(end != NULL);
  142251         192 :           if (end == NULL)
  142252             :              {
  142253           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  142254             :              }
  142255             :             else
  142256             :              {
  142257             : #if 0
  142258             :             // Debugging information
  142259             :                if (end->get_parent() == NULL)
  142260             :                   {
  142261             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142262             :                   }
  142263             : #endif
  142264         192 :                end->set_parent(locatedNode);
  142265         192 :                ROSE_ASSERT(end->get_parent() != NULL);
  142266             :              }
  142267             : 
  142268         192 :           SgExpression* expression = isSgExpression(result);
  142269         192 :           if (isSgExpression(this) != NULL)
  142270             :              {
  142271         192 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  142272             : 
  142273             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  142274         192 :                if (operatorPosition != NULL)
  142275             :                   {
  142276             : #if 0
  142277             :                  // Debugging information
  142278             :                     if (operatorPosition->get_parent() == NULL)
  142279             :                        {
  142280             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142281             :                        }
  142282             : #endif
  142283         192 :                     operatorPosition->set_parent(expression);
  142284         192 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  142285             :                   }
  142286             :              }
  142287             :         }
  142288             : 
  142289             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  142290         192 :      SgInitializedName* initializedName = isSgInitializedName(result);
  142291         192 :      if (initializedName != NULL)
  142292             :         {
  142293             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  142294           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  142295           0 :           ROSE_ASSERT(start != NULL);
  142296             : #if 0
  142297             :        // Debugging information
  142298             :           if (start->get_parent() == NULL)
  142299             :              {
  142300             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142301             :              }
  142302             : #endif
  142303           0 :           start->set_parent(initializedName);
  142304           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  142305             : 
  142306             : #if 0
  142307             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  142308             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  142309             : 
  142310             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  142311             :        // ROSE_ASSERT(end != NULL);
  142312             :           if (end == NULL)
  142313             :              {
  142314             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  142315             :              }
  142316             :             else
  142317             :              {
  142318             :                if (end->get_parent() == NULL)
  142319             :                   {
  142320             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142321             :                   }
  142322             :                end->set_parent(initializedName);
  142323             :                ROSE_ASSERT(end->get_parent() != NULL);
  142324             :              }
  142325             : #endif
  142326             :         }
  142327             : 
  142328             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  142329         192 :      help.insertCopiedNodePair(this,result);
  142330             : 
  142331             :   // printf ("End of copy SgDotExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  142332             : 
  142333             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  142334             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  142335         192 :      help.decrementDepth();
  142336             : 
  142337             :   // Test if this is the root of the copy!
  142338         192 :      if (help.get_depth() == 0)
  142339             :         {
  142340             :        // This is the original calling node.
  142341             : 
  142342             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  142343             :        // printf ("Calling SgDotExp::fixupCopy() (from root of AST being copied) \n");
  142344             : #if ALT_FIXUP_COPY
  142345             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  142346           0 :           fixupCopy_scopes (result,help);
  142347           0 :           fixupCopy_symbols (result,help);
  142348           0 :           fixupCopy_references (result,help);
  142349             : #else
  142350             :           fixupCopy(result,help);
  142351             : #endif
  142352             :        // Allow this to be called recursively, so accumulate the state.
  142353             :        // Also, clear the state in the SgCopyHelp object.
  142354             :        // help.clearState();
  142355             :         }
  142356             : 
  142357         192 :      return result;
  142358             :    }
  142359             : 
  142360             : 
  142361             : /* #line 142362 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  142362             : 
  142363             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142364             : 
  142365           0 : SgNode* SgDotStarOp::copy ( SgCopyHelp& help) const
  142366             :    {
  142367           0 :      SgDotStarOp* result = NULL;
  142368             : 
  142369             :   // printf ("Copy SgDotStarOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  142370             : 
  142371             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  142372             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  142373             :   // The default value of the depth is 0, so after this call the depth is 1!
  142374           0 :      help.incrementDepth();
  142375             : 
  142376             : #if 0
  142377             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  142378             :   // but it is not generally true that things can only be copied once!
  142379             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  142380             :   // AstAttribute* existingAttribute = const_cast<SgDotStarOp*>(this)->attribute["copied"];
  142381             :      bool previouslyCopied = const_cast<SgDotStarOp*>(this)->attribute.exists("copied");
  142382             :      if (previouslyCopied == true)
  142383             :         {
  142384             :           this->get_file_info()->display("Called from copy SgDotStarOp: debug");
  142385             :         }
  142386             :      ROSE_ASSERT(previouslyCopied == false);
  142387             : 
  142388             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  142389             :      AstAttribute* newAttribute = new AstAttribute();
  142390             :      ROSE_ASSERT(newAttribute != NULL);
  142391             : 
  142392             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  142393             :      const_cast<SgDotStarOp*>(this)->attribute.add("copied",newAttribute);
  142394             : #endif
  142395             : 
  142396             :   // Copy data members from base classes
  142397             :   // Copy constructor parameter data member: startOfConstruct_copy
  142398             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  142399             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  142400           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  142401           0 :      if ( p_startOfConstruct != NULL ) 
  142402             :         { 
  142403           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  142404             :         } 
  142405             :        else 
  142406             :         { 
  142407             :           startOfConstruct_copy = NULL; 
  142408             :         } 
  142409             :   // Copy constructor parameter data member: lhs_operand_i_copy
  142410           0 :      SgExpression* lhs_operand_i_copy; 
  142411             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  142412           0 :           if (get_lhs_operand_i() != NULL) 
  142413             :              { 
  142414           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  142415             :              } 
  142416             :             else 
  142417             :              { 
  142418             :                lhs_operand_i_copy = NULL; 
  142419             :              } 
  142420             :   // Copy constructor parameter data member: rhs_operand_i_copy
  142421           0 :      SgExpression* rhs_operand_i_copy; 
  142422             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  142423           0 :           if (get_rhs_operand_i() != NULL) 
  142424             :              { 
  142425           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  142426             :              } 
  142427             :             else 
  142428             :              { 
  142429             :                rhs_operand_i_copy = NULL; 
  142430             :              } 
  142431             :   // Copy constructor parameter data member: expression_type_copy
  142432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  142433             :   // case: toBeCopied == COPY_DATA for expression_type
  142434           0 :      SgType* expression_type_copy = p_expression_type; 
  142435             :  
  142436             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142437             : 
  142438             :   // Build an empty copy of this object (will be filled in, but 
  142439             :   // the parent can't be set and must be set by the caller)
  142440           0 :      result = new SgDotStarOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  142441           0 :      ROSE_ASSERT(result != NULL);
  142442             : 
  142443             :   // Copy data members of "this" class
  142444             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  142445             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  142446             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  142447           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  142448           0 :      if ( p_endOfConstruct != NULL ) 
  142449             :         { 
  142450           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  142451             :         } 
  142452             :        else 
  142453             :         { 
  142454             :           endOfConstruct_copy = NULL; 
  142455             :         } 
  142456             :   /* check for a valid pointer and delete if present */ 
  142457           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  142458             :   /* add assignment to result here */ 
  142459           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  142460             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  142461             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  142462             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  142463           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  142464           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  142465             :         { 
  142466           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  142467             :         } 
  142468             :        else 
  142469             :         { 
  142470             :           attachedPreprocessingInfoPtr_copy = NULL; 
  142471             :         } 
  142472             :   /* check for a valid pointer and delete if present */ 
  142473           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  142474             :   /* add assignment to result here */ 
  142475           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  142476             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  142477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  142478             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  142479           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  142480           0 :      if ( p_attributeMechanism != NULL ) 
  142481             :         { 
  142482           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  142483             :         } 
  142484             :        else 
  142485             :         { 
  142486             :           attributeMechanism_copy = NULL; 
  142487             :         } 
  142488             :   /* check for a valid pointer and delete if present */ 
  142489           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  142490             :   /* add assignment to result here */ 
  142491           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  142492             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  142493             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  142494             :   // case: toBeCopied == COPY_DATA for need_paren
  142495           0 :      bool need_paren_copy = p_need_paren; 
  142496           0 :      result->p_need_paren = need_paren_copy; 
  142497             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  142498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  142499             :   // case: toBeCopied == COPY_DATA for lvalue
  142500           0 :      bool lvalue_copy = p_lvalue; 
  142501           0 :      result->p_lvalue = lvalue_copy; 
  142502             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  142503             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  142504             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  142505           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  142506           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  142507             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  142508             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  142509             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  142510           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  142511           0 :      if ( p_operatorPosition != NULL ) 
  142512             :         { 
  142513           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  142514             :         } 
  142515             :        else 
  142516             :         { 
  142517             :           operatorPosition_copy = NULL; 
  142518             :         } 
  142519             :   /* check for a valid pointer and delete if present */ 
  142520           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  142521             :   /* add assignment to result here */ 
  142522           0 :      result->p_operatorPosition = operatorPosition_copy; 
  142523             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  142524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  142525             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  142526           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  142527           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  142528             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  142529           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  142530             :              { 
  142531           0 :                lhs_operand_i_copy->set_parent(result); 
  142532             :              } 
  142533             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  142534           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  142535             :              { 
  142536           0 :                rhs_operand_i_copy->set_parent(result); 
  142537             :              } 
  142538             : 
  142539             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142540             : 
  142541             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  142542             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  142543             :   // fixupCopy(result,help);
  142544             : 
  142545             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  142546             :   // the Sg_File_Info objects that are built for the new IR nodes.
  142547           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  142548           0 :      if (locatedNode != NULL)
  142549             :         {
  142550             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  142551           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  142552           0 :           ROSE_ASSERT(start != NULL);
  142553             : #if 0
  142554             :        // Debugging information
  142555             :           if (start->get_parent() == NULL)
  142556             :              {
  142557             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142558             :              }
  142559             : #endif
  142560           0 :           start->set_parent(locatedNode);
  142561           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  142562             : 
  142563           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  142564             : 
  142565             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  142566             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  142567             :        // ROSE_ASSERT(end != NULL);
  142568           0 :           if (end == NULL)
  142569             :              {
  142570           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  142571             :              }
  142572             :             else
  142573             :              {
  142574             : #if 0
  142575             :             // Debugging information
  142576             :                if (end->get_parent() == NULL)
  142577             :                   {
  142578             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142579             :                   }
  142580             : #endif
  142581           0 :                end->set_parent(locatedNode);
  142582           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  142583             :              }
  142584             : 
  142585           0 :           SgExpression* expression = isSgExpression(result);
  142586           0 :           if (isSgExpression(this) != NULL)
  142587             :              {
  142588           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  142589             : 
  142590             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  142591           0 :                if (operatorPosition != NULL)
  142592             :                   {
  142593             : #if 0
  142594             :                  // Debugging information
  142595             :                     if (operatorPosition->get_parent() == NULL)
  142596             :                        {
  142597             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142598             :                        }
  142599             : #endif
  142600           0 :                     operatorPosition->set_parent(expression);
  142601           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  142602             :                   }
  142603             :              }
  142604             :         }
  142605             : 
  142606             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  142607           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  142608           0 :      if (initializedName != NULL)
  142609             :         {
  142610             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  142611           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  142612           0 :           ROSE_ASSERT(start != NULL);
  142613             : #if 0
  142614             :        // Debugging information
  142615             :           if (start->get_parent() == NULL)
  142616             :              {
  142617             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142618             :              }
  142619             : #endif
  142620           0 :           start->set_parent(initializedName);
  142621           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  142622             : 
  142623             : #if 0
  142624             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  142625             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  142626             : 
  142627             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  142628             :        // ROSE_ASSERT(end != NULL);
  142629             :           if (end == NULL)
  142630             :              {
  142631             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  142632             :              }
  142633             :             else
  142634             :              {
  142635             :                if (end->get_parent() == NULL)
  142636             :                   {
  142637             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142638             :                   }
  142639             :                end->set_parent(initializedName);
  142640             :                ROSE_ASSERT(end->get_parent() != NULL);
  142641             :              }
  142642             : #endif
  142643             :         }
  142644             : 
  142645             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  142646           0 :      help.insertCopiedNodePair(this,result);
  142647             : 
  142648             :   // printf ("End of copy SgDotStarOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  142649             : 
  142650             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  142651             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  142652           0 :      help.decrementDepth();
  142653             : 
  142654             :   // Test if this is the root of the copy!
  142655           0 :      if (help.get_depth() == 0)
  142656             :         {
  142657             :        // This is the original calling node.
  142658             : 
  142659             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  142660             :        // printf ("Calling SgDotStarOp::fixupCopy() (from root of AST being copied) \n");
  142661             : #if ALT_FIXUP_COPY
  142662             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  142663           0 :           fixupCopy_scopes (result,help);
  142664           0 :           fixupCopy_symbols (result,help);
  142665           0 :           fixupCopy_references (result,help);
  142666             : #else
  142667             :           fixupCopy(result,help);
  142668             : #endif
  142669             :        // Allow this to be called recursively, so accumulate the state.
  142670             :        // Also, clear the state in the SgCopyHelp object.
  142671             :        // help.clearState();
  142672             :         }
  142673             : 
  142674           0 :      return result;
  142675             :    }
  142676             : 
  142677             : 
  142678             : /* #line 142679 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  142679             : 
  142680             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142681             : 
  142682           0 : SgNode* SgArrowStarOp::copy ( SgCopyHelp& help) const
  142683             :    {
  142684           0 :      SgArrowStarOp* result = NULL;
  142685             : 
  142686             :   // printf ("Copy SgArrowStarOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  142687             : 
  142688             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  142689             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  142690             :   // The default value of the depth is 0, so after this call the depth is 1!
  142691           0 :      help.incrementDepth();
  142692             : 
  142693             : #if 0
  142694             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  142695             :   // but it is not generally true that things can only be copied once!
  142696             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  142697             :   // AstAttribute* existingAttribute = const_cast<SgArrowStarOp*>(this)->attribute["copied"];
  142698             :      bool previouslyCopied = const_cast<SgArrowStarOp*>(this)->attribute.exists("copied");
  142699             :      if (previouslyCopied == true)
  142700             :         {
  142701             :           this->get_file_info()->display("Called from copy SgArrowStarOp: debug");
  142702             :         }
  142703             :      ROSE_ASSERT(previouslyCopied == false);
  142704             : 
  142705             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  142706             :      AstAttribute* newAttribute = new AstAttribute();
  142707             :      ROSE_ASSERT(newAttribute != NULL);
  142708             : 
  142709             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  142710             :      const_cast<SgArrowStarOp*>(this)->attribute.add("copied",newAttribute);
  142711             : #endif
  142712             : 
  142713             :   // Copy data members from base classes
  142714             :   // Copy constructor parameter data member: startOfConstruct_copy
  142715             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  142716             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  142717           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  142718           0 :      if ( p_startOfConstruct != NULL ) 
  142719             :         { 
  142720           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  142721             :         } 
  142722             :        else 
  142723             :         { 
  142724             :           startOfConstruct_copy = NULL; 
  142725             :         } 
  142726             :   // Copy constructor parameter data member: lhs_operand_i_copy
  142727           0 :      SgExpression* lhs_operand_i_copy; 
  142728             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  142729           0 :           if (get_lhs_operand_i() != NULL) 
  142730             :              { 
  142731           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  142732             :              } 
  142733             :             else 
  142734             :              { 
  142735             :                lhs_operand_i_copy = NULL; 
  142736             :              } 
  142737             :   // Copy constructor parameter data member: rhs_operand_i_copy
  142738           0 :      SgExpression* rhs_operand_i_copy; 
  142739             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  142740           0 :           if (get_rhs_operand_i() != NULL) 
  142741             :              { 
  142742           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  142743             :              } 
  142744             :             else 
  142745             :              { 
  142746             :                rhs_operand_i_copy = NULL; 
  142747             :              } 
  142748             :   // Copy constructor parameter data member: expression_type_copy
  142749             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  142750             :   // case: toBeCopied == COPY_DATA for expression_type
  142751           0 :      SgType* expression_type_copy = p_expression_type; 
  142752             :  
  142753             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142754             : 
  142755             :   // Build an empty copy of this object (will be filled in, but 
  142756             :   // the parent can't be set and must be set by the caller)
  142757           0 :      result = new SgArrowStarOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  142758           0 :      ROSE_ASSERT(result != NULL);
  142759             : 
  142760             :   // Copy data members of "this" class
  142761             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  142762             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  142763             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  142764           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  142765           0 :      if ( p_endOfConstruct != NULL ) 
  142766             :         { 
  142767           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  142768             :         } 
  142769             :        else 
  142770             :         { 
  142771             :           endOfConstruct_copy = NULL; 
  142772             :         } 
  142773             :   /* check for a valid pointer and delete if present */ 
  142774           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  142775             :   /* add assignment to result here */ 
  142776           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  142777             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  142778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  142779             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  142780           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  142781           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  142782             :         { 
  142783           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  142784             :         } 
  142785             :        else 
  142786             :         { 
  142787             :           attachedPreprocessingInfoPtr_copy = NULL; 
  142788             :         } 
  142789             :   /* check for a valid pointer and delete if present */ 
  142790           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  142791             :   /* add assignment to result here */ 
  142792           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  142793             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  142794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  142795             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  142796           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  142797           0 :      if ( p_attributeMechanism != NULL ) 
  142798             :         { 
  142799           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  142800             :         } 
  142801             :        else 
  142802             :         { 
  142803             :           attributeMechanism_copy = NULL; 
  142804             :         } 
  142805             :   /* check for a valid pointer and delete if present */ 
  142806           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  142807             :   /* add assignment to result here */ 
  142808           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  142809             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  142810             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  142811             :   // case: toBeCopied == COPY_DATA for need_paren
  142812           0 :      bool need_paren_copy = p_need_paren; 
  142813           0 :      result->p_need_paren = need_paren_copy; 
  142814             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  142815             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  142816             :   // case: toBeCopied == COPY_DATA for lvalue
  142817           0 :      bool lvalue_copy = p_lvalue; 
  142818           0 :      result->p_lvalue = lvalue_copy; 
  142819             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  142820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  142821             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  142822           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  142823           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  142824             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  142825             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  142826             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  142827           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  142828           0 :      if ( p_operatorPosition != NULL ) 
  142829             :         { 
  142830           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  142831             :         } 
  142832             :        else 
  142833             :         { 
  142834             :           operatorPosition_copy = NULL; 
  142835             :         } 
  142836             :   /* check for a valid pointer and delete if present */ 
  142837           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  142838             :   /* add assignment to result here */ 
  142839           0 :      result->p_operatorPosition = operatorPosition_copy; 
  142840             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  142841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  142842             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  142843           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  142844           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  142845             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  142846           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  142847             :              { 
  142848           0 :                lhs_operand_i_copy->set_parent(result); 
  142849             :              } 
  142850             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  142851           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  142852             :              { 
  142853           0 :                rhs_operand_i_copy->set_parent(result); 
  142854             :              } 
  142855             : 
  142856             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142857             : 
  142858             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  142859             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  142860             :   // fixupCopy(result,help);
  142861             : 
  142862             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  142863             :   // the Sg_File_Info objects that are built for the new IR nodes.
  142864           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  142865           0 :      if (locatedNode != NULL)
  142866             :         {
  142867             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  142868           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  142869           0 :           ROSE_ASSERT(start != NULL);
  142870             : #if 0
  142871             :        // Debugging information
  142872             :           if (start->get_parent() == NULL)
  142873             :              {
  142874             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142875             :              }
  142876             : #endif
  142877           0 :           start->set_parent(locatedNode);
  142878           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  142879             : 
  142880           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  142881             : 
  142882             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  142883             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  142884             :        // ROSE_ASSERT(end != NULL);
  142885           0 :           if (end == NULL)
  142886             :              {
  142887           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  142888             :              }
  142889             :             else
  142890             :              {
  142891             : #if 0
  142892             :             // Debugging information
  142893             :                if (end->get_parent() == NULL)
  142894             :                   {
  142895             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142896             :                   }
  142897             : #endif
  142898           0 :                end->set_parent(locatedNode);
  142899           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  142900             :              }
  142901             : 
  142902           0 :           SgExpression* expression = isSgExpression(result);
  142903           0 :           if (isSgExpression(this) != NULL)
  142904             :              {
  142905           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  142906             : 
  142907             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  142908           0 :                if (operatorPosition != NULL)
  142909             :                   {
  142910             : #if 0
  142911             :                  // Debugging information
  142912             :                     if (operatorPosition->get_parent() == NULL)
  142913             :                        {
  142914             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142915             :                        }
  142916             : #endif
  142917           0 :                     operatorPosition->set_parent(expression);
  142918           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  142919             :                   }
  142920             :              }
  142921             :         }
  142922             : 
  142923             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  142924           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  142925           0 :      if (initializedName != NULL)
  142926             :         {
  142927             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  142928           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  142929           0 :           ROSE_ASSERT(start != NULL);
  142930             : #if 0
  142931             :        // Debugging information
  142932             :           if (start->get_parent() == NULL)
  142933             :              {
  142934             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142935             :              }
  142936             : #endif
  142937           0 :           start->set_parent(initializedName);
  142938           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  142939             : 
  142940             : #if 0
  142941             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  142942             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  142943             : 
  142944             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  142945             :        // ROSE_ASSERT(end != NULL);
  142946             :           if (end == NULL)
  142947             :              {
  142948             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  142949             :              }
  142950             :             else
  142951             :              {
  142952             :                if (end->get_parent() == NULL)
  142953             :                   {
  142954             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  142955             :                   }
  142956             :                end->set_parent(initializedName);
  142957             :                ROSE_ASSERT(end->get_parent() != NULL);
  142958             :              }
  142959             : #endif
  142960             :         }
  142961             : 
  142962             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  142963           0 :      help.insertCopiedNodePair(this,result);
  142964             : 
  142965             :   // printf ("End of copy SgArrowStarOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  142966             : 
  142967             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  142968             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  142969           0 :      help.decrementDepth();
  142970             : 
  142971             :   // Test if this is the root of the copy!
  142972           0 :      if (help.get_depth() == 0)
  142973             :         {
  142974             :        // This is the original calling node.
  142975             : 
  142976             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  142977             :        // printf ("Calling SgArrowStarOp::fixupCopy() (from root of AST being copied) \n");
  142978             : #if ALT_FIXUP_COPY
  142979             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  142980           0 :           fixupCopy_scopes (result,help);
  142981           0 :           fixupCopy_symbols (result,help);
  142982           0 :           fixupCopy_references (result,help);
  142983             : #else
  142984             :           fixupCopy(result,help);
  142985             : #endif
  142986             :        // Allow this to be called recursively, so accumulate the state.
  142987             :        // Also, clear the state in the SgCopyHelp object.
  142988             :        // help.clearState();
  142989             :         }
  142990             : 
  142991           0 :      return result;
  142992             :    }
  142993             : 
  142994             : 
  142995             : /* #line 142996 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  142996             : 
  142997             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  142998             : 
  142999         374 : SgNode* SgEqualityOp::copy ( SgCopyHelp& help) const
  143000             :    {
  143001         374 :      SgEqualityOp* result = NULL;
  143002             : 
  143003             :   // printf ("Copy SgEqualityOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  143004             : 
  143005             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  143006             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  143007             :   // The default value of the depth is 0, so after this call the depth is 1!
  143008         374 :      help.incrementDepth();
  143009             : 
  143010             : #if 0
  143011             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  143012             :   // but it is not generally true that things can only be copied once!
  143013             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  143014             :   // AstAttribute* existingAttribute = const_cast<SgEqualityOp*>(this)->attribute["copied"];
  143015             :      bool previouslyCopied = const_cast<SgEqualityOp*>(this)->attribute.exists("copied");
  143016             :      if (previouslyCopied == true)
  143017             :         {
  143018             :           this->get_file_info()->display("Called from copy SgEqualityOp: debug");
  143019             :         }
  143020             :      ROSE_ASSERT(previouslyCopied == false);
  143021             : 
  143022             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  143023             :      AstAttribute* newAttribute = new AstAttribute();
  143024             :      ROSE_ASSERT(newAttribute != NULL);
  143025             : 
  143026             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  143027             :      const_cast<SgEqualityOp*>(this)->attribute.add("copied",newAttribute);
  143028             : #endif
  143029             : 
  143030             :   // Copy data members from base classes
  143031             :   // Copy constructor parameter data member: startOfConstruct_copy
  143032             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  143033             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  143034         374 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  143035         374 :      if ( p_startOfConstruct != NULL ) 
  143036             :         { 
  143037         374 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  143038             :         } 
  143039             :        else 
  143040             :         { 
  143041             :           startOfConstruct_copy = NULL; 
  143042             :         } 
  143043             :   // Copy constructor parameter data member: lhs_operand_i_copy
  143044         374 :      SgExpression* lhs_operand_i_copy; 
  143045             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  143046         374 :           if (get_lhs_operand_i() != NULL) 
  143047             :              { 
  143048         374 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  143049             :              } 
  143050             :             else 
  143051             :              { 
  143052             :                lhs_operand_i_copy = NULL; 
  143053             :              } 
  143054             :   // Copy constructor parameter data member: rhs_operand_i_copy
  143055         374 :      SgExpression* rhs_operand_i_copy; 
  143056             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  143057         374 :           if (get_rhs_operand_i() != NULL) 
  143058             :              { 
  143059         374 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  143060             :              } 
  143061             :             else 
  143062             :              { 
  143063             :                rhs_operand_i_copy = NULL; 
  143064             :              } 
  143065             :   // Copy constructor parameter data member: expression_type_copy
  143066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  143067             :   // case: toBeCopied == COPY_DATA for expression_type
  143068         374 :      SgType* expression_type_copy = p_expression_type; 
  143069             :  
  143070             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  143071             : 
  143072             :   // Build an empty copy of this object (will be filled in, but 
  143073             :   // the parent can't be set and must be set by the caller)
  143074         374 :      result = new SgEqualityOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  143075         374 :      ROSE_ASSERT(result != NULL);
  143076             : 
  143077             :   // Copy data members of "this" class
  143078             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  143079             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  143080             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  143081         374 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  143082         374 :      if ( p_endOfConstruct != NULL ) 
  143083             :         { 
  143084         374 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  143085             :         } 
  143086             :        else 
  143087             :         { 
  143088             :           endOfConstruct_copy = NULL; 
  143089             :         } 
  143090             :   /* check for a valid pointer and delete if present */ 
  143091         374 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  143092             :   /* add assignment to result here */ 
  143093         374 :      result->p_endOfConstruct = endOfConstruct_copy; 
  143094             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  143095             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  143096             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  143097         374 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  143098         374 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  143099             :         { 
  143100           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  143101             :         } 
  143102             :        else 
  143103             :         { 
  143104             :           attachedPreprocessingInfoPtr_copy = NULL; 
  143105             :         } 
  143106             :   /* check for a valid pointer and delete if present */ 
  143107         374 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  143108             :   /* add assignment to result here */ 
  143109         374 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  143110             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  143111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  143112             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  143113         374 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  143114         374 :      if ( p_attributeMechanism != NULL ) 
  143115             :         { 
  143116           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  143117             :         } 
  143118             :        else 
  143119             :         { 
  143120             :           attributeMechanism_copy = NULL; 
  143121             :         } 
  143122             :   /* check for a valid pointer and delete if present */ 
  143123         374 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  143124             :   /* add assignment to result here */ 
  143125         374 :      result->p_attributeMechanism = attributeMechanism_copy; 
  143126             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  143127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  143128             :   // case: toBeCopied == COPY_DATA for need_paren
  143129         374 :      bool need_paren_copy = p_need_paren; 
  143130         374 :      result->p_need_paren = need_paren_copy; 
  143131             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  143132             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  143133             :   // case: toBeCopied == COPY_DATA for lvalue
  143134         374 :      bool lvalue_copy = p_lvalue; 
  143135         374 :      result->p_lvalue = lvalue_copy; 
  143136             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  143137             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  143138             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  143139         374 :      bool global_qualified_name_copy = p_global_qualified_name; 
  143140         374 :      result->p_global_qualified_name = global_qualified_name_copy; 
  143141             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  143142             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  143143             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  143144         374 :      Sg_File_Info* operatorPosition_copy = NULL; 
  143145         374 :      if ( p_operatorPosition != NULL ) 
  143146             :         { 
  143147         374 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  143148             :         } 
  143149             :        else 
  143150             :         { 
  143151             :           operatorPosition_copy = NULL; 
  143152             :         } 
  143153             :   /* check for a valid pointer and delete if present */ 
  143154         374 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  143155             :   /* add assignment to result here */ 
  143156         374 :      result->p_operatorPosition = operatorPosition_copy; 
  143157             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  143158             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  143159             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  143160         374 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  143161         374 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  143162             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  143163         374 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  143164             :              { 
  143165           0 :                lhs_operand_i_copy->set_parent(result); 
  143166             :              } 
  143167             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  143168         374 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  143169             :              { 
  143170           0 :                rhs_operand_i_copy->set_parent(result); 
  143171             :              } 
  143172             : 
  143173             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  143174             : 
  143175             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  143176             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  143177             :   // fixupCopy(result,help);
  143178             : 
  143179             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  143180             :   // the Sg_File_Info objects that are built for the new IR nodes.
  143181         374 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  143182         374 :      if (locatedNode != NULL)
  143183             :         {
  143184             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  143185         374 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  143186         374 :           ROSE_ASSERT(start != NULL);
  143187             : #if 0
  143188             :        // Debugging information
  143189             :           if (start->get_parent() == NULL)
  143190             :              {
  143191             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143192             :              }
  143193             : #endif
  143194         374 :           start->set_parent(locatedNode);
  143195         374 :           ROSE_ASSERT(start->get_parent() != NULL);
  143196             : 
  143197         374 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  143198             : 
  143199             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  143200             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  143201             :        // ROSE_ASSERT(end != NULL);
  143202         374 :           if (end == NULL)
  143203             :              {
  143204           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  143205             :              }
  143206             :             else
  143207             :              {
  143208             : #if 0
  143209             :             // Debugging information
  143210             :                if (end->get_parent() == NULL)
  143211             :                   {
  143212             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143213             :                   }
  143214             : #endif
  143215         374 :                end->set_parent(locatedNode);
  143216         374 :                ROSE_ASSERT(end->get_parent() != NULL);
  143217             :              }
  143218             : 
  143219         374 :           SgExpression* expression = isSgExpression(result);
  143220         374 :           if (isSgExpression(this) != NULL)
  143221             :              {
  143222         374 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  143223             : 
  143224             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  143225         374 :                if (operatorPosition != NULL)
  143226             :                   {
  143227             : #if 0
  143228             :                  // Debugging information
  143229             :                     if (operatorPosition->get_parent() == NULL)
  143230             :                        {
  143231             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143232             :                        }
  143233             : #endif
  143234         374 :                     operatorPosition->set_parent(expression);
  143235         374 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  143236             :                   }
  143237             :              }
  143238             :         }
  143239             : 
  143240             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  143241         374 :      SgInitializedName* initializedName = isSgInitializedName(result);
  143242         374 :      if (initializedName != NULL)
  143243             :         {
  143244             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  143245           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  143246           0 :           ROSE_ASSERT(start != NULL);
  143247             : #if 0
  143248             :        // Debugging information
  143249             :           if (start->get_parent() == NULL)
  143250             :              {
  143251             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143252             :              }
  143253             : #endif
  143254           0 :           start->set_parent(initializedName);
  143255           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  143256             : 
  143257             : #if 0
  143258             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  143259             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  143260             : 
  143261             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  143262             :        // ROSE_ASSERT(end != NULL);
  143263             :           if (end == NULL)
  143264             :              {
  143265             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  143266             :              }
  143267             :             else
  143268             :              {
  143269             :                if (end->get_parent() == NULL)
  143270             :                   {
  143271             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143272             :                   }
  143273             :                end->set_parent(initializedName);
  143274             :                ROSE_ASSERT(end->get_parent() != NULL);
  143275             :              }
  143276             : #endif
  143277             :         }
  143278             : 
  143279             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  143280         374 :      help.insertCopiedNodePair(this,result);
  143281             : 
  143282             :   // printf ("End of copy SgEqualityOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  143283             : 
  143284             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  143285             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  143286         374 :      help.decrementDepth();
  143287             : 
  143288             :   // Test if this is the root of the copy!
  143289         374 :      if (help.get_depth() == 0)
  143290             :         {
  143291             :        // This is the original calling node.
  143292             : 
  143293             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  143294             :        // printf ("Calling SgEqualityOp::fixupCopy() (from root of AST being copied) \n");
  143295             : #if ALT_FIXUP_COPY
  143296             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  143297         154 :           fixupCopy_scopes (result,help);
  143298         154 :           fixupCopy_symbols (result,help);
  143299         154 :           fixupCopy_references (result,help);
  143300             : #else
  143301             :           fixupCopy(result,help);
  143302             : #endif
  143303             :        // Allow this to be called recursively, so accumulate the state.
  143304             :        // Also, clear the state in the SgCopyHelp object.
  143305             :        // help.clearState();
  143306             :         }
  143307             : 
  143308         374 :      return result;
  143309             :    }
  143310             : 
  143311             : 
  143312             : /* #line 143313 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  143313             : 
  143314             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  143315             : 
  143316          72 : SgNode* SgLessThanOp::copy ( SgCopyHelp& help) const
  143317             :    {
  143318          72 :      SgLessThanOp* result = NULL;
  143319             : 
  143320             :   // printf ("Copy SgLessThanOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  143321             : 
  143322             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  143323             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  143324             :   // The default value of the depth is 0, so after this call the depth is 1!
  143325          72 :      help.incrementDepth();
  143326             : 
  143327             : #if 0
  143328             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  143329             :   // but it is not generally true that things can only be copied once!
  143330             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  143331             :   // AstAttribute* existingAttribute = const_cast<SgLessThanOp*>(this)->attribute["copied"];
  143332             :      bool previouslyCopied = const_cast<SgLessThanOp*>(this)->attribute.exists("copied");
  143333             :      if (previouslyCopied == true)
  143334             :         {
  143335             :           this->get_file_info()->display("Called from copy SgLessThanOp: debug");
  143336             :         }
  143337             :      ROSE_ASSERT(previouslyCopied == false);
  143338             : 
  143339             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  143340             :      AstAttribute* newAttribute = new AstAttribute();
  143341             :      ROSE_ASSERT(newAttribute != NULL);
  143342             : 
  143343             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  143344             :      const_cast<SgLessThanOp*>(this)->attribute.add("copied",newAttribute);
  143345             : #endif
  143346             : 
  143347             :   // Copy data members from base classes
  143348             :   // Copy constructor parameter data member: startOfConstruct_copy
  143349             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  143350             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  143351          72 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  143352          72 :      if ( p_startOfConstruct != NULL ) 
  143353             :         { 
  143354          72 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  143355             :         } 
  143356             :        else 
  143357             :         { 
  143358             :           startOfConstruct_copy = NULL; 
  143359             :         } 
  143360             :   // Copy constructor parameter data member: lhs_operand_i_copy
  143361          72 :      SgExpression* lhs_operand_i_copy; 
  143362             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  143363          72 :           if (get_lhs_operand_i() != NULL) 
  143364             :              { 
  143365          72 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  143366             :              } 
  143367             :             else 
  143368             :              { 
  143369             :                lhs_operand_i_copy = NULL; 
  143370             :              } 
  143371             :   // Copy constructor parameter data member: rhs_operand_i_copy
  143372          72 :      SgExpression* rhs_operand_i_copy; 
  143373             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  143374          72 :           if (get_rhs_operand_i() != NULL) 
  143375             :              { 
  143376          72 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  143377             :              } 
  143378             :             else 
  143379             :              { 
  143380             :                rhs_operand_i_copy = NULL; 
  143381             :              } 
  143382             :   // Copy constructor parameter data member: expression_type_copy
  143383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  143384             :   // case: toBeCopied == COPY_DATA for expression_type
  143385          72 :      SgType* expression_type_copy = p_expression_type; 
  143386             :  
  143387             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  143388             : 
  143389             :   // Build an empty copy of this object (will be filled in, but 
  143390             :   // the parent can't be set and must be set by the caller)
  143391          72 :      result = new SgLessThanOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  143392          72 :      ROSE_ASSERT(result != NULL);
  143393             : 
  143394             :   // Copy data members of "this" class
  143395             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  143396             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  143397             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  143398          72 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  143399          72 :      if ( p_endOfConstruct != NULL ) 
  143400             :         { 
  143401          72 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  143402             :         } 
  143403             :        else 
  143404             :         { 
  143405             :           endOfConstruct_copy = NULL; 
  143406             :         } 
  143407             :   /* check for a valid pointer and delete if present */ 
  143408          72 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  143409             :   /* add assignment to result here */ 
  143410          72 :      result->p_endOfConstruct = endOfConstruct_copy; 
  143411             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  143412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  143413             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  143414          72 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  143415          72 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  143416             :         { 
  143417           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  143418             :         } 
  143419             :        else 
  143420             :         { 
  143421             :           attachedPreprocessingInfoPtr_copy = NULL; 
  143422             :         } 
  143423             :   /* check for a valid pointer and delete if present */ 
  143424          72 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  143425             :   /* add assignment to result here */ 
  143426          72 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  143427             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  143428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  143429             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  143430          72 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  143431          72 :      if ( p_attributeMechanism != NULL ) 
  143432             :         { 
  143433           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  143434             :         } 
  143435             :        else 
  143436             :         { 
  143437             :           attributeMechanism_copy = NULL; 
  143438             :         } 
  143439             :   /* check for a valid pointer and delete if present */ 
  143440          72 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  143441             :   /* add assignment to result here */ 
  143442          72 :      result->p_attributeMechanism = attributeMechanism_copy; 
  143443             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  143444             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  143445             :   // case: toBeCopied == COPY_DATA for need_paren
  143446          72 :      bool need_paren_copy = p_need_paren; 
  143447          72 :      result->p_need_paren = need_paren_copy; 
  143448             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  143449             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  143450             :   // case: toBeCopied == COPY_DATA for lvalue
  143451          72 :      bool lvalue_copy = p_lvalue; 
  143452          72 :      result->p_lvalue = lvalue_copy; 
  143453             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  143454             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  143455             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  143456          72 :      bool global_qualified_name_copy = p_global_qualified_name; 
  143457          72 :      result->p_global_qualified_name = global_qualified_name_copy; 
  143458             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  143459             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  143460             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  143461          72 :      Sg_File_Info* operatorPosition_copy = NULL; 
  143462          72 :      if ( p_operatorPosition != NULL ) 
  143463             :         { 
  143464          72 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  143465             :         } 
  143466             :        else 
  143467             :         { 
  143468             :           operatorPosition_copy = NULL; 
  143469             :         } 
  143470             :   /* check for a valid pointer and delete if present */ 
  143471          72 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  143472             :   /* add assignment to result here */ 
  143473          72 :      result->p_operatorPosition = operatorPosition_copy; 
  143474             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  143475             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  143476             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  143477          72 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  143478          72 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  143479             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  143480          72 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  143481             :              { 
  143482           0 :                lhs_operand_i_copy->set_parent(result); 
  143483             :              } 
  143484             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  143485          72 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  143486             :              { 
  143487           0 :                rhs_operand_i_copy->set_parent(result); 
  143488             :              } 
  143489             : 
  143490             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  143491             : 
  143492             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  143493             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  143494             :   // fixupCopy(result,help);
  143495             : 
  143496             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  143497             :   // the Sg_File_Info objects that are built for the new IR nodes.
  143498          72 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  143499          72 :      if (locatedNode != NULL)
  143500             :         {
  143501             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  143502          72 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  143503          72 :           ROSE_ASSERT(start != NULL);
  143504             : #if 0
  143505             :        // Debugging information
  143506             :           if (start->get_parent() == NULL)
  143507             :              {
  143508             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143509             :              }
  143510             : #endif
  143511          72 :           start->set_parent(locatedNode);
  143512          72 :           ROSE_ASSERT(start->get_parent() != NULL);
  143513             : 
  143514          72 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  143515             : 
  143516             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  143517             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  143518             :        // ROSE_ASSERT(end != NULL);
  143519          72 :           if (end == NULL)
  143520             :              {
  143521           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  143522             :              }
  143523             :             else
  143524             :              {
  143525             : #if 0
  143526             :             // Debugging information
  143527             :                if (end->get_parent() == NULL)
  143528             :                   {
  143529             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143530             :                   }
  143531             : #endif
  143532          72 :                end->set_parent(locatedNode);
  143533          72 :                ROSE_ASSERT(end->get_parent() != NULL);
  143534             :              }
  143535             : 
  143536          72 :           SgExpression* expression = isSgExpression(result);
  143537          72 :           if (isSgExpression(this) != NULL)
  143538             :              {
  143539          72 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  143540             : 
  143541             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  143542          72 :                if (operatorPosition != NULL)
  143543             :                   {
  143544             : #if 0
  143545             :                  // Debugging information
  143546             :                     if (operatorPosition->get_parent() == NULL)
  143547             :                        {
  143548             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143549             :                        }
  143550             : #endif
  143551          72 :                     operatorPosition->set_parent(expression);
  143552          72 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  143553             :                   }
  143554             :              }
  143555             :         }
  143556             : 
  143557             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  143558          72 :      SgInitializedName* initializedName = isSgInitializedName(result);
  143559          72 :      if (initializedName != NULL)
  143560             :         {
  143561             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  143562           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  143563           0 :           ROSE_ASSERT(start != NULL);
  143564             : #if 0
  143565             :        // Debugging information
  143566             :           if (start->get_parent() == NULL)
  143567             :              {
  143568             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143569             :              }
  143570             : #endif
  143571           0 :           start->set_parent(initializedName);
  143572           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  143573             : 
  143574             : #if 0
  143575             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  143576             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  143577             : 
  143578             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  143579             :        // ROSE_ASSERT(end != NULL);
  143580             :           if (end == NULL)
  143581             :              {
  143582             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  143583             :              }
  143584             :             else
  143585             :              {
  143586             :                if (end->get_parent() == NULL)
  143587             :                   {
  143588             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143589             :                   }
  143590             :                end->set_parent(initializedName);
  143591             :                ROSE_ASSERT(end->get_parent() != NULL);
  143592             :              }
  143593             : #endif
  143594             :         }
  143595             : 
  143596             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  143597          72 :      help.insertCopiedNodePair(this,result);
  143598             : 
  143599             :   // printf ("End of copy SgLessThanOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  143600             : 
  143601             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  143602             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  143603          72 :      help.decrementDepth();
  143604             : 
  143605             :   // Test if this is the root of the copy!
  143606          72 :      if (help.get_depth() == 0)
  143607             :         {
  143608             :        // This is the original calling node.
  143609             : 
  143610             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  143611             :        // printf ("Calling SgLessThanOp::fixupCopy() (from root of AST being copied) \n");
  143612             : #if ALT_FIXUP_COPY
  143613             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  143614          22 :           fixupCopy_scopes (result,help);
  143615          22 :           fixupCopy_symbols (result,help);
  143616          22 :           fixupCopy_references (result,help);
  143617             : #else
  143618             :           fixupCopy(result,help);
  143619             : #endif
  143620             :        // Allow this to be called recursively, so accumulate the state.
  143621             :        // Also, clear the state in the SgCopyHelp object.
  143622             :        // help.clearState();
  143623             :         }
  143624             : 
  143625          72 :      return result;
  143626             :    }
  143627             : 
  143628             : 
  143629             : /* #line 143630 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  143630             : 
  143631             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  143632             : 
  143633         146 : SgNode* SgGreaterThanOp::copy ( SgCopyHelp& help) const
  143634             :    {
  143635         146 :      SgGreaterThanOp* result = NULL;
  143636             : 
  143637             :   // printf ("Copy SgGreaterThanOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  143638             : 
  143639             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  143640             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  143641             :   // The default value of the depth is 0, so after this call the depth is 1!
  143642         146 :      help.incrementDepth();
  143643             : 
  143644             : #if 0
  143645             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  143646             :   // but it is not generally true that things can only be copied once!
  143647             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  143648             :   // AstAttribute* existingAttribute = const_cast<SgGreaterThanOp*>(this)->attribute["copied"];
  143649             :      bool previouslyCopied = const_cast<SgGreaterThanOp*>(this)->attribute.exists("copied");
  143650             :      if (previouslyCopied == true)
  143651             :         {
  143652             :           this->get_file_info()->display("Called from copy SgGreaterThanOp: debug");
  143653             :         }
  143654             :      ROSE_ASSERT(previouslyCopied == false);
  143655             : 
  143656             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  143657             :      AstAttribute* newAttribute = new AstAttribute();
  143658             :      ROSE_ASSERT(newAttribute != NULL);
  143659             : 
  143660             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  143661             :      const_cast<SgGreaterThanOp*>(this)->attribute.add("copied",newAttribute);
  143662             : #endif
  143663             : 
  143664             :   // Copy data members from base classes
  143665             :   // Copy constructor parameter data member: startOfConstruct_copy
  143666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  143667             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  143668         146 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  143669         146 :      if ( p_startOfConstruct != NULL ) 
  143670             :         { 
  143671         146 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  143672             :         } 
  143673             :        else 
  143674             :         { 
  143675             :           startOfConstruct_copy = NULL; 
  143676             :         } 
  143677             :   // Copy constructor parameter data member: lhs_operand_i_copy
  143678         146 :      SgExpression* lhs_operand_i_copy; 
  143679             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  143680         146 :           if (get_lhs_operand_i() != NULL) 
  143681             :              { 
  143682         146 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  143683             :              } 
  143684             :             else 
  143685             :              { 
  143686             :                lhs_operand_i_copy = NULL; 
  143687             :              } 
  143688             :   // Copy constructor parameter data member: rhs_operand_i_copy
  143689         146 :      SgExpression* rhs_operand_i_copy; 
  143690             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  143691         146 :           if (get_rhs_operand_i() != NULL) 
  143692             :              { 
  143693         146 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  143694             :              } 
  143695             :             else 
  143696             :              { 
  143697             :                rhs_operand_i_copy = NULL; 
  143698             :              } 
  143699             :   // Copy constructor parameter data member: expression_type_copy
  143700             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  143701             :   // case: toBeCopied == COPY_DATA for expression_type
  143702         146 :      SgType* expression_type_copy = p_expression_type; 
  143703             :  
  143704             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  143705             : 
  143706             :   // Build an empty copy of this object (will be filled in, but 
  143707             :   // the parent can't be set and must be set by the caller)
  143708         146 :      result = new SgGreaterThanOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  143709         146 :      ROSE_ASSERT(result != NULL);
  143710             : 
  143711             :   // Copy data members of "this" class
  143712             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  143713             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  143714             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  143715         146 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  143716         146 :      if ( p_endOfConstruct != NULL ) 
  143717             :         { 
  143718         146 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  143719             :         } 
  143720             :        else 
  143721             :         { 
  143722             :           endOfConstruct_copy = NULL; 
  143723             :         } 
  143724             :   /* check for a valid pointer and delete if present */ 
  143725         146 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  143726             :   /* add assignment to result here */ 
  143727         146 :      result->p_endOfConstruct = endOfConstruct_copy; 
  143728             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  143729             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  143730             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  143731         146 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  143732         146 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  143733             :         { 
  143734           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  143735             :         } 
  143736             :        else 
  143737             :         { 
  143738             :           attachedPreprocessingInfoPtr_copy = NULL; 
  143739             :         } 
  143740             :   /* check for a valid pointer and delete if present */ 
  143741         146 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  143742             :   /* add assignment to result here */ 
  143743         146 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  143744             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  143745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  143746             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  143747         146 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  143748         146 :      if ( p_attributeMechanism != NULL ) 
  143749             :         { 
  143750           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  143751             :         } 
  143752             :        else 
  143753             :         { 
  143754             :           attributeMechanism_copy = NULL; 
  143755             :         } 
  143756             :   /* check for a valid pointer and delete if present */ 
  143757         146 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  143758             :   /* add assignment to result here */ 
  143759         146 :      result->p_attributeMechanism = attributeMechanism_copy; 
  143760             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  143761             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  143762             :   // case: toBeCopied == COPY_DATA for need_paren
  143763         146 :      bool need_paren_copy = p_need_paren; 
  143764         146 :      result->p_need_paren = need_paren_copy; 
  143765             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  143766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  143767             :   // case: toBeCopied == COPY_DATA for lvalue
  143768         146 :      bool lvalue_copy = p_lvalue; 
  143769         146 :      result->p_lvalue = lvalue_copy; 
  143770             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  143771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  143772             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  143773         146 :      bool global_qualified_name_copy = p_global_qualified_name; 
  143774         146 :      result->p_global_qualified_name = global_qualified_name_copy; 
  143775             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  143776             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  143777             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  143778         146 :      Sg_File_Info* operatorPosition_copy = NULL; 
  143779         146 :      if ( p_operatorPosition != NULL ) 
  143780             :         { 
  143781         146 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  143782             :         } 
  143783             :        else 
  143784             :         { 
  143785             :           operatorPosition_copy = NULL; 
  143786             :         } 
  143787             :   /* check for a valid pointer and delete if present */ 
  143788         146 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  143789             :   /* add assignment to result here */ 
  143790         146 :      result->p_operatorPosition = operatorPosition_copy; 
  143791             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  143792             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  143793             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  143794         146 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  143795         146 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  143796             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  143797         146 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  143798             :              { 
  143799           0 :                lhs_operand_i_copy->set_parent(result); 
  143800             :              } 
  143801             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  143802         146 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  143803             :              { 
  143804           0 :                rhs_operand_i_copy->set_parent(result); 
  143805             :              } 
  143806             : 
  143807             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  143808             : 
  143809             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  143810             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  143811             :   // fixupCopy(result,help);
  143812             : 
  143813             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  143814             :   // the Sg_File_Info objects that are built for the new IR nodes.
  143815         146 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  143816         146 :      if (locatedNode != NULL)
  143817             :         {
  143818             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  143819         146 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  143820         146 :           ROSE_ASSERT(start != NULL);
  143821             : #if 0
  143822             :        // Debugging information
  143823             :           if (start->get_parent() == NULL)
  143824             :              {
  143825             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143826             :              }
  143827             : #endif
  143828         146 :           start->set_parent(locatedNode);
  143829         146 :           ROSE_ASSERT(start->get_parent() != NULL);
  143830             : 
  143831         146 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  143832             : 
  143833             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  143834             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  143835             :        // ROSE_ASSERT(end != NULL);
  143836         146 :           if (end == NULL)
  143837             :              {
  143838           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  143839             :              }
  143840             :             else
  143841             :              {
  143842             : #if 0
  143843             :             // Debugging information
  143844             :                if (end->get_parent() == NULL)
  143845             :                   {
  143846             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143847             :                   }
  143848             : #endif
  143849         146 :                end->set_parent(locatedNode);
  143850         146 :                ROSE_ASSERT(end->get_parent() != NULL);
  143851             :              }
  143852             : 
  143853         146 :           SgExpression* expression = isSgExpression(result);
  143854         146 :           if (isSgExpression(this) != NULL)
  143855             :              {
  143856         146 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  143857             : 
  143858             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  143859         146 :                if (operatorPosition != NULL)
  143860             :                   {
  143861             : #if 0
  143862             :                  // Debugging information
  143863             :                     if (operatorPosition->get_parent() == NULL)
  143864             :                        {
  143865             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143866             :                        }
  143867             : #endif
  143868         146 :                     operatorPosition->set_parent(expression);
  143869         146 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  143870             :                   }
  143871             :              }
  143872             :         }
  143873             : 
  143874             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  143875         146 :      SgInitializedName* initializedName = isSgInitializedName(result);
  143876         146 :      if (initializedName != NULL)
  143877             :         {
  143878             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  143879           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  143880           0 :           ROSE_ASSERT(start != NULL);
  143881             : #if 0
  143882             :        // Debugging information
  143883             :           if (start->get_parent() == NULL)
  143884             :              {
  143885             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143886             :              }
  143887             : #endif
  143888           0 :           start->set_parent(initializedName);
  143889           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  143890             : 
  143891             : #if 0
  143892             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  143893             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  143894             : 
  143895             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  143896             :        // ROSE_ASSERT(end != NULL);
  143897             :           if (end == NULL)
  143898             :              {
  143899             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  143900             :              }
  143901             :             else
  143902             :              {
  143903             :                if (end->get_parent() == NULL)
  143904             :                   {
  143905             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  143906             :                   }
  143907             :                end->set_parent(initializedName);
  143908             :                ROSE_ASSERT(end->get_parent() != NULL);
  143909             :              }
  143910             : #endif
  143911             :         }
  143912             : 
  143913             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  143914         146 :      help.insertCopiedNodePair(this,result);
  143915             : 
  143916             :   // printf ("End of copy SgGreaterThanOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  143917             : 
  143918             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  143919             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  143920         146 :      help.decrementDepth();
  143921             : 
  143922             :   // Test if this is the root of the copy!
  143923         146 :      if (help.get_depth() == 0)
  143924             :         {
  143925             :        // This is the original calling node.
  143926             : 
  143927             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  143928             :        // printf ("Calling SgGreaterThanOp::fixupCopy() (from root of AST being copied) \n");
  143929             : #if ALT_FIXUP_COPY
  143930             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  143931          70 :           fixupCopy_scopes (result,help);
  143932          70 :           fixupCopy_symbols (result,help);
  143933          70 :           fixupCopy_references (result,help);
  143934             : #else
  143935             :           fixupCopy(result,help);
  143936             : #endif
  143937             :        // Allow this to be called recursively, so accumulate the state.
  143938             :        // Also, clear the state in the SgCopyHelp object.
  143939             :        // help.clearState();
  143940             :         }
  143941             : 
  143942         146 :      return result;
  143943             :    }
  143944             : 
  143945             : 
  143946             : /* #line 143947 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  143947             : 
  143948             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  143949             : 
  143950         136 : SgNode* SgNotEqualOp::copy ( SgCopyHelp& help) const
  143951             :    {
  143952         136 :      SgNotEqualOp* result = NULL;
  143953             : 
  143954             :   // printf ("Copy SgNotEqualOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  143955             : 
  143956             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  143957             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  143958             :   // The default value of the depth is 0, so after this call the depth is 1!
  143959         136 :      help.incrementDepth();
  143960             : 
  143961             : #if 0
  143962             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  143963             :   // but it is not generally true that things can only be copied once!
  143964             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  143965             :   // AstAttribute* existingAttribute = const_cast<SgNotEqualOp*>(this)->attribute["copied"];
  143966             :      bool previouslyCopied = const_cast<SgNotEqualOp*>(this)->attribute.exists("copied");
  143967             :      if (previouslyCopied == true)
  143968             :         {
  143969             :           this->get_file_info()->display("Called from copy SgNotEqualOp: debug");
  143970             :         }
  143971             :      ROSE_ASSERT(previouslyCopied == false);
  143972             : 
  143973             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  143974             :      AstAttribute* newAttribute = new AstAttribute();
  143975             :      ROSE_ASSERT(newAttribute != NULL);
  143976             : 
  143977             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  143978             :      const_cast<SgNotEqualOp*>(this)->attribute.add("copied",newAttribute);
  143979             : #endif
  143980             : 
  143981             :   // Copy data members from base classes
  143982             :   // Copy constructor parameter data member: startOfConstruct_copy
  143983             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  143984             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  143985         136 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  143986         136 :      if ( p_startOfConstruct != NULL ) 
  143987             :         { 
  143988         136 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  143989             :         } 
  143990             :        else 
  143991             :         { 
  143992             :           startOfConstruct_copy = NULL; 
  143993             :         } 
  143994             :   // Copy constructor parameter data member: lhs_operand_i_copy
  143995         136 :      SgExpression* lhs_operand_i_copy; 
  143996             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  143997         136 :           if (get_lhs_operand_i() != NULL) 
  143998             :              { 
  143999         136 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  144000             :              } 
  144001             :             else 
  144002             :              { 
  144003             :                lhs_operand_i_copy = NULL; 
  144004             :              } 
  144005             :   // Copy constructor parameter data member: rhs_operand_i_copy
  144006         136 :      SgExpression* rhs_operand_i_copy; 
  144007             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  144008         136 :           if (get_rhs_operand_i() != NULL) 
  144009             :              { 
  144010         136 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  144011             :              } 
  144012             :             else 
  144013             :              { 
  144014             :                rhs_operand_i_copy = NULL; 
  144015             :              } 
  144016             :   // Copy constructor parameter data member: expression_type_copy
  144017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  144018             :   // case: toBeCopied == COPY_DATA for expression_type
  144019         136 :      SgType* expression_type_copy = p_expression_type; 
  144020             :  
  144021             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144022             : 
  144023             :   // Build an empty copy of this object (will be filled in, but 
  144024             :   // the parent can't be set and must be set by the caller)
  144025         136 :      result = new SgNotEqualOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  144026         136 :      ROSE_ASSERT(result != NULL);
  144027             : 
  144028             :   // Copy data members of "this" class
  144029             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  144030             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  144031             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  144032         136 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  144033         136 :      if ( p_endOfConstruct != NULL ) 
  144034             :         { 
  144035         136 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  144036             :         } 
  144037             :        else 
  144038             :         { 
  144039             :           endOfConstruct_copy = NULL; 
  144040             :         } 
  144041             :   /* check for a valid pointer and delete if present */ 
  144042         136 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  144043             :   /* add assignment to result here */ 
  144044         136 :      result->p_endOfConstruct = endOfConstruct_copy; 
  144045             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  144046             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  144047             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  144048         136 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  144049         136 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  144050             :         { 
  144051           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  144052             :         } 
  144053             :        else 
  144054             :         { 
  144055             :           attachedPreprocessingInfoPtr_copy = NULL; 
  144056             :         } 
  144057             :   /* check for a valid pointer and delete if present */ 
  144058         136 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  144059             :   /* add assignment to result here */ 
  144060         136 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  144061             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  144062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  144063             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  144064         136 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  144065         136 :      if ( p_attributeMechanism != NULL ) 
  144066             :         { 
  144067           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  144068             :         } 
  144069             :        else 
  144070             :         { 
  144071             :           attributeMechanism_copy = NULL; 
  144072             :         } 
  144073             :   /* check for a valid pointer and delete if present */ 
  144074         136 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  144075             :   /* add assignment to result here */ 
  144076         136 :      result->p_attributeMechanism = attributeMechanism_copy; 
  144077             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  144078             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  144079             :   // case: toBeCopied == COPY_DATA for need_paren
  144080         136 :      bool need_paren_copy = p_need_paren; 
  144081         136 :      result->p_need_paren = need_paren_copy; 
  144082             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  144083             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  144084             :   // case: toBeCopied == COPY_DATA for lvalue
  144085         136 :      bool lvalue_copy = p_lvalue; 
  144086         136 :      result->p_lvalue = lvalue_copy; 
  144087             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  144088             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  144089             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  144090         136 :      bool global_qualified_name_copy = p_global_qualified_name; 
  144091         136 :      result->p_global_qualified_name = global_qualified_name_copy; 
  144092             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  144093             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  144094             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  144095         136 :      Sg_File_Info* operatorPosition_copy = NULL; 
  144096         136 :      if ( p_operatorPosition != NULL ) 
  144097             :         { 
  144098         136 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  144099             :         } 
  144100             :        else 
  144101             :         { 
  144102             :           operatorPosition_copy = NULL; 
  144103             :         } 
  144104             :   /* check for a valid pointer and delete if present */ 
  144105         136 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  144106             :   /* add assignment to result here */ 
  144107         136 :      result->p_operatorPosition = operatorPosition_copy; 
  144108             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  144109             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  144110             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  144111         136 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  144112         136 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  144113             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  144114         136 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  144115             :              { 
  144116           0 :                lhs_operand_i_copy->set_parent(result); 
  144117             :              } 
  144118             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  144119         136 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  144120             :              { 
  144121           0 :                rhs_operand_i_copy->set_parent(result); 
  144122             :              } 
  144123             : 
  144124             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144125             : 
  144126             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  144127             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  144128             :   // fixupCopy(result,help);
  144129             : 
  144130             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  144131             :   // the Sg_File_Info objects that are built for the new IR nodes.
  144132         136 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  144133         136 :      if (locatedNode != NULL)
  144134             :         {
  144135             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  144136         136 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  144137         136 :           ROSE_ASSERT(start != NULL);
  144138             : #if 0
  144139             :        // Debugging information
  144140             :           if (start->get_parent() == NULL)
  144141             :              {
  144142             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144143             :              }
  144144             : #endif
  144145         136 :           start->set_parent(locatedNode);
  144146         136 :           ROSE_ASSERT(start->get_parent() != NULL);
  144147             : 
  144148         136 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  144149             : 
  144150             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  144151             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  144152             :        // ROSE_ASSERT(end != NULL);
  144153         136 :           if (end == NULL)
  144154             :              {
  144155           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  144156             :              }
  144157             :             else
  144158             :              {
  144159             : #if 0
  144160             :             // Debugging information
  144161             :                if (end->get_parent() == NULL)
  144162             :                   {
  144163             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144164             :                   }
  144165             : #endif
  144166         136 :                end->set_parent(locatedNode);
  144167         136 :                ROSE_ASSERT(end->get_parent() != NULL);
  144168             :              }
  144169             : 
  144170         136 :           SgExpression* expression = isSgExpression(result);
  144171         136 :           if (isSgExpression(this) != NULL)
  144172             :              {
  144173         136 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  144174             : 
  144175             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  144176         136 :                if (operatorPosition != NULL)
  144177             :                   {
  144178             : #if 0
  144179             :                  // Debugging information
  144180             :                     if (operatorPosition->get_parent() == NULL)
  144181             :                        {
  144182             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144183             :                        }
  144184             : #endif
  144185         136 :                     operatorPosition->set_parent(expression);
  144186         136 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  144187             :                   }
  144188             :              }
  144189             :         }
  144190             : 
  144191             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  144192         136 :      SgInitializedName* initializedName = isSgInitializedName(result);
  144193         136 :      if (initializedName != NULL)
  144194             :         {
  144195             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  144196           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  144197           0 :           ROSE_ASSERT(start != NULL);
  144198             : #if 0
  144199             :        // Debugging information
  144200             :           if (start->get_parent() == NULL)
  144201             :              {
  144202             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144203             :              }
  144204             : #endif
  144205           0 :           start->set_parent(initializedName);
  144206           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  144207             : 
  144208             : #if 0
  144209             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  144210             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  144211             : 
  144212             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  144213             :        // ROSE_ASSERT(end != NULL);
  144214             :           if (end == NULL)
  144215             :              {
  144216             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  144217             :              }
  144218             :             else
  144219             :              {
  144220             :                if (end->get_parent() == NULL)
  144221             :                   {
  144222             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144223             :                   }
  144224             :                end->set_parent(initializedName);
  144225             :                ROSE_ASSERT(end->get_parent() != NULL);
  144226             :              }
  144227             : #endif
  144228             :         }
  144229             : 
  144230             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  144231         136 :      help.insertCopiedNodePair(this,result);
  144232             : 
  144233             :   // printf ("End of copy SgNotEqualOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  144234             : 
  144235             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  144236             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  144237         136 :      help.decrementDepth();
  144238             : 
  144239             :   // Test if this is the root of the copy!
  144240         136 :      if (help.get_depth() == 0)
  144241             :         {
  144242             :        // This is the original calling node.
  144243             : 
  144244             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  144245             :        // printf ("Calling SgNotEqualOp::fixupCopy() (from root of AST being copied) \n");
  144246             : #if ALT_FIXUP_COPY
  144247             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  144248          24 :           fixupCopy_scopes (result,help);
  144249          24 :           fixupCopy_symbols (result,help);
  144250          24 :           fixupCopy_references (result,help);
  144251             : #else
  144252             :           fixupCopy(result,help);
  144253             : #endif
  144254             :        // Allow this to be called recursively, so accumulate the state.
  144255             :        // Also, clear the state in the SgCopyHelp object.
  144256             :        // help.clearState();
  144257             :         }
  144258             : 
  144259         136 :      return result;
  144260             :    }
  144261             : 
  144262             : 
  144263             : /* #line 144264 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  144264             : 
  144265             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144266             : 
  144267          30 : SgNode* SgLessOrEqualOp::copy ( SgCopyHelp& help) const
  144268             :    {
  144269          30 :      SgLessOrEqualOp* result = NULL;
  144270             : 
  144271             :   // printf ("Copy SgLessOrEqualOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  144272             : 
  144273             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  144274             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  144275             :   // The default value of the depth is 0, so after this call the depth is 1!
  144276          30 :      help.incrementDepth();
  144277             : 
  144278             : #if 0
  144279             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  144280             :   // but it is not generally true that things can only be copied once!
  144281             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  144282             :   // AstAttribute* existingAttribute = const_cast<SgLessOrEqualOp*>(this)->attribute["copied"];
  144283             :      bool previouslyCopied = const_cast<SgLessOrEqualOp*>(this)->attribute.exists("copied");
  144284             :      if (previouslyCopied == true)
  144285             :         {
  144286             :           this->get_file_info()->display("Called from copy SgLessOrEqualOp: debug");
  144287             :         }
  144288             :      ROSE_ASSERT(previouslyCopied == false);
  144289             : 
  144290             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  144291             :      AstAttribute* newAttribute = new AstAttribute();
  144292             :      ROSE_ASSERT(newAttribute != NULL);
  144293             : 
  144294             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  144295             :      const_cast<SgLessOrEqualOp*>(this)->attribute.add("copied",newAttribute);
  144296             : #endif
  144297             : 
  144298             :   // Copy data members from base classes
  144299             :   // Copy constructor parameter data member: startOfConstruct_copy
  144300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  144301             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  144302          30 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  144303          30 :      if ( p_startOfConstruct != NULL ) 
  144304             :         { 
  144305          30 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  144306             :         } 
  144307             :        else 
  144308             :         { 
  144309             :           startOfConstruct_copy = NULL; 
  144310             :         } 
  144311             :   // Copy constructor parameter data member: lhs_operand_i_copy
  144312          30 :      SgExpression* lhs_operand_i_copy; 
  144313             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  144314          30 :           if (get_lhs_operand_i() != NULL) 
  144315             :              { 
  144316          30 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  144317             :              } 
  144318             :             else 
  144319             :              { 
  144320             :                lhs_operand_i_copy = NULL; 
  144321             :              } 
  144322             :   // Copy constructor parameter data member: rhs_operand_i_copy
  144323          30 :      SgExpression* rhs_operand_i_copy; 
  144324             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  144325          30 :           if (get_rhs_operand_i() != NULL) 
  144326             :              { 
  144327          30 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  144328             :              } 
  144329             :             else 
  144330             :              { 
  144331             :                rhs_operand_i_copy = NULL; 
  144332             :              } 
  144333             :   // Copy constructor parameter data member: expression_type_copy
  144334             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  144335             :   // case: toBeCopied == COPY_DATA for expression_type
  144336          30 :      SgType* expression_type_copy = p_expression_type; 
  144337             :  
  144338             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144339             : 
  144340             :   // Build an empty copy of this object (will be filled in, but 
  144341             :   // the parent can't be set and must be set by the caller)
  144342          30 :      result = new SgLessOrEqualOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  144343          30 :      ROSE_ASSERT(result != NULL);
  144344             : 
  144345             :   // Copy data members of "this" class
  144346             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  144347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  144348             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  144349          30 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  144350          30 :      if ( p_endOfConstruct != NULL ) 
  144351             :         { 
  144352          30 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  144353             :         } 
  144354             :        else 
  144355             :         { 
  144356             :           endOfConstruct_copy = NULL; 
  144357             :         } 
  144358             :   /* check for a valid pointer and delete if present */ 
  144359          30 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  144360             :   /* add assignment to result here */ 
  144361          30 :      result->p_endOfConstruct = endOfConstruct_copy; 
  144362             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  144363             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  144364             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  144365          30 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  144366          30 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  144367             :         { 
  144368           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  144369             :         } 
  144370             :        else 
  144371             :         { 
  144372             :           attachedPreprocessingInfoPtr_copy = NULL; 
  144373             :         } 
  144374             :   /* check for a valid pointer and delete if present */ 
  144375          30 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  144376             :   /* add assignment to result here */ 
  144377          30 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  144378             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  144379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  144380             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  144381          30 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  144382          30 :      if ( p_attributeMechanism != NULL ) 
  144383             :         { 
  144384           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  144385             :         } 
  144386             :        else 
  144387             :         { 
  144388             :           attributeMechanism_copy = NULL; 
  144389             :         } 
  144390             :   /* check for a valid pointer and delete if present */ 
  144391          30 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  144392             :   /* add assignment to result here */ 
  144393          30 :      result->p_attributeMechanism = attributeMechanism_copy; 
  144394             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  144395             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  144396             :   // case: toBeCopied == COPY_DATA for need_paren
  144397          30 :      bool need_paren_copy = p_need_paren; 
  144398          30 :      result->p_need_paren = need_paren_copy; 
  144399             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  144400             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  144401             :   // case: toBeCopied == COPY_DATA for lvalue
  144402          30 :      bool lvalue_copy = p_lvalue; 
  144403          30 :      result->p_lvalue = lvalue_copy; 
  144404             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  144405             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  144406             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  144407          30 :      bool global_qualified_name_copy = p_global_qualified_name; 
  144408          30 :      result->p_global_qualified_name = global_qualified_name_copy; 
  144409             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  144410             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  144411             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  144412          30 :      Sg_File_Info* operatorPosition_copy = NULL; 
  144413          30 :      if ( p_operatorPosition != NULL ) 
  144414             :         { 
  144415          30 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  144416             :         } 
  144417             :        else 
  144418             :         { 
  144419             :           operatorPosition_copy = NULL; 
  144420             :         } 
  144421             :   /* check for a valid pointer and delete if present */ 
  144422          30 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  144423             :   /* add assignment to result here */ 
  144424          30 :      result->p_operatorPosition = operatorPosition_copy; 
  144425             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  144426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  144427             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  144428          30 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  144429          30 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  144430             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  144431          30 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  144432             :              { 
  144433           0 :                lhs_operand_i_copy->set_parent(result); 
  144434             :              } 
  144435             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  144436          30 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  144437             :              { 
  144438           0 :                rhs_operand_i_copy->set_parent(result); 
  144439             :              } 
  144440             : 
  144441             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144442             : 
  144443             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  144444             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  144445             :   // fixupCopy(result,help);
  144446             : 
  144447             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  144448             :   // the Sg_File_Info objects that are built for the new IR nodes.
  144449          30 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  144450          30 :      if (locatedNode != NULL)
  144451             :         {
  144452             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  144453          30 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  144454          30 :           ROSE_ASSERT(start != NULL);
  144455             : #if 0
  144456             :        // Debugging information
  144457             :           if (start->get_parent() == NULL)
  144458             :              {
  144459             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144460             :              }
  144461             : #endif
  144462          30 :           start->set_parent(locatedNode);
  144463          30 :           ROSE_ASSERT(start->get_parent() != NULL);
  144464             : 
  144465          30 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  144466             : 
  144467             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  144468             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  144469             :        // ROSE_ASSERT(end != NULL);
  144470          30 :           if (end == NULL)
  144471             :              {
  144472           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  144473             :              }
  144474             :             else
  144475             :              {
  144476             : #if 0
  144477             :             // Debugging information
  144478             :                if (end->get_parent() == NULL)
  144479             :                   {
  144480             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144481             :                   }
  144482             : #endif
  144483          30 :                end->set_parent(locatedNode);
  144484          30 :                ROSE_ASSERT(end->get_parent() != NULL);
  144485             :              }
  144486             : 
  144487          30 :           SgExpression* expression = isSgExpression(result);
  144488          30 :           if (isSgExpression(this) != NULL)
  144489             :              {
  144490          30 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  144491             : 
  144492             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  144493          30 :                if (operatorPosition != NULL)
  144494             :                   {
  144495             : #if 0
  144496             :                  // Debugging information
  144497             :                     if (operatorPosition->get_parent() == NULL)
  144498             :                        {
  144499             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144500             :                        }
  144501             : #endif
  144502          30 :                     operatorPosition->set_parent(expression);
  144503          30 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  144504             :                   }
  144505             :              }
  144506             :         }
  144507             : 
  144508             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  144509          30 :      SgInitializedName* initializedName = isSgInitializedName(result);
  144510          30 :      if (initializedName != NULL)
  144511             :         {
  144512             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  144513           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  144514           0 :           ROSE_ASSERT(start != NULL);
  144515             : #if 0
  144516             :        // Debugging information
  144517             :           if (start->get_parent() == NULL)
  144518             :              {
  144519             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144520             :              }
  144521             : #endif
  144522           0 :           start->set_parent(initializedName);
  144523           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  144524             : 
  144525             : #if 0
  144526             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  144527             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  144528             : 
  144529             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  144530             :        // ROSE_ASSERT(end != NULL);
  144531             :           if (end == NULL)
  144532             :              {
  144533             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  144534             :              }
  144535             :             else
  144536             :              {
  144537             :                if (end->get_parent() == NULL)
  144538             :                   {
  144539             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144540             :                   }
  144541             :                end->set_parent(initializedName);
  144542             :                ROSE_ASSERT(end->get_parent() != NULL);
  144543             :              }
  144544             : #endif
  144545             :         }
  144546             : 
  144547             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  144548          30 :      help.insertCopiedNodePair(this,result);
  144549             : 
  144550             :   // printf ("End of copy SgLessOrEqualOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  144551             : 
  144552             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  144553             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  144554          30 :      help.decrementDepth();
  144555             : 
  144556             :   // Test if this is the root of the copy!
  144557          30 :      if (help.get_depth() == 0)
  144558             :         {
  144559             :        // This is the original calling node.
  144560             : 
  144561             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  144562             :        // printf ("Calling SgLessOrEqualOp::fixupCopy() (from root of AST being copied) \n");
  144563             : #if ALT_FIXUP_COPY
  144564             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  144565           4 :           fixupCopy_scopes (result,help);
  144566           4 :           fixupCopy_symbols (result,help);
  144567           4 :           fixupCopy_references (result,help);
  144568             : #else
  144569             :           fixupCopy(result,help);
  144570             : #endif
  144571             :        // Allow this to be called recursively, so accumulate the state.
  144572             :        // Also, clear the state in the SgCopyHelp object.
  144573             :        // help.clearState();
  144574             :         }
  144575             : 
  144576          30 :      return result;
  144577             :    }
  144578             : 
  144579             : 
  144580             : /* #line 144581 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  144581             : 
  144582             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144583             : 
  144584          46 : SgNode* SgGreaterOrEqualOp::copy ( SgCopyHelp& help) const
  144585             :    {
  144586          46 :      SgGreaterOrEqualOp* result = NULL;
  144587             : 
  144588             :   // printf ("Copy SgGreaterOrEqualOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  144589             : 
  144590             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  144591             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  144592             :   // The default value of the depth is 0, so after this call the depth is 1!
  144593          46 :      help.incrementDepth();
  144594             : 
  144595             : #if 0
  144596             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  144597             :   // but it is not generally true that things can only be copied once!
  144598             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  144599             :   // AstAttribute* existingAttribute = const_cast<SgGreaterOrEqualOp*>(this)->attribute["copied"];
  144600             :      bool previouslyCopied = const_cast<SgGreaterOrEqualOp*>(this)->attribute.exists("copied");
  144601             :      if (previouslyCopied == true)
  144602             :         {
  144603             :           this->get_file_info()->display("Called from copy SgGreaterOrEqualOp: debug");
  144604             :         }
  144605             :      ROSE_ASSERT(previouslyCopied == false);
  144606             : 
  144607             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  144608             :      AstAttribute* newAttribute = new AstAttribute();
  144609             :      ROSE_ASSERT(newAttribute != NULL);
  144610             : 
  144611             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  144612             :      const_cast<SgGreaterOrEqualOp*>(this)->attribute.add("copied",newAttribute);
  144613             : #endif
  144614             : 
  144615             :   // Copy data members from base classes
  144616             :   // Copy constructor parameter data member: startOfConstruct_copy
  144617             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  144618             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  144619          46 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  144620          46 :      if ( p_startOfConstruct != NULL ) 
  144621             :         { 
  144622          46 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  144623             :         } 
  144624             :        else 
  144625             :         { 
  144626             :           startOfConstruct_copy = NULL; 
  144627             :         } 
  144628             :   // Copy constructor parameter data member: lhs_operand_i_copy
  144629          46 :      SgExpression* lhs_operand_i_copy; 
  144630             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  144631          46 :           if (get_lhs_operand_i() != NULL) 
  144632             :              { 
  144633          46 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  144634             :              } 
  144635             :             else 
  144636             :              { 
  144637             :                lhs_operand_i_copy = NULL; 
  144638             :              } 
  144639             :   // Copy constructor parameter data member: rhs_operand_i_copy
  144640          46 :      SgExpression* rhs_operand_i_copy; 
  144641             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  144642          46 :           if (get_rhs_operand_i() != NULL) 
  144643             :              { 
  144644          46 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  144645             :              } 
  144646             :             else 
  144647             :              { 
  144648             :                rhs_operand_i_copy = NULL; 
  144649             :              } 
  144650             :   // Copy constructor parameter data member: expression_type_copy
  144651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  144652             :   // case: toBeCopied == COPY_DATA for expression_type
  144653          46 :      SgType* expression_type_copy = p_expression_type; 
  144654             :  
  144655             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144656             : 
  144657             :   // Build an empty copy of this object (will be filled in, but 
  144658             :   // the parent can't be set and must be set by the caller)
  144659          46 :      result = new SgGreaterOrEqualOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  144660          46 :      ROSE_ASSERT(result != NULL);
  144661             : 
  144662             :   // Copy data members of "this" class
  144663             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  144664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  144665             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  144666          46 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  144667          46 :      if ( p_endOfConstruct != NULL ) 
  144668             :         { 
  144669          46 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  144670             :         } 
  144671             :        else 
  144672             :         { 
  144673             :           endOfConstruct_copy = NULL; 
  144674             :         } 
  144675             :   /* check for a valid pointer and delete if present */ 
  144676          46 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  144677             :   /* add assignment to result here */ 
  144678          46 :      result->p_endOfConstruct = endOfConstruct_copy; 
  144679             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  144680             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  144681             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  144682          46 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  144683          46 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  144684             :         { 
  144685           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  144686             :         } 
  144687             :        else 
  144688             :         { 
  144689             :           attachedPreprocessingInfoPtr_copy = NULL; 
  144690             :         } 
  144691             :   /* check for a valid pointer and delete if present */ 
  144692          46 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  144693             :   /* add assignment to result here */ 
  144694          46 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  144695             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  144696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  144697             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  144698          46 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  144699          46 :      if ( p_attributeMechanism != NULL ) 
  144700             :         { 
  144701           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  144702             :         } 
  144703             :        else 
  144704             :         { 
  144705             :           attributeMechanism_copy = NULL; 
  144706             :         } 
  144707             :   /* check for a valid pointer and delete if present */ 
  144708          46 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  144709             :   /* add assignment to result here */ 
  144710          46 :      result->p_attributeMechanism = attributeMechanism_copy; 
  144711             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  144712             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  144713             :   // case: toBeCopied == COPY_DATA for need_paren
  144714          46 :      bool need_paren_copy = p_need_paren; 
  144715          46 :      result->p_need_paren = need_paren_copy; 
  144716             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  144717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  144718             :   // case: toBeCopied == COPY_DATA for lvalue
  144719          46 :      bool lvalue_copy = p_lvalue; 
  144720          46 :      result->p_lvalue = lvalue_copy; 
  144721             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  144722             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  144723             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  144724          46 :      bool global_qualified_name_copy = p_global_qualified_name; 
  144725          46 :      result->p_global_qualified_name = global_qualified_name_copy; 
  144726             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  144727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  144728             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  144729          46 :      Sg_File_Info* operatorPosition_copy = NULL; 
  144730          46 :      if ( p_operatorPosition != NULL ) 
  144731             :         { 
  144732          46 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  144733             :         } 
  144734             :        else 
  144735             :         { 
  144736             :           operatorPosition_copy = NULL; 
  144737             :         } 
  144738             :   /* check for a valid pointer and delete if present */ 
  144739          46 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  144740             :   /* add assignment to result here */ 
  144741          46 :      result->p_operatorPosition = operatorPosition_copy; 
  144742             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  144743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  144744             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  144745          46 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  144746          46 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  144747             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  144748          46 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  144749             :              { 
  144750           0 :                lhs_operand_i_copy->set_parent(result); 
  144751             :              } 
  144752             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  144753          46 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  144754             :              { 
  144755           0 :                rhs_operand_i_copy->set_parent(result); 
  144756             :              } 
  144757             : 
  144758             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144759             : 
  144760             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  144761             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  144762             :   // fixupCopy(result,help);
  144763             : 
  144764             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  144765             :   // the Sg_File_Info objects that are built for the new IR nodes.
  144766          46 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  144767          46 :      if (locatedNode != NULL)
  144768             :         {
  144769             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  144770          46 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  144771          46 :           ROSE_ASSERT(start != NULL);
  144772             : #if 0
  144773             :        // Debugging information
  144774             :           if (start->get_parent() == NULL)
  144775             :              {
  144776             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144777             :              }
  144778             : #endif
  144779          46 :           start->set_parent(locatedNode);
  144780          46 :           ROSE_ASSERT(start->get_parent() != NULL);
  144781             : 
  144782          46 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  144783             : 
  144784             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  144785             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  144786             :        // ROSE_ASSERT(end != NULL);
  144787          46 :           if (end == NULL)
  144788             :              {
  144789           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  144790             :              }
  144791             :             else
  144792             :              {
  144793             : #if 0
  144794             :             // Debugging information
  144795             :                if (end->get_parent() == NULL)
  144796             :                   {
  144797             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144798             :                   }
  144799             : #endif
  144800          46 :                end->set_parent(locatedNode);
  144801          46 :                ROSE_ASSERT(end->get_parent() != NULL);
  144802             :              }
  144803             : 
  144804          46 :           SgExpression* expression = isSgExpression(result);
  144805          46 :           if (isSgExpression(this) != NULL)
  144806             :              {
  144807          46 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  144808             : 
  144809             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  144810          46 :                if (operatorPosition != NULL)
  144811             :                   {
  144812             : #if 0
  144813             :                  // Debugging information
  144814             :                     if (operatorPosition->get_parent() == NULL)
  144815             :                        {
  144816             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144817             :                        }
  144818             : #endif
  144819          46 :                     operatorPosition->set_parent(expression);
  144820          46 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  144821             :                   }
  144822             :              }
  144823             :         }
  144824             : 
  144825             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  144826          46 :      SgInitializedName* initializedName = isSgInitializedName(result);
  144827          46 :      if (initializedName != NULL)
  144828             :         {
  144829             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  144830           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  144831           0 :           ROSE_ASSERT(start != NULL);
  144832             : #if 0
  144833             :        // Debugging information
  144834             :           if (start->get_parent() == NULL)
  144835             :              {
  144836             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144837             :              }
  144838             : #endif
  144839           0 :           start->set_parent(initializedName);
  144840           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  144841             : 
  144842             : #if 0
  144843             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  144844             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  144845             : 
  144846             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  144847             :        // ROSE_ASSERT(end != NULL);
  144848             :           if (end == NULL)
  144849             :              {
  144850             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  144851             :              }
  144852             :             else
  144853             :              {
  144854             :                if (end->get_parent() == NULL)
  144855             :                   {
  144856             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  144857             :                   }
  144858             :                end->set_parent(initializedName);
  144859             :                ROSE_ASSERT(end->get_parent() != NULL);
  144860             :              }
  144861             : #endif
  144862             :         }
  144863             : 
  144864             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  144865          46 :      help.insertCopiedNodePair(this,result);
  144866             : 
  144867             :   // printf ("End of copy SgGreaterOrEqualOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  144868             : 
  144869             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  144870             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  144871          46 :      help.decrementDepth();
  144872             : 
  144873             :   // Test if this is the root of the copy!
  144874          46 :      if (help.get_depth() == 0)
  144875             :         {
  144876             :        // This is the original calling node.
  144877             : 
  144878             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  144879             :        // printf ("Calling SgGreaterOrEqualOp::fixupCopy() (from root of AST being copied) \n");
  144880             : #if ALT_FIXUP_COPY
  144881             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  144882          14 :           fixupCopy_scopes (result,help);
  144883          14 :           fixupCopy_symbols (result,help);
  144884          14 :           fixupCopy_references (result,help);
  144885             : #else
  144886             :           fixupCopy(result,help);
  144887             : #endif
  144888             :        // Allow this to be called recursively, so accumulate the state.
  144889             :        // Also, clear the state in the SgCopyHelp object.
  144890             :        // help.clearState();
  144891             :         }
  144892             : 
  144893          46 :      return result;
  144894             :    }
  144895             : 
  144896             : 
  144897             : /* #line 144898 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  144898             : 
  144899             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144900             : 
  144901         151 : SgNode* SgAddOp::copy ( SgCopyHelp& help) const
  144902             :    {
  144903         151 :      SgAddOp* result = NULL;
  144904             : 
  144905             :   // printf ("Copy SgAddOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  144906             : 
  144907             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  144908             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  144909             :   // The default value of the depth is 0, so after this call the depth is 1!
  144910         151 :      help.incrementDepth();
  144911             : 
  144912             : #if 0
  144913             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  144914             :   // but it is not generally true that things can only be copied once!
  144915             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  144916             :   // AstAttribute* existingAttribute = const_cast<SgAddOp*>(this)->attribute["copied"];
  144917             :      bool previouslyCopied = const_cast<SgAddOp*>(this)->attribute.exists("copied");
  144918             :      if (previouslyCopied == true)
  144919             :         {
  144920             :           this->get_file_info()->display("Called from copy SgAddOp: debug");
  144921             :         }
  144922             :      ROSE_ASSERT(previouslyCopied == false);
  144923             : 
  144924             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  144925             :      AstAttribute* newAttribute = new AstAttribute();
  144926             :      ROSE_ASSERT(newAttribute != NULL);
  144927             : 
  144928             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  144929             :      const_cast<SgAddOp*>(this)->attribute.add("copied",newAttribute);
  144930             : #endif
  144931             : 
  144932             :   // Copy data members from base classes
  144933             :   // Copy constructor parameter data member: startOfConstruct_copy
  144934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  144935             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  144936         151 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  144937         151 :      if ( p_startOfConstruct != NULL ) 
  144938             :         { 
  144939         151 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  144940             :         } 
  144941             :        else 
  144942             :         { 
  144943             :           startOfConstruct_copy = NULL; 
  144944             :         } 
  144945             :   // Copy constructor parameter data member: lhs_operand_i_copy
  144946         151 :      SgExpression* lhs_operand_i_copy; 
  144947             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  144948         151 :           if (get_lhs_operand_i() != NULL) 
  144949             :              { 
  144950         151 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  144951             :              } 
  144952             :             else 
  144953             :              { 
  144954             :                lhs_operand_i_copy = NULL; 
  144955             :              } 
  144956             :   // Copy constructor parameter data member: rhs_operand_i_copy
  144957         151 :      SgExpression* rhs_operand_i_copy; 
  144958             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  144959         151 :           if (get_rhs_operand_i() != NULL) 
  144960             :              { 
  144961         151 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  144962             :              } 
  144963             :             else 
  144964             :              { 
  144965             :                rhs_operand_i_copy = NULL; 
  144966             :              } 
  144967             :   // Copy constructor parameter data member: expression_type_copy
  144968             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  144969             :   // case: toBeCopied == COPY_DATA for expression_type
  144970         151 :      SgType* expression_type_copy = p_expression_type; 
  144971             :  
  144972             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  144973             : 
  144974             :   // Build an empty copy of this object (will be filled in, but 
  144975             :   // the parent can't be set and must be set by the caller)
  144976         151 :      result = new SgAddOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  144977         151 :      ROSE_ASSERT(result != NULL);
  144978             : 
  144979             :   // Copy data members of "this" class
  144980             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  144981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  144982             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  144983         151 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  144984         151 :      if ( p_endOfConstruct != NULL ) 
  144985             :         { 
  144986         151 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  144987             :         } 
  144988             :        else 
  144989             :         { 
  144990             :           endOfConstruct_copy = NULL; 
  144991             :         } 
  144992             :   /* check for a valid pointer and delete if present */ 
  144993         151 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  144994             :   /* add assignment to result here */ 
  144995         151 :      result->p_endOfConstruct = endOfConstruct_copy; 
  144996             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  144997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  144998             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  144999         151 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  145000         151 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  145001             :         { 
  145002           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  145003             :         } 
  145004             :        else 
  145005             :         { 
  145006             :           attachedPreprocessingInfoPtr_copy = NULL; 
  145007             :         } 
  145008             :   /* check for a valid pointer and delete if present */ 
  145009         151 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  145010             :   /* add assignment to result here */ 
  145011         151 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  145012             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  145013             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  145014             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  145015         151 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  145016         151 :      if ( p_attributeMechanism != NULL ) 
  145017             :         { 
  145018           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  145019             :         } 
  145020             :        else 
  145021             :         { 
  145022             :           attributeMechanism_copy = NULL; 
  145023             :         } 
  145024             :   /* check for a valid pointer and delete if present */ 
  145025         151 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  145026             :   /* add assignment to result here */ 
  145027         151 :      result->p_attributeMechanism = attributeMechanism_copy; 
  145028             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  145029             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  145030             :   // case: toBeCopied == COPY_DATA for need_paren
  145031         151 :      bool need_paren_copy = p_need_paren; 
  145032         151 :      result->p_need_paren = need_paren_copy; 
  145033             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  145034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  145035             :   // case: toBeCopied == COPY_DATA for lvalue
  145036         151 :      bool lvalue_copy = p_lvalue; 
  145037         151 :      result->p_lvalue = lvalue_copy; 
  145038             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  145039             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  145040             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  145041         151 :      bool global_qualified_name_copy = p_global_qualified_name; 
  145042         151 :      result->p_global_qualified_name = global_qualified_name_copy; 
  145043             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  145044             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  145045             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  145046         151 :      Sg_File_Info* operatorPosition_copy = NULL; 
  145047         151 :      if ( p_operatorPosition != NULL ) 
  145048             :         { 
  145049         151 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  145050             :         } 
  145051             :        else 
  145052             :         { 
  145053             :           operatorPosition_copy = NULL; 
  145054             :         } 
  145055             :   /* check for a valid pointer and delete if present */ 
  145056         151 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  145057             :   /* add assignment to result here */ 
  145058         151 :      result->p_operatorPosition = operatorPosition_copy; 
  145059             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  145060             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  145061             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  145062         151 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  145063         151 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  145064             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  145065         151 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  145066             :              { 
  145067           0 :                lhs_operand_i_copy->set_parent(result); 
  145068             :              } 
  145069             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  145070         151 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  145071             :              { 
  145072           0 :                rhs_operand_i_copy->set_parent(result); 
  145073             :              } 
  145074             : 
  145075             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  145076             : 
  145077             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  145078             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  145079             :   // fixupCopy(result,help);
  145080             : 
  145081             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  145082             :   // the Sg_File_Info objects that are built for the new IR nodes.
  145083         151 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  145084         151 :      if (locatedNode != NULL)
  145085             :         {
  145086             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  145087         151 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  145088         151 :           ROSE_ASSERT(start != NULL);
  145089             : #if 0
  145090             :        // Debugging information
  145091             :           if (start->get_parent() == NULL)
  145092             :              {
  145093             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145094             :              }
  145095             : #endif
  145096         151 :           start->set_parent(locatedNode);
  145097         151 :           ROSE_ASSERT(start->get_parent() != NULL);
  145098             : 
  145099         151 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  145100             : 
  145101             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  145102             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  145103             :        // ROSE_ASSERT(end != NULL);
  145104         151 :           if (end == NULL)
  145105             :              {
  145106           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  145107             :              }
  145108             :             else
  145109             :              {
  145110             : #if 0
  145111             :             // Debugging information
  145112             :                if (end->get_parent() == NULL)
  145113             :                   {
  145114             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145115             :                   }
  145116             : #endif
  145117         151 :                end->set_parent(locatedNode);
  145118         151 :                ROSE_ASSERT(end->get_parent() != NULL);
  145119             :              }
  145120             : 
  145121         151 :           SgExpression* expression = isSgExpression(result);
  145122         151 :           if (isSgExpression(this) != NULL)
  145123             :              {
  145124         151 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  145125             : 
  145126             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  145127         151 :                if (operatorPosition != NULL)
  145128             :                   {
  145129             : #if 0
  145130             :                  // Debugging information
  145131             :                     if (operatorPosition->get_parent() == NULL)
  145132             :                        {
  145133             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145134             :                        }
  145135             : #endif
  145136         151 :                     operatorPosition->set_parent(expression);
  145137         151 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  145138             :                   }
  145139             :              }
  145140             :         }
  145141             : 
  145142             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  145143         151 :      SgInitializedName* initializedName = isSgInitializedName(result);
  145144         151 :      if (initializedName != NULL)
  145145             :         {
  145146             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  145147           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  145148           0 :           ROSE_ASSERT(start != NULL);
  145149             : #if 0
  145150             :        // Debugging information
  145151             :           if (start->get_parent() == NULL)
  145152             :              {
  145153             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145154             :              }
  145155             : #endif
  145156           0 :           start->set_parent(initializedName);
  145157           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  145158             : 
  145159             : #if 0
  145160             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  145161             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  145162             : 
  145163             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  145164             :        // ROSE_ASSERT(end != NULL);
  145165             :           if (end == NULL)
  145166             :              {
  145167             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  145168             :              }
  145169             :             else
  145170             :              {
  145171             :                if (end->get_parent() == NULL)
  145172             :                   {
  145173             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145174             :                   }
  145175             :                end->set_parent(initializedName);
  145176             :                ROSE_ASSERT(end->get_parent() != NULL);
  145177             :              }
  145178             : #endif
  145179             :         }
  145180             : 
  145181             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  145182         151 :      help.insertCopiedNodePair(this,result);
  145183             : 
  145184             :   // printf ("End of copy SgAddOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  145185             : 
  145186             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  145187             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  145188         151 :      help.decrementDepth();
  145189             : 
  145190             :   // Test if this is the root of the copy!
  145191         151 :      if (help.get_depth() == 0)
  145192             :         {
  145193             :        // This is the original calling node.
  145194             : 
  145195             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  145196             :        // printf ("Calling SgAddOp::fixupCopy() (from root of AST being copied) \n");
  145197             : #if ALT_FIXUP_COPY
  145198             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  145199          31 :           fixupCopy_scopes (result,help);
  145200          31 :           fixupCopy_symbols (result,help);
  145201          31 :           fixupCopy_references (result,help);
  145202             : #else
  145203             :           fixupCopy(result,help);
  145204             : #endif
  145205             :        // Allow this to be called recursively, so accumulate the state.
  145206             :        // Also, clear the state in the SgCopyHelp object.
  145207             :        // help.clearState();
  145208             :         }
  145209             : 
  145210         151 :      return result;
  145211             :    }
  145212             : 
  145213             : 
  145214             : /* #line 145215 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  145215             : 
  145216             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  145217             : 
  145218         101 : SgNode* SgSubtractOp::copy ( SgCopyHelp& help) const
  145219             :    {
  145220         101 :      SgSubtractOp* result = NULL;
  145221             : 
  145222             :   // printf ("Copy SgSubtractOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  145223             : 
  145224             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  145225             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  145226             :   // The default value of the depth is 0, so after this call the depth is 1!
  145227         101 :      help.incrementDepth();
  145228             : 
  145229             : #if 0
  145230             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  145231             :   // but it is not generally true that things can only be copied once!
  145232             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  145233             :   // AstAttribute* existingAttribute = const_cast<SgSubtractOp*>(this)->attribute["copied"];
  145234             :      bool previouslyCopied = const_cast<SgSubtractOp*>(this)->attribute.exists("copied");
  145235             :      if (previouslyCopied == true)
  145236             :         {
  145237             :           this->get_file_info()->display("Called from copy SgSubtractOp: debug");
  145238             :         }
  145239             :      ROSE_ASSERT(previouslyCopied == false);
  145240             : 
  145241             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  145242             :      AstAttribute* newAttribute = new AstAttribute();
  145243             :      ROSE_ASSERT(newAttribute != NULL);
  145244             : 
  145245             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  145246             :      const_cast<SgSubtractOp*>(this)->attribute.add("copied",newAttribute);
  145247             : #endif
  145248             : 
  145249             :   // Copy data members from base classes
  145250             :   // Copy constructor parameter data member: startOfConstruct_copy
  145251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  145252             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  145253         101 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  145254         101 :      if ( p_startOfConstruct != NULL ) 
  145255             :         { 
  145256         101 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  145257             :         } 
  145258             :        else 
  145259             :         { 
  145260             :           startOfConstruct_copy = NULL; 
  145261             :         } 
  145262             :   // Copy constructor parameter data member: lhs_operand_i_copy
  145263         101 :      SgExpression* lhs_operand_i_copy; 
  145264             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  145265         101 :           if (get_lhs_operand_i() != NULL) 
  145266             :              { 
  145267         101 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  145268             :              } 
  145269             :             else 
  145270             :              { 
  145271             :                lhs_operand_i_copy = NULL; 
  145272             :              } 
  145273             :   // Copy constructor parameter data member: rhs_operand_i_copy
  145274         101 :      SgExpression* rhs_operand_i_copy; 
  145275             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  145276         101 :           if (get_rhs_operand_i() != NULL) 
  145277             :              { 
  145278         101 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  145279             :              } 
  145280             :             else 
  145281             :              { 
  145282             :                rhs_operand_i_copy = NULL; 
  145283             :              } 
  145284             :   // Copy constructor parameter data member: expression_type_copy
  145285             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  145286             :   // case: toBeCopied == COPY_DATA for expression_type
  145287         101 :      SgType* expression_type_copy = p_expression_type; 
  145288             :  
  145289             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  145290             : 
  145291             :   // Build an empty copy of this object (will be filled in, but 
  145292             :   // the parent can't be set and must be set by the caller)
  145293         101 :      result = new SgSubtractOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  145294         101 :      ROSE_ASSERT(result != NULL);
  145295             : 
  145296             :   // Copy data members of "this" class
  145297             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  145298             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  145299             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  145300         101 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  145301         101 :      if ( p_endOfConstruct != NULL ) 
  145302             :         { 
  145303         101 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  145304             :         } 
  145305             :        else 
  145306             :         { 
  145307             :           endOfConstruct_copy = NULL; 
  145308             :         } 
  145309             :   /* check for a valid pointer and delete if present */ 
  145310         101 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  145311             :   /* add assignment to result here */ 
  145312         101 :      result->p_endOfConstruct = endOfConstruct_copy; 
  145313             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  145314             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  145315             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  145316         101 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  145317         101 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  145318             :         { 
  145319           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  145320             :         } 
  145321             :        else 
  145322             :         { 
  145323             :           attachedPreprocessingInfoPtr_copy = NULL; 
  145324             :         } 
  145325             :   /* check for a valid pointer and delete if present */ 
  145326         101 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  145327             :   /* add assignment to result here */ 
  145328         101 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  145329             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  145330             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  145331             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  145332         101 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  145333         101 :      if ( p_attributeMechanism != NULL ) 
  145334             :         { 
  145335           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  145336             :         } 
  145337             :        else 
  145338             :         { 
  145339             :           attributeMechanism_copy = NULL; 
  145340             :         } 
  145341             :   /* check for a valid pointer and delete if present */ 
  145342         101 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  145343             :   /* add assignment to result here */ 
  145344         101 :      result->p_attributeMechanism = attributeMechanism_copy; 
  145345             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  145346             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  145347             :   // case: toBeCopied == COPY_DATA for need_paren
  145348         101 :      bool need_paren_copy = p_need_paren; 
  145349         101 :      result->p_need_paren = need_paren_copy; 
  145350             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  145351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  145352             :   // case: toBeCopied == COPY_DATA for lvalue
  145353         101 :      bool lvalue_copy = p_lvalue; 
  145354         101 :      result->p_lvalue = lvalue_copy; 
  145355             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  145356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  145357             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  145358         101 :      bool global_qualified_name_copy = p_global_qualified_name; 
  145359         101 :      result->p_global_qualified_name = global_qualified_name_copy; 
  145360             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  145361             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  145362             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  145363         101 :      Sg_File_Info* operatorPosition_copy = NULL; 
  145364         101 :      if ( p_operatorPosition != NULL ) 
  145365             :         { 
  145366         101 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  145367             :         } 
  145368             :        else 
  145369             :         { 
  145370             :           operatorPosition_copy = NULL; 
  145371             :         } 
  145372             :   /* check for a valid pointer and delete if present */ 
  145373         101 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  145374             :   /* add assignment to result here */ 
  145375         101 :      result->p_operatorPosition = operatorPosition_copy; 
  145376             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  145377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  145378             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  145379         101 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  145380         101 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  145381             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  145382         101 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  145383             :              { 
  145384           0 :                lhs_operand_i_copy->set_parent(result); 
  145385             :              } 
  145386             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  145387         101 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  145388             :              { 
  145389           0 :                rhs_operand_i_copy->set_parent(result); 
  145390             :              } 
  145391             : 
  145392             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  145393             : 
  145394             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  145395             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  145396             :   // fixupCopy(result,help);
  145397             : 
  145398             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  145399             :   // the Sg_File_Info objects that are built for the new IR nodes.
  145400         101 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  145401         101 :      if (locatedNode != NULL)
  145402             :         {
  145403             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  145404         101 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  145405         101 :           ROSE_ASSERT(start != NULL);
  145406             : #if 0
  145407             :        // Debugging information
  145408             :           if (start->get_parent() == NULL)
  145409             :              {
  145410             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145411             :              }
  145412             : #endif
  145413         101 :           start->set_parent(locatedNode);
  145414         101 :           ROSE_ASSERT(start->get_parent() != NULL);
  145415             : 
  145416         101 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  145417             : 
  145418             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  145419             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  145420             :        // ROSE_ASSERT(end != NULL);
  145421         101 :           if (end == NULL)
  145422             :              {
  145423           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  145424             :              }
  145425             :             else
  145426             :              {
  145427             : #if 0
  145428             :             // Debugging information
  145429             :                if (end->get_parent() == NULL)
  145430             :                   {
  145431             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145432             :                   }
  145433             : #endif
  145434         101 :                end->set_parent(locatedNode);
  145435         101 :                ROSE_ASSERT(end->get_parent() != NULL);
  145436             :              }
  145437             : 
  145438         101 :           SgExpression* expression = isSgExpression(result);
  145439         101 :           if (isSgExpression(this) != NULL)
  145440             :              {
  145441         101 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  145442             : 
  145443             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  145444         101 :                if (operatorPosition != NULL)
  145445             :                   {
  145446             : #if 0
  145447             :                  // Debugging information
  145448             :                     if (operatorPosition->get_parent() == NULL)
  145449             :                        {
  145450             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145451             :                        }
  145452             : #endif
  145453         101 :                     operatorPosition->set_parent(expression);
  145454         101 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  145455             :                   }
  145456             :              }
  145457             :         }
  145458             : 
  145459             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  145460         101 :      SgInitializedName* initializedName = isSgInitializedName(result);
  145461         101 :      if (initializedName != NULL)
  145462             :         {
  145463             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  145464           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  145465           0 :           ROSE_ASSERT(start != NULL);
  145466             : #if 0
  145467             :        // Debugging information
  145468             :           if (start->get_parent() == NULL)
  145469             :              {
  145470             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145471             :              }
  145472             : #endif
  145473           0 :           start->set_parent(initializedName);
  145474           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  145475             : 
  145476             : #if 0
  145477             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  145478             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  145479             : 
  145480             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  145481             :        // ROSE_ASSERT(end != NULL);
  145482             :           if (end == NULL)
  145483             :              {
  145484             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  145485             :              }
  145486             :             else
  145487             :              {
  145488             :                if (end->get_parent() == NULL)
  145489             :                   {
  145490             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145491             :                   }
  145492             :                end->set_parent(initializedName);
  145493             :                ROSE_ASSERT(end->get_parent() != NULL);
  145494             :              }
  145495             : #endif
  145496             :         }
  145497             : 
  145498             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  145499         101 :      help.insertCopiedNodePair(this,result);
  145500             : 
  145501             :   // printf ("End of copy SgSubtractOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  145502             : 
  145503             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  145504             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  145505         101 :      help.decrementDepth();
  145506             : 
  145507             :   // Test if this is the root of the copy!
  145508         101 :      if (help.get_depth() == 0)
  145509             :         {
  145510             :        // This is the original calling node.
  145511             : 
  145512             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  145513             :        // printf ("Calling SgSubtractOp::fixupCopy() (from root of AST being copied) \n");
  145514             : #if ALT_FIXUP_COPY
  145515             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  145516          19 :           fixupCopy_scopes (result,help);
  145517          19 :           fixupCopy_symbols (result,help);
  145518          19 :           fixupCopy_references (result,help);
  145519             : #else
  145520             :           fixupCopy(result,help);
  145521             : #endif
  145522             :        // Allow this to be called recursively, so accumulate the state.
  145523             :        // Also, clear the state in the SgCopyHelp object.
  145524             :        // help.clearState();
  145525             :         }
  145526             : 
  145527         101 :      return result;
  145528             :    }
  145529             : 
  145530             : 
  145531             : /* #line 145532 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  145532             : 
  145533             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  145534             : 
  145535          65 : SgNode* SgMultiplyOp::copy ( SgCopyHelp& help) const
  145536             :    {
  145537          65 :      SgMultiplyOp* result = NULL;
  145538             : 
  145539             :   // printf ("Copy SgMultiplyOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  145540             : 
  145541             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  145542             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  145543             :   // The default value of the depth is 0, so after this call the depth is 1!
  145544          65 :      help.incrementDepth();
  145545             : 
  145546             : #if 0
  145547             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  145548             :   // but it is not generally true that things can only be copied once!
  145549             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  145550             :   // AstAttribute* existingAttribute = const_cast<SgMultiplyOp*>(this)->attribute["copied"];
  145551             :      bool previouslyCopied = const_cast<SgMultiplyOp*>(this)->attribute.exists("copied");
  145552             :      if (previouslyCopied == true)
  145553             :         {
  145554             :           this->get_file_info()->display("Called from copy SgMultiplyOp: debug");
  145555             :         }
  145556             :      ROSE_ASSERT(previouslyCopied == false);
  145557             : 
  145558             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  145559             :      AstAttribute* newAttribute = new AstAttribute();
  145560             :      ROSE_ASSERT(newAttribute != NULL);
  145561             : 
  145562             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  145563             :      const_cast<SgMultiplyOp*>(this)->attribute.add("copied",newAttribute);
  145564             : #endif
  145565             : 
  145566             :   // Copy data members from base classes
  145567             :   // Copy constructor parameter data member: startOfConstruct_copy
  145568             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  145569             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  145570          65 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  145571          65 :      if ( p_startOfConstruct != NULL ) 
  145572             :         { 
  145573          65 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  145574             :         } 
  145575             :        else 
  145576             :         { 
  145577             :           startOfConstruct_copy = NULL; 
  145578             :         } 
  145579             :   // Copy constructor parameter data member: lhs_operand_i_copy
  145580          65 :      SgExpression* lhs_operand_i_copy; 
  145581             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  145582          65 :           if (get_lhs_operand_i() != NULL) 
  145583             :              { 
  145584          65 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  145585             :              } 
  145586             :             else 
  145587             :              { 
  145588             :                lhs_operand_i_copy = NULL; 
  145589             :              } 
  145590             :   // Copy constructor parameter data member: rhs_operand_i_copy
  145591          65 :      SgExpression* rhs_operand_i_copy; 
  145592             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  145593          65 :           if (get_rhs_operand_i() != NULL) 
  145594             :              { 
  145595          65 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  145596             :              } 
  145597             :             else 
  145598             :              { 
  145599             :                rhs_operand_i_copy = NULL; 
  145600             :              } 
  145601             :   // Copy constructor parameter data member: expression_type_copy
  145602             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  145603             :   // case: toBeCopied == COPY_DATA for expression_type
  145604          65 :      SgType* expression_type_copy = p_expression_type; 
  145605             :  
  145606             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  145607             : 
  145608             :   // Build an empty copy of this object (will be filled in, but 
  145609             :   // the parent can't be set and must be set by the caller)
  145610          65 :      result = new SgMultiplyOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  145611          65 :      ROSE_ASSERT(result != NULL);
  145612             : 
  145613             :   // Copy data members of "this" class
  145614             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  145615             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  145616             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  145617          65 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  145618          65 :      if ( p_endOfConstruct != NULL ) 
  145619             :         { 
  145620          65 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  145621             :         } 
  145622             :        else 
  145623             :         { 
  145624             :           endOfConstruct_copy = NULL; 
  145625             :         } 
  145626             :   /* check for a valid pointer and delete if present */ 
  145627          65 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  145628             :   /* add assignment to result here */ 
  145629          65 :      result->p_endOfConstruct = endOfConstruct_copy; 
  145630             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  145631             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  145632             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  145633          65 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  145634          65 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  145635             :         { 
  145636           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  145637             :         } 
  145638             :        else 
  145639             :         { 
  145640             :           attachedPreprocessingInfoPtr_copy = NULL; 
  145641             :         } 
  145642             :   /* check for a valid pointer and delete if present */ 
  145643          65 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  145644             :   /* add assignment to result here */ 
  145645          65 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  145646             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  145647             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  145648             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  145649          65 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  145650          65 :      if ( p_attributeMechanism != NULL ) 
  145651             :         { 
  145652           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  145653             :         } 
  145654             :        else 
  145655             :         { 
  145656             :           attributeMechanism_copy = NULL; 
  145657             :         } 
  145658             :   /* check for a valid pointer and delete if present */ 
  145659          65 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  145660             :   /* add assignment to result here */ 
  145661          65 :      result->p_attributeMechanism = attributeMechanism_copy; 
  145662             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  145663             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  145664             :   // case: toBeCopied == COPY_DATA for need_paren
  145665          65 :      bool need_paren_copy = p_need_paren; 
  145666          65 :      result->p_need_paren = need_paren_copy; 
  145667             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  145668             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  145669             :   // case: toBeCopied == COPY_DATA for lvalue
  145670          65 :      bool lvalue_copy = p_lvalue; 
  145671          65 :      result->p_lvalue = lvalue_copy; 
  145672             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  145673             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  145674             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  145675          65 :      bool global_qualified_name_copy = p_global_qualified_name; 
  145676          65 :      result->p_global_qualified_name = global_qualified_name_copy; 
  145677             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  145678             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  145679             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  145680          65 :      Sg_File_Info* operatorPosition_copy = NULL; 
  145681          65 :      if ( p_operatorPosition != NULL ) 
  145682             :         { 
  145683          65 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  145684             :         } 
  145685             :        else 
  145686             :         { 
  145687             :           operatorPosition_copy = NULL; 
  145688             :         } 
  145689             :   /* check for a valid pointer and delete if present */ 
  145690          65 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  145691             :   /* add assignment to result here */ 
  145692          65 :      result->p_operatorPosition = operatorPosition_copy; 
  145693             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  145694             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  145695             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  145696          65 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  145697          65 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  145698             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  145699          65 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  145700             :              { 
  145701           0 :                lhs_operand_i_copy->set_parent(result); 
  145702             :              } 
  145703             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  145704          65 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  145705             :              { 
  145706           0 :                rhs_operand_i_copy->set_parent(result); 
  145707             :              } 
  145708             : 
  145709             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  145710             : 
  145711             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  145712             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  145713             :   // fixupCopy(result,help);
  145714             : 
  145715             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  145716             :   // the Sg_File_Info objects that are built for the new IR nodes.
  145717          65 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  145718          65 :      if (locatedNode != NULL)
  145719             :         {
  145720             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  145721          65 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  145722          65 :           ROSE_ASSERT(start != NULL);
  145723             : #if 0
  145724             :        // Debugging information
  145725             :           if (start->get_parent() == NULL)
  145726             :              {
  145727             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145728             :              }
  145729             : #endif
  145730          65 :           start->set_parent(locatedNode);
  145731          65 :           ROSE_ASSERT(start->get_parent() != NULL);
  145732             : 
  145733          65 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  145734             : 
  145735             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  145736             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  145737             :        // ROSE_ASSERT(end != NULL);
  145738          65 :           if (end == NULL)
  145739             :              {
  145740           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  145741             :              }
  145742             :             else
  145743             :              {
  145744             : #if 0
  145745             :             // Debugging information
  145746             :                if (end->get_parent() == NULL)
  145747             :                   {
  145748             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145749             :                   }
  145750             : #endif
  145751          65 :                end->set_parent(locatedNode);
  145752          65 :                ROSE_ASSERT(end->get_parent() != NULL);
  145753             :              }
  145754             : 
  145755          65 :           SgExpression* expression = isSgExpression(result);
  145756          65 :           if (isSgExpression(this) != NULL)
  145757             :              {
  145758          65 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  145759             : 
  145760             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  145761          65 :                if (operatorPosition != NULL)
  145762             :                   {
  145763             : #if 0
  145764             :                  // Debugging information
  145765             :                     if (operatorPosition->get_parent() == NULL)
  145766             :                        {
  145767             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145768             :                        }
  145769             : #endif
  145770          65 :                     operatorPosition->set_parent(expression);
  145771          65 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  145772             :                   }
  145773             :              }
  145774             :         }
  145775             : 
  145776             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  145777          65 :      SgInitializedName* initializedName = isSgInitializedName(result);
  145778          65 :      if (initializedName != NULL)
  145779             :         {
  145780             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  145781           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  145782           0 :           ROSE_ASSERT(start != NULL);
  145783             : #if 0
  145784             :        // Debugging information
  145785             :           if (start->get_parent() == NULL)
  145786             :              {
  145787             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145788             :              }
  145789             : #endif
  145790           0 :           start->set_parent(initializedName);
  145791           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  145792             : 
  145793             : #if 0
  145794             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  145795             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  145796             : 
  145797             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  145798             :        // ROSE_ASSERT(end != NULL);
  145799             :           if (end == NULL)
  145800             :              {
  145801             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  145802             :              }
  145803             :             else
  145804             :              {
  145805             :                if (end->get_parent() == NULL)
  145806             :                   {
  145807             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  145808             :                   }
  145809             :                end->set_parent(initializedName);
  145810             :                ROSE_ASSERT(end->get_parent() != NULL);
  145811             :              }
  145812             : #endif
  145813             :         }
  145814             : 
  145815             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  145816          65 :      help.insertCopiedNodePair(this,result);
  145817             : 
  145818             :   // printf ("End of copy SgMultiplyOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  145819             : 
  145820             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  145821             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  145822          65 :      help.decrementDepth();
  145823             : 
  145824             :   // Test if this is the root of the copy!
  145825          65 :      if (help.get_depth() == 0)
  145826             :         {
  145827             :        // This is the original calling node.
  145828             : 
  145829             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  145830             :        // printf ("Calling SgMultiplyOp::fixupCopy() (from root of AST being copied) \n");
  145831             : #if ALT_FIXUP_COPY
  145832             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  145833          22 :           fixupCopy_scopes (result,help);
  145834          22 :           fixupCopy_symbols (result,help);
  145835          22 :           fixupCopy_references (result,help);
  145836             : #else
  145837             :           fixupCopy(result,help);
  145838             : #endif
  145839             :        // Allow this to be called recursively, so accumulate the state.
  145840             :        // Also, clear the state in the SgCopyHelp object.
  145841             :        // help.clearState();
  145842             :         }
  145843             : 
  145844          65 :      return result;
  145845             :    }
  145846             : 
  145847             : 
  145848             : /* #line 145849 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  145849             : 
  145850             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  145851             : 
  145852          61 : SgNode* SgDivideOp::copy ( SgCopyHelp& help) const
  145853             :    {
  145854          61 :      SgDivideOp* result = NULL;
  145855             : 
  145856             :   // printf ("Copy SgDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  145857             : 
  145858             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  145859             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  145860             :   // The default value of the depth is 0, so after this call the depth is 1!
  145861          61 :      help.incrementDepth();
  145862             : 
  145863             : #if 0
  145864             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  145865             :   // but it is not generally true that things can only be copied once!
  145866             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  145867             :   // AstAttribute* existingAttribute = const_cast<SgDivideOp*>(this)->attribute["copied"];
  145868             :      bool previouslyCopied = const_cast<SgDivideOp*>(this)->attribute.exists("copied");
  145869             :      if (previouslyCopied == true)
  145870             :         {
  145871             :           this->get_file_info()->display("Called from copy SgDivideOp: debug");
  145872             :         }
  145873             :      ROSE_ASSERT(previouslyCopied == false);
  145874             : 
  145875             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  145876             :      AstAttribute* newAttribute = new AstAttribute();
  145877             :      ROSE_ASSERT(newAttribute != NULL);
  145878             : 
  145879             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  145880             :      const_cast<SgDivideOp*>(this)->attribute.add("copied",newAttribute);
  145881             : #endif
  145882             : 
  145883             :   // Copy data members from base classes
  145884             :   // Copy constructor parameter data member: startOfConstruct_copy
  145885             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  145886             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  145887          61 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  145888          61 :      if ( p_startOfConstruct != NULL ) 
  145889             :         { 
  145890          61 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  145891             :         } 
  145892             :        else 
  145893             :         { 
  145894             :           startOfConstruct_copy = NULL; 
  145895             :         } 
  145896             :   // Copy constructor parameter data member: lhs_operand_i_copy
  145897          61 :      SgExpression* lhs_operand_i_copy; 
  145898             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  145899          61 :           if (get_lhs_operand_i() != NULL) 
  145900             :              { 
  145901          61 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  145902             :              } 
  145903             :             else 
  145904             :              { 
  145905             :                lhs_operand_i_copy = NULL; 
  145906             :              } 
  145907             :   // Copy constructor parameter data member: rhs_operand_i_copy
  145908          61 :      SgExpression* rhs_operand_i_copy; 
  145909             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  145910          61 :           if (get_rhs_operand_i() != NULL) 
  145911             :              { 
  145912          61 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  145913             :              } 
  145914             :             else 
  145915             :              { 
  145916             :                rhs_operand_i_copy = NULL; 
  145917             :              } 
  145918             :   // Copy constructor parameter data member: expression_type_copy
  145919             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  145920             :   // case: toBeCopied == COPY_DATA for expression_type
  145921          61 :      SgType* expression_type_copy = p_expression_type; 
  145922             :  
  145923             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  145924             : 
  145925             :   // Build an empty copy of this object (will be filled in, but 
  145926             :   // the parent can't be set and must be set by the caller)
  145927          61 :      result = new SgDivideOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  145928          61 :      ROSE_ASSERT(result != NULL);
  145929             : 
  145930             :   // Copy data members of "this" class
  145931             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  145932             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  145933             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  145934          61 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  145935          61 :      if ( p_endOfConstruct != NULL ) 
  145936             :         { 
  145937          61 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  145938             :         } 
  145939             :        else 
  145940             :         { 
  145941             :           endOfConstruct_copy = NULL; 
  145942             :         } 
  145943             :   /* check for a valid pointer and delete if present */ 
  145944          61 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  145945             :   /* add assignment to result here */ 
  145946          61 :      result->p_endOfConstruct = endOfConstruct_copy; 
  145947             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  145948             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  145949             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  145950          61 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  145951          61 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  145952             :         { 
  145953           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  145954             :         } 
  145955             :        else 
  145956             :         { 
  145957             :           attachedPreprocessingInfoPtr_copy = NULL; 
  145958             :         } 
  145959             :   /* check for a valid pointer and delete if present */ 
  145960          61 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  145961             :   /* add assignment to result here */ 
  145962          61 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  145963             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  145964             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  145965             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  145966          61 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  145967          61 :      if ( p_attributeMechanism != NULL ) 
  145968             :         { 
  145969           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  145970             :         } 
  145971             :        else 
  145972             :         { 
  145973             :           attributeMechanism_copy = NULL; 
  145974             :         } 
  145975             :   /* check for a valid pointer and delete if present */ 
  145976          61 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  145977             :   /* add assignment to result here */ 
  145978          61 :      result->p_attributeMechanism = attributeMechanism_copy; 
  145979             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  145980             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  145981             :   // case: toBeCopied == COPY_DATA for need_paren
  145982          61 :      bool need_paren_copy = p_need_paren; 
  145983          61 :      result->p_need_paren = need_paren_copy; 
  145984             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  145985             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  145986             :   // case: toBeCopied == COPY_DATA for lvalue
  145987          61 :      bool lvalue_copy = p_lvalue; 
  145988          61 :      result->p_lvalue = lvalue_copy; 
  145989             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  145990             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  145991             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  145992          61 :      bool global_qualified_name_copy = p_global_qualified_name; 
  145993          61 :      result->p_global_qualified_name = global_qualified_name_copy; 
  145994             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  145995             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  145996             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  145997          61 :      Sg_File_Info* operatorPosition_copy = NULL; 
  145998          61 :      if ( p_operatorPosition != NULL ) 
  145999             :         { 
  146000          61 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  146001             :         } 
  146002             :        else 
  146003             :         { 
  146004             :           operatorPosition_copy = NULL; 
  146005             :         } 
  146006             :   /* check for a valid pointer and delete if present */ 
  146007          61 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  146008             :   /* add assignment to result here */ 
  146009          61 :      result->p_operatorPosition = operatorPosition_copy; 
  146010             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  146011             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  146012             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  146013          61 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  146014          61 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  146015             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  146016          61 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  146017             :              { 
  146018           0 :                lhs_operand_i_copy->set_parent(result); 
  146019             :              } 
  146020             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  146021          61 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  146022             :              { 
  146023           0 :                rhs_operand_i_copy->set_parent(result); 
  146024             :              } 
  146025             : 
  146026             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146027             : 
  146028             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  146029             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  146030             :   // fixupCopy(result,help);
  146031             : 
  146032             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  146033             :   // the Sg_File_Info objects that are built for the new IR nodes.
  146034          61 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  146035          61 :      if (locatedNode != NULL)
  146036             :         {
  146037             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  146038          61 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  146039          61 :           ROSE_ASSERT(start != NULL);
  146040             : #if 0
  146041             :        // Debugging information
  146042             :           if (start->get_parent() == NULL)
  146043             :              {
  146044             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146045             :              }
  146046             : #endif
  146047          61 :           start->set_parent(locatedNode);
  146048          61 :           ROSE_ASSERT(start->get_parent() != NULL);
  146049             : 
  146050          61 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  146051             : 
  146052             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  146053             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  146054             :        // ROSE_ASSERT(end != NULL);
  146055          61 :           if (end == NULL)
  146056             :              {
  146057           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  146058             :              }
  146059             :             else
  146060             :              {
  146061             : #if 0
  146062             :             // Debugging information
  146063             :                if (end->get_parent() == NULL)
  146064             :                   {
  146065             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146066             :                   }
  146067             : #endif
  146068          61 :                end->set_parent(locatedNode);
  146069          61 :                ROSE_ASSERT(end->get_parent() != NULL);
  146070             :              }
  146071             : 
  146072          61 :           SgExpression* expression = isSgExpression(result);
  146073          61 :           if (isSgExpression(this) != NULL)
  146074             :              {
  146075          61 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  146076             : 
  146077             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  146078          61 :                if (operatorPosition != NULL)
  146079             :                   {
  146080             : #if 0
  146081             :                  // Debugging information
  146082             :                     if (operatorPosition->get_parent() == NULL)
  146083             :                        {
  146084             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146085             :                        }
  146086             : #endif
  146087          61 :                     operatorPosition->set_parent(expression);
  146088          61 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  146089             :                   }
  146090             :              }
  146091             :         }
  146092             : 
  146093             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  146094          61 :      SgInitializedName* initializedName = isSgInitializedName(result);
  146095          61 :      if (initializedName != NULL)
  146096             :         {
  146097             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  146098           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  146099           0 :           ROSE_ASSERT(start != NULL);
  146100             : #if 0
  146101             :        // Debugging information
  146102             :           if (start->get_parent() == NULL)
  146103             :              {
  146104             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146105             :              }
  146106             : #endif
  146107           0 :           start->set_parent(initializedName);
  146108           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  146109             : 
  146110             : #if 0
  146111             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  146112             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  146113             : 
  146114             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  146115             :        // ROSE_ASSERT(end != NULL);
  146116             :           if (end == NULL)
  146117             :              {
  146118             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  146119             :              }
  146120             :             else
  146121             :              {
  146122             :                if (end->get_parent() == NULL)
  146123             :                   {
  146124             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146125             :                   }
  146126             :                end->set_parent(initializedName);
  146127             :                ROSE_ASSERT(end->get_parent() != NULL);
  146128             :              }
  146129             : #endif
  146130             :         }
  146131             : 
  146132             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  146133          61 :      help.insertCopiedNodePair(this,result);
  146134             : 
  146135             :   // printf ("End of copy SgDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  146136             : 
  146137             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  146138             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  146139          61 :      help.decrementDepth();
  146140             : 
  146141             :   // Test if this is the root of the copy!
  146142          61 :      if (help.get_depth() == 0)
  146143             :         {
  146144             :        // This is the original calling node.
  146145             : 
  146146             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  146147             :        // printf ("Calling SgDivideOp::fixupCopy() (from root of AST being copied) \n");
  146148             : #if ALT_FIXUP_COPY
  146149             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  146150          18 :           fixupCopy_scopes (result,help);
  146151          18 :           fixupCopy_symbols (result,help);
  146152          18 :           fixupCopy_references (result,help);
  146153             : #else
  146154             :           fixupCopy(result,help);
  146155             : #endif
  146156             :        // Allow this to be called recursively, so accumulate the state.
  146157             :        // Also, clear the state in the SgCopyHelp object.
  146158             :        // help.clearState();
  146159             :         }
  146160             : 
  146161          61 :      return result;
  146162             :    }
  146163             : 
  146164             : 
  146165             : /* #line 146166 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  146166             : 
  146167             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146168             : 
  146169           0 : SgNode* SgIntegerDivideOp::copy ( SgCopyHelp& help) const
  146170             :    {
  146171           0 :      SgIntegerDivideOp* result = NULL;
  146172             : 
  146173             :   // printf ("Copy SgIntegerDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  146174             : 
  146175             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  146176             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  146177             :   // The default value of the depth is 0, so after this call the depth is 1!
  146178           0 :      help.incrementDepth();
  146179             : 
  146180             : #if 0
  146181             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  146182             :   // but it is not generally true that things can only be copied once!
  146183             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  146184             :   // AstAttribute* existingAttribute = const_cast<SgIntegerDivideOp*>(this)->attribute["copied"];
  146185             :      bool previouslyCopied = const_cast<SgIntegerDivideOp*>(this)->attribute.exists("copied");
  146186             :      if (previouslyCopied == true)
  146187             :         {
  146188             :           this->get_file_info()->display("Called from copy SgIntegerDivideOp: debug");
  146189             :         }
  146190             :      ROSE_ASSERT(previouslyCopied == false);
  146191             : 
  146192             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  146193             :      AstAttribute* newAttribute = new AstAttribute();
  146194             :      ROSE_ASSERT(newAttribute != NULL);
  146195             : 
  146196             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  146197             :      const_cast<SgIntegerDivideOp*>(this)->attribute.add("copied",newAttribute);
  146198             : #endif
  146199             : 
  146200             :   // Copy data members from base classes
  146201             :   // Copy constructor parameter data member: startOfConstruct_copy
  146202             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  146203             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  146204           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  146205           0 :      if ( p_startOfConstruct != NULL ) 
  146206             :         { 
  146207           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  146208             :         } 
  146209             :        else 
  146210             :         { 
  146211             :           startOfConstruct_copy = NULL; 
  146212             :         } 
  146213             :   // Copy constructor parameter data member: lhs_operand_i_copy
  146214           0 :      SgExpression* lhs_operand_i_copy; 
  146215             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  146216           0 :           if (get_lhs_operand_i() != NULL) 
  146217             :              { 
  146218           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  146219             :              } 
  146220             :             else 
  146221             :              { 
  146222             :                lhs_operand_i_copy = NULL; 
  146223             :              } 
  146224             :   // Copy constructor parameter data member: rhs_operand_i_copy
  146225           0 :      SgExpression* rhs_operand_i_copy; 
  146226             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  146227           0 :           if (get_rhs_operand_i() != NULL) 
  146228             :              { 
  146229           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  146230             :              } 
  146231             :             else 
  146232             :              { 
  146233             :                rhs_operand_i_copy = NULL; 
  146234             :              } 
  146235             :   // Copy constructor parameter data member: expression_type_copy
  146236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  146237             :   // case: toBeCopied == COPY_DATA for expression_type
  146238           0 :      SgType* expression_type_copy = p_expression_type; 
  146239             :  
  146240             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146241             : 
  146242             :   // Build an empty copy of this object (will be filled in, but 
  146243             :   // the parent can't be set and must be set by the caller)
  146244           0 :      result = new SgIntegerDivideOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  146245           0 :      ROSE_ASSERT(result != NULL);
  146246             : 
  146247             :   // Copy data members of "this" class
  146248             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  146249             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  146250             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  146251           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  146252           0 :      if ( p_endOfConstruct != NULL ) 
  146253             :         { 
  146254           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  146255             :         } 
  146256             :        else 
  146257             :         { 
  146258             :           endOfConstruct_copy = NULL; 
  146259             :         } 
  146260             :   /* check for a valid pointer and delete if present */ 
  146261           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  146262             :   /* add assignment to result here */ 
  146263           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  146264             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  146265             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  146266             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  146267           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  146268           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  146269             :         { 
  146270           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  146271             :         } 
  146272             :        else 
  146273             :         { 
  146274             :           attachedPreprocessingInfoPtr_copy = NULL; 
  146275             :         } 
  146276             :   /* check for a valid pointer and delete if present */ 
  146277           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  146278             :   /* add assignment to result here */ 
  146279           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  146280             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  146281             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  146282             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  146283           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  146284           0 :      if ( p_attributeMechanism != NULL ) 
  146285             :         { 
  146286           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  146287             :         } 
  146288             :        else 
  146289             :         { 
  146290             :           attributeMechanism_copy = NULL; 
  146291             :         } 
  146292             :   /* check for a valid pointer and delete if present */ 
  146293           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  146294             :   /* add assignment to result here */ 
  146295           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  146296             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  146297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  146298             :   // case: toBeCopied == COPY_DATA for need_paren
  146299           0 :      bool need_paren_copy = p_need_paren; 
  146300           0 :      result->p_need_paren = need_paren_copy; 
  146301             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  146302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  146303             :   // case: toBeCopied == COPY_DATA for lvalue
  146304           0 :      bool lvalue_copy = p_lvalue; 
  146305           0 :      result->p_lvalue = lvalue_copy; 
  146306             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  146307             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  146308             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  146309           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  146310           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  146311             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  146312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  146313             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  146314           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  146315           0 :      if ( p_operatorPosition != NULL ) 
  146316             :         { 
  146317           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  146318             :         } 
  146319             :        else 
  146320             :         { 
  146321             :           operatorPosition_copy = NULL; 
  146322             :         } 
  146323             :   /* check for a valid pointer and delete if present */ 
  146324           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  146325             :   /* add assignment to result here */ 
  146326           0 :      result->p_operatorPosition = operatorPosition_copy; 
  146327             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  146328             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  146329             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  146330           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  146331           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  146332             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  146333           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  146334             :              { 
  146335           0 :                lhs_operand_i_copy->set_parent(result); 
  146336             :              } 
  146337             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  146338           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  146339             :              { 
  146340           0 :                rhs_operand_i_copy->set_parent(result); 
  146341             :              } 
  146342             : 
  146343             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146344             : 
  146345             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  146346             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  146347             :   // fixupCopy(result,help);
  146348             : 
  146349             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  146350             :   // the Sg_File_Info objects that are built for the new IR nodes.
  146351           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  146352           0 :      if (locatedNode != NULL)
  146353             :         {
  146354             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  146355           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  146356           0 :           ROSE_ASSERT(start != NULL);
  146357             : #if 0
  146358             :        // Debugging information
  146359             :           if (start->get_parent() == NULL)
  146360             :              {
  146361             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146362             :              }
  146363             : #endif
  146364           0 :           start->set_parent(locatedNode);
  146365           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  146366             : 
  146367           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  146368             : 
  146369             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  146370             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  146371             :        // ROSE_ASSERT(end != NULL);
  146372           0 :           if (end == NULL)
  146373             :              {
  146374           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  146375             :              }
  146376             :             else
  146377             :              {
  146378             : #if 0
  146379             :             // Debugging information
  146380             :                if (end->get_parent() == NULL)
  146381             :                   {
  146382             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146383             :                   }
  146384             : #endif
  146385           0 :                end->set_parent(locatedNode);
  146386           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  146387             :              }
  146388             : 
  146389           0 :           SgExpression* expression = isSgExpression(result);
  146390           0 :           if (isSgExpression(this) != NULL)
  146391             :              {
  146392           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  146393             : 
  146394             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  146395           0 :                if (operatorPosition != NULL)
  146396             :                   {
  146397             : #if 0
  146398             :                  // Debugging information
  146399             :                     if (operatorPosition->get_parent() == NULL)
  146400             :                        {
  146401             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146402             :                        }
  146403             : #endif
  146404           0 :                     operatorPosition->set_parent(expression);
  146405           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  146406             :                   }
  146407             :              }
  146408             :         }
  146409             : 
  146410             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  146411           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  146412           0 :      if (initializedName != NULL)
  146413             :         {
  146414             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  146415           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  146416           0 :           ROSE_ASSERT(start != NULL);
  146417             : #if 0
  146418             :        // Debugging information
  146419             :           if (start->get_parent() == NULL)
  146420             :              {
  146421             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146422             :              }
  146423             : #endif
  146424           0 :           start->set_parent(initializedName);
  146425           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  146426             : 
  146427             : #if 0
  146428             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  146429             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  146430             : 
  146431             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  146432             :        // ROSE_ASSERT(end != NULL);
  146433             :           if (end == NULL)
  146434             :              {
  146435             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  146436             :              }
  146437             :             else
  146438             :              {
  146439             :                if (end->get_parent() == NULL)
  146440             :                   {
  146441             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146442             :                   }
  146443             :                end->set_parent(initializedName);
  146444             :                ROSE_ASSERT(end->get_parent() != NULL);
  146445             :              }
  146446             : #endif
  146447             :         }
  146448             : 
  146449             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  146450           0 :      help.insertCopiedNodePair(this,result);
  146451             : 
  146452             :   // printf ("End of copy SgIntegerDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  146453             : 
  146454             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  146455             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  146456           0 :      help.decrementDepth();
  146457             : 
  146458             :   // Test if this is the root of the copy!
  146459           0 :      if (help.get_depth() == 0)
  146460             :         {
  146461             :        // This is the original calling node.
  146462             : 
  146463             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  146464             :        // printf ("Calling SgIntegerDivideOp::fixupCopy() (from root of AST being copied) \n");
  146465             : #if ALT_FIXUP_COPY
  146466             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  146467           0 :           fixupCopy_scopes (result,help);
  146468           0 :           fixupCopy_symbols (result,help);
  146469           0 :           fixupCopy_references (result,help);
  146470             : #else
  146471             :           fixupCopy(result,help);
  146472             : #endif
  146473             :        // Allow this to be called recursively, so accumulate the state.
  146474             :        // Also, clear the state in the SgCopyHelp object.
  146475             :        // help.clearState();
  146476             :         }
  146477             : 
  146478           0 :      return result;
  146479             :    }
  146480             : 
  146481             : 
  146482             : /* #line 146483 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  146483             : 
  146484             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146485             : 
  146486           0 : SgNode* SgModOp::copy ( SgCopyHelp& help) const
  146487             :    {
  146488           0 :      SgModOp* result = NULL;
  146489             : 
  146490             :   // printf ("Copy SgModOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  146491             : 
  146492             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  146493             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  146494             :   // The default value of the depth is 0, so after this call the depth is 1!
  146495           0 :      help.incrementDepth();
  146496             : 
  146497             : #if 0
  146498             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  146499             :   // but it is not generally true that things can only be copied once!
  146500             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  146501             :   // AstAttribute* existingAttribute = const_cast<SgModOp*>(this)->attribute["copied"];
  146502             :      bool previouslyCopied = const_cast<SgModOp*>(this)->attribute.exists("copied");
  146503             :      if (previouslyCopied == true)
  146504             :         {
  146505             :           this->get_file_info()->display("Called from copy SgModOp: debug");
  146506             :         }
  146507             :      ROSE_ASSERT(previouslyCopied == false);
  146508             : 
  146509             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  146510             :      AstAttribute* newAttribute = new AstAttribute();
  146511             :      ROSE_ASSERT(newAttribute != NULL);
  146512             : 
  146513             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  146514             :      const_cast<SgModOp*>(this)->attribute.add("copied",newAttribute);
  146515             : #endif
  146516             : 
  146517             :   // Copy data members from base classes
  146518             :   // Copy constructor parameter data member: startOfConstruct_copy
  146519             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  146520             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  146521           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  146522           0 :      if ( p_startOfConstruct != NULL ) 
  146523             :         { 
  146524           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  146525             :         } 
  146526             :        else 
  146527             :         { 
  146528             :           startOfConstruct_copy = NULL; 
  146529             :         } 
  146530             :   // Copy constructor parameter data member: lhs_operand_i_copy
  146531           0 :      SgExpression* lhs_operand_i_copy; 
  146532             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  146533           0 :           if (get_lhs_operand_i() != NULL) 
  146534             :              { 
  146535           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  146536             :              } 
  146537             :             else 
  146538             :              { 
  146539             :                lhs_operand_i_copy = NULL; 
  146540             :              } 
  146541             :   // Copy constructor parameter data member: rhs_operand_i_copy
  146542           0 :      SgExpression* rhs_operand_i_copy; 
  146543             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  146544           0 :           if (get_rhs_operand_i() != NULL) 
  146545             :              { 
  146546           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  146547             :              } 
  146548             :             else 
  146549             :              { 
  146550             :                rhs_operand_i_copy = NULL; 
  146551             :              } 
  146552             :   // Copy constructor parameter data member: expression_type_copy
  146553             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  146554             :   // case: toBeCopied == COPY_DATA for expression_type
  146555           0 :      SgType* expression_type_copy = p_expression_type; 
  146556             :  
  146557             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146558             : 
  146559             :   // Build an empty copy of this object (will be filled in, but 
  146560             :   // the parent can't be set and must be set by the caller)
  146561           0 :      result = new SgModOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  146562           0 :      ROSE_ASSERT(result != NULL);
  146563             : 
  146564             :   // Copy data members of "this" class
  146565             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  146566             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  146567             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  146568           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  146569           0 :      if ( p_endOfConstruct != NULL ) 
  146570             :         { 
  146571           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  146572             :         } 
  146573             :        else 
  146574             :         { 
  146575             :           endOfConstruct_copy = NULL; 
  146576             :         } 
  146577             :   /* check for a valid pointer and delete if present */ 
  146578           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  146579             :   /* add assignment to result here */ 
  146580           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  146581             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  146582             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  146583             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  146584           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  146585           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  146586             :         { 
  146587           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  146588             :         } 
  146589             :        else 
  146590             :         { 
  146591             :           attachedPreprocessingInfoPtr_copy = NULL; 
  146592             :         } 
  146593             :   /* check for a valid pointer and delete if present */ 
  146594           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  146595             :   /* add assignment to result here */ 
  146596           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  146597             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  146598             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  146599             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  146600           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  146601           0 :      if ( p_attributeMechanism != NULL ) 
  146602             :         { 
  146603           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  146604             :         } 
  146605             :        else 
  146606             :         { 
  146607             :           attributeMechanism_copy = NULL; 
  146608             :         } 
  146609             :   /* check for a valid pointer and delete if present */ 
  146610           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  146611             :   /* add assignment to result here */ 
  146612           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  146613             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  146614             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  146615             :   // case: toBeCopied == COPY_DATA for need_paren
  146616           0 :      bool need_paren_copy = p_need_paren; 
  146617           0 :      result->p_need_paren = need_paren_copy; 
  146618             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  146619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  146620             :   // case: toBeCopied == COPY_DATA for lvalue
  146621           0 :      bool lvalue_copy = p_lvalue; 
  146622           0 :      result->p_lvalue = lvalue_copy; 
  146623             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  146624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  146625             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  146626           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  146627           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  146628             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  146629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  146630             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  146631           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  146632           0 :      if ( p_operatorPosition != NULL ) 
  146633             :         { 
  146634           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  146635             :         } 
  146636             :        else 
  146637             :         { 
  146638             :           operatorPosition_copy = NULL; 
  146639             :         } 
  146640             :   /* check for a valid pointer and delete if present */ 
  146641           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  146642             :   /* add assignment to result here */ 
  146643           0 :      result->p_operatorPosition = operatorPosition_copy; 
  146644             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  146645             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  146646             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  146647           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  146648           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  146649             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  146650           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  146651             :              { 
  146652           0 :                lhs_operand_i_copy->set_parent(result); 
  146653             :              } 
  146654             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  146655           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  146656             :              { 
  146657           0 :                rhs_operand_i_copy->set_parent(result); 
  146658             :              } 
  146659             : 
  146660             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146661             : 
  146662             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  146663             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  146664             :   // fixupCopy(result,help);
  146665             : 
  146666             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  146667             :   // the Sg_File_Info objects that are built for the new IR nodes.
  146668           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  146669           0 :      if (locatedNode != NULL)
  146670             :         {
  146671             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  146672           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  146673           0 :           ROSE_ASSERT(start != NULL);
  146674             : #if 0
  146675             :        // Debugging information
  146676             :           if (start->get_parent() == NULL)
  146677             :              {
  146678             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146679             :              }
  146680             : #endif
  146681           0 :           start->set_parent(locatedNode);
  146682           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  146683             : 
  146684           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  146685             : 
  146686             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  146687             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  146688             :        // ROSE_ASSERT(end != NULL);
  146689           0 :           if (end == NULL)
  146690             :              {
  146691           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  146692             :              }
  146693             :             else
  146694             :              {
  146695             : #if 0
  146696             :             // Debugging information
  146697             :                if (end->get_parent() == NULL)
  146698             :                   {
  146699             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146700             :                   }
  146701             : #endif
  146702           0 :                end->set_parent(locatedNode);
  146703           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  146704             :              }
  146705             : 
  146706           0 :           SgExpression* expression = isSgExpression(result);
  146707           0 :           if (isSgExpression(this) != NULL)
  146708             :              {
  146709           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  146710             : 
  146711             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  146712           0 :                if (operatorPosition != NULL)
  146713             :                   {
  146714             : #if 0
  146715             :                  // Debugging information
  146716             :                     if (operatorPosition->get_parent() == NULL)
  146717             :                        {
  146718             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146719             :                        }
  146720             : #endif
  146721           0 :                     operatorPosition->set_parent(expression);
  146722           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  146723             :                   }
  146724             :              }
  146725             :         }
  146726             : 
  146727             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  146728           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  146729           0 :      if (initializedName != NULL)
  146730             :         {
  146731             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  146732           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  146733           0 :           ROSE_ASSERT(start != NULL);
  146734             : #if 0
  146735             :        // Debugging information
  146736             :           if (start->get_parent() == NULL)
  146737             :              {
  146738             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146739             :              }
  146740             : #endif
  146741           0 :           start->set_parent(initializedName);
  146742           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  146743             : 
  146744             : #if 0
  146745             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  146746             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  146747             : 
  146748             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  146749             :        // ROSE_ASSERT(end != NULL);
  146750             :           if (end == NULL)
  146751             :              {
  146752             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  146753             :              }
  146754             :             else
  146755             :              {
  146756             :                if (end->get_parent() == NULL)
  146757             :                   {
  146758             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146759             :                   }
  146760             :                end->set_parent(initializedName);
  146761             :                ROSE_ASSERT(end->get_parent() != NULL);
  146762             :              }
  146763             : #endif
  146764             :         }
  146765             : 
  146766             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  146767           0 :      help.insertCopiedNodePair(this,result);
  146768             : 
  146769             :   // printf ("End of copy SgModOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  146770             : 
  146771             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  146772             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  146773           0 :      help.decrementDepth();
  146774             : 
  146775             :   // Test if this is the root of the copy!
  146776           0 :      if (help.get_depth() == 0)
  146777             :         {
  146778             :        // This is the original calling node.
  146779             : 
  146780             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  146781             :        // printf ("Calling SgModOp::fixupCopy() (from root of AST being copied) \n");
  146782             : #if ALT_FIXUP_COPY
  146783             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  146784           0 :           fixupCopy_scopes (result,help);
  146785           0 :           fixupCopy_symbols (result,help);
  146786           0 :           fixupCopy_references (result,help);
  146787             : #else
  146788             :           fixupCopy(result,help);
  146789             : #endif
  146790             :        // Allow this to be called recursively, so accumulate the state.
  146791             :        // Also, clear the state in the SgCopyHelp object.
  146792             :        // help.clearState();
  146793             :         }
  146794             : 
  146795           0 :      return result;
  146796             :    }
  146797             : 
  146798             : 
  146799             : /* #line 146800 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  146800             : 
  146801             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146802             : 
  146803         200 : SgNode* SgAndOp::copy ( SgCopyHelp& help) const
  146804             :    {
  146805         200 :      SgAndOp* result = NULL;
  146806             : 
  146807             :   // printf ("Copy SgAndOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  146808             : 
  146809             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  146810             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  146811             :   // The default value of the depth is 0, so after this call the depth is 1!
  146812         200 :      help.incrementDepth();
  146813             : 
  146814             : #if 0
  146815             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  146816             :   // but it is not generally true that things can only be copied once!
  146817             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  146818             :   // AstAttribute* existingAttribute = const_cast<SgAndOp*>(this)->attribute["copied"];
  146819             :      bool previouslyCopied = const_cast<SgAndOp*>(this)->attribute.exists("copied");
  146820             :      if (previouslyCopied == true)
  146821             :         {
  146822             :           this->get_file_info()->display("Called from copy SgAndOp: debug");
  146823             :         }
  146824             :      ROSE_ASSERT(previouslyCopied == false);
  146825             : 
  146826             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  146827             :      AstAttribute* newAttribute = new AstAttribute();
  146828             :      ROSE_ASSERT(newAttribute != NULL);
  146829             : 
  146830             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  146831             :      const_cast<SgAndOp*>(this)->attribute.add("copied",newAttribute);
  146832             : #endif
  146833             : 
  146834             :   // Copy data members from base classes
  146835             :   // Copy constructor parameter data member: startOfConstruct_copy
  146836             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  146837             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  146838         200 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  146839         200 :      if ( p_startOfConstruct != NULL ) 
  146840             :         { 
  146841         200 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  146842             :         } 
  146843             :        else 
  146844             :         { 
  146845             :           startOfConstruct_copy = NULL; 
  146846             :         } 
  146847             :   // Copy constructor parameter data member: lhs_operand_i_copy
  146848         200 :      SgExpression* lhs_operand_i_copy; 
  146849             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  146850         200 :           if (get_lhs_operand_i() != NULL) 
  146851             :              { 
  146852         200 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  146853             :              } 
  146854             :             else 
  146855             :              { 
  146856             :                lhs_operand_i_copy = NULL; 
  146857             :              } 
  146858             :   // Copy constructor parameter data member: rhs_operand_i_copy
  146859         200 :      SgExpression* rhs_operand_i_copy; 
  146860             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  146861         200 :           if (get_rhs_operand_i() != NULL) 
  146862             :              { 
  146863         200 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  146864             :              } 
  146865             :             else 
  146866             :              { 
  146867             :                rhs_operand_i_copy = NULL; 
  146868             :              } 
  146869             :   // Copy constructor parameter data member: expression_type_copy
  146870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  146871             :   // case: toBeCopied == COPY_DATA for expression_type
  146872         200 :      SgType* expression_type_copy = p_expression_type; 
  146873             :  
  146874             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146875             : 
  146876             :   // Build an empty copy of this object (will be filled in, but 
  146877             :   // the parent can't be set and must be set by the caller)
  146878         200 :      result = new SgAndOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  146879         200 :      ROSE_ASSERT(result != NULL);
  146880             : 
  146881             :   // Copy data members of "this" class
  146882             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  146883             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  146884             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  146885         200 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  146886         200 :      if ( p_endOfConstruct != NULL ) 
  146887             :         { 
  146888         200 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  146889             :         } 
  146890             :        else 
  146891             :         { 
  146892             :           endOfConstruct_copy = NULL; 
  146893             :         } 
  146894             :   /* check for a valid pointer and delete if present */ 
  146895         200 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  146896             :   /* add assignment to result here */ 
  146897         200 :      result->p_endOfConstruct = endOfConstruct_copy; 
  146898             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  146899             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  146900             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  146901         200 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  146902         200 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  146903             :         { 
  146904           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  146905             :         } 
  146906             :        else 
  146907             :         { 
  146908             :           attachedPreprocessingInfoPtr_copy = NULL; 
  146909             :         } 
  146910             :   /* check for a valid pointer and delete if present */ 
  146911         200 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  146912             :   /* add assignment to result here */ 
  146913         200 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  146914             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  146915             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  146916             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  146917         200 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  146918         200 :      if ( p_attributeMechanism != NULL ) 
  146919             :         { 
  146920           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  146921             :         } 
  146922             :        else 
  146923             :         { 
  146924             :           attributeMechanism_copy = NULL; 
  146925             :         } 
  146926             :   /* check for a valid pointer and delete if present */ 
  146927         200 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  146928             :   /* add assignment to result here */ 
  146929         200 :      result->p_attributeMechanism = attributeMechanism_copy; 
  146930             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  146931             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  146932             :   // case: toBeCopied == COPY_DATA for need_paren
  146933         200 :      bool need_paren_copy = p_need_paren; 
  146934         200 :      result->p_need_paren = need_paren_copy; 
  146935             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  146936             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  146937             :   // case: toBeCopied == COPY_DATA for lvalue
  146938         200 :      bool lvalue_copy = p_lvalue; 
  146939         200 :      result->p_lvalue = lvalue_copy; 
  146940             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  146941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  146942             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  146943         200 :      bool global_qualified_name_copy = p_global_qualified_name; 
  146944         200 :      result->p_global_qualified_name = global_qualified_name_copy; 
  146945             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  146946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  146947             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  146948         200 :      Sg_File_Info* operatorPosition_copy = NULL; 
  146949         200 :      if ( p_operatorPosition != NULL ) 
  146950             :         { 
  146951         200 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  146952             :         } 
  146953             :        else 
  146954             :         { 
  146955             :           operatorPosition_copy = NULL; 
  146956             :         } 
  146957             :   /* check for a valid pointer and delete if present */ 
  146958         200 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  146959             :   /* add assignment to result here */ 
  146960         200 :      result->p_operatorPosition = operatorPosition_copy; 
  146961             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  146962             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  146963             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  146964         200 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  146965         200 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  146966             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  146967         200 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  146968             :              { 
  146969           0 :                lhs_operand_i_copy->set_parent(result); 
  146970             :              } 
  146971             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  146972         200 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  146973             :              { 
  146974           0 :                rhs_operand_i_copy->set_parent(result); 
  146975             :              } 
  146976             : 
  146977             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  146978             : 
  146979             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  146980             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  146981             :   // fixupCopy(result,help);
  146982             : 
  146983             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  146984             :   // the Sg_File_Info objects that are built for the new IR nodes.
  146985         200 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  146986         200 :      if (locatedNode != NULL)
  146987             :         {
  146988             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  146989         200 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  146990         200 :           ROSE_ASSERT(start != NULL);
  146991             : #if 0
  146992             :        // Debugging information
  146993             :           if (start->get_parent() == NULL)
  146994             :              {
  146995             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  146996             :              }
  146997             : #endif
  146998         200 :           start->set_parent(locatedNode);
  146999         200 :           ROSE_ASSERT(start->get_parent() != NULL);
  147000             : 
  147001         200 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  147002             : 
  147003             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  147004             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  147005             :        // ROSE_ASSERT(end != NULL);
  147006         200 :           if (end == NULL)
  147007             :              {
  147008           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  147009             :              }
  147010             :             else
  147011             :              {
  147012             : #if 0
  147013             :             // Debugging information
  147014             :                if (end->get_parent() == NULL)
  147015             :                   {
  147016             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147017             :                   }
  147018             : #endif
  147019         200 :                end->set_parent(locatedNode);
  147020         200 :                ROSE_ASSERT(end->get_parent() != NULL);
  147021             :              }
  147022             : 
  147023         200 :           SgExpression* expression = isSgExpression(result);
  147024         200 :           if (isSgExpression(this) != NULL)
  147025             :              {
  147026         200 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  147027             : 
  147028             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  147029         200 :                if (operatorPosition != NULL)
  147030             :                   {
  147031             : #if 0
  147032             :                  // Debugging information
  147033             :                     if (operatorPosition->get_parent() == NULL)
  147034             :                        {
  147035             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147036             :                        }
  147037             : #endif
  147038         200 :                     operatorPosition->set_parent(expression);
  147039         200 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  147040             :                   }
  147041             :              }
  147042             :         }
  147043             : 
  147044             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  147045         200 :      SgInitializedName* initializedName = isSgInitializedName(result);
  147046         200 :      if (initializedName != NULL)
  147047             :         {
  147048             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  147049           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  147050           0 :           ROSE_ASSERT(start != NULL);
  147051             : #if 0
  147052             :        // Debugging information
  147053             :           if (start->get_parent() == NULL)
  147054             :              {
  147055             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147056             :              }
  147057             : #endif
  147058           0 :           start->set_parent(initializedName);
  147059           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  147060             : 
  147061             : #if 0
  147062             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  147063             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  147064             : 
  147065             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  147066             :        // ROSE_ASSERT(end != NULL);
  147067             :           if (end == NULL)
  147068             :              {
  147069             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  147070             :              }
  147071             :             else
  147072             :              {
  147073             :                if (end->get_parent() == NULL)
  147074             :                   {
  147075             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147076             :                   }
  147077             :                end->set_parent(initializedName);
  147078             :                ROSE_ASSERT(end->get_parent() != NULL);
  147079             :              }
  147080             : #endif
  147081             :         }
  147082             : 
  147083             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  147084         200 :      help.insertCopiedNodePair(this,result);
  147085             : 
  147086             :   // printf ("End of copy SgAndOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  147087             : 
  147088             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  147089             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  147090         200 :      help.decrementDepth();
  147091             : 
  147092             :   // Test if this is the root of the copy!
  147093         200 :      if (help.get_depth() == 0)
  147094             :         {
  147095             :        // This is the original calling node.
  147096             : 
  147097             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  147098             :        // printf ("Calling SgAndOp::fixupCopy() (from root of AST being copied) \n");
  147099             : #if ALT_FIXUP_COPY
  147100             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  147101          42 :           fixupCopy_scopes (result,help);
  147102          42 :           fixupCopy_symbols (result,help);
  147103          42 :           fixupCopy_references (result,help);
  147104             : #else
  147105             :           fixupCopy(result,help);
  147106             : #endif
  147107             :        // Allow this to be called recursively, so accumulate the state.
  147108             :        // Also, clear the state in the SgCopyHelp object.
  147109             :        // help.clearState();
  147110             :         }
  147111             : 
  147112         200 :      return result;
  147113             :    }
  147114             : 
  147115             : 
  147116             : /* #line 147117 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  147117             : 
  147118             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  147119             : 
  147120          92 : SgNode* SgOrOp::copy ( SgCopyHelp& help) const
  147121             :    {
  147122          92 :      SgOrOp* result = NULL;
  147123             : 
  147124             :   // printf ("Copy SgOrOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  147125             : 
  147126             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  147127             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  147128             :   // The default value of the depth is 0, so after this call the depth is 1!
  147129          92 :      help.incrementDepth();
  147130             : 
  147131             : #if 0
  147132             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  147133             :   // but it is not generally true that things can only be copied once!
  147134             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  147135             :   // AstAttribute* existingAttribute = const_cast<SgOrOp*>(this)->attribute["copied"];
  147136             :      bool previouslyCopied = const_cast<SgOrOp*>(this)->attribute.exists("copied");
  147137             :      if (previouslyCopied == true)
  147138             :         {
  147139             :           this->get_file_info()->display("Called from copy SgOrOp: debug");
  147140             :         }
  147141             :      ROSE_ASSERT(previouslyCopied == false);
  147142             : 
  147143             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  147144             :      AstAttribute* newAttribute = new AstAttribute();
  147145             :      ROSE_ASSERT(newAttribute != NULL);
  147146             : 
  147147             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  147148             :      const_cast<SgOrOp*>(this)->attribute.add("copied",newAttribute);
  147149             : #endif
  147150             : 
  147151             :   // Copy data members from base classes
  147152             :   // Copy constructor parameter data member: startOfConstruct_copy
  147153             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  147154             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  147155          92 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  147156          92 :      if ( p_startOfConstruct != NULL ) 
  147157             :         { 
  147158          92 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  147159             :         } 
  147160             :        else 
  147161             :         { 
  147162             :           startOfConstruct_copy = NULL; 
  147163             :         } 
  147164             :   // Copy constructor parameter data member: lhs_operand_i_copy
  147165          92 :      SgExpression* lhs_operand_i_copy; 
  147166             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  147167          92 :           if (get_lhs_operand_i() != NULL) 
  147168             :              { 
  147169          92 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  147170             :              } 
  147171             :             else 
  147172             :              { 
  147173             :                lhs_operand_i_copy = NULL; 
  147174             :              } 
  147175             :   // Copy constructor parameter data member: rhs_operand_i_copy
  147176          92 :      SgExpression* rhs_operand_i_copy; 
  147177             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  147178          92 :           if (get_rhs_operand_i() != NULL) 
  147179             :              { 
  147180          92 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  147181             :              } 
  147182             :             else 
  147183             :              { 
  147184             :                rhs_operand_i_copy = NULL; 
  147185             :              } 
  147186             :   // Copy constructor parameter data member: expression_type_copy
  147187             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  147188             :   // case: toBeCopied == COPY_DATA for expression_type
  147189          92 :      SgType* expression_type_copy = p_expression_type; 
  147190             :  
  147191             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  147192             : 
  147193             :   // Build an empty copy of this object (will be filled in, but 
  147194             :   // the parent can't be set and must be set by the caller)
  147195          92 :      result = new SgOrOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  147196          92 :      ROSE_ASSERT(result != NULL);
  147197             : 
  147198             :   // Copy data members of "this" class
  147199             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  147200             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  147201             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  147202          92 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  147203          92 :      if ( p_endOfConstruct != NULL ) 
  147204             :         { 
  147205          92 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  147206             :         } 
  147207             :        else 
  147208             :         { 
  147209             :           endOfConstruct_copy = NULL; 
  147210             :         } 
  147211             :   /* check for a valid pointer and delete if present */ 
  147212          92 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  147213             :   /* add assignment to result here */ 
  147214          92 :      result->p_endOfConstruct = endOfConstruct_copy; 
  147215             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  147216             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  147217             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  147218          92 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  147219          92 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  147220             :         { 
  147221           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  147222             :         } 
  147223             :        else 
  147224             :         { 
  147225             :           attachedPreprocessingInfoPtr_copy = NULL; 
  147226             :         } 
  147227             :   /* check for a valid pointer and delete if present */ 
  147228          92 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  147229             :   /* add assignment to result here */ 
  147230          92 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  147231             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  147232             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  147233             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  147234          92 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  147235          92 :      if ( p_attributeMechanism != NULL ) 
  147236             :         { 
  147237           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  147238             :         } 
  147239             :        else 
  147240             :         { 
  147241             :           attributeMechanism_copy = NULL; 
  147242             :         } 
  147243             :   /* check for a valid pointer and delete if present */ 
  147244          92 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  147245             :   /* add assignment to result here */ 
  147246          92 :      result->p_attributeMechanism = attributeMechanism_copy; 
  147247             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  147248             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  147249             :   // case: toBeCopied == COPY_DATA for need_paren
  147250          92 :      bool need_paren_copy = p_need_paren; 
  147251          92 :      result->p_need_paren = need_paren_copy; 
  147252             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  147253             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  147254             :   // case: toBeCopied == COPY_DATA for lvalue
  147255          92 :      bool lvalue_copy = p_lvalue; 
  147256          92 :      result->p_lvalue = lvalue_copy; 
  147257             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  147258             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  147259             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  147260          92 :      bool global_qualified_name_copy = p_global_qualified_name; 
  147261          92 :      result->p_global_qualified_name = global_qualified_name_copy; 
  147262             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  147263             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  147264             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  147265          92 :      Sg_File_Info* operatorPosition_copy = NULL; 
  147266          92 :      if ( p_operatorPosition != NULL ) 
  147267             :         { 
  147268          92 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  147269             :         } 
  147270             :        else 
  147271             :         { 
  147272             :           operatorPosition_copy = NULL; 
  147273             :         } 
  147274             :   /* check for a valid pointer and delete if present */ 
  147275          92 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  147276             :   /* add assignment to result here */ 
  147277          92 :      result->p_operatorPosition = operatorPosition_copy; 
  147278             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  147279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  147280             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  147281          92 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  147282          92 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  147283             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  147284          92 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  147285             :              { 
  147286           0 :                lhs_operand_i_copy->set_parent(result); 
  147287             :              } 
  147288             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  147289          92 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  147290             :              { 
  147291           0 :                rhs_operand_i_copy->set_parent(result); 
  147292             :              } 
  147293             : 
  147294             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  147295             : 
  147296             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  147297             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  147298             :   // fixupCopy(result,help);
  147299             : 
  147300             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  147301             :   // the Sg_File_Info objects that are built for the new IR nodes.
  147302          92 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  147303          92 :      if (locatedNode != NULL)
  147304             :         {
  147305             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  147306          92 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  147307          92 :           ROSE_ASSERT(start != NULL);
  147308             : #if 0
  147309             :        // Debugging information
  147310             :           if (start->get_parent() == NULL)
  147311             :              {
  147312             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147313             :              }
  147314             : #endif
  147315          92 :           start->set_parent(locatedNode);
  147316          92 :           ROSE_ASSERT(start->get_parent() != NULL);
  147317             : 
  147318          92 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  147319             : 
  147320             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  147321             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  147322             :        // ROSE_ASSERT(end != NULL);
  147323          92 :           if (end == NULL)
  147324             :              {
  147325           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  147326             :              }
  147327             :             else
  147328             :              {
  147329             : #if 0
  147330             :             // Debugging information
  147331             :                if (end->get_parent() == NULL)
  147332             :                   {
  147333             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147334             :                   }
  147335             : #endif
  147336          92 :                end->set_parent(locatedNode);
  147337          92 :                ROSE_ASSERT(end->get_parent() != NULL);
  147338             :              }
  147339             : 
  147340          92 :           SgExpression* expression = isSgExpression(result);
  147341          92 :           if (isSgExpression(this) != NULL)
  147342             :              {
  147343          92 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  147344             : 
  147345             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  147346          92 :                if (operatorPosition != NULL)
  147347             :                   {
  147348             : #if 0
  147349             :                  // Debugging information
  147350             :                     if (operatorPosition->get_parent() == NULL)
  147351             :                        {
  147352             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147353             :                        }
  147354             : #endif
  147355          92 :                     operatorPosition->set_parent(expression);
  147356          92 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  147357             :                   }
  147358             :              }
  147359             :         }
  147360             : 
  147361             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  147362          92 :      SgInitializedName* initializedName = isSgInitializedName(result);
  147363          92 :      if (initializedName != NULL)
  147364             :         {
  147365             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  147366           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  147367           0 :           ROSE_ASSERT(start != NULL);
  147368             : #if 0
  147369             :        // Debugging information
  147370             :           if (start->get_parent() == NULL)
  147371             :              {
  147372             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147373             :              }
  147374             : #endif
  147375           0 :           start->set_parent(initializedName);
  147376           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  147377             : 
  147378             : #if 0
  147379             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  147380             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  147381             : 
  147382             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  147383             :        // ROSE_ASSERT(end != NULL);
  147384             :           if (end == NULL)
  147385             :              {
  147386             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  147387             :              }
  147388             :             else
  147389             :              {
  147390             :                if (end->get_parent() == NULL)
  147391             :                   {
  147392             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147393             :                   }
  147394             :                end->set_parent(initializedName);
  147395             :                ROSE_ASSERT(end->get_parent() != NULL);
  147396             :              }
  147397             : #endif
  147398             :         }
  147399             : 
  147400             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  147401          92 :      help.insertCopiedNodePair(this,result);
  147402             : 
  147403             :   // printf ("End of copy SgOrOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  147404             : 
  147405             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  147406             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  147407          92 :      help.decrementDepth();
  147408             : 
  147409             :   // Test if this is the root of the copy!
  147410          92 :      if (help.get_depth() == 0)
  147411             :         {
  147412             :        // This is the original calling node.
  147413             : 
  147414             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  147415             :        // printf ("Calling SgOrOp::fixupCopy() (from root of AST being copied) \n");
  147416             : #if ALT_FIXUP_COPY
  147417             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  147418          44 :           fixupCopy_scopes (result,help);
  147419          44 :           fixupCopy_symbols (result,help);
  147420          44 :           fixupCopy_references (result,help);
  147421             : #else
  147422             :           fixupCopy(result,help);
  147423             : #endif
  147424             :        // Allow this to be called recursively, so accumulate the state.
  147425             :        // Also, clear the state in the SgCopyHelp object.
  147426             :        // help.clearState();
  147427             :         }
  147428             : 
  147429          92 :      return result;
  147430             :    }
  147431             : 
  147432             : 
  147433             : /* #line 147434 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  147434             : 
  147435             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  147436             : 
  147437           0 : SgNode* SgBitXorOp::copy ( SgCopyHelp& help) const
  147438             :    {
  147439           0 :      SgBitXorOp* result = NULL;
  147440             : 
  147441             :   // printf ("Copy SgBitXorOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  147442             : 
  147443             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  147444             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  147445             :   // The default value of the depth is 0, so after this call the depth is 1!
  147446           0 :      help.incrementDepth();
  147447             : 
  147448             : #if 0
  147449             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  147450             :   // but it is not generally true that things can only be copied once!
  147451             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  147452             :   // AstAttribute* existingAttribute = const_cast<SgBitXorOp*>(this)->attribute["copied"];
  147453             :      bool previouslyCopied = const_cast<SgBitXorOp*>(this)->attribute.exists("copied");
  147454             :      if (previouslyCopied == true)
  147455             :         {
  147456             :           this->get_file_info()->display("Called from copy SgBitXorOp: debug");
  147457             :         }
  147458             :      ROSE_ASSERT(previouslyCopied == false);
  147459             : 
  147460             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  147461             :      AstAttribute* newAttribute = new AstAttribute();
  147462             :      ROSE_ASSERT(newAttribute != NULL);
  147463             : 
  147464             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  147465             :      const_cast<SgBitXorOp*>(this)->attribute.add("copied",newAttribute);
  147466             : #endif
  147467             : 
  147468             :   // Copy data members from base classes
  147469             :   // Copy constructor parameter data member: startOfConstruct_copy
  147470             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  147471             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  147472           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  147473           0 :      if ( p_startOfConstruct != NULL ) 
  147474             :         { 
  147475           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  147476             :         } 
  147477             :        else 
  147478             :         { 
  147479             :           startOfConstruct_copy = NULL; 
  147480             :         } 
  147481             :   // Copy constructor parameter data member: lhs_operand_i_copy
  147482           0 :      SgExpression* lhs_operand_i_copy; 
  147483             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  147484           0 :           if (get_lhs_operand_i() != NULL) 
  147485             :              { 
  147486           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  147487             :              } 
  147488             :             else 
  147489             :              { 
  147490             :                lhs_operand_i_copy = NULL; 
  147491             :              } 
  147492             :   // Copy constructor parameter data member: rhs_operand_i_copy
  147493           0 :      SgExpression* rhs_operand_i_copy; 
  147494             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  147495           0 :           if (get_rhs_operand_i() != NULL) 
  147496             :              { 
  147497           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  147498             :              } 
  147499             :             else 
  147500             :              { 
  147501             :                rhs_operand_i_copy = NULL; 
  147502             :              } 
  147503             :   // Copy constructor parameter data member: expression_type_copy
  147504             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  147505             :   // case: toBeCopied == COPY_DATA for expression_type
  147506           0 :      SgType* expression_type_copy = p_expression_type; 
  147507             :  
  147508             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  147509             : 
  147510             :   // Build an empty copy of this object (will be filled in, but 
  147511             :   // the parent can't be set and must be set by the caller)
  147512           0 :      result = new SgBitXorOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  147513           0 :      ROSE_ASSERT(result != NULL);
  147514             : 
  147515             :   // Copy data members of "this" class
  147516             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  147517             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  147518             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  147519           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  147520           0 :      if ( p_endOfConstruct != NULL ) 
  147521             :         { 
  147522           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  147523             :         } 
  147524             :        else 
  147525             :         { 
  147526             :           endOfConstruct_copy = NULL; 
  147527             :         } 
  147528             :   /* check for a valid pointer and delete if present */ 
  147529           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  147530             :   /* add assignment to result here */ 
  147531           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  147532             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  147533             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  147534             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  147535           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  147536           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  147537             :         { 
  147538           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  147539             :         } 
  147540             :        else 
  147541             :         { 
  147542             :           attachedPreprocessingInfoPtr_copy = NULL; 
  147543             :         } 
  147544             :   /* check for a valid pointer and delete if present */ 
  147545           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  147546             :   /* add assignment to result here */ 
  147547           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  147548             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  147549             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  147550             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  147551           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  147552           0 :      if ( p_attributeMechanism != NULL ) 
  147553             :         { 
  147554           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  147555             :         } 
  147556             :        else 
  147557             :         { 
  147558             :           attributeMechanism_copy = NULL; 
  147559             :         } 
  147560             :   /* check for a valid pointer and delete if present */ 
  147561           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  147562             :   /* add assignment to result here */ 
  147563           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  147564             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  147565             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  147566             :   // case: toBeCopied == COPY_DATA for need_paren
  147567           0 :      bool need_paren_copy = p_need_paren; 
  147568           0 :      result->p_need_paren = need_paren_copy; 
  147569             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  147570             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  147571             :   // case: toBeCopied == COPY_DATA for lvalue
  147572           0 :      bool lvalue_copy = p_lvalue; 
  147573           0 :      result->p_lvalue = lvalue_copy; 
  147574             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  147575             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  147576             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  147577           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  147578           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  147579             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  147580             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  147581             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  147582           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  147583           0 :      if ( p_operatorPosition != NULL ) 
  147584             :         { 
  147585           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  147586             :         } 
  147587             :        else 
  147588             :         { 
  147589             :           operatorPosition_copy = NULL; 
  147590             :         } 
  147591             :   /* check for a valid pointer and delete if present */ 
  147592           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  147593             :   /* add assignment to result here */ 
  147594           0 :      result->p_operatorPosition = operatorPosition_copy; 
  147595             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  147596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  147597             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  147598           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  147599           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  147600             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  147601           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  147602             :              { 
  147603           0 :                lhs_operand_i_copy->set_parent(result); 
  147604             :              } 
  147605             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  147606           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  147607             :              { 
  147608           0 :                rhs_operand_i_copy->set_parent(result); 
  147609             :              } 
  147610             : 
  147611             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  147612             : 
  147613             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  147614             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  147615             :   // fixupCopy(result,help);
  147616             : 
  147617             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  147618             :   // the Sg_File_Info objects that are built for the new IR nodes.
  147619           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  147620           0 :      if (locatedNode != NULL)
  147621             :         {
  147622             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  147623           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  147624           0 :           ROSE_ASSERT(start != NULL);
  147625             : #if 0
  147626             :        // Debugging information
  147627             :           if (start->get_parent() == NULL)
  147628             :              {
  147629             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147630             :              }
  147631             : #endif
  147632           0 :           start->set_parent(locatedNode);
  147633           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  147634             : 
  147635           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  147636             : 
  147637             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  147638             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  147639             :        // ROSE_ASSERT(end != NULL);
  147640           0 :           if (end == NULL)
  147641             :              {
  147642           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  147643             :              }
  147644             :             else
  147645             :              {
  147646             : #if 0
  147647             :             // Debugging information
  147648             :                if (end->get_parent() == NULL)
  147649             :                   {
  147650             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147651             :                   }
  147652             : #endif
  147653           0 :                end->set_parent(locatedNode);
  147654           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  147655             :              }
  147656             : 
  147657           0 :           SgExpression* expression = isSgExpression(result);
  147658           0 :           if (isSgExpression(this) != NULL)
  147659             :              {
  147660           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  147661             : 
  147662             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  147663           0 :                if (operatorPosition != NULL)
  147664             :                   {
  147665             : #if 0
  147666             :                  // Debugging information
  147667             :                     if (operatorPosition->get_parent() == NULL)
  147668             :                        {
  147669             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147670             :                        }
  147671             : #endif
  147672           0 :                     operatorPosition->set_parent(expression);
  147673           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  147674             :                   }
  147675             :              }
  147676             :         }
  147677             : 
  147678             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  147679           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  147680           0 :      if (initializedName != NULL)
  147681             :         {
  147682             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  147683           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  147684           0 :           ROSE_ASSERT(start != NULL);
  147685             : #if 0
  147686             :        // Debugging information
  147687             :           if (start->get_parent() == NULL)
  147688             :              {
  147689             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147690             :              }
  147691             : #endif
  147692           0 :           start->set_parent(initializedName);
  147693           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  147694             : 
  147695             : #if 0
  147696             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  147697             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  147698             : 
  147699             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  147700             :        // ROSE_ASSERT(end != NULL);
  147701             :           if (end == NULL)
  147702             :              {
  147703             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  147704             :              }
  147705             :             else
  147706             :              {
  147707             :                if (end->get_parent() == NULL)
  147708             :                   {
  147709             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147710             :                   }
  147711             :                end->set_parent(initializedName);
  147712             :                ROSE_ASSERT(end->get_parent() != NULL);
  147713             :              }
  147714             : #endif
  147715             :         }
  147716             : 
  147717             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  147718           0 :      help.insertCopiedNodePair(this,result);
  147719             : 
  147720             :   // printf ("End of copy SgBitXorOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  147721             : 
  147722             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  147723             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  147724           0 :      help.decrementDepth();
  147725             : 
  147726             :   // Test if this is the root of the copy!
  147727           0 :      if (help.get_depth() == 0)
  147728             :         {
  147729             :        // This is the original calling node.
  147730             : 
  147731             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  147732             :        // printf ("Calling SgBitXorOp::fixupCopy() (from root of AST being copied) \n");
  147733             : #if ALT_FIXUP_COPY
  147734             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  147735           0 :           fixupCopy_scopes (result,help);
  147736           0 :           fixupCopy_symbols (result,help);
  147737           0 :           fixupCopy_references (result,help);
  147738             : #else
  147739             :           fixupCopy(result,help);
  147740             : #endif
  147741             :        // Allow this to be called recursively, so accumulate the state.
  147742             :        // Also, clear the state in the SgCopyHelp object.
  147743             :        // help.clearState();
  147744             :         }
  147745             : 
  147746           0 :      return result;
  147747             :    }
  147748             : 
  147749             : 
  147750             : /* #line 147751 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  147751             : 
  147752             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  147753             : 
  147754           4 : SgNode* SgBitAndOp::copy ( SgCopyHelp& help) const
  147755             :    {
  147756           4 :      SgBitAndOp* result = NULL;
  147757             : 
  147758             :   // printf ("Copy SgBitAndOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  147759             : 
  147760             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  147761             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  147762             :   // The default value of the depth is 0, so after this call the depth is 1!
  147763           4 :      help.incrementDepth();
  147764             : 
  147765             : #if 0
  147766             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  147767             :   // but it is not generally true that things can only be copied once!
  147768             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  147769             :   // AstAttribute* existingAttribute = const_cast<SgBitAndOp*>(this)->attribute["copied"];
  147770             :      bool previouslyCopied = const_cast<SgBitAndOp*>(this)->attribute.exists("copied");
  147771             :      if (previouslyCopied == true)
  147772             :         {
  147773             :           this->get_file_info()->display("Called from copy SgBitAndOp: debug");
  147774             :         }
  147775             :      ROSE_ASSERT(previouslyCopied == false);
  147776             : 
  147777             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  147778             :      AstAttribute* newAttribute = new AstAttribute();
  147779             :      ROSE_ASSERT(newAttribute != NULL);
  147780             : 
  147781             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  147782             :      const_cast<SgBitAndOp*>(this)->attribute.add("copied",newAttribute);
  147783             : #endif
  147784             : 
  147785             :   // Copy data members from base classes
  147786             :   // Copy constructor parameter data member: startOfConstruct_copy
  147787             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  147788             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  147789           4 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  147790           4 :      if ( p_startOfConstruct != NULL ) 
  147791             :         { 
  147792           4 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  147793             :         } 
  147794             :        else 
  147795             :         { 
  147796             :           startOfConstruct_copy = NULL; 
  147797             :         } 
  147798             :   // Copy constructor parameter data member: lhs_operand_i_copy
  147799           4 :      SgExpression* lhs_operand_i_copy; 
  147800             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  147801           4 :           if (get_lhs_operand_i() != NULL) 
  147802             :              { 
  147803           4 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  147804             :              } 
  147805             :             else 
  147806             :              { 
  147807             :                lhs_operand_i_copy = NULL; 
  147808             :              } 
  147809             :   // Copy constructor parameter data member: rhs_operand_i_copy
  147810           4 :      SgExpression* rhs_operand_i_copy; 
  147811             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  147812           4 :           if (get_rhs_operand_i() != NULL) 
  147813             :              { 
  147814           4 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  147815             :              } 
  147816             :             else 
  147817             :              { 
  147818             :                rhs_operand_i_copy = NULL; 
  147819             :              } 
  147820             :   // Copy constructor parameter data member: expression_type_copy
  147821             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  147822             :   // case: toBeCopied == COPY_DATA for expression_type
  147823           4 :      SgType* expression_type_copy = p_expression_type; 
  147824             :  
  147825             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  147826             : 
  147827             :   // Build an empty copy of this object (will be filled in, but 
  147828             :   // the parent can't be set and must be set by the caller)
  147829           4 :      result = new SgBitAndOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  147830           4 :      ROSE_ASSERT(result != NULL);
  147831             : 
  147832             :   // Copy data members of "this" class
  147833             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  147834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  147835             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  147836           4 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  147837           4 :      if ( p_endOfConstruct != NULL ) 
  147838             :         { 
  147839           4 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  147840             :         } 
  147841             :        else 
  147842             :         { 
  147843             :           endOfConstruct_copy = NULL; 
  147844             :         } 
  147845             :   /* check for a valid pointer and delete if present */ 
  147846           4 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  147847             :   /* add assignment to result here */ 
  147848           4 :      result->p_endOfConstruct = endOfConstruct_copy; 
  147849             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  147850             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  147851             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  147852           4 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  147853           4 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  147854             :         { 
  147855           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  147856             :         } 
  147857             :        else 
  147858             :         { 
  147859             :           attachedPreprocessingInfoPtr_copy = NULL; 
  147860             :         } 
  147861             :   /* check for a valid pointer and delete if present */ 
  147862           4 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  147863             :   /* add assignment to result here */ 
  147864           4 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  147865             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  147866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  147867             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  147868           4 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  147869           4 :      if ( p_attributeMechanism != NULL ) 
  147870             :         { 
  147871           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  147872             :         } 
  147873             :        else 
  147874             :         { 
  147875             :           attributeMechanism_copy = NULL; 
  147876             :         } 
  147877             :   /* check for a valid pointer and delete if present */ 
  147878           4 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  147879             :   /* add assignment to result here */ 
  147880           4 :      result->p_attributeMechanism = attributeMechanism_copy; 
  147881             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  147882             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  147883             :   // case: toBeCopied == COPY_DATA for need_paren
  147884           4 :      bool need_paren_copy = p_need_paren; 
  147885           4 :      result->p_need_paren = need_paren_copy; 
  147886             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  147887             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  147888             :   // case: toBeCopied == COPY_DATA for lvalue
  147889           4 :      bool lvalue_copy = p_lvalue; 
  147890           4 :      result->p_lvalue = lvalue_copy; 
  147891             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  147892             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  147893             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  147894           4 :      bool global_qualified_name_copy = p_global_qualified_name; 
  147895           4 :      result->p_global_qualified_name = global_qualified_name_copy; 
  147896             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  147897             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  147898             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  147899           4 :      Sg_File_Info* operatorPosition_copy = NULL; 
  147900           4 :      if ( p_operatorPosition != NULL ) 
  147901             :         { 
  147902           4 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  147903             :         } 
  147904             :        else 
  147905             :         { 
  147906             :           operatorPosition_copy = NULL; 
  147907             :         } 
  147908             :   /* check for a valid pointer and delete if present */ 
  147909           4 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  147910             :   /* add assignment to result here */ 
  147911           4 :      result->p_operatorPosition = operatorPosition_copy; 
  147912             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  147913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  147914             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  147915           4 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  147916           4 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  147917             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  147918           4 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  147919             :              { 
  147920           0 :                lhs_operand_i_copy->set_parent(result); 
  147921             :              } 
  147922             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  147923           4 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  147924             :              { 
  147925           0 :                rhs_operand_i_copy->set_parent(result); 
  147926             :              } 
  147927             : 
  147928             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  147929             : 
  147930             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  147931             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  147932             :   // fixupCopy(result,help);
  147933             : 
  147934             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  147935             :   // the Sg_File_Info objects that are built for the new IR nodes.
  147936           4 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  147937           4 :      if (locatedNode != NULL)
  147938             :         {
  147939             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  147940           4 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  147941           4 :           ROSE_ASSERT(start != NULL);
  147942             : #if 0
  147943             :        // Debugging information
  147944             :           if (start->get_parent() == NULL)
  147945             :              {
  147946             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147947             :              }
  147948             : #endif
  147949           4 :           start->set_parent(locatedNode);
  147950           4 :           ROSE_ASSERT(start->get_parent() != NULL);
  147951             : 
  147952           4 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  147953             : 
  147954             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  147955             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  147956             :        // ROSE_ASSERT(end != NULL);
  147957           4 :           if (end == NULL)
  147958             :              {
  147959           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  147960             :              }
  147961             :             else
  147962             :              {
  147963             : #if 0
  147964             :             // Debugging information
  147965             :                if (end->get_parent() == NULL)
  147966             :                   {
  147967             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147968             :                   }
  147969             : #endif
  147970           4 :                end->set_parent(locatedNode);
  147971           4 :                ROSE_ASSERT(end->get_parent() != NULL);
  147972             :              }
  147973             : 
  147974           4 :           SgExpression* expression = isSgExpression(result);
  147975           4 :           if (isSgExpression(this) != NULL)
  147976             :              {
  147977           4 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  147978             : 
  147979             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  147980           4 :                if (operatorPosition != NULL)
  147981             :                   {
  147982             : #if 0
  147983             :                  // Debugging information
  147984             :                     if (operatorPosition->get_parent() == NULL)
  147985             :                        {
  147986             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  147987             :                        }
  147988             : #endif
  147989           4 :                     operatorPosition->set_parent(expression);
  147990           4 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  147991             :                   }
  147992             :              }
  147993             :         }
  147994             : 
  147995             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  147996           4 :      SgInitializedName* initializedName = isSgInitializedName(result);
  147997           4 :      if (initializedName != NULL)
  147998             :         {
  147999             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  148000           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  148001           0 :           ROSE_ASSERT(start != NULL);
  148002             : #if 0
  148003             :        // Debugging information
  148004             :           if (start->get_parent() == NULL)
  148005             :              {
  148006             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148007             :              }
  148008             : #endif
  148009           0 :           start->set_parent(initializedName);
  148010           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  148011             : 
  148012             : #if 0
  148013             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  148014             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  148015             : 
  148016             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  148017             :        // ROSE_ASSERT(end != NULL);
  148018             :           if (end == NULL)
  148019             :              {
  148020             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  148021             :              }
  148022             :             else
  148023             :              {
  148024             :                if (end->get_parent() == NULL)
  148025             :                   {
  148026             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148027             :                   }
  148028             :                end->set_parent(initializedName);
  148029             :                ROSE_ASSERT(end->get_parent() != NULL);
  148030             :              }
  148031             : #endif
  148032             :         }
  148033             : 
  148034             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  148035           4 :      help.insertCopiedNodePair(this,result);
  148036             : 
  148037             :   // printf ("End of copy SgBitAndOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  148038             : 
  148039             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  148040             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  148041           4 :      help.decrementDepth();
  148042             : 
  148043             :   // Test if this is the root of the copy!
  148044           4 :      if (help.get_depth() == 0)
  148045             :         {
  148046             :        // This is the original calling node.
  148047             : 
  148048             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  148049             :        // printf ("Calling SgBitAndOp::fixupCopy() (from root of AST being copied) \n");
  148050             : #if ALT_FIXUP_COPY
  148051             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  148052           0 :           fixupCopy_scopes (result,help);
  148053           0 :           fixupCopy_symbols (result,help);
  148054           0 :           fixupCopy_references (result,help);
  148055             : #else
  148056             :           fixupCopy(result,help);
  148057             : #endif
  148058             :        // Allow this to be called recursively, so accumulate the state.
  148059             :        // Also, clear the state in the SgCopyHelp object.
  148060             :        // help.clearState();
  148061             :         }
  148062             : 
  148063           4 :      return result;
  148064             :    }
  148065             : 
  148066             : 
  148067             : /* #line 148068 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  148068             : 
  148069             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  148070             : 
  148071           0 : SgNode* SgBitOrOp::copy ( SgCopyHelp& help) const
  148072             :    {
  148073           0 :      SgBitOrOp* result = NULL;
  148074             : 
  148075             :   // printf ("Copy SgBitOrOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  148076             : 
  148077             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  148078             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  148079             :   // The default value of the depth is 0, so after this call the depth is 1!
  148080           0 :      help.incrementDepth();
  148081             : 
  148082             : #if 0
  148083             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  148084             :   // but it is not generally true that things can only be copied once!
  148085             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  148086             :   // AstAttribute* existingAttribute = const_cast<SgBitOrOp*>(this)->attribute["copied"];
  148087             :      bool previouslyCopied = const_cast<SgBitOrOp*>(this)->attribute.exists("copied");
  148088             :      if (previouslyCopied == true)
  148089             :         {
  148090             :           this->get_file_info()->display("Called from copy SgBitOrOp: debug");
  148091             :         }
  148092             :      ROSE_ASSERT(previouslyCopied == false);
  148093             : 
  148094             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  148095             :      AstAttribute* newAttribute = new AstAttribute();
  148096             :      ROSE_ASSERT(newAttribute != NULL);
  148097             : 
  148098             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  148099             :      const_cast<SgBitOrOp*>(this)->attribute.add("copied",newAttribute);
  148100             : #endif
  148101             : 
  148102             :   // Copy data members from base classes
  148103             :   // Copy constructor parameter data member: startOfConstruct_copy
  148104             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  148105             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  148106           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  148107           0 :      if ( p_startOfConstruct != NULL ) 
  148108             :         { 
  148109           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  148110             :         } 
  148111             :        else 
  148112             :         { 
  148113             :           startOfConstruct_copy = NULL; 
  148114             :         } 
  148115             :   // Copy constructor parameter data member: lhs_operand_i_copy
  148116           0 :      SgExpression* lhs_operand_i_copy; 
  148117             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  148118           0 :           if (get_lhs_operand_i() != NULL) 
  148119             :              { 
  148120           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  148121             :              } 
  148122             :             else 
  148123             :              { 
  148124             :                lhs_operand_i_copy = NULL; 
  148125             :              } 
  148126             :   // Copy constructor parameter data member: rhs_operand_i_copy
  148127           0 :      SgExpression* rhs_operand_i_copy; 
  148128             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  148129           0 :           if (get_rhs_operand_i() != NULL) 
  148130             :              { 
  148131           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  148132             :              } 
  148133             :             else 
  148134             :              { 
  148135             :                rhs_operand_i_copy = NULL; 
  148136             :              } 
  148137             :   // Copy constructor parameter data member: expression_type_copy
  148138             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  148139             :   // case: toBeCopied == COPY_DATA for expression_type
  148140           0 :      SgType* expression_type_copy = p_expression_type; 
  148141             :  
  148142             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  148143             : 
  148144             :   // Build an empty copy of this object (will be filled in, but 
  148145             :   // the parent can't be set and must be set by the caller)
  148146           0 :      result = new SgBitOrOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  148147           0 :      ROSE_ASSERT(result != NULL);
  148148             : 
  148149             :   // Copy data members of "this" class
  148150             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  148151             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  148152             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  148153           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  148154           0 :      if ( p_endOfConstruct != NULL ) 
  148155             :         { 
  148156           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  148157             :         } 
  148158             :        else 
  148159             :         { 
  148160             :           endOfConstruct_copy = NULL; 
  148161             :         } 
  148162             :   /* check for a valid pointer and delete if present */ 
  148163           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  148164             :   /* add assignment to result here */ 
  148165           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  148166             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  148167             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  148168             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  148169           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  148170           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  148171             :         { 
  148172           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  148173             :         } 
  148174             :        else 
  148175             :         { 
  148176             :           attachedPreprocessingInfoPtr_copy = NULL; 
  148177             :         } 
  148178             :   /* check for a valid pointer and delete if present */ 
  148179           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  148180             :   /* add assignment to result here */ 
  148181           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  148182             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  148183             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  148184             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  148185           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  148186           0 :      if ( p_attributeMechanism != NULL ) 
  148187             :         { 
  148188           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  148189             :         } 
  148190             :        else 
  148191             :         { 
  148192             :           attributeMechanism_copy = NULL; 
  148193             :         } 
  148194             :   /* check for a valid pointer and delete if present */ 
  148195           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  148196             :   /* add assignment to result here */ 
  148197           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  148198             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  148199             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  148200             :   // case: toBeCopied == COPY_DATA for need_paren
  148201           0 :      bool need_paren_copy = p_need_paren; 
  148202           0 :      result->p_need_paren = need_paren_copy; 
  148203             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  148204             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  148205             :   // case: toBeCopied == COPY_DATA for lvalue
  148206           0 :      bool lvalue_copy = p_lvalue; 
  148207           0 :      result->p_lvalue = lvalue_copy; 
  148208             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  148209             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  148210             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  148211           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  148212           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  148213             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  148214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  148215             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  148216           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  148217           0 :      if ( p_operatorPosition != NULL ) 
  148218             :         { 
  148219           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  148220             :         } 
  148221             :        else 
  148222             :         { 
  148223             :           operatorPosition_copy = NULL; 
  148224             :         } 
  148225             :   /* check for a valid pointer and delete if present */ 
  148226           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  148227             :   /* add assignment to result here */ 
  148228           0 :      result->p_operatorPosition = operatorPosition_copy; 
  148229             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  148230             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  148231             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  148232           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  148233           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  148234             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  148235           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  148236             :              { 
  148237           0 :                lhs_operand_i_copy->set_parent(result); 
  148238             :              } 
  148239             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  148240           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  148241             :              { 
  148242           0 :                rhs_operand_i_copy->set_parent(result); 
  148243             :              } 
  148244             : 
  148245             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  148246             : 
  148247             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  148248             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  148249             :   // fixupCopy(result,help);
  148250             : 
  148251             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  148252             :   // the Sg_File_Info objects that are built for the new IR nodes.
  148253           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  148254           0 :      if (locatedNode != NULL)
  148255             :         {
  148256             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  148257           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  148258           0 :           ROSE_ASSERT(start != NULL);
  148259             : #if 0
  148260             :        // Debugging information
  148261             :           if (start->get_parent() == NULL)
  148262             :              {
  148263             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148264             :              }
  148265             : #endif
  148266           0 :           start->set_parent(locatedNode);
  148267           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  148268             : 
  148269           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  148270             : 
  148271             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  148272             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  148273             :        // ROSE_ASSERT(end != NULL);
  148274           0 :           if (end == NULL)
  148275             :              {
  148276           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  148277             :              }
  148278             :             else
  148279             :              {
  148280             : #if 0
  148281             :             // Debugging information
  148282             :                if (end->get_parent() == NULL)
  148283             :                   {
  148284             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148285             :                   }
  148286             : #endif
  148287           0 :                end->set_parent(locatedNode);
  148288           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  148289             :              }
  148290             : 
  148291           0 :           SgExpression* expression = isSgExpression(result);
  148292           0 :           if (isSgExpression(this) != NULL)
  148293             :              {
  148294           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  148295             : 
  148296             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  148297           0 :                if (operatorPosition != NULL)
  148298             :                   {
  148299             : #if 0
  148300             :                  // Debugging information
  148301             :                     if (operatorPosition->get_parent() == NULL)
  148302             :                        {
  148303             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148304             :                        }
  148305             : #endif
  148306           0 :                     operatorPosition->set_parent(expression);
  148307           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  148308             :                   }
  148309             :              }
  148310             :         }
  148311             : 
  148312             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  148313           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  148314           0 :      if (initializedName != NULL)
  148315             :         {
  148316             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  148317           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  148318           0 :           ROSE_ASSERT(start != NULL);
  148319             : #if 0
  148320             :        // Debugging information
  148321             :           if (start->get_parent() == NULL)
  148322             :              {
  148323             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148324             :              }
  148325             : #endif
  148326           0 :           start->set_parent(initializedName);
  148327           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  148328             : 
  148329             : #if 0
  148330             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  148331             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  148332             : 
  148333             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  148334             :        // ROSE_ASSERT(end != NULL);
  148335             :           if (end == NULL)
  148336             :              {
  148337             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  148338             :              }
  148339             :             else
  148340             :              {
  148341             :                if (end->get_parent() == NULL)
  148342             :                   {
  148343             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148344             :                   }
  148345             :                end->set_parent(initializedName);
  148346             :                ROSE_ASSERT(end->get_parent() != NULL);
  148347             :              }
  148348             : #endif
  148349             :         }
  148350             : 
  148351             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  148352           0 :      help.insertCopiedNodePair(this,result);
  148353             : 
  148354             :   // printf ("End of copy SgBitOrOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  148355             : 
  148356             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  148357             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  148358           0 :      help.decrementDepth();
  148359             : 
  148360             :   // Test if this is the root of the copy!
  148361           0 :      if (help.get_depth() == 0)
  148362             :         {
  148363             :        // This is the original calling node.
  148364             : 
  148365             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  148366             :        // printf ("Calling SgBitOrOp::fixupCopy() (from root of AST being copied) \n");
  148367             : #if ALT_FIXUP_COPY
  148368             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  148369           0 :           fixupCopy_scopes (result,help);
  148370           0 :           fixupCopy_symbols (result,help);
  148371           0 :           fixupCopy_references (result,help);
  148372             : #else
  148373             :           fixupCopy(result,help);
  148374             : #endif
  148375             :        // Allow this to be called recursively, so accumulate the state.
  148376             :        // Also, clear the state in the SgCopyHelp object.
  148377             :        // help.clearState();
  148378             :         }
  148379             : 
  148380           0 :      return result;
  148381             :    }
  148382             : 
  148383             : 
  148384             : /* #line 148385 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  148385             : 
  148386             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  148387             : 
  148388           0 : SgNode* SgBitEqvOp::copy ( SgCopyHelp& help) const
  148389             :    {
  148390           0 :      SgBitEqvOp* result = NULL;
  148391             : 
  148392             :   // printf ("Copy SgBitEqvOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  148393             : 
  148394             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  148395             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  148396             :   // The default value of the depth is 0, so after this call the depth is 1!
  148397           0 :      help.incrementDepth();
  148398             : 
  148399             : #if 0
  148400             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  148401             :   // but it is not generally true that things can only be copied once!
  148402             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  148403             :   // AstAttribute* existingAttribute = const_cast<SgBitEqvOp*>(this)->attribute["copied"];
  148404             :      bool previouslyCopied = const_cast<SgBitEqvOp*>(this)->attribute.exists("copied");
  148405             :      if (previouslyCopied == true)
  148406             :         {
  148407             :           this->get_file_info()->display("Called from copy SgBitEqvOp: debug");
  148408             :         }
  148409             :      ROSE_ASSERT(previouslyCopied == false);
  148410             : 
  148411             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  148412             :      AstAttribute* newAttribute = new AstAttribute();
  148413             :      ROSE_ASSERT(newAttribute != NULL);
  148414             : 
  148415             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  148416             :      const_cast<SgBitEqvOp*>(this)->attribute.add("copied",newAttribute);
  148417             : #endif
  148418             : 
  148419             :   // Copy data members from base classes
  148420             :   // Copy constructor parameter data member: startOfConstruct_copy
  148421             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  148422             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  148423           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  148424           0 :      if ( p_startOfConstruct != NULL ) 
  148425             :         { 
  148426           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  148427             :         } 
  148428             :        else 
  148429             :         { 
  148430             :           startOfConstruct_copy = NULL; 
  148431             :         } 
  148432             :   // Copy constructor parameter data member: lhs_operand_i_copy
  148433           0 :      SgExpression* lhs_operand_i_copy; 
  148434             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  148435           0 :           if (get_lhs_operand_i() != NULL) 
  148436             :              { 
  148437           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  148438             :              } 
  148439             :             else 
  148440             :              { 
  148441             :                lhs_operand_i_copy = NULL; 
  148442             :              } 
  148443             :   // Copy constructor parameter data member: rhs_operand_i_copy
  148444           0 :      SgExpression* rhs_operand_i_copy; 
  148445             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  148446           0 :           if (get_rhs_operand_i() != NULL) 
  148447             :              { 
  148448           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  148449             :              } 
  148450             :             else 
  148451             :              { 
  148452             :                rhs_operand_i_copy = NULL; 
  148453             :              } 
  148454             :   // Copy constructor parameter data member: expression_type_copy
  148455             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  148456             :   // case: toBeCopied == COPY_DATA for expression_type
  148457           0 :      SgType* expression_type_copy = p_expression_type; 
  148458             :  
  148459             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  148460             : 
  148461             :   // Build an empty copy of this object (will be filled in, but 
  148462             :   // the parent can't be set and must be set by the caller)
  148463           0 :      result = new SgBitEqvOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  148464           0 :      ROSE_ASSERT(result != NULL);
  148465             : 
  148466             :   // Copy data members of "this" class
  148467             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  148468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  148469             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  148470           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  148471           0 :      if ( p_endOfConstruct != NULL ) 
  148472             :         { 
  148473           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  148474             :         } 
  148475             :        else 
  148476             :         { 
  148477             :           endOfConstruct_copy = NULL; 
  148478             :         } 
  148479             :   /* check for a valid pointer and delete if present */ 
  148480           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  148481             :   /* add assignment to result here */ 
  148482           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  148483             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  148484             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  148485             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  148486           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  148487           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  148488             :         { 
  148489           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  148490             :         } 
  148491             :        else 
  148492             :         { 
  148493             :           attachedPreprocessingInfoPtr_copy = NULL; 
  148494             :         } 
  148495             :   /* check for a valid pointer and delete if present */ 
  148496           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  148497             :   /* add assignment to result here */ 
  148498           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  148499             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  148500             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  148501             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  148502           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  148503           0 :      if ( p_attributeMechanism != NULL ) 
  148504             :         { 
  148505           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  148506             :         } 
  148507             :        else 
  148508             :         { 
  148509             :           attributeMechanism_copy = NULL; 
  148510             :         } 
  148511             :   /* check for a valid pointer and delete if present */ 
  148512           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  148513             :   /* add assignment to result here */ 
  148514           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  148515             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  148516             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  148517             :   // case: toBeCopied == COPY_DATA for need_paren
  148518           0 :      bool need_paren_copy = p_need_paren; 
  148519           0 :      result->p_need_paren = need_paren_copy; 
  148520             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  148521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  148522             :   // case: toBeCopied == COPY_DATA for lvalue
  148523           0 :      bool lvalue_copy = p_lvalue; 
  148524           0 :      result->p_lvalue = lvalue_copy; 
  148525             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  148526             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  148527             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  148528           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  148529           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  148530             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  148531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  148532             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  148533           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  148534           0 :      if ( p_operatorPosition != NULL ) 
  148535             :         { 
  148536           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  148537             :         } 
  148538             :        else 
  148539             :         { 
  148540             :           operatorPosition_copy = NULL; 
  148541             :         } 
  148542             :   /* check for a valid pointer and delete if present */ 
  148543           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  148544             :   /* add assignment to result here */ 
  148545           0 :      result->p_operatorPosition = operatorPosition_copy; 
  148546             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  148547             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  148548             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  148549           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  148550           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  148551             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  148552           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  148553             :              { 
  148554           0 :                lhs_operand_i_copy->set_parent(result); 
  148555             :              } 
  148556             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  148557           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  148558             :              { 
  148559           0 :                rhs_operand_i_copy->set_parent(result); 
  148560             :              } 
  148561             : 
  148562             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  148563             : 
  148564             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  148565             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  148566             :   // fixupCopy(result,help);
  148567             : 
  148568             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  148569             :   // the Sg_File_Info objects that are built for the new IR nodes.
  148570           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  148571           0 :      if (locatedNode != NULL)
  148572             :         {
  148573             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  148574           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  148575           0 :           ROSE_ASSERT(start != NULL);
  148576             : #if 0
  148577             :        // Debugging information
  148578             :           if (start->get_parent() == NULL)
  148579             :              {
  148580             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148581             :              }
  148582             : #endif
  148583           0 :           start->set_parent(locatedNode);
  148584           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  148585             : 
  148586           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  148587             : 
  148588             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  148589             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  148590             :        // ROSE_ASSERT(end != NULL);
  148591           0 :           if (end == NULL)
  148592             :              {
  148593           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  148594             :              }
  148595             :             else
  148596             :              {
  148597             : #if 0
  148598             :             // Debugging information
  148599             :                if (end->get_parent() == NULL)
  148600             :                   {
  148601             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148602             :                   }
  148603             : #endif
  148604           0 :                end->set_parent(locatedNode);
  148605           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  148606             :              }
  148607             : 
  148608           0 :           SgExpression* expression = isSgExpression(result);
  148609           0 :           if (isSgExpression(this) != NULL)
  148610             :              {
  148611           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  148612             : 
  148613             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  148614           0 :                if (operatorPosition != NULL)
  148615             :                   {
  148616             : #if 0
  148617             :                  // Debugging information
  148618             :                     if (operatorPosition->get_parent() == NULL)
  148619             :                        {
  148620             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148621             :                        }
  148622             : #endif
  148623           0 :                     operatorPosition->set_parent(expression);
  148624           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  148625             :                   }
  148626             :              }
  148627             :         }
  148628             : 
  148629             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  148630           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  148631           0 :      if (initializedName != NULL)
  148632             :         {
  148633             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  148634           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  148635           0 :           ROSE_ASSERT(start != NULL);
  148636             : #if 0
  148637             :        // Debugging information
  148638             :           if (start->get_parent() == NULL)
  148639             :              {
  148640             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148641             :              }
  148642             : #endif
  148643           0 :           start->set_parent(initializedName);
  148644           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  148645             : 
  148646             : #if 0
  148647             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  148648             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  148649             : 
  148650             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  148651             :        // ROSE_ASSERT(end != NULL);
  148652             :           if (end == NULL)
  148653             :              {
  148654             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  148655             :              }
  148656             :             else
  148657             :              {
  148658             :                if (end->get_parent() == NULL)
  148659             :                   {
  148660             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148661             :                   }
  148662             :                end->set_parent(initializedName);
  148663             :                ROSE_ASSERT(end->get_parent() != NULL);
  148664             :              }
  148665             : #endif
  148666             :         }
  148667             : 
  148668             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  148669           0 :      help.insertCopiedNodePair(this,result);
  148670             : 
  148671             :   // printf ("End of copy SgBitEqvOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  148672             : 
  148673             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  148674             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  148675           0 :      help.decrementDepth();
  148676             : 
  148677             :   // Test if this is the root of the copy!
  148678           0 :      if (help.get_depth() == 0)
  148679             :         {
  148680             :        // This is the original calling node.
  148681             : 
  148682             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  148683             :        // printf ("Calling SgBitEqvOp::fixupCopy() (from root of AST being copied) \n");
  148684             : #if ALT_FIXUP_COPY
  148685             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  148686           0 :           fixupCopy_scopes (result,help);
  148687           0 :           fixupCopy_symbols (result,help);
  148688           0 :           fixupCopy_references (result,help);
  148689             : #else
  148690             :           fixupCopy(result,help);
  148691             : #endif
  148692             :        // Allow this to be called recursively, so accumulate the state.
  148693             :        // Also, clear the state in the SgCopyHelp object.
  148694             :        // help.clearState();
  148695             :         }
  148696             : 
  148697           0 :      return result;
  148698             :    }
  148699             : 
  148700             : 
  148701             : /* #line 148702 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  148702             : 
  148703             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  148704             : 
  148705           0 : SgNode* SgCommaOpExp::copy ( SgCopyHelp& help) const
  148706             :    {
  148707           0 :      SgCommaOpExp* result = NULL;
  148708             : 
  148709             :   // printf ("Copy SgCommaOpExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  148710             : 
  148711             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  148712             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  148713             :   // The default value of the depth is 0, so after this call the depth is 1!
  148714           0 :      help.incrementDepth();
  148715             : 
  148716             : #if 0
  148717             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  148718             :   // but it is not generally true that things can only be copied once!
  148719             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  148720             :   // AstAttribute* existingAttribute = const_cast<SgCommaOpExp*>(this)->attribute["copied"];
  148721             :      bool previouslyCopied = const_cast<SgCommaOpExp*>(this)->attribute.exists("copied");
  148722             :      if (previouslyCopied == true)
  148723             :         {
  148724             :           this->get_file_info()->display("Called from copy SgCommaOpExp: debug");
  148725             :         }
  148726             :      ROSE_ASSERT(previouslyCopied == false);
  148727             : 
  148728             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  148729             :      AstAttribute* newAttribute = new AstAttribute();
  148730             :      ROSE_ASSERT(newAttribute != NULL);
  148731             : 
  148732             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  148733             :      const_cast<SgCommaOpExp*>(this)->attribute.add("copied",newAttribute);
  148734             : #endif
  148735             : 
  148736             :   // Copy data members from base classes
  148737             :   // Copy constructor parameter data member: startOfConstruct_copy
  148738             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  148739             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  148740           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  148741           0 :      if ( p_startOfConstruct != NULL ) 
  148742             :         { 
  148743           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  148744             :         } 
  148745             :        else 
  148746             :         { 
  148747             :           startOfConstruct_copy = NULL; 
  148748             :         } 
  148749             :   // Copy constructor parameter data member: lhs_operand_i_copy
  148750           0 :      SgExpression* lhs_operand_i_copy; 
  148751             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  148752           0 :           if (get_lhs_operand_i() != NULL) 
  148753             :              { 
  148754           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  148755             :              } 
  148756             :             else 
  148757             :              { 
  148758             :                lhs_operand_i_copy = NULL; 
  148759             :              } 
  148760             :   // Copy constructor parameter data member: rhs_operand_i_copy
  148761           0 :      SgExpression* rhs_operand_i_copy; 
  148762             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  148763           0 :           if (get_rhs_operand_i() != NULL) 
  148764             :              { 
  148765           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  148766             :              } 
  148767             :             else 
  148768             :              { 
  148769             :                rhs_operand_i_copy = NULL; 
  148770             :              } 
  148771             :   // Copy constructor parameter data member: expression_type_copy
  148772             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  148773             :   // case: toBeCopied == COPY_DATA for expression_type
  148774           0 :      SgType* expression_type_copy = p_expression_type; 
  148775             :  
  148776             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  148777             : 
  148778             :   // Build an empty copy of this object (will be filled in, but 
  148779             :   // the parent can't be set and must be set by the caller)
  148780           0 :      result = new SgCommaOpExp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  148781           0 :      ROSE_ASSERT(result != NULL);
  148782             : 
  148783             :   // Copy data members of "this" class
  148784             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  148785             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  148786             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  148787           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  148788           0 :      if ( p_endOfConstruct != NULL ) 
  148789             :         { 
  148790           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  148791             :         } 
  148792             :        else 
  148793             :         { 
  148794             :           endOfConstruct_copy = NULL; 
  148795             :         } 
  148796             :   /* check for a valid pointer and delete if present */ 
  148797           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  148798             :   /* add assignment to result here */ 
  148799           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  148800             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  148801             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  148802             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  148803           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  148804           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  148805             :         { 
  148806           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  148807             :         } 
  148808             :        else 
  148809             :         { 
  148810             :           attachedPreprocessingInfoPtr_copy = NULL; 
  148811             :         } 
  148812             :   /* check for a valid pointer and delete if present */ 
  148813           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  148814             :   /* add assignment to result here */ 
  148815           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  148816             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  148817             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  148818             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  148819           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  148820           0 :      if ( p_attributeMechanism != NULL ) 
  148821             :         { 
  148822           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  148823             :         } 
  148824             :        else 
  148825             :         { 
  148826             :           attributeMechanism_copy = NULL; 
  148827             :         } 
  148828             :   /* check for a valid pointer and delete if present */ 
  148829           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  148830             :   /* add assignment to result here */ 
  148831           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  148832             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  148833             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  148834             :   // case: toBeCopied == COPY_DATA for need_paren
  148835           0 :      bool need_paren_copy = p_need_paren; 
  148836           0 :      result->p_need_paren = need_paren_copy; 
  148837             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  148838             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  148839             :   // case: toBeCopied == COPY_DATA for lvalue
  148840           0 :      bool lvalue_copy = p_lvalue; 
  148841           0 :      result->p_lvalue = lvalue_copy; 
  148842             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  148843             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  148844             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  148845           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  148846           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  148847             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  148848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  148849             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  148850           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  148851           0 :      if ( p_operatorPosition != NULL ) 
  148852             :         { 
  148853           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  148854             :         } 
  148855             :        else 
  148856             :         { 
  148857             :           operatorPosition_copy = NULL; 
  148858             :         } 
  148859             :   /* check for a valid pointer and delete if present */ 
  148860           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  148861             :   /* add assignment to result here */ 
  148862           0 :      result->p_operatorPosition = operatorPosition_copy; 
  148863             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  148864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  148865             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  148866           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  148867           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  148868             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  148869           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  148870             :              { 
  148871           0 :                lhs_operand_i_copy->set_parent(result); 
  148872             :              } 
  148873             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  148874           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  148875             :              { 
  148876           0 :                rhs_operand_i_copy->set_parent(result); 
  148877             :              } 
  148878             : 
  148879             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  148880             : 
  148881             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  148882             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  148883             :   // fixupCopy(result,help);
  148884             : 
  148885             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  148886             :   // the Sg_File_Info objects that are built for the new IR nodes.
  148887           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  148888           0 :      if (locatedNode != NULL)
  148889             :         {
  148890             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  148891           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  148892           0 :           ROSE_ASSERT(start != NULL);
  148893             : #if 0
  148894             :        // Debugging information
  148895             :           if (start->get_parent() == NULL)
  148896             :              {
  148897             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148898             :              }
  148899             : #endif
  148900           0 :           start->set_parent(locatedNode);
  148901           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  148902             : 
  148903           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  148904             : 
  148905             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  148906             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  148907             :        // ROSE_ASSERT(end != NULL);
  148908           0 :           if (end == NULL)
  148909             :              {
  148910           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  148911             :              }
  148912             :             else
  148913             :              {
  148914             : #if 0
  148915             :             // Debugging information
  148916             :                if (end->get_parent() == NULL)
  148917             :                   {
  148918             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148919             :                   }
  148920             : #endif
  148921           0 :                end->set_parent(locatedNode);
  148922           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  148923             :              }
  148924             : 
  148925           0 :           SgExpression* expression = isSgExpression(result);
  148926           0 :           if (isSgExpression(this) != NULL)
  148927             :              {
  148928           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  148929             : 
  148930             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  148931           0 :                if (operatorPosition != NULL)
  148932             :                   {
  148933             : #if 0
  148934             :                  // Debugging information
  148935             :                     if (operatorPosition->get_parent() == NULL)
  148936             :                        {
  148937             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148938             :                        }
  148939             : #endif
  148940           0 :                     operatorPosition->set_parent(expression);
  148941           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  148942             :                   }
  148943             :              }
  148944             :         }
  148945             : 
  148946             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  148947           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  148948           0 :      if (initializedName != NULL)
  148949             :         {
  148950             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  148951           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  148952           0 :           ROSE_ASSERT(start != NULL);
  148953             : #if 0
  148954             :        // Debugging information
  148955             :           if (start->get_parent() == NULL)
  148956             :              {
  148957             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148958             :              }
  148959             : #endif
  148960           0 :           start->set_parent(initializedName);
  148961           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  148962             : 
  148963             : #if 0
  148964             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  148965             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  148966             : 
  148967             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  148968             :        // ROSE_ASSERT(end != NULL);
  148969             :           if (end == NULL)
  148970             :              {
  148971             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  148972             :              }
  148973             :             else
  148974             :              {
  148975             :                if (end->get_parent() == NULL)
  148976             :                   {
  148977             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  148978             :                   }
  148979             :                end->set_parent(initializedName);
  148980             :                ROSE_ASSERT(end->get_parent() != NULL);
  148981             :              }
  148982             : #endif
  148983             :         }
  148984             : 
  148985             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  148986           0 :      help.insertCopiedNodePair(this,result);
  148987             : 
  148988             :   // printf ("End of copy SgCommaOpExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  148989             : 
  148990             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  148991             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  148992           0 :      help.decrementDepth();
  148993             : 
  148994             :   // Test if this is the root of the copy!
  148995           0 :      if (help.get_depth() == 0)
  148996             :         {
  148997             :        // This is the original calling node.
  148998             : 
  148999             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  149000             :        // printf ("Calling SgCommaOpExp::fixupCopy() (from root of AST being copied) \n");
  149001             : #if ALT_FIXUP_COPY
  149002             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  149003           0 :           fixupCopy_scopes (result,help);
  149004           0 :           fixupCopy_symbols (result,help);
  149005           0 :           fixupCopy_references (result,help);
  149006             : #else
  149007             :           fixupCopy(result,help);
  149008             : #endif
  149009             :        // Allow this to be called recursively, so accumulate the state.
  149010             :        // Also, clear the state in the SgCopyHelp object.
  149011             :        // help.clearState();
  149012             :         }
  149013             : 
  149014           0 :      return result;
  149015             :    }
  149016             : 
  149017             : 
  149018             : /* #line 149019 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  149019             : 
  149020             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149021             : 
  149022           0 : SgNode* SgLshiftOp::copy ( SgCopyHelp& help) const
  149023             :    {
  149024           0 :      SgLshiftOp* result = NULL;
  149025             : 
  149026             :   // printf ("Copy SgLshiftOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  149027             : 
  149028             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  149029             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  149030             :   // The default value of the depth is 0, so after this call the depth is 1!
  149031           0 :      help.incrementDepth();
  149032             : 
  149033             : #if 0
  149034             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  149035             :   // but it is not generally true that things can only be copied once!
  149036             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  149037             :   // AstAttribute* existingAttribute = const_cast<SgLshiftOp*>(this)->attribute["copied"];
  149038             :      bool previouslyCopied = const_cast<SgLshiftOp*>(this)->attribute.exists("copied");
  149039             :      if (previouslyCopied == true)
  149040             :         {
  149041             :           this->get_file_info()->display("Called from copy SgLshiftOp: debug");
  149042             :         }
  149043             :      ROSE_ASSERT(previouslyCopied == false);
  149044             : 
  149045             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  149046             :      AstAttribute* newAttribute = new AstAttribute();
  149047             :      ROSE_ASSERT(newAttribute != NULL);
  149048             : 
  149049             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  149050             :      const_cast<SgLshiftOp*>(this)->attribute.add("copied",newAttribute);
  149051             : #endif
  149052             : 
  149053             :   // Copy data members from base classes
  149054             :   // Copy constructor parameter data member: startOfConstruct_copy
  149055             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  149056             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  149057           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  149058           0 :      if ( p_startOfConstruct != NULL ) 
  149059             :         { 
  149060           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  149061             :         } 
  149062             :        else 
  149063             :         { 
  149064             :           startOfConstruct_copy = NULL; 
  149065             :         } 
  149066             :   // Copy constructor parameter data member: lhs_operand_i_copy
  149067           0 :      SgExpression* lhs_operand_i_copy; 
  149068             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  149069           0 :           if (get_lhs_operand_i() != NULL) 
  149070             :              { 
  149071           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  149072             :              } 
  149073             :             else 
  149074             :              { 
  149075             :                lhs_operand_i_copy = NULL; 
  149076             :              } 
  149077             :   // Copy constructor parameter data member: rhs_operand_i_copy
  149078           0 :      SgExpression* rhs_operand_i_copy; 
  149079             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  149080           0 :           if (get_rhs_operand_i() != NULL) 
  149081             :              { 
  149082           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  149083             :              } 
  149084             :             else 
  149085             :              { 
  149086             :                rhs_operand_i_copy = NULL; 
  149087             :              } 
  149088             :   // Copy constructor parameter data member: expression_type_copy
  149089             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  149090             :   // case: toBeCopied == COPY_DATA for expression_type
  149091           0 :      SgType* expression_type_copy = p_expression_type; 
  149092             :  
  149093             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149094             : 
  149095             :   // Build an empty copy of this object (will be filled in, but 
  149096             :   // the parent can't be set and must be set by the caller)
  149097           0 :      result = new SgLshiftOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  149098           0 :      ROSE_ASSERT(result != NULL);
  149099             : 
  149100             :   // Copy data members of "this" class
  149101             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  149102             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  149103             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  149104           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  149105           0 :      if ( p_endOfConstruct != NULL ) 
  149106             :         { 
  149107           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  149108             :         } 
  149109             :        else 
  149110             :         { 
  149111             :           endOfConstruct_copy = NULL; 
  149112             :         } 
  149113             :   /* check for a valid pointer and delete if present */ 
  149114           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  149115             :   /* add assignment to result here */ 
  149116           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  149117             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  149118             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  149119             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  149120           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  149121           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  149122             :         { 
  149123           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  149124             :         } 
  149125             :        else 
  149126             :         { 
  149127             :           attachedPreprocessingInfoPtr_copy = NULL; 
  149128             :         } 
  149129             :   /* check for a valid pointer and delete if present */ 
  149130           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  149131             :   /* add assignment to result here */ 
  149132           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  149133             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  149134             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  149135             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  149136           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  149137           0 :      if ( p_attributeMechanism != NULL ) 
  149138             :         { 
  149139           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  149140             :         } 
  149141             :        else 
  149142             :         { 
  149143             :           attributeMechanism_copy = NULL; 
  149144             :         } 
  149145             :   /* check for a valid pointer and delete if present */ 
  149146           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  149147             :   /* add assignment to result here */ 
  149148           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  149149             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  149150             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  149151             :   // case: toBeCopied == COPY_DATA for need_paren
  149152           0 :      bool need_paren_copy = p_need_paren; 
  149153           0 :      result->p_need_paren = need_paren_copy; 
  149154             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  149155             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  149156             :   // case: toBeCopied == COPY_DATA for lvalue
  149157           0 :      bool lvalue_copy = p_lvalue; 
  149158           0 :      result->p_lvalue = lvalue_copy; 
  149159             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  149160             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  149161             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  149162           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  149163           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  149164             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  149165             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  149166             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  149167           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  149168           0 :      if ( p_operatorPosition != NULL ) 
  149169             :         { 
  149170           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  149171             :         } 
  149172             :        else 
  149173             :         { 
  149174             :           operatorPosition_copy = NULL; 
  149175             :         } 
  149176             :   /* check for a valid pointer and delete if present */ 
  149177           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  149178             :   /* add assignment to result here */ 
  149179           0 :      result->p_operatorPosition = operatorPosition_copy; 
  149180             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  149181             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  149182             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  149183           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  149184           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  149185             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  149186           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  149187             :              { 
  149188           0 :                lhs_operand_i_copy->set_parent(result); 
  149189             :              } 
  149190             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  149191           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  149192             :              { 
  149193           0 :                rhs_operand_i_copy->set_parent(result); 
  149194             :              } 
  149195             : 
  149196             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149197             : 
  149198             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  149199             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  149200             :   // fixupCopy(result,help);
  149201             : 
  149202             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  149203             :   // the Sg_File_Info objects that are built for the new IR nodes.
  149204           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  149205           0 :      if (locatedNode != NULL)
  149206             :         {
  149207             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  149208           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  149209           0 :           ROSE_ASSERT(start != NULL);
  149210             : #if 0
  149211             :        // Debugging information
  149212             :           if (start->get_parent() == NULL)
  149213             :              {
  149214             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149215             :              }
  149216             : #endif
  149217           0 :           start->set_parent(locatedNode);
  149218           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  149219             : 
  149220           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  149221             : 
  149222             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  149223             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  149224             :        // ROSE_ASSERT(end != NULL);
  149225           0 :           if (end == NULL)
  149226             :              {
  149227           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  149228             :              }
  149229             :             else
  149230             :              {
  149231             : #if 0
  149232             :             // Debugging information
  149233             :                if (end->get_parent() == NULL)
  149234             :                   {
  149235             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149236             :                   }
  149237             : #endif
  149238           0 :                end->set_parent(locatedNode);
  149239           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  149240             :              }
  149241             : 
  149242           0 :           SgExpression* expression = isSgExpression(result);
  149243           0 :           if (isSgExpression(this) != NULL)
  149244             :              {
  149245           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  149246             : 
  149247             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  149248           0 :                if (operatorPosition != NULL)
  149249             :                   {
  149250             : #if 0
  149251             :                  // Debugging information
  149252             :                     if (operatorPosition->get_parent() == NULL)
  149253             :                        {
  149254             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149255             :                        }
  149256             : #endif
  149257           0 :                     operatorPosition->set_parent(expression);
  149258           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  149259             :                   }
  149260             :              }
  149261             :         }
  149262             : 
  149263             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  149264           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  149265           0 :      if (initializedName != NULL)
  149266             :         {
  149267             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  149268           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  149269           0 :           ROSE_ASSERT(start != NULL);
  149270             : #if 0
  149271             :        // Debugging information
  149272             :           if (start->get_parent() == NULL)
  149273             :              {
  149274             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149275             :              }
  149276             : #endif
  149277           0 :           start->set_parent(initializedName);
  149278           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  149279             : 
  149280             : #if 0
  149281             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  149282             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  149283             : 
  149284             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  149285             :        // ROSE_ASSERT(end != NULL);
  149286             :           if (end == NULL)
  149287             :              {
  149288             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  149289             :              }
  149290             :             else
  149291             :              {
  149292             :                if (end->get_parent() == NULL)
  149293             :                   {
  149294             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149295             :                   }
  149296             :                end->set_parent(initializedName);
  149297             :                ROSE_ASSERT(end->get_parent() != NULL);
  149298             :              }
  149299             : #endif
  149300             :         }
  149301             : 
  149302             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  149303           0 :      help.insertCopiedNodePair(this,result);
  149304             : 
  149305             :   // printf ("End of copy SgLshiftOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  149306             : 
  149307             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  149308             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  149309           0 :      help.decrementDepth();
  149310             : 
  149311             :   // Test if this is the root of the copy!
  149312           0 :      if (help.get_depth() == 0)
  149313             :         {
  149314             :        // This is the original calling node.
  149315             : 
  149316             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  149317             :        // printf ("Calling SgLshiftOp::fixupCopy() (from root of AST being copied) \n");
  149318             : #if ALT_FIXUP_COPY
  149319             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  149320           0 :           fixupCopy_scopes (result,help);
  149321           0 :           fixupCopy_symbols (result,help);
  149322           0 :           fixupCopy_references (result,help);
  149323             : #else
  149324             :           fixupCopy(result,help);
  149325             : #endif
  149326             :        // Allow this to be called recursively, so accumulate the state.
  149327             :        // Also, clear the state in the SgCopyHelp object.
  149328             :        // help.clearState();
  149329             :         }
  149330             : 
  149331           0 :      return result;
  149332             :    }
  149333             : 
  149334             : 
  149335             : /* #line 149336 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  149336             : 
  149337             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149338             : 
  149339           0 : SgNode* SgRshiftOp::copy ( SgCopyHelp& help) const
  149340             :    {
  149341           0 :      SgRshiftOp* result = NULL;
  149342             : 
  149343             :   // printf ("Copy SgRshiftOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  149344             : 
  149345             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  149346             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  149347             :   // The default value of the depth is 0, so after this call the depth is 1!
  149348           0 :      help.incrementDepth();
  149349             : 
  149350             : #if 0
  149351             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  149352             :   // but it is not generally true that things can only be copied once!
  149353             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  149354             :   // AstAttribute* existingAttribute = const_cast<SgRshiftOp*>(this)->attribute["copied"];
  149355             :      bool previouslyCopied = const_cast<SgRshiftOp*>(this)->attribute.exists("copied");
  149356             :      if (previouslyCopied == true)
  149357             :         {
  149358             :           this->get_file_info()->display("Called from copy SgRshiftOp: debug");
  149359             :         }
  149360             :      ROSE_ASSERT(previouslyCopied == false);
  149361             : 
  149362             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  149363             :      AstAttribute* newAttribute = new AstAttribute();
  149364             :      ROSE_ASSERT(newAttribute != NULL);
  149365             : 
  149366             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  149367             :      const_cast<SgRshiftOp*>(this)->attribute.add("copied",newAttribute);
  149368             : #endif
  149369             : 
  149370             :   // Copy data members from base classes
  149371             :   // Copy constructor parameter data member: startOfConstruct_copy
  149372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  149373             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  149374           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  149375           0 :      if ( p_startOfConstruct != NULL ) 
  149376             :         { 
  149377           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  149378             :         } 
  149379             :        else 
  149380             :         { 
  149381             :           startOfConstruct_copy = NULL; 
  149382             :         } 
  149383             :   // Copy constructor parameter data member: lhs_operand_i_copy
  149384           0 :      SgExpression* lhs_operand_i_copy; 
  149385             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  149386           0 :           if (get_lhs_operand_i() != NULL) 
  149387             :              { 
  149388           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  149389             :              } 
  149390             :             else 
  149391             :              { 
  149392             :                lhs_operand_i_copy = NULL; 
  149393             :              } 
  149394             :   // Copy constructor parameter data member: rhs_operand_i_copy
  149395           0 :      SgExpression* rhs_operand_i_copy; 
  149396             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  149397           0 :           if (get_rhs_operand_i() != NULL) 
  149398             :              { 
  149399           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  149400             :              } 
  149401             :             else 
  149402             :              { 
  149403             :                rhs_operand_i_copy = NULL; 
  149404             :              } 
  149405             :   // Copy constructor parameter data member: expression_type_copy
  149406             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  149407             :   // case: toBeCopied == COPY_DATA for expression_type
  149408           0 :      SgType* expression_type_copy = p_expression_type; 
  149409             :  
  149410             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149411             : 
  149412             :   // Build an empty copy of this object (will be filled in, but 
  149413             :   // the parent can't be set and must be set by the caller)
  149414           0 :      result = new SgRshiftOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  149415           0 :      ROSE_ASSERT(result != NULL);
  149416             : 
  149417             :   // Copy data members of "this" class
  149418             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  149419             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  149420             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  149421           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  149422           0 :      if ( p_endOfConstruct != NULL ) 
  149423             :         { 
  149424           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  149425             :         } 
  149426             :        else 
  149427             :         { 
  149428             :           endOfConstruct_copy = NULL; 
  149429             :         } 
  149430             :   /* check for a valid pointer and delete if present */ 
  149431           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  149432             :   /* add assignment to result here */ 
  149433           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  149434             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  149435             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  149436             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  149437           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  149438           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  149439             :         { 
  149440           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  149441             :         } 
  149442             :        else 
  149443             :         { 
  149444             :           attachedPreprocessingInfoPtr_copy = NULL; 
  149445             :         } 
  149446             :   /* check for a valid pointer and delete if present */ 
  149447           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  149448             :   /* add assignment to result here */ 
  149449           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  149450             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  149451             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  149452             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  149453           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  149454           0 :      if ( p_attributeMechanism != NULL ) 
  149455             :         { 
  149456           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  149457             :         } 
  149458             :        else 
  149459             :         { 
  149460             :           attributeMechanism_copy = NULL; 
  149461             :         } 
  149462             :   /* check for a valid pointer and delete if present */ 
  149463           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  149464             :   /* add assignment to result here */ 
  149465           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  149466             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  149467             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  149468             :   // case: toBeCopied == COPY_DATA for need_paren
  149469           0 :      bool need_paren_copy = p_need_paren; 
  149470           0 :      result->p_need_paren = need_paren_copy; 
  149471             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  149472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  149473             :   // case: toBeCopied == COPY_DATA for lvalue
  149474           0 :      bool lvalue_copy = p_lvalue; 
  149475           0 :      result->p_lvalue = lvalue_copy; 
  149476             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  149477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  149478             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  149479           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  149480           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  149481             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  149482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  149483             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  149484           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  149485           0 :      if ( p_operatorPosition != NULL ) 
  149486             :         { 
  149487           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  149488             :         } 
  149489             :        else 
  149490             :         { 
  149491             :           operatorPosition_copy = NULL; 
  149492             :         } 
  149493             :   /* check for a valid pointer and delete if present */ 
  149494           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  149495             :   /* add assignment to result here */ 
  149496           0 :      result->p_operatorPosition = operatorPosition_copy; 
  149497             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  149498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  149499             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  149500           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  149501           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  149502             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  149503           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  149504             :              { 
  149505           0 :                lhs_operand_i_copy->set_parent(result); 
  149506             :              } 
  149507             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  149508           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  149509             :              { 
  149510           0 :                rhs_operand_i_copy->set_parent(result); 
  149511             :              } 
  149512             : 
  149513             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149514             : 
  149515             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  149516             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  149517             :   // fixupCopy(result,help);
  149518             : 
  149519             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  149520             :   // the Sg_File_Info objects that are built for the new IR nodes.
  149521           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  149522           0 :      if (locatedNode != NULL)
  149523             :         {
  149524             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  149525           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  149526           0 :           ROSE_ASSERT(start != NULL);
  149527             : #if 0
  149528             :        // Debugging information
  149529             :           if (start->get_parent() == NULL)
  149530             :              {
  149531             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149532             :              }
  149533             : #endif
  149534           0 :           start->set_parent(locatedNode);
  149535           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  149536             : 
  149537           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  149538             : 
  149539             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  149540             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  149541             :        // ROSE_ASSERT(end != NULL);
  149542           0 :           if (end == NULL)
  149543             :              {
  149544           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  149545             :              }
  149546             :             else
  149547             :              {
  149548             : #if 0
  149549             :             // Debugging information
  149550             :                if (end->get_parent() == NULL)
  149551             :                   {
  149552             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149553             :                   }
  149554             : #endif
  149555           0 :                end->set_parent(locatedNode);
  149556           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  149557             :              }
  149558             : 
  149559           0 :           SgExpression* expression = isSgExpression(result);
  149560           0 :           if (isSgExpression(this) != NULL)
  149561             :              {
  149562           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  149563             : 
  149564             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  149565           0 :                if (operatorPosition != NULL)
  149566             :                   {
  149567             : #if 0
  149568             :                  // Debugging information
  149569             :                     if (operatorPosition->get_parent() == NULL)
  149570             :                        {
  149571             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149572             :                        }
  149573             : #endif
  149574           0 :                     operatorPosition->set_parent(expression);
  149575           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  149576             :                   }
  149577             :              }
  149578             :         }
  149579             : 
  149580             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  149581           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  149582           0 :      if (initializedName != NULL)
  149583             :         {
  149584             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  149585           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  149586           0 :           ROSE_ASSERT(start != NULL);
  149587             : #if 0
  149588             :        // Debugging information
  149589             :           if (start->get_parent() == NULL)
  149590             :              {
  149591             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149592             :              }
  149593             : #endif
  149594           0 :           start->set_parent(initializedName);
  149595           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  149596             : 
  149597             : #if 0
  149598             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  149599             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  149600             : 
  149601             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  149602             :        // ROSE_ASSERT(end != NULL);
  149603             :           if (end == NULL)
  149604             :              {
  149605             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  149606             :              }
  149607             :             else
  149608             :              {
  149609             :                if (end->get_parent() == NULL)
  149610             :                   {
  149611             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149612             :                   }
  149613             :                end->set_parent(initializedName);
  149614             :                ROSE_ASSERT(end->get_parent() != NULL);
  149615             :              }
  149616             : #endif
  149617             :         }
  149618             : 
  149619             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  149620           0 :      help.insertCopiedNodePair(this,result);
  149621             : 
  149622             :   // printf ("End of copy SgRshiftOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  149623             : 
  149624             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  149625             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  149626           0 :      help.decrementDepth();
  149627             : 
  149628             :   // Test if this is the root of the copy!
  149629           0 :      if (help.get_depth() == 0)
  149630             :         {
  149631             :        // This is the original calling node.
  149632             : 
  149633             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  149634             :        // printf ("Calling SgRshiftOp::fixupCopy() (from root of AST being copied) \n");
  149635             : #if ALT_FIXUP_COPY
  149636             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  149637           0 :           fixupCopy_scopes (result,help);
  149638           0 :           fixupCopy_symbols (result,help);
  149639           0 :           fixupCopy_references (result,help);
  149640             : #else
  149641             :           fixupCopy(result,help);
  149642             : #endif
  149643             :        // Allow this to be called recursively, so accumulate the state.
  149644             :        // Also, clear the state in the SgCopyHelp object.
  149645             :        // help.clearState();
  149646             :         }
  149647             : 
  149648           0 :      return result;
  149649             :    }
  149650             : 
  149651             : 
  149652             : /* #line 149653 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  149653             : 
  149654             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149655             : 
  149656         130 : SgNode* SgPntrArrRefExp::copy ( SgCopyHelp& help) const
  149657             :    {
  149658         130 :      SgPntrArrRefExp* result = NULL;
  149659             : 
  149660             :   // printf ("Copy SgPntrArrRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  149661             : 
  149662             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  149663             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  149664             :   // The default value of the depth is 0, so after this call the depth is 1!
  149665         130 :      help.incrementDepth();
  149666             : 
  149667             : #if 0
  149668             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  149669             :   // but it is not generally true that things can only be copied once!
  149670             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  149671             :   // AstAttribute* existingAttribute = const_cast<SgPntrArrRefExp*>(this)->attribute["copied"];
  149672             :      bool previouslyCopied = const_cast<SgPntrArrRefExp*>(this)->attribute.exists("copied");
  149673             :      if (previouslyCopied == true)
  149674             :         {
  149675             :           this->get_file_info()->display("Called from copy SgPntrArrRefExp: debug");
  149676             :         }
  149677             :      ROSE_ASSERT(previouslyCopied == false);
  149678             : 
  149679             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  149680             :      AstAttribute* newAttribute = new AstAttribute();
  149681             :      ROSE_ASSERT(newAttribute != NULL);
  149682             : 
  149683             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  149684             :      const_cast<SgPntrArrRefExp*>(this)->attribute.add("copied",newAttribute);
  149685             : #endif
  149686             : 
  149687             :   // Copy data members from base classes
  149688             :   // Copy constructor parameter data member: startOfConstruct_copy
  149689             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  149690             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  149691         130 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  149692         130 :      if ( p_startOfConstruct != NULL ) 
  149693             :         { 
  149694         130 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  149695             :         } 
  149696             :        else 
  149697             :         { 
  149698             :           startOfConstruct_copy = NULL; 
  149699             :         } 
  149700             :   // Copy constructor parameter data member: lhs_operand_i_copy
  149701         130 :      SgExpression* lhs_operand_i_copy; 
  149702             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  149703         130 :           if (get_lhs_operand_i() != NULL) 
  149704             :              { 
  149705         130 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  149706             :              } 
  149707             :             else 
  149708             :              { 
  149709             :                lhs_operand_i_copy = NULL; 
  149710             :              } 
  149711             :   // Copy constructor parameter data member: rhs_operand_i_copy
  149712         130 :      SgExpression* rhs_operand_i_copy; 
  149713             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  149714         130 :           if (get_rhs_operand_i() != NULL) 
  149715             :              { 
  149716         130 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  149717             :              } 
  149718             :             else 
  149719             :              { 
  149720             :                rhs_operand_i_copy = NULL; 
  149721             :              } 
  149722             :   // Copy constructor parameter data member: expression_type_copy
  149723             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  149724             :   // case: toBeCopied == COPY_DATA for expression_type
  149725         130 :      SgType* expression_type_copy = p_expression_type; 
  149726             :  
  149727             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149728             : 
  149729             :   // Build an empty copy of this object (will be filled in, but 
  149730             :   // the parent can't be set and must be set by the caller)
  149731         130 :      result = new SgPntrArrRefExp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  149732         130 :      ROSE_ASSERT(result != NULL);
  149733             : 
  149734             :   // Copy data members of "this" class
  149735             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  149736             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  149737             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  149738         130 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  149739         130 :      if ( p_endOfConstruct != NULL ) 
  149740             :         { 
  149741         130 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  149742             :         } 
  149743             :        else 
  149744             :         { 
  149745             :           endOfConstruct_copy = NULL; 
  149746             :         } 
  149747             :   /* check for a valid pointer and delete if present */ 
  149748         130 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  149749             :   /* add assignment to result here */ 
  149750         130 :      result->p_endOfConstruct = endOfConstruct_copy; 
  149751             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  149752             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  149753             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  149754         130 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  149755         130 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  149756             :         { 
  149757           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  149758             :         } 
  149759             :        else 
  149760             :         { 
  149761             :           attachedPreprocessingInfoPtr_copy = NULL; 
  149762             :         } 
  149763             :   /* check for a valid pointer and delete if present */ 
  149764         130 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  149765             :   /* add assignment to result here */ 
  149766         130 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  149767             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  149768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  149769             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  149770         130 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  149771         130 :      if ( p_attributeMechanism != NULL ) 
  149772             :         { 
  149773           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  149774             :         } 
  149775             :        else 
  149776             :         { 
  149777             :           attributeMechanism_copy = NULL; 
  149778             :         } 
  149779             :   /* check for a valid pointer and delete if present */ 
  149780         130 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  149781             :   /* add assignment to result here */ 
  149782         130 :      result->p_attributeMechanism = attributeMechanism_copy; 
  149783             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  149784             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  149785             :   // case: toBeCopied == COPY_DATA for need_paren
  149786         130 :      bool need_paren_copy = p_need_paren; 
  149787         130 :      result->p_need_paren = need_paren_copy; 
  149788             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  149789             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  149790             :   // case: toBeCopied == COPY_DATA for lvalue
  149791         130 :      bool lvalue_copy = p_lvalue; 
  149792         130 :      result->p_lvalue = lvalue_copy; 
  149793             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  149794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  149795             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  149796         130 :      bool global_qualified_name_copy = p_global_qualified_name; 
  149797         130 :      result->p_global_qualified_name = global_qualified_name_copy; 
  149798             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  149799             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  149800             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  149801         130 :      Sg_File_Info* operatorPosition_copy = NULL; 
  149802         130 :      if ( p_operatorPosition != NULL ) 
  149803             :         { 
  149804         130 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  149805             :         } 
  149806             :        else 
  149807             :         { 
  149808             :           operatorPosition_copy = NULL; 
  149809             :         } 
  149810             :   /* check for a valid pointer and delete if present */ 
  149811         130 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  149812             :   /* add assignment to result here */ 
  149813         130 :      result->p_operatorPosition = operatorPosition_copy; 
  149814             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  149815             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  149816             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  149817         130 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  149818         130 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  149819             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  149820         130 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  149821             :              { 
  149822           0 :                lhs_operand_i_copy->set_parent(result); 
  149823             :              } 
  149824             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  149825         130 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  149826             :              { 
  149827           0 :                rhs_operand_i_copy->set_parent(result); 
  149828             :              } 
  149829             : 
  149830             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149831             : 
  149832             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  149833             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  149834             :   // fixupCopy(result,help);
  149835             : 
  149836             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  149837             :   // the Sg_File_Info objects that are built for the new IR nodes.
  149838         130 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  149839         130 :      if (locatedNode != NULL)
  149840             :         {
  149841             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  149842         130 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  149843         130 :           ROSE_ASSERT(start != NULL);
  149844             : #if 0
  149845             :        // Debugging information
  149846             :           if (start->get_parent() == NULL)
  149847             :              {
  149848             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149849             :              }
  149850             : #endif
  149851         130 :           start->set_parent(locatedNode);
  149852         130 :           ROSE_ASSERT(start->get_parent() != NULL);
  149853             : 
  149854         130 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  149855             : 
  149856             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  149857             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  149858             :        // ROSE_ASSERT(end != NULL);
  149859         130 :           if (end == NULL)
  149860             :              {
  149861           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  149862             :              }
  149863             :             else
  149864             :              {
  149865             : #if 0
  149866             :             // Debugging information
  149867             :                if (end->get_parent() == NULL)
  149868             :                   {
  149869             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149870             :                   }
  149871             : #endif
  149872         130 :                end->set_parent(locatedNode);
  149873         130 :                ROSE_ASSERT(end->get_parent() != NULL);
  149874             :              }
  149875             : 
  149876         130 :           SgExpression* expression = isSgExpression(result);
  149877         130 :           if (isSgExpression(this) != NULL)
  149878             :              {
  149879         130 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  149880             : 
  149881             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  149882         130 :                if (operatorPosition != NULL)
  149883             :                   {
  149884             : #if 0
  149885             :                  // Debugging information
  149886             :                     if (operatorPosition->get_parent() == NULL)
  149887             :                        {
  149888             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149889             :                        }
  149890             : #endif
  149891         130 :                     operatorPosition->set_parent(expression);
  149892         130 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  149893             :                   }
  149894             :              }
  149895             :         }
  149896             : 
  149897             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  149898         130 :      SgInitializedName* initializedName = isSgInitializedName(result);
  149899         130 :      if (initializedName != NULL)
  149900             :         {
  149901             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  149902           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  149903           0 :           ROSE_ASSERT(start != NULL);
  149904             : #if 0
  149905             :        // Debugging information
  149906             :           if (start->get_parent() == NULL)
  149907             :              {
  149908             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149909             :              }
  149910             : #endif
  149911           0 :           start->set_parent(initializedName);
  149912           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  149913             : 
  149914             : #if 0
  149915             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  149916             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  149917             : 
  149918             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  149919             :        // ROSE_ASSERT(end != NULL);
  149920             :           if (end == NULL)
  149921             :              {
  149922             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  149923             :              }
  149924             :             else
  149925             :              {
  149926             :                if (end->get_parent() == NULL)
  149927             :                   {
  149928             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  149929             :                   }
  149930             :                end->set_parent(initializedName);
  149931             :                ROSE_ASSERT(end->get_parent() != NULL);
  149932             :              }
  149933             : #endif
  149934             :         }
  149935             : 
  149936             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  149937         130 :      help.insertCopiedNodePair(this,result);
  149938             : 
  149939             :   // printf ("End of copy SgPntrArrRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  149940             : 
  149941             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  149942             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  149943         130 :      help.decrementDepth();
  149944             : 
  149945             :   // Test if this is the root of the copy!
  149946         130 :      if (help.get_depth() == 0)
  149947             :         {
  149948             :        // This is the original calling node.
  149949             : 
  149950             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  149951             :        // printf ("Calling SgPntrArrRefExp::fixupCopy() (from root of AST being copied) \n");
  149952             : #if ALT_FIXUP_COPY
  149953             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  149954           0 :           fixupCopy_scopes (result,help);
  149955           0 :           fixupCopy_symbols (result,help);
  149956           0 :           fixupCopy_references (result,help);
  149957             : #else
  149958             :           fixupCopy(result,help);
  149959             : #endif
  149960             :        // Allow this to be called recursively, so accumulate the state.
  149961             :        // Also, clear the state in the SgCopyHelp object.
  149962             :        // help.clearState();
  149963             :         }
  149964             : 
  149965         130 :      return result;
  149966             :    }
  149967             : 
  149968             : 
  149969             : /* #line 149970 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  149970             : 
  149971             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  149972             : 
  149973           0 : SgNode* SgScopeOp::copy ( SgCopyHelp& help) const
  149974             :    {
  149975           0 :      SgScopeOp* result = NULL;
  149976             : 
  149977             :   // printf ("Copy SgScopeOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  149978             : 
  149979             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  149980             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  149981             :   // The default value of the depth is 0, so after this call the depth is 1!
  149982           0 :      help.incrementDepth();
  149983             : 
  149984             : #if 0
  149985             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  149986             :   // but it is not generally true that things can only be copied once!
  149987             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  149988             :   // AstAttribute* existingAttribute = const_cast<SgScopeOp*>(this)->attribute["copied"];
  149989             :      bool previouslyCopied = const_cast<SgScopeOp*>(this)->attribute.exists("copied");
  149990             :      if (previouslyCopied == true)
  149991             :         {
  149992             :           this->get_file_info()->display("Called from copy SgScopeOp: debug");
  149993             :         }
  149994             :      ROSE_ASSERT(previouslyCopied == false);
  149995             : 
  149996             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  149997             :      AstAttribute* newAttribute = new AstAttribute();
  149998             :      ROSE_ASSERT(newAttribute != NULL);
  149999             : 
  150000             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  150001             :      const_cast<SgScopeOp*>(this)->attribute.add("copied",newAttribute);
  150002             : #endif
  150003             : 
  150004             :   // Copy data members from base classes
  150005             :   // Copy constructor parameter data member: startOfConstruct_copy
  150006             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  150007             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  150008           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  150009           0 :      if ( p_startOfConstruct != NULL ) 
  150010             :         { 
  150011           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  150012             :         } 
  150013             :        else 
  150014             :         { 
  150015             :           startOfConstruct_copy = NULL; 
  150016             :         } 
  150017             :   // Copy constructor parameter data member: lhs_operand_i_copy
  150018           0 :      SgExpression* lhs_operand_i_copy; 
  150019             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  150020           0 :           if (get_lhs_operand_i() != NULL) 
  150021             :              { 
  150022           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  150023             :              } 
  150024             :             else 
  150025             :              { 
  150026             :                lhs_operand_i_copy = NULL; 
  150027             :              } 
  150028             :   // Copy constructor parameter data member: rhs_operand_i_copy
  150029           0 :      SgExpression* rhs_operand_i_copy; 
  150030             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  150031           0 :           if (get_rhs_operand_i() != NULL) 
  150032             :              { 
  150033           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  150034             :              } 
  150035             :             else 
  150036             :              { 
  150037             :                rhs_operand_i_copy = NULL; 
  150038             :              } 
  150039             :   // Copy constructor parameter data member: expression_type_copy
  150040             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  150041             :   // case: toBeCopied == COPY_DATA for expression_type
  150042           0 :      SgType* expression_type_copy = p_expression_type; 
  150043             :  
  150044             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150045             : 
  150046             :   // Build an empty copy of this object (will be filled in, but 
  150047             :   // the parent can't be set and must be set by the caller)
  150048           0 :      result = new SgScopeOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  150049           0 :      ROSE_ASSERT(result != NULL);
  150050             : 
  150051             :   // Copy data members of "this" class
  150052             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  150053             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  150054             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  150055           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  150056           0 :      if ( p_endOfConstruct != NULL ) 
  150057             :         { 
  150058           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  150059             :         } 
  150060             :        else 
  150061             :         { 
  150062             :           endOfConstruct_copy = NULL; 
  150063             :         } 
  150064             :   /* check for a valid pointer and delete if present */ 
  150065           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  150066             :   /* add assignment to result here */ 
  150067           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  150068             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  150069             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  150070             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  150071           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  150072           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  150073             :         { 
  150074           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  150075             :         } 
  150076             :        else 
  150077             :         { 
  150078             :           attachedPreprocessingInfoPtr_copy = NULL; 
  150079             :         } 
  150080             :   /* check for a valid pointer and delete if present */ 
  150081           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  150082             :   /* add assignment to result here */ 
  150083           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  150084             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  150085             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  150086             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  150087           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  150088           0 :      if ( p_attributeMechanism != NULL ) 
  150089             :         { 
  150090           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  150091             :         } 
  150092             :        else 
  150093             :         { 
  150094             :           attributeMechanism_copy = NULL; 
  150095             :         } 
  150096             :   /* check for a valid pointer and delete if present */ 
  150097           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  150098             :   /* add assignment to result here */ 
  150099           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  150100             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  150101             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  150102             :   // case: toBeCopied == COPY_DATA for need_paren
  150103           0 :      bool need_paren_copy = p_need_paren; 
  150104           0 :      result->p_need_paren = need_paren_copy; 
  150105             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  150106             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  150107             :   // case: toBeCopied == COPY_DATA for lvalue
  150108           0 :      bool lvalue_copy = p_lvalue; 
  150109           0 :      result->p_lvalue = lvalue_copy; 
  150110             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  150111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  150112             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  150113           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  150114           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  150115             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  150116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  150117             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  150118           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  150119           0 :      if ( p_operatorPosition != NULL ) 
  150120             :         { 
  150121           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  150122             :         } 
  150123             :        else 
  150124             :         { 
  150125             :           operatorPosition_copy = NULL; 
  150126             :         } 
  150127             :   /* check for a valid pointer and delete if present */ 
  150128           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  150129             :   /* add assignment to result here */ 
  150130           0 :      result->p_operatorPosition = operatorPosition_copy; 
  150131             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  150132             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  150133             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  150134           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  150135           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  150136             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  150137           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  150138             :              { 
  150139           0 :                lhs_operand_i_copy->set_parent(result); 
  150140             :              } 
  150141             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  150142           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  150143             :              { 
  150144           0 :                rhs_operand_i_copy->set_parent(result); 
  150145             :              } 
  150146             : 
  150147             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150148             : 
  150149             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  150150             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  150151             :   // fixupCopy(result,help);
  150152             : 
  150153             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  150154             :   // the Sg_File_Info objects that are built for the new IR nodes.
  150155           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  150156           0 :      if (locatedNode != NULL)
  150157             :         {
  150158             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  150159           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  150160           0 :           ROSE_ASSERT(start != NULL);
  150161             : #if 0
  150162             :        // Debugging information
  150163             :           if (start->get_parent() == NULL)
  150164             :              {
  150165             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150166             :              }
  150167             : #endif
  150168           0 :           start->set_parent(locatedNode);
  150169           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  150170             : 
  150171           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  150172             : 
  150173             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  150174             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  150175             :        // ROSE_ASSERT(end != NULL);
  150176           0 :           if (end == NULL)
  150177             :              {
  150178           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  150179             :              }
  150180             :             else
  150181             :              {
  150182             : #if 0
  150183             :             // Debugging information
  150184             :                if (end->get_parent() == NULL)
  150185             :                   {
  150186             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150187             :                   }
  150188             : #endif
  150189           0 :                end->set_parent(locatedNode);
  150190           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  150191             :              }
  150192             : 
  150193           0 :           SgExpression* expression = isSgExpression(result);
  150194           0 :           if (isSgExpression(this) != NULL)
  150195             :              {
  150196           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  150197             : 
  150198             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  150199           0 :                if (operatorPosition != NULL)
  150200             :                   {
  150201             : #if 0
  150202             :                  // Debugging information
  150203             :                     if (operatorPosition->get_parent() == NULL)
  150204             :                        {
  150205             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150206             :                        }
  150207             : #endif
  150208           0 :                     operatorPosition->set_parent(expression);
  150209           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  150210             :                   }
  150211             :              }
  150212             :         }
  150213             : 
  150214             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  150215           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  150216           0 :      if (initializedName != NULL)
  150217             :         {
  150218             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  150219           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  150220           0 :           ROSE_ASSERT(start != NULL);
  150221             : #if 0
  150222             :        // Debugging information
  150223             :           if (start->get_parent() == NULL)
  150224             :              {
  150225             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150226             :              }
  150227             : #endif
  150228           0 :           start->set_parent(initializedName);
  150229           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  150230             : 
  150231             : #if 0
  150232             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  150233             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  150234             : 
  150235             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  150236             :        // ROSE_ASSERT(end != NULL);
  150237             :           if (end == NULL)
  150238             :              {
  150239             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  150240             :              }
  150241             :             else
  150242             :              {
  150243             :                if (end->get_parent() == NULL)
  150244             :                   {
  150245             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150246             :                   }
  150247             :                end->set_parent(initializedName);
  150248             :                ROSE_ASSERT(end->get_parent() != NULL);
  150249             :              }
  150250             : #endif
  150251             :         }
  150252             : 
  150253             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  150254           0 :      help.insertCopiedNodePair(this,result);
  150255             : 
  150256             :   // printf ("End of copy SgScopeOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  150257             : 
  150258             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  150259             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  150260           0 :      help.decrementDepth();
  150261             : 
  150262             :   // Test if this is the root of the copy!
  150263           0 :      if (help.get_depth() == 0)
  150264             :         {
  150265             :        // This is the original calling node.
  150266             : 
  150267             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  150268             :        // printf ("Calling SgScopeOp::fixupCopy() (from root of AST being copied) \n");
  150269             : #if ALT_FIXUP_COPY
  150270             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  150271           0 :           fixupCopy_scopes (result,help);
  150272           0 :           fixupCopy_symbols (result,help);
  150273           0 :           fixupCopy_references (result,help);
  150274             : #else
  150275             :           fixupCopy(result,help);
  150276             : #endif
  150277             :        // Allow this to be called recursively, so accumulate the state.
  150278             :        // Also, clear the state in the SgCopyHelp object.
  150279             :        // help.clearState();
  150280             :         }
  150281             : 
  150282           0 :      return result;
  150283             :    }
  150284             : 
  150285             : 
  150286             : /* #line 150287 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  150287             : 
  150288             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150289             : 
  150290          17 : SgNode* SgAssignOp::copy ( SgCopyHelp& help) const
  150291             :    {
  150292          17 :      SgAssignOp* result = NULL;
  150293             : 
  150294             :   // printf ("Copy SgAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  150295             : 
  150296             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  150297             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  150298             :   // The default value of the depth is 0, so after this call the depth is 1!
  150299          17 :      help.incrementDepth();
  150300             : 
  150301             : #if 0
  150302             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  150303             :   // but it is not generally true that things can only be copied once!
  150304             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  150305             :   // AstAttribute* existingAttribute = const_cast<SgAssignOp*>(this)->attribute["copied"];
  150306             :      bool previouslyCopied = const_cast<SgAssignOp*>(this)->attribute.exists("copied");
  150307             :      if (previouslyCopied == true)
  150308             :         {
  150309             :           this->get_file_info()->display("Called from copy SgAssignOp: debug");
  150310             :         }
  150311             :      ROSE_ASSERT(previouslyCopied == false);
  150312             : 
  150313             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  150314             :      AstAttribute* newAttribute = new AstAttribute();
  150315             :      ROSE_ASSERT(newAttribute != NULL);
  150316             : 
  150317             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  150318             :      const_cast<SgAssignOp*>(this)->attribute.add("copied",newAttribute);
  150319             : #endif
  150320             : 
  150321             :   // Copy data members from base classes
  150322             :   // Copy constructor parameter data member: startOfConstruct_copy
  150323             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  150324             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  150325          17 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  150326          17 :      if ( p_startOfConstruct != NULL ) 
  150327             :         { 
  150328          17 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  150329             :         } 
  150330             :        else 
  150331             :         { 
  150332             :           startOfConstruct_copy = NULL; 
  150333             :         } 
  150334             :   // Copy constructor parameter data member: lhs_operand_i_copy
  150335          17 :      SgExpression* lhs_operand_i_copy; 
  150336             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  150337          17 :           if (get_lhs_operand_i() != NULL) 
  150338             :              { 
  150339          17 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  150340             :              } 
  150341             :             else 
  150342             :              { 
  150343             :                lhs_operand_i_copy = NULL; 
  150344             :              } 
  150345             :   // Copy constructor parameter data member: rhs_operand_i_copy
  150346          17 :      SgExpression* rhs_operand_i_copy; 
  150347             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  150348          17 :           if (get_rhs_operand_i() != NULL) 
  150349             :              { 
  150350          17 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  150351             :              } 
  150352             :             else 
  150353             :              { 
  150354             :                rhs_operand_i_copy = NULL; 
  150355             :              } 
  150356             :   // Copy constructor parameter data member: expression_type_copy
  150357             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  150358             :   // case: toBeCopied == COPY_DATA for expression_type
  150359          17 :      SgType* expression_type_copy = p_expression_type; 
  150360             :  
  150361             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150362             : 
  150363             :   // Build an empty copy of this object (will be filled in, but 
  150364             :   // the parent can't be set and must be set by the caller)
  150365          17 :      result = new SgAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  150366          17 :      ROSE_ASSERT(result != NULL);
  150367             : 
  150368             :   // Copy data members of "this" class
  150369             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  150370             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  150371             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  150372          17 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  150373          17 :      if ( p_endOfConstruct != NULL ) 
  150374             :         { 
  150375          17 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  150376             :         } 
  150377             :        else 
  150378             :         { 
  150379             :           endOfConstruct_copy = NULL; 
  150380             :         } 
  150381             :   /* check for a valid pointer and delete if present */ 
  150382          17 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  150383             :   /* add assignment to result here */ 
  150384          17 :      result->p_endOfConstruct = endOfConstruct_copy; 
  150385             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  150386             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  150387             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  150388          17 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  150389          17 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  150390             :         { 
  150391           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  150392             :         } 
  150393             :        else 
  150394             :         { 
  150395             :           attachedPreprocessingInfoPtr_copy = NULL; 
  150396             :         } 
  150397             :   /* check for a valid pointer and delete if present */ 
  150398          17 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  150399             :   /* add assignment to result here */ 
  150400          17 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  150401             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  150402             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  150403             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  150404          17 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  150405          17 :      if ( p_attributeMechanism != NULL ) 
  150406             :         { 
  150407           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  150408             :         } 
  150409             :        else 
  150410             :         { 
  150411             :           attributeMechanism_copy = NULL; 
  150412             :         } 
  150413             :   /* check for a valid pointer and delete if present */ 
  150414          17 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  150415             :   /* add assignment to result here */ 
  150416          17 :      result->p_attributeMechanism = attributeMechanism_copy; 
  150417             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  150418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  150419             :   // case: toBeCopied == COPY_DATA for need_paren
  150420          17 :      bool need_paren_copy = p_need_paren; 
  150421          17 :      result->p_need_paren = need_paren_copy; 
  150422             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  150423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  150424             :   // case: toBeCopied == COPY_DATA for lvalue
  150425          17 :      bool lvalue_copy = p_lvalue; 
  150426          17 :      result->p_lvalue = lvalue_copy; 
  150427             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  150428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  150429             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  150430          17 :      bool global_qualified_name_copy = p_global_qualified_name; 
  150431          17 :      result->p_global_qualified_name = global_qualified_name_copy; 
  150432             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  150433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  150434             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  150435          17 :      Sg_File_Info* operatorPosition_copy = NULL; 
  150436          17 :      if ( p_operatorPosition != NULL ) 
  150437             :         { 
  150438          17 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  150439             :         } 
  150440             :        else 
  150441             :         { 
  150442             :           operatorPosition_copy = NULL; 
  150443             :         } 
  150444             :   /* check for a valid pointer and delete if present */ 
  150445          17 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  150446             :   /* add assignment to result here */ 
  150447          17 :      result->p_operatorPosition = operatorPosition_copy; 
  150448             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  150449             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  150450             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  150451          17 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  150452          17 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  150453             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  150454          17 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  150455             :              { 
  150456           0 :                lhs_operand_i_copy->set_parent(result); 
  150457             :              } 
  150458             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  150459          17 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  150460             :              { 
  150461           0 :                rhs_operand_i_copy->set_parent(result); 
  150462             :              } 
  150463             : 
  150464             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150465             : 
  150466             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  150467             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  150468             :   // fixupCopy(result,help);
  150469             : 
  150470             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  150471             :   // the Sg_File_Info objects that are built for the new IR nodes.
  150472          17 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  150473          17 :      if (locatedNode != NULL)
  150474             :         {
  150475             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  150476          17 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  150477          17 :           ROSE_ASSERT(start != NULL);
  150478             : #if 0
  150479             :        // Debugging information
  150480             :           if (start->get_parent() == NULL)
  150481             :              {
  150482             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150483             :              }
  150484             : #endif
  150485          17 :           start->set_parent(locatedNode);
  150486          17 :           ROSE_ASSERT(start->get_parent() != NULL);
  150487             : 
  150488          17 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  150489             : 
  150490             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  150491             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  150492             :        // ROSE_ASSERT(end != NULL);
  150493          17 :           if (end == NULL)
  150494             :              {
  150495           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  150496             :              }
  150497             :             else
  150498             :              {
  150499             : #if 0
  150500             :             // Debugging information
  150501             :                if (end->get_parent() == NULL)
  150502             :                   {
  150503             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150504             :                   }
  150505             : #endif
  150506          17 :                end->set_parent(locatedNode);
  150507          17 :                ROSE_ASSERT(end->get_parent() != NULL);
  150508             :              }
  150509             : 
  150510          17 :           SgExpression* expression = isSgExpression(result);
  150511          17 :           if (isSgExpression(this) != NULL)
  150512             :              {
  150513          17 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  150514             : 
  150515             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  150516          17 :                if (operatorPosition != NULL)
  150517             :                   {
  150518             : #if 0
  150519             :                  // Debugging information
  150520             :                     if (operatorPosition->get_parent() == NULL)
  150521             :                        {
  150522             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150523             :                        }
  150524             : #endif
  150525          17 :                     operatorPosition->set_parent(expression);
  150526          17 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  150527             :                   }
  150528             :              }
  150529             :         }
  150530             : 
  150531             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  150532          17 :      SgInitializedName* initializedName = isSgInitializedName(result);
  150533          17 :      if (initializedName != NULL)
  150534             :         {
  150535             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  150536           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  150537           0 :           ROSE_ASSERT(start != NULL);
  150538             : #if 0
  150539             :        // Debugging information
  150540             :           if (start->get_parent() == NULL)
  150541             :              {
  150542             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150543             :              }
  150544             : #endif
  150545           0 :           start->set_parent(initializedName);
  150546           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  150547             : 
  150548             : #if 0
  150549             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  150550             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  150551             : 
  150552             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  150553             :        // ROSE_ASSERT(end != NULL);
  150554             :           if (end == NULL)
  150555             :              {
  150556             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  150557             :              }
  150558             :             else
  150559             :              {
  150560             :                if (end->get_parent() == NULL)
  150561             :                   {
  150562             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150563             :                   }
  150564             :                end->set_parent(initializedName);
  150565             :                ROSE_ASSERT(end->get_parent() != NULL);
  150566             :              }
  150567             : #endif
  150568             :         }
  150569             : 
  150570             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  150571          17 :      help.insertCopiedNodePair(this,result);
  150572             : 
  150573             :   // printf ("End of copy SgAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  150574             : 
  150575             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  150576             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  150577          17 :      help.decrementDepth();
  150578             : 
  150579             :   // Test if this is the root of the copy!
  150580          17 :      if (help.get_depth() == 0)
  150581             :         {
  150582             :        // This is the original calling node.
  150583             : 
  150584             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  150585             :        // printf ("Calling SgAssignOp::fixupCopy() (from root of AST being copied) \n");
  150586             : #if ALT_FIXUP_COPY
  150587             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  150588           0 :           fixupCopy_scopes (result,help);
  150589           0 :           fixupCopy_symbols (result,help);
  150590           0 :           fixupCopy_references (result,help);
  150591             : #else
  150592             :           fixupCopy(result,help);
  150593             : #endif
  150594             :        // Allow this to be called recursively, so accumulate the state.
  150595             :        // Also, clear the state in the SgCopyHelp object.
  150596             :        // help.clearState();
  150597             :         }
  150598             : 
  150599          17 :      return result;
  150600             :    }
  150601             : 
  150602             : 
  150603             : /* #line 150604 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  150604             : 
  150605             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150606             : 
  150607           0 : SgNode* SgExponentiationOp::copy ( SgCopyHelp& help) const
  150608             :    {
  150609           0 :      SgExponentiationOp* result = NULL;
  150610             : 
  150611             :   // printf ("Copy SgExponentiationOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  150612             : 
  150613             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  150614             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  150615             :   // The default value of the depth is 0, so after this call the depth is 1!
  150616           0 :      help.incrementDepth();
  150617             : 
  150618             : #if 0
  150619             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  150620             :   // but it is not generally true that things can only be copied once!
  150621             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  150622             :   // AstAttribute* existingAttribute = const_cast<SgExponentiationOp*>(this)->attribute["copied"];
  150623             :      bool previouslyCopied = const_cast<SgExponentiationOp*>(this)->attribute.exists("copied");
  150624             :      if (previouslyCopied == true)
  150625             :         {
  150626             :           this->get_file_info()->display("Called from copy SgExponentiationOp: debug");
  150627             :         }
  150628             :      ROSE_ASSERT(previouslyCopied == false);
  150629             : 
  150630             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  150631             :      AstAttribute* newAttribute = new AstAttribute();
  150632             :      ROSE_ASSERT(newAttribute != NULL);
  150633             : 
  150634             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  150635             :      const_cast<SgExponentiationOp*>(this)->attribute.add("copied",newAttribute);
  150636             : #endif
  150637             : 
  150638             :   // Copy data members from base classes
  150639             :   // Copy constructor parameter data member: startOfConstruct_copy
  150640             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  150641             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  150642           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  150643           0 :      if ( p_startOfConstruct != NULL ) 
  150644             :         { 
  150645           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  150646             :         } 
  150647             :        else 
  150648             :         { 
  150649             :           startOfConstruct_copy = NULL; 
  150650             :         } 
  150651             :   // Copy constructor parameter data member: lhs_operand_i_copy
  150652           0 :      SgExpression* lhs_operand_i_copy; 
  150653             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  150654           0 :           if (get_lhs_operand_i() != NULL) 
  150655             :              { 
  150656           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  150657             :              } 
  150658             :             else 
  150659             :              { 
  150660             :                lhs_operand_i_copy = NULL; 
  150661             :              } 
  150662             :   // Copy constructor parameter data member: rhs_operand_i_copy
  150663           0 :      SgExpression* rhs_operand_i_copy; 
  150664             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  150665           0 :           if (get_rhs_operand_i() != NULL) 
  150666             :              { 
  150667           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  150668             :              } 
  150669             :             else 
  150670             :              { 
  150671             :                rhs_operand_i_copy = NULL; 
  150672             :              } 
  150673             :   // Copy constructor parameter data member: expression_type_copy
  150674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  150675             :   // case: toBeCopied == COPY_DATA for expression_type
  150676           0 :      SgType* expression_type_copy = p_expression_type; 
  150677             :  
  150678             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150679             : 
  150680             :   // Build an empty copy of this object (will be filled in, but 
  150681             :   // the parent can't be set and must be set by the caller)
  150682           0 :      result = new SgExponentiationOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  150683           0 :      ROSE_ASSERT(result != NULL);
  150684             : 
  150685             :   // Copy data members of "this" class
  150686             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  150687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  150688             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  150689           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  150690           0 :      if ( p_endOfConstruct != NULL ) 
  150691             :         { 
  150692           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  150693             :         } 
  150694             :        else 
  150695             :         { 
  150696             :           endOfConstruct_copy = NULL; 
  150697             :         } 
  150698             :   /* check for a valid pointer and delete if present */ 
  150699           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  150700             :   /* add assignment to result here */ 
  150701           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  150702             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  150703             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  150704             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  150705           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  150706           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  150707             :         { 
  150708           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  150709             :         } 
  150710             :        else 
  150711             :         { 
  150712             :           attachedPreprocessingInfoPtr_copy = NULL; 
  150713             :         } 
  150714             :   /* check for a valid pointer and delete if present */ 
  150715           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  150716             :   /* add assignment to result here */ 
  150717           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  150718             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  150719             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  150720             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  150721           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  150722           0 :      if ( p_attributeMechanism != NULL ) 
  150723             :         { 
  150724           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  150725             :         } 
  150726             :        else 
  150727             :         { 
  150728             :           attributeMechanism_copy = NULL; 
  150729             :         } 
  150730             :   /* check for a valid pointer and delete if present */ 
  150731           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  150732             :   /* add assignment to result here */ 
  150733           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  150734             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  150735             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  150736             :   // case: toBeCopied == COPY_DATA for need_paren
  150737           0 :      bool need_paren_copy = p_need_paren; 
  150738           0 :      result->p_need_paren = need_paren_copy; 
  150739             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  150740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  150741             :   // case: toBeCopied == COPY_DATA for lvalue
  150742           0 :      bool lvalue_copy = p_lvalue; 
  150743           0 :      result->p_lvalue = lvalue_copy; 
  150744             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  150745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  150746             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  150747           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  150748           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  150749             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  150750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  150751             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  150752           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  150753           0 :      if ( p_operatorPosition != NULL ) 
  150754             :         { 
  150755           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  150756             :         } 
  150757             :        else 
  150758             :         { 
  150759             :           operatorPosition_copy = NULL; 
  150760             :         } 
  150761             :   /* check for a valid pointer and delete if present */ 
  150762           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  150763             :   /* add assignment to result here */ 
  150764           0 :      result->p_operatorPosition = operatorPosition_copy; 
  150765             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  150766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  150767             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  150768           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  150769           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  150770             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  150771           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  150772             :              { 
  150773           0 :                lhs_operand_i_copy->set_parent(result); 
  150774             :              } 
  150775             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  150776           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  150777             :              { 
  150778           0 :                rhs_operand_i_copy->set_parent(result); 
  150779             :              } 
  150780             : 
  150781             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150782             : 
  150783             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  150784             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  150785             :   // fixupCopy(result,help);
  150786             : 
  150787             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  150788             :   // the Sg_File_Info objects that are built for the new IR nodes.
  150789           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  150790           0 :      if (locatedNode != NULL)
  150791             :         {
  150792             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  150793           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  150794           0 :           ROSE_ASSERT(start != NULL);
  150795             : #if 0
  150796             :        // Debugging information
  150797             :           if (start->get_parent() == NULL)
  150798             :              {
  150799             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150800             :              }
  150801             : #endif
  150802           0 :           start->set_parent(locatedNode);
  150803           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  150804             : 
  150805           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  150806             : 
  150807             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  150808             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  150809             :        // ROSE_ASSERT(end != NULL);
  150810           0 :           if (end == NULL)
  150811             :              {
  150812           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  150813             :              }
  150814             :             else
  150815             :              {
  150816             : #if 0
  150817             :             // Debugging information
  150818             :                if (end->get_parent() == NULL)
  150819             :                   {
  150820             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150821             :                   }
  150822             : #endif
  150823           0 :                end->set_parent(locatedNode);
  150824           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  150825             :              }
  150826             : 
  150827           0 :           SgExpression* expression = isSgExpression(result);
  150828           0 :           if (isSgExpression(this) != NULL)
  150829             :              {
  150830           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  150831             : 
  150832             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  150833           0 :                if (operatorPosition != NULL)
  150834             :                   {
  150835             : #if 0
  150836             :                  // Debugging information
  150837             :                     if (operatorPosition->get_parent() == NULL)
  150838             :                        {
  150839             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150840             :                        }
  150841             : #endif
  150842           0 :                     operatorPosition->set_parent(expression);
  150843           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  150844             :                   }
  150845             :              }
  150846             :         }
  150847             : 
  150848             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  150849           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  150850           0 :      if (initializedName != NULL)
  150851             :         {
  150852             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  150853           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  150854           0 :           ROSE_ASSERT(start != NULL);
  150855             : #if 0
  150856             :        // Debugging information
  150857             :           if (start->get_parent() == NULL)
  150858             :              {
  150859             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150860             :              }
  150861             : #endif
  150862           0 :           start->set_parent(initializedName);
  150863           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  150864             : 
  150865             : #if 0
  150866             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  150867             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  150868             : 
  150869             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  150870             :        // ROSE_ASSERT(end != NULL);
  150871             :           if (end == NULL)
  150872             :              {
  150873             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  150874             :              }
  150875             :             else
  150876             :              {
  150877             :                if (end->get_parent() == NULL)
  150878             :                   {
  150879             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  150880             :                   }
  150881             :                end->set_parent(initializedName);
  150882             :                ROSE_ASSERT(end->get_parent() != NULL);
  150883             :              }
  150884             : #endif
  150885             :         }
  150886             : 
  150887             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  150888           0 :      help.insertCopiedNodePair(this,result);
  150889             : 
  150890             :   // printf ("End of copy SgExponentiationOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  150891             : 
  150892             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  150893             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  150894           0 :      help.decrementDepth();
  150895             : 
  150896             :   // Test if this is the root of the copy!
  150897           0 :      if (help.get_depth() == 0)
  150898             :         {
  150899             :        // This is the original calling node.
  150900             : 
  150901             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  150902             :        // printf ("Calling SgExponentiationOp::fixupCopy() (from root of AST being copied) \n");
  150903             : #if ALT_FIXUP_COPY
  150904             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  150905           0 :           fixupCopy_scopes (result,help);
  150906           0 :           fixupCopy_symbols (result,help);
  150907           0 :           fixupCopy_references (result,help);
  150908             : #else
  150909             :           fixupCopy(result,help);
  150910             : #endif
  150911             :        // Allow this to be called recursively, so accumulate the state.
  150912             :        // Also, clear the state in the SgCopyHelp object.
  150913             :        // help.clearState();
  150914             :         }
  150915             : 
  150916           0 :      return result;
  150917             :    }
  150918             : 
  150919             : 
  150920             : /* #line 150921 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  150921             : 
  150922             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150923             : 
  150924           0 : SgNode* SgConcatenationOp::copy ( SgCopyHelp& help) const
  150925             :    {
  150926           0 :      SgConcatenationOp* result = NULL;
  150927             : 
  150928             :   // printf ("Copy SgConcatenationOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  150929             : 
  150930             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  150931             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  150932             :   // The default value of the depth is 0, so after this call the depth is 1!
  150933           0 :      help.incrementDepth();
  150934             : 
  150935             : #if 0
  150936             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  150937             :   // but it is not generally true that things can only be copied once!
  150938             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  150939             :   // AstAttribute* existingAttribute = const_cast<SgConcatenationOp*>(this)->attribute["copied"];
  150940             :      bool previouslyCopied = const_cast<SgConcatenationOp*>(this)->attribute.exists("copied");
  150941             :      if (previouslyCopied == true)
  150942             :         {
  150943             :           this->get_file_info()->display("Called from copy SgConcatenationOp: debug");
  150944             :         }
  150945             :      ROSE_ASSERT(previouslyCopied == false);
  150946             : 
  150947             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  150948             :      AstAttribute* newAttribute = new AstAttribute();
  150949             :      ROSE_ASSERT(newAttribute != NULL);
  150950             : 
  150951             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  150952             :      const_cast<SgConcatenationOp*>(this)->attribute.add("copied",newAttribute);
  150953             : #endif
  150954             : 
  150955             :   // Copy data members from base classes
  150956             :   // Copy constructor parameter data member: startOfConstruct_copy
  150957             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  150958             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  150959           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  150960           0 :      if ( p_startOfConstruct != NULL ) 
  150961             :         { 
  150962           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  150963             :         } 
  150964             :        else 
  150965             :         { 
  150966             :           startOfConstruct_copy = NULL; 
  150967             :         } 
  150968             :   // Copy constructor parameter data member: lhs_operand_i_copy
  150969           0 :      SgExpression* lhs_operand_i_copy; 
  150970             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  150971           0 :           if (get_lhs_operand_i() != NULL) 
  150972             :              { 
  150973           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  150974             :              } 
  150975             :             else 
  150976             :              { 
  150977             :                lhs_operand_i_copy = NULL; 
  150978             :              } 
  150979             :   // Copy constructor parameter data member: rhs_operand_i_copy
  150980           0 :      SgExpression* rhs_operand_i_copy; 
  150981             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  150982           0 :           if (get_rhs_operand_i() != NULL) 
  150983             :              { 
  150984           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  150985             :              } 
  150986             :             else 
  150987             :              { 
  150988             :                rhs_operand_i_copy = NULL; 
  150989             :              } 
  150990             :   // Copy constructor parameter data member: expression_type_copy
  150991             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  150992             :   // case: toBeCopied == COPY_DATA for expression_type
  150993           0 :      SgType* expression_type_copy = p_expression_type; 
  150994             :  
  150995             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  150996             : 
  150997             :   // Build an empty copy of this object (will be filled in, but 
  150998             :   // the parent can't be set and must be set by the caller)
  150999           0 :      result = new SgConcatenationOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  151000           0 :      ROSE_ASSERT(result != NULL);
  151001             : 
  151002             :   // Copy data members of "this" class
  151003             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  151004             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  151005             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  151006           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  151007           0 :      if ( p_endOfConstruct != NULL ) 
  151008             :         { 
  151009           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  151010             :         } 
  151011             :        else 
  151012             :         { 
  151013             :           endOfConstruct_copy = NULL; 
  151014             :         } 
  151015             :   /* check for a valid pointer and delete if present */ 
  151016           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  151017             :   /* add assignment to result here */ 
  151018           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  151019             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  151020             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  151021             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  151022           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  151023           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  151024             :         { 
  151025           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  151026             :         } 
  151027             :        else 
  151028             :         { 
  151029             :           attachedPreprocessingInfoPtr_copy = NULL; 
  151030             :         } 
  151031             :   /* check for a valid pointer and delete if present */ 
  151032           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  151033             :   /* add assignment to result here */ 
  151034           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  151035             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  151036             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  151037             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  151038           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  151039           0 :      if ( p_attributeMechanism != NULL ) 
  151040             :         { 
  151041           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  151042             :         } 
  151043             :        else 
  151044             :         { 
  151045             :           attributeMechanism_copy = NULL; 
  151046             :         } 
  151047             :   /* check for a valid pointer and delete if present */ 
  151048           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  151049             :   /* add assignment to result here */ 
  151050           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  151051             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  151052             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  151053             :   // case: toBeCopied == COPY_DATA for need_paren
  151054           0 :      bool need_paren_copy = p_need_paren; 
  151055           0 :      result->p_need_paren = need_paren_copy; 
  151056             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  151057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  151058             :   // case: toBeCopied == COPY_DATA for lvalue
  151059           0 :      bool lvalue_copy = p_lvalue; 
  151060           0 :      result->p_lvalue = lvalue_copy; 
  151061             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  151062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  151063             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  151064           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  151065           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  151066             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  151067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  151068             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  151069           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  151070           0 :      if ( p_operatorPosition != NULL ) 
  151071             :         { 
  151072           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  151073             :         } 
  151074             :        else 
  151075             :         { 
  151076             :           operatorPosition_copy = NULL; 
  151077             :         } 
  151078             :   /* check for a valid pointer and delete if present */ 
  151079           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  151080             :   /* add assignment to result here */ 
  151081           0 :      result->p_operatorPosition = operatorPosition_copy; 
  151082             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  151083             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  151084             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  151085           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  151086           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  151087             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  151088           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  151089             :              { 
  151090           0 :                lhs_operand_i_copy->set_parent(result); 
  151091             :              } 
  151092             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  151093           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  151094             :              { 
  151095           0 :                rhs_operand_i_copy->set_parent(result); 
  151096             :              } 
  151097             : 
  151098             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  151099             : 
  151100             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  151101             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  151102             :   // fixupCopy(result,help);
  151103             : 
  151104             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  151105             :   // the Sg_File_Info objects that are built for the new IR nodes.
  151106           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  151107           0 :      if (locatedNode != NULL)
  151108             :         {
  151109             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  151110           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  151111           0 :           ROSE_ASSERT(start != NULL);
  151112             : #if 0
  151113             :        // Debugging information
  151114             :           if (start->get_parent() == NULL)
  151115             :              {
  151116             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151117             :              }
  151118             : #endif
  151119           0 :           start->set_parent(locatedNode);
  151120           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  151121             : 
  151122           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  151123             : 
  151124             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  151125             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  151126             :        // ROSE_ASSERT(end != NULL);
  151127           0 :           if (end == NULL)
  151128             :              {
  151129           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  151130             :              }
  151131             :             else
  151132             :              {
  151133             : #if 0
  151134             :             // Debugging information
  151135             :                if (end->get_parent() == NULL)
  151136             :                   {
  151137             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151138             :                   }
  151139             : #endif
  151140           0 :                end->set_parent(locatedNode);
  151141           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  151142             :              }
  151143             : 
  151144           0 :           SgExpression* expression = isSgExpression(result);
  151145           0 :           if (isSgExpression(this) != NULL)
  151146             :              {
  151147           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  151148             : 
  151149             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  151150           0 :                if (operatorPosition != NULL)
  151151             :                   {
  151152             : #if 0
  151153             :                  // Debugging information
  151154             :                     if (operatorPosition->get_parent() == NULL)
  151155             :                        {
  151156             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151157             :                        }
  151158             : #endif
  151159           0 :                     operatorPosition->set_parent(expression);
  151160           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  151161             :                   }
  151162             :              }
  151163             :         }
  151164             : 
  151165             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  151166           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  151167           0 :      if (initializedName != NULL)
  151168             :         {
  151169             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  151170           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  151171           0 :           ROSE_ASSERT(start != NULL);
  151172             : #if 0
  151173             :        // Debugging information
  151174             :           if (start->get_parent() == NULL)
  151175             :              {
  151176             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151177             :              }
  151178             : #endif
  151179           0 :           start->set_parent(initializedName);
  151180           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  151181             : 
  151182             : #if 0
  151183             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  151184             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  151185             : 
  151186             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  151187             :        // ROSE_ASSERT(end != NULL);
  151188             :           if (end == NULL)
  151189             :              {
  151190             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  151191             :              }
  151192             :             else
  151193             :              {
  151194             :                if (end->get_parent() == NULL)
  151195             :                   {
  151196             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151197             :                   }
  151198             :                end->set_parent(initializedName);
  151199             :                ROSE_ASSERT(end->get_parent() != NULL);
  151200             :              }
  151201             : #endif
  151202             :         }
  151203             : 
  151204             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  151205           0 :      help.insertCopiedNodePair(this,result);
  151206             : 
  151207             :   // printf ("End of copy SgConcatenationOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  151208             : 
  151209             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  151210             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  151211           0 :      help.decrementDepth();
  151212             : 
  151213             :   // Test if this is the root of the copy!
  151214           0 :      if (help.get_depth() == 0)
  151215             :         {
  151216             :        // This is the original calling node.
  151217             : 
  151218             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  151219             :        // printf ("Calling SgConcatenationOp::fixupCopy() (from root of AST being copied) \n");
  151220             : #if ALT_FIXUP_COPY
  151221             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  151222           0 :           fixupCopy_scopes (result,help);
  151223           0 :           fixupCopy_symbols (result,help);
  151224           0 :           fixupCopy_references (result,help);
  151225             : #else
  151226             :           fixupCopy(result,help);
  151227             : #endif
  151228             :        // Allow this to be called recursively, so accumulate the state.
  151229             :        // Also, clear the state in the SgCopyHelp object.
  151230             :        // help.clearState();
  151231             :         }
  151232             : 
  151233           0 :      return result;
  151234             :    }
  151235             : 
  151236             : 
  151237             : /* #line 151238 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  151238             : 
  151239             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  151240             : 
  151241           0 : SgNode* SgPointerAssignOp::copy ( SgCopyHelp& help) const
  151242             :    {
  151243           0 :      SgPointerAssignOp* result = NULL;
  151244             : 
  151245             :   // printf ("Copy SgPointerAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  151246             : 
  151247             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  151248             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  151249             :   // The default value of the depth is 0, so after this call the depth is 1!
  151250           0 :      help.incrementDepth();
  151251             : 
  151252             : #if 0
  151253             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  151254             :   // but it is not generally true that things can only be copied once!
  151255             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  151256             :   // AstAttribute* existingAttribute = const_cast<SgPointerAssignOp*>(this)->attribute["copied"];
  151257             :      bool previouslyCopied = const_cast<SgPointerAssignOp*>(this)->attribute.exists("copied");
  151258             :      if (previouslyCopied == true)
  151259             :         {
  151260             :           this->get_file_info()->display("Called from copy SgPointerAssignOp: debug");
  151261             :         }
  151262             :      ROSE_ASSERT(previouslyCopied == false);
  151263             : 
  151264             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  151265             :      AstAttribute* newAttribute = new AstAttribute();
  151266             :      ROSE_ASSERT(newAttribute != NULL);
  151267             : 
  151268             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  151269             :      const_cast<SgPointerAssignOp*>(this)->attribute.add("copied",newAttribute);
  151270             : #endif
  151271             : 
  151272             :   // Copy data members from base classes
  151273             :   // Copy constructor parameter data member: startOfConstruct_copy
  151274             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  151275             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  151276           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  151277           0 :      if ( p_startOfConstruct != NULL ) 
  151278             :         { 
  151279           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  151280             :         } 
  151281             :        else 
  151282             :         { 
  151283             :           startOfConstruct_copy = NULL; 
  151284             :         } 
  151285             :   // Copy constructor parameter data member: lhs_operand_i_copy
  151286           0 :      SgExpression* lhs_operand_i_copy; 
  151287             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  151288           0 :           if (get_lhs_operand_i() != NULL) 
  151289             :              { 
  151290           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  151291             :              } 
  151292             :             else 
  151293             :              { 
  151294             :                lhs_operand_i_copy = NULL; 
  151295             :              } 
  151296             :   // Copy constructor parameter data member: rhs_operand_i_copy
  151297           0 :      SgExpression* rhs_operand_i_copy; 
  151298             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  151299           0 :           if (get_rhs_operand_i() != NULL) 
  151300             :              { 
  151301           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  151302             :              } 
  151303             :             else 
  151304             :              { 
  151305             :                rhs_operand_i_copy = NULL; 
  151306             :              } 
  151307             :   // Copy constructor parameter data member: expression_type_copy
  151308             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  151309             :   // case: toBeCopied == COPY_DATA for expression_type
  151310           0 :      SgType* expression_type_copy = p_expression_type; 
  151311             :  
  151312             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  151313             : 
  151314             :   // Build an empty copy of this object (will be filled in, but 
  151315             :   // the parent can't be set and must be set by the caller)
  151316           0 :      result = new SgPointerAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  151317           0 :      ROSE_ASSERT(result != NULL);
  151318             : 
  151319             :   // Copy data members of "this" class
  151320             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  151321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  151322             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  151323           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  151324           0 :      if ( p_endOfConstruct != NULL ) 
  151325             :         { 
  151326           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  151327             :         } 
  151328             :        else 
  151329             :         { 
  151330             :           endOfConstruct_copy = NULL; 
  151331             :         } 
  151332             :   /* check for a valid pointer and delete if present */ 
  151333           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  151334             :   /* add assignment to result here */ 
  151335           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  151336             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  151337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  151338             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  151339           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  151340           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  151341             :         { 
  151342           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  151343             :         } 
  151344             :        else 
  151345             :         { 
  151346             :           attachedPreprocessingInfoPtr_copy = NULL; 
  151347             :         } 
  151348             :   /* check for a valid pointer and delete if present */ 
  151349           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  151350             :   /* add assignment to result here */ 
  151351           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  151352             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  151353             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  151354             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  151355           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  151356           0 :      if ( p_attributeMechanism != NULL ) 
  151357             :         { 
  151358           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  151359             :         } 
  151360             :        else 
  151361             :         { 
  151362             :           attributeMechanism_copy = NULL; 
  151363             :         } 
  151364             :   /* check for a valid pointer and delete if present */ 
  151365           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  151366             :   /* add assignment to result here */ 
  151367           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  151368             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  151369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  151370             :   // case: toBeCopied == COPY_DATA for need_paren
  151371           0 :      bool need_paren_copy = p_need_paren; 
  151372           0 :      result->p_need_paren = need_paren_copy; 
  151373             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  151374             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  151375             :   // case: toBeCopied == COPY_DATA for lvalue
  151376           0 :      bool lvalue_copy = p_lvalue; 
  151377           0 :      result->p_lvalue = lvalue_copy; 
  151378             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  151379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  151380             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  151381           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  151382           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  151383             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  151384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  151385             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  151386           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  151387           0 :      if ( p_operatorPosition != NULL ) 
  151388             :         { 
  151389           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  151390             :         } 
  151391             :        else 
  151392             :         { 
  151393             :           operatorPosition_copy = NULL; 
  151394             :         } 
  151395             :   /* check for a valid pointer and delete if present */ 
  151396           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  151397             :   /* add assignment to result here */ 
  151398           0 :      result->p_operatorPosition = operatorPosition_copy; 
  151399             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  151400             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  151401             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  151402           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  151403           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  151404             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  151405           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  151406             :              { 
  151407           0 :                lhs_operand_i_copy->set_parent(result); 
  151408             :              } 
  151409             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  151410           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  151411             :              { 
  151412           0 :                rhs_operand_i_copy->set_parent(result); 
  151413             :              } 
  151414             : 
  151415             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  151416             : 
  151417             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  151418             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  151419             :   // fixupCopy(result,help);
  151420             : 
  151421             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  151422             :   // the Sg_File_Info objects that are built for the new IR nodes.
  151423           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  151424           0 :      if (locatedNode != NULL)
  151425             :         {
  151426             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  151427           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  151428           0 :           ROSE_ASSERT(start != NULL);
  151429             : #if 0
  151430             :        // Debugging information
  151431             :           if (start->get_parent() == NULL)
  151432             :              {
  151433             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151434             :              }
  151435             : #endif
  151436           0 :           start->set_parent(locatedNode);
  151437           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  151438             : 
  151439           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  151440             : 
  151441             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  151442             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  151443             :        // ROSE_ASSERT(end != NULL);
  151444           0 :           if (end == NULL)
  151445             :              {
  151446           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  151447             :              }
  151448             :             else
  151449             :              {
  151450             : #if 0
  151451             :             // Debugging information
  151452             :                if (end->get_parent() == NULL)
  151453             :                   {
  151454             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151455             :                   }
  151456             : #endif
  151457           0 :                end->set_parent(locatedNode);
  151458           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  151459             :              }
  151460             : 
  151461           0 :           SgExpression* expression = isSgExpression(result);
  151462           0 :           if (isSgExpression(this) != NULL)
  151463             :              {
  151464           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  151465             : 
  151466             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  151467           0 :                if (operatorPosition != NULL)
  151468             :                   {
  151469             : #if 0
  151470             :                  // Debugging information
  151471             :                     if (operatorPosition->get_parent() == NULL)
  151472             :                        {
  151473             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151474             :                        }
  151475             : #endif
  151476           0 :                     operatorPosition->set_parent(expression);
  151477           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  151478             :                   }
  151479             :              }
  151480             :         }
  151481             : 
  151482             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  151483           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  151484           0 :      if (initializedName != NULL)
  151485             :         {
  151486             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  151487           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  151488           0 :           ROSE_ASSERT(start != NULL);
  151489             : #if 0
  151490             :        // Debugging information
  151491             :           if (start->get_parent() == NULL)
  151492             :              {
  151493             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151494             :              }
  151495             : #endif
  151496           0 :           start->set_parent(initializedName);
  151497           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  151498             : 
  151499             : #if 0
  151500             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  151501             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  151502             : 
  151503             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  151504             :        // ROSE_ASSERT(end != NULL);
  151505             :           if (end == NULL)
  151506             :              {
  151507             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  151508             :              }
  151509             :             else
  151510             :              {
  151511             :                if (end->get_parent() == NULL)
  151512             :                   {
  151513             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151514             :                   }
  151515             :                end->set_parent(initializedName);
  151516             :                ROSE_ASSERT(end->get_parent() != NULL);
  151517             :              }
  151518             : #endif
  151519             :         }
  151520             : 
  151521             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  151522           0 :      help.insertCopiedNodePair(this,result);
  151523             : 
  151524             :   // printf ("End of copy SgPointerAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  151525             : 
  151526             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  151527             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  151528           0 :      help.decrementDepth();
  151529             : 
  151530             :   // Test if this is the root of the copy!
  151531           0 :      if (help.get_depth() == 0)
  151532             :         {
  151533             :        // This is the original calling node.
  151534             : 
  151535             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  151536             :        // printf ("Calling SgPointerAssignOp::fixupCopy() (from root of AST being copied) \n");
  151537             : #if ALT_FIXUP_COPY
  151538             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  151539           0 :           fixupCopy_scopes (result,help);
  151540           0 :           fixupCopy_symbols (result,help);
  151541           0 :           fixupCopy_references (result,help);
  151542             : #else
  151543             :           fixupCopy(result,help);
  151544             : #endif
  151545             :        // Allow this to be called recursively, so accumulate the state.
  151546             :        // Also, clear the state in the SgCopyHelp object.
  151547             :        // help.clearState();
  151548             :         }
  151549             : 
  151550           0 :      return result;
  151551             :    }
  151552             : 
  151553             : 
  151554             : /* #line 151555 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  151555             : 
  151556             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  151557             : 
  151558           0 : SgNode* SgUserDefinedBinaryOp::copy ( SgCopyHelp& help) const
  151559             :    {
  151560           0 :      SgUserDefinedBinaryOp* result = NULL;
  151561             : 
  151562             :   // printf ("Copy SgUserDefinedBinaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  151563             : 
  151564             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  151565             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  151566             :   // The default value of the depth is 0, so after this call the depth is 1!
  151567           0 :      help.incrementDepth();
  151568             : 
  151569             : #if 0
  151570             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  151571             :   // but it is not generally true that things can only be copied once!
  151572             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  151573             :   // AstAttribute* existingAttribute = const_cast<SgUserDefinedBinaryOp*>(this)->attribute["copied"];
  151574             :      bool previouslyCopied = const_cast<SgUserDefinedBinaryOp*>(this)->attribute.exists("copied");
  151575             :      if (previouslyCopied == true)
  151576             :         {
  151577             :           this->get_file_info()->display("Called from copy SgUserDefinedBinaryOp: debug");
  151578             :         }
  151579             :      ROSE_ASSERT(previouslyCopied == false);
  151580             : 
  151581             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  151582             :      AstAttribute* newAttribute = new AstAttribute();
  151583             :      ROSE_ASSERT(newAttribute != NULL);
  151584             : 
  151585             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  151586             :      const_cast<SgUserDefinedBinaryOp*>(this)->attribute.add("copied",newAttribute);
  151587             : #endif
  151588             : 
  151589             :   // Copy data members from base classes
  151590             :   // Copy constructor parameter data member: startOfConstruct_copy
  151591             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  151592             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  151593           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  151594           0 :      if ( p_startOfConstruct != NULL ) 
  151595             :         { 
  151596           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  151597             :         } 
  151598             :        else 
  151599             :         { 
  151600             :           startOfConstruct_copy = NULL; 
  151601             :         } 
  151602             :   // Copy constructor parameter data member: lhs_operand_i_copy
  151603           0 :      SgExpression* lhs_operand_i_copy; 
  151604             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  151605           0 :           if (get_lhs_operand_i() != NULL) 
  151606             :              { 
  151607           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  151608             :              } 
  151609             :             else 
  151610             :              { 
  151611             :                lhs_operand_i_copy = NULL; 
  151612             :              } 
  151613             :   // Copy constructor parameter data member: rhs_operand_i_copy
  151614           0 :      SgExpression* rhs_operand_i_copy; 
  151615             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  151616           0 :           if (get_rhs_operand_i() != NULL) 
  151617             :              { 
  151618           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  151619             :              } 
  151620             :             else 
  151621             :              { 
  151622             :                rhs_operand_i_copy = NULL; 
  151623             :              } 
  151624             :   // Copy constructor parameter data member: expression_type_copy
  151625             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  151626             :   // case: toBeCopied == COPY_DATA for expression_type
  151627           0 :      SgType* expression_type_copy = p_expression_type; 
  151628             :   // Copy constructor parameter data member: operator_name_copy
  151629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operator_name
  151630             :   // case: toBeCopied == COPY_DATA for operator_name
  151631           0 :      SgName operator_name_copy = p_operator_name; 
  151632             :   // Copy constructor parameter data member: symbol_copy
  151633             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol
  151634             :   // case: toBeCopied == COPY_DATA for symbol
  151635           0 :      SgFunctionSymbol* symbol_copy = p_symbol; 
  151636             :  
  151637             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  151638             : 
  151639             :   // Build an empty copy of this object (will be filled in, but 
  151640             :   // the parent can't be set and must be set by the caller)
  151641           0 :      result = new SgUserDefinedBinaryOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy, operator_name_copy, symbol_copy );
  151642           0 :      ROSE_ASSERT(result != NULL);
  151643             : 
  151644             :   // Copy data members of "this" class
  151645             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  151646             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  151647             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  151648           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  151649           0 :      if ( p_endOfConstruct != NULL ) 
  151650             :         { 
  151651           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  151652             :         } 
  151653             :        else 
  151654             :         { 
  151655             :           endOfConstruct_copy = NULL; 
  151656             :         } 
  151657             :   /* check for a valid pointer and delete if present */ 
  151658           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  151659             :   /* add assignment to result here */ 
  151660           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  151661             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  151662             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  151663             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  151664           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  151665           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  151666             :         { 
  151667           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  151668             :         } 
  151669             :        else 
  151670             :         { 
  151671             :           attachedPreprocessingInfoPtr_copy = NULL; 
  151672             :         } 
  151673             :   /* check for a valid pointer and delete if present */ 
  151674           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  151675             :   /* add assignment to result here */ 
  151676           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  151677             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  151678             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  151679             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  151680           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  151681           0 :      if ( p_attributeMechanism != NULL ) 
  151682             :         { 
  151683           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  151684             :         } 
  151685             :        else 
  151686             :         { 
  151687             :           attributeMechanism_copy = NULL; 
  151688             :         } 
  151689             :   /* check for a valid pointer and delete if present */ 
  151690           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  151691             :   /* add assignment to result here */ 
  151692           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  151693             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  151694             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  151695             :   // case: toBeCopied == COPY_DATA for need_paren
  151696           0 :      bool need_paren_copy = p_need_paren; 
  151697           0 :      result->p_need_paren = need_paren_copy; 
  151698             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  151699             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  151700             :   // case: toBeCopied == COPY_DATA for lvalue
  151701           0 :      bool lvalue_copy = p_lvalue; 
  151702           0 :      result->p_lvalue = lvalue_copy; 
  151703             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  151704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  151705             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  151706           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  151707           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  151708             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  151709             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  151710             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  151711           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  151712           0 :      if ( p_operatorPosition != NULL ) 
  151713             :         { 
  151714           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  151715             :         } 
  151716             :        else 
  151717             :         { 
  151718             :           operatorPosition_copy = NULL; 
  151719             :         } 
  151720             :   /* check for a valid pointer and delete if present */ 
  151721           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  151722             :   /* add assignment to result here */ 
  151723           0 :      result->p_operatorPosition = operatorPosition_copy; 
  151724             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  151725             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  151726             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  151727           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  151728           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  151729             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  151730           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  151731             :              { 
  151732           0 :                lhs_operand_i_copy->set_parent(result); 
  151733             :              } 
  151734             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  151735           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  151736             :              { 
  151737           0 :                rhs_operand_i_copy->set_parent(result); 
  151738             :              } 
  151739             : 
  151740             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  151741             : 
  151742             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  151743             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  151744             :   // fixupCopy(result,help);
  151745             : 
  151746             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  151747             :   // the Sg_File_Info objects that are built for the new IR nodes.
  151748           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  151749           0 :      if (locatedNode != NULL)
  151750             :         {
  151751             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  151752           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  151753           0 :           ROSE_ASSERT(start != NULL);
  151754             : #if 0
  151755             :        // Debugging information
  151756             :           if (start->get_parent() == NULL)
  151757             :              {
  151758             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151759             :              }
  151760             : #endif
  151761           0 :           start->set_parent(locatedNode);
  151762           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  151763             : 
  151764           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  151765             : 
  151766             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  151767             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  151768             :        // ROSE_ASSERT(end != NULL);
  151769           0 :           if (end == NULL)
  151770             :              {
  151771           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  151772             :              }
  151773             :             else
  151774             :              {
  151775             : #if 0
  151776             :             // Debugging information
  151777             :                if (end->get_parent() == NULL)
  151778             :                   {
  151779             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151780             :                   }
  151781             : #endif
  151782           0 :                end->set_parent(locatedNode);
  151783           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  151784             :              }
  151785             : 
  151786           0 :           SgExpression* expression = isSgExpression(result);
  151787           0 :           if (isSgExpression(this) != NULL)
  151788             :              {
  151789           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  151790             : 
  151791             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  151792           0 :                if (operatorPosition != NULL)
  151793             :                   {
  151794             : #if 0
  151795             :                  // Debugging information
  151796             :                     if (operatorPosition->get_parent() == NULL)
  151797             :                        {
  151798             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151799             :                        }
  151800             : #endif
  151801           0 :                     operatorPosition->set_parent(expression);
  151802           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  151803             :                   }
  151804             :              }
  151805             :         }
  151806             : 
  151807             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  151808           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  151809           0 :      if (initializedName != NULL)
  151810             :         {
  151811             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  151812           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  151813           0 :           ROSE_ASSERT(start != NULL);
  151814             : #if 0
  151815             :        // Debugging information
  151816             :           if (start->get_parent() == NULL)
  151817             :              {
  151818             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151819             :              }
  151820             : #endif
  151821           0 :           start->set_parent(initializedName);
  151822           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  151823             : 
  151824             : #if 0
  151825             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  151826             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  151827             : 
  151828             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  151829             :        // ROSE_ASSERT(end != NULL);
  151830             :           if (end == NULL)
  151831             :              {
  151832             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  151833             :              }
  151834             :             else
  151835             :              {
  151836             :                if (end->get_parent() == NULL)
  151837             :                   {
  151838             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  151839             :                   }
  151840             :                end->set_parent(initializedName);
  151841             :                ROSE_ASSERT(end->get_parent() != NULL);
  151842             :              }
  151843             : #endif
  151844             :         }
  151845             : 
  151846             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  151847           0 :      help.insertCopiedNodePair(this,result);
  151848             : 
  151849             :   // printf ("End of copy SgUserDefinedBinaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  151850             : 
  151851             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  151852             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  151853           0 :      help.decrementDepth();
  151854             : 
  151855             :   // Test if this is the root of the copy!
  151856           0 :      if (help.get_depth() == 0)
  151857             :         {
  151858             :        // This is the original calling node.
  151859             : 
  151860             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  151861             :        // printf ("Calling SgUserDefinedBinaryOp::fixupCopy() (from root of AST being copied) \n");
  151862             : #if ALT_FIXUP_COPY
  151863             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  151864           0 :           fixupCopy_scopes (result,help);
  151865           0 :           fixupCopy_symbols (result,help);
  151866           0 :           fixupCopy_references (result,help);
  151867             : #else
  151868             :           fixupCopy(result,help);
  151869             : #endif
  151870             :        // Allow this to be called recursively, so accumulate the state.
  151871             :        // Also, clear the state in the SgCopyHelp object.
  151872             :        // help.clearState();
  151873             :         }
  151874             : 
  151875           0 :      return result;
  151876             :    }
  151877             : 
  151878             : 
  151879             : /* #line 151880 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  151880             : 
  151881             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  151882             : 
  151883           0 : SgNode* SgCompoundAssignOp::copy ( SgCopyHelp& help) const
  151884             :    {
  151885           0 :      SgCompoundAssignOp* result = NULL;
  151886             : 
  151887             :   // printf ("Copy SgCompoundAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  151888             : 
  151889             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  151890             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  151891             :   // The default value of the depth is 0, so after this call the depth is 1!
  151892           0 :      help.incrementDepth();
  151893             : 
  151894             : #if 0
  151895             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  151896             :   // but it is not generally true that things can only be copied once!
  151897             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  151898             :   // AstAttribute* existingAttribute = const_cast<SgCompoundAssignOp*>(this)->attribute["copied"];
  151899             :      bool previouslyCopied = const_cast<SgCompoundAssignOp*>(this)->attribute.exists("copied");
  151900             :      if (previouslyCopied == true)
  151901             :         {
  151902             :           this->get_file_info()->display("Called from copy SgCompoundAssignOp: debug");
  151903             :         }
  151904             :      ROSE_ASSERT(previouslyCopied == false);
  151905             : 
  151906             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  151907             :      AstAttribute* newAttribute = new AstAttribute();
  151908             :      ROSE_ASSERT(newAttribute != NULL);
  151909             : 
  151910             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  151911             :      const_cast<SgCompoundAssignOp*>(this)->attribute.add("copied",newAttribute);
  151912             : #endif
  151913             : 
  151914             :   // Copy data members from base classes
  151915             :   // Copy constructor parameter data member: startOfConstruct_copy
  151916             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  151917             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  151918           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  151919           0 :      if ( p_startOfConstruct != NULL ) 
  151920             :         { 
  151921           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  151922             :         } 
  151923             :        else 
  151924             :         { 
  151925             :           startOfConstruct_copy = NULL; 
  151926             :         } 
  151927             :   // Copy constructor parameter data member: lhs_operand_i_copy
  151928           0 :      SgExpression* lhs_operand_i_copy; 
  151929             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  151930           0 :           if (get_lhs_operand_i() != NULL) 
  151931             :              { 
  151932           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  151933             :              } 
  151934             :             else 
  151935             :              { 
  151936             :                lhs_operand_i_copy = NULL; 
  151937             :              } 
  151938             :   // Copy constructor parameter data member: rhs_operand_i_copy
  151939           0 :      SgExpression* rhs_operand_i_copy; 
  151940             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  151941           0 :           if (get_rhs_operand_i() != NULL) 
  151942             :              { 
  151943           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  151944             :              } 
  151945             :             else 
  151946             :              { 
  151947             :                rhs_operand_i_copy = NULL; 
  151948             :              } 
  151949             :   // Copy constructor parameter data member: expression_type_copy
  151950             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  151951             :   // case: toBeCopied == COPY_DATA for expression_type
  151952           0 :      SgType* expression_type_copy = p_expression_type; 
  151953             :  
  151954             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  151955             : 
  151956             :   // Build an empty copy of this object (will be filled in, but 
  151957             :   // the parent can't be set and must be set by the caller)
  151958           0 :      result = new SgCompoundAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  151959           0 :      ROSE_ASSERT(result != NULL);
  151960             : 
  151961             :   // Copy data members of "this" class
  151962             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  151963             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  151964             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  151965           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  151966           0 :      if ( p_endOfConstruct != NULL ) 
  151967             :         { 
  151968           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  151969             :         } 
  151970             :        else 
  151971             :         { 
  151972             :           endOfConstruct_copy = NULL; 
  151973             :         } 
  151974             :   /* check for a valid pointer and delete if present */ 
  151975           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  151976             :   /* add assignment to result here */ 
  151977           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  151978             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  151979             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  151980             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  151981           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  151982           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  151983             :         { 
  151984           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  151985             :         } 
  151986             :        else 
  151987             :         { 
  151988             :           attachedPreprocessingInfoPtr_copy = NULL; 
  151989             :         } 
  151990             :   /* check for a valid pointer and delete if present */ 
  151991           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  151992             :   /* add assignment to result here */ 
  151993           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  151994             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  151995             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  151996             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  151997           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  151998           0 :      if ( p_attributeMechanism != NULL ) 
  151999             :         { 
  152000           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  152001             :         } 
  152002             :        else 
  152003             :         { 
  152004             :           attributeMechanism_copy = NULL; 
  152005             :         } 
  152006             :   /* check for a valid pointer and delete if present */ 
  152007           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  152008             :   /* add assignment to result here */ 
  152009           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  152010             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  152011             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  152012             :   // case: toBeCopied == COPY_DATA for need_paren
  152013           0 :      bool need_paren_copy = p_need_paren; 
  152014           0 :      result->p_need_paren = need_paren_copy; 
  152015             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  152016             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  152017             :   // case: toBeCopied == COPY_DATA for lvalue
  152018           0 :      bool lvalue_copy = p_lvalue; 
  152019           0 :      result->p_lvalue = lvalue_copy; 
  152020             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  152021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  152022             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  152023           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  152024           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  152025             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  152026             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  152027             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  152028           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  152029           0 :      if ( p_operatorPosition != NULL ) 
  152030             :         { 
  152031           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  152032             :         } 
  152033             :        else 
  152034             :         { 
  152035             :           operatorPosition_copy = NULL; 
  152036             :         } 
  152037             :   /* check for a valid pointer and delete if present */ 
  152038           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  152039             :   /* add assignment to result here */ 
  152040           0 :      result->p_operatorPosition = operatorPosition_copy; 
  152041             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  152042             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  152043             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  152044           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  152045           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  152046             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  152047           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  152048             :              { 
  152049           0 :                lhs_operand_i_copy->set_parent(result); 
  152050             :              } 
  152051             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  152052           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  152053             :              { 
  152054           0 :                rhs_operand_i_copy->set_parent(result); 
  152055             :              } 
  152056             : 
  152057             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  152058             : 
  152059             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  152060             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  152061             :   // fixupCopy(result,help);
  152062             : 
  152063             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  152064             :   // the Sg_File_Info objects that are built for the new IR nodes.
  152065           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  152066           0 :      if (locatedNode != NULL)
  152067             :         {
  152068             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  152069           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  152070           0 :           ROSE_ASSERT(start != NULL);
  152071             : #if 0
  152072             :        // Debugging information
  152073             :           if (start->get_parent() == NULL)
  152074             :              {
  152075             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152076             :              }
  152077             : #endif
  152078           0 :           start->set_parent(locatedNode);
  152079           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  152080             : 
  152081           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  152082             : 
  152083             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  152084             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  152085             :        // ROSE_ASSERT(end != NULL);
  152086           0 :           if (end == NULL)
  152087             :              {
  152088           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  152089             :              }
  152090             :             else
  152091             :              {
  152092             : #if 0
  152093             :             // Debugging information
  152094             :                if (end->get_parent() == NULL)
  152095             :                   {
  152096             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152097             :                   }
  152098             : #endif
  152099           0 :                end->set_parent(locatedNode);
  152100           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  152101             :              }
  152102             : 
  152103           0 :           SgExpression* expression = isSgExpression(result);
  152104           0 :           if (isSgExpression(this) != NULL)
  152105             :              {
  152106           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  152107             : 
  152108             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  152109           0 :                if (operatorPosition != NULL)
  152110             :                   {
  152111             : #if 0
  152112             :                  // Debugging information
  152113             :                     if (operatorPosition->get_parent() == NULL)
  152114             :                        {
  152115             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152116             :                        }
  152117             : #endif
  152118           0 :                     operatorPosition->set_parent(expression);
  152119           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  152120             :                   }
  152121             :              }
  152122             :         }
  152123             : 
  152124             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  152125           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  152126           0 :      if (initializedName != NULL)
  152127             :         {
  152128             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  152129           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  152130           0 :           ROSE_ASSERT(start != NULL);
  152131             : #if 0
  152132             :        // Debugging information
  152133             :           if (start->get_parent() == NULL)
  152134             :              {
  152135             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152136             :              }
  152137             : #endif
  152138           0 :           start->set_parent(initializedName);
  152139           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  152140             : 
  152141             : #if 0
  152142             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  152143             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  152144             : 
  152145             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  152146             :        // ROSE_ASSERT(end != NULL);
  152147             :           if (end == NULL)
  152148             :              {
  152149             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  152150             :              }
  152151             :             else
  152152             :              {
  152153             :                if (end->get_parent() == NULL)
  152154             :                   {
  152155             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152156             :                   }
  152157             :                end->set_parent(initializedName);
  152158             :                ROSE_ASSERT(end->get_parent() != NULL);
  152159             :              }
  152160             : #endif
  152161             :         }
  152162             : 
  152163             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  152164           0 :      help.insertCopiedNodePair(this,result);
  152165             : 
  152166             :   // printf ("End of copy SgCompoundAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  152167             : 
  152168             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  152169             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  152170           0 :      help.decrementDepth();
  152171             : 
  152172             :   // Test if this is the root of the copy!
  152173           0 :      if (help.get_depth() == 0)
  152174             :         {
  152175             :        // This is the original calling node.
  152176             : 
  152177             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  152178             :        // printf ("Calling SgCompoundAssignOp::fixupCopy() (from root of AST being copied) \n");
  152179             : #if ALT_FIXUP_COPY
  152180             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  152181           0 :           fixupCopy_scopes (result,help);
  152182           0 :           fixupCopy_symbols (result,help);
  152183           0 :           fixupCopy_references (result,help);
  152184             : #else
  152185             :           fixupCopy(result,help);
  152186             : #endif
  152187             :        // Allow this to be called recursively, so accumulate the state.
  152188             :        // Also, clear the state in the SgCopyHelp object.
  152189             :        // help.clearState();
  152190             :         }
  152191             : 
  152192           0 :      return result;
  152193             :    }
  152194             : 
  152195             : 
  152196             : /* #line 152197 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  152197             : 
  152198             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  152199             : 
  152200           2 : SgNode* SgPlusAssignOp::copy ( SgCopyHelp& help) const
  152201             :    {
  152202           2 :      SgPlusAssignOp* result = NULL;
  152203             : 
  152204             :   // printf ("Copy SgPlusAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  152205             : 
  152206             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  152207             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  152208             :   // The default value of the depth is 0, so after this call the depth is 1!
  152209           2 :      help.incrementDepth();
  152210             : 
  152211             : #if 0
  152212             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  152213             :   // but it is not generally true that things can only be copied once!
  152214             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  152215             :   // AstAttribute* existingAttribute = const_cast<SgPlusAssignOp*>(this)->attribute["copied"];
  152216             :      bool previouslyCopied = const_cast<SgPlusAssignOp*>(this)->attribute.exists("copied");
  152217             :      if (previouslyCopied == true)
  152218             :         {
  152219             :           this->get_file_info()->display("Called from copy SgPlusAssignOp: debug");
  152220             :         }
  152221             :      ROSE_ASSERT(previouslyCopied == false);
  152222             : 
  152223             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  152224             :      AstAttribute* newAttribute = new AstAttribute();
  152225             :      ROSE_ASSERT(newAttribute != NULL);
  152226             : 
  152227             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  152228             :      const_cast<SgPlusAssignOp*>(this)->attribute.add("copied",newAttribute);
  152229             : #endif
  152230             : 
  152231             :   // Copy data members from base classes
  152232             :   // Copy constructor parameter data member: startOfConstruct_copy
  152233             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  152234             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  152235           2 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  152236           2 :      if ( p_startOfConstruct != NULL ) 
  152237             :         { 
  152238           2 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  152239             :         } 
  152240             :        else 
  152241             :         { 
  152242             :           startOfConstruct_copy = NULL; 
  152243             :         } 
  152244             :   // Copy constructor parameter data member: lhs_operand_i_copy
  152245           2 :      SgExpression* lhs_operand_i_copy; 
  152246             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  152247           2 :           if (get_lhs_operand_i() != NULL) 
  152248             :              { 
  152249           2 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  152250             :              } 
  152251             :             else 
  152252             :              { 
  152253             :                lhs_operand_i_copy = NULL; 
  152254             :              } 
  152255             :   // Copy constructor parameter data member: rhs_operand_i_copy
  152256           2 :      SgExpression* rhs_operand_i_copy; 
  152257             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  152258           2 :           if (get_rhs_operand_i() != NULL) 
  152259             :              { 
  152260           2 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  152261             :              } 
  152262             :             else 
  152263             :              { 
  152264             :                rhs_operand_i_copy = NULL; 
  152265             :              } 
  152266             :   // Copy constructor parameter data member: expression_type_copy
  152267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  152268             :   // case: toBeCopied == COPY_DATA for expression_type
  152269           2 :      SgType* expression_type_copy = p_expression_type; 
  152270             :  
  152271             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  152272             : 
  152273             :   // Build an empty copy of this object (will be filled in, but 
  152274             :   // the parent can't be set and must be set by the caller)
  152275           2 :      result = new SgPlusAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  152276           2 :      ROSE_ASSERT(result != NULL);
  152277             : 
  152278             :   // Copy data members of "this" class
  152279             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  152280             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  152281             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  152282           2 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  152283           2 :      if ( p_endOfConstruct != NULL ) 
  152284             :         { 
  152285           2 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  152286             :         } 
  152287             :        else 
  152288             :         { 
  152289             :           endOfConstruct_copy = NULL; 
  152290             :         } 
  152291             :   /* check for a valid pointer and delete if present */ 
  152292           2 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  152293             :   /* add assignment to result here */ 
  152294           2 :      result->p_endOfConstruct = endOfConstruct_copy; 
  152295             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  152296             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  152297             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  152298           2 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  152299           2 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  152300             :         { 
  152301           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  152302             :         } 
  152303             :        else 
  152304             :         { 
  152305             :           attachedPreprocessingInfoPtr_copy = NULL; 
  152306             :         } 
  152307             :   /* check for a valid pointer and delete if present */ 
  152308           2 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  152309             :   /* add assignment to result here */ 
  152310           2 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  152311             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  152312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  152313             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  152314           2 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  152315           2 :      if ( p_attributeMechanism != NULL ) 
  152316             :         { 
  152317           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  152318             :         } 
  152319             :        else 
  152320             :         { 
  152321             :           attributeMechanism_copy = NULL; 
  152322             :         } 
  152323             :   /* check for a valid pointer and delete if present */ 
  152324           2 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  152325             :   /* add assignment to result here */ 
  152326           2 :      result->p_attributeMechanism = attributeMechanism_copy; 
  152327             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  152328             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  152329             :   // case: toBeCopied == COPY_DATA for need_paren
  152330           2 :      bool need_paren_copy = p_need_paren; 
  152331           2 :      result->p_need_paren = need_paren_copy; 
  152332             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  152333             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  152334             :   // case: toBeCopied == COPY_DATA for lvalue
  152335           2 :      bool lvalue_copy = p_lvalue; 
  152336           2 :      result->p_lvalue = lvalue_copy; 
  152337             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  152338             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  152339             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  152340           2 :      bool global_qualified_name_copy = p_global_qualified_name; 
  152341           2 :      result->p_global_qualified_name = global_qualified_name_copy; 
  152342             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  152343             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  152344             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  152345           2 :      Sg_File_Info* operatorPosition_copy = NULL; 
  152346           2 :      if ( p_operatorPosition != NULL ) 
  152347             :         { 
  152348           2 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  152349             :         } 
  152350             :        else 
  152351             :         { 
  152352             :           operatorPosition_copy = NULL; 
  152353             :         } 
  152354             :   /* check for a valid pointer and delete if present */ 
  152355           2 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  152356             :   /* add assignment to result here */ 
  152357           2 :      result->p_operatorPosition = operatorPosition_copy; 
  152358             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  152359             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  152360             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  152361           2 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  152362           2 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  152363             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  152364           2 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  152365             :              { 
  152366           0 :                lhs_operand_i_copy->set_parent(result); 
  152367             :              } 
  152368             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  152369           2 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  152370             :              { 
  152371           0 :                rhs_operand_i_copy->set_parent(result); 
  152372             :              } 
  152373             : 
  152374             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  152375             : 
  152376             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  152377             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  152378             :   // fixupCopy(result,help);
  152379             : 
  152380             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  152381             :   // the Sg_File_Info objects that are built for the new IR nodes.
  152382           2 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  152383           2 :      if (locatedNode != NULL)
  152384             :         {
  152385             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  152386           2 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  152387           2 :           ROSE_ASSERT(start != NULL);
  152388             : #if 0
  152389             :        // Debugging information
  152390             :           if (start->get_parent() == NULL)
  152391             :              {
  152392             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152393             :              }
  152394             : #endif
  152395           2 :           start->set_parent(locatedNode);
  152396           2 :           ROSE_ASSERT(start->get_parent() != NULL);
  152397             : 
  152398           2 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  152399             : 
  152400             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  152401             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  152402             :        // ROSE_ASSERT(end != NULL);
  152403           2 :           if (end == NULL)
  152404             :              {
  152405           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  152406             :              }
  152407             :             else
  152408             :              {
  152409             : #if 0
  152410             :             // Debugging information
  152411             :                if (end->get_parent() == NULL)
  152412             :                   {
  152413             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152414             :                   }
  152415             : #endif
  152416           2 :                end->set_parent(locatedNode);
  152417           2 :                ROSE_ASSERT(end->get_parent() != NULL);
  152418             :              }
  152419             : 
  152420           2 :           SgExpression* expression = isSgExpression(result);
  152421           2 :           if (isSgExpression(this) != NULL)
  152422             :              {
  152423           2 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  152424             : 
  152425             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  152426           2 :                if (operatorPosition != NULL)
  152427             :                   {
  152428             : #if 0
  152429             :                  // Debugging information
  152430             :                     if (operatorPosition->get_parent() == NULL)
  152431             :                        {
  152432             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152433             :                        }
  152434             : #endif
  152435           2 :                     operatorPosition->set_parent(expression);
  152436           2 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  152437             :                   }
  152438             :              }
  152439             :         }
  152440             : 
  152441             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  152442           2 :      SgInitializedName* initializedName = isSgInitializedName(result);
  152443           2 :      if (initializedName != NULL)
  152444             :         {
  152445             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  152446           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  152447           0 :           ROSE_ASSERT(start != NULL);
  152448             : #if 0
  152449             :        // Debugging information
  152450             :           if (start->get_parent() == NULL)
  152451             :              {
  152452             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152453             :              }
  152454             : #endif
  152455           0 :           start->set_parent(initializedName);
  152456           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  152457             : 
  152458             : #if 0
  152459             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  152460             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  152461             : 
  152462             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  152463             :        // ROSE_ASSERT(end != NULL);
  152464             :           if (end == NULL)
  152465             :              {
  152466             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  152467             :              }
  152468             :             else
  152469             :              {
  152470             :                if (end->get_parent() == NULL)
  152471             :                   {
  152472             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152473             :                   }
  152474             :                end->set_parent(initializedName);
  152475             :                ROSE_ASSERT(end->get_parent() != NULL);
  152476             :              }
  152477             : #endif
  152478             :         }
  152479             : 
  152480             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  152481           2 :      help.insertCopiedNodePair(this,result);
  152482             : 
  152483             :   // printf ("End of copy SgPlusAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  152484             : 
  152485             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  152486             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  152487           2 :      help.decrementDepth();
  152488             : 
  152489             :   // Test if this is the root of the copy!
  152490           2 :      if (help.get_depth() == 0)
  152491             :         {
  152492             :        // This is the original calling node.
  152493             : 
  152494             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  152495             :        // printf ("Calling SgPlusAssignOp::fixupCopy() (from root of AST being copied) \n");
  152496             : #if ALT_FIXUP_COPY
  152497             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  152498           0 :           fixupCopy_scopes (result,help);
  152499           0 :           fixupCopy_symbols (result,help);
  152500           0 :           fixupCopy_references (result,help);
  152501             : #else
  152502             :           fixupCopy(result,help);
  152503             : #endif
  152504             :        // Allow this to be called recursively, so accumulate the state.
  152505             :        // Also, clear the state in the SgCopyHelp object.
  152506             :        // help.clearState();
  152507             :         }
  152508             : 
  152509           2 :      return result;
  152510             :    }
  152511             : 
  152512             : 
  152513             : /* #line 152514 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  152514             : 
  152515             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  152516             : 
  152517           0 : SgNode* SgMinusAssignOp::copy ( SgCopyHelp& help) const
  152518             :    {
  152519           0 :      SgMinusAssignOp* result = NULL;
  152520             : 
  152521             :   // printf ("Copy SgMinusAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  152522             : 
  152523             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  152524             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  152525             :   // The default value of the depth is 0, so after this call the depth is 1!
  152526           0 :      help.incrementDepth();
  152527             : 
  152528             : #if 0
  152529             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  152530             :   // but it is not generally true that things can only be copied once!
  152531             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  152532             :   // AstAttribute* existingAttribute = const_cast<SgMinusAssignOp*>(this)->attribute["copied"];
  152533             :      bool previouslyCopied = const_cast<SgMinusAssignOp*>(this)->attribute.exists("copied");
  152534             :      if (previouslyCopied == true)
  152535             :         {
  152536             :           this->get_file_info()->display("Called from copy SgMinusAssignOp: debug");
  152537             :         }
  152538             :      ROSE_ASSERT(previouslyCopied == false);
  152539             : 
  152540             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  152541             :      AstAttribute* newAttribute = new AstAttribute();
  152542             :      ROSE_ASSERT(newAttribute != NULL);
  152543             : 
  152544             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  152545             :      const_cast<SgMinusAssignOp*>(this)->attribute.add("copied",newAttribute);
  152546             : #endif
  152547             : 
  152548             :   // Copy data members from base classes
  152549             :   // Copy constructor parameter data member: startOfConstruct_copy
  152550             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  152551             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  152552           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  152553           0 :      if ( p_startOfConstruct != NULL ) 
  152554             :         { 
  152555           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  152556             :         } 
  152557             :        else 
  152558             :         { 
  152559             :           startOfConstruct_copy = NULL; 
  152560             :         } 
  152561             :   // Copy constructor parameter data member: lhs_operand_i_copy
  152562           0 :      SgExpression* lhs_operand_i_copy; 
  152563             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  152564           0 :           if (get_lhs_operand_i() != NULL) 
  152565             :              { 
  152566           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  152567             :              } 
  152568             :             else 
  152569             :              { 
  152570             :                lhs_operand_i_copy = NULL; 
  152571             :              } 
  152572             :   // Copy constructor parameter data member: rhs_operand_i_copy
  152573           0 :      SgExpression* rhs_operand_i_copy; 
  152574             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  152575           0 :           if (get_rhs_operand_i() != NULL) 
  152576             :              { 
  152577           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  152578             :              } 
  152579             :             else 
  152580             :              { 
  152581             :                rhs_operand_i_copy = NULL; 
  152582             :              } 
  152583             :   // Copy constructor parameter data member: expression_type_copy
  152584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  152585             :   // case: toBeCopied == COPY_DATA for expression_type
  152586           0 :      SgType* expression_type_copy = p_expression_type; 
  152587             :  
  152588             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  152589             : 
  152590             :   // Build an empty copy of this object (will be filled in, but 
  152591             :   // the parent can't be set and must be set by the caller)
  152592           0 :      result = new SgMinusAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  152593           0 :      ROSE_ASSERT(result != NULL);
  152594             : 
  152595             :   // Copy data members of "this" class
  152596             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  152597             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  152598             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  152599           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  152600           0 :      if ( p_endOfConstruct != NULL ) 
  152601             :         { 
  152602           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  152603             :         } 
  152604             :        else 
  152605             :         { 
  152606             :           endOfConstruct_copy = NULL; 
  152607             :         } 
  152608             :   /* check for a valid pointer and delete if present */ 
  152609           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  152610             :   /* add assignment to result here */ 
  152611           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  152612             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  152613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  152614             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  152615           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  152616           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  152617             :         { 
  152618           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  152619             :         } 
  152620             :        else 
  152621             :         { 
  152622             :           attachedPreprocessingInfoPtr_copy = NULL; 
  152623             :         } 
  152624             :   /* check for a valid pointer and delete if present */ 
  152625           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  152626             :   /* add assignment to result here */ 
  152627           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  152628             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  152629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  152630             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  152631           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  152632           0 :      if ( p_attributeMechanism != NULL ) 
  152633             :         { 
  152634           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  152635             :         } 
  152636             :        else 
  152637             :         { 
  152638             :           attributeMechanism_copy = NULL; 
  152639             :         } 
  152640             :   /* check for a valid pointer and delete if present */ 
  152641           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  152642             :   /* add assignment to result here */ 
  152643           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  152644             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  152645             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  152646             :   // case: toBeCopied == COPY_DATA for need_paren
  152647           0 :      bool need_paren_copy = p_need_paren; 
  152648           0 :      result->p_need_paren = need_paren_copy; 
  152649             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  152650             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  152651             :   // case: toBeCopied == COPY_DATA for lvalue
  152652           0 :      bool lvalue_copy = p_lvalue; 
  152653           0 :      result->p_lvalue = lvalue_copy; 
  152654             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  152655             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  152656             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  152657           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  152658           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  152659             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  152660             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  152661             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  152662           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  152663           0 :      if ( p_operatorPosition != NULL ) 
  152664             :         { 
  152665           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  152666             :         } 
  152667             :        else 
  152668             :         { 
  152669             :           operatorPosition_copy = NULL; 
  152670             :         } 
  152671             :   /* check for a valid pointer and delete if present */ 
  152672           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  152673             :   /* add assignment to result here */ 
  152674           0 :      result->p_operatorPosition = operatorPosition_copy; 
  152675             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  152676             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  152677             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  152678           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  152679           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  152680             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  152681           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  152682             :              { 
  152683           0 :                lhs_operand_i_copy->set_parent(result); 
  152684             :              } 
  152685             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  152686           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  152687             :              { 
  152688           0 :                rhs_operand_i_copy->set_parent(result); 
  152689             :              } 
  152690             : 
  152691             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  152692             : 
  152693             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  152694             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  152695             :   // fixupCopy(result,help);
  152696             : 
  152697             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  152698             :   // the Sg_File_Info objects that are built for the new IR nodes.
  152699           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  152700           0 :      if (locatedNode != NULL)
  152701             :         {
  152702             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  152703           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  152704           0 :           ROSE_ASSERT(start != NULL);
  152705             : #if 0
  152706             :        // Debugging information
  152707             :           if (start->get_parent() == NULL)
  152708             :              {
  152709             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152710             :              }
  152711             : #endif
  152712           0 :           start->set_parent(locatedNode);
  152713           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  152714             : 
  152715           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  152716             : 
  152717             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  152718             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  152719             :        // ROSE_ASSERT(end != NULL);
  152720           0 :           if (end == NULL)
  152721             :              {
  152722           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  152723             :              }
  152724             :             else
  152725             :              {
  152726             : #if 0
  152727             :             // Debugging information
  152728             :                if (end->get_parent() == NULL)
  152729             :                   {
  152730             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152731             :                   }
  152732             : #endif
  152733           0 :                end->set_parent(locatedNode);
  152734           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  152735             :              }
  152736             : 
  152737           0 :           SgExpression* expression = isSgExpression(result);
  152738           0 :           if (isSgExpression(this) != NULL)
  152739             :              {
  152740           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  152741             : 
  152742             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  152743           0 :                if (operatorPosition != NULL)
  152744             :                   {
  152745             : #if 0
  152746             :                  // Debugging information
  152747             :                     if (operatorPosition->get_parent() == NULL)
  152748             :                        {
  152749             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152750             :                        }
  152751             : #endif
  152752           0 :                     operatorPosition->set_parent(expression);
  152753           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  152754             :                   }
  152755             :              }
  152756             :         }
  152757             : 
  152758             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  152759           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  152760           0 :      if (initializedName != NULL)
  152761             :         {
  152762             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  152763           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  152764           0 :           ROSE_ASSERT(start != NULL);
  152765             : #if 0
  152766             :        // Debugging information
  152767             :           if (start->get_parent() == NULL)
  152768             :              {
  152769             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152770             :              }
  152771             : #endif
  152772           0 :           start->set_parent(initializedName);
  152773           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  152774             : 
  152775             : #if 0
  152776             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  152777             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  152778             : 
  152779             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  152780             :        // ROSE_ASSERT(end != NULL);
  152781             :           if (end == NULL)
  152782             :              {
  152783             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  152784             :              }
  152785             :             else
  152786             :              {
  152787             :                if (end->get_parent() == NULL)
  152788             :                   {
  152789             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  152790             :                   }
  152791             :                end->set_parent(initializedName);
  152792             :                ROSE_ASSERT(end->get_parent() != NULL);
  152793             :              }
  152794             : #endif
  152795             :         }
  152796             : 
  152797             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  152798           0 :      help.insertCopiedNodePair(this,result);
  152799             : 
  152800             :   // printf ("End of copy SgMinusAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  152801             : 
  152802             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  152803             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  152804           0 :      help.decrementDepth();
  152805             : 
  152806             :   // Test if this is the root of the copy!
  152807           0 :      if (help.get_depth() == 0)
  152808             :         {
  152809             :        // This is the original calling node.
  152810             : 
  152811             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  152812             :        // printf ("Calling SgMinusAssignOp::fixupCopy() (from root of AST being copied) \n");
  152813             : #if ALT_FIXUP_COPY
  152814             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  152815           0 :           fixupCopy_scopes (result,help);
  152816           0 :           fixupCopy_symbols (result,help);
  152817           0 :           fixupCopy_references (result,help);
  152818             : #else
  152819             :           fixupCopy(result,help);
  152820             : #endif
  152821             :        // Allow this to be called recursively, so accumulate the state.
  152822             :        // Also, clear the state in the SgCopyHelp object.
  152823             :        // help.clearState();
  152824             :         }
  152825             : 
  152826           0 :      return result;
  152827             :    }
  152828             : 
  152829             : 
  152830             : /* #line 152831 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  152831             : 
  152832             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  152833             : 
  152834           0 : SgNode* SgAndAssignOp::copy ( SgCopyHelp& help) const
  152835             :    {
  152836           0 :      SgAndAssignOp* result = NULL;
  152837             : 
  152838             :   // printf ("Copy SgAndAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  152839             : 
  152840             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  152841             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  152842             :   // The default value of the depth is 0, so after this call the depth is 1!
  152843           0 :      help.incrementDepth();
  152844             : 
  152845             : #if 0
  152846             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  152847             :   // but it is not generally true that things can only be copied once!
  152848             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  152849             :   // AstAttribute* existingAttribute = const_cast<SgAndAssignOp*>(this)->attribute["copied"];
  152850             :      bool previouslyCopied = const_cast<SgAndAssignOp*>(this)->attribute.exists("copied");
  152851             :      if (previouslyCopied == true)
  152852             :         {
  152853             :           this->get_file_info()->display("Called from copy SgAndAssignOp: debug");
  152854             :         }
  152855             :      ROSE_ASSERT(previouslyCopied == false);
  152856             : 
  152857             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  152858             :      AstAttribute* newAttribute = new AstAttribute();
  152859             :      ROSE_ASSERT(newAttribute != NULL);
  152860             : 
  152861             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  152862             :      const_cast<SgAndAssignOp*>(this)->attribute.add("copied",newAttribute);
  152863             : #endif
  152864             : 
  152865             :   // Copy data members from base classes
  152866             :   // Copy constructor parameter data member: startOfConstruct_copy
  152867             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  152868             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  152869           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  152870           0 :      if ( p_startOfConstruct != NULL ) 
  152871             :         { 
  152872           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  152873             :         } 
  152874             :        else 
  152875             :         { 
  152876             :           startOfConstruct_copy = NULL; 
  152877             :         } 
  152878             :   // Copy constructor parameter data member: lhs_operand_i_copy
  152879           0 :      SgExpression* lhs_operand_i_copy; 
  152880             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  152881           0 :           if (get_lhs_operand_i() != NULL) 
  152882             :              { 
  152883           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  152884             :              } 
  152885             :             else 
  152886             :              { 
  152887             :                lhs_operand_i_copy = NULL; 
  152888             :              } 
  152889             :   // Copy constructor parameter data member: rhs_operand_i_copy
  152890           0 :      SgExpression* rhs_operand_i_copy; 
  152891             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  152892           0 :           if (get_rhs_operand_i() != NULL) 
  152893             :              { 
  152894           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  152895             :              } 
  152896             :             else 
  152897             :              { 
  152898             :                rhs_operand_i_copy = NULL; 
  152899             :              } 
  152900             :   // Copy constructor parameter data member: expression_type_copy
  152901             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  152902             :   // case: toBeCopied == COPY_DATA for expression_type
  152903           0 :      SgType* expression_type_copy = p_expression_type; 
  152904             :  
  152905             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  152906             : 
  152907             :   // Build an empty copy of this object (will be filled in, but 
  152908             :   // the parent can't be set and must be set by the caller)
  152909           0 :      result = new SgAndAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  152910           0 :      ROSE_ASSERT(result != NULL);
  152911             : 
  152912             :   // Copy data members of "this" class
  152913             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  152914             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  152915             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  152916           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  152917           0 :      if ( p_endOfConstruct != NULL ) 
  152918             :         { 
  152919           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  152920             :         } 
  152921             :        else 
  152922             :         { 
  152923             :           endOfConstruct_copy = NULL; 
  152924             :         } 
  152925             :   /* check for a valid pointer and delete if present */ 
  152926           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  152927             :   /* add assignment to result here */ 
  152928           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  152929             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  152930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  152931             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  152932           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  152933           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  152934             :         { 
  152935           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  152936             :         } 
  152937             :        else 
  152938             :         { 
  152939             :           attachedPreprocessingInfoPtr_copy = NULL; 
  152940             :         } 
  152941             :   /* check for a valid pointer and delete if present */ 
  152942           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  152943             :   /* add assignment to result here */ 
  152944           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  152945             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  152946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  152947             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  152948           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  152949           0 :      if ( p_attributeMechanism != NULL ) 
  152950             :         { 
  152951           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  152952             :         } 
  152953             :        else 
  152954             :         { 
  152955             :           attributeMechanism_copy = NULL; 
  152956             :         } 
  152957             :   /* check for a valid pointer and delete if present */ 
  152958           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  152959             :   /* add assignment to result here */ 
  152960           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  152961             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  152962             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  152963             :   // case: toBeCopied == COPY_DATA for need_paren
  152964           0 :      bool need_paren_copy = p_need_paren; 
  152965           0 :      result->p_need_paren = need_paren_copy; 
  152966             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  152967             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  152968             :   // case: toBeCopied == COPY_DATA for lvalue
  152969           0 :      bool lvalue_copy = p_lvalue; 
  152970           0 :      result->p_lvalue = lvalue_copy; 
  152971             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  152972             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  152973             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  152974           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  152975           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  152976             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  152977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  152978             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  152979           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  152980           0 :      if ( p_operatorPosition != NULL ) 
  152981             :         { 
  152982           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  152983             :         } 
  152984             :        else 
  152985             :         { 
  152986             :           operatorPosition_copy = NULL; 
  152987             :         } 
  152988             :   /* check for a valid pointer and delete if present */ 
  152989           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  152990             :   /* add assignment to result here */ 
  152991           0 :      result->p_operatorPosition = operatorPosition_copy; 
  152992             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  152993             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  152994             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  152995           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  152996           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  152997             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  152998           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  152999             :              { 
  153000           0 :                lhs_operand_i_copy->set_parent(result); 
  153001             :              } 
  153002             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  153003           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  153004             :              { 
  153005           0 :                rhs_operand_i_copy->set_parent(result); 
  153006             :              } 
  153007             : 
  153008             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153009             : 
  153010             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  153011             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  153012             :   // fixupCopy(result,help);
  153013             : 
  153014             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  153015             :   // the Sg_File_Info objects that are built for the new IR nodes.
  153016           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  153017           0 :      if (locatedNode != NULL)
  153018             :         {
  153019             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  153020           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  153021           0 :           ROSE_ASSERT(start != NULL);
  153022             : #if 0
  153023             :        // Debugging information
  153024             :           if (start->get_parent() == NULL)
  153025             :              {
  153026             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153027             :              }
  153028             : #endif
  153029           0 :           start->set_parent(locatedNode);
  153030           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  153031             : 
  153032           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  153033             : 
  153034             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  153035             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  153036             :        // ROSE_ASSERT(end != NULL);
  153037           0 :           if (end == NULL)
  153038             :              {
  153039           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  153040             :              }
  153041             :             else
  153042             :              {
  153043             : #if 0
  153044             :             // Debugging information
  153045             :                if (end->get_parent() == NULL)
  153046             :                   {
  153047             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153048             :                   }
  153049             : #endif
  153050           0 :                end->set_parent(locatedNode);
  153051           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  153052             :              }
  153053             : 
  153054           0 :           SgExpression* expression = isSgExpression(result);
  153055           0 :           if (isSgExpression(this) != NULL)
  153056             :              {
  153057           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  153058             : 
  153059             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  153060           0 :                if (operatorPosition != NULL)
  153061             :                   {
  153062             : #if 0
  153063             :                  // Debugging information
  153064             :                     if (operatorPosition->get_parent() == NULL)
  153065             :                        {
  153066             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153067             :                        }
  153068             : #endif
  153069           0 :                     operatorPosition->set_parent(expression);
  153070           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  153071             :                   }
  153072             :              }
  153073             :         }
  153074             : 
  153075             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  153076           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  153077           0 :      if (initializedName != NULL)
  153078             :         {
  153079             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  153080           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  153081           0 :           ROSE_ASSERT(start != NULL);
  153082             : #if 0
  153083             :        // Debugging information
  153084             :           if (start->get_parent() == NULL)
  153085             :              {
  153086             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153087             :              }
  153088             : #endif
  153089           0 :           start->set_parent(initializedName);
  153090           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  153091             : 
  153092             : #if 0
  153093             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  153094             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  153095             : 
  153096             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  153097             :        // ROSE_ASSERT(end != NULL);
  153098             :           if (end == NULL)
  153099             :              {
  153100             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  153101             :              }
  153102             :             else
  153103             :              {
  153104             :                if (end->get_parent() == NULL)
  153105             :                   {
  153106             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153107             :                   }
  153108             :                end->set_parent(initializedName);
  153109             :                ROSE_ASSERT(end->get_parent() != NULL);
  153110             :              }
  153111             : #endif
  153112             :         }
  153113             : 
  153114             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  153115           0 :      help.insertCopiedNodePair(this,result);
  153116             : 
  153117             :   // printf ("End of copy SgAndAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  153118             : 
  153119             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  153120             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  153121           0 :      help.decrementDepth();
  153122             : 
  153123             :   // Test if this is the root of the copy!
  153124           0 :      if (help.get_depth() == 0)
  153125             :         {
  153126             :        // This is the original calling node.
  153127             : 
  153128             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  153129             :        // printf ("Calling SgAndAssignOp::fixupCopy() (from root of AST being copied) \n");
  153130             : #if ALT_FIXUP_COPY
  153131             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  153132           0 :           fixupCopy_scopes (result,help);
  153133           0 :           fixupCopy_symbols (result,help);
  153134           0 :           fixupCopy_references (result,help);
  153135             : #else
  153136             :           fixupCopy(result,help);
  153137             : #endif
  153138             :        // Allow this to be called recursively, so accumulate the state.
  153139             :        // Also, clear the state in the SgCopyHelp object.
  153140             :        // help.clearState();
  153141             :         }
  153142             : 
  153143           0 :      return result;
  153144             :    }
  153145             : 
  153146             : 
  153147             : /* #line 153148 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  153148             : 
  153149             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153150             : 
  153151           0 : SgNode* SgIorAssignOp::copy ( SgCopyHelp& help) const
  153152             :    {
  153153           0 :      SgIorAssignOp* result = NULL;
  153154             : 
  153155             :   // printf ("Copy SgIorAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  153156             : 
  153157             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  153158             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  153159             :   // The default value of the depth is 0, so after this call the depth is 1!
  153160           0 :      help.incrementDepth();
  153161             : 
  153162             : #if 0
  153163             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  153164             :   // but it is not generally true that things can only be copied once!
  153165             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  153166             :   // AstAttribute* existingAttribute = const_cast<SgIorAssignOp*>(this)->attribute["copied"];
  153167             :      bool previouslyCopied = const_cast<SgIorAssignOp*>(this)->attribute.exists("copied");
  153168             :      if (previouslyCopied == true)
  153169             :         {
  153170             :           this->get_file_info()->display("Called from copy SgIorAssignOp: debug");
  153171             :         }
  153172             :      ROSE_ASSERT(previouslyCopied == false);
  153173             : 
  153174             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  153175             :      AstAttribute* newAttribute = new AstAttribute();
  153176             :      ROSE_ASSERT(newAttribute != NULL);
  153177             : 
  153178             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  153179             :      const_cast<SgIorAssignOp*>(this)->attribute.add("copied",newAttribute);
  153180             : #endif
  153181             : 
  153182             :   // Copy data members from base classes
  153183             :   // Copy constructor parameter data member: startOfConstruct_copy
  153184             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  153185             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  153186           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  153187           0 :      if ( p_startOfConstruct != NULL ) 
  153188             :         { 
  153189           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  153190             :         } 
  153191             :        else 
  153192             :         { 
  153193             :           startOfConstruct_copy = NULL; 
  153194             :         } 
  153195             :   // Copy constructor parameter data member: lhs_operand_i_copy
  153196           0 :      SgExpression* lhs_operand_i_copy; 
  153197             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  153198           0 :           if (get_lhs_operand_i() != NULL) 
  153199             :              { 
  153200           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  153201             :              } 
  153202             :             else 
  153203             :              { 
  153204             :                lhs_operand_i_copy = NULL; 
  153205             :              } 
  153206             :   // Copy constructor parameter data member: rhs_operand_i_copy
  153207           0 :      SgExpression* rhs_operand_i_copy; 
  153208             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  153209           0 :           if (get_rhs_operand_i() != NULL) 
  153210             :              { 
  153211           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  153212             :              } 
  153213             :             else 
  153214             :              { 
  153215             :                rhs_operand_i_copy = NULL; 
  153216             :              } 
  153217             :   // Copy constructor parameter data member: expression_type_copy
  153218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  153219             :   // case: toBeCopied == COPY_DATA for expression_type
  153220           0 :      SgType* expression_type_copy = p_expression_type; 
  153221             :  
  153222             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153223             : 
  153224             :   // Build an empty copy of this object (will be filled in, but 
  153225             :   // the parent can't be set and must be set by the caller)
  153226           0 :      result = new SgIorAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  153227           0 :      ROSE_ASSERT(result != NULL);
  153228             : 
  153229             :   // Copy data members of "this" class
  153230             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  153231             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  153232             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  153233           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  153234           0 :      if ( p_endOfConstruct != NULL ) 
  153235             :         { 
  153236           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  153237             :         } 
  153238             :        else 
  153239             :         { 
  153240             :           endOfConstruct_copy = NULL; 
  153241             :         } 
  153242             :   /* check for a valid pointer and delete if present */ 
  153243           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  153244             :   /* add assignment to result here */ 
  153245           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  153246             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  153247             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  153248             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  153249           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  153250           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  153251             :         { 
  153252           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  153253             :         } 
  153254             :        else 
  153255             :         { 
  153256             :           attachedPreprocessingInfoPtr_copy = NULL; 
  153257             :         } 
  153258             :   /* check for a valid pointer and delete if present */ 
  153259           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  153260             :   /* add assignment to result here */ 
  153261           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  153262             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  153263             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  153264             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  153265           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  153266           0 :      if ( p_attributeMechanism != NULL ) 
  153267             :         { 
  153268           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  153269             :         } 
  153270             :        else 
  153271             :         { 
  153272             :           attributeMechanism_copy = NULL; 
  153273             :         } 
  153274             :   /* check for a valid pointer and delete if present */ 
  153275           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  153276             :   /* add assignment to result here */ 
  153277           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  153278             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  153279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  153280             :   // case: toBeCopied == COPY_DATA for need_paren
  153281           0 :      bool need_paren_copy = p_need_paren; 
  153282           0 :      result->p_need_paren = need_paren_copy; 
  153283             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  153284             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  153285             :   // case: toBeCopied == COPY_DATA for lvalue
  153286           0 :      bool lvalue_copy = p_lvalue; 
  153287           0 :      result->p_lvalue = lvalue_copy; 
  153288             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  153289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  153290             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  153291           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  153292           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  153293             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  153294             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  153295             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  153296           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  153297           0 :      if ( p_operatorPosition != NULL ) 
  153298             :         { 
  153299           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  153300             :         } 
  153301             :        else 
  153302             :         { 
  153303             :           operatorPosition_copy = NULL; 
  153304             :         } 
  153305             :   /* check for a valid pointer and delete if present */ 
  153306           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  153307             :   /* add assignment to result here */ 
  153308           0 :      result->p_operatorPosition = operatorPosition_copy; 
  153309             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  153310             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  153311             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  153312           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  153313           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  153314             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  153315           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  153316             :              { 
  153317           0 :                lhs_operand_i_copy->set_parent(result); 
  153318             :              } 
  153319             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  153320           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  153321             :              { 
  153322           0 :                rhs_operand_i_copy->set_parent(result); 
  153323             :              } 
  153324             : 
  153325             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153326             : 
  153327             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  153328             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  153329             :   // fixupCopy(result,help);
  153330             : 
  153331             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  153332             :   // the Sg_File_Info objects that are built for the new IR nodes.
  153333           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  153334           0 :      if (locatedNode != NULL)
  153335             :         {
  153336             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  153337           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  153338           0 :           ROSE_ASSERT(start != NULL);
  153339             : #if 0
  153340             :        // Debugging information
  153341             :           if (start->get_parent() == NULL)
  153342             :              {
  153343             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153344             :              }
  153345             : #endif
  153346           0 :           start->set_parent(locatedNode);
  153347           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  153348             : 
  153349           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  153350             : 
  153351             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  153352             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  153353             :        // ROSE_ASSERT(end != NULL);
  153354           0 :           if (end == NULL)
  153355             :              {
  153356           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  153357             :              }
  153358             :             else
  153359             :              {
  153360             : #if 0
  153361             :             // Debugging information
  153362             :                if (end->get_parent() == NULL)
  153363             :                   {
  153364             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153365             :                   }
  153366             : #endif
  153367           0 :                end->set_parent(locatedNode);
  153368           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  153369             :              }
  153370             : 
  153371           0 :           SgExpression* expression = isSgExpression(result);
  153372           0 :           if (isSgExpression(this) != NULL)
  153373             :              {
  153374           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  153375             : 
  153376             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  153377           0 :                if (operatorPosition != NULL)
  153378             :                   {
  153379             : #if 0
  153380             :                  // Debugging information
  153381             :                     if (operatorPosition->get_parent() == NULL)
  153382             :                        {
  153383             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153384             :                        }
  153385             : #endif
  153386           0 :                     operatorPosition->set_parent(expression);
  153387           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  153388             :                   }
  153389             :              }
  153390             :         }
  153391             : 
  153392             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  153393           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  153394           0 :      if (initializedName != NULL)
  153395             :         {
  153396             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  153397           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  153398           0 :           ROSE_ASSERT(start != NULL);
  153399             : #if 0
  153400             :        // Debugging information
  153401             :           if (start->get_parent() == NULL)
  153402             :              {
  153403             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153404             :              }
  153405             : #endif
  153406           0 :           start->set_parent(initializedName);
  153407           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  153408             : 
  153409             : #if 0
  153410             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  153411             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  153412             : 
  153413             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  153414             :        // ROSE_ASSERT(end != NULL);
  153415             :           if (end == NULL)
  153416             :              {
  153417             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  153418             :              }
  153419             :             else
  153420             :              {
  153421             :                if (end->get_parent() == NULL)
  153422             :                   {
  153423             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153424             :                   }
  153425             :                end->set_parent(initializedName);
  153426             :                ROSE_ASSERT(end->get_parent() != NULL);
  153427             :              }
  153428             : #endif
  153429             :         }
  153430             : 
  153431             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  153432           0 :      help.insertCopiedNodePair(this,result);
  153433             : 
  153434             :   // printf ("End of copy SgIorAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  153435             : 
  153436             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  153437             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  153438           0 :      help.decrementDepth();
  153439             : 
  153440             :   // Test if this is the root of the copy!
  153441           0 :      if (help.get_depth() == 0)
  153442             :         {
  153443             :        // This is the original calling node.
  153444             : 
  153445             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  153446             :        // printf ("Calling SgIorAssignOp::fixupCopy() (from root of AST being copied) \n");
  153447             : #if ALT_FIXUP_COPY
  153448             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  153449           0 :           fixupCopy_scopes (result,help);
  153450           0 :           fixupCopy_symbols (result,help);
  153451           0 :           fixupCopy_references (result,help);
  153452             : #else
  153453             :           fixupCopy(result,help);
  153454             : #endif
  153455             :        // Allow this to be called recursively, so accumulate the state.
  153456             :        // Also, clear the state in the SgCopyHelp object.
  153457             :        // help.clearState();
  153458             :         }
  153459             : 
  153460           0 :      return result;
  153461             :    }
  153462             : 
  153463             : 
  153464             : /* #line 153465 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  153465             : 
  153466             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153467             : 
  153468           0 : SgNode* SgMultAssignOp::copy ( SgCopyHelp& help) const
  153469             :    {
  153470           0 :      SgMultAssignOp* result = NULL;
  153471             : 
  153472             :   // printf ("Copy SgMultAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  153473             : 
  153474             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  153475             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  153476             :   // The default value of the depth is 0, so after this call the depth is 1!
  153477           0 :      help.incrementDepth();
  153478             : 
  153479             : #if 0
  153480             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  153481             :   // but it is not generally true that things can only be copied once!
  153482             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  153483             :   // AstAttribute* existingAttribute = const_cast<SgMultAssignOp*>(this)->attribute["copied"];
  153484             :      bool previouslyCopied = const_cast<SgMultAssignOp*>(this)->attribute.exists("copied");
  153485             :      if (previouslyCopied == true)
  153486             :         {
  153487             :           this->get_file_info()->display("Called from copy SgMultAssignOp: debug");
  153488             :         }
  153489             :      ROSE_ASSERT(previouslyCopied == false);
  153490             : 
  153491             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  153492             :      AstAttribute* newAttribute = new AstAttribute();
  153493             :      ROSE_ASSERT(newAttribute != NULL);
  153494             : 
  153495             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  153496             :      const_cast<SgMultAssignOp*>(this)->attribute.add("copied",newAttribute);
  153497             : #endif
  153498             : 
  153499             :   // Copy data members from base classes
  153500             :   // Copy constructor parameter data member: startOfConstruct_copy
  153501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  153502             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  153503           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  153504           0 :      if ( p_startOfConstruct != NULL ) 
  153505             :         { 
  153506           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  153507             :         } 
  153508             :        else 
  153509             :         { 
  153510             :           startOfConstruct_copy = NULL; 
  153511             :         } 
  153512             :   // Copy constructor parameter data member: lhs_operand_i_copy
  153513           0 :      SgExpression* lhs_operand_i_copy; 
  153514             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  153515           0 :           if (get_lhs_operand_i() != NULL) 
  153516             :              { 
  153517           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  153518             :              } 
  153519             :             else 
  153520             :              { 
  153521             :                lhs_operand_i_copy = NULL; 
  153522             :              } 
  153523             :   // Copy constructor parameter data member: rhs_operand_i_copy
  153524           0 :      SgExpression* rhs_operand_i_copy; 
  153525             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  153526           0 :           if (get_rhs_operand_i() != NULL) 
  153527             :              { 
  153528           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  153529             :              } 
  153530             :             else 
  153531             :              { 
  153532             :                rhs_operand_i_copy = NULL; 
  153533             :              } 
  153534             :   // Copy constructor parameter data member: expression_type_copy
  153535             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  153536             :   // case: toBeCopied == COPY_DATA for expression_type
  153537           0 :      SgType* expression_type_copy = p_expression_type; 
  153538             :  
  153539             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153540             : 
  153541             :   // Build an empty copy of this object (will be filled in, but 
  153542             :   // the parent can't be set and must be set by the caller)
  153543           0 :      result = new SgMultAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  153544           0 :      ROSE_ASSERT(result != NULL);
  153545             : 
  153546             :   // Copy data members of "this" class
  153547             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  153548             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  153549             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  153550           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  153551           0 :      if ( p_endOfConstruct != NULL ) 
  153552             :         { 
  153553           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  153554             :         } 
  153555             :        else 
  153556             :         { 
  153557             :           endOfConstruct_copy = NULL; 
  153558             :         } 
  153559             :   /* check for a valid pointer and delete if present */ 
  153560           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  153561             :   /* add assignment to result here */ 
  153562           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  153563             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  153564             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  153565             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  153566           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  153567           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  153568             :         { 
  153569           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  153570             :         } 
  153571             :        else 
  153572             :         { 
  153573             :           attachedPreprocessingInfoPtr_copy = NULL; 
  153574             :         } 
  153575             :   /* check for a valid pointer and delete if present */ 
  153576           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  153577             :   /* add assignment to result here */ 
  153578           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  153579             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  153580             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  153581             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  153582           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  153583           0 :      if ( p_attributeMechanism != NULL ) 
  153584             :         { 
  153585           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  153586             :         } 
  153587             :        else 
  153588             :         { 
  153589             :           attributeMechanism_copy = NULL; 
  153590             :         } 
  153591             :   /* check for a valid pointer and delete if present */ 
  153592           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  153593             :   /* add assignment to result here */ 
  153594           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  153595             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  153596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  153597             :   // case: toBeCopied == COPY_DATA for need_paren
  153598           0 :      bool need_paren_copy = p_need_paren; 
  153599           0 :      result->p_need_paren = need_paren_copy; 
  153600             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  153601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  153602             :   // case: toBeCopied == COPY_DATA for lvalue
  153603           0 :      bool lvalue_copy = p_lvalue; 
  153604           0 :      result->p_lvalue = lvalue_copy; 
  153605             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  153606             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  153607             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  153608           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  153609           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  153610             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  153611             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  153612             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  153613           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  153614           0 :      if ( p_operatorPosition != NULL ) 
  153615             :         { 
  153616           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  153617             :         } 
  153618             :        else 
  153619             :         { 
  153620             :           operatorPosition_copy = NULL; 
  153621             :         } 
  153622             :   /* check for a valid pointer and delete if present */ 
  153623           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  153624             :   /* add assignment to result here */ 
  153625           0 :      result->p_operatorPosition = operatorPosition_copy; 
  153626             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  153627             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  153628             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  153629           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  153630           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  153631             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  153632           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  153633             :              { 
  153634           0 :                lhs_operand_i_copy->set_parent(result); 
  153635             :              } 
  153636             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  153637           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  153638             :              { 
  153639           0 :                rhs_operand_i_copy->set_parent(result); 
  153640             :              } 
  153641             : 
  153642             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153643             : 
  153644             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  153645             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  153646             :   // fixupCopy(result,help);
  153647             : 
  153648             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  153649             :   // the Sg_File_Info objects that are built for the new IR nodes.
  153650           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  153651           0 :      if (locatedNode != NULL)
  153652             :         {
  153653             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  153654           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  153655           0 :           ROSE_ASSERT(start != NULL);
  153656             : #if 0
  153657             :        // Debugging information
  153658             :           if (start->get_parent() == NULL)
  153659             :              {
  153660             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153661             :              }
  153662             : #endif
  153663           0 :           start->set_parent(locatedNode);
  153664           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  153665             : 
  153666           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  153667             : 
  153668             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  153669             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  153670             :        // ROSE_ASSERT(end != NULL);
  153671           0 :           if (end == NULL)
  153672             :              {
  153673           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  153674             :              }
  153675             :             else
  153676             :              {
  153677             : #if 0
  153678             :             // Debugging information
  153679             :                if (end->get_parent() == NULL)
  153680             :                   {
  153681             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153682             :                   }
  153683             : #endif
  153684           0 :                end->set_parent(locatedNode);
  153685           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  153686             :              }
  153687             : 
  153688           0 :           SgExpression* expression = isSgExpression(result);
  153689           0 :           if (isSgExpression(this) != NULL)
  153690             :              {
  153691           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  153692             : 
  153693             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  153694           0 :                if (operatorPosition != NULL)
  153695             :                   {
  153696             : #if 0
  153697             :                  // Debugging information
  153698             :                     if (operatorPosition->get_parent() == NULL)
  153699             :                        {
  153700             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153701             :                        }
  153702             : #endif
  153703           0 :                     operatorPosition->set_parent(expression);
  153704           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  153705             :                   }
  153706             :              }
  153707             :         }
  153708             : 
  153709             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  153710           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  153711           0 :      if (initializedName != NULL)
  153712             :         {
  153713             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  153714           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  153715           0 :           ROSE_ASSERT(start != NULL);
  153716             : #if 0
  153717             :        // Debugging information
  153718             :           if (start->get_parent() == NULL)
  153719             :              {
  153720             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153721             :              }
  153722             : #endif
  153723           0 :           start->set_parent(initializedName);
  153724           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  153725             : 
  153726             : #if 0
  153727             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  153728             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  153729             : 
  153730             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  153731             :        // ROSE_ASSERT(end != NULL);
  153732             :           if (end == NULL)
  153733             :              {
  153734             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  153735             :              }
  153736             :             else
  153737             :              {
  153738             :                if (end->get_parent() == NULL)
  153739             :                   {
  153740             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153741             :                   }
  153742             :                end->set_parent(initializedName);
  153743             :                ROSE_ASSERT(end->get_parent() != NULL);
  153744             :              }
  153745             : #endif
  153746             :         }
  153747             : 
  153748             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  153749           0 :      help.insertCopiedNodePair(this,result);
  153750             : 
  153751             :   // printf ("End of copy SgMultAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  153752             : 
  153753             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  153754             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  153755           0 :      help.decrementDepth();
  153756             : 
  153757             :   // Test if this is the root of the copy!
  153758           0 :      if (help.get_depth() == 0)
  153759             :         {
  153760             :        // This is the original calling node.
  153761             : 
  153762             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  153763             :        // printf ("Calling SgMultAssignOp::fixupCopy() (from root of AST being copied) \n");
  153764             : #if ALT_FIXUP_COPY
  153765             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  153766           0 :           fixupCopy_scopes (result,help);
  153767           0 :           fixupCopy_symbols (result,help);
  153768           0 :           fixupCopy_references (result,help);
  153769             : #else
  153770             :           fixupCopy(result,help);
  153771             : #endif
  153772             :        // Allow this to be called recursively, so accumulate the state.
  153773             :        // Also, clear the state in the SgCopyHelp object.
  153774             :        // help.clearState();
  153775             :         }
  153776             : 
  153777           0 :      return result;
  153778             :    }
  153779             : 
  153780             : 
  153781             : /* #line 153782 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  153782             : 
  153783             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153784             : 
  153785           0 : SgNode* SgDivAssignOp::copy ( SgCopyHelp& help) const
  153786             :    {
  153787           0 :      SgDivAssignOp* result = NULL;
  153788             : 
  153789             :   // printf ("Copy SgDivAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  153790             : 
  153791             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  153792             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  153793             :   // The default value of the depth is 0, so after this call the depth is 1!
  153794           0 :      help.incrementDepth();
  153795             : 
  153796             : #if 0
  153797             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  153798             :   // but it is not generally true that things can only be copied once!
  153799             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  153800             :   // AstAttribute* existingAttribute = const_cast<SgDivAssignOp*>(this)->attribute["copied"];
  153801             :      bool previouslyCopied = const_cast<SgDivAssignOp*>(this)->attribute.exists("copied");
  153802             :      if (previouslyCopied == true)
  153803             :         {
  153804             :           this->get_file_info()->display("Called from copy SgDivAssignOp: debug");
  153805             :         }
  153806             :      ROSE_ASSERT(previouslyCopied == false);
  153807             : 
  153808             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  153809             :      AstAttribute* newAttribute = new AstAttribute();
  153810             :      ROSE_ASSERT(newAttribute != NULL);
  153811             : 
  153812             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  153813             :      const_cast<SgDivAssignOp*>(this)->attribute.add("copied",newAttribute);
  153814             : #endif
  153815             : 
  153816             :   // Copy data members from base classes
  153817             :   // Copy constructor parameter data member: startOfConstruct_copy
  153818             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  153819             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  153820           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  153821           0 :      if ( p_startOfConstruct != NULL ) 
  153822             :         { 
  153823           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  153824             :         } 
  153825             :        else 
  153826             :         { 
  153827             :           startOfConstruct_copy = NULL; 
  153828             :         } 
  153829             :   // Copy constructor parameter data member: lhs_operand_i_copy
  153830           0 :      SgExpression* lhs_operand_i_copy; 
  153831             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  153832           0 :           if (get_lhs_operand_i() != NULL) 
  153833             :              { 
  153834           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  153835             :              } 
  153836             :             else 
  153837             :              { 
  153838             :                lhs_operand_i_copy = NULL; 
  153839             :              } 
  153840             :   // Copy constructor parameter data member: rhs_operand_i_copy
  153841           0 :      SgExpression* rhs_operand_i_copy; 
  153842             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  153843           0 :           if (get_rhs_operand_i() != NULL) 
  153844             :              { 
  153845           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  153846             :              } 
  153847             :             else 
  153848             :              { 
  153849             :                rhs_operand_i_copy = NULL; 
  153850             :              } 
  153851             :   // Copy constructor parameter data member: expression_type_copy
  153852             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  153853             :   // case: toBeCopied == COPY_DATA for expression_type
  153854           0 :      SgType* expression_type_copy = p_expression_type; 
  153855             :  
  153856             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153857             : 
  153858             :   // Build an empty copy of this object (will be filled in, but 
  153859             :   // the parent can't be set and must be set by the caller)
  153860           0 :      result = new SgDivAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  153861           0 :      ROSE_ASSERT(result != NULL);
  153862             : 
  153863             :   // Copy data members of "this" class
  153864             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  153865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  153866             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  153867           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  153868           0 :      if ( p_endOfConstruct != NULL ) 
  153869             :         { 
  153870           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  153871             :         } 
  153872             :        else 
  153873             :         { 
  153874             :           endOfConstruct_copy = NULL; 
  153875             :         } 
  153876             :   /* check for a valid pointer and delete if present */ 
  153877           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  153878             :   /* add assignment to result here */ 
  153879           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  153880             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  153881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  153882             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  153883           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  153884           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  153885             :         { 
  153886           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  153887             :         } 
  153888             :        else 
  153889             :         { 
  153890             :           attachedPreprocessingInfoPtr_copy = NULL; 
  153891             :         } 
  153892             :   /* check for a valid pointer and delete if present */ 
  153893           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  153894             :   /* add assignment to result here */ 
  153895           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  153896             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  153897             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  153898             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  153899           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  153900           0 :      if ( p_attributeMechanism != NULL ) 
  153901             :         { 
  153902           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  153903             :         } 
  153904             :        else 
  153905             :         { 
  153906             :           attributeMechanism_copy = NULL; 
  153907             :         } 
  153908             :   /* check for a valid pointer and delete if present */ 
  153909           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  153910             :   /* add assignment to result here */ 
  153911           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  153912             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  153913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  153914             :   // case: toBeCopied == COPY_DATA for need_paren
  153915           0 :      bool need_paren_copy = p_need_paren; 
  153916           0 :      result->p_need_paren = need_paren_copy; 
  153917             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  153918             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  153919             :   // case: toBeCopied == COPY_DATA for lvalue
  153920           0 :      bool lvalue_copy = p_lvalue; 
  153921           0 :      result->p_lvalue = lvalue_copy; 
  153922             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  153923             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  153924             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  153925           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  153926           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  153927             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  153928             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  153929             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  153930           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  153931           0 :      if ( p_operatorPosition != NULL ) 
  153932             :         { 
  153933           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  153934             :         } 
  153935             :        else 
  153936             :         { 
  153937             :           operatorPosition_copy = NULL; 
  153938             :         } 
  153939             :   /* check for a valid pointer and delete if present */ 
  153940           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  153941             :   /* add assignment to result here */ 
  153942           0 :      result->p_operatorPosition = operatorPosition_copy; 
  153943             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  153944             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  153945             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  153946           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  153947           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  153948             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  153949           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  153950             :              { 
  153951           0 :                lhs_operand_i_copy->set_parent(result); 
  153952             :              } 
  153953             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  153954           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  153955             :              { 
  153956           0 :                rhs_operand_i_copy->set_parent(result); 
  153957             :              } 
  153958             : 
  153959             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  153960             : 
  153961             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  153962             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  153963             :   // fixupCopy(result,help);
  153964             : 
  153965             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  153966             :   // the Sg_File_Info objects that are built for the new IR nodes.
  153967           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  153968           0 :      if (locatedNode != NULL)
  153969             :         {
  153970             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  153971           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  153972           0 :           ROSE_ASSERT(start != NULL);
  153973             : #if 0
  153974             :        // Debugging information
  153975             :           if (start->get_parent() == NULL)
  153976             :              {
  153977             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153978             :              }
  153979             : #endif
  153980           0 :           start->set_parent(locatedNode);
  153981           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  153982             : 
  153983           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  153984             : 
  153985             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  153986             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  153987             :        // ROSE_ASSERT(end != NULL);
  153988           0 :           if (end == NULL)
  153989             :              {
  153990           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  153991             :              }
  153992             :             else
  153993             :              {
  153994             : #if 0
  153995             :             // Debugging information
  153996             :                if (end->get_parent() == NULL)
  153997             :                   {
  153998             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  153999             :                   }
  154000             : #endif
  154001           0 :                end->set_parent(locatedNode);
  154002           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  154003             :              }
  154004             : 
  154005           0 :           SgExpression* expression = isSgExpression(result);
  154006           0 :           if (isSgExpression(this) != NULL)
  154007             :              {
  154008           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  154009             : 
  154010             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  154011           0 :                if (operatorPosition != NULL)
  154012             :                   {
  154013             : #if 0
  154014             :                  // Debugging information
  154015             :                     if (operatorPosition->get_parent() == NULL)
  154016             :                        {
  154017             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154018             :                        }
  154019             : #endif
  154020           0 :                     operatorPosition->set_parent(expression);
  154021           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  154022             :                   }
  154023             :              }
  154024             :         }
  154025             : 
  154026             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  154027           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  154028           0 :      if (initializedName != NULL)
  154029             :         {
  154030             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  154031           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  154032           0 :           ROSE_ASSERT(start != NULL);
  154033             : #if 0
  154034             :        // Debugging information
  154035             :           if (start->get_parent() == NULL)
  154036             :              {
  154037             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154038             :              }
  154039             : #endif
  154040           0 :           start->set_parent(initializedName);
  154041           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  154042             : 
  154043             : #if 0
  154044             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  154045             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  154046             : 
  154047             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  154048             :        // ROSE_ASSERT(end != NULL);
  154049             :           if (end == NULL)
  154050             :              {
  154051             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  154052             :              }
  154053             :             else
  154054             :              {
  154055             :                if (end->get_parent() == NULL)
  154056             :                   {
  154057             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154058             :                   }
  154059             :                end->set_parent(initializedName);
  154060             :                ROSE_ASSERT(end->get_parent() != NULL);
  154061             :              }
  154062             : #endif
  154063             :         }
  154064             : 
  154065             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  154066           0 :      help.insertCopiedNodePair(this,result);
  154067             : 
  154068             :   // printf ("End of copy SgDivAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  154069             : 
  154070             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  154071             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  154072           0 :      help.decrementDepth();
  154073             : 
  154074             :   // Test if this is the root of the copy!
  154075           0 :      if (help.get_depth() == 0)
  154076             :         {
  154077             :        // This is the original calling node.
  154078             : 
  154079             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  154080             :        // printf ("Calling SgDivAssignOp::fixupCopy() (from root of AST being copied) \n");
  154081             : #if ALT_FIXUP_COPY
  154082             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  154083           0 :           fixupCopy_scopes (result,help);
  154084           0 :           fixupCopy_symbols (result,help);
  154085           0 :           fixupCopy_references (result,help);
  154086             : #else
  154087             :           fixupCopy(result,help);
  154088             : #endif
  154089             :        // Allow this to be called recursively, so accumulate the state.
  154090             :        // Also, clear the state in the SgCopyHelp object.
  154091             :        // help.clearState();
  154092             :         }
  154093             : 
  154094           0 :      return result;
  154095             :    }
  154096             : 
  154097             : 
  154098             : /* #line 154099 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  154099             : 
  154100             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  154101             : 
  154102           0 : SgNode* SgModAssignOp::copy ( SgCopyHelp& help) const
  154103             :    {
  154104           0 :      SgModAssignOp* result = NULL;
  154105             : 
  154106             :   // printf ("Copy SgModAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  154107             : 
  154108             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  154109             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  154110             :   // The default value of the depth is 0, so after this call the depth is 1!
  154111           0 :      help.incrementDepth();
  154112             : 
  154113             : #if 0
  154114             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  154115             :   // but it is not generally true that things can only be copied once!
  154116             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  154117             :   // AstAttribute* existingAttribute = const_cast<SgModAssignOp*>(this)->attribute["copied"];
  154118             :      bool previouslyCopied = const_cast<SgModAssignOp*>(this)->attribute.exists("copied");
  154119             :      if (previouslyCopied == true)
  154120             :         {
  154121             :           this->get_file_info()->display("Called from copy SgModAssignOp: debug");
  154122             :         }
  154123             :      ROSE_ASSERT(previouslyCopied == false);
  154124             : 
  154125             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  154126             :      AstAttribute* newAttribute = new AstAttribute();
  154127             :      ROSE_ASSERT(newAttribute != NULL);
  154128             : 
  154129             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  154130             :      const_cast<SgModAssignOp*>(this)->attribute.add("copied",newAttribute);
  154131             : #endif
  154132             : 
  154133             :   // Copy data members from base classes
  154134             :   // Copy constructor parameter data member: startOfConstruct_copy
  154135             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  154136             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  154137           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  154138           0 :      if ( p_startOfConstruct != NULL ) 
  154139             :         { 
  154140           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  154141             :         } 
  154142             :        else 
  154143             :         { 
  154144             :           startOfConstruct_copy = NULL; 
  154145             :         } 
  154146             :   // Copy constructor parameter data member: lhs_operand_i_copy
  154147           0 :      SgExpression* lhs_operand_i_copy; 
  154148             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  154149           0 :           if (get_lhs_operand_i() != NULL) 
  154150             :              { 
  154151           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  154152             :              } 
  154153             :             else 
  154154             :              { 
  154155             :                lhs_operand_i_copy = NULL; 
  154156             :              } 
  154157             :   // Copy constructor parameter data member: rhs_operand_i_copy
  154158           0 :      SgExpression* rhs_operand_i_copy; 
  154159             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  154160           0 :           if (get_rhs_operand_i() != NULL) 
  154161             :              { 
  154162           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  154163             :              } 
  154164             :             else 
  154165             :              { 
  154166             :                rhs_operand_i_copy = NULL; 
  154167             :              } 
  154168             :   // Copy constructor parameter data member: expression_type_copy
  154169             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  154170             :   // case: toBeCopied == COPY_DATA for expression_type
  154171           0 :      SgType* expression_type_copy = p_expression_type; 
  154172             :  
  154173             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  154174             : 
  154175             :   // Build an empty copy of this object (will be filled in, but 
  154176             :   // the parent can't be set and must be set by the caller)
  154177           0 :      result = new SgModAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  154178           0 :      ROSE_ASSERT(result != NULL);
  154179             : 
  154180             :   // Copy data members of "this" class
  154181             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  154182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  154183             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  154184           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  154185           0 :      if ( p_endOfConstruct != NULL ) 
  154186             :         { 
  154187           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  154188             :         } 
  154189             :        else 
  154190             :         { 
  154191             :           endOfConstruct_copy = NULL; 
  154192             :         } 
  154193             :   /* check for a valid pointer and delete if present */ 
  154194           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  154195             :   /* add assignment to result here */ 
  154196           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  154197             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  154198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  154199             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  154200           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  154201           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  154202             :         { 
  154203           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  154204             :         } 
  154205             :        else 
  154206             :         { 
  154207             :           attachedPreprocessingInfoPtr_copy = NULL; 
  154208             :         } 
  154209             :   /* check for a valid pointer and delete if present */ 
  154210           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  154211             :   /* add assignment to result here */ 
  154212           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  154213             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  154214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  154215             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  154216           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  154217           0 :      if ( p_attributeMechanism != NULL ) 
  154218             :         { 
  154219           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  154220             :         } 
  154221             :        else 
  154222             :         { 
  154223             :           attributeMechanism_copy = NULL; 
  154224             :         } 
  154225             :   /* check for a valid pointer and delete if present */ 
  154226           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  154227             :   /* add assignment to result here */ 
  154228           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  154229             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  154230             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  154231             :   // case: toBeCopied == COPY_DATA for need_paren
  154232           0 :      bool need_paren_copy = p_need_paren; 
  154233           0 :      result->p_need_paren = need_paren_copy; 
  154234             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  154235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  154236             :   // case: toBeCopied == COPY_DATA for lvalue
  154237           0 :      bool lvalue_copy = p_lvalue; 
  154238           0 :      result->p_lvalue = lvalue_copy; 
  154239             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  154240             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  154241             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  154242           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  154243           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  154244             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  154245             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  154246             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  154247           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  154248           0 :      if ( p_operatorPosition != NULL ) 
  154249             :         { 
  154250           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  154251             :         } 
  154252             :        else 
  154253             :         { 
  154254             :           operatorPosition_copy = NULL; 
  154255             :         } 
  154256             :   /* check for a valid pointer and delete if present */ 
  154257           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  154258             :   /* add assignment to result here */ 
  154259           0 :      result->p_operatorPosition = operatorPosition_copy; 
  154260             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  154261             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  154262             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  154263           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  154264           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  154265             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  154266           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  154267             :              { 
  154268           0 :                lhs_operand_i_copy->set_parent(result); 
  154269             :              } 
  154270             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  154271           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  154272             :              { 
  154273           0 :                rhs_operand_i_copy->set_parent(result); 
  154274             :              } 
  154275             : 
  154276             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  154277             : 
  154278             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  154279             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  154280             :   // fixupCopy(result,help);
  154281             : 
  154282             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  154283             :   // the Sg_File_Info objects that are built for the new IR nodes.
  154284           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  154285           0 :      if (locatedNode != NULL)
  154286             :         {
  154287             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  154288           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  154289           0 :           ROSE_ASSERT(start != NULL);
  154290             : #if 0
  154291             :        // Debugging information
  154292             :           if (start->get_parent() == NULL)
  154293             :              {
  154294             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154295             :              }
  154296             : #endif
  154297           0 :           start->set_parent(locatedNode);
  154298           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  154299             : 
  154300           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  154301             : 
  154302             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  154303             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  154304             :        // ROSE_ASSERT(end != NULL);
  154305           0 :           if (end == NULL)
  154306             :              {
  154307           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  154308             :              }
  154309             :             else
  154310             :              {
  154311             : #if 0
  154312             :             // Debugging information
  154313             :                if (end->get_parent() == NULL)
  154314             :                   {
  154315             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154316             :                   }
  154317             : #endif
  154318           0 :                end->set_parent(locatedNode);
  154319           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  154320             :              }
  154321             : 
  154322           0 :           SgExpression* expression = isSgExpression(result);
  154323           0 :           if (isSgExpression(this) != NULL)
  154324             :              {
  154325           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  154326             : 
  154327             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  154328           0 :                if (operatorPosition != NULL)
  154329             :                   {
  154330             : #if 0
  154331             :                  // Debugging information
  154332             :                     if (operatorPosition->get_parent() == NULL)
  154333             :                        {
  154334             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154335             :                        }
  154336             : #endif
  154337           0 :                     operatorPosition->set_parent(expression);
  154338           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  154339             :                   }
  154340             :              }
  154341             :         }
  154342             : 
  154343             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  154344           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  154345           0 :      if (initializedName != NULL)
  154346             :         {
  154347             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  154348           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  154349           0 :           ROSE_ASSERT(start != NULL);
  154350             : #if 0
  154351             :        // Debugging information
  154352             :           if (start->get_parent() == NULL)
  154353             :              {
  154354             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154355             :              }
  154356             : #endif
  154357           0 :           start->set_parent(initializedName);
  154358           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  154359             : 
  154360             : #if 0
  154361             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  154362             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  154363             : 
  154364             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  154365             :        // ROSE_ASSERT(end != NULL);
  154366             :           if (end == NULL)
  154367             :              {
  154368             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  154369             :              }
  154370             :             else
  154371             :              {
  154372             :                if (end->get_parent() == NULL)
  154373             :                   {
  154374             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154375             :                   }
  154376             :                end->set_parent(initializedName);
  154377             :                ROSE_ASSERT(end->get_parent() != NULL);
  154378             :              }
  154379             : #endif
  154380             :         }
  154381             : 
  154382             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  154383           0 :      help.insertCopiedNodePair(this,result);
  154384             : 
  154385             :   // printf ("End of copy SgModAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  154386             : 
  154387             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  154388             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  154389           0 :      help.decrementDepth();
  154390             : 
  154391             :   // Test if this is the root of the copy!
  154392           0 :      if (help.get_depth() == 0)
  154393             :         {
  154394             :        // This is the original calling node.
  154395             : 
  154396             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  154397             :        // printf ("Calling SgModAssignOp::fixupCopy() (from root of AST being copied) \n");
  154398             : #if ALT_FIXUP_COPY
  154399             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  154400           0 :           fixupCopy_scopes (result,help);
  154401           0 :           fixupCopy_symbols (result,help);
  154402           0 :           fixupCopy_references (result,help);
  154403             : #else
  154404             :           fixupCopy(result,help);
  154405             : #endif
  154406             :        // Allow this to be called recursively, so accumulate the state.
  154407             :        // Also, clear the state in the SgCopyHelp object.
  154408             :        // help.clearState();
  154409             :         }
  154410             : 
  154411           0 :      return result;
  154412             :    }
  154413             : 
  154414             : 
  154415             : /* #line 154416 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  154416             : 
  154417             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  154418             : 
  154419           0 : SgNode* SgXorAssignOp::copy ( SgCopyHelp& help) const
  154420             :    {
  154421           0 :      SgXorAssignOp* result = NULL;
  154422             : 
  154423             :   // printf ("Copy SgXorAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  154424             : 
  154425             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  154426             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  154427             :   // The default value of the depth is 0, so after this call the depth is 1!
  154428           0 :      help.incrementDepth();
  154429             : 
  154430             : #if 0
  154431             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  154432             :   // but it is not generally true that things can only be copied once!
  154433             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  154434             :   // AstAttribute* existingAttribute = const_cast<SgXorAssignOp*>(this)->attribute["copied"];
  154435             :      bool previouslyCopied = const_cast<SgXorAssignOp*>(this)->attribute.exists("copied");
  154436             :      if (previouslyCopied == true)
  154437             :         {
  154438             :           this->get_file_info()->display("Called from copy SgXorAssignOp: debug");
  154439             :         }
  154440             :      ROSE_ASSERT(previouslyCopied == false);
  154441             : 
  154442             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  154443             :      AstAttribute* newAttribute = new AstAttribute();
  154444             :      ROSE_ASSERT(newAttribute != NULL);
  154445             : 
  154446             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  154447             :      const_cast<SgXorAssignOp*>(this)->attribute.add("copied",newAttribute);
  154448             : #endif
  154449             : 
  154450             :   // Copy data members from base classes
  154451             :   // Copy constructor parameter data member: startOfConstruct_copy
  154452             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  154453             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  154454           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  154455           0 :      if ( p_startOfConstruct != NULL ) 
  154456             :         { 
  154457           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  154458             :         } 
  154459             :        else 
  154460             :         { 
  154461             :           startOfConstruct_copy = NULL; 
  154462             :         } 
  154463             :   // Copy constructor parameter data member: lhs_operand_i_copy
  154464           0 :      SgExpression* lhs_operand_i_copy; 
  154465             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  154466           0 :           if (get_lhs_operand_i() != NULL) 
  154467             :              { 
  154468           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  154469             :              } 
  154470             :             else 
  154471             :              { 
  154472             :                lhs_operand_i_copy = NULL; 
  154473             :              } 
  154474             :   // Copy constructor parameter data member: rhs_operand_i_copy
  154475           0 :      SgExpression* rhs_operand_i_copy; 
  154476             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  154477           0 :           if (get_rhs_operand_i() != NULL) 
  154478             :              { 
  154479           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  154480             :              } 
  154481             :             else 
  154482             :              { 
  154483             :                rhs_operand_i_copy = NULL; 
  154484             :              } 
  154485             :   // Copy constructor parameter data member: expression_type_copy
  154486             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  154487             :   // case: toBeCopied == COPY_DATA for expression_type
  154488           0 :      SgType* expression_type_copy = p_expression_type; 
  154489             :  
  154490             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  154491             : 
  154492             :   // Build an empty copy of this object (will be filled in, but 
  154493             :   // the parent can't be set and must be set by the caller)
  154494           0 :      result = new SgXorAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  154495           0 :      ROSE_ASSERT(result != NULL);
  154496             : 
  154497             :   // Copy data members of "this" class
  154498             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  154499             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  154500             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  154501           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  154502           0 :      if ( p_endOfConstruct != NULL ) 
  154503             :         { 
  154504           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  154505             :         } 
  154506             :        else 
  154507             :         { 
  154508             :           endOfConstruct_copy = NULL; 
  154509             :         } 
  154510             :   /* check for a valid pointer and delete if present */ 
  154511           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  154512             :   /* add assignment to result here */ 
  154513           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  154514             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  154515             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  154516             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  154517           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  154518           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  154519             :         { 
  154520           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  154521             :         } 
  154522             :        else 
  154523             :         { 
  154524             :           attachedPreprocessingInfoPtr_copy = NULL; 
  154525             :         } 
  154526             :   /* check for a valid pointer and delete if present */ 
  154527           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  154528             :   /* add assignment to result here */ 
  154529           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  154530             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  154531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  154532             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  154533           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  154534           0 :      if ( p_attributeMechanism != NULL ) 
  154535             :         { 
  154536           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  154537             :         } 
  154538             :        else 
  154539             :         { 
  154540             :           attributeMechanism_copy = NULL; 
  154541             :         } 
  154542             :   /* check for a valid pointer and delete if present */ 
  154543           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  154544             :   /* add assignment to result here */ 
  154545           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  154546             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  154547             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  154548             :   // case: toBeCopied == COPY_DATA for need_paren
  154549           0 :      bool need_paren_copy = p_need_paren; 
  154550           0 :      result->p_need_paren = need_paren_copy; 
  154551             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  154552             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  154553             :   // case: toBeCopied == COPY_DATA for lvalue
  154554           0 :      bool lvalue_copy = p_lvalue; 
  154555           0 :      result->p_lvalue = lvalue_copy; 
  154556             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  154557             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  154558             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  154559           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  154560           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  154561             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  154562             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  154563             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  154564           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  154565           0 :      if ( p_operatorPosition != NULL ) 
  154566             :         { 
  154567           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  154568             :         } 
  154569             :        else 
  154570             :         { 
  154571             :           operatorPosition_copy = NULL; 
  154572             :         } 
  154573             :   /* check for a valid pointer and delete if present */ 
  154574           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  154575             :   /* add assignment to result here */ 
  154576           0 :      result->p_operatorPosition = operatorPosition_copy; 
  154577             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  154578             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  154579             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  154580           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  154581           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  154582             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  154583           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  154584             :              { 
  154585           0 :                lhs_operand_i_copy->set_parent(result); 
  154586             :              } 
  154587             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  154588           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  154589             :              { 
  154590           0 :                rhs_operand_i_copy->set_parent(result); 
  154591             :              } 
  154592             : 
  154593             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  154594             : 
  154595             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  154596             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  154597             :   // fixupCopy(result,help);
  154598             : 
  154599             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  154600             :   // the Sg_File_Info objects that are built for the new IR nodes.
  154601           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  154602           0 :      if (locatedNode != NULL)
  154603             :         {
  154604             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  154605           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  154606           0 :           ROSE_ASSERT(start != NULL);
  154607             : #if 0
  154608             :        // Debugging information
  154609             :           if (start->get_parent() == NULL)
  154610             :              {
  154611             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154612             :              }
  154613             : #endif
  154614           0 :           start->set_parent(locatedNode);
  154615           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  154616             : 
  154617           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  154618             : 
  154619             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  154620             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  154621             :        // ROSE_ASSERT(end != NULL);
  154622           0 :           if (end == NULL)
  154623             :              {
  154624           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  154625             :              }
  154626             :             else
  154627             :              {
  154628             : #if 0
  154629             :             // Debugging information
  154630             :                if (end->get_parent() == NULL)
  154631             :                   {
  154632             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154633             :                   }
  154634             : #endif
  154635           0 :                end->set_parent(locatedNode);
  154636           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  154637             :              }
  154638             : 
  154639           0 :           SgExpression* expression = isSgExpression(result);
  154640           0 :           if (isSgExpression(this) != NULL)
  154641             :              {
  154642           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  154643             : 
  154644             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  154645           0 :                if (operatorPosition != NULL)
  154646             :                   {
  154647             : #if 0
  154648             :                  // Debugging information
  154649             :                     if (operatorPosition->get_parent() == NULL)
  154650             :                        {
  154651             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154652             :                        }
  154653             : #endif
  154654           0 :                     operatorPosition->set_parent(expression);
  154655           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  154656             :                   }
  154657             :              }
  154658             :         }
  154659             : 
  154660             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  154661           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  154662           0 :      if (initializedName != NULL)
  154663             :         {
  154664             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  154665           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  154666           0 :           ROSE_ASSERT(start != NULL);
  154667             : #if 0
  154668             :        // Debugging information
  154669             :           if (start->get_parent() == NULL)
  154670             :              {
  154671             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154672             :              }
  154673             : #endif
  154674           0 :           start->set_parent(initializedName);
  154675           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  154676             : 
  154677             : #if 0
  154678             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  154679             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  154680             : 
  154681             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  154682             :        // ROSE_ASSERT(end != NULL);
  154683             :           if (end == NULL)
  154684             :              {
  154685             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  154686             :              }
  154687             :             else
  154688             :              {
  154689             :                if (end->get_parent() == NULL)
  154690             :                   {
  154691             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154692             :                   }
  154693             :                end->set_parent(initializedName);
  154694             :                ROSE_ASSERT(end->get_parent() != NULL);
  154695             :              }
  154696             : #endif
  154697             :         }
  154698             : 
  154699             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  154700           0 :      help.insertCopiedNodePair(this,result);
  154701             : 
  154702             :   // printf ("End of copy SgXorAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  154703             : 
  154704             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  154705             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  154706           0 :      help.decrementDepth();
  154707             : 
  154708             :   // Test if this is the root of the copy!
  154709           0 :      if (help.get_depth() == 0)
  154710             :         {
  154711             :        // This is the original calling node.
  154712             : 
  154713             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  154714             :        // printf ("Calling SgXorAssignOp::fixupCopy() (from root of AST being copied) \n");
  154715             : #if ALT_FIXUP_COPY
  154716             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  154717           0 :           fixupCopy_scopes (result,help);
  154718           0 :           fixupCopy_symbols (result,help);
  154719           0 :           fixupCopy_references (result,help);
  154720             : #else
  154721             :           fixupCopy(result,help);
  154722             : #endif
  154723             :        // Allow this to be called recursively, so accumulate the state.
  154724             :        // Also, clear the state in the SgCopyHelp object.
  154725             :        // help.clearState();
  154726             :         }
  154727             : 
  154728           0 :      return result;
  154729             :    }
  154730             : 
  154731             : 
  154732             : /* #line 154733 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  154733             : 
  154734             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  154735             : 
  154736           0 : SgNode* SgLshiftAssignOp::copy ( SgCopyHelp& help) const
  154737             :    {
  154738           0 :      SgLshiftAssignOp* result = NULL;
  154739             : 
  154740             :   // printf ("Copy SgLshiftAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  154741             : 
  154742             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  154743             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  154744             :   // The default value of the depth is 0, so after this call the depth is 1!
  154745           0 :      help.incrementDepth();
  154746             : 
  154747             : #if 0
  154748             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  154749             :   // but it is not generally true that things can only be copied once!
  154750             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  154751             :   // AstAttribute* existingAttribute = const_cast<SgLshiftAssignOp*>(this)->attribute["copied"];
  154752             :      bool previouslyCopied = const_cast<SgLshiftAssignOp*>(this)->attribute.exists("copied");
  154753             :      if (previouslyCopied == true)
  154754             :         {
  154755             :           this->get_file_info()->display("Called from copy SgLshiftAssignOp: debug");
  154756             :         }
  154757             :      ROSE_ASSERT(previouslyCopied == false);
  154758             : 
  154759             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  154760             :      AstAttribute* newAttribute = new AstAttribute();
  154761             :      ROSE_ASSERT(newAttribute != NULL);
  154762             : 
  154763             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  154764             :      const_cast<SgLshiftAssignOp*>(this)->attribute.add("copied",newAttribute);
  154765             : #endif
  154766             : 
  154767             :   // Copy data members from base classes
  154768             :   // Copy constructor parameter data member: startOfConstruct_copy
  154769             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  154770             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  154771           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  154772           0 :      if ( p_startOfConstruct != NULL ) 
  154773             :         { 
  154774           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  154775             :         } 
  154776             :        else 
  154777             :         { 
  154778             :           startOfConstruct_copy = NULL; 
  154779             :         } 
  154780             :   // Copy constructor parameter data member: lhs_operand_i_copy
  154781           0 :      SgExpression* lhs_operand_i_copy; 
  154782             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  154783           0 :           if (get_lhs_operand_i() != NULL) 
  154784             :              { 
  154785           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  154786             :              } 
  154787             :             else 
  154788             :              { 
  154789             :                lhs_operand_i_copy = NULL; 
  154790             :              } 
  154791             :   // Copy constructor parameter data member: rhs_operand_i_copy
  154792           0 :      SgExpression* rhs_operand_i_copy; 
  154793             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  154794           0 :           if (get_rhs_operand_i() != NULL) 
  154795             :              { 
  154796           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  154797             :              } 
  154798             :             else 
  154799             :              { 
  154800             :                rhs_operand_i_copy = NULL; 
  154801             :              } 
  154802             :   // Copy constructor parameter data member: expression_type_copy
  154803             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  154804             :   // case: toBeCopied == COPY_DATA for expression_type
  154805           0 :      SgType* expression_type_copy = p_expression_type; 
  154806             :  
  154807             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  154808             : 
  154809             :   // Build an empty copy of this object (will be filled in, but 
  154810             :   // the parent can't be set and must be set by the caller)
  154811           0 :      result = new SgLshiftAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  154812           0 :      ROSE_ASSERT(result != NULL);
  154813             : 
  154814             :   // Copy data members of "this" class
  154815             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  154816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  154817             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  154818           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  154819           0 :      if ( p_endOfConstruct != NULL ) 
  154820             :         { 
  154821           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  154822             :         } 
  154823             :        else 
  154824             :         { 
  154825             :           endOfConstruct_copy = NULL; 
  154826             :         } 
  154827             :   /* check for a valid pointer and delete if present */ 
  154828           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  154829             :   /* add assignment to result here */ 
  154830           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  154831             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  154832             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  154833             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  154834           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  154835           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  154836             :         { 
  154837           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  154838             :         } 
  154839             :        else 
  154840             :         { 
  154841             :           attachedPreprocessingInfoPtr_copy = NULL; 
  154842             :         } 
  154843             :   /* check for a valid pointer and delete if present */ 
  154844           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  154845             :   /* add assignment to result here */ 
  154846           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  154847             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  154848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  154849             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  154850           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  154851           0 :      if ( p_attributeMechanism != NULL ) 
  154852             :         { 
  154853           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  154854             :         } 
  154855             :        else 
  154856             :         { 
  154857             :           attributeMechanism_copy = NULL; 
  154858             :         } 
  154859             :   /* check for a valid pointer and delete if present */ 
  154860           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  154861             :   /* add assignment to result here */ 
  154862           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  154863             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  154864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  154865             :   // case: toBeCopied == COPY_DATA for need_paren
  154866           0 :      bool need_paren_copy = p_need_paren; 
  154867           0 :      result->p_need_paren = need_paren_copy; 
  154868             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  154869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  154870             :   // case: toBeCopied == COPY_DATA for lvalue
  154871           0 :      bool lvalue_copy = p_lvalue; 
  154872           0 :      result->p_lvalue = lvalue_copy; 
  154873             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  154874             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  154875             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  154876           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  154877           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  154878             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  154879             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  154880             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  154881           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  154882           0 :      if ( p_operatorPosition != NULL ) 
  154883             :         { 
  154884           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  154885             :         } 
  154886             :        else 
  154887             :         { 
  154888             :           operatorPosition_copy = NULL; 
  154889             :         } 
  154890             :   /* check for a valid pointer and delete if present */ 
  154891           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  154892             :   /* add assignment to result here */ 
  154893           0 :      result->p_operatorPosition = operatorPosition_copy; 
  154894             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  154895             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  154896             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  154897           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  154898           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  154899             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  154900           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  154901             :              { 
  154902           0 :                lhs_operand_i_copy->set_parent(result); 
  154903             :              } 
  154904             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  154905           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  154906             :              { 
  154907           0 :                rhs_operand_i_copy->set_parent(result); 
  154908             :              } 
  154909             : 
  154910             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  154911             : 
  154912             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  154913             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  154914             :   // fixupCopy(result,help);
  154915             : 
  154916             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  154917             :   // the Sg_File_Info objects that are built for the new IR nodes.
  154918           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  154919           0 :      if (locatedNode != NULL)
  154920             :         {
  154921             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  154922           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  154923           0 :           ROSE_ASSERT(start != NULL);
  154924             : #if 0
  154925             :        // Debugging information
  154926             :           if (start->get_parent() == NULL)
  154927             :              {
  154928             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154929             :              }
  154930             : #endif
  154931           0 :           start->set_parent(locatedNode);
  154932           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  154933             : 
  154934           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  154935             : 
  154936             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  154937             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  154938             :        // ROSE_ASSERT(end != NULL);
  154939           0 :           if (end == NULL)
  154940             :              {
  154941           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  154942             :              }
  154943             :             else
  154944             :              {
  154945             : #if 0
  154946             :             // Debugging information
  154947             :                if (end->get_parent() == NULL)
  154948             :                   {
  154949             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154950             :                   }
  154951             : #endif
  154952           0 :                end->set_parent(locatedNode);
  154953           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  154954             :              }
  154955             : 
  154956           0 :           SgExpression* expression = isSgExpression(result);
  154957           0 :           if (isSgExpression(this) != NULL)
  154958             :              {
  154959           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  154960             : 
  154961             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  154962           0 :                if (operatorPosition != NULL)
  154963             :                   {
  154964             : #if 0
  154965             :                  // Debugging information
  154966             :                     if (operatorPosition->get_parent() == NULL)
  154967             :                        {
  154968             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154969             :                        }
  154970             : #endif
  154971           0 :                     operatorPosition->set_parent(expression);
  154972           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  154973             :                   }
  154974             :              }
  154975             :         }
  154976             : 
  154977             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  154978           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  154979           0 :      if (initializedName != NULL)
  154980             :         {
  154981             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  154982           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  154983           0 :           ROSE_ASSERT(start != NULL);
  154984             : #if 0
  154985             :        // Debugging information
  154986             :           if (start->get_parent() == NULL)
  154987             :              {
  154988             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  154989             :              }
  154990             : #endif
  154991           0 :           start->set_parent(initializedName);
  154992           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  154993             : 
  154994             : #if 0
  154995             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  154996             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  154997             : 
  154998             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  154999             :        // ROSE_ASSERT(end != NULL);
  155000             :           if (end == NULL)
  155001             :              {
  155002             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  155003             :              }
  155004             :             else
  155005             :              {
  155006             :                if (end->get_parent() == NULL)
  155007             :                   {
  155008             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155009             :                   }
  155010             :                end->set_parent(initializedName);
  155011             :                ROSE_ASSERT(end->get_parent() != NULL);
  155012             :              }
  155013             : #endif
  155014             :         }
  155015             : 
  155016             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  155017           0 :      help.insertCopiedNodePair(this,result);
  155018             : 
  155019             :   // printf ("End of copy SgLshiftAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  155020             : 
  155021             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  155022             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  155023           0 :      help.decrementDepth();
  155024             : 
  155025             :   // Test if this is the root of the copy!
  155026           0 :      if (help.get_depth() == 0)
  155027             :         {
  155028             :        // This is the original calling node.
  155029             : 
  155030             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  155031             :        // printf ("Calling SgLshiftAssignOp::fixupCopy() (from root of AST being copied) \n");
  155032             : #if ALT_FIXUP_COPY
  155033             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  155034           0 :           fixupCopy_scopes (result,help);
  155035           0 :           fixupCopy_symbols (result,help);
  155036           0 :           fixupCopy_references (result,help);
  155037             : #else
  155038             :           fixupCopy(result,help);
  155039             : #endif
  155040             :        // Allow this to be called recursively, so accumulate the state.
  155041             :        // Also, clear the state in the SgCopyHelp object.
  155042             :        // help.clearState();
  155043             :         }
  155044             : 
  155045           0 :      return result;
  155046             :    }
  155047             : 
  155048             : 
  155049             : /* #line 155050 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  155050             : 
  155051             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  155052             : 
  155053           0 : SgNode* SgRshiftAssignOp::copy ( SgCopyHelp& help) const
  155054             :    {
  155055           0 :      SgRshiftAssignOp* result = NULL;
  155056             : 
  155057             :   // printf ("Copy SgRshiftAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  155058             : 
  155059             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  155060             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  155061             :   // The default value of the depth is 0, so after this call the depth is 1!
  155062           0 :      help.incrementDepth();
  155063             : 
  155064             : #if 0
  155065             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  155066             :   // but it is not generally true that things can only be copied once!
  155067             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  155068             :   // AstAttribute* existingAttribute = const_cast<SgRshiftAssignOp*>(this)->attribute["copied"];
  155069             :      bool previouslyCopied = const_cast<SgRshiftAssignOp*>(this)->attribute.exists("copied");
  155070             :      if (previouslyCopied == true)
  155071             :         {
  155072             :           this->get_file_info()->display("Called from copy SgRshiftAssignOp: debug");
  155073             :         }
  155074             :      ROSE_ASSERT(previouslyCopied == false);
  155075             : 
  155076             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  155077             :      AstAttribute* newAttribute = new AstAttribute();
  155078             :      ROSE_ASSERT(newAttribute != NULL);
  155079             : 
  155080             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  155081             :      const_cast<SgRshiftAssignOp*>(this)->attribute.add("copied",newAttribute);
  155082             : #endif
  155083             : 
  155084             :   // Copy data members from base classes
  155085             :   // Copy constructor parameter data member: startOfConstruct_copy
  155086             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  155087             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  155088           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  155089           0 :      if ( p_startOfConstruct != NULL ) 
  155090             :         { 
  155091           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  155092             :         } 
  155093             :        else 
  155094             :         { 
  155095             :           startOfConstruct_copy = NULL; 
  155096             :         } 
  155097             :   // Copy constructor parameter data member: lhs_operand_i_copy
  155098           0 :      SgExpression* lhs_operand_i_copy; 
  155099             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  155100           0 :           if (get_lhs_operand_i() != NULL) 
  155101             :              { 
  155102           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  155103             :              } 
  155104             :             else 
  155105             :              { 
  155106             :                lhs_operand_i_copy = NULL; 
  155107             :              } 
  155108             :   // Copy constructor parameter data member: rhs_operand_i_copy
  155109           0 :      SgExpression* rhs_operand_i_copy; 
  155110             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  155111           0 :           if (get_rhs_operand_i() != NULL) 
  155112             :              { 
  155113           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  155114             :              } 
  155115             :             else 
  155116             :              { 
  155117             :                rhs_operand_i_copy = NULL; 
  155118             :              } 
  155119             :   // Copy constructor parameter data member: expression_type_copy
  155120             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  155121             :   // case: toBeCopied == COPY_DATA for expression_type
  155122           0 :      SgType* expression_type_copy = p_expression_type; 
  155123             :  
  155124             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  155125             : 
  155126             :   // Build an empty copy of this object (will be filled in, but 
  155127             :   // the parent can't be set and must be set by the caller)
  155128           0 :      result = new SgRshiftAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  155129           0 :      ROSE_ASSERT(result != NULL);
  155130             : 
  155131             :   // Copy data members of "this" class
  155132             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  155133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  155134             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  155135           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  155136           0 :      if ( p_endOfConstruct != NULL ) 
  155137             :         { 
  155138           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  155139             :         } 
  155140             :        else 
  155141             :         { 
  155142             :           endOfConstruct_copy = NULL; 
  155143             :         } 
  155144             :   /* check for a valid pointer and delete if present */ 
  155145           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  155146             :   /* add assignment to result here */ 
  155147           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  155148             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  155149             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  155150             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  155151           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  155152           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  155153             :         { 
  155154           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  155155             :         } 
  155156             :        else 
  155157             :         { 
  155158             :           attachedPreprocessingInfoPtr_copy = NULL; 
  155159             :         } 
  155160             :   /* check for a valid pointer and delete if present */ 
  155161           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  155162             :   /* add assignment to result here */ 
  155163           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  155164             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  155165             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  155166             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  155167           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  155168           0 :      if ( p_attributeMechanism != NULL ) 
  155169             :         { 
  155170           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  155171             :         } 
  155172             :        else 
  155173             :         { 
  155174             :           attributeMechanism_copy = NULL; 
  155175             :         } 
  155176             :   /* check for a valid pointer and delete if present */ 
  155177           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  155178             :   /* add assignment to result here */ 
  155179           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  155180             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  155181             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  155182             :   // case: toBeCopied == COPY_DATA for need_paren
  155183           0 :      bool need_paren_copy = p_need_paren; 
  155184           0 :      result->p_need_paren = need_paren_copy; 
  155185             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  155186             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  155187             :   // case: toBeCopied == COPY_DATA for lvalue
  155188           0 :      bool lvalue_copy = p_lvalue; 
  155189           0 :      result->p_lvalue = lvalue_copy; 
  155190             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  155191             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  155192             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  155193           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  155194           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  155195             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  155196             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  155197             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  155198           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  155199           0 :      if ( p_operatorPosition != NULL ) 
  155200             :         { 
  155201           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  155202             :         } 
  155203             :        else 
  155204             :         { 
  155205             :           operatorPosition_copy = NULL; 
  155206             :         } 
  155207             :   /* check for a valid pointer and delete if present */ 
  155208           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  155209             :   /* add assignment to result here */ 
  155210           0 :      result->p_operatorPosition = operatorPosition_copy; 
  155211             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  155212             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  155213             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  155214           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  155215           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  155216             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  155217           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  155218             :              { 
  155219           0 :                lhs_operand_i_copy->set_parent(result); 
  155220             :              } 
  155221             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  155222           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  155223             :              { 
  155224           0 :                rhs_operand_i_copy->set_parent(result); 
  155225             :              } 
  155226             : 
  155227             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  155228             : 
  155229             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  155230             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  155231             :   // fixupCopy(result,help);
  155232             : 
  155233             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  155234             :   // the Sg_File_Info objects that are built for the new IR nodes.
  155235           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  155236           0 :      if (locatedNode != NULL)
  155237             :         {
  155238             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  155239           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  155240           0 :           ROSE_ASSERT(start != NULL);
  155241             : #if 0
  155242             :        // Debugging information
  155243             :           if (start->get_parent() == NULL)
  155244             :              {
  155245             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155246             :              }
  155247             : #endif
  155248           0 :           start->set_parent(locatedNode);
  155249           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  155250             : 
  155251           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  155252             : 
  155253             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  155254             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  155255             :        // ROSE_ASSERT(end != NULL);
  155256           0 :           if (end == NULL)
  155257             :              {
  155258           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  155259             :              }
  155260             :             else
  155261             :              {
  155262             : #if 0
  155263             :             // Debugging information
  155264             :                if (end->get_parent() == NULL)
  155265             :                   {
  155266             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155267             :                   }
  155268             : #endif
  155269           0 :                end->set_parent(locatedNode);
  155270           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  155271             :              }
  155272             : 
  155273           0 :           SgExpression* expression = isSgExpression(result);
  155274           0 :           if (isSgExpression(this) != NULL)
  155275             :              {
  155276           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  155277             : 
  155278             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  155279           0 :                if (operatorPosition != NULL)
  155280             :                   {
  155281             : #if 0
  155282             :                  // Debugging information
  155283             :                     if (operatorPosition->get_parent() == NULL)
  155284             :                        {
  155285             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155286             :                        }
  155287             : #endif
  155288           0 :                     operatorPosition->set_parent(expression);
  155289           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  155290             :                   }
  155291             :              }
  155292             :         }
  155293             : 
  155294             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  155295           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  155296           0 :      if (initializedName != NULL)
  155297             :         {
  155298             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  155299           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  155300           0 :           ROSE_ASSERT(start != NULL);
  155301             : #if 0
  155302             :        // Debugging information
  155303             :           if (start->get_parent() == NULL)
  155304             :              {
  155305             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155306             :              }
  155307             : #endif
  155308           0 :           start->set_parent(initializedName);
  155309           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  155310             : 
  155311             : #if 0
  155312             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  155313             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  155314             : 
  155315             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  155316             :        // ROSE_ASSERT(end != NULL);
  155317             :           if (end == NULL)
  155318             :              {
  155319             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  155320             :              }
  155321             :             else
  155322             :              {
  155323             :                if (end->get_parent() == NULL)
  155324             :                   {
  155325             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155326             :                   }
  155327             :                end->set_parent(initializedName);
  155328             :                ROSE_ASSERT(end->get_parent() != NULL);
  155329             :              }
  155330             : #endif
  155331             :         }
  155332             : 
  155333             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  155334           0 :      help.insertCopiedNodePair(this,result);
  155335             : 
  155336             :   // printf ("End of copy SgRshiftAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  155337             : 
  155338             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  155339             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  155340           0 :      help.decrementDepth();
  155341             : 
  155342             :   // Test if this is the root of the copy!
  155343           0 :      if (help.get_depth() == 0)
  155344             :         {
  155345             :        // This is the original calling node.
  155346             : 
  155347             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  155348             :        // printf ("Calling SgRshiftAssignOp::fixupCopy() (from root of AST being copied) \n");
  155349             : #if ALT_FIXUP_COPY
  155350             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  155351           0 :           fixupCopy_scopes (result,help);
  155352           0 :           fixupCopy_symbols (result,help);
  155353           0 :           fixupCopy_references (result,help);
  155354             : #else
  155355             :           fixupCopy(result,help);
  155356             : #endif
  155357             :        // Allow this to be called recursively, so accumulate the state.
  155358             :        // Also, clear the state in the SgCopyHelp object.
  155359             :        // help.clearState();
  155360             :         }
  155361             : 
  155362           0 :      return result;
  155363             :    }
  155364             : 
  155365             : 
  155366             : /* #line 155367 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  155367             : 
  155368             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  155369             : 
  155370           0 : SgNode* SgIntegerDivideAssignOp::copy ( SgCopyHelp& help) const
  155371             :    {
  155372           0 :      SgIntegerDivideAssignOp* result = NULL;
  155373             : 
  155374             :   // printf ("Copy SgIntegerDivideAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  155375             : 
  155376             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  155377             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  155378             :   // The default value of the depth is 0, so after this call the depth is 1!
  155379           0 :      help.incrementDepth();
  155380             : 
  155381             : #if 0
  155382             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  155383             :   // but it is not generally true that things can only be copied once!
  155384             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  155385             :   // AstAttribute* existingAttribute = const_cast<SgIntegerDivideAssignOp*>(this)->attribute["copied"];
  155386             :      bool previouslyCopied = const_cast<SgIntegerDivideAssignOp*>(this)->attribute.exists("copied");
  155387             :      if (previouslyCopied == true)
  155388             :         {
  155389             :           this->get_file_info()->display("Called from copy SgIntegerDivideAssignOp: debug");
  155390             :         }
  155391             :      ROSE_ASSERT(previouslyCopied == false);
  155392             : 
  155393             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  155394             :      AstAttribute* newAttribute = new AstAttribute();
  155395             :      ROSE_ASSERT(newAttribute != NULL);
  155396             : 
  155397             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  155398             :      const_cast<SgIntegerDivideAssignOp*>(this)->attribute.add("copied",newAttribute);
  155399             : #endif
  155400             : 
  155401             :   // Copy data members from base classes
  155402             :   // Copy constructor parameter data member: startOfConstruct_copy
  155403             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  155404             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  155405           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  155406           0 :      if ( p_startOfConstruct != NULL ) 
  155407             :         { 
  155408           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  155409             :         } 
  155410             :        else 
  155411             :         { 
  155412             :           startOfConstruct_copy = NULL; 
  155413             :         } 
  155414             :   // Copy constructor parameter data member: lhs_operand_i_copy
  155415           0 :      SgExpression* lhs_operand_i_copy; 
  155416             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  155417           0 :           if (get_lhs_operand_i() != NULL) 
  155418             :              { 
  155419           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  155420             :              } 
  155421             :             else 
  155422             :              { 
  155423             :                lhs_operand_i_copy = NULL; 
  155424             :              } 
  155425             :   // Copy constructor parameter data member: rhs_operand_i_copy
  155426           0 :      SgExpression* rhs_operand_i_copy; 
  155427             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  155428           0 :           if (get_rhs_operand_i() != NULL) 
  155429             :              { 
  155430           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  155431             :              } 
  155432             :             else 
  155433             :              { 
  155434             :                rhs_operand_i_copy = NULL; 
  155435             :              } 
  155436             :   // Copy constructor parameter data member: expression_type_copy
  155437             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  155438             :   // case: toBeCopied == COPY_DATA for expression_type
  155439           0 :      SgType* expression_type_copy = p_expression_type; 
  155440             :  
  155441             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  155442             : 
  155443             :   // Build an empty copy of this object (will be filled in, but 
  155444             :   // the parent can't be set and must be set by the caller)
  155445           0 :      result = new SgIntegerDivideAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  155446           0 :      ROSE_ASSERT(result != NULL);
  155447             : 
  155448             :   // Copy data members of "this" class
  155449             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  155450             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  155451             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  155452           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  155453           0 :      if ( p_endOfConstruct != NULL ) 
  155454             :         { 
  155455           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  155456             :         } 
  155457             :        else 
  155458             :         { 
  155459             :           endOfConstruct_copy = NULL; 
  155460             :         } 
  155461             :   /* check for a valid pointer and delete if present */ 
  155462           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  155463             :   /* add assignment to result here */ 
  155464           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  155465             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  155466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  155467             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  155468           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  155469           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  155470             :         { 
  155471           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  155472             :         } 
  155473             :        else 
  155474             :         { 
  155475             :           attachedPreprocessingInfoPtr_copy = NULL; 
  155476             :         } 
  155477             :   /* check for a valid pointer and delete if present */ 
  155478           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  155479             :   /* add assignment to result here */ 
  155480           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  155481             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  155482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  155483             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  155484           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  155485           0 :      if ( p_attributeMechanism != NULL ) 
  155486             :         { 
  155487           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  155488             :         } 
  155489             :        else 
  155490             :         { 
  155491             :           attributeMechanism_copy = NULL; 
  155492             :         } 
  155493             :   /* check for a valid pointer and delete if present */ 
  155494           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  155495             :   /* add assignment to result here */ 
  155496           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  155497             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  155498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  155499             :   // case: toBeCopied == COPY_DATA for need_paren
  155500           0 :      bool need_paren_copy = p_need_paren; 
  155501           0 :      result->p_need_paren = need_paren_copy; 
  155502             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  155503             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  155504             :   // case: toBeCopied == COPY_DATA for lvalue
  155505           0 :      bool lvalue_copy = p_lvalue; 
  155506           0 :      result->p_lvalue = lvalue_copy; 
  155507             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  155508             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  155509             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  155510           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  155511           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  155512             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  155513             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  155514             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  155515           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  155516           0 :      if ( p_operatorPosition != NULL ) 
  155517             :         { 
  155518           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  155519             :         } 
  155520             :        else 
  155521             :         { 
  155522             :           operatorPosition_copy = NULL; 
  155523             :         } 
  155524             :   /* check for a valid pointer and delete if present */ 
  155525           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  155526             :   /* add assignment to result here */ 
  155527           0 :      result->p_operatorPosition = operatorPosition_copy; 
  155528             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  155529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  155530             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  155531           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  155532           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  155533             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  155534           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  155535             :              { 
  155536           0 :                lhs_operand_i_copy->set_parent(result); 
  155537             :              } 
  155538             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  155539           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  155540             :              { 
  155541           0 :                rhs_operand_i_copy->set_parent(result); 
  155542             :              } 
  155543             : 
  155544             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  155545             : 
  155546             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  155547             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  155548             :   // fixupCopy(result,help);
  155549             : 
  155550             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  155551             :   // the Sg_File_Info objects that are built for the new IR nodes.
  155552           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  155553           0 :      if (locatedNode != NULL)
  155554             :         {
  155555             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  155556           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  155557           0 :           ROSE_ASSERT(start != NULL);
  155558             : #if 0
  155559             :        // Debugging information
  155560             :           if (start->get_parent() == NULL)
  155561             :              {
  155562             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155563             :              }
  155564             : #endif
  155565           0 :           start->set_parent(locatedNode);
  155566           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  155567             : 
  155568           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  155569             : 
  155570             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  155571             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  155572             :        // ROSE_ASSERT(end != NULL);
  155573           0 :           if (end == NULL)
  155574             :              {
  155575           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  155576             :              }
  155577             :             else
  155578             :              {
  155579             : #if 0
  155580             :             // Debugging information
  155581             :                if (end->get_parent() == NULL)
  155582             :                   {
  155583             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155584             :                   }
  155585             : #endif
  155586           0 :                end->set_parent(locatedNode);
  155587           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  155588             :              }
  155589             : 
  155590           0 :           SgExpression* expression = isSgExpression(result);
  155591           0 :           if (isSgExpression(this) != NULL)
  155592             :              {
  155593           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  155594             : 
  155595             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  155596           0 :                if (operatorPosition != NULL)
  155597             :                   {
  155598             : #if 0
  155599             :                  // Debugging information
  155600             :                     if (operatorPosition->get_parent() == NULL)
  155601             :                        {
  155602             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155603             :                        }
  155604             : #endif
  155605           0 :                     operatorPosition->set_parent(expression);
  155606           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  155607             :                   }
  155608             :              }
  155609             :         }
  155610             : 
  155611             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  155612           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  155613           0 :      if (initializedName != NULL)
  155614             :         {
  155615             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  155616           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  155617           0 :           ROSE_ASSERT(start != NULL);
  155618             : #if 0
  155619             :        // Debugging information
  155620             :           if (start->get_parent() == NULL)
  155621             :              {
  155622             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155623             :              }
  155624             : #endif
  155625           0 :           start->set_parent(initializedName);
  155626           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  155627             : 
  155628             : #if 0
  155629             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  155630             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  155631             : 
  155632             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  155633             :        // ROSE_ASSERT(end != NULL);
  155634             :           if (end == NULL)
  155635             :              {
  155636             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  155637             :              }
  155638             :             else
  155639             :              {
  155640             :                if (end->get_parent() == NULL)
  155641             :                   {
  155642             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155643             :                   }
  155644             :                end->set_parent(initializedName);
  155645             :                ROSE_ASSERT(end->get_parent() != NULL);
  155646             :              }
  155647             : #endif
  155648             :         }
  155649             : 
  155650             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  155651           0 :      help.insertCopiedNodePair(this,result);
  155652             : 
  155653             :   // printf ("End of copy SgIntegerDivideAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  155654             : 
  155655             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  155656             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  155657           0 :      help.decrementDepth();
  155658             : 
  155659             :   // Test if this is the root of the copy!
  155660           0 :      if (help.get_depth() == 0)
  155661             :         {
  155662             :        // This is the original calling node.
  155663             : 
  155664             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  155665             :        // printf ("Calling SgIntegerDivideAssignOp::fixupCopy() (from root of AST being copied) \n");
  155666             : #if ALT_FIXUP_COPY
  155667             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  155668           0 :           fixupCopy_scopes (result,help);
  155669           0 :           fixupCopy_symbols (result,help);
  155670           0 :           fixupCopy_references (result,help);
  155671             : #else
  155672             :           fixupCopy(result,help);
  155673             : #endif
  155674             :        // Allow this to be called recursively, so accumulate the state.
  155675             :        // Also, clear the state in the SgCopyHelp object.
  155676             :        // help.clearState();
  155677             :         }
  155678             : 
  155679           0 :      return result;
  155680             :    }
  155681             : 
  155682             : 
  155683             : /* #line 155684 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  155684             : 
  155685             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  155686             : 
  155687           0 : SgNode* SgExponentiationAssignOp::copy ( SgCopyHelp& help) const
  155688             :    {
  155689           0 :      SgExponentiationAssignOp* result = NULL;
  155690             : 
  155691             :   // printf ("Copy SgExponentiationAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  155692             : 
  155693             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  155694             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  155695             :   // The default value of the depth is 0, so after this call the depth is 1!
  155696           0 :      help.incrementDepth();
  155697             : 
  155698             : #if 0
  155699             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  155700             :   // but it is not generally true that things can only be copied once!
  155701             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  155702             :   // AstAttribute* existingAttribute = const_cast<SgExponentiationAssignOp*>(this)->attribute["copied"];
  155703             :      bool previouslyCopied = const_cast<SgExponentiationAssignOp*>(this)->attribute.exists("copied");
  155704             :      if (previouslyCopied == true)
  155705             :         {
  155706             :           this->get_file_info()->display("Called from copy SgExponentiationAssignOp: debug");
  155707             :         }
  155708             :      ROSE_ASSERT(previouslyCopied == false);
  155709             : 
  155710             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  155711             :      AstAttribute* newAttribute = new AstAttribute();
  155712             :      ROSE_ASSERT(newAttribute != NULL);
  155713             : 
  155714             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  155715             :      const_cast<SgExponentiationAssignOp*>(this)->attribute.add("copied",newAttribute);
  155716             : #endif
  155717             : 
  155718             :   // Copy data members from base classes
  155719             :   // Copy constructor parameter data member: startOfConstruct_copy
  155720             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  155721             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  155722           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  155723           0 :      if ( p_startOfConstruct != NULL ) 
  155724             :         { 
  155725           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  155726             :         } 
  155727             :        else 
  155728             :         { 
  155729             :           startOfConstruct_copy = NULL; 
  155730             :         } 
  155731             :   // Copy constructor parameter data member: lhs_operand_i_copy
  155732           0 :      SgExpression* lhs_operand_i_copy; 
  155733             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  155734           0 :           if (get_lhs_operand_i() != NULL) 
  155735             :              { 
  155736           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  155737             :              } 
  155738             :             else 
  155739             :              { 
  155740             :                lhs_operand_i_copy = NULL; 
  155741             :              } 
  155742             :   // Copy constructor parameter data member: rhs_operand_i_copy
  155743           0 :      SgExpression* rhs_operand_i_copy; 
  155744             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  155745           0 :           if (get_rhs_operand_i() != NULL) 
  155746             :              { 
  155747           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  155748             :              } 
  155749             :             else 
  155750             :              { 
  155751             :                rhs_operand_i_copy = NULL; 
  155752             :              } 
  155753             :   // Copy constructor parameter data member: expression_type_copy
  155754             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  155755             :   // case: toBeCopied == COPY_DATA for expression_type
  155756           0 :      SgType* expression_type_copy = p_expression_type; 
  155757             :  
  155758             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  155759             : 
  155760             :   // Build an empty copy of this object (will be filled in, but 
  155761             :   // the parent can't be set and must be set by the caller)
  155762           0 :      result = new SgExponentiationAssignOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  155763           0 :      ROSE_ASSERT(result != NULL);
  155764             : 
  155765             :   // Copy data members of "this" class
  155766             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  155767             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  155768             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  155769           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  155770           0 :      if ( p_endOfConstruct != NULL ) 
  155771             :         { 
  155772           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  155773             :         } 
  155774             :        else 
  155775             :         { 
  155776             :           endOfConstruct_copy = NULL; 
  155777             :         } 
  155778             :   /* check for a valid pointer and delete if present */ 
  155779           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  155780             :   /* add assignment to result here */ 
  155781           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  155782             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  155783             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  155784             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  155785           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  155786           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  155787             :         { 
  155788           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  155789             :         } 
  155790             :        else 
  155791             :         { 
  155792             :           attachedPreprocessingInfoPtr_copy = NULL; 
  155793             :         } 
  155794             :   /* check for a valid pointer and delete if present */ 
  155795           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  155796             :   /* add assignment to result here */ 
  155797           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  155798             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  155799             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  155800             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  155801           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  155802           0 :      if ( p_attributeMechanism != NULL ) 
  155803             :         { 
  155804           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  155805             :         } 
  155806             :        else 
  155807             :         { 
  155808             :           attributeMechanism_copy = NULL; 
  155809             :         } 
  155810             :   /* check for a valid pointer and delete if present */ 
  155811           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  155812             :   /* add assignment to result here */ 
  155813           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  155814             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  155815             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  155816             :   // case: toBeCopied == COPY_DATA for need_paren
  155817           0 :      bool need_paren_copy = p_need_paren; 
  155818           0 :      result->p_need_paren = need_paren_copy; 
  155819             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  155820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  155821             :   // case: toBeCopied == COPY_DATA for lvalue
  155822           0 :      bool lvalue_copy = p_lvalue; 
  155823           0 :      result->p_lvalue = lvalue_copy; 
  155824             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  155825             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  155826             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  155827           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  155828           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  155829             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  155830             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  155831             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  155832           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  155833           0 :      if ( p_operatorPosition != NULL ) 
  155834             :         { 
  155835           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  155836             :         } 
  155837             :        else 
  155838             :         { 
  155839             :           operatorPosition_copy = NULL; 
  155840             :         } 
  155841             :   /* check for a valid pointer and delete if present */ 
  155842           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  155843             :   /* add assignment to result here */ 
  155844           0 :      result->p_operatorPosition = operatorPosition_copy; 
  155845             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  155846             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  155847             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  155848           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  155849           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  155850             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  155851           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  155852             :              { 
  155853           0 :                lhs_operand_i_copy->set_parent(result); 
  155854             :              } 
  155855             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  155856           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  155857             :              { 
  155858           0 :                rhs_operand_i_copy->set_parent(result); 
  155859             :              } 
  155860             : 
  155861             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  155862             : 
  155863             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  155864             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  155865             :   // fixupCopy(result,help);
  155866             : 
  155867             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  155868             :   // the Sg_File_Info objects that are built for the new IR nodes.
  155869           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  155870           0 :      if (locatedNode != NULL)
  155871             :         {
  155872             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  155873           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  155874           0 :           ROSE_ASSERT(start != NULL);
  155875             : #if 0
  155876             :        // Debugging information
  155877             :           if (start->get_parent() == NULL)
  155878             :              {
  155879             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155880             :              }
  155881             : #endif
  155882           0 :           start->set_parent(locatedNode);
  155883           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  155884             : 
  155885           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  155886             : 
  155887             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  155888             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  155889             :        // ROSE_ASSERT(end != NULL);
  155890           0 :           if (end == NULL)
  155891             :              {
  155892           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  155893             :              }
  155894             :             else
  155895             :              {
  155896             : #if 0
  155897             :             // Debugging information
  155898             :                if (end->get_parent() == NULL)
  155899             :                   {
  155900             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155901             :                   }
  155902             : #endif
  155903           0 :                end->set_parent(locatedNode);
  155904           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  155905             :              }
  155906             : 
  155907           0 :           SgExpression* expression = isSgExpression(result);
  155908           0 :           if (isSgExpression(this) != NULL)
  155909             :              {
  155910           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  155911             : 
  155912             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  155913           0 :                if (operatorPosition != NULL)
  155914             :                   {
  155915             : #if 0
  155916             :                  // Debugging information
  155917             :                     if (operatorPosition->get_parent() == NULL)
  155918             :                        {
  155919             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155920             :                        }
  155921             : #endif
  155922           0 :                     operatorPosition->set_parent(expression);
  155923           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  155924             :                   }
  155925             :              }
  155926             :         }
  155927             : 
  155928             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  155929           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  155930           0 :      if (initializedName != NULL)
  155931             :         {
  155932             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  155933           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  155934           0 :           ROSE_ASSERT(start != NULL);
  155935             : #if 0
  155936             :        // Debugging information
  155937             :           if (start->get_parent() == NULL)
  155938             :              {
  155939             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155940             :              }
  155941             : #endif
  155942           0 :           start->set_parent(initializedName);
  155943           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  155944             : 
  155945             : #if 0
  155946             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  155947             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  155948             : 
  155949             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  155950             :        // ROSE_ASSERT(end != NULL);
  155951             :           if (end == NULL)
  155952             :              {
  155953             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  155954             :              }
  155955             :             else
  155956             :              {
  155957             :                if (end->get_parent() == NULL)
  155958             :                   {
  155959             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  155960             :                   }
  155961             :                end->set_parent(initializedName);
  155962             :                ROSE_ASSERT(end->get_parent() != NULL);
  155963             :              }
  155964             : #endif
  155965             :         }
  155966             : 
  155967             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  155968           0 :      help.insertCopiedNodePair(this,result);
  155969             : 
  155970             :   // printf ("End of copy SgExponentiationAssignOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  155971             : 
  155972             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  155973             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  155974           0 :      help.decrementDepth();
  155975             : 
  155976             :   // Test if this is the root of the copy!
  155977           0 :      if (help.get_depth() == 0)
  155978             :         {
  155979             :        // This is the original calling node.
  155980             : 
  155981             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  155982             :        // printf ("Calling SgExponentiationAssignOp::fixupCopy() (from root of AST being copied) \n");
  155983             : #if ALT_FIXUP_COPY
  155984             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  155985           0 :           fixupCopy_scopes (result,help);
  155986           0 :           fixupCopy_symbols (result,help);
  155987           0 :           fixupCopy_references (result,help);
  155988             : #else
  155989             :           fixupCopy(result,help);
  155990             : #endif
  155991             :        // Allow this to be called recursively, so accumulate the state.
  155992             :        // Also, clear the state in the SgCopyHelp object.
  155993             :        // help.clearState();
  155994             :         }
  155995             : 
  155996           0 :      return result;
  155997             :    }
  155998             : 
  155999             : 
  156000             : /* #line 156001 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  156001             : 
  156002             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156003             : 
  156004           0 : SgNode* SgMembershipOp::copy ( SgCopyHelp& help) const
  156005             :    {
  156006           0 :      SgMembershipOp* result = NULL;
  156007             : 
  156008             :   // printf ("Copy SgMembershipOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  156009             : 
  156010             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  156011             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  156012             :   // The default value of the depth is 0, so after this call the depth is 1!
  156013           0 :      help.incrementDepth();
  156014             : 
  156015             : #if 0
  156016             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  156017             :   // but it is not generally true that things can only be copied once!
  156018             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  156019             :   // AstAttribute* existingAttribute = const_cast<SgMembershipOp*>(this)->attribute["copied"];
  156020             :      bool previouslyCopied = const_cast<SgMembershipOp*>(this)->attribute.exists("copied");
  156021             :      if (previouslyCopied == true)
  156022             :         {
  156023             :           this->get_file_info()->display("Called from copy SgMembershipOp: debug");
  156024             :         }
  156025             :      ROSE_ASSERT(previouslyCopied == false);
  156026             : 
  156027             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  156028             :      AstAttribute* newAttribute = new AstAttribute();
  156029             :      ROSE_ASSERT(newAttribute != NULL);
  156030             : 
  156031             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  156032             :      const_cast<SgMembershipOp*>(this)->attribute.add("copied",newAttribute);
  156033             : #endif
  156034             : 
  156035             :   // Copy data members from base classes
  156036             :   // Copy constructor parameter data member: startOfConstruct_copy
  156037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  156038             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  156039           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  156040           0 :      if ( p_startOfConstruct != NULL ) 
  156041             :         { 
  156042           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  156043             :         } 
  156044             :        else 
  156045             :         { 
  156046             :           startOfConstruct_copy = NULL; 
  156047             :         } 
  156048             :   // Copy constructor parameter data member: lhs_operand_i_copy
  156049           0 :      SgExpression* lhs_operand_i_copy; 
  156050             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  156051           0 :           if (get_lhs_operand_i() != NULL) 
  156052             :              { 
  156053           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  156054             :              } 
  156055             :             else 
  156056             :              { 
  156057             :                lhs_operand_i_copy = NULL; 
  156058             :              } 
  156059             :   // Copy constructor parameter data member: rhs_operand_i_copy
  156060           0 :      SgExpression* rhs_operand_i_copy; 
  156061             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  156062           0 :           if (get_rhs_operand_i() != NULL) 
  156063             :              { 
  156064           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  156065             :              } 
  156066             :             else 
  156067             :              { 
  156068             :                rhs_operand_i_copy = NULL; 
  156069             :              } 
  156070             :   // Copy constructor parameter data member: expression_type_copy
  156071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  156072             :   // case: toBeCopied == COPY_DATA for expression_type
  156073           0 :      SgType* expression_type_copy = p_expression_type; 
  156074             :  
  156075             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156076             : 
  156077             :   // Build an empty copy of this object (will be filled in, but 
  156078             :   // the parent can't be set and must be set by the caller)
  156079           0 :      result = new SgMembershipOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  156080           0 :      ROSE_ASSERT(result != NULL);
  156081             : 
  156082             :   // Copy data members of "this" class
  156083             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  156084             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  156085             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  156086           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  156087           0 :      if ( p_endOfConstruct != NULL ) 
  156088             :         { 
  156089           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  156090             :         } 
  156091             :        else 
  156092             :         { 
  156093             :           endOfConstruct_copy = NULL; 
  156094             :         } 
  156095             :   /* check for a valid pointer and delete if present */ 
  156096           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  156097             :   /* add assignment to result here */ 
  156098           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  156099             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  156100             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  156101             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  156102           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  156103           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  156104             :         { 
  156105           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  156106             :         } 
  156107             :        else 
  156108             :         { 
  156109             :           attachedPreprocessingInfoPtr_copy = NULL; 
  156110             :         } 
  156111             :   /* check for a valid pointer and delete if present */ 
  156112           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  156113             :   /* add assignment to result here */ 
  156114           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  156115             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  156116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  156117             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  156118           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  156119           0 :      if ( p_attributeMechanism != NULL ) 
  156120             :         { 
  156121           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  156122             :         } 
  156123             :        else 
  156124             :         { 
  156125             :           attributeMechanism_copy = NULL; 
  156126             :         } 
  156127             :   /* check for a valid pointer and delete if present */ 
  156128           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  156129             :   /* add assignment to result here */ 
  156130           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  156131             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  156132             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  156133             :   // case: toBeCopied == COPY_DATA for need_paren
  156134           0 :      bool need_paren_copy = p_need_paren; 
  156135           0 :      result->p_need_paren = need_paren_copy; 
  156136             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  156137             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  156138             :   // case: toBeCopied == COPY_DATA for lvalue
  156139           0 :      bool lvalue_copy = p_lvalue; 
  156140           0 :      result->p_lvalue = lvalue_copy; 
  156141             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  156142             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  156143             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  156144           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  156145           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  156146             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  156147             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  156148             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  156149           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  156150           0 :      if ( p_operatorPosition != NULL ) 
  156151             :         { 
  156152           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  156153             :         } 
  156154             :        else 
  156155             :         { 
  156156             :           operatorPosition_copy = NULL; 
  156157             :         } 
  156158             :   /* check for a valid pointer and delete if present */ 
  156159           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  156160             :   /* add assignment to result here */ 
  156161           0 :      result->p_operatorPosition = operatorPosition_copy; 
  156162             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  156163             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  156164             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  156165           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  156166           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  156167             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  156168           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  156169             :              { 
  156170           0 :                lhs_operand_i_copy->set_parent(result); 
  156171             :              } 
  156172             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  156173           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  156174             :              { 
  156175           0 :                rhs_operand_i_copy->set_parent(result); 
  156176             :              } 
  156177             : 
  156178             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156179             : 
  156180             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  156181             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  156182             :   // fixupCopy(result,help);
  156183             : 
  156184             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  156185             :   // the Sg_File_Info objects that are built for the new IR nodes.
  156186           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  156187           0 :      if (locatedNode != NULL)
  156188             :         {
  156189             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  156190           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  156191           0 :           ROSE_ASSERT(start != NULL);
  156192             : #if 0
  156193             :        // Debugging information
  156194             :           if (start->get_parent() == NULL)
  156195             :              {
  156196             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156197             :              }
  156198             : #endif
  156199           0 :           start->set_parent(locatedNode);
  156200           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  156201             : 
  156202           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  156203             : 
  156204             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  156205             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  156206             :        // ROSE_ASSERT(end != NULL);
  156207           0 :           if (end == NULL)
  156208             :              {
  156209           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  156210             :              }
  156211             :             else
  156212             :              {
  156213             : #if 0
  156214             :             // Debugging information
  156215             :                if (end->get_parent() == NULL)
  156216             :                   {
  156217             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156218             :                   }
  156219             : #endif
  156220           0 :                end->set_parent(locatedNode);
  156221           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  156222             :              }
  156223             : 
  156224           0 :           SgExpression* expression = isSgExpression(result);
  156225           0 :           if (isSgExpression(this) != NULL)
  156226             :              {
  156227           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  156228             : 
  156229             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  156230           0 :                if (operatorPosition != NULL)
  156231             :                   {
  156232             : #if 0
  156233             :                  // Debugging information
  156234             :                     if (operatorPosition->get_parent() == NULL)
  156235             :                        {
  156236             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156237             :                        }
  156238             : #endif
  156239           0 :                     operatorPosition->set_parent(expression);
  156240           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  156241             :                   }
  156242             :              }
  156243             :         }
  156244             : 
  156245             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  156246           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  156247           0 :      if (initializedName != NULL)
  156248             :         {
  156249             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  156250           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  156251           0 :           ROSE_ASSERT(start != NULL);
  156252             : #if 0
  156253             :        // Debugging information
  156254             :           if (start->get_parent() == NULL)
  156255             :              {
  156256             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156257             :              }
  156258             : #endif
  156259           0 :           start->set_parent(initializedName);
  156260           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  156261             : 
  156262             : #if 0
  156263             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  156264             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  156265             : 
  156266             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  156267             :        // ROSE_ASSERT(end != NULL);
  156268             :           if (end == NULL)
  156269             :              {
  156270             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  156271             :              }
  156272             :             else
  156273             :              {
  156274             :                if (end->get_parent() == NULL)
  156275             :                   {
  156276             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156277             :                   }
  156278             :                end->set_parent(initializedName);
  156279             :                ROSE_ASSERT(end->get_parent() != NULL);
  156280             :              }
  156281             : #endif
  156282             :         }
  156283             : 
  156284             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  156285           0 :      help.insertCopiedNodePair(this,result);
  156286             : 
  156287             :   // printf ("End of copy SgMembershipOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  156288             : 
  156289             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  156290             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  156291           0 :      help.decrementDepth();
  156292             : 
  156293             :   // Test if this is the root of the copy!
  156294           0 :      if (help.get_depth() == 0)
  156295             :         {
  156296             :        // This is the original calling node.
  156297             : 
  156298             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  156299             :        // printf ("Calling SgMembershipOp::fixupCopy() (from root of AST being copied) \n");
  156300             : #if ALT_FIXUP_COPY
  156301             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  156302           0 :           fixupCopy_scopes (result,help);
  156303           0 :           fixupCopy_symbols (result,help);
  156304           0 :           fixupCopy_references (result,help);
  156305             : #else
  156306             :           fixupCopy(result,help);
  156307             : #endif
  156308             :        // Allow this to be called recursively, so accumulate the state.
  156309             :        // Also, clear the state in the SgCopyHelp object.
  156310             :        // help.clearState();
  156311             :         }
  156312             : 
  156313           0 :      return result;
  156314             :    }
  156315             : 
  156316             : 
  156317             : /* #line 156318 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  156318             : 
  156319             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156320             : 
  156321           0 : SgNode* SgSpaceshipOp::copy ( SgCopyHelp& help) const
  156322             :    {
  156323           0 :      SgSpaceshipOp* result = NULL;
  156324             : 
  156325             :   // printf ("Copy SgSpaceshipOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  156326             : 
  156327             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  156328             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  156329             :   // The default value of the depth is 0, so after this call the depth is 1!
  156330           0 :      help.incrementDepth();
  156331             : 
  156332             : #if 0
  156333             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  156334             :   // but it is not generally true that things can only be copied once!
  156335             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  156336             :   // AstAttribute* existingAttribute = const_cast<SgSpaceshipOp*>(this)->attribute["copied"];
  156337             :      bool previouslyCopied = const_cast<SgSpaceshipOp*>(this)->attribute.exists("copied");
  156338             :      if (previouslyCopied == true)
  156339             :         {
  156340             :           this->get_file_info()->display("Called from copy SgSpaceshipOp: debug");
  156341             :         }
  156342             :      ROSE_ASSERT(previouslyCopied == false);
  156343             : 
  156344             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  156345             :      AstAttribute* newAttribute = new AstAttribute();
  156346             :      ROSE_ASSERT(newAttribute != NULL);
  156347             : 
  156348             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  156349             :      const_cast<SgSpaceshipOp*>(this)->attribute.add("copied",newAttribute);
  156350             : #endif
  156351             : 
  156352             :   // Copy data members from base classes
  156353             :   // Copy constructor parameter data member: startOfConstruct_copy
  156354             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  156355             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  156356           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  156357           0 :      if ( p_startOfConstruct != NULL ) 
  156358             :         { 
  156359           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  156360             :         } 
  156361             :        else 
  156362             :         { 
  156363             :           startOfConstruct_copy = NULL; 
  156364             :         } 
  156365             :   // Copy constructor parameter data member: lhs_operand_i_copy
  156366           0 :      SgExpression* lhs_operand_i_copy; 
  156367             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  156368           0 :           if (get_lhs_operand_i() != NULL) 
  156369             :              { 
  156370           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  156371             :              } 
  156372             :             else 
  156373             :              { 
  156374             :                lhs_operand_i_copy = NULL; 
  156375             :              } 
  156376             :   // Copy constructor parameter data member: rhs_operand_i_copy
  156377           0 :      SgExpression* rhs_operand_i_copy; 
  156378             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  156379           0 :           if (get_rhs_operand_i() != NULL) 
  156380             :              { 
  156381           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  156382             :              } 
  156383             :             else 
  156384             :              { 
  156385             :                rhs_operand_i_copy = NULL; 
  156386             :              } 
  156387             :   // Copy constructor parameter data member: expression_type_copy
  156388             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  156389             :   // case: toBeCopied == COPY_DATA for expression_type
  156390           0 :      SgType* expression_type_copy = p_expression_type; 
  156391             :  
  156392             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156393             : 
  156394             :   // Build an empty copy of this object (will be filled in, but 
  156395             :   // the parent can't be set and must be set by the caller)
  156396           0 :      result = new SgSpaceshipOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  156397           0 :      ROSE_ASSERT(result != NULL);
  156398             : 
  156399             :   // Copy data members of "this" class
  156400             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  156401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  156402             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  156403           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  156404           0 :      if ( p_endOfConstruct != NULL ) 
  156405             :         { 
  156406           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  156407             :         } 
  156408             :        else 
  156409             :         { 
  156410             :           endOfConstruct_copy = NULL; 
  156411             :         } 
  156412             :   /* check for a valid pointer and delete if present */ 
  156413           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  156414             :   /* add assignment to result here */ 
  156415           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  156416             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  156417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  156418             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  156419           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  156420           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  156421             :         { 
  156422           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  156423             :         } 
  156424             :        else 
  156425             :         { 
  156426             :           attachedPreprocessingInfoPtr_copy = NULL; 
  156427             :         } 
  156428             :   /* check for a valid pointer and delete if present */ 
  156429           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  156430             :   /* add assignment to result here */ 
  156431           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  156432             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  156433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  156434             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  156435           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  156436           0 :      if ( p_attributeMechanism != NULL ) 
  156437             :         { 
  156438           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  156439             :         } 
  156440             :        else 
  156441             :         { 
  156442             :           attributeMechanism_copy = NULL; 
  156443             :         } 
  156444             :   /* check for a valid pointer and delete if present */ 
  156445           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  156446             :   /* add assignment to result here */ 
  156447           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  156448             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  156449             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  156450             :   // case: toBeCopied == COPY_DATA for need_paren
  156451           0 :      bool need_paren_copy = p_need_paren; 
  156452           0 :      result->p_need_paren = need_paren_copy; 
  156453             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  156454             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  156455             :   // case: toBeCopied == COPY_DATA for lvalue
  156456           0 :      bool lvalue_copy = p_lvalue; 
  156457           0 :      result->p_lvalue = lvalue_copy; 
  156458             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  156459             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  156460             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  156461           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  156462           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  156463             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  156464             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  156465             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  156466           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  156467           0 :      if ( p_operatorPosition != NULL ) 
  156468             :         { 
  156469           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  156470             :         } 
  156471             :        else 
  156472             :         { 
  156473             :           operatorPosition_copy = NULL; 
  156474             :         } 
  156475             :   /* check for a valid pointer and delete if present */ 
  156476           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  156477             :   /* add assignment to result here */ 
  156478           0 :      result->p_operatorPosition = operatorPosition_copy; 
  156479             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  156480             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  156481             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  156482           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  156483           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  156484             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  156485           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  156486             :              { 
  156487           0 :                lhs_operand_i_copy->set_parent(result); 
  156488             :              } 
  156489             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  156490           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  156491             :              { 
  156492           0 :                rhs_operand_i_copy->set_parent(result); 
  156493             :              } 
  156494             : 
  156495             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156496             : 
  156497             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  156498             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  156499             :   // fixupCopy(result,help);
  156500             : 
  156501             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  156502             :   // the Sg_File_Info objects that are built for the new IR nodes.
  156503           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  156504           0 :      if (locatedNode != NULL)
  156505             :         {
  156506             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  156507           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  156508           0 :           ROSE_ASSERT(start != NULL);
  156509             : #if 0
  156510             :        // Debugging information
  156511             :           if (start->get_parent() == NULL)
  156512             :              {
  156513             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156514             :              }
  156515             : #endif
  156516           0 :           start->set_parent(locatedNode);
  156517           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  156518             : 
  156519           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  156520             : 
  156521             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  156522             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  156523             :        // ROSE_ASSERT(end != NULL);
  156524           0 :           if (end == NULL)
  156525             :              {
  156526           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  156527             :              }
  156528             :             else
  156529             :              {
  156530             : #if 0
  156531             :             // Debugging information
  156532             :                if (end->get_parent() == NULL)
  156533             :                   {
  156534             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156535             :                   }
  156536             : #endif
  156537           0 :                end->set_parent(locatedNode);
  156538           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  156539             :              }
  156540             : 
  156541           0 :           SgExpression* expression = isSgExpression(result);
  156542           0 :           if (isSgExpression(this) != NULL)
  156543             :              {
  156544           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  156545             : 
  156546             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  156547           0 :                if (operatorPosition != NULL)
  156548             :                   {
  156549             : #if 0
  156550             :                  // Debugging information
  156551             :                     if (operatorPosition->get_parent() == NULL)
  156552             :                        {
  156553             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156554             :                        }
  156555             : #endif
  156556           0 :                     operatorPosition->set_parent(expression);
  156557           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  156558             :                   }
  156559             :              }
  156560             :         }
  156561             : 
  156562             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  156563           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  156564           0 :      if (initializedName != NULL)
  156565             :         {
  156566             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  156567           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  156568           0 :           ROSE_ASSERT(start != NULL);
  156569             : #if 0
  156570             :        // Debugging information
  156571             :           if (start->get_parent() == NULL)
  156572             :              {
  156573             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156574             :              }
  156575             : #endif
  156576           0 :           start->set_parent(initializedName);
  156577           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  156578             : 
  156579             : #if 0
  156580             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  156581             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  156582             : 
  156583             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  156584             :        // ROSE_ASSERT(end != NULL);
  156585             :           if (end == NULL)
  156586             :              {
  156587             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  156588             :              }
  156589             :             else
  156590             :              {
  156591             :                if (end->get_parent() == NULL)
  156592             :                   {
  156593             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156594             :                   }
  156595             :                end->set_parent(initializedName);
  156596             :                ROSE_ASSERT(end->get_parent() != NULL);
  156597             :              }
  156598             : #endif
  156599             :         }
  156600             : 
  156601             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  156602           0 :      help.insertCopiedNodePair(this,result);
  156603             : 
  156604             :   // printf ("End of copy SgSpaceshipOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  156605             : 
  156606             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  156607             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  156608           0 :      help.decrementDepth();
  156609             : 
  156610             :   // Test if this is the root of the copy!
  156611           0 :      if (help.get_depth() == 0)
  156612             :         {
  156613             :        // This is the original calling node.
  156614             : 
  156615             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  156616             :        // printf ("Calling SgSpaceshipOp::fixupCopy() (from root of AST being copied) \n");
  156617             : #if ALT_FIXUP_COPY
  156618             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  156619           0 :           fixupCopy_scopes (result,help);
  156620           0 :           fixupCopy_symbols (result,help);
  156621           0 :           fixupCopy_references (result,help);
  156622             : #else
  156623             :           fixupCopy(result,help);
  156624             : #endif
  156625             :        // Allow this to be called recursively, so accumulate the state.
  156626             :        // Also, clear the state in the SgCopyHelp object.
  156627             :        // help.clearState();
  156628             :         }
  156629             : 
  156630           0 :      return result;
  156631             :    }
  156632             : 
  156633             : 
  156634             : /* #line 156635 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  156635             : 
  156636             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156637             : 
  156638           0 : SgNode* SgNonMembershipOp::copy ( SgCopyHelp& help) const
  156639             :    {
  156640           0 :      SgNonMembershipOp* result = NULL;
  156641             : 
  156642             :   // printf ("Copy SgNonMembershipOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  156643             : 
  156644             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  156645             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  156646             :   // The default value of the depth is 0, so after this call the depth is 1!
  156647           0 :      help.incrementDepth();
  156648             : 
  156649             : #if 0
  156650             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  156651             :   // but it is not generally true that things can only be copied once!
  156652             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  156653             :   // AstAttribute* existingAttribute = const_cast<SgNonMembershipOp*>(this)->attribute["copied"];
  156654             :      bool previouslyCopied = const_cast<SgNonMembershipOp*>(this)->attribute.exists("copied");
  156655             :      if (previouslyCopied == true)
  156656             :         {
  156657             :           this->get_file_info()->display("Called from copy SgNonMembershipOp: debug");
  156658             :         }
  156659             :      ROSE_ASSERT(previouslyCopied == false);
  156660             : 
  156661             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  156662             :      AstAttribute* newAttribute = new AstAttribute();
  156663             :      ROSE_ASSERT(newAttribute != NULL);
  156664             : 
  156665             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  156666             :      const_cast<SgNonMembershipOp*>(this)->attribute.add("copied",newAttribute);
  156667             : #endif
  156668             : 
  156669             :   // Copy data members from base classes
  156670             :   // Copy constructor parameter data member: startOfConstruct_copy
  156671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  156672             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  156673           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  156674           0 :      if ( p_startOfConstruct != NULL ) 
  156675             :         { 
  156676           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  156677             :         } 
  156678             :        else 
  156679             :         { 
  156680             :           startOfConstruct_copy = NULL; 
  156681             :         } 
  156682             :   // Copy constructor parameter data member: lhs_operand_i_copy
  156683           0 :      SgExpression* lhs_operand_i_copy; 
  156684             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  156685           0 :           if (get_lhs_operand_i() != NULL) 
  156686             :              { 
  156687           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  156688             :              } 
  156689             :             else 
  156690             :              { 
  156691             :                lhs_operand_i_copy = NULL; 
  156692             :              } 
  156693             :   // Copy constructor parameter data member: rhs_operand_i_copy
  156694           0 :      SgExpression* rhs_operand_i_copy; 
  156695             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  156696           0 :           if (get_rhs_operand_i() != NULL) 
  156697             :              { 
  156698           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  156699             :              } 
  156700             :             else 
  156701             :              { 
  156702             :                rhs_operand_i_copy = NULL; 
  156703             :              } 
  156704             :   // Copy constructor parameter data member: expression_type_copy
  156705             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  156706             :   // case: toBeCopied == COPY_DATA for expression_type
  156707           0 :      SgType* expression_type_copy = p_expression_type; 
  156708             :  
  156709             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156710             : 
  156711             :   // Build an empty copy of this object (will be filled in, but 
  156712             :   // the parent can't be set and must be set by the caller)
  156713           0 :      result = new SgNonMembershipOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  156714           0 :      ROSE_ASSERT(result != NULL);
  156715             : 
  156716             :   // Copy data members of "this" class
  156717             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  156718             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  156719             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  156720           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  156721           0 :      if ( p_endOfConstruct != NULL ) 
  156722             :         { 
  156723           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  156724             :         } 
  156725             :        else 
  156726             :         { 
  156727             :           endOfConstruct_copy = NULL; 
  156728             :         } 
  156729             :   /* check for a valid pointer and delete if present */ 
  156730           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  156731             :   /* add assignment to result here */ 
  156732           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  156733             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  156734             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  156735             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  156736           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  156737           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  156738             :         { 
  156739           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  156740             :         } 
  156741             :        else 
  156742             :         { 
  156743             :           attachedPreprocessingInfoPtr_copy = NULL; 
  156744             :         } 
  156745             :   /* check for a valid pointer and delete if present */ 
  156746           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  156747             :   /* add assignment to result here */ 
  156748           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  156749             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  156750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  156751             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  156752           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  156753           0 :      if ( p_attributeMechanism != NULL ) 
  156754             :         { 
  156755           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  156756             :         } 
  156757             :        else 
  156758             :         { 
  156759             :           attributeMechanism_copy = NULL; 
  156760             :         } 
  156761             :   /* check for a valid pointer and delete if present */ 
  156762           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  156763             :   /* add assignment to result here */ 
  156764           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  156765             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  156766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  156767             :   // case: toBeCopied == COPY_DATA for need_paren
  156768           0 :      bool need_paren_copy = p_need_paren; 
  156769           0 :      result->p_need_paren = need_paren_copy; 
  156770             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  156771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  156772             :   // case: toBeCopied == COPY_DATA for lvalue
  156773           0 :      bool lvalue_copy = p_lvalue; 
  156774           0 :      result->p_lvalue = lvalue_copy; 
  156775             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  156776             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  156777             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  156778           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  156779           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  156780             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  156781             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  156782             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  156783           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  156784           0 :      if ( p_operatorPosition != NULL ) 
  156785             :         { 
  156786           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  156787             :         } 
  156788             :        else 
  156789             :         { 
  156790             :           operatorPosition_copy = NULL; 
  156791             :         } 
  156792             :   /* check for a valid pointer and delete if present */ 
  156793           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  156794             :   /* add assignment to result here */ 
  156795           0 :      result->p_operatorPosition = operatorPosition_copy; 
  156796             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  156797             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  156798             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  156799           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  156800           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  156801             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  156802           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  156803             :              { 
  156804           0 :                lhs_operand_i_copy->set_parent(result); 
  156805             :              } 
  156806             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  156807           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  156808             :              { 
  156809           0 :                rhs_operand_i_copy->set_parent(result); 
  156810             :              } 
  156811             : 
  156812             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156813             : 
  156814             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  156815             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  156816             :   // fixupCopy(result,help);
  156817             : 
  156818             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  156819             :   // the Sg_File_Info objects that are built for the new IR nodes.
  156820           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  156821           0 :      if (locatedNode != NULL)
  156822             :         {
  156823             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  156824           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  156825           0 :           ROSE_ASSERT(start != NULL);
  156826             : #if 0
  156827             :        // Debugging information
  156828             :           if (start->get_parent() == NULL)
  156829             :              {
  156830             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156831             :              }
  156832             : #endif
  156833           0 :           start->set_parent(locatedNode);
  156834           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  156835             : 
  156836           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  156837             : 
  156838             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  156839             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  156840             :        // ROSE_ASSERT(end != NULL);
  156841           0 :           if (end == NULL)
  156842             :              {
  156843           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  156844             :              }
  156845             :             else
  156846             :              {
  156847             : #if 0
  156848             :             // Debugging information
  156849             :                if (end->get_parent() == NULL)
  156850             :                   {
  156851             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156852             :                   }
  156853             : #endif
  156854           0 :                end->set_parent(locatedNode);
  156855           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  156856             :              }
  156857             : 
  156858           0 :           SgExpression* expression = isSgExpression(result);
  156859           0 :           if (isSgExpression(this) != NULL)
  156860             :              {
  156861           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  156862             : 
  156863             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  156864           0 :                if (operatorPosition != NULL)
  156865             :                   {
  156866             : #if 0
  156867             :                  // Debugging information
  156868             :                     if (operatorPosition->get_parent() == NULL)
  156869             :                        {
  156870             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156871             :                        }
  156872             : #endif
  156873           0 :                     operatorPosition->set_parent(expression);
  156874           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  156875             :                   }
  156876             :              }
  156877             :         }
  156878             : 
  156879             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  156880           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  156881           0 :      if (initializedName != NULL)
  156882             :         {
  156883             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  156884           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  156885           0 :           ROSE_ASSERT(start != NULL);
  156886             : #if 0
  156887             :        // Debugging information
  156888             :           if (start->get_parent() == NULL)
  156889             :              {
  156890             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156891             :              }
  156892             : #endif
  156893           0 :           start->set_parent(initializedName);
  156894           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  156895             : 
  156896             : #if 0
  156897             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  156898             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  156899             : 
  156900             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  156901             :        // ROSE_ASSERT(end != NULL);
  156902             :           if (end == NULL)
  156903             :              {
  156904             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  156905             :              }
  156906             :             else
  156907             :              {
  156908             :                if (end->get_parent() == NULL)
  156909             :                   {
  156910             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  156911             :                   }
  156912             :                end->set_parent(initializedName);
  156913             :                ROSE_ASSERT(end->get_parent() != NULL);
  156914             :              }
  156915             : #endif
  156916             :         }
  156917             : 
  156918             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  156919           0 :      help.insertCopiedNodePair(this,result);
  156920             : 
  156921             :   // printf ("End of copy SgNonMembershipOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  156922             : 
  156923             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  156924             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  156925           0 :      help.decrementDepth();
  156926             : 
  156927             :   // Test if this is the root of the copy!
  156928           0 :      if (help.get_depth() == 0)
  156929             :         {
  156930             :        // This is the original calling node.
  156931             : 
  156932             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  156933             :        // printf ("Calling SgNonMembershipOp::fixupCopy() (from root of AST being copied) \n");
  156934             : #if ALT_FIXUP_COPY
  156935             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  156936           0 :           fixupCopy_scopes (result,help);
  156937           0 :           fixupCopy_symbols (result,help);
  156938           0 :           fixupCopy_references (result,help);
  156939             : #else
  156940             :           fixupCopy(result,help);
  156941             : #endif
  156942             :        // Allow this to be called recursively, so accumulate the state.
  156943             :        // Also, clear the state in the SgCopyHelp object.
  156944             :        // help.clearState();
  156945             :         }
  156946             : 
  156947           0 :      return result;
  156948             :    }
  156949             : 
  156950             : 
  156951             : /* #line 156952 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  156952             : 
  156953             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  156954             : 
  156955           0 : SgNode* SgIsOp::copy ( SgCopyHelp& help) const
  156956             :    {
  156957           0 :      SgIsOp* result = NULL;
  156958             : 
  156959             :   // printf ("Copy SgIsOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  156960             : 
  156961             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  156962             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  156963             :   // The default value of the depth is 0, so after this call the depth is 1!
  156964           0 :      help.incrementDepth();
  156965             : 
  156966             : #if 0
  156967             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  156968             :   // but it is not generally true that things can only be copied once!
  156969             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  156970             :   // AstAttribute* existingAttribute = const_cast<SgIsOp*>(this)->attribute["copied"];
  156971             :      bool previouslyCopied = const_cast<SgIsOp*>(this)->attribute.exists("copied");
  156972             :      if (previouslyCopied == true)
  156973             :         {
  156974             :           this->get_file_info()->display("Called from copy SgIsOp: debug");
  156975             :         }
  156976             :      ROSE_ASSERT(previouslyCopied == false);
  156977             : 
  156978             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  156979             :      AstAttribute* newAttribute = new AstAttribute();
  156980             :      ROSE_ASSERT(newAttribute != NULL);
  156981             : 
  156982             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  156983             :      const_cast<SgIsOp*>(this)->attribute.add("copied",newAttribute);
  156984             : #endif
  156985             : 
  156986             :   // Copy data members from base classes
  156987             :   // Copy constructor parameter data member: startOfConstruct_copy
  156988             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  156989             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  156990           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  156991           0 :      if ( p_startOfConstruct != NULL ) 
  156992             :         { 
  156993           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  156994             :         } 
  156995             :        else 
  156996             :         { 
  156997             :           startOfConstruct_copy = NULL; 
  156998             :         } 
  156999             :   // Copy constructor parameter data member: lhs_operand_i_copy
  157000           0 :      SgExpression* lhs_operand_i_copy; 
  157001             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  157002           0 :           if (get_lhs_operand_i() != NULL) 
  157003             :              { 
  157004           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  157005             :              } 
  157006             :             else 
  157007             :              { 
  157008             :                lhs_operand_i_copy = NULL; 
  157009             :              } 
  157010             :   // Copy constructor parameter data member: rhs_operand_i_copy
  157011           0 :      SgExpression* rhs_operand_i_copy; 
  157012             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  157013           0 :           if (get_rhs_operand_i() != NULL) 
  157014             :              { 
  157015           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  157016             :              } 
  157017             :             else 
  157018             :              { 
  157019             :                rhs_operand_i_copy = NULL; 
  157020             :              } 
  157021             :   // Copy constructor parameter data member: expression_type_copy
  157022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  157023             :   // case: toBeCopied == COPY_DATA for expression_type
  157024           0 :      SgType* expression_type_copy = p_expression_type; 
  157025             :  
  157026             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157027             : 
  157028             :   // Build an empty copy of this object (will be filled in, but 
  157029             :   // the parent can't be set and must be set by the caller)
  157030           0 :      result = new SgIsOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  157031           0 :      ROSE_ASSERT(result != NULL);
  157032             : 
  157033             :   // Copy data members of "this" class
  157034             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  157035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  157036             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  157037           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  157038           0 :      if ( p_endOfConstruct != NULL ) 
  157039             :         { 
  157040           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  157041             :         } 
  157042             :        else 
  157043             :         { 
  157044             :           endOfConstruct_copy = NULL; 
  157045             :         } 
  157046             :   /* check for a valid pointer and delete if present */ 
  157047           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  157048             :   /* add assignment to result here */ 
  157049           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  157050             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  157051             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  157052             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  157053           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  157054           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  157055             :         { 
  157056           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  157057             :         } 
  157058             :        else 
  157059             :         { 
  157060             :           attachedPreprocessingInfoPtr_copy = NULL; 
  157061             :         } 
  157062             :   /* check for a valid pointer and delete if present */ 
  157063           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  157064             :   /* add assignment to result here */ 
  157065           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  157066             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  157067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  157068             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  157069           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  157070           0 :      if ( p_attributeMechanism != NULL ) 
  157071             :         { 
  157072           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  157073             :         } 
  157074             :        else 
  157075             :         { 
  157076             :           attributeMechanism_copy = NULL; 
  157077             :         } 
  157078             :   /* check for a valid pointer and delete if present */ 
  157079           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  157080             :   /* add assignment to result here */ 
  157081           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  157082             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  157083             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  157084             :   // case: toBeCopied == COPY_DATA for need_paren
  157085           0 :      bool need_paren_copy = p_need_paren; 
  157086           0 :      result->p_need_paren = need_paren_copy; 
  157087             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  157088             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  157089             :   // case: toBeCopied == COPY_DATA for lvalue
  157090           0 :      bool lvalue_copy = p_lvalue; 
  157091           0 :      result->p_lvalue = lvalue_copy; 
  157092             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  157093             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  157094             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  157095           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  157096           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  157097             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  157098             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  157099             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  157100           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  157101           0 :      if ( p_operatorPosition != NULL ) 
  157102             :         { 
  157103           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  157104             :         } 
  157105             :        else 
  157106             :         { 
  157107             :           operatorPosition_copy = NULL; 
  157108             :         } 
  157109             :   /* check for a valid pointer and delete if present */ 
  157110           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  157111             :   /* add assignment to result here */ 
  157112           0 :      result->p_operatorPosition = operatorPosition_copy; 
  157113             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  157114             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  157115             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  157116           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  157117           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  157118             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  157119           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  157120             :              { 
  157121           0 :                lhs_operand_i_copy->set_parent(result); 
  157122             :              } 
  157123             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  157124           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  157125             :              { 
  157126           0 :                rhs_operand_i_copy->set_parent(result); 
  157127             :              } 
  157128             : 
  157129             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157130             : 
  157131             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  157132             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  157133             :   // fixupCopy(result,help);
  157134             : 
  157135             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  157136             :   // the Sg_File_Info objects that are built for the new IR nodes.
  157137           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  157138           0 :      if (locatedNode != NULL)
  157139             :         {
  157140             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  157141           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  157142           0 :           ROSE_ASSERT(start != NULL);
  157143             : #if 0
  157144             :        // Debugging information
  157145             :           if (start->get_parent() == NULL)
  157146             :              {
  157147             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157148             :              }
  157149             : #endif
  157150           0 :           start->set_parent(locatedNode);
  157151           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  157152             : 
  157153           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  157154             : 
  157155             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  157156             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  157157             :        // ROSE_ASSERT(end != NULL);
  157158           0 :           if (end == NULL)
  157159             :              {
  157160           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  157161             :              }
  157162             :             else
  157163             :              {
  157164             : #if 0
  157165             :             // Debugging information
  157166             :                if (end->get_parent() == NULL)
  157167             :                   {
  157168             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157169             :                   }
  157170             : #endif
  157171           0 :                end->set_parent(locatedNode);
  157172           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  157173             :              }
  157174             : 
  157175           0 :           SgExpression* expression = isSgExpression(result);
  157176           0 :           if (isSgExpression(this) != NULL)
  157177             :              {
  157178           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  157179             : 
  157180             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  157181           0 :                if (operatorPosition != NULL)
  157182             :                   {
  157183             : #if 0
  157184             :                  // Debugging information
  157185             :                     if (operatorPosition->get_parent() == NULL)
  157186             :                        {
  157187             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157188             :                        }
  157189             : #endif
  157190           0 :                     operatorPosition->set_parent(expression);
  157191           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  157192             :                   }
  157193             :              }
  157194             :         }
  157195             : 
  157196             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  157197           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  157198           0 :      if (initializedName != NULL)
  157199             :         {
  157200             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  157201           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  157202           0 :           ROSE_ASSERT(start != NULL);
  157203             : #if 0
  157204             :        // Debugging information
  157205             :           if (start->get_parent() == NULL)
  157206             :              {
  157207             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157208             :              }
  157209             : #endif
  157210           0 :           start->set_parent(initializedName);
  157211           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  157212             : 
  157213             : #if 0
  157214             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  157215             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  157216             : 
  157217             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  157218             :        // ROSE_ASSERT(end != NULL);
  157219             :           if (end == NULL)
  157220             :              {
  157221             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  157222             :              }
  157223             :             else
  157224             :              {
  157225             :                if (end->get_parent() == NULL)
  157226             :                   {
  157227             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157228             :                   }
  157229             :                end->set_parent(initializedName);
  157230             :                ROSE_ASSERT(end->get_parent() != NULL);
  157231             :              }
  157232             : #endif
  157233             :         }
  157234             : 
  157235             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  157236           0 :      help.insertCopiedNodePair(this,result);
  157237             : 
  157238             :   // printf ("End of copy SgIsOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  157239             : 
  157240             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  157241             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  157242           0 :      help.decrementDepth();
  157243             : 
  157244             :   // Test if this is the root of the copy!
  157245           0 :      if (help.get_depth() == 0)
  157246             :         {
  157247             :        // This is the original calling node.
  157248             : 
  157249             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  157250             :        // printf ("Calling SgIsOp::fixupCopy() (from root of AST being copied) \n");
  157251             : #if ALT_FIXUP_COPY
  157252             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  157253           0 :           fixupCopy_scopes (result,help);
  157254           0 :           fixupCopy_symbols (result,help);
  157255           0 :           fixupCopy_references (result,help);
  157256             : #else
  157257             :           fixupCopy(result,help);
  157258             : #endif
  157259             :        // Allow this to be called recursively, so accumulate the state.
  157260             :        // Also, clear the state in the SgCopyHelp object.
  157261             :        // help.clearState();
  157262             :         }
  157263             : 
  157264           0 :      return result;
  157265             :    }
  157266             : 
  157267             : 
  157268             : /* #line 157269 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  157269             : 
  157270             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157271             : 
  157272           0 : SgNode* SgIsNotOp::copy ( SgCopyHelp& help) const
  157273             :    {
  157274           0 :      SgIsNotOp* result = NULL;
  157275             : 
  157276             :   // printf ("Copy SgIsNotOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  157277             : 
  157278             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  157279             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  157280             :   // The default value of the depth is 0, so after this call the depth is 1!
  157281           0 :      help.incrementDepth();
  157282             : 
  157283             : #if 0
  157284             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  157285             :   // but it is not generally true that things can only be copied once!
  157286             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  157287             :   // AstAttribute* existingAttribute = const_cast<SgIsNotOp*>(this)->attribute["copied"];
  157288             :      bool previouslyCopied = const_cast<SgIsNotOp*>(this)->attribute.exists("copied");
  157289             :      if (previouslyCopied == true)
  157290             :         {
  157291             :           this->get_file_info()->display("Called from copy SgIsNotOp: debug");
  157292             :         }
  157293             :      ROSE_ASSERT(previouslyCopied == false);
  157294             : 
  157295             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  157296             :      AstAttribute* newAttribute = new AstAttribute();
  157297             :      ROSE_ASSERT(newAttribute != NULL);
  157298             : 
  157299             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  157300             :      const_cast<SgIsNotOp*>(this)->attribute.add("copied",newAttribute);
  157301             : #endif
  157302             : 
  157303             :   // Copy data members from base classes
  157304             :   // Copy constructor parameter data member: startOfConstruct_copy
  157305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  157306             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  157307           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  157308           0 :      if ( p_startOfConstruct != NULL ) 
  157309             :         { 
  157310           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  157311             :         } 
  157312             :        else 
  157313             :         { 
  157314             :           startOfConstruct_copy = NULL; 
  157315             :         } 
  157316             :   // Copy constructor parameter data member: lhs_operand_i_copy
  157317           0 :      SgExpression* lhs_operand_i_copy; 
  157318             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  157319           0 :           if (get_lhs_operand_i() != NULL) 
  157320             :              { 
  157321           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  157322             :              } 
  157323             :             else 
  157324             :              { 
  157325             :                lhs_operand_i_copy = NULL; 
  157326             :              } 
  157327             :   // Copy constructor parameter data member: rhs_operand_i_copy
  157328           0 :      SgExpression* rhs_operand_i_copy; 
  157329             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  157330           0 :           if (get_rhs_operand_i() != NULL) 
  157331             :              { 
  157332           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  157333             :              } 
  157334             :             else 
  157335             :              { 
  157336             :                rhs_operand_i_copy = NULL; 
  157337             :              } 
  157338             :   // Copy constructor parameter data member: expression_type_copy
  157339             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  157340             :   // case: toBeCopied == COPY_DATA for expression_type
  157341           0 :      SgType* expression_type_copy = p_expression_type; 
  157342             :  
  157343             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157344             : 
  157345             :   // Build an empty copy of this object (will be filled in, but 
  157346             :   // the parent can't be set and must be set by the caller)
  157347           0 :      result = new SgIsNotOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  157348           0 :      ROSE_ASSERT(result != NULL);
  157349             : 
  157350             :   // Copy data members of "this" class
  157351             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  157352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  157353             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  157354           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  157355           0 :      if ( p_endOfConstruct != NULL ) 
  157356             :         { 
  157357           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  157358             :         } 
  157359             :        else 
  157360             :         { 
  157361             :           endOfConstruct_copy = NULL; 
  157362             :         } 
  157363             :   /* check for a valid pointer and delete if present */ 
  157364           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  157365             :   /* add assignment to result here */ 
  157366           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  157367             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  157368             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  157369             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  157370           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  157371           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  157372             :         { 
  157373           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  157374             :         } 
  157375             :        else 
  157376             :         { 
  157377             :           attachedPreprocessingInfoPtr_copy = NULL; 
  157378             :         } 
  157379             :   /* check for a valid pointer and delete if present */ 
  157380           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  157381             :   /* add assignment to result here */ 
  157382           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  157383             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  157384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  157385             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  157386           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  157387           0 :      if ( p_attributeMechanism != NULL ) 
  157388             :         { 
  157389           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  157390             :         } 
  157391             :        else 
  157392             :         { 
  157393             :           attributeMechanism_copy = NULL; 
  157394             :         } 
  157395             :   /* check for a valid pointer and delete if present */ 
  157396           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  157397             :   /* add assignment to result here */ 
  157398           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  157399             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  157400             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  157401             :   // case: toBeCopied == COPY_DATA for need_paren
  157402           0 :      bool need_paren_copy = p_need_paren; 
  157403           0 :      result->p_need_paren = need_paren_copy; 
  157404             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  157405             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  157406             :   // case: toBeCopied == COPY_DATA for lvalue
  157407           0 :      bool lvalue_copy = p_lvalue; 
  157408           0 :      result->p_lvalue = lvalue_copy; 
  157409             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  157410             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  157411             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  157412           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  157413           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  157414             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  157415             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  157416             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  157417           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  157418           0 :      if ( p_operatorPosition != NULL ) 
  157419             :         { 
  157420           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  157421             :         } 
  157422             :        else 
  157423             :         { 
  157424             :           operatorPosition_copy = NULL; 
  157425             :         } 
  157426             :   /* check for a valid pointer and delete if present */ 
  157427           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  157428             :   /* add assignment to result here */ 
  157429           0 :      result->p_operatorPosition = operatorPosition_copy; 
  157430             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  157431             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  157432             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  157433           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  157434           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  157435             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  157436           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  157437             :              { 
  157438           0 :                lhs_operand_i_copy->set_parent(result); 
  157439             :              } 
  157440             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  157441           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  157442             :              { 
  157443           0 :                rhs_operand_i_copy->set_parent(result); 
  157444             :              } 
  157445             : 
  157446             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157447             : 
  157448             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  157449             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  157450             :   // fixupCopy(result,help);
  157451             : 
  157452             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  157453             :   // the Sg_File_Info objects that are built for the new IR nodes.
  157454           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  157455           0 :      if (locatedNode != NULL)
  157456             :         {
  157457             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  157458           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  157459           0 :           ROSE_ASSERT(start != NULL);
  157460             : #if 0
  157461             :        // Debugging information
  157462             :           if (start->get_parent() == NULL)
  157463             :              {
  157464             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157465             :              }
  157466             : #endif
  157467           0 :           start->set_parent(locatedNode);
  157468           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  157469             : 
  157470           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  157471             : 
  157472             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  157473             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  157474             :        // ROSE_ASSERT(end != NULL);
  157475           0 :           if (end == NULL)
  157476             :              {
  157477           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  157478             :              }
  157479             :             else
  157480             :              {
  157481             : #if 0
  157482             :             // Debugging information
  157483             :                if (end->get_parent() == NULL)
  157484             :                   {
  157485             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157486             :                   }
  157487             : #endif
  157488           0 :                end->set_parent(locatedNode);
  157489           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  157490             :              }
  157491             : 
  157492           0 :           SgExpression* expression = isSgExpression(result);
  157493           0 :           if (isSgExpression(this) != NULL)
  157494             :              {
  157495           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  157496             : 
  157497             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  157498           0 :                if (operatorPosition != NULL)
  157499             :                   {
  157500             : #if 0
  157501             :                  // Debugging information
  157502             :                     if (operatorPosition->get_parent() == NULL)
  157503             :                        {
  157504             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157505             :                        }
  157506             : #endif
  157507           0 :                     operatorPosition->set_parent(expression);
  157508           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  157509             :                   }
  157510             :              }
  157511             :         }
  157512             : 
  157513             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  157514           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  157515           0 :      if (initializedName != NULL)
  157516             :         {
  157517             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  157518           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  157519           0 :           ROSE_ASSERT(start != NULL);
  157520             : #if 0
  157521             :        // Debugging information
  157522             :           if (start->get_parent() == NULL)
  157523             :              {
  157524             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157525             :              }
  157526             : #endif
  157527           0 :           start->set_parent(initializedName);
  157528           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  157529             : 
  157530             : #if 0
  157531             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  157532             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  157533             : 
  157534             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  157535             :        // ROSE_ASSERT(end != NULL);
  157536             :           if (end == NULL)
  157537             :              {
  157538             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  157539             :              }
  157540             :             else
  157541             :              {
  157542             :                if (end->get_parent() == NULL)
  157543             :                   {
  157544             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157545             :                   }
  157546             :                end->set_parent(initializedName);
  157547             :                ROSE_ASSERT(end->get_parent() != NULL);
  157548             :              }
  157549             : #endif
  157550             :         }
  157551             : 
  157552             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  157553           0 :      help.insertCopiedNodePair(this,result);
  157554             : 
  157555             :   // printf ("End of copy SgIsNotOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  157556             : 
  157557             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  157558             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  157559           0 :      help.decrementDepth();
  157560             : 
  157561             :   // Test if this is the root of the copy!
  157562           0 :      if (help.get_depth() == 0)
  157563             :         {
  157564             :        // This is the original calling node.
  157565             : 
  157566             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  157567             :        // printf ("Calling SgIsNotOp::fixupCopy() (from root of AST being copied) \n");
  157568             : #if ALT_FIXUP_COPY
  157569             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  157570           0 :           fixupCopy_scopes (result,help);
  157571           0 :           fixupCopy_symbols (result,help);
  157572           0 :           fixupCopy_references (result,help);
  157573             : #else
  157574             :           fixupCopy(result,help);
  157575             : #endif
  157576             :        // Allow this to be called recursively, so accumulate the state.
  157577             :        // Also, clear the state in the SgCopyHelp object.
  157578             :        // help.clearState();
  157579             :         }
  157580             : 
  157581           0 :      return result;
  157582             :    }
  157583             : 
  157584             : 
  157585             : /* #line 157586 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  157586             : 
  157587             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157588             : 
  157589           0 : SgNode* SgElementwiseOp::copy ( SgCopyHelp& help) const
  157590             :    {
  157591           0 :      SgElementwiseOp* result = NULL;
  157592             : 
  157593             :   // printf ("Copy SgElementwiseOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  157594             : 
  157595             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  157596             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  157597             :   // The default value of the depth is 0, so after this call the depth is 1!
  157598           0 :      help.incrementDepth();
  157599             : 
  157600             : #if 0
  157601             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  157602             :   // but it is not generally true that things can only be copied once!
  157603             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  157604             :   // AstAttribute* existingAttribute = const_cast<SgElementwiseOp*>(this)->attribute["copied"];
  157605             :      bool previouslyCopied = const_cast<SgElementwiseOp*>(this)->attribute.exists("copied");
  157606             :      if (previouslyCopied == true)
  157607             :         {
  157608             :           this->get_file_info()->display("Called from copy SgElementwiseOp: debug");
  157609             :         }
  157610             :      ROSE_ASSERT(previouslyCopied == false);
  157611             : 
  157612             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  157613             :      AstAttribute* newAttribute = new AstAttribute();
  157614             :      ROSE_ASSERT(newAttribute != NULL);
  157615             : 
  157616             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  157617             :      const_cast<SgElementwiseOp*>(this)->attribute.add("copied",newAttribute);
  157618             : #endif
  157619             : 
  157620             :   // Copy data members from base classes
  157621             :   // Copy constructor parameter data member: startOfConstruct_copy
  157622             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  157623             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  157624           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  157625           0 :      if ( p_startOfConstruct != NULL ) 
  157626             :         { 
  157627           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  157628             :         } 
  157629             :        else 
  157630             :         { 
  157631             :           startOfConstruct_copy = NULL; 
  157632             :         } 
  157633             :   // Copy constructor parameter data member: lhs_operand_i_copy
  157634           0 :      SgExpression* lhs_operand_i_copy; 
  157635             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  157636           0 :           if (get_lhs_operand_i() != NULL) 
  157637             :              { 
  157638           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  157639             :              } 
  157640             :             else 
  157641             :              { 
  157642             :                lhs_operand_i_copy = NULL; 
  157643             :              } 
  157644             :   // Copy constructor parameter data member: rhs_operand_i_copy
  157645           0 :      SgExpression* rhs_operand_i_copy; 
  157646             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  157647           0 :           if (get_rhs_operand_i() != NULL) 
  157648             :              { 
  157649           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  157650             :              } 
  157651             :             else 
  157652             :              { 
  157653             :                rhs_operand_i_copy = NULL; 
  157654             :              } 
  157655             :   // Copy constructor parameter data member: expression_type_copy
  157656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  157657             :   // case: toBeCopied == COPY_DATA for expression_type
  157658           0 :      SgType* expression_type_copy = p_expression_type; 
  157659             :  
  157660             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157661             : 
  157662             :   // Build an empty copy of this object (will be filled in, but 
  157663             :   // the parent can't be set and must be set by the caller)
  157664           0 :      result = new SgElementwiseOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  157665           0 :      ROSE_ASSERT(result != NULL);
  157666             : 
  157667             :   // Copy data members of "this" class
  157668             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  157669             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  157670             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  157671           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  157672           0 :      if ( p_endOfConstruct != NULL ) 
  157673             :         { 
  157674           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  157675             :         } 
  157676             :        else 
  157677             :         { 
  157678             :           endOfConstruct_copy = NULL; 
  157679             :         } 
  157680             :   /* check for a valid pointer and delete if present */ 
  157681           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  157682             :   /* add assignment to result here */ 
  157683           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  157684             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  157685             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  157686             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  157687           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  157688           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  157689             :         { 
  157690           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  157691             :         } 
  157692             :        else 
  157693             :         { 
  157694             :           attachedPreprocessingInfoPtr_copy = NULL; 
  157695             :         } 
  157696             :   /* check for a valid pointer and delete if present */ 
  157697           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  157698             :   /* add assignment to result here */ 
  157699           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  157700             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  157701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  157702             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  157703           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  157704           0 :      if ( p_attributeMechanism != NULL ) 
  157705             :         { 
  157706           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  157707             :         } 
  157708             :        else 
  157709             :         { 
  157710             :           attributeMechanism_copy = NULL; 
  157711             :         } 
  157712             :   /* check for a valid pointer and delete if present */ 
  157713           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  157714             :   /* add assignment to result here */ 
  157715           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  157716             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  157717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  157718             :   // case: toBeCopied == COPY_DATA for need_paren
  157719           0 :      bool need_paren_copy = p_need_paren; 
  157720           0 :      result->p_need_paren = need_paren_copy; 
  157721             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  157722             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  157723             :   // case: toBeCopied == COPY_DATA for lvalue
  157724           0 :      bool lvalue_copy = p_lvalue; 
  157725           0 :      result->p_lvalue = lvalue_copy; 
  157726             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  157727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  157728             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  157729           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  157730           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  157731             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  157732             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  157733             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  157734           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  157735           0 :      if ( p_operatorPosition != NULL ) 
  157736             :         { 
  157737           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  157738             :         } 
  157739             :        else 
  157740             :         { 
  157741             :           operatorPosition_copy = NULL; 
  157742             :         } 
  157743             :   /* check for a valid pointer and delete if present */ 
  157744           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  157745             :   /* add assignment to result here */ 
  157746           0 :      result->p_operatorPosition = operatorPosition_copy; 
  157747             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  157748             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  157749             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  157750           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  157751           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  157752             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  157753           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  157754             :              { 
  157755           0 :                lhs_operand_i_copy->set_parent(result); 
  157756             :              } 
  157757             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  157758           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  157759             :              { 
  157760           0 :                rhs_operand_i_copy->set_parent(result); 
  157761             :              } 
  157762             : 
  157763             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157764             : 
  157765             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  157766             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  157767             :   // fixupCopy(result,help);
  157768             : 
  157769             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  157770             :   // the Sg_File_Info objects that are built for the new IR nodes.
  157771           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  157772           0 :      if (locatedNode != NULL)
  157773             :         {
  157774             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  157775           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  157776           0 :           ROSE_ASSERT(start != NULL);
  157777             : #if 0
  157778             :        // Debugging information
  157779             :           if (start->get_parent() == NULL)
  157780             :              {
  157781             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157782             :              }
  157783             : #endif
  157784           0 :           start->set_parent(locatedNode);
  157785           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  157786             : 
  157787           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  157788             : 
  157789             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  157790             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  157791             :        // ROSE_ASSERT(end != NULL);
  157792           0 :           if (end == NULL)
  157793             :              {
  157794           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  157795             :              }
  157796             :             else
  157797             :              {
  157798             : #if 0
  157799             :             // Debugging information
  157800             :                if (end->get_parent() == NULL)
  157801             :                   {
  157802             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157803             :                   }
  157804             : #endif
  157805           0 :                end->set_parent(locatedNode);
  157806           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  157807             :              }
  157808             : 
  157809           0 :           SgExpression* expression = isSgExpression(result);
  157810           0 :           if (isSgExpression(this) != NULL)
  157811             :              {
  157812           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  157813             : 
  157814             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  157815           0 :                if (operatorPosition != NULL)
  157816             :                   {
  157817             : #if 0
  157818             :                  // Debugging information
  157819             :                     if (operatorPosition->get_parent() == NULL)
  157820             :                        {
  157821             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157822             :                        }
  157823             : #endif
  157824           0 :                     operatorPosition->set_parent(expression);
  157825           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  157826             :                   }
  157827             :              }
  157828             :         }
  157829             : 
  157830             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  157831           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  157832           0 :      if (initializedName != NULL)
  157833             :         {
  157834             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  157835           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  157836           0 :           ROSE_ASSERT(start != NULL);
  157837             : #if 0
  157838             :        // Debugging information
  157839             :           if (start->get_parent() == NULL)
  157840             :              {
  157841             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157842             :              }
  157843             : #endif
  157844           0 :           start->set_parent(initializedName);
  157845           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  157846             : 
  157847             : #if 0
  157848             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  157849             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  157850             : 
  157851             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  157852             :        // ROSE_ASSERT(end != NULL);
  157853             :           if (end == NULL)
  157854             :              {
  157855             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  157856             :              }
  157857             :             else
  157858             :              {
  157859             :                if (end->get_parent() == NULL)
  157860             :                   {
  157861             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  157862             :                   }
  157863             :                end->set_parent(initializedName);
  157864             :                ROSE_ASSERT(end->get_parent() != NULL);
  157865             :              }
  157866             : #endif
  157867             :         }
  157868             : 
  157869             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  157870           0 :      help.insertCopiedNodePair(this,result);
  157871             : 
  157872             :   // printf ("End of copy SgElementwiseOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  157873             : 
  157874             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  157875             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  157876           0 :      help.decrementDepth();
  157877             : 
  157878             :   // Test if this is the root of the copy!
  157879           0 :      if (help.get_depth() == 0)
  157880             :         {
  157881             :        // This is the original calling node.
  157882             : 
  157883             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  157884             :        // printf ("Calling SgElementwiseOp::fixupCopy() (from root of AST being copied) \n");
  157885             : #if ALT_FIXUP_COPY
  157886             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  157887           0 :           fixupCopy_scopes (result,help);
  157888           0 :           fixupCopy_symbols (result,help);
  157889           0 :           fixupCopy_references (result,help);
  157890             : #else
  157891             :           fixupCopy(result,help);
  157892             : #endif
  157893             :        // Allow this to be called recursively, so accumulate the state.
  157894             :        // Also, clear the state in the SgCopyHelp object.
  157895             :        // help.clearState();
  157896             :         }
  157897             : 
  157898           0 :      return result;
  157899             :    }
  157900             : 
  157901             : 
  157902             : /* #line 157903 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  157903             : 
  157904             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157905             : 
  157906           0 : SgNode* SgElementwiseMultiplyOp::copy ( SgCopyHelp& help) const
  157907             :    {
  157908           0 :      SgElementwiseMultiplyOp* result = NULL;
  157909             : 
  157910             :   // printf ("Copy SgElementwiseMultiplyOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  157911             : 
  157912             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  157913             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  157914             :   // The default value of the depth is 0, so after this call the depth is 1!
  157915           0 :      help.incrementDepth();
  157916             : 
  157917             : #if 0
  157918             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  157919             :   // but it is not generally true that things can only be copied once!
  157920             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  157921             :   // AstAttribute* existingAttribute = const_cast<SgElementwiseMultiplyOp*>(this)->attribute["copied"];
  157922             :      bool previouslyCopied = const_cast<SgElementwiseMultiplyOp*>(this)->attribute.exists("copied");
  157923             :      if (previouslyCopied == true)
  157924             :         {
  157925             :           this->get_file_info()->display("Called from copy SgElementwiseMultiplyOp: debug");
  157926             :         }
  157927             :      ROSE_ASSERT(previouslyCopied == false);
  157928             : 
  157929             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  157930             :      AstAttribute* newAttribute = new AstAttribute();
  157931             :      ROSE_ASSERT(newAttribute != NULL);
  157932             : 
  157933             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  157934             :      const_cast<SgElementwiseMultiplyOp*>(this)->attribute.add("copied",newAttribute);
  157935             : #endif
  157936             : 
  157937             :   // Copy data members from base classes
  157938             :   // Copy constructor parameter data member: startOfConstruct_copy
  157939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  157940             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  157941           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  157942           0 :      if ( p_startOfConstruct != NULL ) 
  157943             :         { 
  157944           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  157945             :         } 
  157946             :        else 
  157947             :         { 
  157948             :           startOfConstruct_copy = NULL; 
  157949             :         } 
  157950             :   // Copy constructor parameter data member: lhs_operand_i_copy
  157951           0 :      SgExpression* lhs_operand_i_copy; 
  157952             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  157953           0 :           if (get_lhs_operand_i() != NULL) 
  157954             :              { 
  157955           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  157956             :              } 
  157957             :             else 
  157958             :              { 
  157959             :                lhs_operand_i_copy = NULL; 
  157960             :              } 
  157961             :   // Copy constructor parameter data member: rhs_operand_i_copy
  157962           0 :      SgExpression* rhs_operand_i_copy; 
  157963             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  157964           0 :           if (get_rhs_operand_i() != NULL) 
  157965             :              { 
  157966           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  157967             :              } 
  157968             :             else 
  157969             :              { 
  157970             :                rhs_operand_i_copy = NULL; 
  157971             :              } 
  157972             :   // Copy constructor parameter data member: expression_type_copy
  157973             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  157974             :   // case: toBeCopied == COPY_DATA for expression_type
  157975           0 :      SgType* expression_type_copy = p_expression_type; 
  157976             :  
  157977             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  157978             : 
  157979             :   // Build an empty copy of this object (will be filled in, but 
  157980             :   // the parent can't be set and must be set by the caller)
  157981           0 :      result = new SgElementwiseMultiplyOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  157982           0 :      ROSE_ASSERT(result != NULL);
  157983             : 
  157984             :   // Copy data members of "this" class
  157985             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  157986             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  157987             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  157988           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  157989           0 :      if ( p_endOfConstruct != NULL ) 
  157990             :         { 
  157991           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  157992             :         } 
  157993             :        else 
  157994             :         { 
  157995             :           endOfConstruct_copy = NULL; 
  157996             :         } 
  157997             :   /* check for a valid pointer and delete if present */ 
  157998           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  157999             :   /* add assignment to result here */ 
  158000           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  158001             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  158002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  158003             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  158004           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  158005           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  158006             :         { 
  158007           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  158008             :         } 
  158009             :        else 
  158010             :         { 
  158011             :           attachedPreprocessingInfoPtr_copy = NULL; 
  158012             :         } 
  158013             :   /* check for a valid pointer and delete if present */ 
  158014           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  158015             :   /* add assignment to result here */ 
  158016           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  158017             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  158018             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  158019             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  158020           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  158021           0 :      if ( p_attributeMechanism != NULL ) 
  158022             :         { 
  158023           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  158024             :         } 
  158025             :        else 
  158026             :         { 
  158027             :           attributeMechanism_copy = NULL; 
  158028             :         } 
  158029             :   /* check for a valid pointer and delete if present */ 
  158030           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  158031             :   /* add assignment to result here */ 
  158032           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  158033             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  158034             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  158035             :   // case: toBeCopied == COPY_DATA for need_paren
  158036           0 :      bool need_paren_copy = p_need_paren; 
  158037           0 :      result->p_need_paren = need_paren_copy; 
  158038             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  158039             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  158040             :   // case: toBeCopied == COPY_DATA for lvalue
  158041           0 :      bool lvalue_copy = p_lvalue; 
  158042           0 :      result->p_lvalue = lvalue_copy; 
  158043             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  158044             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  158045             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  158046           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  158047           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  158048             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  158049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  158050             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  158051           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  158052           0 :      if ( p_operatorPosition != NULL ) 
  158053             :         { 
  158054           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  158055             :         } 
  158056             :        else 
  158057             :         { 
  158058             :           operatorPosition_copy = NULL; 
  158059             :         } 
  158060             :   /* check for a valid pointer and delete if present */ 
  158061           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  158062             :   /* add assignment to result here */ 
  158063           0 :      result->p_operatorPosition = operatorPosition_copy; 
  158064             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  158065             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  158066             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  158067           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  158068           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  158069             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  158070           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  158071             :              { 
  158072           0 :                lhs_operand_i_copy->set_parent(result); 
  158073             :              } 
  158074             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  158075           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  158076             :              { 
  158077           0 :                rhs_operand_i_copy->set_parent(result); 
  158078             :              } 
  158079             : 
  158080             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  158081             : 
  158082             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  158083             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  158084             :   // fixupCopy(result,help);
  158085             : 
  158086             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  158087             :   // the Sg_File_Info objects that are built for the new IR nodes.
  158088           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  158089           0 :      if (locatedNode != NULL)
  158090             :         {
  158091             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  158092           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  158093           0 :           ROSE_ASSERT(start != NULL);
  158094             : #if 0
  158095             :        // Debugging information
  158096             :           if (start->get_parent() == NULL)
  158097             :              {
  158098             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158099             :              }
  158100             : #endif
  158101           0 :           start->set_parent(locatedNode);
  158102           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  158103             : 
  158104           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  158105             : 
  158106             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  158107             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  158108             :        // ROSE_ASSERT(end != NULL);
  158109           0 :           if (end == NULL)
  158110             :              {
  158111           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  158112             :              }
  158113             :             else
  158114             :              {
  158115             : #if 0
  158116             :             // Debugging information
  158117             :                if (end->get_parent() == NULL)
  158118             :                   {
  158119             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158120             :                   }
  158121             : #endif
  158122           0 :                end->set_parent(locatedNode);
  158123           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  158124             :              }
  158125             : 
  158126           0 :           SgExpression* expression = isSgExpression(result);
  158127           0 :           if (isSgExpression(this) != NULL)
  158128             :              {
  158129           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  158130             : 
  158131             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  158132           0 :                if (operatorPosition != NULL)
  158133             :                   {
  158134             : #if 0
  158135             :                  // Debugging information
  158136             :                     if (operatorPosition->get_parent() == NULL)
  158137             :                        {
  158138             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158139             :                        }
  158140             : #endif
  158141           0 :                     operatorPosition->set_parent(expression);
  158142           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  158143             :                   }
  158144             :              }
  158145             :         }
  158146             : 
  158147             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  158148           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  158149           0 :      if (initializedName != NULL)
  158150             :         {
  158151             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  158152           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  158153           0 :           ROSE_ASSERT(start != NULL);
  158154             : #if 0
  158155             :        // Debugging information
  158156             :           if (start->get_parent() == NULL)
  158157             :              {
  158158             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158159             :              }
  158160             : #endif
  158161           0 :           start->set_parent(initializedName);
  158162           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  158163             : 
  158164             : #if 0
  158165             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  158166             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  158167             : 
  158168             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  158169             :        // ROSE_ASSERT(end != NULL);
  158170             :           if (end == NULL)
  158171             :              {
  158172             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  158173             :              }
  158174             :             else
  158175             :              {
  158176             :                if (end->get_parent() == NULL)
  158177             :                   {
  158178             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158179             :                   }
  158180             :                end->set_parent(initializedName);
  158181             :                ROSE_ASSERT(end->get_parent() != NULL);
  158182             :              }
  158183             : #endif
  158184             :         }
  158185             : 
  158186             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  158187           0 :      help.insertCopiedNodePair(this,result);
  158188             : 
  158189             :   // printf ("End of copy SgElementwiseMultiplyOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  158190             : 
  158191             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  158192             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  158193           0 :      help.decrementDepth();
  158194             : 
  158195             :   // Test if this is the root of the copy!
  158196           0 :      if (help.get_depth() == 0)
  158197             :         {
  158198             :        // This is the original calling node.
  158199             : 
  158200             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  158201             :        // printf ("Calling SgElementwiseMultiplyOp::fixupCopy() (from root of AST being copied) \n");
  158202             : #if ALT_FIXUP_COPY
  158203             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  158204           0 :           fixupCopy_scopes (result,help);
  158205           0 :           fixupCopy_symbols (result,help);
  158206           0 :           fixupCopy_references (result,help);
  158207             : #else
  158208             :           fixupCopy(result,help);
  158209             : #endif
  158210             :        // Allow this to be called recursively, so accumulate the state.
  158211             :        // Also, clear the state in the SgCopyHelp object.
  158212             :        // help.clearState();
  158213             :         }
  158214             : 
  158215           0 :      return result;
  158216             :    }
  158217             : 
  158218             : 
  158219             : /* #line 158220 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  158220             : 
  158221             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  158222             : 
  158223           0 : SgNode* SgElementwisePowerOp::copy ( SgCopyHelp& help) const
  158224             :    {
  158225           0 :      SgElementwisePowerOp* result = NULL;
  158226             : 
  158227             :   // printf ("Copy SgElementwisePowerOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  158228             : 
  158229             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  158230             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  158231             :   // The default value of the depth is 0, so after this call the depth is 1!
  158232           0 :      help.incrementDepth();
  158233             : 
  158234             : #if 0
  158235             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  158236             :   // but it is not generally true that things can only be copied once!
  158237             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  158238             :   // AstAttribute* existingAttribute = const_cast<SgElementwisePowerOp*>(this)->attribute["copied"];
  158239             :      bool previouslyCopied = const_cast<SgElementwisePowerOp*>(this)->attribute.exists("copied");
  158240             :      if (previouslyCopied == true)
  158241             :         {
  158242             :           this->get_file_info()->display("Called from copy SgElementwisePowerOp: debug");
  158243             :         }
  158244             :      ROSE_ASSERT(previouslyCopied == false);
  158245             : 
  158246             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  158247             :      AstAttribute* newAttribute = new AstAttribute();
  158248             :      ROSE_ASSERT(newAttribute != NULL);
  158249             : 
  158250             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  158251             :      const_cast<SgElementwisePowerOp*>(this)->attribute.add("copied",newAttribute);
  158252             : #endif
  158253             : 
  158254             :   // Copy data members from base classes
  158255             :   // Copy constructor parameter data member: startOfConstruct_copy
  158256             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  158257             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  158258           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  158259           0 :      if ( p_startOfConstruct != NULL ) 
  158260             :         { 
  158261           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  158262             :         } 
  158263             :        else 
  158264             :         { 
  158265             :           startOfConstruct_copy = NULL; 
  158266             :         } 
  158267             :   // Copy constructor parameter data member: lhs_operand_i_copy
  158268           0 :      SgExpression* lhs_operand_i_copy; 
  158269             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  158270           0 :           if (get_lhs_operand_i() != NULL) 
  158271             :              { 
  158272           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  158273             :              } 
  158274             :             else 
  158275             :              { 
  158276             :                lhs_operand_i_copy = NULL; 
  158277             :              } 
  158278             :   // Copy constructor parameter data member: rhs_operand_i_copy
  158279           0 :      SgExpression* rhs_operand_i_copy; 
  158280             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  158281           0 :           if (get_rhs_operand_i() != NULL) 
  158282             :              { 
  158283           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  158284             :              } 
  158285             :             else 
  158286             :              { 
  158287             :                rhs_operand_i_copy = NULL; 
  158288             :              } 
  158289             :   // Copy constructor parameter data member: expression_type_copy
  158290             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  158291             :   // case: toBeCopied == COPY_DATA for expression_type
  158292           0 :      SgType* expression_type_copy = p_expression_type; 
  158293             :  
  158294             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  158295             : 
  158296             :   // Build an empty copy of this object (will be filled in, but 
  158297             :   // the parent can't be set and must be set by the caller)
  158298           0 :      result = new SgElementwisePowerOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  158299           0 :      ROSE_ASSERT(result != NULL);
  158300             : 
  158301             :   // Copy data members of "this" class
  158302             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  158303             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  158304             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  158305           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  158306           0 :      if ( p_endOfConstruct != NULL ) 
  158307             :         { 
  158308           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  158309             :         } 
  158310             :        else 
  158311             :         { 
  158312             :           endOfConstruct_copy = NULL; 
  158313             :         } 
  158314             :   /* check for a valid pointer and delete if present */ 
  158315           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  158316             :   /* add assignment to result here */ 
  158317           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  158318             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  158319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  158320             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  158321           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  158322           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  158323             :         { 
  158324           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  158325             :         } 
  158326             :        else 
  158327             :         { 
  158328             :           attachedPreprocessingInfoPtr_copy = NULL; 
  158329             :         } 
  158330             :   /* check for a valid pointer and delete if present */ 
  158331           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  158332             :   /* add assignment to result here */ 
  158333           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  158334             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  158335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  158336             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  158337           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  158338           0 :      if ( p_attributeMechanism != NULL ) 
  158339             :         { 
  158340           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  158341             :         } 
  158342             :        else 
  158343             :         { 
  158344             :           attributeMechanism_copy = NULL; 
  158345             :         } 
  158346             :   /* check for a valid pointer and delete if present */ 
  158347           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  158348             :   /* add assignment to result here */ 
  158349           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  158350             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  158351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  158352             :   // case: toBeCopied == COPY_DATA for need_paren
  158353           0 :      bool need_paren_copy = p_need_paren; 
  158354           0 :      result->p_need_paren = need_paren_copy; 
  158355             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  158356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  158357             :   // case: toBeCopied == COPY_DATA for lvalue
  158358           0 :      bool lvalue_copy = p_lvalue; 
  158359           0 :      result->p_lvalue = lvalue_copy; 
  158360             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  158361             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  158362             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  158363           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  158364           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  158365             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  158366             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  158367             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  158368           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  158369           0 :      if ( p_operatorPosition != NULL ) 
  158370             :         { 
  158371           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  158372             :         } 
  158373             :        else 
  158374             :         { 
  158375             :           operatorPosition_copy = NULL; 
  158376             :         } 
  158377             :   /* check for a valid pointer and delete if present */ 
  158378           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  158379             :   /* add assignment to result here */ 
  158380           0 :      result->p_operatorPosition = operatorPosition_copy; 
  158381             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  158382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  158383             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  158384           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  158385           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  158386             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  158387           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  158388             :              { 
  158389           0 :                lhs_operand_i_copy->set_parent(result); 
  158390             :              } 
  158391             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  158392           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  158393             :              { 
  158394           0 :                rhs_operand_i_copy->set_parent(result); 
  158395             :              } 
  158396             : 
  158397             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  158398             : 
  158399             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  158400             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  158401             :   // fixupCopy(result,help);
  158402             : 
  158403             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  158404             :   // the Sg_File_Info objects that are built for the new IR nodes.
  158405           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  158406           0 :      if (locatedNode != NULL)
  158407             :         {
  158408             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  158409           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  158410           0 :           ROSE_ASSERT(start != NULL);
  158411             : #if 0
  158412             :        // Debugging information
  158413             :           if (start->get_parent() == NULL)
  158414             :              {
  158415             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158416             :              }
  158417             : #endif
  158418           0 :           start->set_parent(locatedNode);
  158419           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  158420             : 
  158421           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  158422             : 
  158423             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  158424             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  158425             :        // ROSE_ASSERT(end != NULL);
  158426           0 :           if (end == NULL)
  158427             :              {
  158428           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  158429             :              }
  158430             :             else
  158431             :              {
  158432             : #if 0
  158433             :             // Debugging information
  158434             :                if (end->get_parent() == NULL)
  158435             :                   {
  158436             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158437             :                   }
  158438             : #endif
  158439           0 :                end->set_parent(locatedNode);
  158440           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  158441             :              }
  158442             : 
  158443           0 :           SgExpression* expression = isSgExpression(result);
  158444           0 :           if (isSgExpression(this) != NULL)
  158445             :              {
  158446           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  158447             : 
  158448             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  158449           0 :                if (operatorPosition != NULL)
  158450             :                   {
  158451             : #if 0
  158452             :                  // Debugging information
  158453             :                     if (operatorPosition->get_parent() == NULL)
  158454             :                        {
  158455             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158456             :                        }
  158457             : #endif
  158458           0 :                     operatorPosition->set_parent(expression);
  158459           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  158460             :                   }
  158461             :              }
  158462             :         }
  158463             : 
  158464             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  158465           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  158466           0 :      if (initializedName != NULL)
  158467             :         {
  158468             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  158469           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  158470           0 :           ROSE_ASSERT(start != NULL);
  158471             : #if 0
  158472             :        // Debugging information
  158473             :           if (start->get_parent() == NULL)
  158474             :              {
  158475             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158476             :              }
  158477             : #endif
  158478           0 :           start->set_parent(initializedName);
  158479           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  158480             : 
  158481             : #if 0
  158482             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  158483             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  158484             : 
  158485             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  158486             :        // ROSE_ASSERT(end != NULL);
  158487             :           if (end == NULL)
  158488             :              {
  158489             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  158490             :              }
  158491             :             else
  158492             :              {
  158493             :                if (end->get_parent() == NULL)
  158494             :                   {
  158495             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158496             :                   }
  158497             :                end->set_parent(initializedName);
  158498             :                ROSE_ASSERT(end->get_parent() != NULL);
  158499             :              }
  158500             : #endif
  158501             :         }
  158502             : 
  158503             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  158504           0 :      help.insertCopiedNodePair(this,result);
  158505             : 
  158506             :   // printf ("End of copy SgElementwisePowerOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  158507             : 
  158508             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  158509             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  158510           0 :      help.decrementDepth();
  158511             : 
  158512             :   // Test if this is the root of the copy!
  158513           0 :      if (help.get_depth() == 0)
  158514             :         {
  158515             :        // This is the original calling node.
  158516             : 
  158517             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  158518             :        // printf ("Calling SgElementwisePowerOp::fixupCopy() (from root of AST being copied) \n");
  158519             : #if ALT_FIXUP_COPY
  158520             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  158521           0 :           fixupCopy_scopes (result,help);
  158522           0 :           fixupCopy_symbols (result,help);
  158523           0 :           fixupCopy_references (result,help);
  158524             : #else
  158525             :           fixupCopy(result,help);
  158526             : #endif
  158527             :        // Allow this to be called recursively, so accumulate the state.
  158528             :        // Also, clear the state in the SgCopyHelp object.
  158529             :        // help.clearState();
  158530             :         }
  158531             : 
  158532           0 :      return result;
  158533             :    }
  158534             : 
  158535             : 
  158536             : /* #line 158537 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  158537             : 
  158538             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  158539             : 
  158540           0 : SgNode* SgElementwiseLeftDivideOp::copy ( SgCopyHelp& help) const
  158541             :    {
  158542           0 :      SgElementwiseLeftDivideOp* result = NULL;
  158543             : 
  158544             :   // printf ("Copy SgElementwiseLeftDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  158545             : 
  158546             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  158547             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  158548             :   // The default value of the depth is 0, so after this call the depth is 1!
  158549           0 :      help.incrementDepth();
  158550             : 
  158551             : #if 0
  158552             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  158553             :   // but it is not generally true that things can only be copied once!
  158554             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  158555             :   // AstAttribute* existingAttribute = const_cast<SgElementwiseLeftDivideOp*>(this)->attribute["copied"];
  158556             :      bool previouslyCopied = const_cast<SgElementwiseLeftDivideOp*>(this)->attribute.exists("copied");
  158557             :      if (previouslyCopied == true)
  158558             :         {
  158559             :           this->get_file_info()->display("Called from copy SgElementwiseLeftDivideOp: debug");
  158560             :         }
  158561             :      ROSE_ASSERT(previouslyCopied == false);
  158562             : 
  158563             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  158564             :      AstAttribute* newAttribute = new AstAttribute();
  158565             :      ROSE_ASSERT(newAttribute != NULL);
  158566             : 
  158567             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  158568             :      const_cast<SgElementwiseLeftDivideOp*>(this)->attribute.add("copied",newAttribute);
  158569             : #endif
  158570             : 
  158571             :   // Copy data members from base classes
  158572             :   // Copy constructor parameter data member: startOfConstruct_copy
  158573             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  158574             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  158575           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  158576           0 :      if ( p_startOfConstruct != NULL ) 
  158577             :         { 
  158578           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  158579             :         } 
  158580             :        else 
  158581             :         { 
  158582             :           startOfConstruct_copy = NULL; 
  158583             :         } 
  158584             :   // Copy constructor parameter data member: lhs_operand_i_copy
  158585           0 :      SgExpression* lhs_operand_i_copy; 
  158586             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  158587           0 :           if (get_lhs_operand_i() != NULL) 
  158588             :              { 
  158589           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  158590             :              } 
  158591             :             else 
  158592             :              { 
  158593             :                lhs_operand_i_copy = NULL; 
  158594             :              } 
  158595             :   // Copy constructor parameter data member: rhs_operand_i_copy
  158596           0 :      SgExpression* rhs_operand_i_copy; 
  158597             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  158598           0 :           if (get_rhs_operand_i() != NULL) 
  158599             :              { 
  158600           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  158601             :              } 
  158602             :             else 
  158603             :              { 
  158604             :                rhs_operand_i_copy = NULL; 
  158605             :              } 
  158606             :   // Copy constructor parameter data member: expression_type_copy
  158607             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  158608             :   // case: toBeCopied == COPY_DATA for expression_type
  158609           0 :      SgType* expression_type_copy = p_expression_type; 
  158610             :  
  158611             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  158612             : 
  158613             :   // Build an empty copy of this object (will be filled in, but 
  158614             :   // the parent can't be set and must be set by the caller)
  158615           0 :      result = new SgElementwiseLeftDivideOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  158616           0 :      ROSE_ASSERT(result != NULL);
  158617             : 
  158618             :   // Copy data members of "this" class
  158619             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  158620             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  158621             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  158622           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  158623           0 :      if ( p_endOfConstruct != NULL ) 
  158624             :         { 
  158625           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  158626             :         } 
  158627             :        else 
  158628             :         { 
  158629             :           endOfConstruct_copy = NULL; 
  158630             :         } 
  158631             :   /* check for a valid pointer and delete if present */ 
  158632           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  158633             :   /* add assignment to result here */ 
  158634           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  158635             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  158636             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  158637             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  158638           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  158639           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  158640             :         { 
  158641           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  158642             :         } 
  158643             :        else 
  158644             :         { 
  158645             :           attachedPreprocessingInfoPtr_copy = NULL; 
  158646             :         } 
  158647             :   /* check for a valid pointer and delete if present */ 
  158648           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  158649             :   /* add assignment to result here */ 
  158650           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  158651             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  158652             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  158653             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  158654           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  158655           0 :      if ( p_attributeMechanism != NULL ) 
  158656             :         { 
  158657           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  158658             :         } 
  158659             :        else 
  158660             :         { 
  158661             :           attributeMechanism_copy = NULL; 
  158662             :         } 
  158663             :   /* check for a valid pointer and delete if present */ 
  158664           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  158665             :   /* add assignment to result here */ 
  158666           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  158667             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  158668             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  158669             :   // case: toBeCopied == COPY_DATA for need_paren
  158670           0 :      bool need_paren_copy = p_need_paren; 
  158671           0 :      result->p_need_paren = need_paren_copy; 
  158672             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  158673             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  158674             :   // case: toBeCopied == COPY_DATA for lvalue
  158675           0 :      bool lvalue_copy = p_lvalue; 
  158676           0 :      result->p_lvalue = lvalue_copy; 
  158677             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  158678             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  158679             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  158680           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  158681           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  158682             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  158683             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  158684             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  158685           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  158686           0 :      if ( p_operatorPosition != NULL ) 
  158687             :         { 
  158688           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  158689             :         } 
  158690             :        else 
  158691             :         { 
  158692             :           operatorPosition_copy = NULL; 
  158693             :         } 
  158694             :   /* check for a valid pointer and delete if present */ 
  158695           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  158696             :   /* add assignment to result here */ 
  158697           0 :      result->p_operatorPosition = operatorPosition_copy; 
  158698             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  158699             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  158700             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  158701           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  158702           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  158703             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  158704           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  158705             :              { 
  158706           0 :                lhs_operand_i_copy->set_parent(result); 
  158707             :              } 
  158708             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  158709           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  158710             :              { 
  158711           0 :                rhs_operand_i_copy->set_parent(result); 
  158712             :              } 
  158713             : 
  158714             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  158715             : 
  158716             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  158717             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  158718             :   // fixupCopy(result,help);
  158719             : 
  158720             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  158721             :   // the Sg_File_Info objects that are built for the new IR nodes.
  158722           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  158723           0 :      if (locatedNode != NULL)
  158724             :         {
  158725             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  158726           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  158727           0 :           ROSE_ASSERT(start != NULL);
  158728             : #if 0
  158729             :        // Debugging information
  158730             :           if (start->get_parent() == NULL)
  158731             :              {
  158732             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158733             :              }
  158734             : #endif
  158735           0 :           start->set_parent(locatedNode);
  158736           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  158737             : 
  158738           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  158739             : 
  158740             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  158741             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  158742             :        // ROSE_ASSERT(end != NULL);
  158743           0 :           if (end == NULL)
  158744             :              {
  158745           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  158746             :              }
  158747             :             else
  158748             :              {
  158749             : #if 0
  158750             :             // Debugging information
  158751             :                if (end->get_parent() == NULL)
  158752             :                   {
  158753             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158754             :                   }
  158755             : #endif
  158756           0 :                end->set_parent(locatedNode);
  158757           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  158758             :              }
  158759             : 
  158760           0 :           SgExpression* expression = isSgExpression(result);
  158761           0 :           if (isSgExpression(this) != NULL)
  158762             :              {
  158763           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  158764             : 
  158765             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  158766           0 :                if (operatorPosition != NULL)
  158767             :                   {
  158768             : #if 0
  158769             :                  // Debugging information
  158770             :                     if (operatorPosition->get_parent() == NULL)
  158771             :                        {
  158772             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158773             :                        }
  158774             : #endif
  158775           0 :                     operatorPosition->set_parent(expression);
  158776           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  158777             :                   }
  158778             :              }
  158779             :         }
  158780             : 
  158781             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  158782           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  158783           0 :      if (initializedName != NULL)
  158784             :         {
  158785             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  158786           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  158787           0 :           ROSE_ASSERT(start != NULL);
  158788             : #if 0
  158789             :        // Debugging information
  158790             :           if (start->get_parent() == NULL)
  158791             :              {
  158792             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158793             :              }
  158794             : #endif
  158795           0 :           start->set_parent(initializedName);
  158796           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  158797             : 
  158798             : #if 0
  158799             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  158800             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  158801             : 
  158802             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  158803             :        // ROSE_ASSERT(end != NULL);
  158804             :           if (end == NULL)
  158805             :              {
  158806             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  158807             :              }
  158808             :             else
  158809             :              {
  158810             :                if (end->get_parent() == NULL)
  158811             :                   {
  158812             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  158813             :                   }
  158814             :                end->set_parent(initializedName);
  158815             :                ROSE_ASSERT(end->get_parent() != NULL);
  158816             :              }
  158817             : #endif
  158818             :         }
  158819             : 
  158820             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  158821           0 :      help.insertCopiedNodePair(this,result);
  158822             : 
  158823             :   // printf ("End of copy SgElementwiseLeftDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  158824             : 
  158825             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  158826             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  158827           0 :      help.decrementDepth();
  158828             : 
  158829             :   // Test if this is the root of the copy!
  158830           0 :      if (help.get_depth() == 0)
  158831             :         {
  158832             :        // This is the original calling node.
  158833             : 
  158834             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  158835             :        // printf ("Calling SgElementwiseLeftDivideOp::fixupCopy() (from root of AST being copied) \n");
  158836             : #if ALT_FIXUP_COPY
  158837             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  158838           0 :           fixupCopy_scopes (result,help);
  158839           0 :           fixupCopy_symbols (result,help);
  158840           0 :           fixupCopy_references (result,help);
  158841             : #else
  158842             :           fixupCopy(result,help);
  158843             : #endif
  158844             :        // Allow this to be called recursively, so accumulate the state.
  158845             :        // Also, clear the state in the SgCopyHelp object.
  158846             :        // help.clearState();
  158847             :         }
  158848             : 
  158849           0 :      return result;
  158850             :    }
  158851             : 
  158852             : 
  158853             : /* #line 158854 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  158854             : 
  158855             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  158856             : 
  158857           0 : SgNode* SgElementwiseDivideOp::copy ( SgCopyHelp& help) const
  158858             :    {
  158859           0 :      SgElementwiseDivideOp* result = NULL;
  158860             : 
  158861             :   // printf ("Copy SgElementwiseDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  158862             : 
  158863             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  158864             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  158865             :   // The default value of the depth is 0, so after this call the depth is 1!
  158866           0 :      help.incrementDepth();
  158867             : 
  158868             : #if 0
  158869             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  158870             :   // but it is not generally true that things can only be copied once!
  158871             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  158872             :   // AstAttribute* existingAttribute = const_cast<SgElementwiseDivideOp*>(this)->attribute["copied"];
  158873             :      bool previouslyCopied = const_cast<SgElementwiseDivideOp*>(this)->attribute.exists("copied");
  158874             :      if (previouslyCopied == true)
  158875             :         {
  158876             :           this->get_file_info()->display("Called from copy SgElementwiseDivideOp: debug");
  158877             :         }
  158878             :      ROSE_ASSERT(previouslyCopied == false);
  158879             : 
  158880             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  158881             :      AstAttribute* newAttribute = new AstAttribute();
  158882             :      ROSE_ASSERT(newAttribute != NULL);
  158883             : 
  158884             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  158885             :      const_cast<SgElementwiseDivideOp*>(this)->attribute.add("copied",newAttribute);
  158886             : #endif
  158887             : 
  158888             :   // Copy data members from base classes
  158889             :   // Copy constructor parameter data member: startOfConstruct_copy
  158890             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  158891             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  158892           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  158893           0 :      if ( p_startOfConstruct != NULL ) 
  158894             :         { 
  158895           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  158896             :         } 
  158897             :        else 
  158898             :         { 
  158899             :           startOfConstruct_copy = NULL; 
  158900             :         } 
  158901             :   // Copy constructor parameter data member: lhs_operand_i_copy
  158902           0 :      SgExpression* lhs_operand_i_copy; 
  158903             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  158904           0 :           if (get_lhs_operand_i() != NULL) 
  158905             :              { 
  158906           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  158907             :              } 
  158908             :             else 
  158909             :              { 
  158910             :                lhs_operand_i_copy = NULL; 
  158911             :              } 
  158912             :   // Copy constructor parameter data member: rhs_operand_i_copy
  158913           0 :      SgExpression* rhs_operand_i_copy; 
  158914             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  158915           0 :           if (get_rhs_operand_i() != NULL) 
  158916             :              { 
  158917           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  158918             :              } 
  158919             :             else 
  158920             :              { 
  158921             :                rhs_operand_i_copy = NULL; 
  158922             :              } 
  158923             :   // Copy constructor parameter data member: expression_type_copy
  158924             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  158925             :   // case: toBeCopied == COPY_DATA for expression_type
  158926           0 :      SgType* expression_type_copy = p_expression_type; 
  158927             :  
  158928             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  158929             : 
  158930             :   // Build an empty copy of this object (will be filled in, but 
  158931             :   // the parent can't be set and must be set by the caller)
  158932           0 :      result = new SgElementwiseDivideOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  158933           0 :      ROSE_ASSERT(result != NULL);
  158934             : 
  158935             :   // Copy data members of "this" class
  158936             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  158937             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  158938             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  158939           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  158940           0 :      if ( p_endOfConstruct != NULL ) 
  158941             :         { 
  158942           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  158943             :         } 
  158944             :        else 
  158945             :         { 
  158946             :           endOfConstruct_copy = NULL; 
  158947             :         } 
  158948             :   /* check for a valid pointer and delete if present */ 
  158949           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  158950             :   /* add assignment to result here */ 
  158951           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  158952             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  158953             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  158954             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  158955           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  158956           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  158957             :         { 
  158958           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  158959             :         } 
  158960             :        else 
  158961             :         { 
  158962             :           attachedPreprocessingInfoPtr_copy = NULL; 
  158963             :         } 
  158964             :   /* check for a valid pointer and delete if present */ 
  158965           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  158966             :   /* add assignment to result here */ 
  158967           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  158968             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  158969             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  158970             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  158971           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  158972           0 :      if ( p_attributeMechanism != NULL ) 
  158973             :         { 
  158974           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  158975             :         } 
  158976             :        else 
  158977             :         { 
  158978             :           attributeMechanism_copy = NULL; 
  158979             :         } 
  158980             :   /* check for a valid pointer and delete if present */ 
  158981           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  158982             :   /* add assignment to result here */ 
  158983           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  158984             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  158985             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  158986             :   // case: toBeCopied == COPY_DATA for need_paren
  158987           0 :      bool need_paren_copy = p_need_paren; 
  158988           0 :      result->p_need_paren = need_paren_copy; 
  158989             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  158990             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  158991             :   // case: toBeCopied == COPY_DATA for lvalue
  158992           0 :      bool lvalue_copy = p_lvalue; 
  158993           0 :      result->p_lvalue = lvalue_copy; 
  158994             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  158995             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  158996             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  158997           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  158998           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  158999             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  159000             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  159001             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  159002           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  159003           0 :      if ( p_operatorPosition != NULL ) 
  159004             :         { 
  159005           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  159006             :         } 
  159007             :        else 
  159008             :         { 
  159009             :           operatorPosition_copy = NULL; 
  159010             :         } 
  159011             :   /* check for a valid pointer and delete if present */ 
  159012           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  159013             :   /* add assignment to result here */ 
  159014           0 :      result->p_operatorPosition = operatorPosition_copy; 
  159015             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  159016             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  159017             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  159018           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  159019           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  159020             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  159021           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  159022             :              { 
  159023           0 :                lhs_operand_i_copy->set_parent(result); 
  159024             :              } 
  159025             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  159026           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  159027             :              { 
  159028           0 :                rhs_operand_i_copy->set_parent(result); 
  159029             :              } 
  159030             : 
  159031             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159032             : 
  159033             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  159034             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  159035             :   // fixupCopy(result,help);
  159036             : 
  159037             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  159038             :   // the Sg_File_Info objects that are built for the new IR nodes.
  159039           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  159040           0 :      if (locatedNode != NULL)
  159041             :         {
  159042             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  159043           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  159044           0 :           ROSE_ASSERT(start != NULL);
  159045             : #if 0
  159046             :        // Debugging information
  159047             :           if (start->get_parent() == NULL)
  159048             :              {
  159049             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159050             :              }
  159051             : #endif
  159052           0 :           start->set_parent(locatedNode);
  159053           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  159054             : 
  159055           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  159056             : 
  159057             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  159058             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  159059             :        // ROSE_ASSERT(end != NULL);
  159060           0 :           if (end == NULL)
  159061             :              {
  159062           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  159063             :              }
  159064             :             else
  159065             :              {
  159066             : #if 0
  159067             :             // Debugging information
  159068             :                if (end->get_parent() == NULL)
  159069             :                   {
  159070             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159071             :                   }
  159072             : #endif
  159073           0 :                end->set_parent(locatedNode);
  159074           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  159075             :              }
  159076             : 
  159077           0 :           SgExpression* expression = isSgExpression(result);
  159078           0 :           if (isSgExpression(this) != NULL)
  159079             :              {
  159080           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  159081             : 
  159082             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  159083           0 :                if (operatorPosition != NULL)
  159084             :                   {
  159085             : #if 0
  159086             :                  // Debugging information
  159087             :                     if (operatorPosition->get_parent() == NULL)
  159088             :                        {
  159089             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159090             :                        }
  159091             : #endif
  159092           0 :                     operatorPosition->set_parent(expression);
  159093           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  159094             :                   }
  159095             :              }
  159096             :         }
  159097             : 
  159098             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  159099           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  159100           0 :      if (initializedName != NULL)
  159101             :         {
  159102             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  159103           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  159104           0 :           ROSE_ASSERT(start != NULL);
  159105             : #if 0
  159106             :        // Debugging information
  159107             :           if (start->get_parent() == NULL)
  159108             :              {
  159109             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159110             :              }
  159111             : #endif
  159112           0 :           start->set_parent(initializedName);
  159113           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  159114             : 
  159115             : #if 0
  159116             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  159117             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  159118             : 
  159119             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  159120             :        // ROSE_ASSERT(end != NULL);
  159121             :           if (end == NULL)
  159122             :              {
  159123             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  159124             :              }
  159125             :             else
  159126             :              {
  159127             :                if (end->get_parent() == NULL)
  159128             :                   {
  159129             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159130             :                   }
  159131             :                end->set_parent(initializedName);
  159132             :                ROSE_ASSERT(end->get_parent() != NULL);
  159133             :              }
  159134             : #endif
  159135             :         }
  159136             : 
  159137             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  159138           0 :      help.insertCopiedNodePair(this,result);
  159139             : 
  159140             :   // printf ("End of copy SgElementwiseDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  159141             : 
  159142             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  159143             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  159144           0 :      help.decrementDepth();
  159145             : 
  159146             :   // Test if this is the root of the copy!
  159147           0 :      if (help.get_depth() == 0)
  159148             :         {
  159149             :        // This is the original calling node.
  159150             : 
  159151             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  159152             :        // printf ("Calling SgElementwiseDivideOp::fixupCopy() (from root of AST being copied) \n");
  159153             : #if ALT_FIXUP_COPY
  159154             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  159155           0 :           fixupCopy_scopes (result,help);
  159156           0 :           fixupCopy_symbols (result,help);
  159157           0 :           fixupCopy_references (result,help);
  159158             : #else
  159159             :           fixupCopy(result,help);
  159160             : #endif
  159161             :        // Allow this to be called recursively, so accumulate the state.
  159162             :        // Also, clear the state in the SgCopyHelp object.
  159163             :        // help.clearState();
  159164             :         }
  159165             : 
  159166           0 :      return result;
  159167             :    }
  159168             : 
  159169             : 
  159170             : /* #line 159171 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  159171             : 
  159172             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159173             : 
  159174           0 : SgNode* SgElementwiseAddOp::copy ( SgCopyHelp& help) const
  159175             :    {
  159176           0 :      SgElementwiseAddOp* result = NULL;
  159177             : 
  159178             :   // printf ("Copy SgElementwiseAddOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  159179             : 
  159180             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  159181             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  159182             :   // The default value of the depth is 0, so after this call the depth is 1!
  159183           0 :      help.incrementDepth();
  159184             : 
  159185             : #if 0
  159186             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  159187             :   // but it is not generally true that things can only be copied once!
  159188             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  159189             :   // AstAttribute* existingAttribute = const_cast<SgElementwiseAddOp*>(this)->attribute["copied"];
  159190             :      bool previouslyCopied = const_cast<SgElementwiseAddOp*>(this)->attribute.exists("copied");
  159191             :      if (previouslyCopied == true)
  159192             :         {
  159193             :           this->get_file_info()->display("Called from copy SgElementwiseAddOp: debug");
  159194             :         }
  159195             :      ROSE_ASSERT(previouslyCopied == false);
  159196             : 
  159197             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  159198             :      AstAttribute* newAttribute = new AstAttribute();
  159199             :      ROSE_ASSERT(newAttribute != NULL);
  159200             : 
  159201             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  159202             :      const_cast<SgElementwiseAddOp*>(this)->attribute.add("copied",newAttribute);
  159203             : #endif
  159204             : 
  159205             :   // Copy data members from base classes
  159206             :   // Copy constructor parameter data member: startOfConstruct_copy
  159207             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  159208             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  159209           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  159210           0 :      if ( p_startOfConstruct != NULL ) 
  159211             :         { 
  159212           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  159213             :         } 
  159214             :        else 
  159215             :         { 
  159216             :           startOfConstruct_copy = NULL; 
  159217             :         } 
  159218             :   // Copy constructor parameter data member: lhs_operand_i_copy
  159219           0 :      SgExpression* lhs_operand_i_copy; 
  159220             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  159221           0 :           if (get_lhs_operand_i() != NULL) 
  159222             :              { 
  159223           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  159224             :              } 
  159225             :             else 
  159226             :              { 
  159227             :                lhs_operand_i_copy = NULL; 
  159228             :              } 
  159229             :   // Copy constructor parameter data member: rhs_operand_i_copy
  159230           0 :      SgExpression* rhs_operand_i_copy; 
  159231             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  159232           0 :           if (get_rhs_operand_i() != NULL) 
  159233             :              { 
  159234           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  159235             :              } 
  159236             :             else 
  159237             :              { 
  159238             :                rhs_operand_i_copy = NULL; 
  159239             :              } 
  159240             :   // Copy constructor parameter data member: expression_type_copy
  159241             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  159242             :   // case: toBeCopied == COPY_DATA for expression_type
  159243           0 :      SgType* expression_type_copy = p_expression_type; 
  159244             :  
  159245             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159246             : 
  159247             :   // Build an empty copy of this object (will be filled in, but 
  159248             :   // the parent can't be set and must be set by the caller)
  159249           0 :      result = new SgElementwiseAddOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  159250           0 :      ROSE_ASSERT(result != NULL);
  159251             : 
  159252             :   // Copy data members of "this" class
  159253             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  159254             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  159255             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  159256           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  159257           0 :      if ( p_endOfConstruct != NULL ) 
  159258             :         { 
  159259           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  159260             :         } 
  159261             :        else 
  159262             :         { 
  159263             :           endOfConstruct_copy = NULL; 
  159264             :         } 
  159265             :   /* check for a valid pointer and delete if present */ 
  159266           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  159267             :   /* add assignment to result here */ 
  159268           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  159269             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  159270             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  159271             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  159272           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  159273           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  159274             :         { 
  159275           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  159276             :         } 
  159277             :        else 
  159278             :         { 
  159279             :           attachedPreprocessingInfoPtr_copy = NULL; 
  159280             :         } 
  159281             :   /* check for a valid pointer and delete if present */ 
  159282           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  159283             :   /* add assignment to result here */ 
  159284           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  159285             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  159286             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  159287             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  159288           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  159289           0 :      if ( p_attributeMechanism != NULL ) 
  159290             :         { 
  159291           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  159292             :         } 
  159293             :        else 
  159294             :         { 
  159295             :           attributeMechanism_copy = NULL; 
  159296             :         } 
  159297             :   /* check for a valid pointer and delete if present */ 
  159298           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  159299             :   /* add assignment to result here */ 
  159300           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  159301             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  159302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  159303             :   // case: toBeCopied == COPY_DATA for need_paren
  159304           0 :      bool need_paren_copy = p_need_paren; 
  159305           0 :      result->p_need_paren = need_paren_copy; 
  159306             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  159307             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  159308             :   // case: toBeCopied == COPY_DATA for lvalue
  159309           0 :      bool lvalue_copy = p_lvalue; 
  159310           0 :      result->p_lvalue = lvalue_copy; 
  159311             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  159312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  159313             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  159314           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  159315           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  159316             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  159317             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  159318             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  159319           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  159320           0 :      if ( p_operatorPosition != NULL ) 
  159321             :         { 
  159322           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  159323             :         } 
  159324             :        else 
  159325             :         { 
  159326             :           operatorPosition_copy = NULL; 
  159327             :         } 
  159328             :   /* check for a valid pointer and delete if present */ 
  159329           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  159330             :   /* add assignment to result here */ 
  159331           0 :      result->p_operatorPosition = operatorPosition_copy; 
  159332             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  159333             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  159334             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  159335           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  159336           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  159337             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  159338           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  159339             :              { 
  159340           0 :                lhs_operand_i_copy->set_parent(result); 
  159341             :              } 
  159342             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  159343           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  159344             :              { 
  159345           0 :                rhs_operand_i_copy->set_parent(result); 
  159346             :              } 
  159347             : 
  159348             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159349             : 
  159350             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  159351             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  159352             :   // fixupCopy(result,help);
  159353             : 
  159354             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  159355             :   // the Sg_File_Info objects that are built for the new IR nodes.
  159356           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  159357           0 :      if (locatedNode != NULL)
  159358             :         {
  159359             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  159360           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  159361           0 :           ROSE_ASSERT(start != NULL);
  159362             : #if 0
  159363             :        // Debugging information
  159364             :           if (start->get_parent() == NULL)
  159365             :              {
  159366             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159367             :              }
  159368             : #endif
  159369           0 :           start->set_parent(locatedNode);
  159370           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  159371             : 
  159372           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  159373             : 
  159374             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  159375             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  159376             :        // ROSE_ASSERT(end != NULL);
  159377           0 :           if (end == NULL)
  159378             :              {
  159379           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  159380             :              }
  159381             :             else
  159382             :              {
  159383             : #if 0
  159384             :             // Debugging information
  159385             :                if (end->get_parent() == NULL)
  159386             :                   {
  159387             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159388             :                   }
  159389             : #endif
  159390           0 :                end->set_parent(locatedNode);
  159391           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  159392             :              }
  159393             : 
  159394           0 :           SgExpression* expression = isSgExpression(result);
  159395           0 :           if (isSgExpression(this) != NULL)
  159396             :              {
  159397           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  159398             : 
  159399             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  159400           0 :                if (operatorPosition != NULL)
  159401             :                   {
  159402             : #if 0
  159403             :                  // Debugging information
  159404             :                     if (operatorPosition->get_parent() == NULL)
  159405             :                        {
  159406             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159407             :                        }
  159408             : #endif
  159409           0 :                     operatorPosition->set_parent(expression);
  159410           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  159411             :                   }
  159412             :              }
  159413             :         }
  159414             : 
  159415             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  159416           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  159417           0 :      if (initializedName != NULL)
  159418             :         {
  159419             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  159420           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  159421           0 :           ROSE_ASSERT(start != NULL);
  159422             : #if 0
  159423             :        // Debugging information
  159424             :           if (start->get_parent() == NULL)
  159425             :              {
  159426             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159427             :              }
  159428             : #endif
  159429           0 :           start->set_parent(initializedName);
  159430           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  159431             : 
  159432             : #if 0
  159433             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  159434             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  159435             : 
  159436             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  159437             :        // ROSE_ASSERT(end != NULL);
  159438             :           if (end == NULL)
  159439             :              {
  159440             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  159441             :              }
  159442             :             else
  159443             :              {
  159444             :                if (end->get_parent() == NULL)
  159445             :                   {
  159446             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159447             :                   }
  159448             :                end->set_parent(initializedName);
  159449             :                ROSE_ASSERT(end->get_parent() != NULL);
  159450             :              }
  159451             : #endif
  159452             :         }
  159453             : 
  159454             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  159455           0 :      help.insertCopiedNodePair(this,result);
  159456             : 
  159457             :   // printf ("End of copy SgElementwiseAddOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  159458             : 
  159459             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  159460             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  159461           0 :      help.decrementDepth();
  159462             : 
  159463             :   // Test if this is the root of the copy!
  159464           0 :      if (help.get_depth() == 0)
  159465             :         {
  159466             :        // This is the original calling node.
  159467             : 
  159468             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  159469             :        // printf ("Calling SgElementwiseAddOp::fixupCopy() (from root of AST being copied) \n");
  159470             : #if ALT_FIXUP_COPY
  159471             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  159472           0 :           fixupCopy_scopes (result,help);
  159473           0 :           fixupCopy_symbols (result,help);
  159474           0 :           fixupCopy_references (result,help);
  159475             : #else
  159476             :           fixupCopy(result,help);
  159477             : #endif
  159478             :        // Allow this to be called recursively, so accumulate the state.
  159479             :        // Also, clear the state in the SgCopyHelp object.
  159480             :        // help.clearState();
  159481             :         }
  159482             : 
  159483           0 :      return result;
  159484             :    }
  159485             : 
  159486             : 
  159487             : /* #line 159488 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  159488             : 
  159489             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159490             : 
  159491           0 : SgNode* SgElementwiseSubtractOp::copy ( SgCopyHelp& help) const
  159492             :    {
  159493           0 :      SgElementwiseSubtractOp* result = NULL;
  159494             : 
  159495             :   // printf ("Copy SgElementwiseSubtractOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  159496             : 
  159497             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  159498             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  159499             :   // The default value of the depth is 0, so after this call the depth is 1!
  159500           0 :      help.incrementDepth();
  159501             : 
  159502             : #if 0
  159503             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  159504             :   // but it is not generally true that things can only be copied once!
  159505             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  159506             :   // AstAttribute* existingAttribute = const_cast<SgElementwiseSubtractOp*>(this)->attribute["copied"];
  159507             :      bool previouslyCopied = const_cast<SgElementwiseSubtractOp*>(this)->attribute.exists("copied");
  159508             :      if (previouslyCopied == true)
  159509             :         {
  159510             :           this->get_file_info()->display("Called from copy SgElementwiseSubtractOp: debug");
  159511             :         }
  159512             :      ROSE_ASSERT(previouslyCopied == false);
  159513             : 
  159514             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  159515             :      AstAttribute* newAttribute = new AstAttribute();
  159516             :      ROSE_ASSERT(newAttribute != NULL);
  159517             : 
  159518             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  159519             :      const_cast<SgElementwiseSubtractOp*>(this)->attribute.add("copied",newAttribute);
  159520             : #endif
  159521             : 
  159522             :   // Copy data members from base classes
  159523             :   // Copy constructor parameter data member: startOfConstruct_copy
  159524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  159525             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  159526           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  159527           0 :      if ( p_startOfConstruct != NULL ) 
  159528             :         { 
  159529           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  159530             :         } 
  159531             :        else 
  159532             :         { 
  159533             :           startOfConstruct_copy = NULL; 
  159534             :         } 
  159535             :   // Copy constructor parameter data member: lhs_operand_i_copy
  159536           0 :      SgExpression* lhs_operand_i_copy; 
  159537             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  159538           0 :           if (get_lhs_operand_i() != NULL) 
  159539             :              { 
  159540           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  159541             :              } 
  159542             :             else 
  159543             :              { 
  159544             :                lhs_operand_i_copy = NULL; 
  159545             :              } 
  159546             :   // Copy constructor parameter data member: rhs_operand_i_copy
  159547           0 :      SgExpression* rhs_operand_i_copy; 
  159548             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  159549           0 :           if (get_rhs_operand_i() != NULL) 
  159550             :              { 
  159551           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  159552             :              } 
  159553             :             else 
  159554             :              { 
  159555             :                rhs_operand_i_copy = NULL; 
  159556             :              } 
  159557             :   // Copy constructor parameter data member: expression_type_copy
  159558             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  159559             :   // case: toBeCopied == COPY_DATA for expression_type
  159560           0 :      SgType* expression_type_copy = p_expression_type; 
  159561             :  
  159562             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159563             : 
  159564             :   // Build an empty copy of this object (will be filled in, but 
  159565             :   // the parent can't be set and must be set by the caller)
  159566           0 :      result = new SgElementwiseSubtractOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  159567           0 :      ROSE_ASSERT(result != NULL);
  159568             : 
  159569             :   // Copy data members of "this" class
  159570             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  159571             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  159572             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  159573           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  159574           0 :      if ( p_endOfConstruct != NULL ) 
  159575             :         { 
  159576           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  159577             :         } 
  159578             :        else 
  159579             :         { 
  159580             :           endOfConstruct_copy = NULL; 
  159581             :         } 
  159582             :   /* check for a valid pointer and delete if present */ 
  159583           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  159584             :   /* add assignment to result here */ 
  159585           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  159586             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  159587             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  159588             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  159589           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  159590           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  159591             :         { 
  159592           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  159593             :         } 
  159594             :        else 
  159595             :         { 
  159596             :           attachedPreprocessingInfoPtr_copy = NULL; 
  159597             :         } 
  159598             :   /* check for a valid pointer and delete if present */ 
  159599           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  159600             :   /* add assignment to result here */ 
  159601           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  159602             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  159603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  159604             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  159605           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  159606           0 :      if ( p_attributeMechanism != NULL ) 
  159607             :         { 
  159608           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  159609             :         } 
  159610             :        else 
  159611             :         { 
  159612             :           attributeMechanism_copy = NULL; 
  159613             :         } 
  159614             :   /* check for a valid pointer and delete if present */ 
  159615           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  159616             :   /* add assignment to result here */ 
  159617           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  159618             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  159619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  159620             :   // case: toBeCopied == COPY_DATA for need_paren
  159621           0 :      bool need_paren_copy = p_need_paren; 
  159622           0 :      result->p_need_paren = need_paren_copy; 
  159623             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  159624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  159625             :   // case: toBeCopied == COPY_DATA for lvalue
  159626           0 :      bool lvalue_copy = p_lvalue; 
  159627           0 :      result->p_lvalue = lvalue_copy; 
  159628             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  159629             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  159630             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  159631           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  159632           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  159633             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  159634             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  159635             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  159636           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  159637           0 :      if ( p_operatorPosition != NULL ) 
  159638             :         { 
  159639           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  159640             :         } 
  159641             :        else 
  159642             :         { 
  159643             :           operatorPosition_copy = NULL; 
  159644             :         } 
  159645             :   /* check for a valid pointer and delete if present */ 
  159646           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  159647             :   /* add assignment to result here */ 
  159648           0 :      result->p_operatorPosition = operatorPosition_copy; 
  159649             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  159650             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  159651             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  159652           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  159653           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  159654             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  159655           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  159656             :              { 
  159657           0 :                lhs_operand_i_copy->set_parent(result); 
  159658             :              } 
  159659             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  159660           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  159661             :              { 
  159662           0 :                rhs_operand_i_copy->set_parent(result); 
  159663             :              } 
  159664             : 
  159665             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159666             : 
  159667             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  159668             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  159669             :   // fixupCopy(result,help);
  159670             : 
  159671             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  159672             :   // the Sg_File_Info objects that are built for the new IR nodes.
  159673           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  159674           0 :      if (locatedNode != NULL)
  159675             :         {
  159676             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  159677           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  159678           0 :           ROSE_ASSERT(start != NULL);
  159679             : #if 0
  159680             :        // Debugging information
  159681             :           if (start->get_parent() == NULL)
  159682             :              {
  159683             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159684             :              }
  159685             : #endif
  159686           0 :           start->set_parent(locatedNode);
  159687           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  159688             : 
  159689           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  159690             : 
  159691             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  159692             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  159693             :        // ROSE_ASSERT(end != NULL);
  159694           0 :           if (end == NULL)
  159695             :              {
  159696           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  159697             :              }
  159698             :             else
  159699             :              {
  159700             : #if 0
  159701             :             // Debugging information
  159702             :                if (end->get_parent() == NULL)
  159703             :                   {
  159704             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159705             :                   }
  159706             : #endif
  159707           0 :                end->set_parent(locatedNode);
  159708           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  159709             :              }
  159710             : 
  159711           0 :           SgExpression* expression = isSgExpression(result);
  159712           0 :           if (isSgExpression(this) != NULL)
  159713             :              {
  159714           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  159715             : 
  159716             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  159717           0 :                if (operatorPosition != NULL)
  159718             :                   {
  159719             : #if 0
  159720             :                  // Debugging information
  159721             :                     if (operatorPosition->get_parent() == NULL)
  159722             :                        {
  159723             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159724             :                        }
  159725             : #endif
  159726           0 :                     operatorPosition->set_parent(expression);
  159727           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  159728             :                   }
  159729             :              }
  159730             :         }
  159731             : 
  159732             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  159733           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  159734           0 :      if (initializedName != NULL)
  159735             :         {
  159736             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  159737           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  159738           0 :           ROSE_ASSERT(start != NULL);
  159739             : #if 0
  159740             :        // Debugging information
  159741             :           if (start->get_parent() == NULL)
  159742             :              {
  159743             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159744             :              }
  159745             : #endif
  159746           0 :           start->set_parent(initializedName);
  159747           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  159748             : 
  159749             : #if 0
  159750             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  159751             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  159752             : 
  159753             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  159754             :        // ROSE_ASSERT(end != NULL);
  159755             :           if (end == NULL)
  159756             :              {
  159757             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  159758             :              }
  159759             :             else
  159760             :              {
  159761             :                if (end->get_parent() == NULL)
  159762             :                   {
  159763             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  159764             :                   }
  159765             :                end->set_parent(initializedName);
  159766             :                ROSE_ASSERT(end->get_parent() != NULL);
  159767             :              }
  159768             : #endif
  159769             :         }
  159770             : 
  159771             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  159772           0 :      help.insertCopiedNodePair(this,result);
  159773             : 
  159774             :   // printf ("End of copy SgElementwiseSubtractOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  159775             : 
  159776             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  159777             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  159778           0 :      help.decrementDepth();
  159779             : 
  159780             :   // Test if this is the root of the copy!
  159781           0 :      if (help.get_depth() == 0)
  159782             :         {
  159783             :        // This is the original calling node.
  159784             : 
  159785             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  159786             :        // printf ("Calling SgElementwiseSubtractOp::fixupCopy() (from root of AST being copied) \n");
  159787             : #if ALT_FIXUP_COPY
  159788             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  159789           0 :           fixupCopy_scopes (result,help);
  159790           0 :           fixupCopy_symbols (result,help);
  159791           0 :           fixupCopy_references (result,help);
  159792             : #else
  159793             :           fixupCopy(result,help);
  159794             : #endif
  159795             :        // Allow this to be called recursively, so accumulate the state.
  159796             :        // Also, clear the state in the SgCopyHelp object.
  159797             :        // help.clearState();
  159798             :         }
  159799             : 
  159800           0 :      return result;
  159801             :    }
  159802             : 
  159803             : 
  159804             : /* #line 159805 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  159805             : 
  159806             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159807             : 
  159808           0 : SgNode* SgPowerOp::copy ( SgCopyHelp& help) const
  159809             :    {
  159810           0 :      SgPowerOp* result = NULL;
  159811             : 
  159812             :   // printf ("Copy SgPowerOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  159813             : 
  159814             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  159815             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  159816             :   // The default value of the depth is 0, so after this call the depth is 1!
  159817           0 :      help.incrementDepth();
  159818             : 
  159819             : #if 0
  159820             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  159821             :   // but it is not generally true that things can only be copied once!
  159822             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  159823             :   // AstAttribute* existingAttribute = const_cast<SgPowerOp*>(this)->attribute["copied"];
  159824             :      bool previouslyCopied = const_cast<SgPowerOp*>(this)->attribute.exists("copied");
  159825             :      if (previouslyCopied == true)
  159826             :         {
  159827             :           this->get_file_info()->display("Called from copy SgPowerOp: debug");
  159828             :         }
  159829             :      ROSE_ASSERT(previouslyCopied == false);
  159830             : 
  159831             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  159832             :      AstAttribute* newAttribute = new AstAttribute();
  159833             :      ROSE_ASSERT(newAttribute != NULL);
  159834             : 
  159835             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  159836             :      const_cast<SgPowerOp*>(this)->attribute.add("copied",newAttribute);
  159837             : #endif
  159838             : 
  159839             :   // Copy data members from base classes
  159840             :   // Copy constructor parameter data member: startOfConstruct_copy
  159841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  159842             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  159843           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  159844           0 :      if ( p_startOfConstruct != NULL ) 
  159845             :         { 
  159846           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  159847             :         } 
  159848             :        else 
  159849             :         { 
  159850             :           startOfConstruct_copy = NULL; 
  159851             :         } 
  159852             :   // Copy constructor parameter data member: lhs_operand_i_copy
  159853           0 :      SgExpression* lhs_operand_i_copy; 
  159854             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  159855           0 :           if (get_lhs_operand_i() != NULL) 
  159856             :              { 
  159857           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  159858             :              } 
  159859             :             else 
  159860             :              { 
  159861             :                lhs_operand_i_copy = NULL; 
  159862             :              } 
  159863             :   // Copy constructor parameter data member: rhs_operand_i_copy
  159864           0 :      SgExpression* rhs_operand_i_copy; 
  159865             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  159866           0 :           if (get_rhs_operand_i() != NULL) 
  159867             :              { 
  159868           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  159869             :              } 
  159870             :             else 
  159871             :              { 
  159872             :                rhs_operand_i_copy = NULL; 
  159873             :              } 
  159874             :   // Copy constructor parameter data member: expression_type_copy
  159875             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  159876             :   // case: toBeCopied == COPY_DATA for expression_type
  159877           0 :      SgType* expression_type_copy = p_expression_type; 
  159878             :  
  159879             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159880             : 
  159881             :   // Build an empty copy of this object (will be filled in, but 
  159882             :   // the parent can't be set and must be set by the caller)
  159883           0 :      result = new SgPowerOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  159884           0 :      ROSE_ASSERT(result != NULL);
  159885             : 
  159886             :   // Copy data members of "this" class
  159887             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  159888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  159889             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  159890           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  159891           0 :      if ( p_endOfConstruct != NULL ) 
  159892             :         { 
  159893           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  159894             :         } 
  159895             :        else 
  159896             :         { 
  159897             :           endOfConstruct_copy = NULL; 
  159898             :         } 
  159899             :   /* check for a valid pointer and delete if present */ 
  159900           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  159901             :   /* add assignment to result here */ 
  159902           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  159903             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  159904             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  159905             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  159906           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  159907           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  159908             :         { 
  159909           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  159910             :         } 
  159911             :        else 
  159912             :         { 
  159913             :           attachedPreprocessingInfoPtr_copy = NULL; 
  159914             :         } 
  159915             :   /* check for a valid pointer and delete if present */ 
  159916           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  159917             :   /* add assignment to result here */ 
  159918           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  159919             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  159920             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  159921             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  159922           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  159923           0 :      if ( p_attributeMechanism != NULL ) 
  159924             :         { 
  159925           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  159926             :         } 
  159927             :        else 
  159928             :         { 
  159929             :           attributeMechanism_copy = NULL; 
  159930             :         } 
  159931             :   /* check for a valid pointer and delete if present */ 
  159932           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  159933             :   /* add assignment to result here */ 
  159934           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  159935             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  159936             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  159937             :   // case: toBeCopied == COPY_DATA for need_paren
  159938           0 :      bool need_paren_copy = p_need_paren; 
  159939           0 :      result->p_need_paren = need_paren_copy; 
  159940             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  159941             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  159942             :   // case: toBeCopied == COPY_DATA for lvalue
  159943           0 :      bool lvalue_copy = p_lvalue; 
  159944           0 :      result->p_lvalue = lvalue_copy; 
  159945             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  159946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  159947             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  159948           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  159949           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  159950             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  159951             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  159952             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  159953           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  159954           0 :      if ( p_operatorPosition != NULL ) 
  159955             :         { 
  159956           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  159957             :         } 
  159958             :        else 
  159959             :         { 
  159960             :           operatorPosition_copy = NULL; 
  159961             :         } 
  159962             :   /* check for a valid pointer and delete if present */ 
  159963           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  159964             :   /* add assignment to result here */ 
  159965           0 :      result->p_operatorPosition = operatorPosition_copy; 
  159966             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  159967             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  159968             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  159969           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  159970           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  159971             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  159972           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  159973             :              { 
  159974           0 :                lhs_operand_i_copy->set_parent(result); 
  159975             :              } 
  159976             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  159977           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  159978             :              { 
  159979           0 :                rhs_operand_i_copy->set_parent(result); 
  159980             :              } 
  159981             : 
  159982             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  159983             : 
  159984             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  159985             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  159986             :   // fixupCopy(result,help);
  159987             : 
  159988             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  159989             :   // the Sg_File_Info objects that are built for the new IR nodes.
  159990           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  159991           0 :      if (locatedNode != NULL)
  159992             :         {
  159993             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  159994           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  159995           0 :           ROSE_ASSERT(start != NULL);
  159996             : #if 0
  159997             :        // Debugging information
  159998             :           if (start->get_parent() == NULL)
  159999             :              {
  160000             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160001             :              }
  160002             : #endif
  160003           0 :           start->set_parent(locatedNode);
  160004           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  160005             : 
  160006           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  160007             : 
  160008             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  160009             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  160010             :        // ROSE_ASSERT(end != NULL);
  160011           0 :           if (end == NULL)
  160012             :              {
  160013           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  160014             :              }
  160015             :             else
  160016             :              {
  160017             : #if 0
  160018             :             // Debugging information
  160019             :                if (end->get_parent() == NULL)
  160020             :                   {
  160021             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160022             :                   }
  160023             : #endif
  160024           0 :                end->set_parent(locatedNode);
  160025           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  160026             :              }
  160027             : 
  160028           0 :           SgExpression* expression = isSgExpression(result);
  160029           0 :           if (isSgExpression(this) != NULL)
  160030             :              {
  160031           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  160032             : 
  160033             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  160034           0 :                if (operatorPosition != NULL)
  160035             :                   {
  160036             : #if 0
  160037             :                  // Debugging information
  160038             :                     if (operatorPosition->get_parent() == NULL)
  160039             :                        {
  160040             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160041             :                        }
  160042             : #endif
  160043           0 :                     operatorPosition->set_parent(expression);
  160044           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  160045             :                   }
  160046             :              }
  160047             :         }
  160048             : 
  160049             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  160050           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  160051           0 :      if (initializedName != NULL)
  160052             :         {
  160053             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  160054           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  160055           0 :           ROSE_ASSERT(start != NULL);
  160056             : #if 0
  160057             :        // Debugging information
  160058             :           if (start->get_parent() == NULL)
  160059             :              {
  160060             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160061             :              }
  160062             : #endif
  160063           0 :           start->set_parent(initializedName);
  160064           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  160065             : 
  160066             : #if 0
  160067             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  160068             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  160069             : 
  160070             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  160071             :        // ROSE_ASSERT(end != NULL);
  160072             :           if (end == NULL)
  160073             :              {
  160074             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  160075             :              }
  160076             :             else
  160077             :              {
  160078             :                if (end->get_parent() == NULL)
  160079             :                   {
  160080             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160081             :                   }
  160082             :                end->set_parent(initializedName);
  160083             :                ROSE_ASSERT(end->get_parent() != NULL);
  160084             :              }
  160085             : #endif
  160086             :         }
  160087             : 
  160088             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  160089           0 :      help.insertCopiedNodePair(this,result);
  160090             : 
  160091             :   // printf ("End of copy SgPowerOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  160092             : 
  160093             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  160094             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  160095           0 :      help.decrementDepth();
  160096             : 
  160097             :   // Test if this is the root of the copy!
  160098           0 :      if (help.get_depth() == 0)
  160099             :         {
  160100             :        // This is the original calling node.
  160101             : 
  160102             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  160103             :        // printf ("Calling SgPowerOp::fixupCopy() (from root of AST being copied) \n");
  160104             : #if ALT_FIXUP_COPY
  160105             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  160106           0 :           fixupCopy_scopes (result,help);
  160107           0 :           fixupCopy_symbols (result,help);
  160108           0 :           fixupCopy_references (result,help);
  160109             : #else
  160110             :           fixupCopy(result,help);
  160111             : #endif
  160112             :        // Allow this to be called recursively, so accumulate the state.
  160113             :        // Also, clear the state in the SgCopyHelp object.
  160114             :        // help.clearState();
  160115             :         }
  160116             : 
  160117           0 :      return result;
  160118             :    }
  160119             : 
  160120             : 
  160121             : /* #line 160122 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  160122             : 
  160123             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  160124             : 
  160125           0 : SgNode* SgLeftDivideOp::copy ( SgCopyHelp& help) const
  160126             :    {
  160127           0 :      SgLeftDivideOp* result = NULL;
  160128             : 
  160129             :   // printf ("Copy SgLeftDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  160130             : 
  160131             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  160132             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  160133             :   // The default value of the depth is 0, so after this call the depth is 1!
  160134           0 :      help.incrementDepth();
  160135             : 
  160136             : #if 0
  160137             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  160138             :   // but it is not generally true that things can only be copied once!
  160139             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  160140             :   // AstAttribute* existingAttribute = const_cast<SgLeftDivideOp*>(this)->attribute["copied"];
  160141             :      bool previouslyCopied = const_cast<SgLeftDivideOp*>(this)->attribute.exists("copied");
  160142             :      if (previouslyCopied == true)
  160143             :         {
  160144             :           this->get_file_info()->display("Called from copy SgLeftDivideOp: debug");
  160145             :         }
  160146             :      ROSE_ASSERT(previouslyCopied == false);
  160147             : 
  160148             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  160149             :      AstAttribute* newAttribute = new AstAttribute();
  160150             :      ROSE_ASSERT(newAttribute != NULL);
  160151             : 
  160152             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  160153             :      const_cast<SgLeftDivideOp*>(this)->attribute.add("copied",newAttribute);
  160154             : #endif
  160155             : 
  160156             :   // Copy data members from base classes
  160157             :   // Copy constructor parameter data member: startOfConstruct_copy
  160158             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  160159             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  160160           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  160161           0 :      if ( p_startOfConstruct != NULL ) 
  160162             :         { 
  160163           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  160164             :         } 
  160165             :        else 
  160166             :         { 
  160167             :           startOfConstruct_copy = NULL; 
  160168             :         } 
  160169             :   // Copy constructor parameter data member: lhs_operand_i_copy
  160170           0 :      SgExpression* lhs_operand_i_copy; 
  160171             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  160172           0 :           if (get_lhs_operand_i() != NULL) 
  160173             :              { 
  160174           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  160175             :              } 
  160176             :             else 
  160177             :              { 
  160178             :                lhs_operand_i_copy = NULL; 
  160179             :              } 
  160180             :   // Copy constructor parameter data member: rhs_operand_i_copy
  160181           0 :      SgExpression* rhs_operand_i_copy; 
  160182             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  160183           0 :           if (get_rhs_operand_i() != NULL) 
  160184             :              { 
  160185           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  160186             :              } 
  160187             :             else 
  160188             :              { 
  160189             :                rhs_operand_i_copy = NULL; 
  160190             :              } 
  160191             :   // Copy constructor parameter data member: expression_type_copy
  160192             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  160193             :   // case: toBeCopied == COPY_DATA for expression_type
  160194           0 :      SgType* expression_type_copy = p_expression_type; 
  160195             :  
  160196             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  160197             : 
  160198             :   // Build an empty copy of this object (will be filled in, but 
  160199             :   // the parent can't be set and must be set by the caller)
  160200           0 :      result = new SgLeftDivideOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  160201           0 :      ROSE_ASSERT(result != NULL);
  160202             : 
  160203             :   // Copy data members of "this" class
  160204             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  160205             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  160206             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  160207           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  160208           0 :      if ( p_endOfConstruct != NULL ) 
  160209             :         { 
  160210           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  160211             :         } 
  160212             :        else 
  160213             :         { 
  160214             :           endOfConstruct_copy = NULL; 
  160215             :         } 
  160216             :   /* check for a valid pointer and delete if present */ 
  160217           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  160218             :   /* add assignment to result here */ 
  160219           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  160220             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  160221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  160222             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  160223           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  160224           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  160225             :         { 
  160226           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  160227             :         } 
  160228             :        else 
  160229             :         { 
  160230             :           attachedPreprocessingInfoPtr_copy = NULL; 
  160231             :         } 
  160232             :   /* check for a valid pointer and delete if present */ 
  160233           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  160234             :   /* add assignment to result here */ 
  160235           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  160236             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  160237             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  160238             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  160239           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  160240           0 :      if ( p_attributeMechanism != NULL ) 
  160241             :         { 
  160242           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  160243             :         } 
  160244             :        else 
  160245             :         { 
  160246             :           attributeMechanism_copy = NULL; 
  160247             :         } 
  160248             :   /* check for a valid pointer and delete if present */ 
  160249           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  160250             :   /* add assignment to result here */ 
  160251           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  160252             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  160253             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  160254             :   // case: toBeCopied == COPY_DATA for need_paren
  160255           0 :      bool need_paren_copy = p_need_paren; 
  160256           0 :      result->p_need_paren = need_paren_copy; 
  160257             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  160258             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  160259             :   // case: toBeCopied == COPY_DATA for lvalue
  160260           0 :      bool lvalue_copy = p_lvalue; 
  160261           0 :      result->p_lvalue = lvalue_copy; 
  160262             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  160263             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  160264             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  160265           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  160266           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  160267             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  160268             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  160269             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  160270           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  160271           0 :      if ( p_operatorPosition != NULL ) 
  160272             :         { 
  160273           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  160274             :         } 
  160275             :        else 
  160276             :         { 
  160277             :           operatorPosition_copy = NULL; 
  160278             :         } 
  160279             :   /* check for a valid pointer and delete if present */ 
  160280           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  160281             :   /* add assignment to result here */ 
  160282           0 :      result->p_operatorPosition = operatorPosition_copy; 
  160283             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  160284             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  160285             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  160286           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  160287           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  160288             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  160289           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  160290             :              { 
  160291           0 :                lhs_operand_i_copy->set_parent(result); 
  160292             :              } 
  160293             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  160294           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  160295             :              { 
  160296           0 :                rhs_operand_i_copy->set_parent(result); 
  160297             :              } 
  160298             : 
  160299             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  160300             : 
  160301             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  160302             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  160303             :   // fixupCopy(result,help);
  160304             : 
  160305             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  160306             :   // the Sg_File_Info objects that are built for the new IR nodes.
  160307           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  160308           0 :      if (locatedNode != NULL)
  160309             :         {
  160310             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  160311           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  160312           0 :           ROSE_ASSERT(start != NULL);
  160313             : #if 0
  160314             :        // Debugging information
  160315             :           if (start->get_parent() == NULL)
  160316             :              {
  160317             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160318             :              }
  160319             : #endif
  160320           0 :           start->set_parent(locatedNode);
  160321           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  160322             : 
  160323           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  160324             : 
  160325             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  160326             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  160327             :        // ROSE_ASSERT(end != NULL);
  160328           0 :           if (end == NULL)
  160329             :              {
  160330           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  160331             :              }
  160332             :             else
  160333             :              {
  160334             : #if 0
  160335             :             // Debugging information
  160336             :                if (end->get_parent() == NULL)
  160337             :                   {
  160338             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160339             :                   }
  160340             : #endif
  160341           0 :                end->set_parent(locatedNode);
  160342           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  160343             :              }
  160344             : 
  160345           0 :           SgExpression* expression = isSgExpression(result);
  160346           0 :           if (isSgExpression(this) != NULL)
  160347             :              {
  160348           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  160349             : 
  160350             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  160351           0 :                if (operatorPosition != NULL)
  160352             :                   {
  160353             : #if 0
  160354             :                  // Debugging information
  160355             :                     if (operatorPosition->get_parent() == NULL)
  160356             :                        {
  160357             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160358             :                        }
  160359             : #endif
  160360           0 :                     operatorPosition->set_parent(expression);
  160361           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  160362             :                   }
  160363             :              }
  160364             :         }
  160365             : 
  160366             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  160367           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  160368           0 :      if (initializedName != NULL)
  160369             :         {
  160370             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  160371           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  160372           0 :           ROSE_ASSERT(start != NULL);
  160373             : #if 0
  160374             :        // Debugging information
  160375             :           if (start->get_parent() == NULL)
  160376             :              {
  160377             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160378             :              }
  160379             : #endif
  160380           0 :           start->set_parent(initializedName);
  160381           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  160382             : 
  160383             : #if 0
  160384             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  160385             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  160386             : 
  160387             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  160388             :        // ROSE_ASSERT(end != NULL);
  160389             :           if (end == NULL)
  160390             :              {
  160391             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  160392             :              }
  160393             :             else
  160394             :              {
  160395             :                if (end->get_parent() == NULL)
  160396             :                   {
  160397             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160398             :                   }
  160399             :                end->set_parent(initializedName);
  160400             :                ROSE_ASSERT(end->get_parent() != NULL);
  160401             :              }
  160402             : #endif
  160403             :         }
  160404             : 
  160405             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  160406           0 :      help.insertCopiedNodePair(this,result);
  160407             : 
  160408             :   // printf ("End of copy SgLeftDivideOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  160409             : 
  160410             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  160411             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  160412           0 :      help.decrementDepth();
  160413             : 
  160414             :   // Test if this is the root of the copy!
  160415           0 :      if (help.get_depth() == 0)
  160416             :         {
  160417             :        // This is the original calling node.
  160418             : 
  160419             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  160420             :        // printf ("Calling SgLeftDivideOp::fixupCopy() (from root of AST being copied) \n");
  160421             : #if ALT_FIXUP_COPY
  160422             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  160423           0 :           fixupCopy_scopes (result,help);
  160424           0 :           fixupCopy_symbols (result,help);
  160425           0 :           fixupCopy_references (result,help);
  160426             : #else
  160427             :           fixupCopy(result,help);
  160428             : #endif
  160429             :        // Allow this to be called recursively, so accumulate the state.
  160430             :        // Also, clear the state in the SgCopyHelp object.
  160431             :        // help.clearState();
  160432             :         }
  160433             : 
  160434           0 :      return result;
  160435             :    }
  160436             : 
  160437             : 
  160438             : /* #line 160439 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  160439             : 
  160440             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  160441             : 
  160442           0 : SgNode* SgSIMDBinaryOp::copy ( SgCopyHelp& help) const
  160443             :    {
  160444           0 :      SgSIMDBinaryOp* result = NULL;
  160445             : 
  160446             :   // printf ("Copy SgSIMDBinaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  160447             : 
  160448             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  160449             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  160450             :   // The default value of the depth is 0, so after this call the depth is 1!
  160451           0 :      help.incrementDepth();
  160452             : 
  160453             : #if 0
  160454             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  160455             :   // but it is not generally true that things can only be copied once!
  160456             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  160457             :   // AstAttribute* existingAttribute = const_cast<SgSIMDBinaryOp*>(this)->attribute["copied"];
  160458             :      bool previouslyCopied = const_cast<SgSIMDBinaryOp*>(this)->attribute.exists("copied");
  160459             :      if (previouslyCopied == true)
  160460             :         {
  160461             :           this->get_file_info()->display("Called from copy SgSIMDBinaryOp: debug");
  160462             :         }
  160463             :      ROSE_ASSERT(previouslyCopied == false);
  160464             : 
  160465             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  160466             :      AstAttribute* newAttribute = new AstAttribute();
  160467             :      ROSE_ASSERT(newAttribute != NULL);
  160468             : 
  160469             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  160470             :      const_cast<SgSIMDBinaryOp*>(this)->attribute.add("copied",newAttribute);
  160471             : #endif
  160472             : 
  160473             :   // Copy data members from base classes
  160474             :   // Copy constructor parameter data member: startOfConstruct_copy
  160475             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  160476             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  160477           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  160478           0 :      if ( p_startOfConstruct != NULL ) 
  160479             :         { 
  160480           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  160481             :         } 
  160482             :        else 
  160483             :         { 
  160484             :           startOfConstruct_copy = NULL; 
  160485             :         } 
  160486             :   // Copy constructor parameter data member: lhs_operand_i_copy
  160487           0 :      SgExpression* lhs_operand_i_copy; 
  160488             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  160489           0 :           if (get_lhs_operand_i() != NULL) 
  160490             :              { 
  160491           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  160492             :              } 
  160493             :             else 
  160494             :              { 
  160495             :                lhs_operand_i_copy = NULL; 
  160496             :              } 
  160497             :   // Copy constructor parameter data member: rhs_operand_i_copy
  160498           0 :      SgExpression* rhs_operand_i_copy; 
  160499             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  160500           0 :           if (get_rhs_operand_i() != NULL) 
  160501             :              { 
  160502           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  160503             :              } 
  160504             :             else 
  160505             :              { 
  160506             :                rhs_operand_i_copy = NULL; 
  160507             :              } 
  160508             :   // Copy constructor parameter data member: expression_type_copy
  160509             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  160510             :   // case: toBeCopied == COPY_DATA for expression_type
  160511           0 :      SgType* expression_type_copy = p_expression_type; 
  160512             :  
  160513             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  160514             : 
  160515             :   // Build an empty copy of this object (will be filled in, but 
  160516             :   // the parent can't be set and must be set by the caller)
  160517           0 :      result = new SgSIMDBinaryOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  160518           0 :      ROSE_ASSERT(result != NULL);
  160519             : 
  160520             :   // Copy data members of "this" class
  160521             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  160522             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  160523             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  160524           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  160525           0 :      if ( p_endOfConstruct != NULL ) 
  160526             :         { 
  160527           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  160528             :         } 
  160529             :        else 
  160530             :         { 
  160531             :           endOfConstruct_copy = NULL; 
  160532             :         } 
  160533             :   /* check for a valid pointer and delete if present */ 
  160534           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  160535             :   /* add assignment to result here */ 
  160536           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  160537             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  160538             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  160539             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  160540           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  160541           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  160542             :         { 
  160543           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  160544             :         } 
  160545             :        else 
  160546             :         { 
  160547             :           attachedPreprocessingInfoPtr_copy = NULL; 
  160548             :         } 
  160549             :   /* check for a valid pointer and delete if present */ 
  160550           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  160551             :   /* add assignment to result here */ 
  160552           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  160553             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  160554             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  160555             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  160556           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  160557           0 :      if ( p_attributeMechanism != NULL ) 
  160558             :         { 
  160559           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  160560             :         } 
  160561             :        else 
  160562             :         { 
  160563             :           attributeMechanism_copy = NULL; 
  160564             :         } 
  160565             :   /* check for a valid pointer and delete if present */ 
  160566           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  160567             :   /* add assignment to result here */ 
  160568           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  160569             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  160570             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  160571             :   // case: toBeCopied == COPY_DATA for need_paren
  160572           0 :      bool need_paren_copy = p_need_paren; 
  160573           0 :      result->p_need_paren = need_paren_copy; 
  160574             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  160575             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  160576             :   // case: toBeCopied == COPY_DATA for lvalue
  160577           0 :      bool lvalue_copy = p_lvalue; 
  160578           0 :      result->p_lvalue = lvalue_copy; 
  160579             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  160580             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  160581             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  160582           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  160583           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  160584             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  160585             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  160586             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  160587           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  160588           0 :      if ( p_operatorPosition != NULL ) 
  160589             :         { 
  160590           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  160591             :         } 
  160592             :        else 
  160593             :         { 
  160594             :           operatorPosition_copy = NULL; 
  160595             :         } 
  160596             :   /* check for a valid pointer and delete if present */ 
  160597           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  160598             :   /* add assignment to result here */ 
  160599           0 :      result->p_operatorPosition = operatorPosition_copy; 
  160600             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  160601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  160602             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  160603           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  160604           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  160605             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  160606           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  160607             :              { 
  160608           0 :                lhs_operand_i_copy->set_parent(result); 
  160609             :              } 
  160610             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  160611           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  160612             :              { 
  160613           0 :                rhs_operand_i_copy->set_parent(result); 
  160614             :              } 
  160615             : 
  160616             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  160617             : 
  160618             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  160619             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  160620             :   // fixupCopy(result,help);
  160621             : 
  160622             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  160623             :   // the Sg_File_Info objects that are built for the new IR nodes.
  160624           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  160625           0 :      if (locatedNode != NULL)
  160626             :         {
  160627             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  160628           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  160629           0 :           ROSE_ASSERT(start != NULL);
  160630             : #if 0
  160631             :        // Debugging information
  160632             :           if (start->get_parent() == NULL)
  160633             :              {
  160634             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160635             :              }
  160636             : #endif
  160637           0 :           start->set_parent(locatedNode);
  160638           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  160639             : 
  160640           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  160641             : 
  160642             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  160643             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  160644             :        // ROSE_ASSERT(end != NULL);
  160645           0 :           if (end == NULL)
  160646             :              {
  160647           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  160648             :              }
  160649             :             else
  160650             :              {
  160651             : #if 0
  160652             :             // Debugging information
  160653             :                if (end->get_parent() == NULL)
  160654             :                   {
  160655             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160656             :                   }
  160657             : #endif
  160658           0 :                end->set_parent(locatedNode);
  160659           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  160660             :              }
  160661             : 
  160662           0 :           SgExpression* expression = isSgExpression(result);
  160663           0 :           if (isSgExpression(this) != NULL)
  160664             :              {
  160665           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  160666             : 
  160667             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  160668           0 :                if (operatorPosition != NULL)
  160669             :                   {
  160670             : #if 0
  160671             :                  // Debugging information
  160672             :                     if (operatorPosition->get_parent() == NULL)
  160673             :                        {
  160674             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160675             :                        }
  160676             : #endif
  160677           0 :                     operatorPosition->set_parent(expression);
  160678           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  160679             :                   }
  160680             :              }
  160681             :         }
  160682             : 
  160683             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  160684           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  160685           0 :      if (initializedName != NULL)
  160686             :         {
  160687             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  160688           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  160689           0 :           ROSE_ASSERT(start != NULL);
  160690             : #if 0
  160691             :        // Debugging information
  160692             :           if (start->get_parent() == NULL)
  160693             :              {
  160694             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160695             :              }
  160696             : #endif
  160697           0 :           start->set_parent(initializedName);
  160698           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  160699             : 
  160700             : #if 0
  160701             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  160702             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  160703             : 
  160704             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  160705             :        // ROSE_ASSERT(end != NULL);
  160706             :           if (end == NULL)
  160707             :              {
  160708             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  160709             :              }
  160710             :             else
  160711             :              {
  160712             :                if (end->get_parent() == NULL)
  160713             :                   {
  160714             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160715             :                   }
  160716             :                end->set_parent(initializedName);
  160717             :                ROSE_ASSERT(end->get_parent() != NULL);
  160718             :              }
  160719             : #endif
  160720             :         }
  160721             : 
  160722             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  160723           0 :      help.insertCopiedNodePair(this,result);
  160724             : 
  160725             :   // printf ("End of copy SgSIMDBinaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  160726             : 
  160727             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  160728             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  160729           0 :      help.decrementDepth();
  160730             : 
  160731             :   // Test if this is the root of the copy!
  160732           0 :      if (help.get_depth() == 0)
  160733             :         {
  160734             :        // This is the original calling node.
  160735             : 
  160736             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  160737             :        // printf ("Calling SgSIMDBinaryOp::fixupCopy() (from root of AST being copied) \n");
  160738             : #if ALT_FIXUP_COPY
  160739             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  160740           0 :           fixupCopy_scopes (result,help);
  160741           0 :           fixupCopy_symbols (result,help);
  160742           0 :           fixupCopy_references (result,help);
  160743             : #else
  160744             :           fixupCopy(result,help);
  160745             : #endif
  160746             :        // Allow this to be called recursively, so accumulate the state.
  160747             :        // Also, clear the state in the SgCopyHelp object.
  160748             :        // help.clearState();
  160749             :         }
  160750             : 
  160751           0 :      return result;
  160752             :    }
  160753             : 
  160754             : 
  160755             : /* #line 160756 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  160756             : 
  160757             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  160758             : 
  160759           0 : SgNode* SgSIMDAddOp::copy ( SgCopyHelp& help) const
  160760             :    {
  160761           0 :      SgSIMDAddOp* result = NULL;
  160762             : 
  160763             :   // printf ("Copy SgSIMDAddOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  160764             : 
  160765             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  160766             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  160767             :   // The default value of the depth is 0, so after this call the depth is 1!
  160768           0 :      help.incrementDepth();
  160769             : 
  160770             : #if 0
  160771             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  160772             :   // but it is not generally true that things can only be copied once!
  160773             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  160774             :   // AstAttribute* existingAttribute = const_cast<SgSIMDAddOp*>(this)->attribute["copied"];
  160775             :      bool previouslyCopied = const_cast<SgSIMDAddOp*>(this)->attribute.exists("copied");
  160776             :      if (previouslyCopied == true)
  160777             :         {
  160778             :           this->get_file_info()->display("Called from copy SgSIMDAddOp: debug");
  160779             :         }
  160780             :      ROSE_ASSERT(previouslyCopied == false);
  160781             : 
  160782             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  160783             :      AstAttribute* newAttribute = new AstAttribute();
  160784             :      ROSE_ASSERT(newAttribute != NULL);
  160785             : 
  160786             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  160787             :      const_cast<SgSIMDAddOp*>(this)->attribute.add("copied",newAttribute);
  160788             : #endif
  160789             : 
  160790             :   // Copy data members from base classes
  160791             :   // Copy constructor parameter data member: startOfConstruct_copy
  160792             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  160793             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  160794           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  160795           0 :      if ( p_startOfConstruct != NULL ) 
  160796             :         { 
  160797           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  160798             :         } 
  160799             :        else 
  160800             :         { 
  160801             :           startOfConstruct_copy = NULL; 
  160802             :         } 
  160803             :   // Copy constructor parameter data member: lhs_operand_i_copy
  160804           0 :      SgExpression* lhs_operand_i_copy; 
  160805             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  160806           0 :           if (get_lhs_operand_i() != NULL) 
  160807             :              { 
  160808           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  160809             :              } 
  160810             :             else 
  160811             :              { 
  160812             :                lhs_operand_i_copy = NULL; 
  160813             :              } 
  160814             :   // Copy constructor parameter data member: rhs_operand_i_copy
  160815           0 :      SgExpression* rhs_operand_i_copy; 
  160816             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  160817           0 :           if (get_rhs_operand_i() != NULL) 
  160818             :              { 
  160819           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  160820             :              } 
  160821             :             else 
  160822             :              { 
  160823             :                rhs_operand_i_copy = NULL; 
  160824             :              } 
  160825             :   // Copy constructor parameter data member: expression_type_copy
  160826             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  160827             :   // case: toBeCopied == COPY_DATA for expression_type
  160828           0 :      SgType* expression_type_copy = p_expression_type; 
  160829             :  
  160830             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  160831             : 
  160832             :   // Build an empty copy of this object (will be filled in, but 
  160833             :   // the parent can't be set and must be set by the caller)
  160834           0 :      result = new SgSIMDAddOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  160835           0 :      ROSE_ASSERT(result != NULL);
  160836             : 
  160837             :   // Copy data members of "this" class
  160838             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  160839             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  160840             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  160841           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  160842           0 :      if ( p_endOfConstruct != NULL ) 
  160843             :         { 
  160844           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  160845             :         } 
  160846             :        else 
  160847             :         { 
  160848             :           endOfConstruct_copy = NULL; 
  160849             :         } 
  160850             :   /* check for a valid pointer and delete if present */ 
  160851           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  160852             :   /* add assignment to result here */ 
  160853           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  160854             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  160855             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  160856             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  160857           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  160858           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  160859             :         { 
  160860           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  160861             :         } 
  160862             :        else 
  160863             :         { 
  160864             :           attachedPreprocessingInfoPtr_copy = NULL; 
  160865             :         } 
  160866             :   /* check for a valid pointer and delete if present */ 
  160867           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  160868             :   /* add assignment to result here */ 
  160869           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  160870             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  160871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  160872             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  160873           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  160874           0 :      if ( p_attributeMechanism != NULL ) 
  160875             :         { 
  160876           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  160877             :         } 
  160878             :        else 
  160879             :         { 
  160880             :           attributeMechanism_copy = NULL; 
  160881             :         } 
  160882             :   /* check for a valid pointer and delete if present */ 
  160883           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  160884             :   /* add assignment to result here */ 
  160885           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  160886             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  160887             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  160888             :   // case: toBeCopied == COPY_DATA for need_paren
  160889           0 :      bool need_paren_copy = p_need_paren; 
  160890           0 :      result->p_need_paren = need_paren_copy; 
  160891             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  160892             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  160893             :   // case: toBeCopied == COPY_DATA for lvalue
  160894           0 :      bool lvalue_copy = p_lvalue; 
  160895           0 :      result->p_lvalue = lvalue_copy; 
  160896             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  160897             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  160898             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  160899           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  160900           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  160901             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  160902             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  160903             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  160904           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  160905           0 :      if ( p_operatorPosition != NULL ) 
  160906             :         { 
  160907           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  160908             :         } 
  160909             :        else 
  160910             :         { 
  160911             :           operatorPosition_copy = NULL; 
  160912             :         } 
  160913             :   /* check for a valid pointer and delete if present */ 
  160914           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  160915             :   /* add assignment to result here */ 
  160916           0 :      result->p_operatorPosition = operatorPosition_copy; 
  160917             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  160918             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  160919             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  160920           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  160921           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  160922             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  160923           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  160924             :              { 
  160925           0 :                lhs_operand_i_copy->set_parent(result); 
  160926             :              } 
  160927             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  160928           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  160929             :              { 
  160930           0 :                rhs_operand_i_copy->set_parent(result); 
  160931             :              } 
  160932             : 
  160933             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  160934             : 
  160935             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  160936             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  160937             :   // fixupCopy(result,help);
  160938             : 
  160939             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  160940             :   // the Sg_File_Info objects that are built for the new IR nodes.
  160941           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  160942           0 :      if (locatedNode != NULL)
  160943             :         {
  160944             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  160945           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  160946           0 :           ROSE_ASSERT(start != NULL);
  160947             : #if 0
  160948             :        // Debugging information
  160949             :           if (start->get_parent() == NULL)
  160950             :              {
  160951             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160952             :              }
  160953             : #endif
  160954           0 :           start->set_parent(locatedNode);
  160955           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  160956             : 
  160957           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  160958             : 
  160959             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  160960             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  160961             :        // ROSE_ASSERT(end != NULL);
  160962           0 :           if (end == NULL)
  160963             :              {
  160964           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  160965             :              }
  160966             :             else
  160967             :              {
  160968             : #if 0
  160969             :             // Debugging information
  160970             :                if (end->get_parent() == NULL)
  160971             :                   {
  160972             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160973             :                   }
  160974             : #endif
  160975           0 :                end->set_parent(locatedNode);
  160976           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  160977             :              }
  160978             : 
  160979           0 :           SgExpression* expression = isSgExpression(result);
  160980           0 :           if (isSgExpression(this) != NULL)
  160981             :              {
  160982           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  160983             : 
  160984             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  160985           0 :                if (operatorPosition != NULL)
  160986             :                   {
  160987             : #if 0
  160988             :                  // Debugging information
  160989             :                     if (operatorPosition->get_parent() == NULL)
  160990             :                        {
  160991             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  160992             :                        }
  160993             : #endif
  160994           0 :                     operatorPosition->set_parent(expression);
  160995           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  160996             :                   }
  160997             :              }
  160998             :         }
  160999             : 
  161000             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  161001           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  161002           0 :      if (initializedName != NULL)
  161003             :         {
  161004             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  161005           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  161006           0 :           ROSE_ASSERT(start != NULL);
  161007             : #if 0
  161008             :        // Debugging information
  161009             :           if (start->get_parent() == NULL)
  161010             :              {
  161011             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161012             :              }
  161013             : #endif
  161014           0 :           start->set_parent(initializedName);
  161015           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  161016             : 
  161017             : #if 0
  161018             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  161019             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  161020             : 
  161021             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  161022             :        // ROSE_ASSERT(end != NULL);
  161023             :           if (end == NULL)
  161024             :              {
  161025             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  161026             :              }
  161027             :             else
  161028             :              {
  161029             :                if (end->get_parent() == NULL)
  161030             :                   {
  161031             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161032             :                   }
  161033             :                end->set_parent(initializedName);
  161034             :                ROSE_ASSERT(end->get_parent() != NULL);
  161035             :              }
  161036             : #endif
  161037             :         }
  161038             : 
  161039             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  161040           0 :      help.insertCopiedNodePair(this,result);
  161041             : 
  161042             :   // printf ("End of copy SgSIMDAddOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  161043             : 
  161044             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  161045             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  161046           0 :      help.decrementDepth();
  161047             : 
  161048             :   // Test if this is the root of the copy!
  161049           0 :      if (help.get_depth() == 0)
  161050             :         {
  161051             :        // This is the original calling node.
  161052             : 
  161053             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  161054             :        // printf ("Calling SgSIMDAddOp::fixupCopy() (from root of AST being copied) \n");
  161055             : #if ALT_FIXUP_COPY
  161056             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  161057           0 :           fixupCopy_scopes (result,help);
  161058           0 :           fixupCopy_symbols (result,help);
  161059           0 :           fixupCopy_references (result,help);
  161060             : #else
  161061             :           fixupCopy(result,help);
  161062             : #endif
  161063             :        // Allow this to be called recursively, so accumulate the state.
  161064             :        // Also, clear the state in the SgCopyHelp object.
  161065             :        // help.clearState();
  161066             :         }
  161067             : 
  161068           0 :      return result;
  161069             :    }
  161070             : 
  161071             : 
  161072             : /* #line 161073 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  161073             : 
  161074             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  161075             : 
  161076           0 : SgNode* SgSIMDSubOp::copy ( SgCopyHelp& help) const
  161077             :    {
  161078           0 :      SgSIMDSubOp* result = NULL;
  161079             : 
  161080             :   // printf ("Copy SgSIMDSubOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  161081             : 
  161082             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  161083             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  161084             :   // The default value of the depth is 0, so after this call the depth is 1!
  161085           0 :      help.incrementDepth();
  161086             : 
  161087             : #if 0
  161088             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  161089             :   // but it is not generally true that things can only be copied once!
  161090             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  161091             :   // AstAttribute* existingAttribute = const_cast<SgSIMDSubOp*>(this)->attribute["copied"];
  161092             :      bool previouslyCopied = const_cast<SgSIMDSubOp*>(this)->attribute.exists("copied");
  161093             :      if (previouslyCopied == true)
  161094             :         {
  161095             :           this->get_file_info()->display("Called from copy SgSIMDSubOp: debug");
  161096             :         }
  161097             :      ROSE_ASSERT(previouslyCopied == false);
  161098             : 
  161099             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  161100             :      AstAttribute* newAttribute = new AstAttribute();
  161101             :      ROSE_ASSERT(newAttribute != NULL);
  161102             : 
  161103             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  161104             :      const_cast<SgSIMDSubOp*>(this)->attribute.add("copied",newAttribute);
  161105             : #endif
  161106             : 
  161107             :   // Copy data members from base classes
  161108             :   // Copy constructor parameter data member: startOfConstruct_copy
  161109             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  161110             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  161111           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  161112           0 :      if ( p_startOfConstruct != NULL ) 
  161113             :         { 
  161114           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  161115             :         } 
  161116             :        else 
  161117             :         { 
  161118             :           startOfConstruct_copy = NULL; 
  161119             :         } 
  161120             :   // Copy constructor parameter data member: lhs_operand_i_copy
  161121           0 :      SgExpression* lhs_operand_i_copy; 
  161122             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  161123           0 :           if (get_lhs_operand_i() != NULL) 
  161124             :              { 
  161125           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  161126             :              } 
  161127             :             else 
  161128             :              { 
  161129             :                lhs_operand_i_copy = NULL; 
  161130             :              } 
  161131             :   // Copy constructor parameter data member: rhs_operand_i_copy
  161132           0 :      SgExpression* rhs_operand_i_copy; 
  161133             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  161134           0 :           if (get_rhs_operand_i() != NULL) 
  161135             :              { 
  161136           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  161137             :              } 
  161138             :             else 
  161139             :              { 
  161140             :                rhs_operand_i_copy = NULL; 
  161141             :              } 
  161142             :   // Copy constructor parameter data member: expression_type_copy
  161143             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  161144             :   // case: toBeCopied == COPY_DATA for expression_type
  161145           0 :      SgType* expression_type_copy = p_expression_type; 
  161146             :  
  161147             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  161148             : 
  161149             :   // Build an empty copy of this object (will be filled in, but 
  161150             :   // the parent can't be set and must be set by the caller)
  161151           0 :      result = new SgSIMDSubOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  161152           0 :      ROSE_ASSERT(result != NULL);
  161153             : 
  161154             :   // Copy data members of "this" class
  161155             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  161156             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  161157             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  161158           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  161159           0 :      if ( p_endOfConstruct != NULL ) 
  161160             :         { 
  161161           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  161162             :         } 
  161163             :        else 
  161164             :         { 
  161165             :           endOfConstruct_copy = NULL; 
  161166             :         } 
  161167             :   /* check for a valid pointer and delete if present */ 
  161168           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  161169             :   /* add assignment to result here */ 
  161170           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  161171             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  161172             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  161173             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  161174           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  161175           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  161176             :         { 
  161177           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  161178             :         } 
  161179             :        else 
  161180             :         { 
  161181             :           attachedPreprocessingInfoPtr_copy = NULL; 
  161182             :         } 
  161183             :   /* check for a valid pointer and delete if present */ 
  161184           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  161185             :   /* add assignment to result here */ 
  161186           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  161187             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  161188             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  161189             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  161190           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  161191           0 :      if ( p_attributeMechanism != NULL ) 
  161192             :         { 
  161193           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  161194             :         } 
  161195             :        else 
  161196             :         { 
  161197             :           attributeMechanism_copy = NULL; 
  161198             :         } 
  161199             :   /* check for a valid pointer and delete if present */ 
  161200           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  161201             :   /* add assignment to result here */ 
  161202           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  161203             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  161204             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  161205             :   // case: toBeCopied == COPY_DATA for need_paren
  161206           0 :      bool need_paren_copy = p_need_paren; 
  161207           0 :      result->p_need_paren = need_paren_copy; 
  161208             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  161209             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  161210             :   // case: toBeCopied == COPY_DATA for lvalue
  161211           0 :      bool lvalue_copy = p_lvalue; 
  161212           0 :      result->p_lvalue = lvalue_copy; 
  161213             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  161214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  161215             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  161216           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  161217           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  161218             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  161219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  161220             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  161221           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  161222           0 :      if ( p_operatorPosition != NULL ) 
  161223             :         { 
  161224           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  161225             :         } 
  161226             :        else 
  161227             :         { 
  161228             :           operatorPosition_copy = NULL; 
  161229             :         } 
  161230             :   /* check for a valid pointer and delete if present */ 
  161231           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  161232             :   /* add assignment to result here */ 
  161233           0 :      result->p_operatorPosition = operatorPosition_copy; 
  161234             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  161235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  161236             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  161237           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  161238           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  161239             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  161240           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  161241             :              { 
  161242           0 :                lhs_operand_i_copy->set_parent(result); 
  161243             :              } 
  161244             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  161245           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  161246             :              { 
  161247           0 :                rhs_operand_i_copy->set_parent(result); 
  161248             :              } 
  161249             : 
  161250             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  161251             : 
  161252             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  161253             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  161254             :   // fixupCopy(result,help);
  161255             : 
  161256             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  161257             :   // the Sg_File_Info objects that are built for the new IR nodes.
  161258           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  161259           0 :      if (locatedNode != NULL)
  161260             :         {
  161261             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  161262           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  161263           0 :           ROSE_ASSERT(start != NULL);
  161264             : #if 0
  161265             :        // Debugging information
  161266             :           if (start->get_parent() == NULL)
  161267             :              {
  161268             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161269             :              }
  161270             : #endif
  161271           0 :           start->set_parent(locatedNode);
  161272           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  161273             : 
  161274           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  161275             : 
  161276             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  161277             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  161278             :        // ROSE_ASSERT(end != NULL);
  161279           0 :           if (end == NULL)
  161280             :              {
  161281           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  161282             :              }
  161283             :             else
  161284             :              {
  161285             : #if 0
  161286             :             // Debugging information
  161287             :                if (end->get_parent() == NULL)
  161288             :                   {
  161289             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161290             :                   }
  161291             : #endif
  161292           0 :                end->set_parent(locatedNode);
  161293           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  161294             :              }
  161295             : 
  161296           0 :           SgExpression* expression = isSgExpression(result);
  161297           0 :           if (isSgExpression(this) != NULL)
  161298             :              {
  161299           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  161300             : 
  161301             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  161302           0 :                if (operatorPosition != NULL)
  161303             :                   {
  161304             : #if 0
  161305             :                  // Debugging information
  161306             :                     if (operatorPosition->get_parent() == NULL)
  161307             :                        {
  161308             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161309             :                        }
  161310             : #endif
  161311           0 :                     operatorPosition->set_parent(expression);
  161312           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  161313             :                   }
  161314             :              }
  161315             :         }
  161316             : 
  161317             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  161318           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  161319           0 :      if (initializedName != NULL)
  161320             :         {
  161321             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  161322           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  161323           0 :           ROSE_ASSERT(start != NULL);
  161324             : #if 0
  161325             :        // Debugging information
  161326             :           if (start->get_parent() == NULL)
  161327             :              {
  161328             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161329             :              }
  161330             : #endif
  161331           0 :           start->set_parent(initializedName);
  161332           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  161333             : 
  161334             : #if 0
  161335             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  161336             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  161337             : 
  161338             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  161339             :        // ROSE_ASSERT(end != NULL);
  161340             :           if (end == NULL)
  161341             :              {
  161342             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  161343             :              }
  161344             :             else
  161345             :              {
  161346             :                if (end->get_parent() == NULL)
  161347             :                   {
  161348             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161349             :                   }
  161350             :                end->set_parent(initializedName);
  161351             :                ROSE_ASSERT(end->get_parent() != NULL);
  161352             :              }
  161353             : #endif
  161354             :         }
  161355             : 
  161356             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  161357           0 :      help.insertCopiedNodePair(this,result);
  161358             : 
  161359             :   // printf ("End of copy SgSIMDSubOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  161360             : 
  161361             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  161362             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  161363           0 :      help.decrementDepth();
  161364             : 
  161365             :   // Test if this is the root of the copy!
  161366           0 :      if (help.get_depth() == 0)
  161367             :         {
  161368             :        // This is the original calling node.
  161369             : 
  161370             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  161371             :        // printf ("Calling SgSIMDSubOp::fixupCopy() (from root of AST being copied) \n");
  161372             : #if ALT_FIXUP_COPY
  161373             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  161374           0 :           fixupCopy_scopes (result,help);
  161375           0 :           fixupCopy_symbols (result,help);
  161376           0 :           fixupCopy_references (result,help);
  161377             : #else
  161378             :           fixupCopy(result,help);
  161379             : #endif
  161380             :        // Allow this to be called recursively, so accumulate the state.
  161381             :        // Also, clear the state in the SgCopyHelp object.
  161382             :        // help.clearState();
  161383             :         }
  161384             : 
  161385           0 :      return result;
  161386             :    }
  161387             : 
  161388             : 
  161389             : /* #line 161390 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  161390             : 
  161391             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  161392             : 
  161393           0 : SgNode* SgSIMDMulOp::copy ( SgCopyHelp& help) const
  161394             :    {
  161395           0 :      SgSIMDMulOp* result = NULL;
  161396             : 
  161397             :   // printf ("Copy SgSIMDMulOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  161398             : 
  161399             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  161400             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  161401             :   // The default value of the depth is 0, so after this call the depth is 1!
  161402           0 :      help.incrementDepth();
  161403             : 
  161404             : #if 0
  161405             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  161406             :   // but it is not generally true that things can only be copied once!
  161407             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  161408             :   // AstAttribute* existingAttribute = const_cast<SgSIMDMulOp*>(this)->attribute["copied"];
  161409             :      bool previouslyCopied = const_cast<SgSIMDMulOp*>(this)->attribute.exists("copied");
  161410             :      if (previouslyCopied == true)
  161411             :         {
  161412             :           this->get_file_info()->display("Called from copy SgSIMDMulOp: debug");
  161413             :         }
  161414             :      ROSE_ASSERT(previouslyCopied == false);
  161415             : 
  161416             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  161417             :      AstAttribute* newAttribute = new AstAttribute();
  161418             :      ROSE_ASSERT(newAttribute != NULL);
  161419             : 
  161420             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  161421             :      const_cast<SgSIMDMulOp*>(this)->attribute.add("copied",newAttribute);
  161422             : #endif
  161423             : 
  161424             :   // Copy data members from base classes
  161425             :   // Copy constructor parameter data member: startOfConstruct_copy
  161426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  161427             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  161428           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  161429           0 :      if ( p_startOfConstruct != NULL ) 
  161430             :         { 
  161431           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  161432             :         } 
  161433             :        else 
  161434             :         { 
  161435             :           startOfConstruct_copy = NULL; 
  161436             :         } 
  161437             :   // Copy constructor parameter data member: lhs_operand_i_copy
  161438           0 :      SgExpression* lhs_operand_i_copy; 
  161439             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  161440           0 :           if (get_lhs_operand_i() != NULL) 
  161441             :              { 
  161442           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  161443             :              } 
  161444             :             else 
  161445             :              { 
  161446             :                lhs_operand_i_copy = NULL; 
  161447             :              } 
  161448             :   // Copy constructor parameter data member: rhs_operand_i_copy
  161449           0 :      SgExpression* rhs_operand_i_copy; 
  161450             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  161451           0 :           if (get_rhs_operand_i() != NULL) 
  161452             :              { 
  161453           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  161454             :              } 
  161455             :             else 
  161456             :              { 
  161457             :                rhs_operand_i_copy = NULL; 
  161458             :              } 
  161459             :   // Copy constructor parameter data member: expression_type_copy
  161460             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  161461             :   // case: toBeCopied == COPY_DATA for expression_type
  161462           0 :      SgType* expression_type_copy = p_expression_type; 
  161463             :  
  161464             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  161465             : 
  161466             :   // Build an empty copy of this object (will be filled in, but 
  161467             :   // the parent can't be set and must be set by the caller)
  161468           0 :      result = new SgSIMDMulOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  161469           0 :      ROSE_ASSERT(result != NULL);
  161470             : 
  161471             :   // Copy data members of "this" class
  161472             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  161473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  161474             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  161475           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  161476           0 :      if ( p_endOfConstruct != NULL ) 
  161477             :         { 
  161478           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  161479             :         } 
  161480             :        else 
  161481             :         { 
  161482             :           endOfConstruct_copy = NULL; 
  161483             :         } 
  161484             :   /* check for a valid pointer and delete if present */ 
  161485           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  161486             :   /* add assignment to result here */ 
  161487           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  161488             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  161489             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  161490             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  161491           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  161492           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  161493             :         { 
  161494           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  161495             :         } 
  161496             :        else 
  161497             :         { 
  161498             :           attachedPreprocessingInfoPtr_copy = NULL; 
  161499             :         } 
  161500             :   /* check for a valid pointer and delete if present */ 
  161501           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  161502             :   /* add assignment to result here */ 
  161503           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  161504             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  161505             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  161506             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  161507           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  161508           0 :      if ( p_attributeMechanism != NULL ) 
  161509             :         { 
  161510           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  161511             :         } 
  161512             :        else 
  161513             :         { 
  161514             :           attributeMechanism_copy = NULL; 
  161515             :         } 
  161516             :   /* check for a valid pointer and delete if present */ 
  161517           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  161518             :   /* add assignment to result here */ 
  161519           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  161520             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  161521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  161522             :   // case: toBeCopied == COPY_DATA for need_paren
  161523           0 :      bool need_paren_copy = p_need_paren; 
  161524           0 :      result->p_need_paren = need_paren_copy; 
  161525             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  161526             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  161527             :   // case: toBeCopied == COPY_DATA for lvalue
  161528           0 :      bool lvalue_copy = p_lvalue; 
  161529           0 :      result->p_lvalue = lvalue_copy; 
  161530             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  161531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  161532             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  161533           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  161534           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  161535             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  161536             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  161537             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  161538           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  161539           0 :      if ( p_operatorPosition != NULL ) 
  161540             :         { 
  161541           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  161542             :         } 
  161543             :        else 
  161544             :         { 
  161545             :           operatorPosition_copy = NULL; 
  161546             :         } 
  161547             :   /* check for a valid pointer and delete if present */ 
  161548           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  161549             :   /* add assignment to result here */ 
  161550           0 :      result->p_operatorPosition = operatorPosition_copy; 
  161551             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  161552             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  161553             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  161554           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  161555           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  161556             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  161557           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  161558             :              { 
  161559           0 :                lhs_operand_i_copy->set_parent(result); 
  161560             :              } 
  161561             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  161562           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  161563             :              { 
  161564           0 :                rhs_operand_i_copy->set_parent(result); 
  161565             :              } 
  161566             : 
  161567             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  161568             : 
  161569             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  161570             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  161571             :   // fixupCopy(result,help);
  161572             : 
  161573             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  161574             :   // the Sg_File_Info objects that are built for the new IR nodes.
  161575           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  161576           0 :      if (locatedNode != NULL)
  161577             :         {
  161578             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  161579           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  161580           0 :           ROSE_ASSERT(start != NULL);
  161581             : #if 0
  161582             :        // Debugging information
  161583             :           if (start->get_parent() == NULL)
  161584             :              {
  161585             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161586             :              }
  161587             : #endif
  161588           0 :           start->set_parent(locatedNode);
  161589           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  161590             : 
  161591           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  161592             : 
  161593             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  161594             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  161595             :        // ROSE_ASSERT(end != NULL);
  161596           0 :           if (end == NULL)
  161597             :              {
  161598           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  161599             :              }
  161600             :             else
  161601             :              {
  161602             : #if 0
  161603             :             // Debugging information
  161604             :                if (end->get_parent() == NULL)
  161605             :                   {
  161606             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161607             :                   }
  161608             : #endif
  161609           0 :                end->set_parent(locatedNode);
  161610           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  161611             :              }
  161612             : 
  161613           0 :           SgExpression* expression = isSgExpression(result);
  161614           0 :           if (isSgExpression(this) != NULL)
  161615             :              {
  161616           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  161617             : 
  161618             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  161619           0 :                if (operatorPosition != NULL)
  161620             :                   {
  161621             : #if 0
  161622             :                  // Debugging information
  161623             :                     if (operatorPosition->get_parent() == NULL)
  161624             :                        {
  161625             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161626             :                        }
  161627             : #endif
  161628           0 :                     operatorPosition->set_parent(expression);
  161629           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  161630             :                   }
  161631             :              }
  161632             :         }
  161633             : 
  161634             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  161635           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  161636           0 :      if (initializedName != NULL)
  161637             :         {
  161638             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  161639           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  161640           0 :           ROSE_ASSERT(start != NULL);
  161641             : #if 0
  161642             :        // Debugging information
  161643             :           if (start->get_parent() == NULL)
  161644             :              {
  161645             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161646             :              }
  161647             : #endif
  161648           0 :           start->set_parent(initializedName);
  161649           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  161650             : 
  161651             : #if 0
  161652             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  161653             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  161654             : 
  161655             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  161656             :        // ROSE_ASSERT(end != NULL);
  161657             :           if (end == NULL)
  161658             :              {
  161659             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  161660             :              }
  161661             :             else
  161662             :              {
  161663             :                if (end->get_parent() == NULL)
  161664             :                   {
  161665             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161666             :                   }
  161667             :                end->set_parent(initializedName);
  161668             :                ROSE_ASSERT(end->get_parent() != NULL);
  161669             :              }
  161670             : #endif
  161671             :         }
  161672             : 
  161673             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  161674           0 :      help.insertCopiedNodePair(this,result);
  161675             : 
  161676             :   // printf ("End of copy SgSIMDMulOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  161677             : 
  161678             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  161679             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  161680           0 :      help.decrementDepth();
  161681             : 
  161682             :   // Test if this is the root of the copy!
  161683           0 :      if (help.get_depth() == 0)
  161684             :         {
  161685             :        // This is the original calling node.
  161686             : 
  161687             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  161688             :        // printf ("Calling SgSIMDMulOp::fixupCopy() (from root of AST being copied) \n");
  161689             : #if ALT_FIXUP_COPY
  161690             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  161691           0 :           fixupCopy_scopes (result,help);
  161692           0 :           fixupCopy_symbols (result,help);
  161693           0 :           fixupCopy_references (result,help);
  161694             : #else
  161695             :           fixupCopy(result,help);
  161696             : #endif
  161697             :        // Allow this to be called recursively, so accumulate the state.
  161698             :        // Also, clear the state in the SgCopyHelp object.
  161699             :        // help.clearState();
  161700             :         }
  161701             : 
  161702           0 :      return result;
  161703             :    }
  161704             : 
  161705             : 
  161706             : /* #line 161707 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  161707             : 
  161708             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  161709             : 
  161710           0 : SgNode* SgSIMDDivOp::copy ( SgCopyHelp& help) const
  161711             :    {
  161712           0 :      SgSIMDDivOp* result = NULL;
  161713             : 
  161714             :   // printf ("Copy SgSIMDDivOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  161715             : 
  161716             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  161717             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  161718             :   // The default value of the depth is 0, so after this call the depth is 1!
  161719           0 :      help.incrementDepth();
  161720             : 
  161721             : #if 0
  161722             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  161723             :   // but it is not generally true that things can only be copied once!
  161724             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  161725             :   // AstAttribute* existingAttribute = const_cast<SgSIMDDivOp*>(this)->attribute["copied"];
  161726             :      bool previouslyCopied = const_cast<SgSIMDDivOp*>(this)->attribute.exists("copied");
  161727             :      if (previouslyCopied == true)
  161728             :         {
  161729             :           this->get_file_info()->display("Called from copy SgSIMDDivOp: debug");
  161730             :         }
  161731             :      ROSE_ASSERT(previouslyCopied == false);
  161732             : 
  161733             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  161734             :      AstAttribute* newAttribute = new AstAttribute();
  161735             :      ROSE_ASSERT(newAttribute != NULL);
  161736             : 
  161737             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  161738             :      const_cast<SgSIMDDivOp*>(this)->attribute.add("copied",newAttribute);
  161739             : #endif
  161740             : 
  161741             :   // Copy data members from base classes
  161742             :   // Copy constructor parameter data member: startOfConstruct_copy
  161743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  161744             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  161745           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  161746           0 :      if ( p_startOfConstruct != NULL ) 
  161747             :         { 
  161748           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  161749             :         } 
  161750             :        else 
  161751             :         { 
  161752             :           startOfConstruct_copy = NULL; 
  161753             :         } 
  161754             :   // Copy constructor parameter data member: lhs_operand_i_copy
  161755           0 :      SgExpression* lhs_operand_i_copy; 
  161756             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  161757           0 :           if (get_lhs_operand_i() != NULL) 
  161758             :              { 
  161759           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  161760             :              } 
  161761             :             else 
  161762             :              { 
  161763             :                lhs_operand_i_copy = NULL; 
  161764             :              } 
  161765             :   // Copy constructor parameter data member: rhs_operand_i_copy
  161766           0 :      SgExpression* rhs_operand_i_copy; 
  161767             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  161768           0 :           if (get_rhs_operand_i() != NULL) 
  161769             :              { 
  161770           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  161771             :              } 
  161772             :             else 
  161773             :              { 
  161774             :                rhs_operand_i_copy = NULL; 
  161775             :              } 
  161776             :   // Copy constructor parameter data member: expression_type_copy
  161777             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  161778             :   // case: toBeCopied == COPY_DATA for expression_type
  161779           0 :      SgType* expression_type_copy = p_expression_type; 
  161780             :  
  161781             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  161782             : 
  161783             :   // Build an empty copy of this object (will be filled in, but 
  161784             :   // the parent can't be set and must be set by the caller)
  161785           0 :      result = new SgSIMDDivOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  161786           0 :      ROSE_ASSERT(result != NULL);
  161787             : 
  161788             :   // Copy data members of "this" class
  161789             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  161790             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  161791             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  161792           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  161793           0 :      if ( p_endOfConstruct != NULL ) 
  161794             :         { 
  161795           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  161796             :         } 
  161797             :        else 
  161798             :         { 
  161799             :           endOfConstruct_copy = NULL; 
  161800             :         } 
  161801             :   /* check for a valid pointer and delete if present */ 
  161802           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  161803             :   /* add assignment to result here */ 
  161804           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  161805             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  161806             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  161807             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  161808           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  161809           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  161810             :         { 
  161811           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  161812             :         } 
  161813             :        else 
  161814             :         { 
  161815             :           attachedPreprocessingInfoPtr_copy = NULL; 
  161816             :         } 
  161817             :   /* check for a valid pointer and delete if present */ 
  161818           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  161819             :   /* add assignment to result here */ 
  161820           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  161821             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  161822             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  161823             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  161824           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  161825           0 :      if ( p_attributeMechanism != NULL ) 
  161826             :         { 
  161827           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  161828             :         } 
  161829             :        else 
  161830             :         { 
  161831             :           attributeMechanism_copy = NULL; 
  161832             :         } 
  161833             :   /* check for a valid pointer and delete if present */ 
  161834           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  161835             :   /* add assignment to result here */ 
  161836           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  161837             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  161838             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  161839             :   // case: toBeCopied == COPY_DATA for need_paren
  161840           0 :      bool need_paren_copy = p_need_paren; 
  161841           0 :      result->p_need_paren = need_paren_copy; 
  161842             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  161843             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  161844             :   // case: toBeCopied == COPY_DATA for lvalue
  161845           0 :      bool lvalue_copy = p_lvalue; 
  161846           0 :      result->p_lvalue = lvalue_copy; 
  161847             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  161848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  161849             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  161850           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  161851           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  161852             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  161853             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  161854             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  161855           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  161856           0 :      if ( p_operatorPosition != NULL ) 
  161857             :         { 
  161858           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  161859             :         } 
  161860             :        else 
  161861             :         { 
  161862             :           operatorPosition_copy = NULL; 
  161863             :         } 
  161864             :   /* check for a valid pointer and delete if present */ 
  161865           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  161866             :   /* add assignment to result here */ 
  161867           0 :      result->p_operatorPosition = operatorPosition_copy; 
  161868             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  161869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  161870             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  161871           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  161872           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  161873             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  161874           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  161875             :              { 
  161876           0 :                lhs_operand_i_copy->set_parent(result); 
  161877             :              } 
  161878             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  161879           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  161880             :              { 
  161881           0 :                rhs_operand_i_copy->set_parent(result); 
  161882             :              } 
  161883             : 
  161884             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  161885             : 
  161886             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  161887             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  161888             :   // fixupCopy(result,help);
  161889             : 
  161890             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  161891             :   // the Sg_File_Info objects that are built for the new IR nodes.
  161892           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  161893           0 :      if (locatedNode != NULL)
  161894             :         {
  161895             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  161896           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  161897           0 :           ROSE_ASSERT(start != NULL);
  161898             : #if 0
  161899             :        // Debugging information
  161900             :           if (start->get_parent() == NULL)
  161901             :              {
  161902             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161903             :              }
  161904             : #endif
  161905           0 :           start->set_parent(locatedNode);
  161906           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  161907             : 
  161908           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  161909             : 
  161910             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  161911             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  161912             :        // ROSE_ASSERT(end != NULL);
  161913           0 :           if (end == NULL)
  161914             :              {
  161915           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  161916             :              }
  161917             :             else
  161918             :              {
  161919             : #if 0
  161920             :             // Debugging information
  161921             :                if (end->get_parent() == NULL)
  161922             :                   {
  161923             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161924             :                   }
  161925             : #endif
  161926           0 :                end->set_parent(locatedNode);
  161927           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  161928             :              }
  161929             : 
  161930           0 :           SgExpression* expression = isSgExpression(result);
  161931           0 :           if (isSgExpression(this) != NULL)
  161932             :              {
  161933           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  161934             : 
  161935             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  161936           0 :                if (operatorPosition != NULL)
  161937             :                   {
  161938             : #if 0
  161939             :                  // Debugging information
  161940             :                     if (operatorPosition->get_parent() == NULL)
  161941             :                        {
  161942             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161943             :                        }
  161944             : #endif
  161945           0 :                     operatorPosition->set_parent(expression);
  161946           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  161947             :                   }
  161948             :              }
  161949             :         }
  161950             : 
  161951             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  161952           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  161953           0 :      if (initializedName != NULL)
  161954             :         {
  161955             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  161956           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  161957           0 :           ROSE_ASSERT(start != NULL);
  161958             : #if 0
  161959             :        // Debugging information
  161960             :           if (start->get_parent() == NULL)
  161961             :              {
  161962             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161963             :              }
  161964             : #endif
  161965           0 :           start->set_parent(initializedName);
  161966           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  161967             : 
  161968             : #if 0
  161969             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  161970             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  161971             : 
  161972             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  161973             :        // ROSE_ASSERT(end != NULL);
  161974             :           if (end == NULL)
  161975             :              {
  161976             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  161977             :              }
  161978             :             else
  161979             :              {
  161980             :                if (end->get_parent() == NULL)
  161981             :                   {
  161982             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  161983             :                   }
  161984             :                end->set_parent(initializedName);
  161985             :                ROSE_ASSERT(end->get_parent() != NULL);
  161986             :              }
  161987             : #endif
  161988             :         }
  161989             : 
  161990             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  161991           0 :      help.insertCopiedNodePair(this,result);
  161992             : 
  161993             :   // printf ("End of copy SgSIMDDivOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  161994             : 
  161995             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  161996             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  161997           0 :      help.decrementDepth();
  161998             : 
  161999             :   // Test if this is the root of the copy!
  162000           0 :      if (help.get_depth() == 0)
  162001             :         {
  162002             :        // This is the original calling node.
  162003             : 
  162004             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  162005             :        // printf ("Calling SgSIMDDivOp::fixupCopy() (from root of AST being copied) \n");
  162006             : #if ALT_FIXUP_COPY
  162007             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  162008           0 :           fixupCopy_scopes (result,help);
  162009           0 :           fixupCopy_symbols (result,help);
  162010           0 :           fixupCopy_references (result,help);
  162011             : #else
  162012             :           fixupCopy(result,help);
  162013             : #endif
  162014             :        // Allow this to be called recursively, so accumulate the state.
  162015             :        // Also, clear the state in the SgCopyHelp object.
  162016             :        // help.clearState();
  162017             :         }
  162018             : 
  162019           0 :      return result;
  162020             :    }
  162021             : 
  162022             : 
  162023             : /* #line 162024 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  162024             : 
  162025             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162026             : 
  162027           0 : SgNode* SgSIMDFmaOp::copy ( SgCopyHelp& help) const
  162028             :    {
  162029           0 :      SgSIMDFmaOp* result = NULL;
  162030             : 
  162031             :   // printf ("Copy SgSIMDFmaOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  162032             : 
  162033             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  162034             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  162035             :   // The default value of the depth is 0, so after this call the depth is 1!
  162036           0 :      help.incrementDepth();
  162037             : 
  162038             : #if 0
  162039             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  162040             :   // but it is not generally true that things can only be copied once!
  162041             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  162042             :   // AstAttribute* existingAttribute = const_cast<SgSIMDFmaOp*>(this)->attribute["copied"];
  162043             :      bool previouslyCopied = const_cast<SgSIMDFmaOp*>(this)->attribute.exists("copied");
  162044             :      if (previouslyCopied == true)
  162045             :         {
  162046             :           this->get_file_info()->display("Called from copy SgSIMDFmaOp: debug");
  162047             :         }
  162048             :      ROSE_ASSERT(previouslyCopied == false);
  162049             : 
  162050             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  162051             :      AstAttribute* newAttribute = new AstAttribute();
  162052             :      ROSE_ASSERT(newAttribute != NULL);
  162053             : 
  162054             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  162055             :      const_cast<SgSIMDFmaOp*>(this)->attribute.add("copied",newAttribute);
  162056             : #endif
  162057             : 
  162058             :   // Copy data members from base classes
  162059             :   // Copy constructor parameter data member: startOfConstruct_copy
  162060             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  162061             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  162062           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  162063           0 :      if ( p_startOfConstruct != NULL ) 
  162064             :         { 
  162065           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  162066             :         } 
  162067             :        else 
  162068             :         { 
  162069             :           startOfConstruct_copy = NULL; 
  162070             :         } 
  162071             :   // Copy constructor parameter data member: lhs_operand_i_copy
  162072           0 :      SgExpression* lhs_operand_i_copy; 
  162073             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  162074           0 :           if (get_lhs_operand_i() != NULL) 
  162075             :              { 
  162076           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  162077             :              } 
  162078             :             else 
  162079             :              { 
  162080             :                lhs_operand_i_copy = NULL; 
  162081             :              } 
  162082             :   // Copy constructor parameter data member: rhs_operand_i_copy
  162083           0 :      SgExpression* rhs_operand_i_copy; 
  162084             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  162085           0 :           if (get_rhs_operand_i() != NULL) 
  162086             :              { 
  162087           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  162088             :              } 
  162089             :             else 
  162090             :              { 
  162091             :                rhs_operand_i_copy = NULL; 
  162092             :              } 
  162093             :   // Copy constructor parameter data member: expression_type_copy
  162094             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  162095             :   // case: toBeCopied == COPY_DATA for expression_type
  162096           0 :      SgType* expression_type_copy = p_expression_type; 
  162097             :  
  162098             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162099             : 
  162100             :   // Build an empty copy of this object (will be filled in, but 
  162101             :   // the parent can't be set and must be set by the caller)
  162102           0 :      result = new SgSIMDFmaOp(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  162103           0 :      ROSE_ASSERT(result != NULL);
  162104             : 
  162105             :   // Copy data members of "this" class
  162106             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  162107             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  162108             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  162109           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  162110           0 :      if ( p_endOfConstruct != NULL ) 
  162111             :         { 
  162112           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  162113             :         } 
  162114             :        else 
  162115             :         { 
  162116             :           endOfConstruct_copy = NULL; 
  162117             :         } 
  162118             :   /* check for a valid pointer and delete if present */ 
  162119           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  162120             :   /* add assignment to result here */ 
  162121           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  162122             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  162123             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  162124             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  162125           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  162126           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  162127             :         { 
  162128           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  162129             :         } 
  162130             :        else 
  162131             :         { 
  162132             :           attachedPreprocessingInfoPtr_copy = NULL; 
  162133             :         } 
  162134             :   /* check for a valid pointer and delete if present */ 
  162135           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  162136             :   /* add assignment to result here */ 
  162137           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  162138             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  162139             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  162140             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  162141           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  162142           0 :      if ( p_attributeMechanism != NULL ) 
  162143             :         { 
  162144           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  162145             :         } 
  162146             :        else 
  162147             :         { 
  162148             :           attributeMechanism_copy = NULL; 
  162149             :         } 
  162150             :   /* check for a valid pointer and delete if present */ 
  162151           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  162152             :   /* add assignment to result here */ 
  162153           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  162154             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  162155             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  162156             :   // case: toBeCopied == COPY_DATA for need_paren
  162157           0 :      bool need_paren_copy = p_need_paren; 
  162158           0 :      result->p_need_paren = need_paren_copy; 
  162159             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  162160             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  162161             :   // case: toBeCopied == COPY_DATA for lvalue
  162162           0 :      bool lvalue_copy = p_lvalue; 
  162163           0 :      result->p_lvalue = lvalue_copy; 
  162164             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  162165             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  162166             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  162167           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  162168           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  162169             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  162170             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  162171             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  162172           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  162173           0 :      if ( p_operatorPosition != NULL ) 
  162174             :         { 
  162175           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  162176             :         } 
  162177             :        else 
  162178             :         { 
  162179             :           operatorPosition_copy = NULL; 
  162180             :         } 
  162181             :   /* check for a valid pointer and delete if present */ 
  162182           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  162183             :   /* add assignment to result here */ 
  162184           0 :      result->p_operatorPosition = operatorPosition_copy; 
  162185             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  162186             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  162187             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  162188           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  162189           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  162190             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  162191           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  162192             :              { 
  162193           0 :                lhs_operand_i_copy->set_parent(result); 
  162194             :              } 
  162195             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  162196           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  162197             :              { 
  162198           0 :                rhs_operand_i_copy->set_parent(result); 
  162199             :              } 
  162200             : 
  162201             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162202             : 
  162203             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  162204             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  162205             :   // fixupCopy(result,help);
  162206             : 
  162207             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  162208             :   // the Sg_File_Info objects that are built for the new IR nodes.
  162209           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  162210           0 :      if (locatedNode != NULL)
  162211             :         {
  162212             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  162213           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  162214           0 :           ROSE_ASSERT(start != NULL);
  162215             : #if 0
  162216             :        // Debugging information
  162217             :           if (start->get_parent() == NULL)
  162218             :              {
  162219             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162220             :              }
  162221             : #endif
  162222           0 :           start->set_parent(locatedNode);
  162223           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  162224             : 
  162225           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  162226             : 
  162227             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  162228             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  162229             :        // ROSE_ASSERT(end != NULL);
  162230           0 :           if (end == NULL)
  162231             :              {
  162232           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  162233             :              }
  162234             :             else
  162235             :              {
  162236             : #if 0
  162237             :             // Debugging information
  162238             :                if (end->get_parent() == NULL)
  162239             :                   {
  162240             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162241             :                   }
  162242             : #endif
  162243           0 :                end->set_parent(locatedNode);
  162244           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  162245             :              }
  162246             : 
  162247           0 :           SgExpression* expression = isSgExpression(result);
  162248           0 :           if (isSgExpression(this) != NULL)
  162249             :              {
  162250           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  162251             : 
  162252             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  162253           0 :                if (operatorPosition != NULL)
  162254             :                   {
  162255             : #if 0
  162256             :                  // Debugging information
  162257             :                     if (operatorPosition->get_parent() == NULL)
  162258             :                        {
  162259             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162260             :                        }
  162261             : #endif
  162262           0 :                     operatorPosition->set_parent(expression);
  162263           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  162264             :                   }
  162265             :              }
  162266             :         }
  162267             : 
  162268             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  162269           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  162270           0 :      if (initializedName != NULL)
  162271             :         {
  162272             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  162273           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  162274           0 :           ROSE_ASSERT(start != NULL);
  162275             : #if 0
  162276             :        // Debugging information
  162277             :           if (start->get_parent() == NULL)
  162278             :              {
  162279             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162280             :              }
  162281             : #endif
  162282           0 :           start->set_parent(initializedName);
  162283           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  162284             : 
  162285             : #if 0
  162286             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  162287             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  162288             : 
  162289             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  162290             :        // ROSE_ASSERT(end != NULL);
  162291             :           if (end == NULL)
  162292             :              {
  162293             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  162294             :              }
  162295             :             else
  162296             :              {
  162297             :                if (end->get_parent() == NULL)
  162298             :                   {
  162299             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162300             :                   }
  162301             :                end->set_parent(initializedName);
  162302             :                ROSE_ASSERT(end->get_parent() != NULL);
  162303             :              }
  162304             : #endif
  162305             :         }
  162306             : 
  162307             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  162308           0 :      help.insertCopiedNodePair(this,result);
  162309             : 
  162310             :   // printf ("End of copy SgSIMDFmaOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  162311             : 
  162312             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  162313             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  162314           0 :      help.decrementDepth();
  162315             : 
  162316             :   // Test if this is the root of the copy!
  162317           0 :      if (help.get_depth() == 0)
  162318             :         {
  162319             :        // This is the original calling node.
  162320             : 
  162321             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  162322             :        // printf ("Calling SgSIMDFmaOp::fixupCopy() (from root of AST being copied) \n");
  162323             : #if ALT_FIXUP_COPY
  162324             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  162325           0 :           fixupCopy_scopes (result,help);
  162326           0 :           fixupCopy_symbols (result,help);
  162327           0 :           fixupCopy_references (result,help);
  162328             : #else
  162329             :           fixupCopy(result,help);
  162330             : #endif
  162331             :        // Allow this to be called recursively, so accumulate the state.
  162332             :        // Also, clear the state in the SgCopyHelp object.
  162333             :        // help.clearState();
  162334             :         }
  162335             : 
  162336           0 :      return result;
  162337             :    }
  162338             : 
  162339             : 
  162340             : /* #line 162341 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  162341             : 
  162342             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162343             : 
  162344           0 : SgNode* SgSIMDLoad::copy ( SgCopyHelp& help) const
  162345             :    {
  162346           0 :      SgSIMDLoad* result = NULL;
  162347             : 
  162348             :   // printf ("Copy SgSIMDLoad = %p = %s \n",this,SageInterface::get_name(this).c_str());
  162349             : 
  162350             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  162351             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  162352             :   // The default value of the depth is 0, so after this call the depth is 1!
  162353           0 :      help.incrementDepth();
  162354             : 
  162355             : #if 0
  162356             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  162357             :   // but it is not generally true that things can only be copied once!
  162358             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  162359             :   // AstAttribute* existingAttribute = const_cast<SgSIMDLoad*>(this)->attribute["copied"];
  162360             :      bool previouslyCopied = const_cast<SgSIMDLoad*>(this)->attribute.exists("copied");
  162361             :      if (previouslyCopied == true)
  162362             :         {
  162363             :           this->get_file_info()->display("Called from copy SgSIMDLoad: debug");
  162364             :         }
  162365             :      ROSE_ASSERT(previouslyCopied == false);
  162366             : 
  162367             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  162368             :      AstAttribute* newAttribute = new AstAttribute();
  162369             :      ROSE_ASSERT(newAttribute != NULL);
  162370             : 
  162371             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  162372             :      const_cast<SgSIMDLoad*>(this)->attribute.add("copied",newAttribute);
  162373             : #endif
  162374             : 
  162375             :   // Copy data members from base classes
  162376             :   // Copy constructor parameter data member: startOfConstruct_copy
  162377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  162378             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  162379           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  162380           0 :      if ( p_startOfConstruct != NULL ) 
  162381             :         { 
  162382           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  162383             :         } 
  162384             :        else 
  162385             :         { 
  162386             :           startOfConstruct_copy = NULL; 
  162387             :         } 
  162388             :   // Copy constructor parameter data member: lhs_operand_i_copy
  162389           0 :      SgExpression* lhs_operand_i_copy; 
  162390             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  162391           0 :           if (get_lhs_operand_i() != NULL) 
  162392             :              { 
  162393           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  162394             :              } 
  162395             :             else 
  162396             :              { 
  162397             :                lhs_operand_i_copy = NULL; 
  162398             :              } 
  162399             :   // Copy constructor parameter data member: rhs_operand_i_copy
  162400           0 :      SgExpression* rhs_operand_i_copy; 
  162401             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  162402           0 :           if (get_rhs_operand_i() != NULL) 
  162403             :              { 
  162404           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  162405             :              } 
  162406             :             else 
  162407             :              { 
  162408             :                rhs_operand_i_copy = NULL; 
  162409             :              } 
  162410             :   // Copy constructor parameter data member: expression_type_copy
  162411             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  162412             :   // case: toBeCopied == COPY_DATA for expression_type
  162413           0 :      SgType* expression_type_copy = p_expression_type; 
  162414             :  
  162415             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162416             : 
  162417             :   // Build an empty copy of this object (will be filled in, but 
  162418             :   // the parent can't be set and must be set by the caller)
  162419           0 :      result = new SgSIMDLoad(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  162420           0 :      ROSE_ASSERT(result != NULL);
  162421             : 
  162422             :   // Copy data members of "this" class
  162423             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  162424             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  162425             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  162426           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  162427           0 :      if ( p_endOfConstruct != NULL ) 
  162428             :         { 
  162429           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  162430             :         } 
  162431             :        else 
  162432             :         { 
  162433             :           endOfConstruct_copy = NULL; 
  162434             :         } 
  162435             :   /* check for a valid pointer and delete if present */ 
  162436           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  162437             :   /* add assignment to result here */ 
  162438           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  162439             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  162440             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  162441             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  162442           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  162443           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  162444             :         { 
  162445           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  162446             :         } 
  162447             :        else 
  162448             :         { 
  162449             :           attachedPreprocessingInfoPtr_copy = NULL; 
  162450             :         } 
  162451             :   /* check for a valid pointer and delete if present */ 
  162452           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  162453             :   /* add assignment to result here */ 
  162454           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  162455             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  162456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  162457             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  162458           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  162459           0 :      if ( p_attributeMechanism != NULL ) 
  162460             :         { 
  162461           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  162462             :         } 
  162463             :        else 
  162464             :         { 
  162465             :           attributeMechanism_copy = NULL; 
  162466             :         } 
  162467             :   /* check for a valid pointer and delete if present */ 
  162468           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  162469             :   /* add assignment to result here */ 
  162470           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  162471             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  162472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  162473             :   // case: toBeCopied == COPY_DATA for need_paren
  162474           0 :      bool need_paren_copy = p_need_paren; 
  162475           0 :      result->p_need_paren = need_paren_copy; 
  162476             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  162477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  162478             :   // case: toBeCopied == COPY_DATA for lvalue
  162479           0 :      bool lvalue_copy = p_lvalue; 
  162480           0 :      result->p_lvalue = lvalue_copy; 
  162481             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  162482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  162483             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  162484           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  162485           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  162486             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  162487             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  162488             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  162489           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  162490           0 :      if ( p_operatorPosition != NULL ) 
  162491             :         { 
  162492           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  162493             :         } 
  162494             :        else 
  162495             :         { 
  162496             :           operatorPosition_copy = NULL; 
  162497             :         } 
  162498             :   /* check for a valid pointer and delete if present */ 
  162499           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  162500             :   /* add assignment to result here */ 
  162501           0 :      result->p_operatorPosition = operatorPosition_copy; 
  162502             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  162503             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  162504             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  162505           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  162506           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  162507             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  162508           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  162509             :              { 
  162510           0 :                lhs_operand_i_copy->set_parent(result); 
  162511             :              } 
  162512             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  162513           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  162514             :              { 
  162515           0 :                rhs_operand_i_copy->set_parent(result); 
  162516             :              } 
  162517             : 
  162518             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162519             : 
  162520             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  162521             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  162522             :   // fixupCopy(result,help);
  162523             : 
  162524             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  162525             :   // the Sg_File_Info objects that are built for the new IR nodes.
  162526           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  162527           0 :      if (locatedNode != NULL)
  162528             :         {
  162529             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  162530           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  162531           0 :           ROSE_ASSERT(start != NULL);
  162532             : #if 0
  162533             :        // Debugging information
  162534             :           if (start->get_parent() == NULL)
  162535             :              {
  162536             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162537             :              }
  162538             : #endif
  162539           0 :           start->set_parent(locatedNode);
  162540           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  162541             : 
  162542           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  162543             : 
  162544             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  162545             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  162546             :        // ROSE_ASSERT(end != NULL);
  162547           0 :           if (end == NULL)
  162548             :              {
  162549           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  162550             :              }
  162551             :             else
  162552             :              {
  162553             : #if 0
  162554             :             // Debugging information
  162555             :                if (end->get_parent() == NULL)
  162556             :                   {
  162557             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162558             :                   }
  162559             : #endif
  162560           0 :                end->set_parent(locatedNode);
  162561           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  162562             :              }
  162563             : 
  162564           0 :           SgExpression* expression = isSgExpression(result);
  162565           0 :           if (isSgExpression(this) != NULL)
  162566             :              {
  162567           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  162568             : 
  162569             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  162570           0 :                if (operatorPosition != NULL)
  162571             :                   {
  162572             : #if 0
  162573             :                  // Debugging information
  162574             :                     if (operatorPosition->get_parent() == NULL)
  162575             :                        {
  162576             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162577             :                        }
  162578             : #endif
  162579           0 :                     operatorPosition->set_parent(expression);
  162580           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  162581             :                   }
  162582             :              }
  162583             :         }
  162584             : 
  162585             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  162586           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  162587           0 :      if (initializedName != NULL)
  162588             :         {
  162589             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  162590           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  162591           0 :           ROSE_ASSERT(start != NULL);
  162592             : #if 0
  162593             :        // Debugging information
  162594             :           if (start->get_parent() == NULL)
  162595             :              {
  162596             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162597             :              }
  162598             : #endif
  162599           0 :           start->set_parent(initializedName);
  162600           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  162601             : 
  162602             : #if 0
  162603             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  162604             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  162605             : 
  162606             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  162607             :        // ROSE_ASSERT(end != NULL);
  162608             :           if (end == NULL)
  162609             :              {
  162610             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  162611             :              }
  162612             :             else
  162613             :              {
  162614             :                if (end->get_parent() == NULL)
  162615             :                   {
  162616             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162617             :                   }
  162618             :                end->set_parent(initializedName);
  162619             :                ROSE_ASSERT(end->get_parent() != NULL);
  162620             :              }
  162621             : #endif
  162622             :         }
  162623             : 
  162624             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  162625           0 :      help.insertCopiedNodePair(this,result);
  162626             : 
  162627             :   // printf ("End of copy SgSIMDLoad = %p = %s \n",this,SageInterface::get_name(this).c_str());
  162628             : 
  162629             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  162630             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  162631           0 :      help.decrementDepth();
  162632             : 
  162633             :   // Test if this is the root of the copy!
  162634           0 :      if (help.get_depth() == 0)
  162635             :         {
  162636             :        // This is the original calling node.
  162637             : 
  162638             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  162639             :        // printf ("Calling SgSIMDLoad::fixupCopy() (from root of AST being copied) \n");
  162640             : #if ALT_FIXUP_COPY
  162641             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  162642           0 :           fixupCopy_scopes (result,help);
  162643           0 :           fixupCopy_symbols (result,help);
  162644           0 :           fixupCopy_references (result,help);
  162645             : #else
  162646             :           fixupCopy(result,help);
  162647             : #endif
  162648             :        // Allow this to be called recursively, so accumulate the state.
  162649             :        // Also, clear the state in the SgCopyHelp object.
  162650             :        // help.clearState();
  162651             :         }
  162652             : 
  162653           0 :      return result;
  162654             :    }
  162655             : 
  162656             : 
  162657             : /* #line 162658 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  162658             : 
  162659             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162660             : 
  162661           0 : SgNode* SgSIMDBroadcast::copy ( SgCopyHelp& help) const
  162662             :    {
  162663           0 :      SgSIMDBroadcast* result = NULL;
  162664             : 
  162665             :   // printf ("Copy SgSIMDBroadcast = %p = %s \n",this,SageInterface::get_name(this).c_str());
  162666             : 
  162667             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  162668             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  162669             :   // The default value of the depth is 0, so after this call the depth is 1!
  162670           0 :      help.incrementDepth();
  162671             : 
  162672             : #if 0
  162673             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  162674             :   // but it is not generally true that things can only be copied once!
  162675             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  162676             :   // AstAttribute* existingAttribute = const_cast<SgSIMDBroadcast*>(this)->attribute["copied"];
  162677             :      bool previouslyCopied = const_cast<SgSIMDBroadcast*>(this)->attribute.exists("copied");
  162678             :      if (previouslyCopied == true)
  162679             :         {
  162680             :           this->get_file_info()->display("Called from copy SgSIMDBroadcast: debug");
  162681             :         }
  162682             :      ROSE_ASSERT(previouslyCopied == false);
  162683             : 
  162684             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  162685             :      AstAttribute* newAttribute = new AstAttribute();
  162686             :      ROSE_ASSERT(newAttribute != NULL);
  162687             : 
  162688             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  162689             :      const_cast<SgSIMDBroadcast*>(this)->attribute.add("copied",newAttribute);
  162690             : #endif
  162691             : 
  162692             :   // Copy data members from base classes
  162693             :   // Copy constructor parameter data member: startOfConstruct_copy
  162694             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  162695             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  162696           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  162697           0 :      if ( p_startOfConstruct != NULL ) 
  162698             :         { 
  162699           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  162700             :         } 
  162701             :        else 
  162702             :         { 
  162703             :           startOfConstruct_copy = NULL; 
  162704             :         } 
  162705             :   // Copy constructor parameter data member: lhs_operand_i_copy
  162706           0 :      SgExpression* lhs_operand_i_copy; 
  162707             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  162708           0 :           if (get_lhs_operand_i() != NULL) 
  162709             :              { 
  162710           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  162711             :              } 
  162712             :             else 
  162713             :              { 
  162714             :                lhs_operand_i_copy = NULL; 
  162715             :              } 
  162716             :   // Copy constructor parameter data member: rhs_operand_i_copy
  162717           0 :      SgExpression* rhs_operand_i_copy; 
  162718             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  162719           0 :           if (get_rhs_operand_i() != NULL) 
  162720             :              { 
  162721           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  162722             :              } 
  162723             :             else 
  162724             :              { 
  162725             :                rhs_operand_i_copy = NULL; 
  162726             :              } 
  162727             :   // Copy constructor parameter data member: expression_type_copy
  162728             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  162729             :   // case: toBeCopied == COPY_DATA for expression_type
  162730           0 :      SgType* expression_type_copy = p_expression_type; 
  162731             :  
  162732             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162733             : 
  162734             :   // Build an empty copy of this object (will be filled in, but 
  162735             :   // the parent can't be set and must be set by the caller)
  162736           0 :      result = new SgSIMDBroadcast(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  162737           0 :      ROSE_ASSERT(result != NULL);
  162738             : 
  162739             :   // Copy data members of "this" class
  162740             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  162741             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  162742             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  162743           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  162744           0 :      if ( p_endOfConstruct != NULL ) 
  162745             :         { 
  162746           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  162747             :         } 
  162748             :        else 
  162749             :         { 
  162750             :           endOfConstruct_copy = NULL; 
  162751             :         } 
  162752             :   /* check for a valid pointer and delete if present */ 
  162753           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  162754             :   /* add assignment to result here */ 
  162755           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  162756             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  162757             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  162758             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  162759           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  162760           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  162761             :         { 
  162762           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  162763             :         } 
  162764             :        else 
  162765             :         { 
  162766             :           attachedPreprocessingInfoPtr_copy = NULL; 
  162767             :         } 
  162768             :   /* check for a valid pointer and delete if present */ 
  162769           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  162770             :   /* add assignment to result here */ 
  162771           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  162772             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  162773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  162774             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  162775           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  162776           0 :      if ( p_attributeMechanism != NULL ) 
  162777             :         { 
  162778           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  162779             :         } 
  162780             :        else 
  162781             :         { 
  162782             :           attributeMechanism_copy = NULL; 
  162783             :         } 
  162784             :   /* check for a valid pointer and delete if present */ 
  162785           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  162786             :   /* add assignment to result here */ 
  162787           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  162788             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  162789             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  162790             :   // case: toBeCopied == COPY_DATA for need_paren
  162791           0 :      bool need_paren_copy = p_need_paren; 
  162792           0 :      result->p_need_paren = need_paren_copy; 
  162793             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  162794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  162795             :   // case: toBeCopied == COPY_DATA for lvalue
  162796           0 :      bool lvalue_copy = p_lvalue; 
  162797           0 :      result->p_lvalue = lvalue_copy; 
  162798             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  162799             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  162800             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  162801           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  162802           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  162803             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  162804             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  162805             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  162806           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  162807           0 :      if ( p_operatorPosition != NULL ) 
  162808             :         { 
  162809           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  162810             :         } 
  162811             :        else 
  162812             :         { 
  162813             :           operatorPosition_copy = NULL; 
  162814             :         } 
  162815             :   /* check for a valid pointer and delete if present */ 
  162816           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  162817             :   /* add assignment to result here */ 
  162818           0 :      result->p_operatorPosition = operatorPosition_copy; 
  162819             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  162820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  162821             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  162822           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  162823           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  162824             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  162825           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  162826             :              { 
  162827           0 :                lhs_operand_i_copy->set_parent(result); 
  162828             :              } 
  162829             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  162830           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  162831             :              { 
  162832           0 :                rhs_operand_i_copy->set_parent(result); 
  162833             :              } 
  162834             : 
  162835             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162836             : 
  162837             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  162838             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  162839             :   // fixupCopy(result,help);
  162840             : 
  162841             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  162842             :   // the Sg_File_Info objects that are built for the new IR nodes.
  162843           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  162844           0 :      if (locatedNode != NULL)
  162845             :         {
  162846             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  162847           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  162848           0 :           ROSE_ASSERT(start != NULL);
  162849             : #if 0
  162850             :        // Debugging information
  162851             :           if (start->get_parent() == NULL)
  162852             :              {
  162853             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162854             :              }
  162855             : #endif
  162856           0 :           start->set_parent(locatedNode);
  162857           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  162858             : 
  162859           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  162860             : 
  162861             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  162862             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  162863             :        // ROSE_ASSERT(end != NULL);
  162864           0 :           if (end == NULL)
  162865             :              {
  162866           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  162867             :              }
  162868             :             else
  162869             :              {
  162870             : #if 0
  162871             :             // Debugging information
  162872             :                if (end->get_parent() == NULL)
  162873             :                   {
  162874             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162875             :                   }
  162876             : #endif
  162877           0 :                end->set_parent(locatedNode);
  162878           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  162879             :              }
  162880             : 
  162881           0 :           SgExpression* expression = isSgExpression(result);
  162882           0 :           if (isSgExpression(this) != NULL)
  162883             :              {
  162884           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  162885             : 
  162886             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  162887           0 :                if (operatorPosition != NULL)
  162888             :                   {
  162889             : #if 0
  162890             :                  // Debugging information
  162891             :                     if (operatorPosition->get_parent() == NULL)
  162892             :                        {
  162893             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162894             :                        }
  162895             : #endif
  162896           0 :                     operatorPosition->set_parent(expression);
  162897           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  162898             :                   }
  162899             :              }
  162900             :         }
  162901             : 
  162902             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  162903           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  162904           0 :      if (initializedName != NULL)
  162905             :         {
  162906             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  162907           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  162908           0 :           ROSE_ASSERT(start != NULL);
  162909             : #if 0
  162910             :        // Debugging information
  162911             :           if (start->get_parent() == NULL)
  162912             :              {
  162913             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162914             :              }
  162915             : #endif
  162916           0 :           start->set_parent(initializedName);
  162917           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  162918             : 
  162919             : #if 0
  162920             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  162921             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  162922             : 
  162923             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  162924             :        // ROSE_ASSERT(end != NULL);
  162925             :           if (end == NULL)
  162926             :              {
  162927             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  162928             :              }
  162929             :             else
  162930             :              {
  162931             :                if (end->get_parent() == NULL)
  162932             :                   {
  162933             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  162934             :                   }
  162935             :                end->set_parent(initializedName);
  162936             :                ROSE_ASSERT(end->get_parent() != NULL);
  162937             :              }
  162938             : #endif
  162939             :         }
  162940             : 
  162941             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  162942           0 :      help.insertCopiedNodePair(this,result);
  162943             : 
  162944             :   // printf ("End of copy SgSIMDBroadcast = %p = %s \n",this,SageInterface::get_name(this).c_str());
  162945             : 
  162946             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  162947             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  162948           0 :      help.decrementDepth();
  162949             : 
  162950             :   // Test if this is the root of the copy!
  162951           0 :      if (help.get_depth() == 0)
  162952             :         {
  162953             :        // This is the original calling node.
  162954             : 
  162955             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  162956             :        // printf ("Calling SgSIMDBroadcast::fixupCopy() (from root of AST being copied) \n");
  162957             : #if ALT_FIXUP_COPY
  162958             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  162959           0 :           fixupCopy_scopes (result,help);
  162960           0 :           fixupCopy_symbols (result,help);
  162961           0 :           fixupCopy_references (result,help);
  162962             : #else
  162963             :           fixupCopy(result,help);
  162964             : #endif
  162965             :        // Allow this to be called recursively, so accumulate the state.
  162966             :        // Also, clear the state in the SgCopyHelp object.
  162967             :        // help.clearState();
  162968             :         }
  162969             : 
  162970           0 :      return result;
  162971             :    }
  162972             : 
  162973             : 
  162974             : /* #line 162975 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  162975             : 
  162976             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  162977             : 
  162978           0 : SgNode* SgSIMDStore::copy ( SgCopyHelp& help) const
  162979             :    {
  162980           0 :      SgSIMDStore* result = NULL;
  162981             : 
  162982             :   // printf ("Copy SgSIMDStore = %p = %s \n",this,SageInterface::get_name(this).c_str());
  162983             : 
  162984             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  162985             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  162986             :   // The default value of the depth is 0, so after this call the depth is 1!
  162987           0 :      help.incrementDepth();
  162988             : 
  162989             : #if 0
  162990             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  162991             :   // but it is not generally true that things can only be copied once!
  162992             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  162993             :   // AstAttribute* existingAttribute = const_cast<SgSIMDStore*>(this)->attribute["copied"];
  162994             :      bool previouslyCopied = const_cast<SgSIMDStore*>(this)->attribute.exists("copied");
  162995             :      if (previouslyCopied == true)
  162996             :         {
  162997             :           this->get_file_info()->display("Called from copy SgSIMDStore: debug");
  162998             :         }
  162999             :      ROSE_ASSERT(previouslyCopied == false);
  163000             : 
  163001             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  163002             :      AstAttribute* newAttribute = new AstAttribute();
  163003             :      ROSE_ASSERT(newAttribute != NULL);
  163004             : 
  163005             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  163006             :      const_cast<SgSIMDStore*>(this)->attribute.add("copied",newAttribute);
  163007             : #endif
  163008             : 
  163009             :   // Copy data members from base classes
  163010             :   // Copy constructor parameter data member: startOfConstruct_copy
  163011             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  163012             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  163013           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  163014           0 :      if ( p_startOfConstruct != NULL ) 
  163015             :         { 
  163016           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  163017             :         } 
  163018             :        else 
  163019             :         { 
  163020             :           startOfConstruct_copy = NULL; 
  163021             :         } 
  163022             :   // Copy constructor parameter data member: lhs_operand_i_copy
  163023           0 :      SgExpression* lhs_operand_i_copy; 
  163024             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  163025           0 :           if (get_lhs_operand_i() != NULL) 
  163026             :              { 
  163027           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  163028             :              } 
  163029             :             else 
  163030             :              { 
  163031             :                lhs_operand_i_copy = NULL; 
  163032             :              } 
  163033             :   // Copy constructor parameter data member: rhs_operand_i_copy
  163034           0 :      SgExpression* rhs_operand_i_copy; 
  163035             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  163036           0 :           if (get_rhs_operand_i() != NULL) 
  163037             :              { 
  163038           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  163039             :              } 
  163040             :             else 
  163041             :              { 
  163042             :                rhs_operand_i_copy = NULL; 
  163043             :              } 
  163044             :   // Copy constructor parameter data member: expression_type_copy
  163045             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  163046             :   // case: toBeCopied == COPY_DATA for expression_type
  163047           0 :      SgType* expression_type_copy = p_expression_type; 
  163048             :  
  163049             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  163050             : 
  163051             :   // Build an empty copy of this object (will be filled in, but 
  163052             :   // the parent can't be set and must be set by the caller)
  163053           0 :      result = new SgSIMDStore(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  163054           0 :      ROSE_ASSERT(result != NULL);
  163055             : 
  163056             :   // Copy data members of "this" class
  163057             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  163058             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  163059             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  163060           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  163061           0 :      if ( p_endOfConstruct != NULL ) 
  163062             :         { 
  163063           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  163064             :         } 
  163065             :        else 
  163066             :         { 
  163067             :           endOfConstruct_copy = NULL; 
  163068             :         } 
  163069             :   /* check for a valid pointer and delete if present */ 
  163070           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  163071             :   /* add assignment to result here */ 
  163072           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  163073             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  163074             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  163075             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  163076           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  163077           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  163078             :         { 
  163079           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  163080             :         } 
  163081             :        else 
  163082             :         { 
  163083             :           attachedPreprocessingInfoPtr_copy = NULL; 
  163084             :         } 
  163085             :   /* check for a valid pointer and delete if present */ 
  163086           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  163087             :   /* add assignment to result here */ 
  163088           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  163089             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  163090             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  163091             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  163092           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  163093           0 :      if ( p_attributeMechanism != NULL ) 
  163094             :         { 
  163095           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  163096             :         } 
  163097             :        else 
  163098             :         { 
  163099             :           attributeMechanism_copy = NULL; 
  163100             :         } 
  163101             :   /* check for a valid pointer and delete if present */ 
  163102           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  163103             :   /* add assignment to result here */ 
  163104           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  163105             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  163106             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  163107             :   // case: toBeCopied == COPY_DATA for need_paren
  163108           0 :      bool need_paren_copy = p_need_paren; 
  163109           0 :      result->p_need_paren = need_paren_copy; 
  163110             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  163111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  163112             :   // case: toBeCopied == COPY_DATA for lvalue
  163113           0 :      bool lvalue_copy = p_lvalue; 
  163114           0 :      result->p_lvalue = lvalue_copy; 
  163115             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  163116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  163117             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  163118           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  163119           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  163120             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  163121             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  163122             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  163123           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  163124           0 :      if ( p_operatorPosition != NULL ) 
  163125             :         { 
  163126           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  163127             :         } 
  163128             :        else 
  163129             :         { 
  163130             :           operatorPosition_copy = NULL; 
  163131             :         } 
  163132             :   /* check for a valid pointer and delete if present */ 
  163133           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  163134             :   /* add assignment to result here */ 
  163135           0 :      result->p_operatorPosition = operatorPosition_copy; 
  163136             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  163137             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  163138             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  163139           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  163140           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  163141             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  163142           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  163143             :              { 
  163144           0 :                lhs_operand_i_copy->set_parent(result); 
  163145             :              } 
  163146             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  163147           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  163148             :              { 
  163149           0 :                rhs_operand_i_copy->set_parent(result); 
  163150             :              } 
  163151             : 
  163152             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  163153             : 
  163154             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  163155             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  163156             :   // fixupCopy(result,help);
  163157             : 
  163158             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  163159             :   // the Sg_File_Info objects that are built for the new IR nodes.
  163160           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  163161           0 :      if (locatedNode != NULL)
  163162             :         {
  163163             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  163164           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  163165           0 :           ROSE_ASSERT(start != NULL);
  163166             : #if 0
  163167             :        // Debugging information
  163168             :           if (start->get_parent() == NULL)
  163169             :              {
  163170             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163171             :              }
  163172             : #endif
  163173           0 :           start->set_parent(locatedNode);
  163174           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  163175             : 
  163176           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  163177             : 
  163178             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  163179             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  163180             :        // ROSE_ASSERT(end != NULL);
  163181           0 :           if (end == NULL)
  163182             :              {
  163183           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  163184             :              }
  163185             :             else
  163186             :              {
  163187             : #if 0
  163188             :             // Debugging information
  163189             :                if (end->get_parent() == NULL)
  163190             :                   {
  163191             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163192             :                   }
  163193             : #endif
  163194           0 :                end->set_parent(locatedNode);
  163195           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  163196             :              }
  163197             : 
  163198           0 :           SgExpression* expression = isSgExpression(result);
  163199           0 :           if (isSgExpression(this) != NULL)
  163200             :              {
  163201           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  163202             : 
  163203             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  163204           0 :                if (operatorPosition != NULL)
  163205             :                   {
  163206             : #if 0
  163207             :                  // Debugging information
  163208             :                     if (operatorPosition->get_parent() == NULL)
  163209             :                        {
  163210             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163211             :                        }
  163212             : #endif
  163213           0 :                     operatorPosition->set_parent(expression);
  163214           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  163215             :                   }
  163216             :              }
  163217             :         }
  163218             : 
  163219             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  163220           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  163221           0 :      if (initializedName != NULL)
  163222             :         {
  163223             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  163224           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  163225           0 :           ROSE_ASSERT(start != NULL);
  163226             : #if 0
  163227             :        // Debugging information
  163228             :           if (start->get_parent() == NULL)
  163229             :              {
  163230             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163231             :              }
  163232             : #endif
  163233           0 :           start->set_parent(initializedName);
  163234           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  163235             : 
  163236             : #if 0
  163237             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  163238             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  163239             : 
  163240             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  163241             :        // ROSE_ASSERT(end != NULL);
  163242             :           if (end == NULL)
  163243             :              {
  163244             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  163245             :              }
  163246             :             else
  163247             :              {
  163248             :                if (end->get_parent() == NULL)
  163249             :                   {
  163250             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163251             :                   }
  163252             :                end->set_parent(initializedName);
  163253             :                ROSE_ASSERT(end->get_parent() != NULL);
  163254             :              }
  163255             : #endif
  163256             :         }
  163257             : 
  163258             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  163259           0 :      help.insertCopiedNodePair(this,result);
  163260             : 
  163261             :   // printf ("End of copy SgSIMDStore = %p = %s \n",this,SageInterface::get_name(this).c_str());
  163262             : 
  163263             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  163264             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  163265           0 :      help.decrementDepth();
  163266             : 
  163267             :   // Test if this is the root of the copy!
  163268           0 :      if (help.get_depth() == 0)
  163269             :         {
  163270             :        // This is the original calling node.
  163271             : 
  163272             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  163273             :        // printf ("Calling SgSIMDStore::fixupCopy() (from root of AST being copied) \n");
  163274             : #if ALT_FIXUP_COPY
  163275             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  163276           0 :           fixupCopy_scopes (result,help);
  163277           0 :           fixupCopy_symbols (result,help);
  163278           0 :           fixupCopy_references (result,help);
  163279             : #else
  163280             :           fixupCopy(result,help);
  163281             : #endif
  163282             :        // Allow this to be called recursively, so accumulate the state.
  163283             :        // Also, clear the state in the SgCopyHelp object.
  163284             :        // help.clearState();
  163285             :         }
  163286             : 
  163287           0 :      return result;
  163288             :    }
  163289             : 
  163290             : 
  163291             : /* #line 163292 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  163292             : 
  163293             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  163294             : 
  163295           0 : SgNode* SgSIMDPartialStore::copy ( SgCopyHelp& help) const
  163296             :    {
  163297           0 :      SgSIMDPartialStore* result = NULL;
  163298             : 
  163299             :   // printf ("Copy SgSIMDPartialStore = %p = %s \n",this,SageInterface::get_name(this).c_str());
  163300             : 
  163301             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  163302             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  163303             :   // The default value of the depth is 0, so after this call the depth is 1!
  163304           0 :      help.incrementDepth();
  163305             : 
  163306             : #if 0
  163307             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  163308             :   // but it is not generally true that things can only be copied once!
  163309             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  163310             :   // AstAttribute* existingAttribute = const_cast<SgSIMDPartialStore*>(this)->attribute["copied"];
  163311             :      bool previouslyCopied = const_cast<SgSIMDPartialStore*>(this)->attribute.exists("copied");
  163312             :      if (previouslyCopied == true)
  163313             :         {
  163314             :           this->get_file_info()->display("Called from copy SgSIMDPartialStore: debug");
  163315             :         }
  163316             :      ROSE_ASSERT(previouslyCopied == false);
  163317             : 
  163318             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  163319             :      AstAttribute* newAttribute = new AstAttribute();
  163320             :      ROSE_ASSERT(newAttribute != NULL);
  163321             : 
  163322             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  163323             :      const_cast<SgSIMDPartialStore*>(this)->attribute.add("copied",newAttribute);
  163324             : #endif
  163325             : 
  163326             :   // Copy data members from base classes
  163327             :   // Copy constructor parameter data member: startOfConstruct_copy
  163328             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  163329             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  163330           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  163331           0 :      if ( p_startOfConstruct != NULL ) 
  163332             :         { 
  163333           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  163334             :         } 
  163335             :        else 
  163336             :         { 
  163337             :           startOfConstruct_copy = NULL; 
  163338             :         } 
  163339             :   // Copy constructor parameter data member: lhs_operand_i_copy
  163340           0 :      SgExpression* lhs_operand_i_copy; 
  163341             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  163342           0 :           if (get_lhs_operand_i() != NULL) 
  163343             :              { 
  163344           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  163345             :              } 
  163346             :             else 
  163347             :              { 
  163348             :                lhs_operand_i_copy = NULL; 
  163349             :              } 
  163350             :   // Copy constructor parameter data member: rhs_operand_i_copy
  163351           0 :      SgExpression* rhs_operand_i_copy; 
  163352             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  163353           0 :           if (get_rhs_operand_i() != NULL) 
  163354             :              { 
  163355           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  163356             :              } 
  163357             :             else 
  163358             :              { 
  163359             :                rhs_operand_i_copy = NULL; 
  163360             :              } 
  163361             :   // Copy constructor parameter data member: expression_type_copy
  163362             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  163363             :   // case: toBeCopied == COPY_DATA for expression_type
  163364           0 :      SgType* expression_type_copy = p_expression_type; 
  163365             :  
  163366             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  163367             : 
  163368             :   // Build an empty copy of this object (will be filled in, but 
  163369             :   // the parent can't be set and must be set by the caller)
  163370           0 :      result = new SgSIMDPartialStore(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  163371           0 :      ROSE_ASSERT(result != NULL);
  163372             : 
  163373             :   // Copy data members of "this" class
  163374             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  163375             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  163376             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  163377           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  163378           0 :      if ( p_endOfConstruct != NULL ) 
  163379             :         { 
  163380           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  163381             :         } 
  163382             :        else 
  163383             :         { 
  163384             :           endOfConstruct_copy = NULL; 
  163385             :         } 
  163386             :   /* check for a valid pointer and delete if present */ 
  163387           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  163388             :   /* add assignment to result here */ 
  163389           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  163390             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  163391             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  163392             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  163393           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  163394           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  163395             :         { 
  163396           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  163397             :         } 
  163398             :        else 
  163399             :         { 
  163400             :           attachedPreprocessingInfoPtr_copy = NULL; 
  163401             :         } 
  163402             :   /* check for a valid pointer and delete if present */ 
  163403           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  163404             :   /* add assignment to result here */ 
  163405           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  163406             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  163407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  163408             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  163409           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  163410           0 :      if ( p_attributeMechanism != NULL ) 
  163411             :         { 
  163412           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  163413             :         } 
  163414             :        else 
  163415             :         { 
  163416             :           attributeMechanism_copy = NULL; 
  163417             :         } 
  163418             :   /* check for a valid pointer and delete if present */ 
  163419           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  163420             :   /* add assignment to result here */ 
  163421           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  163422             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  163423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  163424             :   // case: toBeCopied == COPY_DATA for need_paren
  163425           0 :      bool need_paren_copy = p_need_paren; 
  163426           0 :      result->p_need_paren = need_paren_copy; 
  163427             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  163428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  163429             :   // case: toBeCopied == COPY_DATA for lvalue
  163430           0 :      bool lvalue_copy = p_lvalue; 
  163431           0 :      result->p_lvalue = lvalue_copy; 
  163432             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  163433             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  163434             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  163435           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  163436           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  163437             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  163438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  163439             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  163440           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  163441           0 :      if ( p_operatorPosition != NULL ) 
  163442             :         { 
  163443           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  163444             :         } 
  163445             :        else 
  163446             :         { 
  163447             :           operatorPosition_copy = NULL; 
  163448             :         } 
  163449             :   /* check for a valid pointer and delete if present */ 
  163450           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  163451             :   /* add assignment to result here */ 
  163452           0 :      result->p_operatorPosition = operatorPosition_copy; 
  163453             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  163454             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  163455             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  163456           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  163457           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  163458             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  163459           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  163460             :              { 
  163461           0 :                lhs_operand_i_copy->set_parent(result); 
  163462             :              } 
  163463             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  163464           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  163465             :              { 
  163466           0 :                rhs_operand_i_copy->set_parent(result); 
  163467             :              } 
  163468             : 
  163469             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  163470             : 
  163471             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  163472             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  163473             :   // fixupCopy(result,help);
  163474             : 
  163475             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  163476             :   // the Sg_File_Info objects that are built for the new IR nodes.
  163477           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  163478           0 :      if (locatedNode != NULL)
  163479             :         {
  163480             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  163481           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  163482           0 :           ROSE_ASSERT(start != NULL);
  163483             : #if 0
  163484             :        // Debugging information
  163485             :           if (start->get_parent() == NULL)
  163486             :              {
  163487             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163488             :              }
  163489             : #endif
  163490           0 :           start->set_parent(locatedNode);
  163491           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  163492             : 
  163493           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  163494             : 
  163495             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  163496             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  163497             :        // ROSE_ASSERT(end != NULL);
  163498           0 :           if (end == NULL)
  163499             :              {
  163500           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  163501             :              }
  163502             :             else
  163503             :              {
  163504             : #if 0
  163505             :             // Debugging information
  163506             :                if (end->get_parent() == NULL)
  163507             :                   {
  163508             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163509             :                   }
  163510             : #endif
  163511           0 :                end->set_parent(locatedNode);
  163512           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  163513             :              }
  163514             : 
  163515           0 :           SgExpression* expression = isSgExpression(result);
  163516           0 :           if (isSgExpression(this) != NULL)
  163517             :              {
  163518           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  163519             : 
  163520             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  163521           0 :                if (operatorPosition != NULL)
  163522             :                   {
  163523             : #if 0
  163524             :                  // Debugging information
  163525             :                     if (operatorPosition->get_parent() == NULL)
  163526             :                        {
  163527             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163528             :                        }
  163529             : #endif
  163530           0 :                     operatorPosition->set_parent(expression);
  163531           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  163532             :                   }
  163533             :              }
  163534             :         }
  163535             : 
  163536             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  163537           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  163538           0 :      if (initializedName != NULL)
  163539             :         {
  163540             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  163541           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  163542           0 :           ROSE_ASSERT(start != NULL);
  163543             : #if 0
  163544             :        // Debugging information
  163545             :           if (start->get_parent() == NULL)
  163546             :              {
  163547             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163548             :              }
  163549             : #endif
  163550           0 :           start->set_parent(initializedName);
  163551           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  163552             : 
  163553             : #if 0
  163554             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  163555             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  163556             : 
  163557             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  163558             :        // ROSE_ASSERT(end != NULL);
  163559             :           if (end == NULL)
  163560             :              {
  163561             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  163562             :              }
  163563             :             else
  163564             :              {
  163565             :                if (end->get_parent() == NULL)
  163566             :                   {
  163567             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163568             :                   }
  163569             :                end->set_parent(initializedName);
  163570             :                ROSE_ASSERT(end->get_parent() != NULL);
  163571             :              }
  163572             : #endif
  163573             :         }
  163574             : 
  163575             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  163576           0 :      help.insertCopiedNodePair(this,result);
  163577             : 
  163578             :   // printf ("End of copy SgSIMDPartialStore = %p = %s \n",this,SageInterface::get_name(this).c_str());
  163579             : 
  163580             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  163581             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  163582           0 :      help.decrementDepth();
  163583             : 
  163584             :   // Test if this is the root of the copy!
  163585           0 :      if (help.get_depth() == 0)
  163586             :         {
  163587             :        // This is the original calling node.
  163588             : 
  163589             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  163590             :        // printf ("Calling SgSIMDPartialStore::fixupCopy() (from root of AST being copied) \n");
  163591             : #if ALT_FIXUP_COPY
  163592             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  163593           0 :           fixupCopy_scopes (result,help);
  163594           0 :           fixupCopy_symbols (result,help);
  163595           0 :           fixupCopy_references (result,help);
  163596             : #else
  163597             :           fixupCopy(result,help);
  163598             : #endif
  163599             :        // Allow this to be called recursively, so accumulate the state.
  163600             :        // Also, clear the state in the SgCopyHelp object.
  163601             :        // help.clearState();
  163602             :         }
  163603             : 
  163604           0 :      return result;
  163605             :    }
  163606             : 
  163607             : 
  163608             : /* #line 163609 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  163609             : 
  163610             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  163611             : 
  163612           0 : SgNode* SgSIMDScalarStore::copy ( SgCopyHelp& help) const
  163613             :    {
  163614           0 :      SgSIMDScalarStore* result = NULL;
  163615             : 
  163616             :   // printf ("Copy SgSIMDScalarStore = %p = %s \n",this,SageInterface::get_name(this).c_str());
  163617             : 
  163618             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  163619             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  163620             :   // The default value of the depth is 0, so after this call the depth is 1!
  163621           0 :      help.incrementDepth();
  163622             : 
  163623             : #if 0
  163624             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  163625             :   // but it is not generally true that things can only be copied once!
  163626             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  163627             :   // AstAttribute* existingAttribute = const_cast<SgSIMDScalarStore*>(this)->attribute["copied"];
  163628             :      bool previouslyCopied = const_cast<SgSIMDScalarStore*>(this)->attribute.exists("copied");
  163629             :      if (previouslyCopied == true)
  163630             :         {
  163631             :           this->get_file_info()->display("Called from copy SgSIMDScalarStore: debug");
  163632             :         }
  163633             :      ROSE_ASSERT(previouslyCopied == false);
  163634             : 
  163635             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  163636             :      AstAttribute* newAttribute = new AstAttribute();
  163637             :      ROSE_ASSERT(newAttribute != NULL);
  163638             : 
  163639             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  163640             :      const_cast<SgSIMDScalarStore*>(this)->attribute.add("copied",newAttribute);
  163641             : #endif
  163642             : 
  163643             :   // Copy data members from base classes
  163644             :   // Copy constructor parameter data member: startOfConstruct_copy
  163645             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  163646             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  163647           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  163648           0 :      if ( p_startOfConstruct != NULL ) 
  163649             :         { 
  163650           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  163651             :         } 
  163652             :        else 
  163653             :         { 
  163654             :           startOfConstruct_copy = NULL; 
  163655             :         } 
  163656             :   // Copy constructor parameter data member: lhs_operand_i_copy
  163657           0 :      SgExpression* lhs_operand_i_copy; 
  163658             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  163659           0 :           if (get_lhs_operand_i() != NULL) 
  163660             :              { 
  163661           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  163662             :              } 
  163663             :             else 
  163664             :              { 
  163665             :                lhs_operand_i_copy = NULL; 
  163666             :              } 
  163667             :   // Copy constructor parameter data member: rhs_operand_i_copy
  163668           0 :      SgExpression* rhs_operand_i_copy; 
  163669             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  163670           0 :           if (get_rhs_operand_i() != NULL) 
  163671             :              { 
  163672           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  163673             :              } 
  163674             :             else 
  163675             :              { 
  163676             :                rhs_operand_i_copy = NULL; 
  163677             :              } 
  163678             :   // Copy constructor parameter data member: expression_type_copy
  163679             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  163680             :   // case: toBeCopied == COPY_DATA for expression_type
  163681           0 :      SgType* expression_type_copy = p_expression_type; 
  163682             :  
  163683             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  163684             : 
  163685             :   // Build an empty copy of this object (will be filled in, but 
  163686             :   // the parent can't be set and must be set by the caller)
  163687           0 :      result = new SgSIMDScalarStore(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  163688           0 :      ROSE_ASSERT(result != NULL);
  163689             : 
  163690             :   // Copy data members of "this" class
  163691             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  163692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  163693             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  163694           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  163695           0 :      if ( p_endOfConstruct != NULL ) 
  163696             :         { 
  163697           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  163698             :         } 
  163699             :        else 
  163700             :         { 
  163701             :           endOfConstruct_copy = NULL; 
  163702             :         } 
  163703             :   /* check for a valid pointer and delete if present */ 
  163704           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  163705             :   /* add assignment to result here */ 
  163706           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  163707             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  163708             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  163709             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  163710           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  163711           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  163712             :         { 
  163713           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  163714             :         } 
  163715             :        else 
  163716             :         { 
  163717             :           attachedPreprocessingInfoPtr_copy = NULL; 
  163718             :         } 
  163719             :   /* check for a valid pointer and delete if present */ 
  163720           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  163721             :   /* add assignment to result here */ 
  163722           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  163723             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  163724             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  163725             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  163726           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  163727           0 :      if ( p_attributeMechanism != NULL ) 
  163728             :         { 
  163729           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  163730             :         } 
  163731             :        else 
  163732             :         { 
  163733             :           attributeMechanism_copy = NULL; 
  163734             :         } 
  163735             :   /* check for a valid pointer and delete if present */ 
  163736           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  163737             :   /* add assignment to result here */ 
  163738           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  163739             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  163740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  163741             :   // case: toBeCopied == COPY_DATA for need_paren
  163742           0 :      bool need_paren_copy = p_need_paren; 
  163743           0 :      result->p_need_paren = need_paren_copy; 
  163744             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  163745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  163746             :   // case: toBeCopied == COPY_DATA for lvalue
  163747           0 :      bool lvalue_copy = p_lvalue; 
  163748           0 :      result->p_lvalue = lvalue_copy; 
  163749             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  163750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  163751             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  163752           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  163753           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  163754             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  163755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  163756             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  163757           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  163758           0 :      if ( p_operatorPosition != NULL ) 
  163759             :         { 
  163760           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  163761             :         } 
  163762             :        else 
  163763             :         { 
  163764             :           operatorPosition_copy = NULL; 
  163765             :         } 
  163766             :   /* check for a valid pointer and delete if present */ 
  163767           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  163768             :   /* add assignment to result here */ 
  163769           0 :      result->p_operatorPosition = operatorPosition_copy; 
  163770             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  163771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  163772             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  163773           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  163774           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  163775             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  163776           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  163777             :              { 
  163778           0 :                lhs_operand_i_copy->set_parent(result); 
  163779             :              } 
  163780             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  163781           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  163782             :              { 
  163783           0 :                rhs_operand_i_copy->set_parent(result); 
  163784             :              } 
  163785             : 
  163786             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  163787             : 
  163788             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  163789             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  163790             :   // fixupCopy(result,help);
  163791             : 
  163792             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  163793             :   // the Sg_File_Info objects that are built for the new IR nodes.
  163794           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  163795           0 :      if (locatedNode != NULL)
  163796             :         {
  163797             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  163798           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  163799           0 :           ROSE_ASSERT(start != NULL);
  163800             : #if 0
  163801             :        // Debugging information
  163802             :           if (start->get_parent() == NULL)
  163803             :              {
  163804             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163805             :              }
  163806             : #endif
  163807           0 :           start->set_parent(locatedNode);
  163808           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  163809             : 
  163810           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  163811             : 
  163812             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  163813             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  163814             :        // ROSE_ASSERT(end != NULL);
  163815           0 :           if (end == NULL)
  163816             :              {
  163817           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  163818             :              }
  163819             :             else
  163820             :              {
  163821             : #if 0
  163822             :             // Debugging information
  163823             :                if (end->get_parent() == NULL)
  163824             :                   {
  163825             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163826             :                   }
  163827             : #endif
  163828           0 :                end->set_parent(locatedNode);
  163829           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  163830             :              }
  163831             : 
  163832           0 :           SgExpression* expression = isSgExpression(result);
  163833           0 :           if (isSgExpression(this) != NULL)
  163834             :              {
  163835           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  163836             : 
  163837             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  163838           0 :                if (operatorPosition != NULL)
  163839             :                   {
  163840             : #if 0
  163841             :                  // Debugging information
  163842             :                     if (operatorPosition->get_parent() == NULL)
  163843             :                        {
  163844             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163845             :                        }
  163846             : #endif
  163847           0 :                     operatorPosition->set_parent(expression);
  163848           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  163849             :                   }
  163850             :              }
  163851             :         }
  163852             : 
  163853             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  163854           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  163855           0 :      if (initializedName != NULL)
  163856             :         {
  163857             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  163858           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  163859           0 :           ROSE_ASSERT(start != NULL);
  163860             : #if 0
  163861             :        // Debugging information
  163862             :           if (start->get_parent() == NULL)
  163863             :              {
  163864             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163865             :              }
  163866             : #endif
  163867           0 :           start->set_parent(initializedName);
  163868           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  163869             : 
  163870             : #if 0
  163871             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  163872             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  163873             : 
  163874             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  163875             :        // ROSE_ASSERT(end != NULL);
  163876             :           if (end == NULL)
  163877             :              {
  163878             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  163879             :              }
  163880             :             else
  163881             :              {
  163882             :                if (end->get_parent() == NULL)
  163883             :                   {
  163884             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  163885             :                   }
  163886             :                end->set_parent(initializedName);
  163887             :                ROSE_ASSERT(end->get_parent() != NULL);
  163888             :              }
  163889             : #endif
  163890             :         }
  163891             : 
  163892             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  163893           0 :      help.insertCopiedNodePair(this,result);
  163894             : 
  163895             :   // printf ("End of copy SgSIMDScalarStore = %p = %s \n",this,SageInterface::get_name(this).c_str());
  163896             : 
  163897             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  163898             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  163899           0 :      help.decrementDepth();
  163900             : 
  163901             :   // Test if this is the root of the copy!
  163902           0 :      if (help.get_depth() == 0)
  163903             :         {
  163904             :        // This is the original calling node.
  163905             : 
  163906             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  163907             :        // printf ("Calling SgSIMDScalarStore::fixupCopy() (from root of AST being copied) \n");
  163908             : #if ALT_FIXUP_COPY
  163909             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  163910           0 :           fixupCopy_scopes (result,help);
  163911           0 :           fixupCopy_symbols (result,help);
  163912           0 :           fixupCopy_references (result,help);
  163913             : #else
  163914             :           fixupCopy(result,help);
  163915             : #endif
  163916             :        // Allow this to be called recursively, so accumulate the state.
  163917             :        // Also, clear the state in the SgCopyHelp object.
  163918             :        // help.clearState();
  163919             :         }
  163920             : 
  163921           0 :      return result;
  163922             :    }
  163923             : 
  163924             : 
  163925             : /* #line 163926 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  163926             : 
  163927             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  163928             : 
  163929           0 : SgNode* SgSIMDGather::copy ( SgCopyHelp& help) const
  163930             :    {
  163931           0 :      SgSIMDGather* result = NULL;
  163932             : 
  163933             :   // printf ("Copy SgSIMDGather = %p = %s \n",this,SageInterface::get_name(this).c_str());
  163934             : 
  163935             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  163936             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  163937             :   // The default value of the depth is 0, so after this call the depth is 1!
  163938           0 :      help.incrementDepth();
  163939             : 
  163940             : #if 0
  163941             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  163942             :   // but it is not generally true that things can only be copied once!
  163943             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  163944             :   // AstAttribute* existingAttribute = const_cast<SgSIMDGather*>(this)->attribute["copied"];
  163945             :      bool previouslyCopied = const_cast<SgSIMDGather*>(this)->attribute.exists("copied");
  163946             :      if (previouslyCopied == true)
  163947             :         {
  163948             :           this->get_file_info()->display("Called from copy SgSIMDGather: debug");
  163949             :         }
  163950             :      ROSE_ASSERT(previouslyCopied == false);
  163951             : 
  163952             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  163953             :      AstAttribute* newAttribute = new AstAttribute();
  163954             :      ROSE_ASSERT(newAttribute != NULL);
  163955             : 
  163956             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  163957             :      const_cast<SgSIMDGather*>(this)->attribute.add("copied",newAttribute);
  163958             : #endif
  163959             : 
  163960             :   // Copy data members from base classes
  163961             :   // Copy constructor parameter data member: startOfConstruct_copy
  163962             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  163963             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  163964           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  163965           0 :      if ( p_startOfConstruct != NULL ) 
  163966             :         { 
  163967           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  163968             :         } 
  163969             :        else 
  163970             :         { 
  163971             :           startOfConstruct_copy = NULL; 
  163972             :         } 
  163973             :   // Copy constructor parameter data member: lhs_operand_i_copy
  163974           0 :      SgExpression* lhs_operand_i_copy; 
  163975             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  163976           0 :           if (get_lhs_operand_i() != NULL) 
  163977             :              { 
  163978           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  163979             :              } 
  163980             :             else 
  163981             :              { 
  163982             :                lhs_operand_i_copy = NULL; 
  163983             :              } 
  163984             :   // Copy constructor parameter data member: rhs_operand_i_copy
  163985           0 :      SgExpression* rhs_operand_i_copy; 
  163986             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  163987           0 :           if (get_rhs_operand_i() != NULL) 
  163988             :              { 
  163989           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  163990             :              } 
  163991             :             else 
  163992             :              { 
  163993             :                rhs_operand_i_copy = NULL; 
  163994             :              } 
  163995             :   // Copy constructor parameter data member: expression_type_copy
  163996             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  163997             :   // case: toBeCopied == COPY_DATA for expression_type
  163998           0 :      SgType* expression_type_copy = p_expression_type; 
  163999             :  
  164000             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164001             : 
  164002             :   // Build an empty copy of this object (will be filled in, but 
  164003             :   // the parent can't be set and must be set by the caller)
  164004           0 :      result = new SgSIMDGather(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  164005           0 :      ROSE_ASSERT(result != NULL);
  164006             : 
  164007             :   // Copy data members of "this" class
  164008             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  164009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  164010             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  164011           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  164012           0 :      if ( p_endOfConstruct != NULL ) 
  164013             :         { 
  164014           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  164015             :         } 
  164016             :        else 
  164017             :         { 
  164018             :           endOfConstruct_copy = NULL; 
  164019             :         } 
  164020             :   /* check for a valid pointer and delete if present */ 
  164021           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  164022             :   /* add assignment to result here */ 
  164023           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  164024             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  164025             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  164026             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  164027           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  164028           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  164029             :         { 
  164030           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  164031             :         } 
  164032             :        else 
  164033             :         { 
  164034             :           attachedPreprocessingInfoPtr_copy = NULL; 
  164035             :         } 
  164036             :   /* check for a valid pointer and delete if present */ 
  164037           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  164038             :   /* add assignment to result here */ 
  164039           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  164040             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  164041             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  164042             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  164043           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  164044           0 :      if ( p_attributeMechanism != NULL ) 
  164045             :         { 
  164046           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  164047             :         } 
  164048             :        else 
  164049             :         { 
  164050             :           attributeMechanism_copy = NULL; 
  164051             :         } 
  164052             :   /* check for a valid pointer and delete if present */ 
  164053           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  164054             :   /* add assignment to result here */ 
  164055           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  164056             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  164057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  164058             :   // case: toBeCopied == COPY_DATA for need_paren
  164059           0 :      bool need_paren_copy = p_need_paren; 
  164060           0 :      result->p_need_paren = need_paren_copy; 
  164061             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  164062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  164063             :   // case: toBeCopied == COPY_DATA for lvalue
  164064           0 :      bool lvalue_copy = p_lvalue; 
  164065           0 :      result->p_lvalue = lvalue_copy; 
  164066             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  164067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  164068             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  164069           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  164070           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  164071             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  164072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  164073             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  164074           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  164075           0 :      if ( p_operatorPosition != NULL ) 
  164076             :         { 
  164077           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  164078             :         } 
  164079             :        else 
  164080             :         { 
  164081             :           operatorPosition_copy = NULL; 
  164082             :         } 
  164083             :   /* check for a valid pointer and delete if present */ 
  164084           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  164085             :   /* add assignment to result here */ 
  164086           0 :      result->p_operatorPosition = operatorPosition_copy; 
  164087             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  164088             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  164089             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  164090           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  164091           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  164092             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  164093           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  164094             :              { 
  164095           0 :                lhs_operand_i_copy->set_parent(result); 
  164096             :              } 
  164097             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  164098           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  164099             :              { 
  164100           0 :                rhs_operand_i_copy->set_parent(result); 
  164101             :              } 
  164102             : 
  164103             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164104             : 
  164105             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  164106             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  164107             :   // fixupCopy(result,help);
  164108             : 
  164109             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  164110             :   // the Sg_File_Info objects that are built for the new IR nodes.
  164111           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  164112           0 :      if (locatedNode != NULL)
  164113             :         {
  164114             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  164115           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  164116           0 :           ROSE_ASSERT(start != NULL);
  164117             : #if 0
  164118             :        // Debugging information
  164119             :           if (start->get_parent() == NULL)
  164120             :              {
  164121             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164122             :              }
  164123             : #endif
  164124           0 :           start->set_parent(locatedNode);
  164125           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  164126             : 
  164127           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  164128             : 
  164129             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  164130             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  164131             :        // ROSE_ASSERT(end != NULL);
  164132           0 :           if (end == NULL)
  164133             :              {
  164134           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  164135             :              }
  164136             :             else
  164137             :              {
  164138             : #if 0
  164139             :             // Debugging information
  164140             :                if (end->get_parent() == NULL)
  164141             :                   {
  164142             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164143             :                   }
  164144             : #endif
  164145           0 :                end->set_parent(locatedNode);
  164146           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  164147             :              }
  164148             : 
  164149           0 :           SgExpression* expression = isSgExpression(result);
  164150           0 :           if (isSgExpression(this) != NULL)
  164151             :              {
  164152           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  164153             : 
  164154             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  164155           0 :                if (operatorPosition != NULL)
  164156             :                   {
  164157             : #if 0
  164158             :                  // Debugging information
  164159             :                     if (operatorPosition->get_parent() == NULL)
  164160             :                        {
  164161             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164162             :                        }
  164163             : #endif
  164164           0 :                     operatorPosition->set_parent(expression);
  164165           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  164166             :                   }
  164167             :              }
  164168             :         }
  164169             : 
  164170             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  164171           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  164172           0 :      if (initializedName != NULL)
  164173             :         {
  164174             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  164175           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  164176           0 :           ROSE_ASSERT(start != NULL);
  164177             : #if 0
  164178             :        // Debugging information
  164179             :           if (start->get_parent() == NULL)
  164180             :              {
  164181             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164182             :              }
  164183             : #endif
  164184           0 :           start->set_parent(initializedName);
  164185           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  164186             : 
  164187             : #if 0
  164188             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  164189             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  164190             : 
  164191             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  164192             :        // ROSE_ASSERT(end != NULL);
  164193             :           if (end == NULL)
  164194             :              {
  164195             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  164196             :              }
  164197             :             else
  164198             :              {
  164199             :                if (end->get_parent() == NULL)
  164200             :                   {
  164201             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164202             :                   }
  164203             :                end->set_parent(initializedName);
  164204             :                ROSE_ASSERT(end->get_parent() != NULL);
  164205             :              }
  164206             : #endif
  164207             :         }
  164208             : 
  164209             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  164210           0 :      help.insertCopiedNodePair(this,result);
  164211             : 
  164212             :   // printf ("End of copy SgSIMDGather = %p = %s \n",this,SageInterface::get_name(this).c_str());
  164213             : 
  164214             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  164215             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  164216           0 :      help.decrementDepth();
  164217             : 
  164218             :   // Test if this is the root of the copy!
  164219           0 :      if (help.get_depth() == 0)
  164220             :         {
  164221             :        // This is the original calling node.
  164222             : 
  164223             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  164224             :        // printf ("Calling SgSIMDGather::fixupCopy() (from root of AST being copied) \n");
  164225             : #if ALT_FIXUP_COPY
  164226             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  164227           0 :           fixupCopy_scopes (result,help);
  164228           0 :           fixupCopy_symbols (result,help);
  164229           0 :           fixupCopy_references (result,help);
  164230             : #else
  164231             :           fixupCopy(result,help);
  164232             : #endif
  164233             :        // Allow this to be called recursively, so accumulate the state.
  164234             :        // Also, clear the state in the SgCopyHelp object.
  164235             :        // help.clearState();
  164236             :         }
  164237             : 
  164238           0 :      return result;
  164239             :    }
  164240             : 
  164241             : 
  164242             : /* #line 164243 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  164243             : 
  164244             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164245             : 
  164246           0 : SgNode* SgSIMDExplicitGather::copy ( SgCopyHelp& help) const
  164247             :    {
  164248           0 :      SgSIMDExplicitGather* result = NULL;
  164249             : 
  164250             :   // printf ("Copy SgSIMDExplicitGather = %p = %s \n",this,SageInterface::get_name(this).c_str());
  164251             : 
  164252             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  164253             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  164254             :   // The default value of the depth is 0, so after this call the depth is 1!
  164255           0 :      help.incrementDepth();
  164256             : 
  164257             : #if 0
  164258             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  164259             :   // but it is not generally true that things can only be copied once!
  164260             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  164261             :   // AstAttribute* existingAttribute = const_cast<SgSIMDExplicitGather*>(this)->attribute["copied"];
  164262             :      bool previouslyCopied = const_cast<SgSIMDExplicitGather*>(this)->attribute.exists("copied");
  164263             :      if (previouslyCopied == true)
  164264             :         {
  164265             :           this->get_file_info()->display("Called from copy SgSIMDExplicitGather: debug");
  164266             :         }
  164267             :      ROSE_ASSERT(previouslyCopied == false);
  164268             : 
  164269             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  164270             :      AstAttribute* newAttribute = new AstAttribute();
  164271             :      ROSE_ASSERT(newAttribute != NULL);
  164272             : 
  164273             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  164274             :      const_cast<SgSIMDExplicitGather*>(this)->attribute.add("copied",newAttribute);
  164275             : #endif
  164276             : 
  164277             :   // Copy data members from base classes
  164278             :   // Copy constructor parameter data member: startOfConstruct_copy
  164279             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  164280             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  164281           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  164282           0 :      if ( p_startOfConstruct != NULL ) 
  164283             :         { 
  164284           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  164285             :         } 
  164286             :        else 
  164287             :         { 
  164288             :           startOfConstruct_copy = NULL; 
  164289             :         } 
  164290             :   // Copy constructor parameter data member: lhs_operand_i_copy
  164291           0 :      SgExpression* lhs_operand_i_copy; 
  164292             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  164293           0 :           if (get_lhs_operand_i() != NULL) 
  164294             :              { 
  164295           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  164296             :              } 
  164297             :             else 
  164298             :              { 
  164299             :                lhs_operand_i_copy = NULL; 
  164300             :              } 
  164301             :   // Copy constructor parameter data member: rhs_operand_i_copy
  164302           0 :      SgExpression* rhs_operand_i_copy; 
  164303             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  164304           0 :           if (get_rhs_operand_i() != NULL) 
  164305             :              { 
  164306           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  164307             :              } 
  164308             :             else 
  164309             :              { 
  164310             :                rhs_operand_i_copy = NULL; 
  164311             :              } 
  164312             :   // Copy constructor parameter data member: expression_type_copy
  164313             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  164314             :   // case: toBeCopied == COPY_DATA for expression_type
  164315           0 :      SgType* expression_type_copy = p_expression_type; 
  164316             :  
  164317             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164318             : 
  164319             :   // Build an empty copy of this object (will be filled in, but 
  164320             :   // the parent can't be set and must be set by the caller)
  164321           0 :      result = new SgSIMDExplicitGather(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  164322           0 :      ROSE_ASSERT(result != NULL);
  164323             : 
  164324             :   // Copy data members of "this" class
  164325             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  164326             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  164327             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  164328           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  164329           0 :      if ( p_endOfConstruct != NULL ) 
  164330             :         { 
  164331           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  164332             :         } 
  164333             :        else 
  164334             :         { 
  164335             :           endOfConstruct_copy = NULL; 
  164336             :         } 
  164337             :   /* check for a valid pointer and delete if present */ 
  164338           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  164339             :   /* add assignment to result here */ 
  164340           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  164341             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  164342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  164343             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  164344           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  164345           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  164346             :         { 
  164347           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  164348             :         } 
  164349             :        else 
  164350             :         { 
  164351             :           attachedPreprocessingInfoPtr_copy = NULL; 
  164352             :         } 
  164353             :   /* check for a valid pointer and delete if present */ 
  164354           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  164355             :   /* add assignment to result here */ 
  164356           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  164357             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  164358             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  164359             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  164360           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  164361           0 :      if ( p_attributeMechanism != NULL ) 
  164362             :         { 
  164363           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  164364             :         } 
  164365             :        else 
  164366             :         { 
  164367             :           attributeMechanism_copy = NULL; 
  164368             :         } 
  164369             :   /* check for a valid pointer and delete if present */ 
  164370           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  164371             :   /* add assignment to result here */ 
  164372           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  164373             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  164374             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  164375             :   // case: toBeCopied == COPY_DATA for need_paren
  164376           0 :      bool need_paren_copy = p_need_paren; 
  164377           0 :      result->p_need_paren = need_paren_copy; 
  164378             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  164379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  164380             :   // case: toBeCopied == COPY_DATA for lvalue
  164381           0 :      bool lvalue_copy = p_lvalue; 
  164382           0 :      result->p_lvalue = lvalue_copy; 
  164383             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  164384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  164385             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  164386           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  164387           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  164388             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  164389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  164390             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  164391           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  164392           0 :      if ( p_operatorPosition != NULL ) 
  164393             :         { 
  164394           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  164395             :         } 
  164396             :        else 
  164397             :         { 
  164398             :           operatorPosition_copy = NULL; 
  164399             :         } 
  164400             :   /* check for a valid pointer and delete if present */ 
  164401           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  164402             :   /* add assignment to result here */ 
  164403           0 :      result->p_operatorPosition = operatorPosition_copy; 
  164404             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  164405             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  164406             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  164407           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  164408           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  164409             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  164410           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  164411             :              { 
  164412           0 :                lhs_operand_i_copy->set_parent(result); 
  164413             :              } 
  164414             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  164415           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  164416             :              { 
  164417           0 :                rhs_operand_i_copy->set_parent(result); 
  164418             :              } 
  164419             : 
  164420             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164421             : 
  164422             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  164423             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  164424             :   // fixupCopy(result,help);
  164425             : 
  164426             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  164427             :   // the Sg_File_Info objects that are built for the new IR nodes.
  164428           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  164429           0 :      if (locatedNode != NULL)
  164430             :         {
  164431             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  164432           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  164433           0 :           ROSE_ASSERT(start != NULL);
  164434             : #if 0
  164435             :        // Debugging information
  164436             :           if (start->get_parent() == NULL)
  164437             :              {
  164438             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164439             :              }
  164440             : #endif
  164441           0 :           start->set_parent(locatedNode);
  164442           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  164443             : 
  164444           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  164445             : 
  164446             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  164447             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  164448             :        // ROSE_ASSERT(end != NULL);
  164449           0 :           if (end == NULL)
  164450             :              {
  164451           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  164452             :              }
  164453             :             else
  164454             :              {
  164455             : #if 0
  164456             :             // Debugging information
  164457             :                if (end->get_parent() == NULL)
  164458             :                   {
  164459             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164460             :                   }
  164461             : #endif
  164462           0 :                end->set_parent(locatedNode);
  164463           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  164464             :              }
  164465             : 
  164466           0 :           SgExpression* expression = isSgExpression(result);
  164467           0 :           if (isSgExpression(this) != NULL)
  164468             :              {
  164469           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  164470             : 
  164471             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  164472           0 :                if (operatorPosition != NULL)
  164473             :                   {
  164474             : #if 0
  164475             :                  // Debugging information
  164476             :                     if (operatorPosition->get_parent() == NULL)
  164477             :                        {
  164478             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164479             :                        }
  164480             : #endif
  164481           0 :                     operatorPosition->set_parent(expression);
  164482           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  164483             :                   }
  164484             :              }
  164485             :         }
  164486             : 
  164487             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  164488           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  164489           0 :      if (initializedName != NULL)
  164490             :         {
  164491             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  164492           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  164493           0 :           ROSE_ASSERT(start != NULL);
  164494             : #if 0
  164495             :        // Debugging information
  164496             :           if (start->get_parent() == NULL)
  164497             :              {
  164498             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164499             :              }
  164500             : #endif
  164501           0 :           start->set_parent(initializedName);
  164502           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  164503             : 
  164504             : #if 0
  164505             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  164506             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  164507             : 
  164508             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  164509             :        // ROSE_ASSERT(end != NULL);
  164510             :           if (end == NULL)
  164511             :              {
  164512             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  164513             :              }
  164514             :             else
  164515             :              {
  164516             :                if (end->get_parent() == NULL)
  164517             :                   {
  164518             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164519             :                   }
  164520             :                end->set_parent(initializedName);
  164521             :                ROSE_ASSERT(end->get_parent() != NULL);
  164522             :              }
  164523             : #endif
  164524             :         }
  164525             : 
  164526             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  164527           0 :      help.insertCopiedNodePair(this,result);
  164528             : 
  164529             :   // printf ("End of copy SgSIMDExplicitGather = %p = %s \n",this,SageInterface::get_name(this).c_str());
  164530             : 
  164531             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  164532             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  164533           0 :      help.decrementDepth();
  164534             : 
  164535             :   // Test if this is the root of the copy!
  164536           0 :      if (help.get_depth() == 0)
  164537             :         {
  164538             :        // This is the original calling node.
  164539             : 
  164540             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  164541             :        // printf ("Calling SgSIMDExplicitGather::fixupCopy() (from root of AST being copied) \n");
  164542             : #if ALT_FIXUP_COPY
  164543             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  164544           0 :           fixupCopy_scopes (result,help);
  164545           0 :           fixupCopy_symbols (result,help);
  164546           0 :           fixupCopy_references (result,help);
  164547             : #else
  164548             :           fixupCopy(result,help);
  164549             : #endif
  164550             :        // Allow this to be called recursively, so accumulate the state.
  164551             :        // Also, clear the state in the SgCopyHelp object.
  164552             :        // help.clearState();
  164553             :         }
  164554             : 
  164555           0 :      return result;
  164556             :    }
  164557             : 
  164558             : 
  164559             : /* #line 164560 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  164560             : 
  164561             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164562             : 
  164563           0 : SgNode* SgSIMDScatter::copy ( SgCopyHelp& help) const
  164564             :    {
  164565           0 :      SgSIMDScatter* result = NULL;
  164566             : 
  164567             :   // printf ("Copy SgSIMDScatter = %p = %s \n",this,SageInterface::get_name(this).c_str());
  164568             : 
  164569             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  164570             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  164571             :   // The default value of the depth is 0, so after this call the depth is 1!
  164572           0 :      help.incrementDepth();
  164573             : 
  164574             : #if 0
  164575             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  164576             :   // but it is not generally true that things can only be copied once!
  164577             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  164578             :   // AstAttribute* existingAttribute = const_cast<SgSIMDScatter*>(this)->attribute["copied"];
  164579             :      bool previouslyCopied = const_cast<SgSIMDScatter*>(this)->attribute.exists("copied");
  164580             :      if (previouslyCopied == true)
  164581             :         {
  164582             :           this->get_file_info()->display("Called from copy SgSIMDScatter: debug");
  164583             :         }
  164584             :      ROSE_ASSERT(previouslyCopied == false);
  164585             : 
  164586             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  164587             :      AstAttribute* newAttribute = new AstAttribute();
  164588             :      ROSE_ASSERT(newAttribute != NULL);
  164589             : 
  164590             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  164591             :      const_cast<SgSIMDScatter*>(this)->attribute.add("copied",newAttribute);
  164592             : #endif
  164593             : 
  164594             :   // Copy data members from base classes
  164595             :   // Copy constructor parameter data member: startOfConstruct_copy
  164596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  164597             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  164598           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  164599           0 :      if ( p_startOfConstruct != NULL ) 
  164600             :         { 
  164601           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  164602             :         } 
  164603             :        else 
  164604             :         { 
  164605             :           startOfConstruct_copy = NULL; 
  164606             :         } 
  164607             :   // Copy constructor parameter data member: lhs_operand_i_copy
  164608           0 :      SgExpression* lhs_operand_i_copy; 
  164609             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand_i
  164610           0 :           if (get_lhs_operand_i() != NULL) 
  164611             :              { 
  164612           0 :                lhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand_i())); 
  164613             :              } 
  164614             :             else 
  164615             :              { 
  164616             :                lhs_operand_i_copy = NULL; 
  164617             :              } 
  164618             :   // Copy constructor parameter data member: rhs_operand_i_copy
  164619           0 :      SgExpression* rhs_operand_i_copy; 
  164620             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand_i
  164621           0 :           if (get_rhs_operand_i() != NULL) 
  164622             :              { 
  164623           0 :                rhs_operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand_i())); 
  164624             :              } 
  164625             :             else 
  164626             :              { 
  164627             :                rhs_operand_i_copy = NULL; 
  164628             :              } 
  164629             :   // Copy constructor parameter data member: expression_type_copy
  164630             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  164631             :   // case: toBeCopied == COPY_DATA for expression_type
  164632           0 :      SgType* expression_type_copy = p_expression_type; 
  164633             :  
  164634             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164635             : 
  164636             :   // Build an empty copy of this object (will be filled in, but 
  164637             :   // the parent can't be set and must be set by the caller)
  164638           0 :      result = new SgSIMDScatter(  startOfConstruct_copy, lhs_operand_i_copy, rhs_operand_i_copy, expression_type_copy );
  164639           0 :      ROSE_ASSERT(result != NULL);
  164640             : 
  164641             :   // Copy data members of "this" class
  164642             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  164643             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  164644             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  164645           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  164646           0 :      if ( p_endOfConstruct != NULL ) 
  164647             :         { 
  164648           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  164649             :         } 
  164650             :        else 
  164651             :         { 
  164652             :           endOfConstruct_copy = NULL; 
  164653             :         } 
  164654             :   /* check for a valid pointer and delete if present */ 
  164655           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  164656             :   /* add assignment to result here */ 
  164657           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  164658             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  164659             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  164660             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  164661           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  164662           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  164663             :         { 
  164664           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  164665             :         } 
  164666             :        else 
  164667             :         { 
  164668             :           attachedPreprocessingInfoPtr_copy = NULL; 
  164669             :         } 
  164670             :   /* check for a valid pointer and delete if present */ 
  164671           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  164672             :   /* add assignment to result here */ 
  164673           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  164674             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  164675             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  164676             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  164677           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  164678           0 :      if ( p_attributeMechanism != NULL ) 
  164679             :         { 
  164680           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  164681             :         } 
  164682             :        else 
  164683             :         { 
  164684             :           attributeMechanism_copy = NULL; 
  164685             :         } 
  164686             :   /* check for a valid pointer and delete if present */ 
  164687           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  164688             :   /* add assignment to result here */ 
  164689           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  164690             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  164691             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  164692             :   // case: toBeCopied == COPY_DATA for need_paren
  164693           0 :      bool need_paren_copy = p_need_paren; 
  164694           0 :      result->p_need_paren = need_paren_copy; 
  164695             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  164696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  164697             :   // case: toBeCopied == COPY_DATA for lvalue
  164698           0 :      bool lvalue_copy = p_lvalue; 
  164699           0 :      result->p_lvalue = lvalue_copy; 
  164700             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  164701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  164702             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  164703           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  164704           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  164705             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  164706             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  164707             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  164708           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  164709           0 :      if ( p_operatorPosition != NULL ) 
  164710             :         { 
  164711           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  164712             :         } 
  164713             :        else 
  164714             :         { 
  164715             :           operatorPosition_copy = NULL; 
  164716             :         } 
  164717             :   /* check for a valid pointer and delete if present */ 
  164718           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  164719             :   /* add assignment to result here */ 
  164720           0 :      result->p_operatorPosition = operatorPosition_copy; 
  164721             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  164722             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  164723             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  164724           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  164725           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  164726             :   // case: not a listType for (using conditionalToSetParent)lhs_operand_i
  164727           0 :           if ( (lhs_operand_i_copy != NULL) && (lhs_operand_i_copy->get_parent() == NULL) && (isSgType(lhs_operand_i_copy) == NULL) ) 
  164728             :              { 
  164729           0 :                lhs_operand_i_copy->set_parent(result); 
  164730             :              } 
  164731             :   // case: not a listType for (using conditionalToSetParent)rhs_operand_i
  164732           0 :           if ( (rhs_operand_i_copy != NULL) && (rhs_operand_i_copy->get_parent() == NULL) && (isSgType(rhs_operand_i_copy) == NULL) ) 
  164733             :              { 
  164734           0 :                rhs_operand_i_copy->set_parent(result); 
  164735             :              } 
  164736             : 
  164737             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164738             : 
  164739             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  164740             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  164741             :   // fixupCopy(result,help);
  164742             : 
  164743             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  164744             :   // the Sg_File_Info objects that are built for the new IR nodes.
  164745           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  164746           0 :      if (locatedNode != NULL)
  164747             :         {
  164748             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  164749           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  164750           0 :           ROSE_ASSERT(start != NULL);
  164751             : #if 0
  164752             :        // Debugging information
  164753             :           if (start->get_parent() == NULL)
  164754             :              {
  164755             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164756             :              }
  164757             : #endif
  164758           0 :           start->set_parent(locatedNode);
  164759           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  164760             : 
  164761           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  164762             : 
  164763             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  164764             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  164765             :        // ROSE_ASSERT(end != NULL);
  164766           0 :           if (end == NULL)
  164767             :              {
  164768           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  164769             :              }
  164770             :             else
  164771             :              {
  164772             : #if 0
  164773             :             // Debugging information
  164774             :                if (end->get_parent() == NULL)
  164775             :                   {
  164776             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164777             :                   }
  164778             : #endif
  164779           0 :                end->set_parent(locatedNode);
  164780           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  164781             :              }
  164782             : 
  164783           0 :           SgExpression* expression = isSgExpression(result);
  164784           0 :           if (isSgExpression(this) != NULL)
  164785             :              {
  164786           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  164787             : 
  164788             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  164789           0 :                if (operatorPosition != NULL)
  164790             :                   {
  164791             : #if 0
  164792             :                  // Debugging information
  164793             :                     if (operatorPosition->get_parent() == NULL)
  164794             :                        {
  164795             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164796             :                        }
  164797             : #endif
  164798           0 :                     operatorPosition->set_parent(expression);
  164799           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  164800             :                   }
  164801             :              }
  164802             :         }
  164803             : 
  164804             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  164805           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  164806           0 :      if (initializedName != NULL)
  164807             :         {
  164808             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  164809           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  164810           0 :           ROSE_ASSERT(start != NULL);
  164811             : #if 0
  164812             :        // Debugging information
  164813             :           if (start->get_parent() == NULL)
  164814             :              {
  164815             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164816             :              }
  164817             : #endif
  164818           0 :           start->set_parent(initializedName);
  164819           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  164820             : 
  164821             : #if 0
  164822             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  164823             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  164824             : 
  164825             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  164826             :        // ROSE_ASSERT(end != NULL);
  164827             :           if (end == NULL)
  164828             :              {
  164829             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  164830             :              }
  164831             :             else
  164832             :              {
  164833             :                if (end->get_parent() == NULL)
  164834             :                   {
  164835             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  164836             :                   }
  164837             :                end->set_parent(initializedName);
  164838             :                ROSE_ASSERT(end->get_parent() != NULL);
  164839             :              }
  164840             : #endif
  164841             :         }
  164842             : 
  164843             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  164844           0 :      help.insertCopiedNodePair(this,result);
  164845             : 
  164846             :   // printf ("End of copy SgSIMDScatter = %p = %s \n",this,SageInterface::get_name(this).c_str());
  164847             : 
  164848             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  164849             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  164850           0 :      help.decrementDepth();
  164851             : 
  164852             :   // Test if this is the root of the copy!
  164853           0 :      if (help.get_depth() == 0)
  164854             :         {
  164855             :        // This is the original calling node.
  164856             : 
  164857             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  164858             :        // printf ("Calling SgSIMDScatter::fixupCopy() (from root of AST being copied) \n");
  164859             : #if ALT_FIXUP_COPY
  164860             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  164861           0 :           fixupCopy_scopes (result,help);
  164862           0 :           fixupCopy_symbols (result,help);
  164863           0 :           fixupCopy_references (result,help);
  164864             : #else
  164865             :           fixupCopy(result,help);
  164866             : #endif
  164867             :        // Allow this to be called recursively, so accumulate the state.
  164868             :        // Also, clear the state in the SgCopyHelp object.
  164869             :        // help.clearState();
  164870             :         }
  164871             : 
  164872           0 :      return result;
  164873             :    }
  164874             : 
  164875             : 
  164876             : /* #line 164877 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  164877             : 
  164878             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164879             : 
  164880         821 : SgNode* SgExprListExp::copy ( SgCopyHelp& help) const
  164881             :    {
  164882         821 :      SgExprListExp* result = NULL;
  164883             : 
  164884             :   // printf ("Copy SgExprListExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  164885             : 
  164886             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  164887             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  164888             :   // The default value of the depth is 0, so after this call the depth is 1!
  164889         821 :      help.incrementDepth();
  164890             : 
  164891             : #if 0
  164892             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  164893             :   // but it is not generally true that things can only be copied once!
  164894             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  164895             :   // AstAttribute* existingAttribute = const_cast<SgExprListExp*>(this)->attribute["copied"];
  164896             :      bool previouslyCopied = const_cast<SgExprListExp*>(this)->attribute.exists("copied");
  164897             :      if (previouslyCopied == true)
  164898             :         {
  164899             :           this->get_file_info()->display("Called from copy SgExprListExp: debug");
  164900             :         }
  164901             :      ROSE_ASSERT(previouslyCopied == false);
  164902             : 
  164903             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  164904             :      AstAttribute* newAttribute = new AstAttribute();
  164905             :      ROSE_ASSERT(newAttribute != NULL);
  164906             : 
  164907             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  164908             :      const_cast<SgExprListExp*>(this)->attribute.add("copied",newAttribute);
  164909             : #endif
  164910             : 
  164911             :   // Copy data members from base classes
  164912             :   // Copy constructor parameter data member: startOfConstruct_copy
  164913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  164914             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  164915         821 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  164916         821 :      if ( p_startOfConstruct != NULL ) 
  164917             :         { 
  164918         821 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  164919             :         } 
  164920             :        else 
  164921             :         { 
  164922             :           startOfConstruct_copy = NULL; 
  164923             :         } 
  164924             :  
  164925             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  164926             : 
  164927             :   // Build an empty copy of this object (will be filled in, but 
  164928             :   // the parent can't be set and must be set by the caller)
  164929         821 :      result = new SgExprListExp(  startOfConstruct_copy );
  164930         821 :      ROSE_ASSERT(result != NULL);
  164931             : 
  164932             :   // Copy data members of "this" class
  164933             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  164934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  164935             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  164936         821 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  164937         821 :      if ( p_endOfConstruct != NULL ) 
  164938             :         { 
  164939         821 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  164940             :         } 
  164941             :        else 
  164942             :         { 
  164943             :           endOfConstruct_copy = NULL; 
  164944             :         } 
  164945             :   /* check for a valid pointer and delete if present */ 
  164946         821 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  164947             :   /* add assignment to result here */ 
  164948         821 :      result->p_endOfConstruct = endOfConstruct_copy; 
  164949             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  164950             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  164951             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  164952         821 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  164953         821 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  164954             :         { 
  164955           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  164956             :         } 
  164957             :        else 
  164958             :         { 
  164959             :           attachedPreprocessingInfoPtr_copy = NULL; 
  164960             :         } 
  164961             :   /* check for a valid pointer and delete if present */ 
  164962         821 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  164963             :   /* add assignment to result here */ 
  164964         821 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  164965             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  164966             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  164967             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  164968         821 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  164969         821 :      if ( p_attributeMechanism != NULL ) 
  164970             :         { 
  164971           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  164972             :         } 
  164973             :        else 
  164974             :         { 
  164975             :           attributeMechanism_copy = NULL; 
  164976             :         } 
  164977             :   /* check for a valid pointer and delete if present */ 
  164978         821 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  164979             :   /* add assignment to result here */ 
  164980         821 :      result->p_attributeMechanism = attributeMechanism_copy; 
  164981             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  164982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  164983             :   // case: toBeCopied == COPY_DATA for need_paren
  164984         821 :      bool need_paren_copy = p_need_paren; 
  164985         821 :      result->p_need_paren = need_paren_copy; 
  164986             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  164987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  164988             :   // case: toBeCopied == COPY_DATA for lvalue
  164989         821 :      bool lvalue_copy = p_lvalue; 
  164990         821 :      result->p_lvalue = lvalue_copy; 
  164991             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  164992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  164993             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  164994         821 :      bool global_qualified_name_copy = p_global_qualified_name; 
  164995         821 :      result->p_global_qualified_name = global_qualified_name_copy; 
  164996             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  164997             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  164998             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  164999         821 :      Sg_File_Info* operatorPosition_copy = NULL; 
  165000         821 :      if ( p_operatorPosition != NULL ) 
  165001             :         { 
  165002         821 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  165003             :         } 
  165004             :        else 
  165005             :         { 
  165006             :           operatorPosition_copy = NULL; 
  165007             :         } 
  165008             :   /* check for a valid pointer and delete if present */ 
  165009         821 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  165010             :   /* add assignment to result here */ 
  165011         821 :      result->p_operatorPosition = operatorPosition_copy; 
  165012             :   // Copy non-constructor parameter data member (no access function): result->p_expressions
  165013         821 :      SgExpressionPtrList expressions_copy; 
  165014             :   // case: listType for expressions
  165015             :   // case: listType (typeIsPointerToList == false) for expressions
  165016         821 :      SgExpressionPtrList::const_iterator source_expressions_iterator = get_expressions().begin(); 
  165017        1340 :      for ( /* empty by design */; source_expressions_iterator != get_expressions().end(); ++source_expressions_iterator) 
  165018             :         { 
  165019         519 :           SgExpression* source_list_element = *source_expressions_iterator; 
  165020         519 :           SgExpression* copy_list_element = NULL; 
  165021         519 :           if (source_list_element != NULL) 
  165022             :              { 
  165023         519 :                copy_list_element = static_cast<SgExpression*>(help.copyAst(*source_expressions_iterator)); 
  165024             :              } 
  165025             :             else 
  165026             :              { 
  165027             :                copy_list_element = NULL; 
  165028             :              } 
  165029         519 :           expressions_copy.push_back(copy_list_element); 
  165030             :         } 
  165031         821 :      result->p_expressions = expressions_copy; 
  165032             :   // case: listType for expressions
  165033             :   // case: listType (typeIsPointerToList == false) for expressions
  165034         821 :      SgExpressionPtrList::const_iterator expressions_iterator = result->get_expressions().begin(); 
  165035        1340 :      for ( /* empty by design */; expressions_iterator != result->get_expressions().end(); ++expressions_iterator) 
  165036             :         { 
  165037         519 :           SgExpression* list_element = *expressions_iterator; 
  165038         519 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  165039             :              { 
  165040         519 :                list_element->set_parent(result); 
  165041             :              } 
  165042             :         } 
  165043             : 
  165044             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165045             : 
  165046             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  165047             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  165048             :   // fixupCopy(result,help);
  165049             : 
  165050             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  165051             :   // the Sg_File_Info objects that are built for the new IR nodes.
  165052         821 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  165053         821 :      if (locatedNode != NULL)
  165054             :         {
  165055             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  165056         821 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  165057         821 :           ROSE_ASSERT(start != NULL);
  165058             : #if 0
  165059             :        // Debugging information
  165060             :           if (start->get_parent() == NULL)
  165061             :              {
  165062             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165063             :              }
  165064             : #endif
  165065         821 :           start->set_parent(locatedNode);
  165066         821 :           ROSE_ASSERT(start->get_parent() != NULL);
  165067             : 
  165068         821 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  165069             : 
  165070             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  165071             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  165072             :        // ROSE_ASSERT(end != NULL);
  165073         821 :           if (end == NULL)
  165074             :              {
  165075           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  165076             :              }
  165077             :             else
  165078             :              {
  165079             : #if 0
  165080             :             // Debugging information
  165081             :                if (end->get_parent() == NULL)
  165082             :                   {
  165083             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165084             :                   }
  165085             : #endif
  165086         821 :                end->set_parent(locatedNode);
  165087         821 :                ROSE_ASSERT(end->get_parent() != NULL);
  165088             :              }
  165089             : 
  165090         821 :           SgExpression* expression = isSgExpression(result);
  165091         821 :           if (isSgExpression(this) != NULL)
  165092             :              {
  165093         821 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  165094             : 
  165095             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  165096         821 :                if (operatorPosition != NULL)
  165097             :                   {
  165098             : #if 0
  165099             :                  // Debugging information
  165100             :                     if (operatorPosition->get_parent() == NULL)
  165101             :                        {
  165102             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165103             :                        }
  165104             : #endif
  165105         821 :                     operatorPosition->set_parent(expression);
  165106         821 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  165107             :                   }
  165108             :              }
  165109             :         }
  165110             : 
  165111             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  165112         821 :      SgInitializedName* initializedName = isSgInitializedName(result);
  165113         821 :      if (initializedName != NULL)
  165114             :         {
  165115             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  165116           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  165117           0 :           ROSE_ASSERT(start != NULL);
  165118             : #if 0
  165119             :        // Debugging information
  165120             :           if (start->get_parent() == NULL)
  165121             :              {
  165122             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165123             :              }
  165124             : #endif
  165125           0 :           start->set_parent(initializedName);
  165126           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  165127             : 
  165128             : #if 0
  165129             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  165130             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  165131             : 
  165132             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  165133             :        // ROSE_ASSERT(end != NULL);
  165134             :           if (end == NULL)
  165135             :              {
  165136             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  165137             :              }
  165138             :             else
  165139             :              {
  165140             :                if (end->get_parent() == NULL)
  165141             :                   {
  165142             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165143             :                   }
  165144             :                end->set_parent(initializedName);
  165145             :                ROSE_ASSERT(end->get_parent() != NULL);
  165146             :              }
  165147             : #endif
  165148             :         }
  165149             : 
  165150             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  165151         821 :      help.insertCopiedNodePair(this,result);
  165152             : 
  165153             :   // printf ("End of copy SgExprListExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  165154             : 
  165155             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  165156             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  165157         821 :      help.decrementDepth();
  165158             : 
  165159             :   // Test if this is the root of the copy!
  165160         821 :      if (help.get_depth() == 0)
  165161             :         {
  165162             :        // This is the original calling node.
  165163             : 
  165164             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  165165             :        // printf ("Calling SgExprListExp::fixupCopy() (from root of AST being copied) \n");
  165166             : #if ALT_FIXUP_COPY
  165167             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  165168           0 :           fixupCopy_scopes (result,help);
  165169           0 :           fixupCopy_symbols (result,help);
  165170           0 :           fixupCopy_references (result,help);
  165171             : #else
  165172             :           fixupCopy(result,help);
  165173             : #endif
  165174             :        // Allow this to be called recursively, so accumulate the state.
  165175             :        // Also, clear the state in the SgCopyHelp object.
  165176             :        // help.clearState();
  165177             :         }
  165178             : 
  165179        1098 :      return result;
  165180             :    }
  165181             : 
  165182             : 
  165183             : /* #line 165184 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  165184             : 
  165185             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165186             : 
  165187           0 : SgNode* SgListExp::copy ( SgCopyHelp& help) const
  165188             :    {
  165189           0 :      SgListExp* result = NULL;
  165190             : 
  165191             :   // printf ("Copy SgListExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  165192             : 
  165193             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  165194             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  165195             :   // The default value of the depth is 0, so after this call the depth is 1!
  165196           0 :      help.incrementDepth();
  165197             : 
  165198             : #if 0
  165199             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  165200             :   // but it is not generally true that things can only be copied once!
  165201             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  165202             :   // AstAttribute* existingAttribute = const_cast<SgListExp*>(this)->attribute["copied"];
  165203             :      bool previouslyCopied = const_cast<SgListExp*>(this)->attribute.exists("copied");
  165204             :      if (previouslyCopied == true)
  165205             :         {
  165206             :           this->get_file_info()->display("Called from copy SgListExp: debug");
  165207             :         }
  165208             :      ROSE_ASSERT(previouslyCopied == false);
  165209             : 
  165210             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  165211             :      AstAttribute* newAttribute = new AstAttribute();
  165212             :      ROSE_ASSERT(newAttribute != NULL);
  165213             : 
  165214             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  165215             :      const_cast<SgListExp*>(this)->attribute.add("copied",newAttribute);
  165216             : #endif
  165217             : 
  165218             :   // Copy data members from base classes
  165219             :   // Copy constructor parameter data member: startOfConstruct_copy
  165220             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  165221             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  165222           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  165223           0 :      if ( p_startOfConstruct != NULL ) 
  165224             :         { 
  165225           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  165226             :         } 
  165227             :        else 
  165228             :         { 
  165229             :           startOfConstruct_copy = NULL; 
  165230             :         } 
  165231             :  
  165232             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165233             : 
  165234             :   // Build an empty copy of this object (will be filled in, but 
  165235             :   // the parent can't be set and must be set by the caller)
  165236           0 :      result = new SgListExp(  startOfConstruct_copy );
  165237           0 :      ROSE_ASSERT(result != NULL);
  165238             : 
  165239             :   // Copy data members of "this" class
  165240             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  165241             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  165242             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  165243           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  165244           0 :      if ( p_endOfConstruct != NULL ) 
  165245             :         { 
  165246           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  165247             :         } 
  165248             :        else 
  165249             :         { 
  165250             :           endOfConstruct_copy = NULL; 
  165251             :         } 
  165252             :   /* check for a valid pointer and delete if present */ 
  165253           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  165254             :   /* add assignment to result here */ 
  165255           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  165256             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  165257             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  165258             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  165259           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  165260           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  165261             :         { 
  165262           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  165263             :         } 
  165264             :        else 
  165265             :         { 
  165266             :           attachedPreprocessingInfoPtr_copy = NULL; 
  165267             :         } 
  165268             :   /* check for a valid pointer and delete if present */ 
  165269           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  165270             :   /* add assignment to result here */ 
  165271           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  165272             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  165273             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  165274             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  165275           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  165276           0 :      if ( p_attributeMechanism != NULL ) 
  165277             :         { 
  165278           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  165279             :         } 
  165280             :        else 
  165281             :         { 
  165282             :           attributeMechanism_copy = NULL; 
  165283             :         } 
  165284             :   /* check for a valid pointer and delete if present */ 
  165285           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  165286             :   /* add assignment to result here */ 
  165287           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  165288             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  165289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  165290             :   // case: toBeCopied == COPY_DATA for need_paren
  165291           0 :      bool need_paren_copy = p_need_paren; 
  165292           0 :      result->p_need_paren = need_paren_copy; 
  165293             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  165294             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  165295             :   // case: toBeCopied == COPY_DATA for lvalue
  165296           0 :      bool lvalue_copy = p_lvalue; 
  165297           0 :      result->p_lvalue = lvalue_copy; 
  165298             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  165299             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  165300             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  165301           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  165302           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  165303             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  165304             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  165305             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  165306           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  165307           0 :      if ( p_operatorPosition != NULL ) 
  165308             :         { 
  165309           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  165310             :         } 
  165311             :        else 
  165312             :         { 
  165313             :           operatorPosition_copy = NULL; 
  165314             :         } 
  165315             :   /* check for a valid pointer and delete if present */ 
  165316           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  165317             :   /* add assignment to result here */ 
  165318           0 :      result->p_operatorPosition = operatorPosition_copy; 
  165319             :   // Copy non-constructor parameter data member (no access function): result->p_expressions
  165320           0 :      SgExpressionPtrList expressions_copy; 
  165321             :   // case: listType for expressions
  165322             :   // case: listType (typeIsPointerToList == false) for expressions
  165323           0 :      SgExpressionPtrList::const_iterator source_expressions_iterator = get_expressions().begin(); 
  165324           0 :      for ( /* empty by design */; source_expressions_iterator != get_expressions().end(); ++source_expressions_iterator) 
  165325             :         { 
  165326           0 :           SgExpression* source_list_element = *source_expressions_iterator; 
  165327           0 :           SgExpression* copy_list_element = NULL; 
  165328           0 :           if (source_list_element != NULL) 
  165329             :              { 
  165330           0 :                copy_list_element = static_cast<SgExpression*>(help.copyAst(*source_expressions_iterator)); 
  165331             :              } 
  165332             :             else 
  165333             :              { 
  165334             :                copy_list_element = NULL; 
  165335             :              } 
  165336           0 :           expressions_copy.push_back(copy_list_element); 
  165337             :         } 
  165338           0 :      result->p_expressions = expressions_copy; 
  165339             :   // case: listType for expressions
  165340             :   // case: listType (typeIsPointerToList == false) for expressions
  165341           0 :      SgExpressionPtrList::const_iterator expressions_iterator = result->get_expressions().begin(); 
  165342           0 :      for ( /* empty by design */; expressions_iterator != result->get_expressions().end(); ++expressions_iterator) 
  165343             :         { 
  165344           0 :           SgExpression* list_element = *expressions_iterator; 
  165345           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  165346             :              { 
  165347           0 :                list_element->set_parent(result); 
  165348             :              } 
  165349             :         } 
  165350             : 
  165351             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165352             : 
  165353             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  165354             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  165355             :   // fixupCopy(result,help);
  165356             : 
  165357             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  165358             :   // the Sg_File_Info objects that are built for the new IR nodes.
  165359           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  165360           0 :      if (locatedNode != NULL)
  165361             :         {
  165362             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  165363           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  165364           0 :           ROSE_ASSERT(start != NULL);
  165365             : #if 0
  165366             :        // Debugging information
  165367             :           if (start->get_parent() == NULL)
  165368             :              {
  165369             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165370             :              }
  165371             : #endif
  165372           0 :           start->set_parent(locatedNode);
  165373           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  165374             : 
  165375           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  165376             : 
  165377             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  165378             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  165379             :        // ROSE_ASSERT(end != NULL);
  165380           0 :           if (end == NULL)
  165381             :              {
  165382           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  165383             :              }
  165384             :             else
  165385             :              {
  165386             : #if 0
  165387             :             // Debugging information
  165388             :                if (end->get_parent() == NULL)
  165389             :                   {
  165390             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165391             :                   }
  165392             : #endif
  165393           0 :                end->set_parent(locatedNode);
  165394           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  165395             :              }
  165396             : 
  165397           0 :           SgExpression* expression = isSgExpression(result);
  165398           0 :           if (isSgExpression(this) != NULL)
  165399             :              {
  165400           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  165401             : 
  165402             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  165403           0 :                if (operatorPosition != NULL)
  165404             :                   {
  165405             : #if 0
  165406             :                  // Debugging information
  165407             :                     if (operatorPosition->get_parent() == NULL)
  165408             :                        {
  165409             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165410             :                        }
  165411             : #endif
  165412           0 :                     operatorPosition->set_parent(expression);
  165413           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  165414             :                   }
  165415             :              }
  165416             :         }
  165417             : 
  165418             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  165419           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  165420           0 :      if (initializedName != NULL)
  165421             :         {
  165422             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  165423           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  165424           0 :           ROSE_ASSERT(start != NULL);
  165425             : #if 0
  165426             :        // Debugging information
  165427             :           if (start->get_parent() == NULL)
  165428             :              {
  165429             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165430             :              }
  165431             : #endif
  165432           0 :           start->set_parent(initializedName);
  165433           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  165434             : 
  165435             : #if 0
  165436             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  165437             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  165438             : 
  165439             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  165440             :        // ROSE_ASSERT(end != NULL);
  165441             :           if (end == NULL)
  165442             :              {
  165443             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  165444             :              }
  165445             :             else
  165446             :              {
  165447             :                if (end->get_parent() == NULL)
  165448             :                   {
  165449             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165450             :                   }
  165451             :                end->set_parent(initializedName);
  165452             :                ROSE_ASSERT(end->get_parent() != NULL);
  165453             :              }
  165454             : #endif
  165455             :         }
  165456             : 
  165457             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  165458           0 :      help.insertCopiedNodePair(this,result);
  165459             : 
  165460             :   // printf ("End of copy SgListExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  165461             : 
  165462             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  165463             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  165464           0 :      help.decrementDepth();
  165465             : 
  165466             :   // Test if this is the root of the copy!
  165467           0 :      if (help.get_depth() == 0)
  165468             :         {
  165469             :        // This is the original calling node.
  165470             : 
  165471             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  165472             :        // printf ("Calling SgListExp::fixupCopy() (from root of AST being copied) \n");
  165473             : #if ALT_FIXUP_COPY
  165474             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  165475           0 :           fixupCopy_scopes (result,help);
  165476           0 :           fixupCopy_symbols (result,help);
  165477           0 :           fixupCopy_references (result,help);
  165478             : #else
  165479             :           fixupCopy(result,help);
  165480             : #endif
  165481             :        // Allow this to be called recursively, so accumulate the state.
  165482             :        // Also, clear the state in the SgCopyHelp object.
  165483             :        // help.clearState();
  165484             :         }
  165485             : 
  165486           0 :      return result;
  165487             :    }
  165488             : 
  165489             : 
  165490             : /* #line 165491 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  165491             : 
  165492             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165493             : 
  165494           0 : SgNode* SgTupleExp::copy ( SgCopyHelp& help) const
  165495             :    {
  165496           0 :      SgTupleExp* result = NULL;
  165497             : 
  165498             :   // printf ("Copy SgTupleExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  165499             : 
  165500             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  165501             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  165502             :   // The default value of the depth is 0, so after this call the depth is 1!
  165503           0 :      help.incrementDepth();
  165504             : 
  165505             : #if 0
  165506             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  165507             :   // but it is not generally true that things can only be copied once!
  165508             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  165509             :   // AstAttribute* existingAttribute = const_cast<SgTupleExp*>(this)->attribute["copied"];
  165510             :      bool previouslyCopied = const_cast<SgTupleExp*>(this)->attribute.exists("copied");
  165511             :      if (previouslyCopied == true)
  165512             :         {
  165513             :           this->get_file_info()->display("Called from copy SgTupleExp: debug");
  165514             :         }
  165515             :      ROSE_ASSERT(previouslyCopied == false);
  165516             : 
  165517             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  165518             :      AstAttribute* newAttribute = new AstAttribute();
  165519             :      ROSE_ASSERT(newAttribute != NULL);
  165520             : 
  165521             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  165522             :      const_cast<SgTupleExp*>(this)->attribute.add("copied",newAttribute);
  165523             : #endif
  165524             : 
  165525             :   // Copy data members from base classes
  165526             :   // Copy constructor parameter data member: startOfConstruct_copy
  165527             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  165528             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  165529           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  165530           0 :      if ( p_startOfConstruct != NULL ) 
  165531             :         { 
  165532           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  165533             :         } 
  165534             :        else 
  165535             :         { 
  165536             :           startOfConstruct_copy = NULL; 
  165537             :         } 
  165538             :  
  165539             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165540             : 
  165541             :   // Build an empty copy of this object (will be filled in, but 
  165542             :   // the parent can't be set and must be set by the caller)
  165543           0 :      result = new SgTupleExp(  startOfConstruct_copy );
  165544           0 :      ROSE_ASSERT(result != NULL);
  165545             : 
  165546             :   // Copy data members of "this" class
  165547             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  165548             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  165549             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  165550           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  165551           0 :      if ( p_endOfConstruct != NULL ) 
  165552             :         { 
  165553           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  165554             :         } 
  165555             :        else 
  165556             :         { 
  165557             :           endOfConstruct_copy = NULL; 
  165558             :         } 
  165559             :   /* check for a valid pointer and delete if present */ 
  165560           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  165561             :   /* add assignment to result here */ 
  165562           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  165563             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  165564             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  165565             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  165566           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  165567           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  165568             :         { 
  165569           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  165570             :         } 
  165571             :        else 
  165572             :         { 
  165573             :           attachedPreprocessingInfoPtr_copy = NULL; 
  165574             :         } 
  165575             :   /* check for a valid pointer and delete if present */ 
  165576           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  165577             :   /* add assignment to result here */ 
  165578           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  165579             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  165580             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  165581             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  165582           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  165583           0 :      if ( p_attributeMechanism != NULL ) 
  165584             :         { 
  165585           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  165586             :         } 
  165587             :        else 
  165588             :         { 
  165589             :           attributeMechanism_copy = NULL; 
  165590             :         } 
  165591             :   /* check for a valid pointer and delete if present */ 
  165592           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  165593             :   /* add assignment to result here */ 
  165594           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  165595             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  165596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  165597             :   // case: toBeCopied == COPY_DATA for need_paren
  165598           0 :      bool need_paren_copy = p_need_paren; 
  165599           0 :      result->p_need_paren = need_paren_copy; 
  165600             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  165601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  165602             :   // case: toBeCopied == COPY_DATA for lvalue
  165603           0 :      bool lvalue_copy = p_lvalue; 
  165604           0 :      result->p_lvalue = lvalue_copy; 
  165605             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  165606             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  165607             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  165608           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  165609           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  165610             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  165611             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  165612             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  165613           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  165614           0 :      if ( p_operatorPosition != NULL ) 
  165615             :         { 
  165616           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  165617             :         } 
  165618             :        else 
  165619             :         { 
  165620             :           operatorPosition_copy = NULL; 
  165621             :         } 
  165622             :   /* check for a valid pointer and delete if present */ 
  165623           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  165624             :   /* add assignment to result here */ 
  165625           0 :      result->p_operatorPosition = operatorPosition_copy; 
  165626             :   // Copy non-constructor parameter data member (no access function): result->p_expressions
  165627           0 :      SgExpressionPtrList expressions_copy; 
  165628             :   // case: listType for expressions
  165629             :   // case: listType (typeIsPointerToList == false) for expressions
  165630           0 :      SgExpressionPtrList::const_iterator source_expressions_iterator = get_expressions().begin(); 
  165631           0 :      for ( /* empty by design */; source_expressions_iterator != get_expressions().end(); ++source_expressions_iterator) 
  165632             :         { 
  165633           0 :           SgExpression* source_list_element = *source_expressions_iterator; 
  165634           0 :           SgExpression* copy_list_element = NULL; 
  165635           0 :           if (source_list_element != NULL) 
  165636             :              { 
  165637           0 :                copy_list_element = static_cast<SgExpression*>(help.copyAst(*source_expressions_iterator)); 
  165638             :              } 
  165639             :             else 
  165640             :              { 
  165641             :                copy_list_element = NULL; 
  165642             :              } 
  165643           0 :           expressions_copy.push_back(copy_list_element); 
  165644             :         } 
  165645           0 :      result->p_expressions = expressions_copy; 
  165646             :   // case: listType for expressions
  165647             :   // case: listType (typeIsPointerToList == false) for expressions
  165648           0 :      SgExpressionPtrList::const_iterator expressions_iterator = result->get_expressions().begin(); 
  165649           0 :      for ( /* empty by design */; expressions_iterator != result->get_expressions().end(); ++expressions_iterator) 
  165650             :         { 
  165651           0 :           SgExpression* list_element = *expressions_iterator; 
  165652           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  165653             :              { 
  165654           0 :                list_element->set_parent(result); 
  165655             :              } 
  165656             :         } 
  165657             : 
  165658             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165659             : 
  165660             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  165661             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  165662             :   // fixupCopy(result,help);
  165663             : 
  165664             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  165665             :   // the Sg_File_Info objects that are built for the new IR nodes.
  165666           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  165667           0 :      if (locatedNode != NULL)
  165668             :         {
  165669             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  165670           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  165671           0 :           ROSE_ASSERT(start != NULL);
  165672             : #if 0
  165673             :        // Debugging information
  165674             :           if (start->get_parent() == NULL)
  165675             :              {
  165676             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165677             :              }
  165678             : #endif
  165679           0 :           start->set_parent(locatedNode);
  165680           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  165681             : 
  165682           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  165683             : 
  165684             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  165685             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  165686             :        // ROSE_ASSERT(end != NULL);
  165687           0 :           if (end == NULL)
  165688             :              {
  165689           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  165690             :              }
  165691             :             else
  165692             :              {
  165693             : #if 0
  165694             :             // Debugging information
  165695             :                if (end->get_parent() == NULL)
  165696             :                   {
  165697             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165698             :                   }
  165699             : #endif
  165700           0 :                end->set_parent(locatedNode);
  165701           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  165702             :              }
  165703             : 
  165704           0 :           SgExpression* expression = isSgExpression(result);
  165705           0 :           if (isSgExpression(this) != NULL)
  165706             :              {
  165707           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  165708             : 
  165709             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  165710           0 :                if (operatorPosition != NULL)
  165711             :                   {
  165712             : #if 0
  165713             :                  // Debugging information
  165714             :                     if (operatorPosition->get_parent() == NULL)
  165715             :                        {
  165716             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165717             :                        }
  165718             : #endif
  165719           0 :                     operatorPosition->set_parent(expression);
  165720           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  165721             :                   }
  165722             :              }
  165723             :         }
  165724             : 
  165725             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  165726           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  165727           0 :      if (initializedName != NULL)
  165728             :         {
  165729             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  165730           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  165731           0 :           ROSE_ASSERT(start != NULL);
  165732             : #if 0
  165733             :        // Debugging information
  165734             :           if (start->get_parent() == NULL)
  165735             :              {
  165736             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165737             :              }
  165738             : #endif
  165739           0 :           start->set_parent(initializedName);
  165740           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  165741             : 
  165742             : #if 0
  165743             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  165744             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  165745             : 
  165746             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  165747             :        // ROSE_ASSERT(end != NULL);
  165748             :           if (end == NULL)
  165749             :              {
  165750             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  165751             :              }
  165752             :             else
  165753             :              {
  165754             :                if (end->get_parent() == NULL)
  165755             :                   {
  165756             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165757             :                   }
  165758             :                end->set_parent(initializedName);
  165759             :                ROSE_ASSERT(end->get_parent() != NULL);
  165760             :              }
  165761             : #endif
  165762             :         }
  165763             : 
  165764             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  165765           0 :      help.insertCopiedNodePair(this,result);
  165766             : 
  165767             :   // printf ("End of copy SgTupleExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  165768             : 
  165769             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  165770             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  165771           0 :      help.decrementDepth();
  165772             : 
  165773             :   // Test if this is the root of the copy!
  165774           0 :      if (help.get_depth() == 0)
  165775             :         {
  165776             :        // This is the original calling node.
  165777             : 
  165778             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  165779             :        // printf ("Calling SgTupleExp::fixupCopy() (from root of AST being copied) \n");
  165780             : #if ALT_FIXUP_COPY
  165781             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  165782           0 :           fixupCopy_scopes (result,help);
  165783           0 :           fixupCopy_symbols (result,help);
  165784           0 :           fixupCopy_references (result,help);
  165785             : #else
  165786             :           fixupCopy(result,help);
  165787             : #endif
  165788             :        // Allow this to be called recursively, so accumulate the state.
  165789             :        // Also, clear the state in the SgCopyHelp object.
  165790             :        // help.clearState();
  165791             :         }
  165792             : 
  165793           0 :      return result;
  165794             :    }
  165795             : 
  165796             : 
  165797             : /* #line 165798 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  165798             : 
  165799             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165800             : 
  165801           0 : SgNode* SgMatrixExp::copy ( SgCopyHelp& help) const
  165802             :    {
  165803           0 :      SgMatrixExp* result = NULL;
  165804             : 
  165805             :   // printf ("Copy SgMatrixExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  165806             : 
  165807             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  165808             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  165809             :   // The default value of the depth is 0, so after this call the depth is 1!
  165810           0 :      help.incrementDepth();
  165811             : 
  165812             : #if 0
  165813             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  165814             :   // but it is not generally true that things can only be copied once!
  165815             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  165816             :   // AstAttribute* existingAttribute = const_cast<SgMatrixExp*>(this)->attribute["copied"];
  165817             :      bool previouslyCopied = const_cast<SgMatrixExp*>(this)->attribute.exists("copied");
  165818             :      if (previouslyCopied == true)
  165819             :         {
  165820             :           this->get_file_info()->display("Called from copy SgMatrixExp: debug");
  165821             :         }
  165822             :      ROSE_ASSERT(previouslyCopied == false);
  165823             : 
  165824             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  165825             :      AstAttribute* newAttribute = new AstAttribute();
  165826             :      ROSE_ASSERT(newAttribute != NULL);
  165827             : 
  165828             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  165829             :      const_cast<SgMatrixExp*>(this)->attribute.add("copied",newAttribute);
  165830             : #endif
  165831             : 
  165832             :   // Copy data members from base classes
  165833             :   // Copy constructor parameter data member: startOfConstruct_copy
  165834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  165835             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  165836           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  165837           0 :      if ( p_startOfConstruct != NULL ) 
  165838             :         { 
  165839           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  165840             :         } 
  165841             :        else 
  165842             :         { 
  165843             :           startOfConstruct_copy = NULL; 
  165844             :         } 
  165845             :  
  165846             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165847             : 
  165848             :   // Build an empty copy of this object (will be filled in, but 
  165849             :   // the parent can't be set and must be set by the caller)
  165850           0 :      result = new SgMatrixExp(  startOfConstruct_copy );
  165851           0 :      ROSE_ASSERT(result != NULL);
  165852             : 
  165853             :   // Copy data members of "this" class
  165854             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  165855             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  165856             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  165857           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  165858           0 :      if ( p_endOfConstruct != NULL ) 
  165859             :         { 
  165860           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  165861             :         } 
  165862             :        else 
  165863             :         { 
  165864             :           endOfConstruct_copy = NULL; 
  165865             :         } 
  165866             :   /* check for a valid pointer and delete if present */ 
  165867           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  165868             :   /* add assignment to result here */ 
  165869           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  165870             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  165871             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  165872             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  165873           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  165874           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  165875             :         { 
  165876           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  165877             :         } 
  165878             :        else 
  165879             :         { 
  165880             :           attachedPreprocessingInfoPtr_copy = NULL; 
  165881             :         } 
  165882             :   /* check for a valid pointer and delete if present */ 
  165883           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  165884             :   /* add assignment to result here */ 
  165885           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  165886             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  165887             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  165888             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  165889           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  165890           0 :      if ( p_attributeMechanism != NULL ) 
  165891             :         { 
  165892           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  165893             :         } 
  165894             :        else 
  165895             :         { 
  165896             :           attributeMechanism_copy = NULL; 
  165897             :         } 
  165898             :   /* check for a valid pointer and delete if present */ 
  165899           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  165900             :   /* add assignment to result here */ 
  165901           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  165902             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  165903             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  165904             :   // case: toBeCopied == COPY_DATA for need_paren
  165905           0 :      bool need_paren_copy = p_need_paren; 
  165906           0 :      result->p_need_paren = need_paren_copy; 
  165907             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  165908             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  165909             :   // case: toBeCopied == COPY_DATA for lvalue
  165910           0 :      bool lvalue_copy = p_lvalue; 
  165911           0 :      result->p_lvalue = lvalue_copy; 
  165912             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  165913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  165914             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  165915           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  165916           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  165917             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  165918             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  165919             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  165920           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  165921           0 :      if ( p_operatorPosition != NULL ) 
  165922             :         { 
  165923           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  165924             :         } 
  165925             :        else 
  165926             :         { 
  165927             :           operatorPosition_copy = NULL; 
  165928             :         } 
  165929             :   /* check for a valid pointer and delete if present */ 
  165930           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  165931             :   /* add assignment to result here */ 
  165932           0 :      result->p_operatorPosition = operatorPosition_copy; 
  165933             :   // Copy non-constructor parameter data member (no access function): result->p_expressions
  165934           0 :      SgExpressionPtrList expressions_copy; 
  165935             :   // case: listType for expressions
  165936             :   // case: listType (typeIsPointerToList == false) for expressions
  165937           0 :      SgExpressionPtrList::const_iterator source_expressions_iterator = get_expressions().begin(); 
  165938           0 :      for ( /* empty by design */; source_expressions_iterator != get_expressions().end(); ++source_expressions_iterator) 
  165939             :         { 
  165940           0 :           SgExpression* source_list_element = *source_expressions_iterator; 
  165941           0 :           SgExpression* copy_list_element = NULL; 
  165942           0 :           if (source_list_element != NULL) 
  165943             :              { 
  165944           0 :                copy_list_element = static_cast<SgExpression*>(help.copyAst(*source_expressions_iterator)); 
  165945             :              } 
  165946             :             else 
  165947             :              { 
  165948             :                copy_list_element = NULL; 
  165949             :              } 
  165950           0 :           expressions_copy.push_back(copy_list_element); 
  165951             :         } 
  165952           0 :      result->p_expressions = expressions_copy; 
  165953             :   // case: listType for expressions
  165954             :   // case: listType (typeIsPointerToList == false) for expressions
  165955           0 :      SgExpressionPtrList::const_iterator expressions_iterator = result->get_expressions().begin(); 
  165956           0 :      for ( /* empty by design */; expressions_iterator != result->get_expressions().end(); ++expressions_iterator) 
  165957             :         { 
  165958           0 :           SgExpression* list_element = *expressions_iterator; 
  165959           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  165960             :              { 
  165961           0 :                list_element->set_parent(result); 
  165962             :              } 
  165963             :         } 
  165964             : 
  165965             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  165966             : 
  165967             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  165968             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  165969             :   // fixupCopy(result,help);
  165970             : 
  165971             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  165972             :   // the Sg_File_Info objects that are built for the new IR nodes.
  165973           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  165974           0 :      if (locatedNode != NULL)
  165975             :         {
  165976             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  165977           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  165978           0 :           ROSE_ASSERT(start != NULL);
  165979             : #if 0
  165980             :        // Debugging information
  165981             :           if (start->get_parent() == NULL)
  165982             :              {
  165983             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  165984             :              }
  165985             : #endif
  165986           0 :           start->set_parent(locatedNode);
  165987           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  165988             : 
  165989           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  165990             : 
  165991             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  165992             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  165993             :        // ROSE_ASSERT(end != NULL);
  165994           0 :           if (end == NULL)
  165995             :              {
  165996           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  165997             :              }
  165998             :             else
  165999             :              {
  166000             : #if 0
  166001             :             // Debugging information
  166002             :                if (end->get_parent() == NULL)
  166003             :                   {
  166004             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166005             :                   }
  166006             : #endif
  166007           0 :                end->set_parent(locatedNode);
  166008           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  166009             :              }
  166010             : 
  166011           0 :           SgExpression* expression = isSgExpression(result);
  166012           0 :           if (isSgExpression(this) != NULL)
  166013             :              {
  166014           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  166015             : 
  166016             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  166017           0 :                if (operatorPosition != NULL)
  166018             :                   {
  166019             : #if 0
  166020             :                  // Debugging information
  166021             :                     if (operatorPosition->get_parent() == NULL)
  166022             :                        {
  166023             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166024             :                        }
  166025             : #endif
  166026           0 :                     operatorPosition->set_parent(expression);
  166027           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  166028             :                   }
  166029             :              }
  166030             :         }
  166031             : 
  166032             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  166033           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  166034           0 :      if (initializedName != NULL)
  166035             :         {
  166036             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  166037           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  166038           0 :           ROSE_ASSERT(start != NULL);
  166039             : #if 0
  166040             :        // Debugging information
  166041             :           if (start->get_parent() == NULL)
  166042             :              {
  166043             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166044             :              }
  166045             : #endif
  166046           0 :           start->set_parent(initializedName);
  166047           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  166048             : 
  166049             : #if 0
  166050             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  166051             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  166052             : 
  166053             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  166054             :        // ROSE_ASSERT(end != NULL);
  166055             :           if (end == NULL)
  166056             :              {
  166057             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  166058             :              }
  166059             :             else
  166060             :              {
  166061             :                if (end->get_parent() == NULL)
  166062             :                   {
  166063             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166064             :                   }
  166065             :                end->set_parent(initializedName);
  166066             :                ROSE_ASSERT(end->get_parent() != NULL);
  166067             :              }
  166068             : #endif
  166069             :         }
  166070             : 
  166071             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  166072           0 :      help.insertCopiedNodePair(this,result);
  166073             : 
  166074             :   // printf ("End of copy SgMatrixExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  166075             : 
  166076             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  166077             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  166078           0 :      help.decrementDepth();
  166079             : 
  166080             :   // Test if this is the root of the copy!
  166081           0 :      if (help.get_depth() == 0)
  166082             :         {
  166083             :        // This is the original calling node.
  166084             : 
  166085             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  166086             :        // printf ("Calling SgMatrixExp::fixupCopy() (from root of AST being copied) \n");
  166087             : #if ALT_FIXUP_COPY
  166088             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  166089           0 :           fixupCopy_scopes (result,help);
  166090           0 :           fixupCopy_symbols (result,help);
  166091           0 :           fixupCopy_references (result,help);
  166092             : #else
  166093             :           fixupCopy(result,help);
  166094             : #endif
  166095             :        // Allow this to be called recursively, so accumulate the state.
  166096             :        // Also, clear the state in the SgCopyHelp object.
  166097             :        // help.clearState();
  166098             :         }
  166099             : 
  166100           0 :      return result;
  166101             :    }
  166102             : 
  166103             : 
  166104             : /* #line 166105 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  166105             : 
  166106             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166107             : 
  166108        2415 : SgNode* SgVarRefExp::copy ( SgCopyHelp& help) const
  166109             :    {
  166110        2415 :      SgVarRefExp* result = NULL;
  166111             : 
  166112             :   // printf ("Copy SgVarRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  166113             : 
  166114             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  166115             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  166116             :   // The default value of the depth is 0, so after this call the depth is 1!
  166117        2415 :      help.incrementDepth();
  166118             : 
  166119             : #if 0
  166120             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  166121             :   // but it is not generally true that things can only be copied once!
  166122             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  166123             :   // AstAttribute* existingAttribute = const_cast<SgVarRefExp*>(this)->attribute["copied"];
  166124             :      bool previouslyCopied = const_cast<SgVarRefExp*>(this)->attribute.exists("copied");
  166125             :      if (previouslyCopied == true)
  166126             :         {
  166127             :           this->get_file_info()->display("Called from copy SgVarRefExp: debug");
  166128             :         }
  166129             :      ROSE_ASSERT(previouslyCopied == false);
  166130             : 
  166131             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  166132             :      AstAttribute* newAttribute = new AstAttribute();
  166133             :      ROSE_ASSERT(newAttribute != NULL);
  166134             : 
  166135             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  166136             :      const_cast<SgVarRefExp*>(this)->attribute.add("copied",newAttribute);
  166137             : #endif
  166138             : 
  166139             :   // Copy data members from base classes
  166140             :   // Copy constructor parameter data member: startOfConstruct_copy
  166141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  166142             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  166143        2415 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  166144        2415 :      if ( p_startOfConstruct != NULL ) 
  166145             :         { 
  166146        2415 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  166147             :         } 
  166148             :        else 
  166149             :         { 
  166150             :           startOfConstruct_copy = NULL; 
  166151             :         } 
  166152             :   // Copy constructor parameter data member: symbol_copy
  166153             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol
  166154             :   // case: toBeCopied == COPY_DATA for symbol
  166155        2415 :      SgVariableSymbol* symbol_copy = p_symbol; 
  166156             :  
  166157             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166158             : 
  166159             :   // Build an empty copy of this object (will be filled in, but 
  166160             :   // the parent can't be set and must be set by the caller)
  166161        2415 :      result = new SgVarRefExp(  startOfConstruct_copy, symbol_copy );
  166162        2415 :      ROSE_ASSERT(result != NULL);
  166163             : 
  166164             :   // Copy data members of "this" class
  166165             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  166166             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  166167             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  166168        2415 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  166169        2415 :      if ( p_endOfConstruct != NULL ) 
  166170             :         { 
  166171        2415 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  166172             :         } 
  166173             :        else 
  166174             :         { 
  166175             :           endOfConstruct_copy = NULL; 
  166176             :         } 
  166177             :   /* check for a valid pointer and delete if present */ 
  166178        2415 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  166179             :   /* add assignment to result here */ 
  166180        2415 :      result->p_endOfConstruct = endOfConstruct_copy; 
  166181             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  166182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  166183             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  166184        2415 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  166185        2415 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  166186             :         { 
  166187           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  166188             :         } 
  166189             :        else 
  166190             :         { 
  166191             :           attachedPreprocessingInfoPtr_copy = NULL; 
  166192             :         } 
  166193             :   /* check for a valid pointer and delete if present */ 
  166194        2415 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  166195             :   /* add assignment to result here */ 
  166196        2415 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  166197             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  166198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  166199             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  166200        2415 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  166201        2415 :      if ( p_attributeMechanism != NULL ) 
  166202             :         { 
  166203           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  166204             :         } 
  166205             :        else 
  166206             :         { 
  166207             :           attributeMechanism_copy = NULL; 
  166208             :         } 
  166209             :   /* check for a valid pointer and delete if present */ 
  166210        2415 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  166211             :   /* add assignment to result here */ 
  166212        2415 :      result->p_attributeMechanism = attributeMechanism_copy; 
  166213             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  166214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  166215             :   // case: toBeCopied == COPY_DATA for need_paren
  166216        2415 :      bool need_paren_copy = p_need_paren; 
  166217        2415 :      result->p_need_paren = need_paren_copy; 
  166218             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  166219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  166220             :   // case: toBeCopied == COPY_DATA for lvalue
  166221        2415 :      bool lvalue_copy = p_lvalue; 
  166222        2415 :      result->p_lvalue = lvalue_copy; 
  166223             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  166224             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  166225             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  166226        2415 :      bool global_qualified_name_copy = p_global_qualified_name; 
  166227        2415 :      result->p_global_qualified_name = global_qualified_name_copy; 
  166228             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  166229             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  166230             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  166231        2415 :      Sg_File_Info* operatorPosition_copy = NULL; 
  166232        2415 :      if ( p_operatorPosition != NULL ) 
  166233             :         { 
  166234        2415 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  166235             :         } 
  166236             :        else 
  166237             :         { 
  166238             :           operatorPosition_copy = NULL; 
  166239             :         } 
  166240             :   /* check for a valid pointer and delete if present */ 
  166241        2415 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  166242             :   /* add assignment to result here */ 
  166243        2415 :      result->p_operatorPosition = operatorPosition_copy; 
  166244             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  166245             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  166246             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  166247        2415 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  166248        2415 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  166249             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  166250             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  166251             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  166252        2415 :      int name_qualification_length_copy = p_name_qualification_length; 
  166253        2415 :      result->p_name_qualification_length = name_qualification_length_copy; 
  166254             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  166255             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  166256             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  166257        2415 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  166258        2415 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  166259             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  166260             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  166261             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  166262        2415 :      bool global_qualification_required_copy = p_global_qualification_required; 
  166263        2415 :      result->p_global_qualification_required = global_qualification_required_copy; 
  166264             : 
  166265             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166266             : 
  166267             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  166268             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  166269             :   // fixupCopy(result,help);
  166270             : 
  166271             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  166272             :   // the Sg_File_Info objects that are built for the new IR nodes.
  166273        2415 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  166274        2415 :      if (locatedNode != NULL)
  166275             :         {
  166276             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  166277        2415 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  166278        2415 :           ROSE_ASSERT(start != NULL);
  166279             : #if 0
  166280             :        // Debugging information
  166281             :           if (start->get_parent() == NULL)
  166282             :              {
  166283             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166284             :              }
  166285             : #endif
  166286        2415 :           start->set_parent(locatedNode);
  166287        2415 :           ROSE_ASSERT(start->get_parent() != NULL);
  166288             : 
  166289        2415 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  166290             : 
  166291             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  166292             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  166293             :        // ROSE_ASSERT(end != NULL);
  166294        2415 :           if (end == NULL)
  166295             :              {
  166296           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  166297             :              }
  166298             :             else
  166299             :              {
  166300             : #if 0
  166301             :             // Debugging information
  166302             :                if (end->get_parent() == NULL)
  166303             :                   {
  166304             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166305             :                   }
  166306             : #endif
  166307        2415 :                end->set_parent(locatedNode);
  166308        2415 :                ROSE_ASSERT(end->get_parent() != NULL);
  166309             :              }
  166310             : 
  166311        2415 :           SgExpression* expression = isSgExpression(result);
  166312        2415 :           if (isSgExpression(this) != NULL)
  166313             :              {
  166314        2415 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  166315             : 
  166316             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  166317        2415 :                if (operatorPosition != NULL)
  166318             :                   {
  166319             : #if 0
  166320             :                  // Debugging information
  166321             :                     if (operatorPosition->get_parent() == NULL)
  166322             :                        {
  166323             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166324             :                        }
  166325             : #endif
  166326        2415 :                     operatorPosition->set_parent(expression);
  166327        2415 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  166328             :                   }
  166329             :              }
  166330             :         }
  166331             : 
  166332             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  166333        2415 :      SgInitializedName* initializedName = isSgInitializedName(result);
  166334        2415 :      if (initializedName != NULL)
  166335             :         {
  166336             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  166337           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  166338           0 :           ROSE_ASSERT(start != NULL);
  166339             : #if 0
  166340             :        // Debugging information
  166341             :           if (start->get_parent() == NULL)
  166342             :              {
  166343             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166344             :              }
  166345             : #endif
  166346           0 :           start->set_parent(initializedName);
  166347           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  166348             : 
  166349             : #if 0
  166350             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  166351             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  166352             : 
  166353             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  166354             :        // ROSE_ASSERT(end != NULL);
  166355             :           if (end == NULL)
  166356             :              {
  166357             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  166358             :              }
  166359             :             else
  166360             :              {
  166361             :                if (end->get_parent() == NULL)
  166362             :                   {
  166363             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166364             :                   }
  166365             :                end->set_parent(initializedName);
  166366             :                ROSE_ASSERT(end->get_parent() != NULL);
  166367             :              }
  166368             : #endif
  166369             :         }
  166370             : 
  166371             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  166372        2415 :      help.insertCopiedNodePair(this,result);
  166373             : 
  166374             :   // printf ("End of copy SgVarRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  166375             : 
  166376             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  166377             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  166378        2415 :      help.decrementDepth();
  166379             : 
  166380             :   // Test if this is the root of the copy!
  166381        2415 :      if (help.get_depth() == 0)
  166382             :         {
  166383             :        // This is the original calling node.
  166384             : 
  166385             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  166386             :        // printf ("Calling SgVarRefExp::fixupCopy() (from root of AST being copied) \n");
  166387             : #if ALT_FIXUP_COPY
  166388             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  166389         154 :           fixupCopy_scopes (result,help);
  166390         154 :           fixupCopy_symbols (result,help);
  166391         154 :           fixupCopy_references (result,help);
  166392             : #else
  166393             :           fixupCopy(result,help);
  166394             : #endif
  166395             :        // Allow this to be called recursively, so accumulate the state.
  166396             :        // Also, clear the state in the SgCopyHelp object.
  166397             :        // help.clearState();
  166398             :         }
  166399             : 
  166400        2415 :      return result;
  166401             :    }
  166402             : 
  166403             : 
  166404             : /* #line 166405 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  166405             : 
  166406             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166407             : 
  166408           0 : SgNode* SgClassNameRefExp::copy ( SgCopyHelp& help) const
  166409             :    {
  166410           0 :      SgClassNameRefExp* result = NULL;
  166411             : 
  166412             :   // printf ("Copy SgClassNameRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  166413             : 
  166414             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  166415             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  166416             :   // The default value of the depth is 0, so after this call the depth is 1!
  166417           0 :      help.incrementDepth();
  166418             : 
  166419             : #if 0
  166420             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  166421             :   // but it is not generally true that things can only be copied once!
  166422             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  166423             :   // AstAttribute* existingAttribute = const_cast<SgClassNameRefExp*>(this)->attribute["copied"];
  166424             :      bool previouslyCopied = const_cast<SgClassNameRefExp*>(this)->attribute.exists("copied");
  166425             :      if (previouslyCopied == true)
  166426             :         {
  166427             :           this->get_file_info()->display("Called from copy SgClassNameRefExp: debug");
  166428             :         }
  166429             :      ROSE_ASSERT(previouslyCopied == false);
  166430             : 
  166431             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  166432             :      AstAttribute* newAttribute = new AstAttribute();
  166433             :      ROSE_ASSERT(newAttribute != NULL);
  166434             : 
  166435             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  166436             :      const_cast<SgClassNameRefExp*>(this)->attribute.add("copied",newAttribute);
  166437             : #endif
  166438             : 
  166439             :   // Copy data members from base classes
  166440             :   // Copy constructor parameter data member: startOfConstruct_copy
  166441             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  166442             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  166443           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  166444           0 :      if ( p_startOfConstruct != NULL ) 
  166445             :         { 
  166446           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  166447             :         } 
  166448             :        else 
  166449             :         { 
  166450             :           startOfConstruct_copy = NULL; 
  166451             :         } 
  166452             :   // Copy constructor parameter data member: symbol_copy
  166453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol
  166454             :   // case: toBeCopied == COPY_DATA for symbol
  166455           0 :      SgClassSymbol* symbol_copy = p_symbol; 
  166456             :  
  166457             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166458             : 
  166459             :   // Build an empty copy of this object (will be filled in, but 
  166460             :   // the parent can't be set and must be set by the caller)
  166461           0 :      result = new SgClassNameRefExp(  startOfConstruct_copy, symbol_copy );
  166462           0 :      ROSE_ASSERT(result != NULL);
  166463             : 
  166464             :   // Copy data members of "this" class
  166465             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  166466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  166467             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  166468           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  166469           0 :      if ( p_endOfConstruct != NULL ) 
  166470             :         { 
  166471           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  166472             :         } 
  166473             :        else 
  166474             :         { 
  166475             :           endOfConstruct_copy = NULL; 
  166476             :         } 
  166477             :   /* check for a valid pointer and delete if present */ 
  166478           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  166479             :   /* add assignment to result here */ 
  166480           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  166481             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  166482             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  166483             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  166484           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  166485           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  166486             :         { 
  166487           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  166488             :         } 
  166489             :        else 
  166490             :         { 
  166491             :           attachedPreprocessingInfoPtr_copy = NULL; 
  166492             :         } 
  166493             :   /* check for a valid pointer and delete if present */ 
  166494           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  166495             :   /* add assignment to result here */ 
  166496           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  166497             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  166498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  166499             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  166500           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  166501           0 :      if ( p_attributeMechanism != NULL ) 
  166502             :         { 
  166503           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  166504             :         } 
  166505             :        else 
  166506             :         { 
  166507             :           attributeMechanism_copy = NULL; 
  166508             :         } 
  166509             :   /* check for a valid pointer and delete if present */ 
  166510           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  166511             :   /* add assignment to result here */ 
  166512           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  166513             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  166514             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  166515             :   // case: toBeCopied == COPY_DATA for need_paren
  166516           0 :      bool need_paren_copy = p_need_paren; 
  166517           0 :      result->p_need_paren = need_paren_copy; 
  166518             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  166519             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  166520             :   // case: toBeCopied == COPY_DATA for lvalue
  166521           0 :      bool lvalue_copy = p_lvalue; 
  166522           0 :      result->p_lvalue = lvalue_copy; 
  166523             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  166524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  166525             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  166526           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  166527           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  166528             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  166529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  166530             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  166531           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  166532           0 :      if ( p_operatorPosition != NULL ) 
  166533             :         { 
  166534           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  166535             :         } 
  166536             :        else 
  166537             :         { 
  166538             :           operatorPosition_copy = NULL; 
  166539             :         } 
  166540             :   /* check for a valid pointer and delete if present */ 
  166541           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  166542             :   /* add assignment to result here */ 
  166543           0 :      result->p_operatorPosition = operatorPosition_copy; 
  166544             : 
  166545             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166546             : 
  166547             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  166548             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  166549             :   // fixupCopy(result,help);
  166550             : 
  166551             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  166552             :   // the Sg_File_Info objects that are built for the new IR nodes.
  166553           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  166554           0 :      if (locatedNode != NULL)
  166555             :         {
  166556             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  166557           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  166558           0 :           ROSE_ASSERT(start != NULL);
  166559             : #if 0
  166560             :        // Debugging information
  166561             :           if (start->get_parent() == NULL)
  166562             :              {
  166563             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166564             :              }
  166565             : #endif
  166566           0 :           start->set_parent(locatedNode);
  166567           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  166568             : 
  166569           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  166570             : 
  166571             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  166572             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  166573             :        // ROSE_ASSERT(end != NULL);
  166574           0 :           if (end == NULL)
  166575             :              {
  166576           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  166577             :              }
  166578             :             else
  166579             :              {
  166580             : #if 0
  166581             :             // Debugging information
  166582             :                if (end->get_parent() == NULL)
  166583             :                   {
  166584             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166585             :                   }
  166586             : #endif
  166587           0 :                end->set_parent(locatedNode);
  166588           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  166589             :              }
  166590             : 
  166591           0 :           SgExpression* expression = isSgExpression(result);
  166592           0 :           if (isSgExpression(this) != NULL)
  166593             :              {
  166594           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  166595             : 
  166596             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  166597           0 :                if (operatorPosition != NULL)
  166598             :                   {
  166599             : #if 0
  166600             :                  // Debugging information
  166601             :                     if (operatorPosition->get_parent() == NULL)
  166602             :                        {
  166603             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166604             :                        }
  166605             : #endif
  166606           0 :                     operatorPosition->set_parent(expression);
  166607           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  166608             :                   }
  166609             :              }
  166610             :         }
  166611             : 
  166612             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  166613           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  166614           0 :      if (initializedName != NULL)
  166615             :         {
  166616             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  166617           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  166618           0 :           ROSE_ASSERT(start != NULL);
  166619             : #if 0
  166620             :        // Debugging information
  166621             :           if (start->get_parent() == NULL)
  166622             :              {
  166623             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166624             :              }
  166625             : #endif
  166626           0 :           start->set_parent(initializedName);
  166627           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  166628             : 
  166629             : #if 0
  166630             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  166631             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  166632             : 
  166633             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  166634             :        // ROSE_ASSERT(end != NULL);
  166635             :           if (end == NULL)
  166636             :              {
  166637             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  166638             :              }
  166639             :             else
  166640             :              {
  166641             :                if (end->get_parent() == NULL)
  166642             :                   {
  166643             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166644             :                   }
  166645             :                end->set_parent(initializedName);
  166646             :                ROSE_ASSERT(end->get_parent() != NULL);
  166647             :              }
  166648             : #endif
  166649             :         }
  166650             : 
  166651             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  166652           0 :      help.insertCopiedNodePair(this,result);
  166653             : 
  166654             :   // printf ("End of copy SgClassNameRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  166655             : 
  166656             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  166657             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  166658           0 :      help.decrementDepth();
  166659             : 
  166660             :   // Test if this is the root of the copy!
  166661           0 :      if (help.get_depth() == 0)
  166662             :         {
  166663             :        // This is the original calling node.
  166664             : 
  166665             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  166666             :        // printf ("Calling SgClassNameRefExp::fixupCopy() (from root of AST being copied) \n");
  166667             : #if ALT_FIXUP_COPY
  166668             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  166669           0 :           fixupCopy_scopes (result,help);
  166670           0 :           fixupCopy_symbols (result,help);
  166671           0 :           fixupCopy_references (result,help);
  166672             : #else
  166673             :           fixupCopy(result,help);
  166674             : #endif
  166675             :        // Allow this to be called recursively, so accumulate the state.
  166676             :        // Also, clear the state in the SgCopyHelp object.
  166677             :        // help.clearState();
  166678             :         }
  166679             : 
  166680           0 :      return result;
  166681             :    }
  166682             : 
  166683             : 
  166684             : /* #line 166685 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  166685             : 
  166686             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166687             : 
  166688         205 : SgNode* SgFunctionRefExp::copy ( SgCopyHelp& help) const
  166689             :    {
  166690         205 :      SgFunctionRefExp* result = NULL;
  166691             : 
  166692             :   // printf ("Copy SgFunctionRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  166693             : 
  166694             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  166695             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  166696             :   // The default value of the depth is 0, so after this call the depth is 1!
  166697         205 :      help.incrementDepth();
  166698             : 
  166699             : #if 0
  166700             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  166701             :   // but it is not generally true that things can only be copied once!
  166702             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  166703             :   // AstAttribute* existingAttribute = const_cast<SgFunctionRefExp*>(this)->attribute["copied"];
  166704             :      bool previouslyCopied = const_cast<SgFunctionRefExp*>(this)->attribute.exists("copied");
  166705             :      if (previouslyCopied == true)
  166706             :         {
  166707             :           this->get_file_info()->display("Called from copy SgFunctionRefExp: debug");
  166708             :         }
  166709             :      ROSE_ASSERT(previouslyCopied == false);
  166710             : 
  166711             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  166712             :      AstAttribute* newAttribute = new AstAttribute();
  166713             :      ROSE_ASSERT(newAttribute != NULL);
  166714             : 
  166715             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  166716             :      const_cast<SgFunctionRefExp*>(this)->attribute.add("copied",newAttribute);
  166717             : #endif
  166718             : 
  166719             :   // Copy data members from base classes
  166720             :   // Copy constructor parameter data member: startOfConstruct_copy
  166721             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  166722             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  166723         205 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  166724         205 :      if ( p_startOfConstruct != NULL ) 
  166725             :         { 
  166726         205 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  166727             :         } 
  166728             :        else 
  166729             :         { 
  166730             :           startOfConstruct_copy = NULL; 
  166731             :         } 
  166732             :   // Copy constructor parameter data member: symbol_i_copy
  166733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol_i
  166734             :   // case: toBeCopied == COPY_DATA for symbol_i
  166735         205 :      SgFunctionSymbol* symbol_i_copy = p_symbol_i; 
  166736             :   // Copy constructor parameter data member: function_type_copy
  166737             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for function_type
  166738             :   // case: toBeCopied == COPY_DATA for function_type
  166739         205 :      SgFunctionType* function_type_copy = p_function_type; 
  166740             :  
  166741             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166742             : 
  166743             :   // Build an empty copy of this object (will be filled in, but 
  166744             :   // the parent can't be set and must be set by the caller)
  166745         205 :      result = new SgFunctionRefExp(  startOfConstruct_copy, symbol_i_copy, function_type_copy );
  166746         205 :      ROSE_ASSERT(result != NULL);
  166747             : 
  166748             :   // Copy data members of "this" class
  166749             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  166750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  166751             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  166752         205 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  166753         205 :      if ( p_endOfConstruct != NULL ) 
  166754             :         { 
  166755         205 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  166756             :         } 
  166757             :        else 
  166758             :         { 
  166759             :           endOfConstruct_copy = NULL; 
  166760             :         } 
  166761             :   /* check for a valid pointer and delete if present */ 
  166762         205 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  166763             :   /* add assignment to result here */ 
  166764         205 :      result->p_endOfConstruct = endOfConstruct_copy; 
  166765             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  166766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  166767             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  166768         205 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  166769         205 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  166770             :         { 
  166771           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  166772             :         } 
  166773             :        else 
  166774             :         { 
  166775             :           attachedPreprocessingInfoPtr_copy = NULL; 
  166776             :         } 
  166777             :   /* check for a valid pointer and delete if present */ 
  166778         205 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  166779             :   /* add assignment to result here */ 
  166780         205 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  166781             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  166782             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  166783             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  166784         205 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  166785         205 :      if ( p_attributeMechanism != NULL ) 
  166786             :         { 
  166787           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  166788             :         } 
  166789             :        else 
  166790             :         { 
  166791             :           attributeMechanism_copy = NULL; 
  166792             :         } 
  166793             :   /* check for a valid pointer and delete if present */ 
  166794         205 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  166795             :   /* add assignment to result here */ 
  166796         205 :      result->p_attributeMechanism = attributeMechanism_copy; 
  166797             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  166798             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  166799             :   // case: toBeCopied == COPY_DATA for need_paren
  166800         205 :      bool need_paren_copy = p_need_paren; 
  166801         205 :      result->p_need_paren = need_paren_copy; 
  166802             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  166803             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  166804             :   // case: toBeCopied == COPY_DATA for lvalue
  166805         205 :      bool lvalue_copy = p_lvalue; 
  166806         205 :      result->p_lvalue = lvalue_copy; 
  166807             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  166808             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  166809             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  166810         205 :      bool global_qualified_name_copy = p_global_qualified_name; 
  166811         205 :      result->p_global_qualified_name = global_qualified_name_copy; 
  166812             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  166813             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  166814             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  166815         205 :      Sg_File_Info* operatorPosition_copy = NULL; 
  166816         205 :      if ( p_operatorPosition != NULL ) 
  166817             :         { 
  166818         205 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  166819             :         } 
  166820             :        else 
  166821             :         { 
  166822             :           operatorPosition_copy = NULL; 
  166823             :         } 
  166824             :   /* check for a valid pointer and delete if present */ 
  166825         205 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  166826             :   /* add assignment to result here */ 
  166827         205 :      result->p_operatorPosition = operatorPosition_copy; 
  166828             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  166829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  166830             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  166831         205 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  166832         205 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  166833             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  166834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  166835             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  166836         205 :      int name_qualification_length_copy = p_name_qualification_length; 
  166837         205 :      result->p_name_qualification_length = name_qualification_length_copy; 
  166838             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  166839             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  166840             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  166841         205 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  166842         205 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  166843             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  166844             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  166845             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  166846         205 :      bool global_qualification_required_copy = p_global_qualification_required; 
  166847         205 :      result->p_global_qualification_required = global_qualification_required_copy; 
  166848             : 
  166849             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166850             : 
  166851             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  166852             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  166853             :   // fixupCopy(result,help);
  166854             : 
  166855             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  166856             :   // the Sg_File_Info objects that are built for the new IR nodes.
  166857         205 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  166858         205 :      if (locatedNode != NULL)
  166859             :         {
  166860             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  166861         205 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  166862         205 :           ROSE_ASSERT(start != NULL);
  166863             : #if 0
  166864             :        // Debugging information
  166865             :           if (start->get_parent() == NULL)
  166866             :              {
  166867             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166868             :              }
  166869             : #endif
  166870         205 :           start->set_parent(locatedNode);
  166871         205 :           ROSE_ASSERT(start->get_parent() != NULL);
  166872             : 
  166873         205 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  166874             : 
  166875             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  166876             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  166877             :        // ROSE_ASSERT(end != NULL);
  166878         205 :           if (end == NULL)
  166879             :              {
  166880           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  166881             :              }
  166882             :             else
  166883             :              {
  166884             : #if 0
  166885             :             // Debugging information
  166886             :                if (end->get_parent() == NULL)
  166887             :                   {
  166888             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166889             :                   }
  166890             : #endif
  166891         205 :                end->set_parent(locatedNode);
  166892         205 :                ROSE_ASSERT(end->get_parent() != NULL);
  166893             :              }
  166894             : 
  166895         205 :           SgExpression* expression = isSgExpression(result);
  166896         205 :           if (isSgExpression(this) != NULL)
  166897             :              {
  166898         205 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  166899             : 
  166900             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  166901         205 :                if (operatorPosition != NULL)
  166902             :                   {
  166903             : #if 0
  166904             :                  // Debugging information
  166905             :                     if (operatorPosition->get_parent() == NULL)
  166906             :                        {
  166907             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166908             :                        }
  166909             : #endif
  166910         205 :                     operatorPosition->set_parent(expression);
  166911         205 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  166912             :                   }
  166913             :              }
  166914             :         }
  166915             : 
  166916             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  166917         205 :      SgInitializedName* initializedName = isSgInitializedName(result);
  166918         205 :      if (initializedName != NULL)
  166919             :         {
  166920             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  166921           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  166922           0 :           ROSE_ASSERT(start != NULL);
  166923             : #if 0
  166924             :        // Debugging information
  166925             :           if (start->get_parent() == NULL)
  166926             :              {
  166927             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166928             :              }
  166929             : #endif
  166930           0 :           start->set_parent(initializedName);
  166931           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  166932             : 
  166933             : #if 0
  166934             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  166935             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  166936             : 
  166937             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  166938             :        // ROSE_ASSERT(end != NULL);
  166939             :           if (end == NULL)
  166940             :              {
  166941             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  166942             :              }
  166943             :             else
  166944             :              {
  166945             :                if (end->get_parent() == NULL)
  166946             :                   {
  166947             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  166948             :                   }
  166949             :                end->set_parent(initializedName);
  166950             :                ROSE_ASSERT(end->get_parent() != NULL);
  166951             :              }
  166952             : #endif
  166953             :         }
  166954             : 
  166955             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  166956         205 :      help.insertCopiedNodePair(this,result);
  166957             : 
  166958             :   // printf ("End of copy SgFunctionRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  166959             : 
  166960             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  166961             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  166962         205 :      help.decrementDepth();
  166963             : 
  166964             :   // Test if this is the root of the copy!
  166965         205 :      if (help.get_depth() == 0)
  166966             :         {
  166967             :        // This is the original calling node.
  166968             : 
  166969             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  166970             :        // printf ("Calling SgFunctionRefExp::fixupCopy() (from root of AST being copied) \n");
  166971             : #if ALT_FIXUP_COPY
  166972             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  166973           0 :           fixupCopy_scopes (result,help);
  166974           0 :           fixupCopy_symbols (result,help);
  166975           0 :           fixupCopy_references (result,help);
  166976             : #else
  166977             :           fixupCopy(result,help);
  166978             : #endif
  166979             :        // Allow this to be called recursively, so accumulate the state.
  166980             :        // Also, clear the state in the SgCopyHelp object.
  166981             :        // help.clearState();
  166982             :         }
  166983             : 
  166984         205 :      return result;
  166985             :    }
  166986             : 
  166987             : 
  166988             : /* #line 166989 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  166989             : 
  166990             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  166991             : 
  166992         100 : SgNode* SgMemberFunctionRefExp::copy ( SgCopyHelp& help) const
  166993             :    {
  166994         100 :      SgMemberFunctionRefExp* result = NULL;
  166995             : 
  166996             :   // printf ("Copy SgMemberFunctionRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  166997             : 
  166998             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  166999             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  167000             :   // The default value of the depth is 0, so after this call the depth is 1!
  167001         100 :      help.incrementDepth();
  167002             : 
  167003             : #if 0
  167004             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  167005             :   // but it is not generally true that things can only be copied once!
  167006             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  167007             :   // AstAttribute* existingAttribute = const_cast<SgMemberFunctionRefExp*>(this)->attribute["copied"];
  167008             :      bool previouslyCopied = const_cast<SgMemberFunctionRefExp*>(this)->attribute.exists("copied");
  167009             :      if (previouslyCopied == true)
  167010             :         {
  167011             :           this->get_file_info()->display("Called from copy SgMemberFunctionRefExp: debug");
  167012             :         }
  167013             :      ROSE_ASSERT(previouslyCopied == false);
  167014             : 
  167015             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  167016             :      AstAttribute* newAttribute = new AstAttribute();
  167017             :      ROSE_ASSERT(newAttribute != NULL);
  167018             : 
  167019             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  167020             :      const_cast<SgMemberFunctionRefExp*>(this)->attribute.add("copied",newAttribute);
  167021             : #endif
  167022             : 
  167023             :   // Copy data members from base classes
  167024             :   // Copy constructor parameter data member: startOfConstruct_copy
  167025             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  167026             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  167027         100 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  167028         100 :      if ( p_startOfConstruct != NULL ) 
  167029             :         { 
  167030         100 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  167031             :         } 
  167032             :        else 
  167033             :         { 
  167034             :           startOfConstruct_copy = NULL; 
  167035             :         } 
  167036             :   // Copy constructor parameter data member: symbol_i_copy
  167037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol_i
  167038             :   // case: toBeCopied == COPY_DATA for symbol_i
  167039         100 :      SgMemberFunctionSymbol* symbol_i_copy = p_symbol_i; 
  167040             :   // Copy constructor parameter data member: virtual_call_copy
  167041             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for virtual_call
  167042             :   // case: toBeCopied == COPY_DATA for virtual_call
  167043         100 :      int virtual_call_copy = p_virtual_call; 
  167044             :   // Copy constructor parameter data member: function_type_copy
  167045             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for function_type
  167046             :   // case: toBeCopied == COPY_DATA for function_type
  167047         100 :      SgFunctionType* function_type_copy = p_function_type; 
  167048             :   // Copy constructor parameter data member: need_qualifier_copy
  167049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_qualifier
  167050             :   // case: toBeCopied == COPY_DATA for need_qualifier
  167051         100 :      int need_qualifier_copy = p_need_qualifier; 
  167052             :  
  167053             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167054             : 
  167055             :   // Build an empty copy of this object (will be filled in, but 
  167056             :   // the parent can't be set and must be set by the caller)
  167057         100 :      result = new SgMemberFunctionRefExp(  startOfConstruct_copy, symbol_i_copy, virtual_call_copy, function_type_copy, need_qualifier_copy );
  167058         100 :      ROSE_ASSERT(result != NULL);
  167059             : 
  167060             :   // Copy data members of "this" class
  167061             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  167062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  167063             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  167064         100 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  167065         100 :      if ( p_endOfConstruct != NULL ) 
  167066             :         { 
  167067         100 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  167068             :         } 
  167069             :        else 
  167070             :         { 
  167071             :           endOfConstruct_copy = NULL; 
  167072             :         } 
  167073             :   /* check for a valid pointer and delete if present */ 
  167074         100 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  167075             :   /* add assignment to result here */ 
  167076         100 :      result->p_endOfConstruct = endOfConstruct_copy; 
  167077             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  167078             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  167079             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  167080         100 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  167081         100 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  167082             :         { 
  167083           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  167084             :         } 
  167085             :        else 
  167086             :         { 
  167087             :           attachedPreprocessingInfoPtr_copy = NULL; 
  167088             :         } 
  167089             :   /* check for a valid pointer and delete if present */ 
  167090         100 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  167091             :   /* add assignment to result here */ 
  167092         100 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  167093             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  167094             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  167095             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  167096         100 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  167097         100 :      if ( p_attributeMechanism != NULL ) 
  167098             :         { 
  167099           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  167100             :         } 
  167101             :        else 
  167102             :         { 
  167103             :           attributeMechanism_copy = NULL; 
  167104             :         } 
  167105             :   /* check for a valid pointer and delete if present */ 
  167106         100 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  167107             :   /* add assignment to result here */ 
  167108         100 :      result->p_attributeMechanism = attributeMechanism_copy; 
  167109             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  167110             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  167111             :   // case: toBeCopied == COPY_DATA for need_paren
  167112         100 :      bool need_paren_copy = p_need_paren; 
  167113         100 :      result->p_need_paren = need_paren_copy; 
  167114             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  167115             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  167116             :   // case: toBeCopied == COPY_DATA for lvalue
  167117         100 :      bool lvalue_copy = p_lvalue; 
  167118         100 :      result->p_lvalue = lvalue_copy; 
  167119             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  167120             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  167121             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  167122         100 :      bool global_qualified_name_copy = p_global_qualified_name; 
  167123         100 :      result->p_global_qualified_name = global_qualified_name_copy; 
  167124             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  167125             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  167126             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  167127         100 :      Sg_File_Info* operatorPosition_copy = NULL; 
  167128         100 :      if ( p_operatorPosition != NULL ) 
  167129             :         { 
  167130         100 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  167131             :         } 
  167132             :        else 
  167133             :         { 
  167134             :           operatorPosition_copy = NULL; 
  167135             :         } 
  167136             :   /* check for a valid pointer and delete if present */ 
  167137         100 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  167138             :   /* add assignment to result here */ 
  167139         100 :      result->p_operatorPosition = operatorPosition_copy; 
  167140             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  167141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  167142             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  167143         100 :      int name_qualification_length_copy = p_name_qualification_length; 
  167144         100 :      result->p_name_qualification_length = name_qualification_length_copy; 
  167145             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  167146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  167147             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  167148         100 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  167149         100 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  167150             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  167151             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  167152             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  167153         100 :      bool global_qualification_required_copy = p_global_qualification_required; 
  167154         100 :      result->p_global_qualification_required = global_qualification_required_copy; 
  167155             : 
  167156             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167157             : 
  167158             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  167159             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  167160             :   // fixupCopy(result,help);
  167161             : 
  167162             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  167163             :   // the Sg_File_Info objects that are built for the new IR nodes.
  167164         100 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  167165         100 :      if (locatedNode != NULL)
  167166             :         {
  167167             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  167168         100 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  167169         100 :           ROSE_ASSERT(start != NULL);
  167170             : #if 0
  167171             :        // Debugging information
  167172             :           if (start->get_parent() == NULL)
  167173             :              {
  167174             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167175             :              }
  167176             : #endif
  167177         100 :           start->set_parent(locatedNode);
  167178         100 :           ROSE_ASSERT(start->get_parent() != NULL);
  167179             : 
  167180         100 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  167181             : 
  167182             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  167183             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  167184             :        // ROSE_ASSERT(end != NULL);
  167185         100 :           if (end == NULL)
  167186             :              {
  167187           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  167188             :              }
  167189             :             else
  167190             :              {
  167191             : #if 0
  167192             :             // Debugging information
  167193             :                if (end->get_parent() == NULL)
  167194             :                   {
  167195             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167196             :                   }
  167197             : #endif
  167198         100 :                end->set_parent(locatedNode);
  167199         100 :                ROSE_ASSERT(end->get_parent() != NULL);
  167200             :              }
  167201             : 
  167202         100 :           SgExpression* expression = isSgExpression(result);
  167203         100 :           if (isSgExpression(this) != NULL)
  167204             :              {
  167205         100 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  167206             : 
  167207             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  167208         100 :                if (operatorPosition != NULL)
  167209             :                   {
  167210             : #if 0
  167211             :                  // Debugging information
  167212             :                     if (operatorPosition->get_parent() == NULL)
  167213             :                        {
  167214             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167215             :                        }
  167216             : #endif
  167217         100 :                     operatorPosition->set_parent(expression);
  167218         100 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  167219             :                   }
  167220             :              }
  167221             :         }
  167222             : 
  167223             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  167224         100 :      SgInitializedName* initializedName = isSgInitializedName(result);
  167225         100 :      if (initializedName != NULL)
  167226             :         {
  167227             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  167228           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  167229           0 :           ROSE_ASSERT(start != NULL);
  167230             : #if 0
  167231             :        // Debugging information
  167232             :           if (start->get_parent() == NULL)
  167233             :              {
  167234             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167235             :              }
  167236             : #endif
  167237           0 :           start->set_parent(initializedName);
  167238           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  167239             : 
  167240             : #if 0
  167241             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  167242             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  167243             : 
  167244             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  167245             :        // ROSE_ASSERT(end != NULL);
  167246             :           if (end == NULL)
  167247             :              {
  167248             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  167249             :              }
  167250             :             else
  167251             :              {
  167252             :                if (end->get_parent() == NULL)
  167253             :                   {
  167254             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167255             :                   }
  167256             :                end->set_parent(initializedName);
  167257             :                ROSE_ASSERT(end->get_parent() != NULL);
  167258             :              }
  167259             : #endif
  167260             :         }
  167261             : 
  167262             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  167263         100 :      help.insertCopiedNodePair(this,result);
  167264             : 
  167265             :   // printf ("End of copy SgMemberFunctionRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  167266             : 
  167267             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  167268             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  167269         100 :      help.decrementDepth();
  167270             : 
  167271             :   // Test if this is the root of the copy!
  167272         100 :      if (help.get_depth() == 0)
  167273             :         {
  167274             :        // This is the original calling node.
  167275             : 
  167276             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  167277             :        // printf ("Calling SgMemberFunctionRefExp::fixupCopy() (from root of AST being copied) \n");
  167278             : #if ALT_FIXUP_COPY
  167279             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  167280           0 :           fixupCopy_scopes (result,help);
  167281           0 :           fixupCopy_symbols (result,help);
  167282           0 :           fixupCopy_references (result,help);
  167283             : #else
  167284             :           fixupCopy(result,help);
  167285             : #endif
  167286             :        // Allow this to be called recursively, so accumulate the state.
  167287             :        // Also, clear the state in the SgCopyHelp object.
  167288             :        // help.clearState();
  167289             :         }
  167290             : 
  167291         100 :      return result;
  167292             :    }
  167293             : 
  167294             : 
  167295             : /* #line 167296 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  167296             : 
  167297             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167298             : 
  167299           0 : SgNode* SgValueExp::copy ( SgCopyHelp& help) const
  167300             :    {
  167301           0 :      SgValueExp* result = NULL;
  167302             : 
  167303             :   // printf ("Copy SgValueExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  167304             : 
  167305             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  167306             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  167307             :   // The default value of the depth is 0, so after this call the depth is 1!
  167308           0 :      help.incrementDepth();
  167309             : 
  167310             : #if 0
  167311             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  167312             :   // but it is not generally true that things can only be copied once!
  167313             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  167314             :   // AstAttribute* existingAttribute = const_cast<SgValueExp*>(this)->attribute["copied"];
  167315             :      bool previouslyCopied = const_cast<SgValueExp*>(this)->attribute.exists("copied");
  167316             :      if (previouslyCopied == true)
  167317             :         {
  167318             :           this->get_file_info()->display("Called from copy SgValueExp: debug");
  167319             :         }
  167320             :      ROSE_ASSERT(previouslyCopied == false);
  167321             : 
  167322             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  167323             :      AstAttribute* newAttribute = new AstAttribute();
  167324             :      ROSE_ASSERT(newAttribute != NULL);
  167325             : 
  167326             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  167327             :      const_cast<SgValueExp*>(this)->attribute.add("copied",newAttribute);
  167328             : #endif
  167329             : 
  167330             :   // Copy data members from base classes
  167331             :   // Copy constructor parameter data member: startOfConstruct_copy
  167332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  167333             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  167334           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  167335           0 :      if ( p_startOfConstruct != NULL ) 
  167336             :         { 
  167337           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  167338             :         } 
  167339             :        else 
  167340             :         { 
  167341             :           startOfConstruct_copy = NULL; 
  167342             :         } 
  167343             :  
  167344             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167345             : 
  167346             :   // Build an empty copy of this object (will be filled in, but 
  167347             :   // the parent can't be set and must be set by the caller)
  167348           0 :      result = new SgValueExp(  startOfConstruct_copy );
  167349           0 :      ROSE_ASSERT(result != NULL);
  167350             : 
  167351             :   // Copy data members of "this" class
  167352             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  167353             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  167354             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  167355           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  167356           0 :      if ( p_endOfConstruct != NULL ) 
  167357             :         { 
  167358           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  167359             :         } 
  167360             :        else 
  167361             :         { 
  167362             :           endOfConstruct_copy = NULL; 
  167363             :         } 
  167364             :   /* check for a valid pointer and delete if present */ 
  167365           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  167366             :   /* add assignment to result here */ 
  167367           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  167368             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  167369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  167370             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  167371           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  167372           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  167373             :         { 
  167374           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  167375             :         } 
  167376             :        else 
  167377             :         { 
  167378             :           attachedPreprocessingInfoPtr_copy = NULL; 
  167379             :         } 
  167380             :   /* check for a valid pointer and delete if present */ 
  167381           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  167382             :   /* add assignment to result here */ 
  167383           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  167384             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  167385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  167386             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  167387           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  167388           0 :      if ( p_attributeMechanism != NULL ) 
  167389             :         { 
  167390           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  167391             :         } 
  167392             :        else 
  167393             :         { 
  167394             :           attributeMechanism_copy = NULL; 
  167395             :         } 
  167396             :   /* check for a valid pointer and delete if present */ 
  167397           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  167398             :   /* add assignment to result here */ 
  167399           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  167400             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  167401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  167402             :   // case: toBeCopied == COPY_DATA for need_paren
  167403           0 :      bool need_paren_copy = p_need_paren; 
  167404           0 :      result->p_need_paren = need_paren_copy; 
  167405             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  167406             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  167407             :   // case: toBeCopied == COPY_DATA for lvalue
  167408           0 :      bool lvalue_copy = p_lvalue; 
  167409           0 :      result->p_lvalue = lvalue_copy; 
  167410             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  167411             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  167412             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  167413           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  167414           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  167415             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  167416             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  167417             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  167418           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  167419           0 :      if ( p_operatorPosition != NULL ) 
  167420             :         { 
  167421           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  167422             :         } 
  167423             :        else 
  167424             :         { 
  167425             :           operatorPosition_copy = NULL; 
  167426             :         } 
  167427             :   /* check for a valid pointer and delete if present */ 
  167428           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  167429             :   /* add assignment to result here */ 
  167430           0 :      result->p_operatorPosition = operatorPosition_copy; 
  167431             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  167432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  167433             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  167434           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  167435           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  167436             : 
  167437             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167438             : 
  167439             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  167440             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  167441             :   // fixupCopy(result,help);
  167442             : 
  167443             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  167444             :   // the Sg_File_Info objects that are built for the new IR nodes.
  167445           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  167446           0 :      if (locatedNode != NULL)
  167447             :         {
  167448             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  167449           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  167450           0 :           ROSE_ASSERT(start != NULL);
  167451             : #if 0
  167452             :        // Debugging information
  167453             :           if (start->get_parent() == NULL)
  167454             :              {
  167455             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167456             :              }
  167457             : #endif
  167458           0 :           start->set_parent(locatedNode);
  167459           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  167460             : 
  167461           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  167462             : 
  167463             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  167464             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  167465             :        // ROSE_ASSERT(end != NULL);
  167466           0 :           if (end == NULL)
  167467             :              {
  167468           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  167469             :              }
  167470             :             else
  167471             :              {
  167472             : #if 0
  167473             :             // Debugging information
  167474             :                if (end->get_parent() == NULL)
  167475             :                   {
  167476             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167477             :                   }
  167478             : #endif
  167479           0 :                end->set_parent(locatedNode);
  167480           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  167481             :              }
  167482             : 
  167483           0 :           SgExpression* expression = isSgExpression(result);
  167484           0 :           if (isSgExpression(this) != NULL)
  167485             :              {
  167486           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  167487             : 
  167488             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  167489           0 :                if (operatorPosition != NULL)
  167490             :                   {
  167491             : #if 0
  167492             :                  // Debugging information
  167493             :                     if (operatorPosition->get_parent() == NULL)
  167494             :                        {
  167495             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167496             :                        }
  167497             : #endif
  167498           0 :                     operatorPosition->set_parent(expression);
  167499           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  167500             :                   }
  167501             :              }
  167502             :         }
  167503             : 
  167504             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  167505           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  167506           0 :      if (initializedName != NULL)
  167507             :         {
  167508             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  167509           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  167510           0 :           ROSE_ASSERT(start != NULL);
  167511             : #if 0
  167512             :        // Debugging information
  167513             :           if (start->get_parent() == NULL)
  167514             :              {
  167515             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167516             :              }
  167517             : #endif
  167518           0 :           start->set_parent(initializedName);
  167519           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  167520             : 
  167521             : #if 0
  167522             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  167523             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  167524             : 
  167525             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  167526             :        // ROSE_ASSERT(end != NULL);
  167527             :           if (end == NULL)
  167528             :              {
  167529             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  167530             :              }
  167531             :             else
  167532             :              {
  167533             :                if (end->get_parent() == NULL)
  167534             :                   {
  167535             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167536             :                   }
  167537             :                end->set_parent(initializedName);
  167538             :                ROSE_ASSERT(end->get_parent() != NULL);
  167539             :              }
  167540             : #endif
  167541             :         }
  167542             : 
  167543             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  167544           0 :      help.insertCopiedNodePair(this,result);
  167545             : 
  167546             :   // printf ("End of copy SgValueExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  167547             : 
  167548             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  167549             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  167550           0 :      help.decrementDepth();
  167551             : 
  167552             :   // Test if this is the root of the copy!
  167553           0 :      if (help.get_depth() == 0)
  167554             :         {
  167555             :        // This is the original calling node.
  167556             : 
  167557             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  167558             :        // printf ("Calling SgValueExp::fixupCopy() (from root of AST being copied) \n");
  167559             : #if ALT_FIXUP_COPY
  167560             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  167561           0 :           fixupCopy_scopes (result,help);
  167562           0 :           fixupCopy_symbols (result,help);
  167563           0 :           fixupCopy_references (result,help);
  167564             : #else
  167565             :           fixupCopy(result,help);
  167566             : #endif
  167567             :        // Allow this to be called recursively, so accumulate the state.
  167568             :        // Also, clear the state in the SgCopyHelp object.
  167569             :        // help.clearState();
  167570             :         }
  167571             : 
  167572           0 :      return result;
  167573             :    }
  167574             : 
  167575             : 
  167576             : /* #line 167577 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  167577             : 
  167578             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167579             : 
  167580          36 : SgNode* SgBoolValExp::copy ( SgCopyHelp& help) const
  167581             :    {
  167582          36 :      SgBoolValExp* result = NULL;
  167583             : 
  167584             :   // printf ("Copy SgBoolValExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  167585             : 
  167586             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  167587             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  167588             :   // The default value of the depth is 0, so after this call the depth is 1!
  167589          36 :      help.incrementDepth();
  167590             : 
  167591             : #if 0
  167592             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  167593             :   // but it is not generally true that things can only be copied once!
  167594             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  167595             :   // AstAttribute* existingAttribute = const_cast<SgBoolValExp*>(this)->attribute["copied"];
  167596             :      bool previouslyCopied = const_cast<SgBoolValExp*>(this)->attribute.exists("copied");
  167597             :      if (previouslyCopied == true)
  167598             :         {
  167599             :           this->get_file_info()->display("Called from copy SgBoolValExp: debug");
  167600             :         }
  167601             :      ROSE_ASSERT(previouslyCopied == false);
  167602             : 
  167603             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  167604             :      AstAttribute* newAttribute = new AstAttribute();
  167605             :      ROSE_ASSERT(newAttribute != NULL);
  167606             : 
  167607             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  167608             :      const_cast<SgBoolValExp*>(this)->attribute.add("copied",newAttribute);
  167609             : #endif
  167610             : 
  167611             :   // Copy data members from base classes
  167612             :   // Copy constructor parameter data member: startOfConstruct_copy
  167613             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  167614             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  167615          36 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  167616          36 :      if ( p_startOfConstruct != NULL ) 
  167617             :         { 
  167618          36 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  167619             :         } 
  167620             :        else 
  167621             :         { 
  167622             :           startOfConstruct_copy = NULL; 
  167623             :         } 
  167624             :   // Copy constructor parameter data member: value_copy
  167625             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  167626             :   // case: toBeCopied == COPY_DATA for value
  167627          36 :      int value_copy = p_value; 
  167628             :  
  167629             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167630             : 
  167631             :   // Build an empty copy of this object (will be filled in, but 
  167632             :   // the parent can't be set and must be set by the caller)
  167633          36 :      result = new SgBoolValExp(  startOfConstruct_copy, value_copy );
  167634          36 :      ROSE_ASSERT(result != NULL);
  167635             : 
  167636             :   // Copy data members of "this" class
  167637             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  167638             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  167639             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  167640          36 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  167641          36 :      if ( p_endOfConstruct != NULL ) 
  167642             :         { 
  167643          36 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  167644             :         } 
  167645             :        else 
  167646             :         { 
  167647             :           endOfConstruct_copy = NULL; 
  167648             :         } 
  167649             :   /* check for a valid pointer and delete if present */ 
  167650          36 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  167651             :   /* add assignment to result here */ 
  167652          36 :      result->p_endOfConstruct = endOfConstruct_copy; 
  167653             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  167654             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  167655             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  167656          36 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  167657          36 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  167658             :         { 
  167659           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  167660             :         } 
  167661             :        else 
  167662             :         { 
  167663             :           attachedPreprocessingInfoPtr_copy = NULL; 
  167664             :         } 
  167665             :   /* check for a valid pointer and delete if present */ 
  167666          36 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  167667             :   /* add assignment to result here */ 
  167668          36 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  167669             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  167670             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  167671             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  167672          36 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  167673          36 :      if ( p_attributeMechanism != NULL ) 
  167674             :         { 
  167675           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  167676             :         } 
  167677             :        else 
  167678             :         { 
  167679             :           attributeMechanism_copy = NULL; 
  167680             :         } 
  167681             :   /* check for a valid pointer and delete if present */ 
  167682          36 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  167683             :   /* add assignment to result here */ 
  167684          36 :      result->p_attributeMechanism = attributeMechanism_copy; 
  167685             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  167686             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  167687             :   // case: toBeCopied == COPY_DATA for need_paren
  167688          36 :      bool need_paren_copy = p_need_paren; 
  167689          36 :      result->p_need_paren = need_paren_copy; 
  167690             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  167691             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  167692             :   // case: toBeCopied == COPY_DATA for lvalue
  167693          36 :      bool lvalue_copy = p_lvalue; 
  167694          36 :      result->p_lvalue = lvalue_copy; 
  167695             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  167696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  167697             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  167698          36 :      bool global_qualified_name_copy = p_global_qualified_name; 
  167699          36 :      result->p_global_qualified_name = global_qualified_name_copy; 
  167700             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  167701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  167702             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  167703          36 :      Sg_File_Info* operatorPosition_copy = NULL; 
  167704          36 :      if ( p_operatorPosition != NULL ) 
  167705             :         { 
  167706          36 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  167707             :         } 
  167708             :        else 
  167709             :         { 
  167710             :           operatorPosition_copy = NULL; 
  167711             :         } 
  167712             :   /* check for a valid pointer and delete if present */ 
  167713          36 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  167714             :   /* add assignment to result here */ 
  167715          36 :      result->p_operatorPosition = operatorPosition_copy; 
  167716             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  167717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  167718             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  167719          36 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  167720          36 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  167721             : 
  167722             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167723             : 
  167724             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  167725             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  167726             :   // fixupCopy(result,help);
  167727             : 
  167728             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  167729             :   // the Sg_File_Info objects that are built for the new IR nodes.
  167730          36 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  167731          36 :      if (locatedNode != NULL)
  167732             :         {
  167733             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  167734          36 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  167735          36 :           ROSE_ASSERT(start != NULL);
  167736             : #if 0
  167737             :        // Debugging information
  167738             :           if (start->get_parent() == NULL)
  167739             :              {
  167740             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167741             :              }
  167742             : #endif
  167743          36 :           start->set_parent(locatedNode);
  167744          36 :           ROSE_ASSERT(start->get_parent() != NULL);
  167745             : 
  167746          36 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  167747             : 
  167748             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  167749             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  167750             :        // ROSE_ASSERT(end != NULL);
  167751          36 :           if (end == NULL)
  167752             :              {
  167753           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  167754             :              }
  167755             :             else
  167756             :              {
  167757             : #if 0
  167758             :             // Debugging information
  167759             :                if (end->get_parent() == NULL)
  167760             :                   {
  167761             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167762             :                   }
  167763             : #endif
  167764          36 :                end->set_parent(locatedNode);
  167765          36 :                ROSE_ASSERT(end->get_parent() != NULL);
  167766             :              }
  167767             : 
  167768          36 :           SgExpression* expression = isSgExpression(result);
  167769          36 :           if (isSgExpression(this) != NULL)
  167770             :              {
  167771          36 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  167772             : 
  167773             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  167774          36 :                if (operatorPosition != NULL)
  167775             :                   {
  167776             : #if 0
  167777             :                  // Debugging information
  167778             :                     if (operatorPosition->get_parent() == NULL)
  167779             :                        {
  167780             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167781             :                        }
  167782             : #endif
  167783          36 :                     operatorPosition->set_parent(expression);
  167784          36 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  167785             :                   }
  167786             :              }
  167787             :         }
  167788             : 
  167789             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  167790          36 :      SgInitializedName* initializedName = isSgInitializedName(result);
  167791          36 :      if (initializedName != NULL)
  167792             :         {
  167793             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  167794           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  167795           0 :           ROSE_ASSERT(start != NULL);
  167796             : #if 0
  167797             :        // Debugging information
  167798             :           if (start->get_parent() == NULL)
  167799             :              {
  167800             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167801             :              }
  167802             : #endif
  167803           0 :           start->set_parent(initializedName);
  167804           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  167805             : 
  167806             : #if 0
  167807             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  167808             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  167809             : 
  167810             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  167811             :        // ROSE_ASSERT(end != NULL);
  167812             :           if (end == NULL)
  167813             :              {
  167814             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  167815             :              }
  167816             :             else
  167817             :              {
  167818             :                if (end->get_parent() == NULL)
  167819             :                   {
  167820             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  167821             :                   }
  167822             :                end->set_parent(initializedName);
  167823             :                ROSE_ASSERT(end->get_parent() != NULL);
  167824             :              }
  167825             : #endif
  167826             :         }
  167827             : 
  167828             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  167829          36 :      help.insertCopiedNodePair(this,result);
  167830             : 
  167831             :   // printf ("End of copy SgBoolValExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  167832             : 
  167833             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  167834             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  167835          36 :      help.decrementDepth();
  167836             : 
  167837             :   // Test if this is the root of the copy!
  167838          36 :      if (help.get_depth() == 0)
  167839             :         {
  167840             :        // This is the original calling node.
  167841             : 
  167842             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  167843             :        // printf ("Calling SgBoolValExp::fixupCopy() (from root of AST being copied) \n");
  167844             : #if ALT_FIXUP_COPY
  167845             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  167846           0 :           fixupCopy_scopes (result,help);
  167847           0 :           fixupCopy_symbols (result,help);
  167848           0 :           fixupCopy_references (result,help);
  167849             : #else
  167850             :           fixupCopy(result,help);
  167851             : #endif
  167852             :        // Allow this to be called recursively, so accumulate the state.
  167853             :        // Also, clear the state in the SgCopyHelp object.
  167854             :        // help.clearState();
  167855             :         }
  167856             : 
  167857          36 :      return result;
  167858             :    }
  167859             : 
  167860             : 
  167861             : /* #line 167862 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  167862             : 
  167863             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167864             : 
  167865           8 : SgNode* SgStringVal::copy ( SgCopyHelp& help) const
  167866             :    {
  167867           8 :      SgStringVal* result = NULL;
  167868             : 
  167869             :   // printf ("Copy SgStringVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  167870             : 
  167871             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  167872             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  167873             :   // The default value of the depth is 0, so after this call the depth is 1!
  167874           8 :      help.incrementDepth();
  167875             : 
  167876             : #if 0
  167877             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  167878             :   // but it is not generally true that things can only be copied once!
  167879             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  167880             :   // AstAttribute* existingAttribute = const_cast<SgStringVal*>(this)->attribute["copied"];
  167881             :      bool previouslyCopied = const_cast<SgStringVal*>(this)->attribute.exists("copied");
  167882             :      if (previouslyCopied == true)
  167883             :         {
  167884             :           this->get_file_info()->display("Called from copy SgStringVal: debug");
  167885             :         }
  167886             :      ROSE_ASSERT(previouslyCopied == false);
  167887             : 
  167888             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  167889             :      AstAttribute* newAttribute = new AstAttribute();
  167890             :      ROSE_ASSERT(newAttribute != NULL);
  167891             : 
  167892             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  167893             :      const_cast<SgStringVal*>(this)->attribute.add("copied",newAttribute);
  167894             : #endif
  167895             : 
  167896             :   // Copy data members from base classes
  167897             :   // Copy constructor parameter data member: startOfConstruct_copy
  167898             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  167899             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  167900           8 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  167901           8 :      if ( p_startOfConstruct != NULL ) 
  167902             :         { 
  167903           8 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  167904             :         } 
  167905             :        else 
  167906             :         { 
  167907             :           startOfConstruct_copy = NULL; 
  167908             :         } 
  167909             :   // Copy constructor parameter data member: value_copy
  167910             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  167911             :   // case: toBeCopied == COPY_DATA for value
  167912           8 :      std::string value_copy = p_value; 
  167913             :  
  167914             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  167915             : 
  167916             :   // Build an empty copy of this object (will be filled in, but 
  167917             :   // the parent can't be set and must be set by the caller)
  167918          16 :      result = new SgStringVal(  startOfConstruct_copy, value_copy );
  167919           8 :      ROSE_ASSERT(result != NULL);
  167920             : 
  167921             :   // Copy data members of "this" class
  167922             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  167923             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  167924             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  167925           8 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  167926           8 :      if ( p_endOfConstruct != NULL ) 
  167927             :         { 
  167928           8 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  167929             :         } 
  167930             :        else 
  167931             :         { 
  167932             :           endOfConstruct_copy = NULL; 
  167933             :         } 
  167934             :   /* check for a valid pointer and delete if present */ 
  167935           8 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  167936             :   /* add assignment to result here */ 
  167937           8 :      result->p_endOfConstruct = endOfConstruct_copy; 
  167938             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  167939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  167940             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  167941           8 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  167942           8 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  167943             :         { 
  167944           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  167945             :         } 
  167946             :        else 
  167947             :         { 
  167948             :           attachedPreprocessingInfoPtr_copy = NULL; 
  167949             :         } 
  167950             :   /* check for a valid pointer and delete if present */ 
  167951           8 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  167952             :   /* add assignment to result here */ 
  167953           8 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  167954             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  167955             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  167956             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  167957           8 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  167958           8 :      if ( p_attributeMechanism != NULL ) 
  167959             :         { 
  167960           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  167961             :         } 
  167962             :        else 
  167963             :         { 
  167964             :           attributeMechanism_copy = NULL; 
  167965             :         } 
  167966             :   /* check for a valid pointer and delete if present */ 
  167967           8 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  167968             :   /* add assignment to result here */ 
  167969           8 :      result->p_attributeMechanism = attributeMechanism_copy; 
  167970             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  167971             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  167972             :   // case: toBeCopied == COPY_DATA for need_paren
  167973           8 :      bool need_paren_copy = p_need_paren; 
  167974           8 :      result->p_need_paren = need_paren_copy; 
  167975             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  167976             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  167977             :   // case: toBeCopied == COPY_DATA for lvalue
  167978           8 :      bool lvalue_copy = p_lvalue; 
  167979           8 :      result->p_lvalue = lvalue_copy; 
  167980             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  167981             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  167982             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  167983           8 :      bool global_qualified_name_copy = p_global_qualified_name; 
  167984           8 :      result->p_global_qualified_name = global_qualified_name_copy; 
  167985             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  167986             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  167987             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  167988           8 :      Sg_File_Info* operatorPosition_copy = NULL; 
  167989           8 :      if ( p_operatorPosition != NULL ) 
  167990             :         { 
  167991           8 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  167992             :         } 
  167993             :        else 
  167994             :         { 
  167995             :           operatorPosition_copy = NULL; 
  167996             :         } 
  167997             :   /* check for a valid pointer and delete if present */ 
  167998           8 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  167999             :   /* add assignment to result here */ 
  168000           8 :      result->p_operatorPosition = operatorPosition_copy; 
  168001             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  168002             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  168003             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  168004           8 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  168005           8 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  168006             :   // Copy non-constructor parameter data member (access function): wcharString_copy
  168007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for wcharString
  168008             :   // case: toBeCopied == COPY_DATA for wcharString
  168009           8 :      bool wcharString_copy = p_wcharString; 
  168010           8 :      result->p_wcharString = wcharString_copy; 
  168011             :   // Copy non-constructor parameter data member (access function): stringDelimiter_copy
  168012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for stringDelimiter
  168013             :   // case: toBeCopied == COPY_DATA for stringDelimiter
  168014           8 :      char stringDelimiter_copy = p_stringDelimiter; 
  168015           8 :      result->p_stringDelimiter = stringDelimiter_copy; 
  168016             :   // Copy non-constructor parameter data member (access function): is16bitString_copy
  168017             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is16bitString
  168018             :   // case: toBeCopied == COPY_DATA for is16bitString
  168019           8 :      bool is16bitString_copy = p_is16bitString; 
  168020           8 :      result->p_is16bitString = is16bitString_copy; 
  168021             :   // Copy non-constructor parameter data member (access function): is32bitString_copy
  168022             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is32bitString
  168023             :   // case: toBeCopied == COPY_DATA for is32bitString
  168024           8 :      bool is32bitString_copy = p_is32bitString; 
  168025           8 :      result->p_is32bitString = is32bitString_copy; 
  168026             :   // Copy non-constructor parameter data member (access function): isRawString_copy
  168027             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isRawString
  168028             :   // case: toBeCopied == COPY_DATA for isRawString
  168029           8 :      bool isRawString_copy = p_isRawString; 
  168030           8 :      result->p_isRawString = isRawString_copy; 
  168031             :   // Copy non-constructor parameter data member (access function): raw_string_value_copy
  168032             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for raw_string_value
  168033             :   // case: toBeCopied == COPY_DATA for raw_string_value
  168034          16 :      std::string raw_string_value_copy = p_raw_string_value; 
  168035           8 :      result->p_raw_string_value = raw_string_value_copy; 
  168036             : 
  168037             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168038             : 
  168039             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  168040             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  168041             :   // fixupCopy(result,help);
  168042             : 
  168043             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  168044             :   // the Sg_File_Info objects that are built for the new IR nodes.
  168045           8 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  168046           8 :      if (locatedNode != NULL)
  168047             :         {
  168048             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  168049           8 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  168050           8 :           ROSE_ASSERT(start != NULL);
  168051             : #if 0
  168052             :        // Debugging information
  168053             :           if (start->get_parent() == NULL)
  168054             :              {
  168055             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168056             :              }
  168057             : #endif
  168058           8 :           start->set_parent(locatedNode);
  168059           8 :           ROSE_ASSERT(start->get_parent() != NULL);
  168060             : 
  168061           8 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  168062             : 
  168063             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  168064             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  168065             :        // ROSE_ASSERT(end != NULL);
  168066           8 :           if (end == NULL)
  168067             :              {
  168068           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  168069             :              }
  168070             :             else
  168071             :              {
  168072             : #if 0
  168073             :             // Debugging information
  168074             :                if (end->get_parent() == NULL)
  168075             :                   {
  168076             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168077             :                   }
  168078             : #endif
  168079           8 :                end->set_parent(locatedNode);
  168080           8 :                ROSE_ASSERT(end->get_parent() != NULL);
  168081             :              }
  168082             : 
  168083           8 :           SgExpression* expression = isSgExpression(result);
  168084           8 :           if (isSgExpression(this) != NULL)
  168085             :              {
  168086           8 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  168087             : 
  168088             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  168089           8 :                if (operatorPosition != NULL)
  168090             :                   {
  168091             : #if 0
  168092             :                  // Debugging information
  168093             :                     if (operatorPosition->get_parent() == NULL)
  168094             :                        {
  168095             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168096             :                        }
  168097             : #endif
  168098           8 :                     operatorPosition->set_parent(expression);
  168099           8 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  168100             :                   }
  168101             :              }
  168102             :         }
  168103             : 
  168104             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  168105           8 :      SgInitializedName* initializedName = isSgInitializedName(result);
  168106           8 :      if (initializedName != NULL)
  168107             :         {
  168108             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  168109           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  168110           0 :           ROSE_ASSERT(start != NULL);
  168111             : #if 0
  168112             :        // Debugging information
  168113             :           if (start->get_parent() == NULL)
  168114             :              {
  168115             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168116             :              }
  168117             : #endif
  168118           0 :           start->set_parent(initializedName);
  168119           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  168120             : 
  168121             : #if 0
  168122             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  168123             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  168124             : 
  168125             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  168126             :        // ROSE_ASSERT(end != NULL);
  168127             :           if (end == NULL)
  168128             :              {
  168129             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  168130             :              }
  168131             :             else
  168132             :              {
  168133             :                if (end->get_parent() == NULL)
  168134             :                   {
  168135             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168136             :                   }
  168137             :                end->set_parent(initializedName);
  168138             :                ROSE_ASSERT(end->get_parent() != NULL);
  168139             :              }
  168140             : #endif
  168141             :         }
  168142             : 
  168143             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  168144           8 :      help.insertCopiedNodePair(this,result);
  168145             : 
  168146             :   // printf ("End of copy SgStringVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  168147             : 
  168148             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  168149             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  168150           8 :      help.decrementDepth();
  168151             : 
  168152             :   // Test if this is the root of the copy!
  168153           8 :      if (help.get_depth() == 0)
  168154             :         {
  168155             :        // This is the original calling node.
  168156             : 
  168157             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  168158             :        // printf ("Calling SgStringVal::fixupCopy() (from root of AST being copied) \n");
  168159             : #if ALT_FIXUP_COPY
  168160             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  168161           0 :           fixupCopy_scopes (result,help);
  168162           0 :           fixupCopy_symbols (result,help);
  168163           0 :           fixupCopy_references (result,help);
  168164             : #else
  168165             :           fixupCopy(result,help);
  168166             : #endif
  168167             :        // Allow this to be called recursively, so accumulate the state.
  168168             :        // Also, clear the state in the SgCopyHelp object.
  168169             :        // help.clearState();
  168170             :         }
  168171             : 
  168172          16 :      return result;
  168173             :    }
  168174             : 
  168175             : 
  168176             : /* #line 168177 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  168177             : 
  168178             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168179             : 
  168180           0 : SgNode* SgShortVal::copy ( SgCopyHelp& help) const
  168181             :    {
  168182           0 :      SgShortVal* result = NULL;
  168183             : 
  168184             :   // printf ("Copy SgShortVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  168185             : 
  168186             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  168187             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  168188             :   // The default value of the depth is 0, so after this call the depth is 1!
  168189           0 :      help.incrementDepth();
  168190             : 
  168191             : #if 0
  168192             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  168193             :   // but it is not generally true that things can only be copied once!
  168194             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  168195             :   // AstAttribute* existingAttribute = const_cast<SgShortVal*>(this)->attribute["copied"];
  168196             :      bool previouslyCopied = const_cast<SgShortVal*>(this)->attribute.exists("copied");
  168197             :      if (previouslyCopied == true)
  168198             :         {
  168199             :           this->get_file_info()->display("Called from copy SgShortVal: debug");
  168200             :         }
  168201             :      ROSE_ASSERT(previouslyCopied == false);
  168202             : 
  168203             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  168204             :      AstAttribute* newAttribute = new AstAttribute();
  168205             :      ROSE_ASSERT(newAttribute != NULL);
  168206             : 
  168207             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  168208             :      const_cast<SgShortVal*>(this)->attribute.add("copied",newAttribute);
  168209             : #endif
  168210             : 
  168211             :   // Copy data members from base classes
  168212             :   // Copy constructor parameter data member: startOfConstruct_copy
  168213             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  168214             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  168215           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  168216           0 :      if ( p_startOfConstruct != NULL ) 
  168217             :         { 
  168218           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  168219             :         } 
  168220             :        else 
  168221             :         { 
  168222             :           startOfConstruct_copy = NULL; 
  168223             :         } 
  168224             :   // Copy constructor parameter data member: value_copy
  168225             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  168226             :   // case: toBeCopied == COPY_DATA for value
  168227           0 :      short value_copy = p_value; 
  168228             :   // Copy constructor parameter data member: valueString_copy
  168229             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  168230             :   // case: toBeCopied == COPY_DATA for valueString
  168231           0 :      std::string valueString_copy = p_valueString; 
  168232             :  
  168233             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168234             : 
  168235             :   // Build an empty copy of this object (will be filled in, but 
  168236             :   // the parent can't be set and must be set by the caller)
  168237           0 :      result = new SgShortVal(  startOfConstruct_copy, value_copy, valueString_copy );
  168238           0 :      ROSE_ASSERT(result != NULL);
  168239             : 
  168240             :   // Copy data members of "this" class
  168241             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  168242             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  168243             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  168244           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  168245           0 :      if ( p_endOfConstruct != NULL ) 
  168246             :         { 
  168247           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  168248             :         } 
  168249             :        else 
  168250             :         { 
  168251             :           endOfConstruct_copy = NULL; 
  168252             :         } 
  168253             :   /* check for a valid pointer and delete if present */ 
  168254           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  168255             :   /* add assignment to result here */ 
  168256           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  168257             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  168258             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  168259             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  168260           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  168261           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  168262             :         { 
  168263           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  168264             :         } 
  168265             :        else 
  168266             :         { 
  168267             :           attachedPreprocessingInfoPtr_copy = NULL; 
  168268             :         } 
  168269             :   /* check for a valid pointer and delete if present */ 
  168270           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  168271             :   /* add assignment to result here */ 
  168272           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  168273             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  168274             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  168275             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  168276           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  168277           0 :      if ( p_attributeMechanism != NULL ) 
  168278             :         { 
  168279           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  168280             :         } 
  168281             :        else 
  168282             :         { 
  168283             :           attributeMechanism_copy = NULL; 
  168284             :         } 
  168285             :   /* check for a valid pointer and delete if present */ 
  168286           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  168287             :   /* add assignment to result here */ 
  168288           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  168289             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  168290             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  168291             :   // case: toBeCopied == COPY_DATA for need_paren
  168292           0 :      bool need_paren_copy = p_need_paren; 
  168293           0 :      result->p_need_paren = need_paren_copy; 
  168294             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  168295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  168296             :   // case: toBeCopied == COPY_DATA for lvalue
  168297           0 :      bool lvalue_copy = p_lvalue; 
  168298           0 :      result->p_lvalue = lvalue_copy; 
  168299             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  168300             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  168301             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  168302           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  168303           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  168304             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  168305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  168306             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  168307           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  168308           0 :      if ( p_operatorPosition != NULL ) 
  168309             :         { 
  168310           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  168311             :         } 
  168312             :        else 
  168313             :         { 
  168314             :           operatorPosition_copy = NULL; 
  168315             :         } 
  168316             :   /* check for a valid pointer and delete if present */ 
  168317           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  168318             :   /* add assignment to result here */ 
  168319           0 :      result->p_operatorPosition = operatorPosition_copy; 
  168320             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  168321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  168322             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  168323           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  168324           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  168325             : 
  168326             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168327             : 
  168328             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  168329             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  168330             :   // fixupCopy(result,help);
  168331             : 
  168332             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  168333             :   // the Sg_File_Info objects that are built for the new IR nodes.
  168334           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  168335           0 :      if (locatedNode != NULL)
  168336             :         {
  168337             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  168338           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  168339           0 :           ROSE_ASSERT(start != NULL);
  168340             : #if 0
  168341             :        // Debugging information
  168342             :           if (start->get_parent() == NULL)
  168343             :              {
  168344             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168345             :              }
  168346             : #endif
  168347           0 :           start->set_parent(locatedNode);
  168348           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  168349             : 
  168350           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  168351             : 
  168352             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  168353             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  168354             :        // ROSE_ASSERT(end != NULL);
  168355           0 :           if (end == NULL)
  168356             :              {
  168357           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  168358             :              }
  168359             :             else
  168360             :              {
  168361             : #if 0
  168362             :             // Debugging information
  168363             :                if (end->get_parent() == NULL)
  168364             :                   {
  168365             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168366             :                   }
  168367             : #endif
  168368           0 :                end->set_parent(locatedNode);
  168369           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  168370             :              }
  168371             : 
  168372           0 :           SgExpression* expression = isSgExpression(result);
  168373           0 :           if (isSgExpression(this) != NULL)
  168374             :              {
  168375           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  168376             : 
  168377             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  168378           0 :                if (operatorPosition != NULL)
  168379             :                   {
  168380             : #if 0
  168381             :                  // Debugging information
  168382             :                     if (operatorPosition->get_parent() == NULL)
  168383             :                        {
  168384             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168385             :                        }
  168386             : #endif
  168387           0 :                     operatorPosition->set_parent(expression);
  168388           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  168389             :                   }
  168390             :              }
  168391             :         }
  168392             : 
  168393             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  168394           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  168395           0 :      if (initializedName != NULL)
  168396             :         {
  168397             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  168398           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  168399           0 :           ROSE_ASSERT(start != NULL);
  168400             : #if 0
  168401             :        // Debugging information
  168402             :           if (start->get_parent() == NULL)
  168403             :              {
  168404             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168405             :              }
  168406             : #endif
  168407           0 :           start->set_parent(initializedName);
  168408           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  168409             : 
  168410             : #if 0
  168411             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  168412             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  168413             : 
  168414             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  168415             :        // ROSE_ASSERT(end != NULL);
  168416             :           if (end == NULL)
  168417             :              {
  168418             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  168419             :              }
  168420             :             else
  168421             :              {
  168422             :                if (end->get_parent() == NULL)
  168423             :                   {
  168424             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168425             :                   }
  168426             :                end->set_parent(initializedName);
  168427             :                ROSE_ASSERT(end->get_parent() != NULL);
  168428             :              }
  168429             : #endif
  168430             :         }
  168431             : 
  168432             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  168433           0 :      help.insertCopiedNodePair(this,result);
  168434             : 
  168435             :   // printf ("End of copy SgShortVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  168436             : 
  168437             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  168438             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  168439           0 :      help.decrementDepth();
  168440             : 
  168441             :   // Test if this is the root of the copy!
  168442           0 :      if (help.get_depth() == 0)
  168443             :         {
  168444             :        // This is the original calling node.
  168445             : 
  168446             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  168447             :        // printf ("Calling SgShortVal::fixupCopy() (from root of AST being copied) \n");
  168448             : #if ALT_FIXUP_COPY
  168449             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  168450           0 :           fixupCopy_scopes (result,help);
  168451           0 :           fixupCopy_symbols (result,help);
  168452           0 :           fixupCopy_references (result,help);
  168453             : #else
  168454             :           fixupCopy(result,help);
  168455             : #endif
  168456             :        // Allow this to be called recursively, so accumulate the state.
  168457             :        // Also, clear the state in the SgCopyHelp object.
  168458             :        // help.clearState();
  168459             :         }
  168460             : 
  168461           0 :      return result;
  168462             :    }
  168463             : 
  168464             : 
  168465             : /* #line 168466 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  168466             : 
  168467             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168468             : 
  168469          38 : SgNode* SgCharVal::copy ( SgCopyHelp& help) const
  168470             :    {
  168471          38 :      SgCharVal* result = NULL;
  168472             : 
  168473             :   // printf ("Copy SgCharVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  168474             : 
  168475             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  168476             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  168477             :   // The default value of the depth is 0, so after this call the depth is 1!
  168478          38 :      help.incrementDepth();
  168479             : 
  168480             : #if 0
  168481             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  168482             :   // but it is not generally true that things can only be copied once!
  168483             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  168484             :   // AstAttribute* existingAttribute = const_cast<SgCharVal*>(this)->attribute["copied"];
  168485             :      bool previouslyCopied = const_cast<SgCharVal*>(this)->attribute.exists("copied");
  168486             :      if (previouslyCopied == true)
  168487             :         {
  168488             :           this->get_file_info()->display("Called from copy SgCharVal: debug");
  168489             :         }
  168490             :      ROSE_ASSERT(previouslyCopied == false);
  168491             : 
  168492             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  168493             :      AstAttribute* newAttribute = new AstAttribute();
  168494             :      ROSE_ASSERT(newAttribute != NULL);
  168495             : 
  168496             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  168497             :      const_cast<SgCharVal*>(this)->attribute.add("copied",newAttribute);
  168498             : #endif
  168499             : 
  168500             :   // Copy data members from base classes
  168501             :   // Copy constructor parameter data member: startOfConstruct_copy
  168502             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  168503             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  168504          38 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  168505          38 :      if ( p_startOfConstruct != NULL ) 
  168506             :         { 
  168507          38 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  168508             :         } 
  168509             :        else 
  168510             :         { 
  168511             :           startOfConstruct_copy = NULL; 
  168512             :         } 
  168513             :   // Copy constructor parameter data member: value_copy
  168514             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  168515             :   // case: toBeCopied == COPY_DATA for value
  168516          38 :      char value_copy = p_value; 
  168517             :   // Copy constructor parameter data member: valueString_copy
  168518             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  168519             :   // case: toBeCopied == COPY_DATA for valueString
  168520          38 :      std::string valueString_copy = p_valueString; 
  168521             :  
  168522             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168523             : 
  168524             :   // Build an empty copy of this object (will be filled in, but 
  168525             :   // the parent can't be set and must be set by the caller)
  168526          76 :      result = new SgCharVal(  startOfConstruct_copy, value_copy, valueString_copy );
  168527          38 :      ROSE_ASSERT(result != NULL);
  168528             : 
  168529             :   // Copy data members of "this" class
  168530             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  168531             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  168532             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  168533          38 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  168534          38 :      if ( p_endOfConstruct != NULL ) 
  168535             :         { 
  168536          38 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  168537             :         } 
  168538             :        else 
  168539             :         { 
  168540             :           endOfConstruct_copy = NULL; 
  168541             :         } 
  168542             :   /* check for a valid pointer and delete if present */ 
  168543          38 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  168544             :   /* add assignment to result here */ 
  168545          38 :      result->p_endOfConstruct = endOfConstruct_copy; 
  168546             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  168547             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  168548             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  168549          38 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  168550          38 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  168551             :         { 
  168552           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  168553             :         } 
  168554             :        else 
  168555             :         { 
  168556             :           attachedPreprocessingInfoPtr_copy = NULL; 
  168557             :         } 
  168558             :   /* check for a valid pointer and delete if present */ 
  168559          38 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  168560             :   /* add assignment to result here */ 
  168561          38 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  168562             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  168563             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  168564             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  168565          38 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  168566          38 :      if ( p_attributeMechanism != NULL ) 
  168567             :         { 
  168568           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  168569             :         } 
  168570             :        else 
  168571             :         { 
  168572             :           attributeMechanism_copy = NULL; 
  168573             :         } 
  168574             :   /* check for a valid pointer and delete if present */ 
  168575          38 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  168576             :   /* add assignment to result here */ 
  168577          38 :      result->p_attributeMechanism = attributeMechanism_copy; 
  168578             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  168579             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  168580             :   // case: toBeCopied == COPY_DATA for need_paren
  168581          38 :      bool need_paren_copy = p_need_paren; 
  168582          38 :      result->p_need_paren = need_paren_copy; 
  168583             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  168584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  168585             :   // case: toBeCopied == COPY_DATA for lvalue
  168586          38 :      bool lvalue_copy = p_lvalue; 
  168587          38 :      result->p_lvalue = lvalue_copy; 
  168588             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  168589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  168590             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  168591          38 :      bool global_qualified_name_copy = p_global_qualified_name; 
  168592          38 :      result->p_global_qualified_name = global_qualified_name_copy; 
  168593             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  168594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  168595             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  168596          38 :      Sg_File_Info* operatorPosition_copy = NULL; 
  168597          38 :      if ( p_operatorPosition != NULL ) 
  168598             :         { 
  168599          38 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  168600             :         } 
  168601             :        else 
  168602             :         { 
  168603             :           operatorPosition_copy = NULL; 
  168604             :         } 
  168605             :   /* check for a valid pointer and delete if present */ 
  168606          38 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  168607             :   /* add assignment to result here */ 
  168608          38 :      result->p_operatorPosition = operatorPosition_copy; 
  168609             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  168610             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  168611             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  168612          38 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  168613          38 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  168614             : 
  168615             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168616             : 
  168617             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  168618             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  168619             :   // fixupCopy(result,help);
  168620             : 
  168621             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  168622             :   // the Sg_File_Info objects that are built for the new IR nodes.
  168623          38 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  168624          38 :      if (locatedNode != NULL)
  168625             :         {
  168626             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  168627          38 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  168628          38 :           ROSE_ASSERT(start != NULL);
  168629             : #if 0
  168630             :        // Debugging information
  168631             :           if (start->get_parent() == NULL)
  168632             :              {
  168633             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168634             :              }
  168635             : #endif
  168636          38 :           start->set_parent(locatedNode);
  168637          38 :           ROSE_ASSERT(start->get_parent() != NULL);
  168638             : 
  168639          38 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  168640             : 
  168641             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  168642             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  168643             :        // ROSE_ASSERT(end != NULL);
  168644          38 :           if (end == NULL)
  168645             :              {
  168646           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  168647             :              }
  168648             :             else
  168649             :              {
  168650             : #if 0
  168651             :             // Debugging information
  168652             :                if (end->get_parent() == NULL)
  168653             :                   {
  168654             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168655             :                   }
  168656             : #endif
  168657          38 :                end->set_parent(locatedNode);
  168658          38 :                ROSE_ASSERT(end->get_parent() != NULL);
  168659             :              }
  168660             : 
  168661          38 :           SgExpression* expression = isSgExpression(result);
  168662          38 :           if (isSgExpression(this) != NULL)
  168663             :              {
  168664          38 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  168665             : 
  168666             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  168667          38 :                if (operatorPosition != NULL)
  168668             :                   {
  168669             : #if 0
  168670             :                  // Debugging information
  168671             :                     if (operatorPosition->get_parent() == NULL)
  168672             :                        {
  168673             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168674             :                        }
  168675             : #endif
  168676          38 :                     operatorPosition->set_parent(expression);
  168677          38 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  168678             :                   }
  168679             :              }
  168680             :         }
  168681             : 
  168682             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  168683          38 :      SgInitializedName* initializedName = isSgInitializedName(result);
  168684          38 :      if (initializedName != NULL)
  168685             :         {
  168686             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  168687           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  168688           0 :           ROSE_ASSERT(start != NULL);
  168689             : #if 0
  168690             :        // Debugging information
  168691             :           if (start->get_parent() == NULL)
  168692             :              {
  168693             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168694             :              }
  168695             : #endif
  168696           0 :           start->set_parent(initializedName);
  168697           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  168698             : 
  168699             : #if 0
  168700             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  168701             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  168702             : 
  168703             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  168704             :        // ROSE_ASSERT(end != NULL);
  168705             :           if (end == NULL)
  168706             :              {
  168707             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  168708             :              }
  168709             :             else
  168710             :              {
  168711             :                if (end->get_parent() == NULL)
  168712             :                   {
  168713             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168714             :                   }
  168715             :                end->set_parent(initializedName);
  168716             :                ROSE_ASSERT(end->get_parent() != NULL);
  168717             :              }
  168718             : #endif
  168719             :         }
  168720             : 
  168721             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  168722          38 :      help.insertCopiedNodePair(this,result);
  168723             : 
  168724             :   // printf ("End of copy SgCharVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  168725             : 
  168726             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  168727             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  168728          38 :      help.decrementDepth();
  168729             : 
  168730             :   // Test if this is the root of the copy!
  168731          38 :      if (help.get_depth() == 0)
  168732             :         {
  168733             :        // This is the original calling node.
  168734             : 
  168735             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  168736             :        // printf ("Calling SgCharVal::fixupCopy() (from root of AST being copied) \n");
  168737             : #if ALT_FIXUP_COPY
  168738             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  168739           0 :           fixupCopy_scopes (result,help);
  168740           0 :           fixupCopy_symbols (result,help);
  168741           0 :           fixupCopy_references (result,help);
  168742             : #else
  168743             :           fixupCopy(result,help);
  168744             : #endif
  168745             :        // Allow this to be called recursively, so accumulate the state.
  168746             :        // Also, clear the state in the SgCopyHelp object.
  168747             :        // help.clearState();
  168748             :         }
  168749             : 
  168750          38 :      return result;
  168751             :    }
  168752             : 
  168753             : 
  168754             : /* #line 168755 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  168755             : 
  168756             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168757             : 
  168758           0 : SgNode* SgUnsignedCharVal::copy ( SgCopyHelp& help) const
  168759             :    {
  168760           0 :      SgUnsignedCharVal* result = NULL;
  168761             : 
  168762             :   // printf ("Copy SgUnsignedCharVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  168763             : 
  168764             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  168765             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  168766             :   // The default value of the depth is 0, so after this call the depth is 1!
  168767           0 :      help.incrementDepth();
  168768             : 
  168769             : #if 0
  168770             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  168771             :   // but it is not generally true that things can only be copied once!
  168772             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  168773             :   // AstAttribute* existingAttribute = const_cast<SgUnsignedCharVal*>(this)->attribute["copied"];
  168774             :      bool previouslyCopied = const_cast<SgUnsignedCharVal*>(this)->attribute.exists("copied");
  168775             :      if (previouslyCopied == true)
  168776             :         {
  168777             :           this->get_file_info()->display("Called from copy SgUnsignedCharVal: debug");
  168778             :         }
  168779             :      ROSE_ASSERT(previouslyCopied == false);
  168780             : 
  168781             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  168782             :      AstAttribute* newAttribute = new AstAttribute();
  168783             :      ROSE_ASSERT(newAttribute != NULL);
  168784             : 
  168785             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  168786             :      const_cast<SgUnsignedCharVal*>(this)->attribute.add("copied",newAttribute);
  168787             : #endif
  168788             : 
  168789             :   // Copy data members from base classes
  168790             :   // Copy constructor parameter data member: startOfConstruct_copy
  168791             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  168792             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  168793           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  168794           0 :      if ( p_startOfConstruct != NULL ) 
  168795             :         { 
  168796           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  168797             :         } 
  168798             :        else 
  168799             :         { 
  168800             :           startOfConstruct_copy = NULL; 
  168801             :         } 
  168802             :   // Copy constructor parameter data member: value_copy
  168803             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  168804             :   // case: toBeCopied == COPY_DATA for value
  168805           0 :      unsigned char value_copy = p_value; 
  168806             :   // Copy constructor parameter data member: valueString_copy
  168807             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  168808             :   // case: toBeCopied == COPY_DATA for valueString
  168809           0 :      std::string valueString_copy = p_valueString; 
  168810             :  
  168811             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168812             : 
  168813             :   // Build an empty copy of this object (will be filled in, but 
  168814             :   // the parent can't be set and must be set by the caller)
  168815           0 :      result = new SgUnsignedCharVal(  startOfConstruct_copy, value_copy, valueString_copy );
  168816           0 :      ROSE_ASSERT(result != NULL);
  168817             : 
  168818             :   // Copy data members of "this" class
  168819             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  168820             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  168821             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  168822           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  168823           0 :      if ( p_endOfConstruct != NULL ) 
  168824             :         { 
  168825           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  168826             :         } 
  168827             :        else 
  168828             :         { 
  168829             :           endOfConstruct_copy = NULL; 
  168830             :         } 
  168831             :   /* check for a valid pointer and delete if present */ 
  168832           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  168833             :   /* add assignment to result here */ 
  168834           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  168835             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  168836             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  168837             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  168838           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  168839           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  168840             :         { 
  168841           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  168842             :         } 
  168843             :        else 
  168844             :         { 
  168845             :           attachedPreprocessingInfoPtr_copy = NULL; 
  168846             :         } 
  168847             :   /* check for a valid pointer and delete if present */ 
  168848           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  168849             :   /* add assignment to result here */ 
  168850           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  168851             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  168852             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  168853             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  168854           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  168855           0 :      if ( p_attributeMechanism != NULL ) 
  168856             :         { 
  168857           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  168858             :         } 
  168859             :        else 
  168860             :         { 
  168861             :           attributeMechanism_copy = NULL; 
  168862             :         } 
  168863             :   /* check for a valid pointer and delete if present */ 
  168864           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  168865             :   /* add assignment to result here */ 
  168866           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  168867             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  168868             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  168869             :   // case: toBeCopied == COPY_DATA for need_paren
  168870           0 :      bool need_paren_copy = p_need_paren; 
  168871           0 :      result->p_need_paren = need_paren_copy; 
  168872             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  168873             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  168874             :   // case: toBeCopied == COPY_DATA for lvalue
  168875           0 :      bool lvalue_copy = p_lvalue; 
  168876           0 :      result->p_lvalue = lvalue_copy; 
  168877             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  168878             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  168879             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  168880           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  168881           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  168882             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  168883             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  168884             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  168885           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  168886           0 :      if ( p_operatorPosition != NULL ) 
  168887             :         { 
  168888           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  168889             :         } 
  168890             :        else 
  168891             :         { 
  168892             :           operatorPosition_copy = NULL; 
  168893             :         } 
  168894             :   /* check for a valid pointer and delete if present */ 
  168895           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  168896             :   /* add assignment to result here */ 
  168897           0 :      result->p_operatorPosition = operatorPosition_copy; 
  168898             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  168899             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  168900             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  168901           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  168902           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  168903             : 
  168904             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  168905             : 
  168906             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  168907             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  168908             :   // fixupCopy(result,help);
  168909             : 
  168910             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  168911             :   // the Sg_File_Info objects that are built for the new IR nodes.
  168912           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  168913           0 :      if (locatedNode != NULL)
  168914             :         {
  168915             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  168916           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  168917           0 :           ROSE_ASSERT(start != NULL);
  168918             : #if 0
  168919             :        // Debugging information
  168920             :           if (start->get_parent() == NULL)
  168921             :              {
  168922             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168923             :              }
  168924             : #endif
  168925           0 :           start->set_parent(locatedNode);
  168926           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  168927             : 
  168928           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  168929             : 
  168930             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  168931             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  168932             :        // ROSE_ASSERT(end != NULL);
  168933           0 :           if (end == NULL)
  168934             :              {
  168935           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  168936             :              }
  168937             :             else
  168938             :              {
  168939             : #if 0
  168940             :             // Debugging information
  168941             :                if (end->get_parent() == NULL)
  168942             :                   {
  168943             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168944             :                   }
  168945             : #endif
  168946           0 :                end->set_parent(locatedNode);
  168947           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  168948             :              }
  168949             : 
  168950           0 :           SgExpression* expression = isSgExpression(result);
  168951           0 :           if (isSgExpression(this) != NULL)
  168952             :              {
  168953           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  168954             : 
  168955             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  168956           0 :                if (operatorPosition != NULL)
  168957             :                   {
  168958             : #if 0
  168959             :                  // Debugging information
  168960             :                     if (operatorPosition->get_parent() == NULL)
  168961             :                        {
  168962             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168963             :                        }
  168964             : #endif
  168965           0 :                     operatorPosition->set_parent(expression);
  168966           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  168967             :                   }
  168968             :              }
  168969             :         }
  168970             : 
  168971             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  168972           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  168973           0 :      if (initializedName != NULL)
  168974             :         {
  168975             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  168976           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  168977           0 :           ROSE_ASSERT(start != NULL);
  168978             : #if 0
  168979             :        // Debugging information
  168980             :           if (start->get_parent() == NULL)
  168981             :              {
  168982             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  168983             :              }
  168984             : #endif
  168985           0 :           start->set_parent(initializedName);
  168986           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  168987             : 
  168988             : #if 0
  168989             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  168990             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  168991             : 
  168992             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  168993             :        // ROSE_ASSERT(end != NULL);
  168994             :           if (end == NULL)
  168995             :              {
  168996             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  168997             :              }
  168998             :             else
  168999             :              {
  169000             :                if (end->get_parent() == NULL)
  169001             :                   {
  169002             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169003             :                   }
  169004             :                end->set_parent(initializedName);
  169005             :                ROSE_ASSERT(end->get_parent() != NULL);
  169006             :              }
  169007             : #endif
  169008             :         }
  169009             : 
  169010             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  169011           0 :      help.insertCopiedNodePair(this,result);
  169012             : 
  169013             :   // printf ("End of copy SgUnsignedCharVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  169014             : 
  169015             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  169016             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  169017           0 :      help.decrementDepth();
  169018             : 
  169019             :   // Test if this is the root of the copy!
  169020           0 :      if (help.get_depth() == 0)
  169021             :         {
  169022             :        // This is the original calling node.
  169023             : 
  169024             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  169025             :        // printf ("Calling SgUnsignedCharVal::fixupCopy() (from root of AST being copied) \n");
  169026             : #if ALT_FIXUP_COPY
  169027             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  169028           0 :           fixupCopy_scopes (result,help);
  169029           0 :           fixupCopy_symbols (result,help);
  169030           0 :           fixupCopy_references (result,help);
  169031             : #else
  169032             :           fixupCopy(result,help);
  169033             : #endif
  169034             :        // Allow this to be called recursively, so accumulate the state.
  169035             :        // Also, clear the state in the SgCopyHelp object.
  169036             :        // help.clearState();
  169037             :         }
  169038             : 
  169039           0 :      return result;
  169040             :    }
  169041             : 
  169042             : 
  169043             : /* #line 169044 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  169044             : 
  169045             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169046             : 
  169047           0 : SgNode* SgWcharVal::copy ( SgCopyHelp& help) const
  169048             :    {
  169049           0 :      SgWcharVal* result = NULL;
  169050             : 
  169051             :   // printf ("Copy SgWcharVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  169052             : 
  169053             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  169054             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  169055             :   // The default value of the depth is 0, so after this call the depth is 1!
  169056           0 :      help.incrementDepth();
  169057             : 
  169058             : #if 0
  169059             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  169060             :   // but it is not generally true that things can only be copied once!
  169061             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  169062             :   // AstAttribute* existingAttribute = const_cast<SgWcharVal*>(this)->attribute["copied"];
  169063             :      bool previouslyCopied = const_cast<SgWcharVal*>(this)->attribute.exists("copied");
  169064             :      if (previouslyCopied == true)
  169065             :         {
  169066             :           this->get_file_info()->display("Called from copy SgWcharVal: debug");
  169067             :         }
  169068             :      ROSE_ASSERT(previouslyCopied == false);
  169069             : 
  169070             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  169071             :      AstAttribute* newAttribute = new AstAttribute();
  169072             :      ROSE_ASSERT(newAttribute != NULL);
  169073             : 
  169074             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  169075             :      const_cast<SgWcharVal*>(this)->attribute.add("copied",newAttribute);
  169076             : #endif
  169077             : 
  169078             :   // Copy data members from base classes
  169079             :   // Copy constructor parameter data member: startOfConstruct_copy
  169080             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  169081             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  169082           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  169083           0 :      if ( p_startOfConstruct != NULL ) 
  169084             :         { 
  169085           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  169086             :         } 
  169087             :        else 
  169088             :         { 
  169089             :           startOfConstruct_copy = NULL; 
  169090             :         } 
  169091             :   // Copy constructor parameter data member: valueUL_copy
  169092             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueUL
  169093             :   // case: toBeCopied == COPY_DATA for valueUL
  169094           0 :      unsigned long valueUL_copy = p_valueUL; 
  169095             :   // Copy constructor parameter data member: valueString_copy
  169096             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  169097             :   // case: toBeCopied == COPY_DATA for valueString
  169098           0 :      std::string valueString_copy = p_valueString; 
  169099             :  
  169100             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169101             : 
  169102             :   // Build an empty copy of this object (will be filled in, but 
  169103             :   // the parent can't be set and must be set by the caller)
  169104           0 :      result = new SgWcharVal(  startOfConstruct_copy, valueUL_copy, valueString_copy );
  169105           0 :      ROSE_ASSERT(result != NULL);
  169106             : 
  169107             :   // Copy data members of "this" class
  169108             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  169109             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  169110             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  169111           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  169112           0 :      if ( p_endOfConstruct != NULL ) 
  169113             :         { 
  169114           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  169115             :         } 
  169116             :        else 
  169117             :         { 
  169118             :           endOfConstruct_copy = NULL; 
  169119             :         } 
  169120             :   /* check for a valid pointer and delete if present */ 
  169121           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  169122             :   /* add assignment to result here */ 
  169123           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  169124             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  169125             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  169126             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  169127           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  169128           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  169129             :         { 
  169130           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  169131             :         } 
  169132             :        else 
  169133             :         { 
  169134             :           attachedPreprocessingInfoPtr_copy = NULL; 
  169135             :         } 
  169136             :   /* check for a valid pointer and delete if present */ 
  169137           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  169138             :   /* add assignment to result here */ 
  169139           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  169140             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  169141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  169142             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  169143           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  169144           0 :      if ( p_attributeMechanism != NULL ) 
  169145             :         { 
  169146           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  169147             :         } 
  169148             :        else 
  169149             :         { 
  169150             :           attributeMechanism_copy = NULL; 
  169151             :         } 
  169152             :   /* check for a valid pointer and delete if present */ 
  169153           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  169154             :   /* add assignment to result here */ 
  169155           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  169156             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  169157             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  169158             :   // case: toBeCopied == COPY_DATA for need_paren
  169159           0 :      bool need_paren_copy = p_need_paren; 
  169160           0 :      result->p_need_paren = need_paren_copy; 
  169161             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  169162             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  169163             :   // case: toBeCopied == COPY_DATA for lvalue
  169164           0 :      bool lvalue_copy = p_lvalue; 
  169165           0 :      result->p_lvalue = lvalue_copy; 
  169166             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  169167             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  169168             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  169169           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  169170           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  169171             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  169172             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  169173             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  169174           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  169175           0 :      if ( p_operatorPosition != NULL ) 
  169176             :         { 
  169177           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  169178             :         } 
  169179             :        else 
  169180             :         { 
  169181             :           operatorPosition_copy = NULL; 
  169182             :         } 
  169183             :   /* check for a valid pointer and delete if present */ 
  169184           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  169185             :   /* add assignment to result here */ 
  169186           0 :      result->p_operatorPosition = operatorPosition_copy; 
  169187             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  169188             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  169189             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  169190           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  169191           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  169192             : 
  169193             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169194             : 
  169195             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  169196             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  169197             :   // fixupCopy(result,help);
  169198             : 
  169199             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  169200             :   // the Sg_File_Info objects that are built for the new IR nodes.
  169201           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  169202           0 :      if (locatedNode != NULL)
  169203             :         {
  169204             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  169205           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  169206           0 :           ROSE_ASSERT(start != NULL);
  169207             : #if 0
  169208             :        // Debugging information
  169209             :           if (start->get_parent() == NULL)
  169210             :              {
  169211             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169212             :              }
  169213             : #endif
  169214           0 :           start->set_parent(locatedNode);
  169215           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  169216             : 
  169217           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  169218             : 
  169219             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  169220             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  169221             :        // ROSE_ASSERT(end != NULL);
  169222           0 :           if (end == NULL)
  169223             :              {
  169224           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  169225             :              }
  169226             :             else
  169227             :              {
  169228             : #if 0
  169229             :             // Debugging information
  169230             :                if (end->get_parent() == NULL)
  169231             :                   {
  169232             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169233             :                   }
  169234             : #endif
  169235           0 :                end->set_parent(locatedNode);
  169236           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  169237             :              }
  169238             : 
  169239           0 :           SgExpression* expression = isSgExpression(result);
  169240           0 :           if (isSgExpression(this) != NULL)
  169241             :              {
  169242           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  169243             : 
  169244             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  169245           0 :                if (operatorPosition != NULL)
  169246             :                   {
  169247             : #if 0
  169248             :                  // Debugging information
  169249             :                     if (operatorPosition->get_parent() == NULL)
  169250             :                        {
  169251             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169252             :                        }
  169253             : #endif
  169254           0 :                     operatorPosition->set_parent(expression);
  169255           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  169256             :                   }
  169257             :              }
  169258             :         }
  169259             : 
  169260             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  169261           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  169262           0 :      if (initializedName != NULL)
  169263             :         {
  169264             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  169265           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  169266           0 :           ROSE_ASSERT(start != NULL);
  169267             : #if 0
  169268             :        // Debugging information
  169269             :           if (start->get_parent() == NULL)
  169270             :              {
  169271             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169272             :              }
  169273             : #endif
  169274           0 :           start->set_parent(initializedName);
  169275           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  169276             : 
  169277             : #if 0
  169278             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  169279             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  169280             : 
  169281             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  169282             :        // ROSE_ASSERT(end != NULL);
  169283             :           if (end == NULL)
  169284             :              {
  169285             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  169286             :              }
  169287             :             else
  169288             :              {
  169289             :                if (end->get_parent() == NULL)
  169290             :                   {
  169291             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169292             :                   }
  169293             :                end->set_parent(initializedName);
  169294             :                ROSE_ASSERT(end->get_parent() != NULL);
  169295             :              }
  169296             : #endif
  169297             :         }
  169298             : 
  169299             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  169300           0 :      help.insertCopiedNodePair(this,result);
  169301             : 
  169302             :   // printf ("End of copy SgWcharVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  169303             : 
  169304             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  169305             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  169306           0 :      help.decrementDepth();
  169307             : 
  169308             :   // Test if this is the root of the copy!
  169309           0 :      if (help.get_depth() == 0)
  169310             :         {
  169311             :        // This is the original calling node.
  169312             : 
  169313             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  169314             :        // printf ("Calling SgWcharVal::fixupCopy() (from root of AST being copied) \n");
  169315             : #if ALT_FIXUP_COPY
  169316             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  169317           0 :           fixupCopy_scopes (result,help);
  169318           0 :           fixupCopy_symbols (result,help);
  169319           0 :           fixupCopy_references (result,help);
  169320             : #else
  169321             :           fixupCopy(result,help);
  169322             : #endif
  169323             :        // Allow this to be called recursively, so accumulate the state.
  169324             :        // Also, clear the state in the SgCopyHelp object.
  169325             :        // help.clearState();
  169326             :         }
  169327             : 
  169328           0 :      return result;
  169329             :    }
  169330             : 
  169331             : 
  169332             : /* #line 169333 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  169333             : 
  169334             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169335             : 
  169336           0 : SgNode* SgUnsignedShortVal::copy ( SgCopyHelp& help) const
  169337             :    {
  169338           0 :      SgUnsignedShortVal* result = NULL;
  169339             : 
  169340             :   // printf ("Copy SgUnsignedShortVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  169341             : 
  169342             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  169343             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  169344             :   // The default value of the depth is 0, so after this call the depth is 1!
  169345           0 :      help.incrementDepth();
  169346             : 
  169347             : #if 0
  169348             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  169349             :   // but it is not generally true that things can only be copied once!
  169350             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  169351             :   // AstAttribute* existingAttribute = const_cast<SgUnsignedShortVal*>(this)->attribute["copied"];
  169352             :      bool previouslyCopied = const_cast<SgUnsignedShortVal*>(this)->attribute.exists("copied");
  169353             :      if (previouslyCopied == true)
  169354             :         {
  169355             :           this->get_file_info()->display("Called from copy SgUnsignedShortVal: debug");
  169356             :         }
  169357             :      ROSE_ASSERT(previouslyCopied == false);
  169358             : 
  169359             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  169360             :      AstAttribute* newAttribute = new AstAttribute();
  169361             :      ROSE_ASSERT(newAttribute != NULL);
  169362             : 
  169363             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  169364             :      const_cast<SgUnsignedShortVal*>(this)->attribute.add("copied",newAttribute);
  169365             : #endif
  169366             : 
  169367             :   // Copy data members from base classes
  169368             :   // Copy constructor parameter data member: startOfConstruct_copy
  169369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  169370             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  169371           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  169372           0 :      if ( p_startOfConstruct != NULL ) 
  169373             :         { 
  169374           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  169375             :         } 
  169376             :        else 
  169377             :         { 
  169378             :           startOfConstruct_copy = NULL; 
  169379             :         } 
  169380             :   // Copy constructor parameter data member: value_copy
  169381             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  169382             :   // case: toBeCopied == COPY_DATA for value
  169383           0 :      unsigned short value_copy = p_value; 
  169384             :   // Copy constructor parameter data member: valueString_copy
  169385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  169386             :   // case: toBeCopied == COPY_DATA for valueString
  169387           0 :      std::string valueString_copy = p_valueString; 
  169388             :  
  169389             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169390             : 
  169391             :   // Build an empty copy of this object (will be filled in, but 
  169392             :   // the parent can't be set and must be set by the caller)
  169393           0 :      result = new SgUnsignedShortVal(  startOfConstruct_copy, value_copy, valueString_copy );
  169394           0 :      ROSE_ASSERT(result != NULL);
  169395             : 
  169396             :   // Copy data members of "this" class
  169397             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  169398             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  169399             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  169400           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  169401           0 :      if ( p_endOfConstruct != NULL ) 
  169402             :         { 
  169403           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  169404             :         } 
  169405             :        else 
  169406             :         { 
  169407             :           endOfConstruct_copy = NULL; 
  169408             :         } 
  169409             :   /* check for a valid pointer and delete if present */ 
  169410           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  169411             :   /* add assignment to result here */ 
  169412           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  169413             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  169414             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  169415             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  169416           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  169417           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  169418             :         { 
  169419           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  169420             :         } 
  169421             :        else 
  169422             :         { 
  169423             :           attachedPreprocessingInfoPtr_copy = NULL; 
  169424             :         } 
  169425             :   /* check for a valid pointer and delete if present */ 
  169426           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  169427             :   /* add assignment to result here */ 
  169428           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  169429             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  169430             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  169431             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  169432           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  169433           0 :      if ( p_attributeMechanism != NULL ) 
  169434             :         { 
  169435           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  169436             :         } 
  169437             :        else 
  169438             :         { 
  169439             :           attributeMechanism_copy = NULL; 
  169440             :         } 
  169441             :   /* check for a valid pointer and delete if present */ 
  169442           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  169443             :   /* add assignment to result here */ 
  169444           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  169445             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  169446             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  169447             :   // case: toBeCopied == COPY_DATA for need_paren
  169448           0 :      bool need_paren_copy = p_need_paren; 
  169449           0 :      result->p_need_paren = need_paren_copy; 
  169450             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  169451             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  169452             :   // case: toBeCopied == COPY_DATA for lvalue
  169453           0 :      bool lvalue_copy = p_lvalue; 
  169454           0 :      result->p_lvalue = lvalue_copy; 
  169455             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  169456             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  169457             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  169458           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  169459           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  169460             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  169461             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  169462             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  169463           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  169464           0 :      if ( p_operatorPosition != NULL ) 
  169465             :         { 
  169466           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  169467             :         } 
  169468             :        else 
  169469             :         { 
  169470             :           operatorPosition_copy = NULL; 
  169471             :         } 
  169472             :   /* check for a valid pointer and delete if present */ 
  169473           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  169474             :   /* add assignment to result here */ 
  169475           0 :      result->p_operatorPosition = operatorPosition_copy; 
  169476             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  169477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  169478             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  169479           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  169480           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  169481             : 
  169482             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169483             : 
  169484             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  169485             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  169486             :   // fixupCopy(result,help);
  169487             : 
  169488             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  169489             :   // the Sg_File_Info objects that are built for the new IR nodes.
  169490           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  169491           0 :      if (locatedNode != NULL)
  169492             :         {
  169493             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  169494           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  169495           0 :           ROSE_ASSERT(start != NULL);
  169496             : #if 0
  169497             :        // Debugging information
  169498             :           if (start->get_parent() == NULL)
  169499             :              {
  169500             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169501             :              }
  169502             : #endif
  169503           0 :           start->set_parent(locatedNode);
  169504           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  169505             : 
  169506           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  169507             : 
  169508             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  169509             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  169510             :        // ROSE_ASSERT(end != NULL);
  169511           0 :           if (end == NULL)
  169512             :              {
  169513           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  169514             :              }
  169515             :             else
  169516             :              {
  169517             : #if 0
  169518             :             // Debugging information
  169519             :                if (end->get_parent() == NULL)
  169520             :                   {
  169521             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169522             :                   }
  169523             : #endif
  169524           0 :                end->set_parent(locatedNode);
  169525           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  169526             :              }
  169527             : 
  169528           0 :           SgExpression* expression = isSgExpression(result);
  169529           0 :           if (isSgExpression(this) != NULL)
  169530             :              {
  169531           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  169532             : 
  169533             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  169534           0 :                if (operatorPosition != NULL)
  169535             :                   {
  169536             : #if 0
  169537             :                  // Debugging information
  169538             :                     if (operatorPosition->get_parent() == NULL)
  169539             :                        {
  169540             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169541             :                        }
  169542             : #endif
  169543           0 :                     operatorPosition->set_parent(expression);
  169544           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  169545             :                   }
  169546             :              }
  169547             :         }
  169548             : 
  169549             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  169550           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  169551           0 :      if (initializedName != NULL)
  169552             :         {
  169553             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  169554           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  169555           0 :           ROSE_ASSERT(start != NULL);
  169556             : #if 0
  169557             :        // Debugging information
  169558             :           if (start->get_parent() == NULL)
  169559             :              {
  169560             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169561             :              }
  169562             : #endif
  169563           0 :           start->set_parent(initializedName);
  169564           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  169565             : 
  169566             : #if 0
  169567             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  169568             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  169569             : 
  169570             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  169571             :        // ROSE_ASSERT(end != NULL);
  169572             :           if (end == NULL)
  169573             :              {
  169574             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  169575             :              }
  169576             :             else
  169577             :              {
  169578             :                if (end->get_parent() == NULL)
  169579             :                   {
  169580             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169581             :                   }
  169582             :                end->set_parent(initializedName);
  169583             :                ROSE_ASSERT(end->get_parent() != NULL);
  169584             :              }
  169585             : #endif
  169586             :         }
  169587             : 
  169588             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  169589           0 :      help.insertCopiedNodePair(this,result);
  169590             : 
  169591             :   // printf ("End of copy SgUnsignedShortVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  169592             : 
  169593             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  169594             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  169595           0 :      help.decrementDepth();
  169596             : 
  169597             :   // Test if this is the root of the copy!
  169598           0 :      if (help.get_depth() == 0)
  169599             :         {
  169600             :        // This is the original calling node.
  169601             : 
  169602             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  169603             :        // printf ("Calling SgUnsignedShortVal::fixupCopy() (from root of AST being copied) \n");
  169604             : #if ALT_FIXUP_COPY
  169605             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  169606           0 :           fixupCopy_scopes (result,help);
  169607           0 :           fixupCopy_symbols (result,help);
  169608           0 :           fixupCopy_references (result,help);
  169609             : #else
  169610             :           fixupCopy(result,help);
  169611             : #endif
  169612             :        // Allow this to be called recursively, so accumulate the state.
  169613             :        // Also, clear the state in the SgCopyHelp object.
  169614             :        // help.clearState();
  169615             :         }
  169616             : 
  169617           0 :      return result;
  169618             :    }
  169619             : 
  169620             : 
  169621             : /* #line 169622 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  169622             : 
  169623             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169624             : 
  169625         595 : SgNode* SgIntVal::copy ( SgCopyHelp& help) const
  169626             :    {
  169627         595 :      SgIntVal* result = NULL;
  169628             : 
  169629             :   // printf ("Copy SgIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  169630             : 
  169631             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  169632             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  169633             :   // The default value of the depth is 0, so after this call the depth is 1!
  169634         595 :      help.incrementDepth();
  169635             : 
  169636             : #if 0
  169637             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  169638             :   // but it is not generally true that things can only be copied once!
  169639             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  169640             :   // AstAttribute* existingAttribute = const_cast<SgIntVal*>(this)->attribute["copied"];
  169641             :      bool previouslyCopied = const_cast<SgIntVal*>(this)->attribute.exists("copied");
  169642             :      if (previouslyCopied == true)
  169643             :         {
  169644             :           this->get_file_info()->display("Called from copy SgIntVal: debug");
  169645             :         }
  169646             :      ROSE_ASSERT(previouslyCopied == false);
  169647             : 
  169648             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  169649             :      AstAttribute* newAttribute = new AstAttribute();
  169650             :      ROSE_ASSERT(newAttribute != NULL);
  169651             : 
  169652             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  169653             :      const_cast<SgIntVal*>(this)->attribute.add("copied",newAttribute);
  169654             : #endif
  169655             : 
  169656             :   // Copy data members from base classes
  169657             :   // Copy constructor parameter data member: startOfConstruct_copy
  169658             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  169659             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  169660         595 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  169661         595 :      if ( p_startOfConstruct != NULL ) 
  169662             :         { 
  169663         595 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  169664             :         } 
  169665             :        else 
  169666             :         { 
  169667             :           startOfConstruct_copy = NULL; 
  169668             :         } 
  169669             :   // Copy constructor parameter data member: value_copy
  169670             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  169671             :   // case: toBeCopied == COPY_DATA for value
  169672         595 :      int value_copy = p_value; 
  169673             :   // Copy constructor parameter data member: valueString_copy
  169674             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  169675             :   // case: toBeCopied == COPY_DATA for valueString
  169676         595 :      std::string valueString_copy = p_valueString; 
  169677             :  
  169678             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169679             : 
  169680             :   // Build an empty copy of this object (will be filled in, but 
  169681             :   // the parent can't be set and must be set by the caller)
  169682        1190 :      result = new SgIntVal(  startOfConstruct_copy, value_copy, valueString_copy );
  169683         595 :      ROSE_ASSERT(result != NULL);
  169684             : 
  169685             :   // Copy data members of "this" class
  169686             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  169687             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  169688             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  169689         595 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  169690         595 :      if ( p_endOfConstruct != NULL ) 
  169691             :         { 
  169692         595 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  169693             :         } 
  169694             :        else 
  169695             :         { 
  169696             :           endOfConstruct_copy = NULL; 
  169697             :         } 
  169698             :   /* check for a valid pointer and delete if present */ 
  169699         595 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  169700             :   /* add assignment to result here */ 
  169701         595 :      result->p_endOfConstruct = endOfConstruct_copy; 
  169702             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  169703             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  169704             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  169705         595 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  169706         595 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  169707             :         { 
  169708           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  169709             :         } 
  169710             :        else 
  169711             :         { 
  169712             :           attachedPreprocessingInfoPtr_copy = NULL; 
  169713             :         } 
  169714             :   /* check for a valid pointer and delete if present */ 
  169715         595 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  169716             :   /* add assignment to result here */ 
  169717         595 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  169718             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  169719             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  169720             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  169721         595 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  169722         595 :      if ( p_attributeMechanism != NULL ) 
  169723             :         { 
  169724           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  169725             :         } 
  169726             :        else 
  169727             :         { 
  169728             :           attributeMechanism_copy = NULL; 
  169729             :         } 
  169730             :   /* check for a valid pointer and delete if present */ 
  169731         595 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  169732             :   /* add assignment to result here */ 
  169733         595 :      result->p_attributeMechanism = attributeMechanism_copy; 
  169734             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  169735             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  169736             :   // case: toBeCopied == COPY_DATA for need_paren
  169737         595 :      bool need_paren_copy = p_need_paren; 
  169738         595 :      result->p_need_paren = need_paren_copy; 
  169739             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  169740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  169741             :   // case: toBeCopied == COPY_DATA for lvalue
  169742         595 :      bool lvalue_copy = p_lvalue; 
  169743         595 :      result->p_lvalue = lvalue_copy; 
  169744             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  169745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  169746             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  169747         595 :      bool global_qualified_name_copy = p_global_qualified_name; 
  169748         595 :      result->p_global_qualified_name = global_qualified_name_copy; 
  169749             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  169750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  169751             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  169752         595 :      Sg_File_Info* operatorPosition_copy = NULL; 
  169753         595 :      if ( p_operatorPosition != NULL ) 
  169754             :         { 
  169755         595 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  169756             :         } 
  169757             :        else 
  169758             :         { 
  169759             :           operatorPosition_copy = NULL; 
  169760             :         } 
  169761             :   /* check for a valid pointer and delete if present */ 
  169762         595 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  169763             :   /* add assignment to result here */ 
  169764         595 :      result->p_operatorPosition = operatorPosition_copy; 
  169765             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  169766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  169767             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  169768         595 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  169769         595 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  169770             : 
  169771             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169772             : 
  169773             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  169774             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  169775             :   // fixupCopy(result,help);
  169776             : 
  169777             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  169778             :   // the Sg_File_Info objects that are built for the new IR nodes.
  169779         595 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  169780         595 :      if (locatedNode != NULL)
  169781             :         {
  169782             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  169783         595 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  169784         595 :           ROSE_ASSERT(start != NULL);
  169785             : #if 0
  169786             :        // Debugging information
  169787             :           if (start->get_parent() == NULL)
  169788             :              {
  169789             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169790             :              }
  169791             : #endif
  169792         595 :           start->set_parent(locatedNode);
  169793         595 :           ROSE_ASSERT(start->get_parent() != NULL);
  169794             : 
  169795         595 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  169796             : 
  169797             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  169798             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  169799             :        // ROSE_ASSERT(end != NULL);
  169800         595 :           if (end == NULL)
  169801             :              {
  169802           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  169803             :              }
  169804             :             else
  169805             :              {
  169806             : #if 0
  169807             :             // Debugging information
  169808             :                if (end->get_parent() == NULL)
  169809             :                   {
  169810             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169811             :                   }
  169812             : #endif
  169813         595 :                end->set_parent(locatedNode);
  169814         595 :                ROSE_ASSERT(end->get_parent() != NULL);
  169815             :              }
  169816             : 
  169817         595 :           SgExpression* expression = isSgExpression(result);
  169818         595 :           if (isSgExpression(this) != NULL)
  169819             :              {
  169820         595 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  169821             : 
  169822             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  169823         595 :                if (operatorPosition != NULL)
  169824             :                   {
  169825             : #if 0
  169826             :                  // Debugging information
  169827             :                     if (operatorPosition->get_parent() == NULL)
  169828             :                        {
  169829             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169830             :                        }
  169831             : #endif
  169832         595 :                     operatorPosition->set_parent(expression);
  169833         595 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  169834             :                   }
  169835             :              }
  169836             :         }
  169837             : 
  169838             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  169839         595 :      SgInitializedName* initializedName = isSgInitializedName(result);
  169840         595 :      if (initializedName != NULL)
  169841             :         {
  169842             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  169843           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  169844           0 :           ROSE_ASSERT(start != NULL);
  169845             : #if 0
  169846             :        // Debugging information
  169847             :           if (start->get_parent() == NULL)
  169848             :              {
  169849             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169850             :              }
  169851             : #endif
  169852           0 :           start->set_parent(initializedName);
  169853           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  169854             : 
  169855             : #if 0
  169856             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  169857             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  169858             : 
  169859             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  169860             :        // ROSE_ASSERT(end != NULL);
  169861             :           if (end == NULL)
  169862             :              {
  169863             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  169864             :              }
  169865             :             else
  169866             :              {
  169867             :                if (end->get_parent() == NULL)
  169868             :                   {
  169869             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  169870             :                   }
  169871             :                end->set_parent(initializedName);
  169872             :                ROSE_ASSERT(end->get_parent() != NULL);
  169873             :              }
  169874             : #endif
  169875             :         }
  169876             : 
  169877             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  169878         595 :      help.insertCopiedNodePair(this,result);
  169879             : 
  169880             :   // printf ("End of copy SgIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  169881             : 
  169882             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  169883             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  169884         595 :      help.decrementDepth();
  169885             : 
  169886             :   // Test if this is the root of the copy!
  169887         595 :      if (help.get_depth() == 0)
  169888             :         {
  169889             :        // This is the original calling node.
  169890             : 
  169891             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  169892             :        // printf ("Calling SgIntVal::fixupCopy() (from root of AST being copied) \n");
  169893             : #if ALT_FIXUP_COPY
  169894             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  169895          65 :           fixupCopy_scopes (result,help);
  169896          65 :           fixupCopy_symbols (result,help);
  169897          65 :           fixupCopy_references (result,help);
  169898             : #else
  169899             :           fixupCopy(result,help);
  169900             : #endif
  169901             :        // Allow this to be called recursively, so accumulate the state.
  169902             :        // Also, clear the state in the SgCopyHelp object.
  169903             :        // help.clearState();
  169904             :         }
  169905             : 
  169906         595 :      return result;
  169907             :    }
  169908             : 
  169909             : 
  169910             : /* #line 169911 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  169911             : 
  169912             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169913             : 
  169914          74 : SgNode* SgEnumVal::copy ( SgCopyHelp& help) const
  169915             :    {
  169916          74 :      SgEnumVal* result = NULL;
  169917             : 
  169918             :   // printf ("Copy SgEnumVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  169919             : 
  169920             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  169921             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  169922             :   // The default value of the depth is 0, so after this call the depth is 1!
  169923          74 :      help.incrementDepth();
  169924             : 
  169925             : #if 0
  169926             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  169927             :   // but it is not generally true that things can only be copied once!
  169928             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  169929             :   // AstAttribute* existingAttribute = const_cast<SgEnumVal*>(this)->attribute["copied"];
  169930             :      bool previouslyCopied = const_cast<SgEnumVal*>(this)->attribute.exists("copied");
  169931             :      if (previouslyCopied == true)
  169932             :         {
  169933             :           this->get_file_info()->display("Called from copy SgEnumVal: debug");
  169934             :         }
  169935             :      ROSE_ASSERT(previouslyCopied == false);
  169936             : 
  169937             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  169938             :      AstAttribute* newAttribute = new AstAttribute();
  169939             :      ROSE_ASSERT(newAttribute != NULL);
  169940             : 
  169941             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  169942             :      const_cast<SgEnumVal*>(this)->attribute.add("copied",newAttribute);
  169943             : #endif
  169944             : 
  169945             :   // Copy data members from base classes
  169946             :   // Copy constructor parameter data member: startOfConstruct_copy
  169947             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  169948             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  169949          74 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  169950          74 :      if ( p_startOfConstruct != NULL ) 
  169951             :         { 
  169952          74 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  169953             :         } 
  169954             :        else 
  169955             :         { 
  169956             :           startOfConstruct_copy = NULL; 
  169957             :         } 
  169958             :   // Copy constructor parameter data member: value_copy
  169959             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  169960             :   // case: toBeCopied == COPY_DATA for value
  169961          74 :      long long int value_copy = p_value; 
  169962             :   // Copy constructor parameter data member: declaration_copy
  169963             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration
  169964             :   // case: toBeCopied == COPY_DATA for declaration
  169965          74 :      SgEnumDeclaration* declaration_copy = p_declaration; 
  169966             :   // Copy constructor parameter data member: name_copy
  169967             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  169968             :   // case: toBeCopied == COPY_DATA for name
  169969          74 :      SgName name_copy = p_name; 
  169970             :  
  169971             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  169972             : 
  169973             :   // Build an empty copy of this object (will be filled in, but 
  169974             :   // the parent can't be set and must be set by the caller)
  169975          74 :      result = new SgEnumVal(  startOfConstruct_copy, value_copy, declaration_copy, name_copy );
  169976          74 :      ROSE_ASSERT(result != NULL);
  169977             : 
  169978             :   // Copy data members of "this" class
  169979             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  169980             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  169981             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  169982          74 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  169983          74 :      if ( p_endOfConstruct != NULL ) 
  169984             :         { 
  169985          74 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  169986             :         } 
  169987             :        else 
  169988             :         { 
  169989             :           endOfConstruct_copy = NULL; 
  169990             :         } 
  169991             :   /* check for a valid pointer and delete if present */ 
  169992          74 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  169993             :   /* add assignment to result here */ 
  169994          74 :      result->p_endOfConstruct = endOfConstruct_copy; 
  169995             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  169996             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  169997             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  169998          74 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  169999          74 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  170000             :         { 
  170001           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  170002             :         } 
  170003             :        else 
  170004             :         { 
  170005             :           attachedPreprocessingInfoPtr_copy = NULL; 
  170006             :         } 
  170007             :   /* check for a valid pointer and delete if present */ 
  170008          74 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  170009             :   /* add assignment to result here */ 
  170010          74 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  170011             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  170012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  170013             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  170014          74 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  170015          74 :      if ( p_attributeMechanism != NULL ) 
  170016             :         { 
  170017           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  170018             :         } 
  170019             :        else 
  170020             :         { 
  170021             :           attributeMechanism_copy = NULL; 
  170022             :         } 
  170023             :   /* check for a valid pointer and delete if present */ 
  170024          74 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  170025             :   /* add assignment to result here */ 
  170026          74 :      result->p_attributeMechanism = attributeMechanism_copy; 
  170027             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  170028             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  170029             :   // case: toBeCopied == COPY_DATA for need_paren
  170030          74 :      bool need_paren_copy = p_need_paren; 
  170031          74 :      result->p_need_paren = need_paren_copy; 
  170032             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  170033             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  170034             :   // case: toBeCopied == COPY_DATA for lvalue
  170035          74 :      bool lvalue_copy = p_lvalue; 
  170036          74 :      result->p_lvalue = lvalue_copy; 
  170037             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  170038             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  170039             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  170040          74 :      bool global_qualified_name_copy = p_global_qualified_name; 
  170041          74 :      result->p_global_qualified_name = global_qualified_name_copy; 
  170042             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  170043             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  170044             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  170045          74 :      Sg_File_Info* operatorPosition_copy = NULL; 
  170046          74 :      if ( p_operatorPosition != NULL ) 
  170047             :         { 
  170048          74 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  170049             :         } 
  170050             :        else 
  170051             :         { 
  170052             :           operatorPosition_copy = NULL; 
  170053             :         } 
  170054             :   /* check for a valid pointer and delete if present */ 
  170055          74 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  170056             :   /* add assignment to result here */ 
  170057          74 :      result->p_operatorPosition = operatorPosition_copy; 
  170058             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  170059             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  170060             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  170061          74 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  170062          74 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  170063             :   // Copy non-constructor parameter data member (access function): requiresNameQualification_copy
  170064             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresNameQualification
  170065             :   // case: toBeCopied == COPY_DATA for requiresNameQualification
  170066          74 :      bool requiresNameQualification_copy = p_requiresNameQualification; 
  170067          74 :      result->p_requiresNameQualification = requiresNameQualification_copy; 
  170068             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  170069             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  170070             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  170071          74 :      int name_qualification_length_copy = p_name_qualification_length; 
  170072          74 :      result->p_name_qualification_length = name_qualification_length_copy; 
  170073             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  170074             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  170075             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  170076          74 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  170077          74 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  170078             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  170079             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  170080             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  170081          74 :      bool global_qualification_required_copy = p_global_qualification_required; 
  170082          74 :      result->p_global_qualification_required = global_qualification_required_copy; 
  170083             : 
  170084             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170085             : 
  170086             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  170087             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  170088             :   // fixupCopy(result,help);
  170089             : 
  170090             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  170091             :   // the Sg_File_Info objects that are built for the new IR nodes.
  170092          74 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  170093          74 :      if (locatedNode != NULL)
  170094             :         {
  170095             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  170096          74 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  170097          74 :           ROSE_ASSERT(start != NULL);
  170098             : #if 0
  170099             :        // Debugging information
  170100             :           if (start->get_parent() == NULL)
  170101             :              {
  170102             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170103             :              }
  170104             : #endif
  170105          74 :           start->set_parent(locatedNode);
  170106          74 :           ROSE_ASSERT(start->get_parent() != NULL);
  170107             : 
  170108          74 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  170109             : 
  170110             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  170111             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  170112             :        // ROSE_ASSERT(end != NULL);
  170113          74 :           if (end == NULL)
  170114             :              {
  170115           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  170116             :              }
  170117             :             else
  170118             :              {
  170119             : #if 0
  170120             :             // Debugging information
  170121             :                if (end->get_parent() == NULL)
  170122             :                   {
  170123             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170124             :                   }
  170125             : #endif
  170126          74 :                end->set_parent(locatedNode);
  170127          74 :                ROSE_ASSERT(end->get_parent() != NULL);
  170128             :              }
  170129             : 
  170130          74 :           SgExpression* expression = isSgExpression(result);
  170131          74 :           if (isSgExpression(this) != NULL)
  170132             :              {
  170133          74 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  170134             : 
  170135             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  170136          74 :                if (operatorPosition != NULL)
  170137             :                   {
  170138             : #if 0
  170139             :                  // Debugging information
  170140             :                     if (operatorPosition->get_parent() == NULL)
  170141             :                        {
  170142             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170143             :                        }
  170144             : #endif
  170145          74 :                     operatorPosition->set_parent(expression);
  170146          74 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  170147             :                   }
  170148             :              }
  170149             :         }
  170150             : 
  170151             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  170152          74 :      SgInitializedName* initializedName = isSgInitializedName(result);
  170153          74 :      if (initializedName != NULL)
  170154             :         {
  170155             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  170156           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  170157           0 :           ROSE_ASSERT(start != NULL);
  170158             : #if 0
  170159             :        // Debugging information
  170160             :           if (start->get_parent() == NULL)
  170161             :              {
  170162             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170163             :              }
  170164             : #endif
  170165           0 :           start->set_parent(initializedName);
  170166           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  170167             : 
  170168             : #if 0
  170169             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  170170             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  170171             : 
  170172             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  170173             :        // ROSE_ASSERT(end != NULL);
  170174             :           if (end == NULL)
  170175             :              {
  170176             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  170177             :              }
  170178             :             else
  170179             :              {
  170180             :                if (end->get_parent() == NULL)
  170181             :                   {
  170182             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170183             :                   }
  170184             :                end->set_parent(initializedName);
  170185             :                ROSE_ASSERT(end->get_parent() != NULL);
  170186             :              }
  170187             : #endif
  170188             :         }
  170189             : 
  170190             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  170191          74 :      help.insertCopiedNodePair(this,result);
  170192             : 
  170193             :   // printf ("End of copy SgEnumVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  170194             : 
  170195             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  170196             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  170197          74 :      help.decrementDepth();
  170198             : 
  170199             :   // Test if this is the root of the copy!
  170200          74 :      if (help.get_depth() == 0)
  170201             :         {
  170202             :        // This is the original calling node.
  170203             : 
  170204             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  170205             :        // printf ("Calling SgEnumVal::fixupCopy() (from root of AST being copied) \n");
  170206             : #if ALT_FIXUP_COPY
  170207             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  170208           0 :           fixupCopy_scopes (result,help);
  170209           0 :           fixupCopy_symbols (result,help);
  170210           0 :           fixupCopy_references (result,help);
  170211             : #else
  170212             :           fixupCopy(result,help);
  170213             : #endif
  170214             :        // Allow this to be called recursively, so accumulate the state.
  170215             :        // Also, clear the state in the SgCopyHelp object.
  170216             :        // help.clearState();
  170217             :         }
  170218             : 
  170219          74 :      return result;
  170220             :    }
  170221             : 
  170222             : 
  170223             : /* #line 170224 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  170224             : 
  170225             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170226             : 
  170227           0 : SgNode* SgUnsignedIntVal::copy ( SgCopyHelp& help) const
  170228             :    {
  170229           0 :      SgUnsignedIntVal* result = NULL;
  170230             : 
  170231             :   // printf ("Copy SgUnsignedIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  170232             : 
  170233             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  170234             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  170235             :   // The default value of the depth is 0, so after this call the depth is 1!
  170236           0 :      help.incrementDepth();
  170237             : 
  170238             : #if 0
  170239             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  170240             :   // but it is not generally true that things can only be copied once!
  170241             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  170242             :   // AstAttribute* existingAttribute = const_cast<SgUnsignedIntVal*>(this)->attribute["copied"];
  170243             :      bool previouslyCopied = const_cast<SgUnsignedIntVal*>(this)->attribute.exists("copied");
  170244             :      if (previouslyCopied == true)
  170245             :         {
  170246             :           this->get_file_info()->display("Called from copy SgUnsignedIntVal: debug");
  170247             :         }
  170248             :      ROSE_ASSERT(previouslyCopied == false);
  170249             : 
  170250             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  170251             :      AstAttribute* newAttribute = new AstAttribute();
  170252             :      ROSE_ASSERT(newAttribute != NULL);
  170253             : 
  170254             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  170255             :      const_cast<SgUnsignedIntVal*>(this)->attribute.add("copied",newAttribute);
  170256             : #endif
  170257             : 
  170258             :   // Copy data members from base classes
  170259             :   // Copy constructor parameter data member: startOfConstruct_copy
  170260             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  170261             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  170262           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  170263           0 :      if ( p_startOfConstruct != NULL ) 
  170264             :         { 
  170265           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  170266             :         } 
  170267             :        else 
  170268             :         { 
  170269             :           startOfConstruct_copy = NULL; 
  170270             :         } 
  170271             :   // Copy constructor parameter data member: value_copy
  170272             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  170273             :   // case: toBeCopied == COPY_DATA for value
  170274           0 :      unsigned int value_copy = p_value; 
  170275             :   // Copy constructor parameter data member: valueString_copy
  170276             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  170277             :   // case: toBeCopied == COPY_DATA for valueString
  170278           0 :      std::string valueString_copy = p_valueString; 
  170279             :  
  170280             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170281             : 
  170282             :   // Build an empty copy of this object (will be filled in, but 
  170283             :   // the parent can't be set and must be set by the caller)
  170284           0 :      result = new SgUnsignedIntVal(  startOfConstruct_copy, value_copy, valueString_copy );
  170285           0 :      ROSE_ASSERT(result != NULL);
  170286             : 
  170287             :   // Copy data members of "this" class
  170288             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  170289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  170290             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  170291           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  170292           0 :      if ( p_endOfConstruct != NULL ) 
  170293             :         { 
  170294           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  170295             :         } 
  170296             :        else 
  170297             :         { 
  170298             :           endOfConstruct_copy = NULL; 
  170299             :         } 
  170300             :   /* check for a valid pointer and delete if present */ 
  170301           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  170302             :   /* add assignment to result here */ 
  170303           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  170304             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  170305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  170306             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  170307           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  170308           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  170309             :         { 
  170310           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  170311             :         } 
  170312             :        else 
  170313             :         { 
  170314             :           attachedPreprocessingInfoPtr_copy = NULL; 
  170315             :         } 
  170316             :   /* check for a valid pointer and delete if present */ 
  170317           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  170318             :   /* add assignment to result here */ 
  170319           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  170320             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  170321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  170322             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  170323           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  170324           0 :      if ( p_attributeMechanism != NULL ) 
  170325             :         { 
  170326           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  170327             :         } 
  170328             :        else 
  170329             :         { 
  170330             :           attributeMechanism_copy = NULL; 
  170331             :         } 
  170332             :   /* check for a valid pointer and delete if present */ 
  170333           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  170334             :   /* add assignment to result here */ 
  170335           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  170336             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  170337             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  170338             :   // case: toBeCopied == COPY_DATA for need_paren
  170339           0 :      bool need_paren_copy = p_need_paren; 
  170340           0 :      result->p_need_paren = need_paren_copy; 
  170341             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  170342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  170343             :   // case: toBeCopied == COPY_DATA for lvalue
  170344           0 :      bool lvalue_copy = p_lvalue; 
  170345           0 :      result->p_lvalue = lvalue_copy; 
  170346             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  170347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  170348             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  170349           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  170350           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  170351             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  170352             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  170353             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  170354           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  170355           0 :      if ( p_operatorPosition != NULL ) 
  170356             :         { 
  170357           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  170358             :         } 
  170359             :        else 
  170360             :         { 
  170361             :           operatorPosition_copy = NULL; 
  170362             :         } 
  170363             :   /* check for a valid pointer and delete if present */ 
  170364           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  170365             :   /* add assignment to result here */ 
  170366           0 :      result->p_operatorPosition = operatorPosition_copy; 
  170367             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  170368             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  170369             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  170370           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  170371           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  170372             : 
  170373             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170374             : 
  170375             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  170376             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  170377             :   // fixupCopy(result,help);
  170378             : 
  170379             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  170380             :   // the Sg_File_Info objects that are built for the new IR nodes.
  170381           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  170382           0 :      if (locatedNode != NULL)
  170383             :         {
  170384             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  170385           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  170386           0 :           ROSE_ASSERT(start != NULL);
  170387             : #if 0
  170388             :        // Debugging information
  170389             :           if (start->get_parent() == NULL)
  170390             :              {
  170391             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170392             :              }
  170393             : #endif
  170394           0 :           start->set_parent(locatedNode);
  170395           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  170396             : 
  170397           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  170398             : 
  170399             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  170400             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  170401             :        // ROSE_ASSERT(end != NULL);
  170402           0 :           if (end == NULL)
  170403             :              {
  170404           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  170405             :              }
  170406             :             else
  170407             :              {
  170408             : #if 0
  170409             :             // Debugging information
  170410             :                if (end->get_parent() == NULL)
  170411             :                   {
  170412             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170413             :                   }
  170414             : #endif
  170415           0 :                end->set_parent(locatedNode);
  170416           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  170417             :              }
  170418             : 
  170419           0 :           SgExpression* expression = isSgExpression(result);
  170420           0 :           if (isSgExpression(this) != NULL)
  170421             :              {
  170422           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  170423             : 
  170424             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  170425           0 :                if (operatorPosition != NULL)
  170426             :                   {
  170427             : #if 0
  170428             :                  // Debugging information
  170429             :                     if (operatorPosition->get_parent() == NULL)
  170430             :                        {
  170431             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170432             :                        }
  170433             : #endif
  170434           0 :                     operatorPosition->set_parent(expression);
  170435           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  170436             :                   }
  170437             :              }
  170438             :         }
  170439             : 
  170440             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  170441           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  170442           0 :      if (initializedName != NULL)
  170443             :         {
  170444             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  170445           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  170446           0 :           ROSE_ASSERT(start != NULL);
  170447             : #if 0
  170448             :        // Debugging information
  170449             :           if (start->get_parent() == NULL)
  170450             :              {
  170451             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170452             :              }
  170453             : #endif
  170454           0 :           start->set_parent(initializedName);
  170455           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  170456             : 
  170457             : #if 0
  170458             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  170459             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  170460             : 
  170461             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  170462             :        // ROSE_ASSERT(end != NULL);
  170463             :           if (end == NULL)
  170464             :              {
  170465             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  170466             :              }
  170467             :             else
  170468             :              {
  170469             :                if (end->get_parent() == NULL)
  170470             :                   {
  170471             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170472             :                   }
  170473             :                end->set_parent(initializedName);
  170474             :                ROSE_ASSERT(end->get_parent() != NULL);
  170475             :              }
  170476             : #endif
  170477             :         }
  170478             : 
  170479             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  170480           0 :      help.insertCopiedNodePair(this,result);
  170481             : 
  170482             :   // printf ("End of copy SgUnsignedIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  170483             : 
  170484             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  170485             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  170486           0 :      help.decrementDepth();
  170487             : 
  170488             :   // Test if this is the root of the copy!
  170489           0 :      if (help.get_depth() == 0)
  170490             :         {
  170491             :        // This is the original calling node.
  170492             : 
  170493             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  170494             :        // printf ("Calling SgUnsignedIntVal::fixupCopy() (from root of AST being copied) \n");
  170495             : #if ALT_FIXUP_COPY
  170496             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  170497           0 :           fixupCopy_scopes (result,help);
  170498           0 :           fixupCopy_symbols (result,help);
  170499           0 :           fixupCopy_references (result,help);
  170500             : #else
  170501             :           fixupCopy(result,help);
  170502             : #endif
  170503             :        // Allow this to be called recursively, so accumulate the state.
  170504             :        // Also, clear the state in the SgCopyHelp object.
  170505             :        // help.clearState();
  170506             :         }
  170507             : 
  170508           0 :      return result;
  170509             :    }
  170510             : 
  170511             : 
  170512             : /* #line 170513 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  170513             : 
  170514             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170515             : 
  170516           0 : SgNode* SgLongIntVal::copy ( SgCopyHelp& help) const
  170517             :    {
  170518           0 :      SgLongIntVal* result = NULL;
  170519             : 
  170520             :   // printf ("Copy SgLongIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  170521             : 
  170522             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  170523             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  170524             :   // The default value of the depth is 0, so after this call the depth is 1!
  170525           0 :      help.incrementDepth();
  170526             : 
  170527             : #if 0
  170528             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  170529             :   // but it is not generally true that things can only be copied once!
  170530             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  170531             :   // AstAttribute* existingAttribute = const_cast<SgLongIntVal*>(this)->attribute["copied"];
  170532             :      bool previouslyCopied = const_cast<SgLongIntVal*>(this)->attribute.exists("copied");
  170533             :      if (previouslyCopied == true)
  170534             :         {
  170535             :           this->get_file_info()->display("Called from copy SgLongIntVal: debug");
  170536             :         }
  170537             :      ROSE_ASSERT(previouslyCopied == false);
  170538             : 
  170539             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  170540             :      AstAttribute* newAttribute = new AstAttribute();
  170541             :      ROSE_ASSERT(newAttribute != NULL);
  170542             : 
  170543             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  170544             :      const_cast<SgLongIntVal*>(this)->attribute.add("copied",newAttribute);
  170545             : #endif
  170546             : 
  170547             :   // Copy data members from base classes
  170548             :   // Copy constructor parameter data member: startOfConstruct_copy
  170549             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  170550             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  170551           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  170552           0 :      if ( p_startOfConstruct != NULL ) 
  170553             :         { 
  170554           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  170555             :         } 
  170556             :        else 
  170557             :         { 
  170558             :           startOfConstruct_copy = NULL; 
  170559             :         } 
  170560             :   // Copy constructor parameter data member: value_copy
  170561             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  170562             :   // case: toBeCopied == COPY_DATA for value
  170563           0 :      long int value_copy = p_value; 
  170564             :   // Copy constructor parameter data member: valueString_copy
  170565             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  170566             :   // case: toBeCopied == COPY_DATA for valueString
  170567           0 :      std::string valueString_copy = p_valueString; 
  170568             :  
  170569             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170570             : 
  170571             :   // Build an empty copy of this object (will be filled in, but 
  170572             :   // the parent can't be set and must be set by the caller)
  170573           0 :      result = new SgLongIntVal(  startOfConstruct_copy, value_copy, valueString_copy );
  170574           0 :      ROSE_ASSERT(result != NULL);
  170575             : 
  170576             :   // Copy data members of "this" class
  170577             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  170578             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  170579             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  170580           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  170581           0 :      if ( p_endOfConstruct != NULL ) 
  170582             :         { 
  170583           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  170584             :         } 
  170585             :        else 
  170586             :         { 
  170587             :           endOfConstruct_copy = NULL; 
  170588             :         } 
  170589             :   /* check for a valid pointer and delete if present */ 
  170590           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  170591             :   /* add assignment to result here */ 
  170592           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  170593             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  170594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  170595             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  170596           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  170597           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  170598             :         { 
  170599           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  170600             :         } 
  170601             :        else 
  170602             :         { 
  170603             :           attachedPreprocessingInfoPtr_copy = NULL; 
  170604             :         } 
  170605             :   /* check for a valid pointer and delete if present */ 
  170606           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  170607             :   /* add assignment to result here */ 
  170608           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  170609             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  170610             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  170611             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  170612           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  170613           0 :      if ( p_attributeMechanism != NULL ) 
  170614             :         { 
  170615           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  170616             :         } 
  170617             :        else 
  170618             :         { 
  170619             :           attributeMechanism_copy = NULL; 
  170620             :         } 
  170621             :   /* check for a valid pointer and delete if present */ 
  170622           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  170623             :   /* add assignment to result here */ 
  170624           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  170625             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  170626             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  170627             :   // case: toBeCopied == COPY_DATA for need_paren
  170628           0 :      bool need_paren_copy = p_need_paren; 
  170629           0 :      result->p_need_paren = need_paren_copy; 
  170630             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  170631             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  170632             :   // case: toBeCopied == COPY_DATA for lvalue
  170633           0 :      bool lvalue_copy = p_lvalue; 
  170634           0 :      result->p_lvalue = lvalue_copy; 
  170635             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  170636             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  170637             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  170638           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  170639           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  170640             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  170641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  170642             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  170643           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  170644           0 :      if ( p_operatorPosition != NULL ) 
  170645             :         { 
  170646           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  170647             :         } 
  170648             :        else 
  170649             :         { 
  170650             :           operatorPosition_copy = NULL; 
  170651             :         } 
  170652             :   /* check for a valid pointer and delete if present */ 
  170653           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  170654             :   /* add assignment to result here */ 
  170655           0 :      result->p_operatorPosition = operatorPosition_copy; 
  170656             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  170657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  170658             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  170659           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  170660           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  170661             : 
  170662             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170663             : 
  170664             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  170665             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  170666             :   // fixupCopy(result,help);
  170667             : 
  170668             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  170669             :   // the Sg_File_Info objects that are built for the new IR nodes.
  170670           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  170671           0 :      if (locatedNode != NULL)
  170672             :         {
  170673             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  170674           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  170675           0 :           ROSE_ASSERT(start != NULL);
  170676             : #if 0
  170677             :        // Debugging information
  170678             :           if (start->get_parent() == NULL)
  170679             :              {
  170680             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170681             :              }
  170682             : #endif
  170683           0 :           start->set_parent(locatedNode);
  170684           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  170685             : 
  170686           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  170687             : 
  170688             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  170689             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  170690             :        // ROSE_ASSERT(end != NULL);
  170691           0 :           if (end == NULL)
  170692             :              {
  170693           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  170694             :              }
  170695             :             else
  170696             :              {
  170697             : #if 0
  170698             :             // Debugging information
  170699             :                if (end->get_parent() == NULL)
  170700             :                   {
  170701             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170702             :                   }
  170703             : #endif
  170704           0 :                end->set_parent(locatedNode);
  170705           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  170706             :              }
  170707             : 
  170708           0 :           SgExpression* expression = isSgExpression(result);
  170709           0 :           if (isSgExpression(this) != NULL)
  170710             :              {
  170711           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  170712             : 
  170713             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  170714           0 :                if (operatorPosition != NULL)
  170715             :                   {
  170716             : #if 0
  170717             :                  // Debugging information
  170718             :                     if (operatorPosition->get_parent() == NULL)
  170719             :                        {
  170720             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170721             :                        }
  170722             : #endif
  170723           0 :                     operatorPosition->set_parent(expression);
  170724           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  170725             :                   }
  170726             :              }
  170727             :         }
  170728             : 
  170729             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  170730           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  170731           0 :      if (initializedName != NULL)
  170732             :         {
  170733             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  170734           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  170735           0 :           ROSE_ASSERT(start != NULL);
  170736             : #if 0
  170737             :        // Debugging information
  170738             :           if (start->get_parent() == NULL)
  170739             :              {
  170740             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170741             :              }
  170742             : #endif
  170743           0 :           start->set_parent(initializedName);
  170744           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  170745             : 
  170746             : #if 0
  170747             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  170748             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  170749             : 
  170750             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  170751             :        // ROSE_ASSERT(end != NULL);
  170752             :           if (end == NULL)
  170753             :              {
  170754             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  170755             :              }
  170756             :             else
  170757             :              {
  170758             :                if (end->get_parent() == NULL)
  170759             :                   {
  170760             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170761             :                   }
  170762             :                end->set_parent(initializedName);
  170763             :                ROSE_ASSERT(end->get_parent() != NULL);
  170764             :              }
  170765             : #endif
  170766             :         }
  170767             : 
  170768             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  170769           0 :      help.insertCopiedNodePair(this,result);
  170770             : 
  170771             :   // printf ("End of copy SgLongIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  170772             : 
  170773             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  170774             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  170775           0 :      help.decrementDepth();
  170776             : 
  170777             :   // Test if this is the root of the copy!
  170778           0 :      if (help.get_depth() == 0)
  170779             :         {
  170780             :        // This is the original calling node.
  170781             : 
  170782             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  170783             :        // printf ("Calling SgLongIntVal::fixupCopy() (from root of AST being copied) \n");
  170784             : #if ALT_FIXUP_COPY
  170785             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  170786           0 :           fixupCopy_scopes (result,help);
  170787           0 :           fixupCopy_symbols (result,help);
  170788           0 :           fixupCopy_references (result,help);
  170789             : #else
  170790             :           fixupCopy(result,help);
  170791             : #endif
  170792             :        // Allow this to be called recursively, so accumulate the state.
  170793             :        // Also, clear the state in the SgCopyHelp object.
  170794             :        // help.clearState();
  170795             :         }
  170796             : 
  170797           0 :      return result;
  170798             :    }
  170799             : 
  170800             : 
  170801             : /* #line 170802 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  170802             : 
  170803             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170804             : 
  170805           0 : SgNode* SgLongLongIntVal::copy ( SgCopyHelp& help) const
  170806             :    {
  170807           0 :      SgLongLongIntVal* result = NULL;
  170808             : 
  170809             :   // printf ("Copy SgLongLongIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  170810             : 
  170811             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  170812             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  170813             :   // The default value of the depth is 0, so after this call the depth is 1!
  170814           0 :      help.incrementDepth();
  170815             : 
  170816             : #if 0
  170817             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  170818             :   // but it is not generally true that things can only be copied once!
  170819             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  170820             :   // AstAttribute* existingAttribute = const_cast<SgLongLongIntVal*>(this)->attribute["copied"];
  170821             :      bool previouslyCopied = const_cast<SgLongLongIntVal*>(this)->attribute.exists("copied");
  170822             :      if (previouslyCopied == true)
  170823             :         {
  170824             :           this->get_file_info()->display("Called from copy SgLongLongIntVal: debug");
  170825             :         }
  170826             :      ROSE_ASSERT(previouslyCopied == false);
  170827             : 
  170828             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  170829             :      AstAttribute* newAttribute = new AstAttribute();
  170830             :      ROSE_ASSERT(newAttribute != NULL);
  170831             : 
  170832             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  170833             :      const_cast<SgLongLongIntVal*>(this)->attribute.add("copied",newAttribute);
  170834             : #endif
  170835             : 
  170836             :   // Copy data members from base classes
  170837             :   // Copy constructor parameter data member: startOfConstruct_copy
  170838             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  170839             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  170840           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  170841           0 :      if ( p_startOfConstruct != NULL ) 
  170842             :         { 
  170843           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  170844             :         } 
  170845             :        else 
  170846             :         { 
  170847             :           startOfConstruct_copy = NULL; 
  170848             :         } 
  170849             :   // Copy constructor parameter data member: value_copy
  170850             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  170851             :   // case: toBeCopied == COPY_DATA for value
  170852           0 :      long long int value_copy = p_value; 
  170853             :   // Copy constructor parameter data member: valueString_copy
  170854             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  170855             :   // case: toBeCopied == COPY_DATA for valueString
  170856           0 :      std::string valueString_copy = p_valueString; 
  170857             :  
  170858             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170859             : 
  170860             :   // Build an empty copy of this object (will be filled in, but 
  170861             :   // the parent can't be set and must be set by the caller)
  170862           0 :      result = new SgLongLongIntVal(  startOfConstruct_copy, value_copy, valueString_copy );
  170863           0 :      ROSE_ASSERT(result != NULL);
  170864             : 
  170865             :   // Copy data members of "this" class
  170866             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  170867             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  170868             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  170869           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  170870           0 :      if ( p_endOfConstruct != NULL ) 
  170871             :         { 
  170872           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  170873             :         } 
  170874             :        else 
  170875             :         { 
  170876             :           endOfConstruct_copy = NULL; 
  170877             :         } 
  170878             :   /* check for a valid pointer and delete if present */ 
  170879           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  170880             :   /* add assignment to result here */ 
  170881           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  170882             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  170883             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  170884             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  170885           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  170886           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  170887             :         { 
  170888           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  170889             :         } 
  170890             :        else 
  170891             :         { 
  170892             :           attachedPreprocessingInfoPtr_copy = NULL; 
  170893             :         } 
  170894             :   /* check for a valid pointer and delete if present */ 
  170895           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  170896             :   /* add assignment to result here */ 
  170897           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  170898             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  170899             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  170900             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  170901           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  170902           0 :      if ( p_attributeMechanism != NULL ) 
  170903             :         { 
  170904           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  170905             :         } 
  170906             :        else 
  170907             :         { 
  170908             :           attributeMechanism_copy = NULL; 
  170909             :         } 
  170910             :   /* check for a valid pointer and delete if present */ 
  170911           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  170912             :   /* add assignment to result here */ 
  170913           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  170914             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  170915             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  170916             :   // case: toBeCopied == COPY_DATA for need_paren
  170917           0 :      bool need_paren_copy = p_need_paren; 
  170918           0 :      result->p_need_paren = need_paren_copy; 
  170919             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  170920             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  170921             :   // case: toBeCopied == COPY_DATA for lvalue
  170922           0 :      bool lvalue_copy = p_lvalue; 
  170923           0 :      result->p_lvalue = lvalue_copy; 
  170924             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  170925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  170926             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  170927           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  170928           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  170929             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  170930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  170931             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  170932           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  170933           0 :      if ( p_operatorPosition != NULL ) 
  170934             :         { 
  170935           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  170936             :         } 
  170937             :        else 
  170938             :         { 
  170939             :           operatorPosition_copy = NULL; 
  170940             :         } 
  170941             :   /* check for a valid pointer and delete if present */ 
  170942           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  170943             :   /* add assignment to result here */ 
  170944           0 :      result->p_operatorPosition = operatorPosition_copy; 
  170945             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  170946             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  170947             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  170948           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  170949           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  170950             : 
  170951             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  170952             : 
  170953             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  170954             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  170955             :   // fixupCopy(result,help);
  170956             : 
  170957             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  170958             :   // the Sg_File_Info objects that are built for the new IR nodes.
  170959           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  170960           0 :      if (locatedNode != NULL)
  170961             :         {
  170962             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  170963           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  170964           0 :           ROSE_ASSERT(start != NULL);
  170965             : #if 0
  170966             :        // Debugging information
  170967             :           if (start->get_parent() == NULL)
  170968             :              {
  170969             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170970             :              }
  170971             : #endif
  170972           0 :           start->set_parent(locatedNode);
  170973           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  170974             : 
  170975           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  170976             : 
  170977             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  170978             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  170979             :        // ROSE_ASSERT(end != NULL);
  170980           0 :           if (end == NULL)
  170981             :              {
  170982           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  170983             :              }
  170984             :             else
  170985             :              {
  170986             : #if 0
  170987             :             // Debugging information
  170988             :                if (end->get_parent() == NULL)
  170989             :                   {
  170990             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  170991             :                   }
  170992             : #endif
  170993           0 :                end->set_parent(locatedNode);
  170994           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  170995             :              }
  170996             : 
  170997           0 :           SgExpression* expression = isSgExpression(result);
  170998           0 :           if (isSgExpression(this) != NULL)
  170999             :              {
  171000           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  171001             : 
  171002             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  171003           0 :                if (operatorPosition != NULL)
  171004             :                   {
  171005             : #if 0
  171006             :                  // Debugging information
  171007             :                     if (operatorPosition->get_parent() == NULL)
  171008             :                        {
  171009             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171010             :                        }
  171011             : #endif
  171012           0 :                     operatorPosition->set_parent(expression);
  171013           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  171014             :                   }
  171015             :              }
  171016             :         }
  171017             : 
  171018             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  171019           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  171020           0 :      if (initializedName != NULL)
  171021             :         {
  171022             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  171023           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  171024           0 :           ROSE_ASSERT(start != NULL);
  171025             : #if 0
  171026             :        // Debugging information
  171027             :           if (start->get_parent() == NULL)
  171028             :              {
  171029             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171030             :              }
  171031             : #endif
  171032           0 :           start->set_parent(initializedName);
  171033           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  171034             : 
  171035             : #if 0
  171036             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  171037             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  171038             : 
  171039             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  171040             :        // ROSE_ASSERT(end != NULL);
  171041             :           if (end == NULL)
  171042             :              {
  171043             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  171044             :              }
  171045             :             else
  171046             :              {
  171047             :                if (end->get_parent() == NULL)
  171048             :                   {
  171049             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171050             :                   }
  171051             :                end->set_parent(initializedName);
  171052             :                ROSE_ASSERT(end->get_parent() != NULL);
  171053             :              }
  171054             : #endif
  171055             :         }
  171056             : 
  171057             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  171058           0 :      help.insertCopiedNodePair(this,result);
  171059             : 
  171060             :   // printf ("End of copy SgLongLongIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  171061             : 
  171062             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  171063             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  171064           0 :      help.decrementDepth();
  171065             : 
  171066             :   // Test if this is the root of the copy!
  171067           0 :      if (help.get_depth() == 0)
  171068             :         {
  171069             :        // This is the original calling node.
  171070             : 
  171071             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  171072             :        // printf ("Calling SgLongLongIntVal::fixupCopy() (from root of AST being copied) \n");
  171073             : #if ALT_FIXUP_COPY
  171074             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  171075           0 :           fixupCopy_scopes (result,help);
  171076           0 :           fixupCopy_symbols (result,help);
  171077           0 :           fixupCopy_references (result,help);
  171078             : #else
  171079             :           fixupCopy(result,help);
  171080             : #endif
  171081             :        // Allow this to be called recursively, so accumulate the state.
  171082             :        // Also, clear the state in the SgCopyHelp object.
  171083             :        // help.clearState();
  171084             :         }
  171085             : 
  171086           0 :      return result;
  171087             :    }
  171088             : 
  171089             : 
  171090             : /* #line 171091 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  171091             : 
  171092             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171093             : 
  171094           0 : SgNode* SgUnsignedLongLongIntVal::copy ( SgCopyHelp& help) const
  171095             :    {
  171096           0 :      SgUnsignedLongLongIntVal* result = NULL;
  171097             : 
  171098             :   // printf ("Copy SgUnsignedLongLongIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  171099             : 
  171100             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  171101             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  171102             :   // The default value of the depth is 0, so after this call the depth is 1!
  171103           0 :      help.incrementDepth();
  171104             : 
  171105             : #if 0
  171106             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  171107             :   // but it is not generally true that things can only be copied once!
  171108             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  171109             :   // AstAttribute* existingAttribute = const_cast<SgUnsignedLongLongIntVal*>(this)->attribute["copied"];
  171110             :      bool previouslyCopied = const_cast<SgUnsignedLongLongIntVal*>(this)->attribute.exists("copied");
  171111             :      if (previouslyCopied == true)
  171112             :         {
  171113             :           this->get_file_info()->display("Called from copy SgUnsignedLongLongIntVal: debug");
  171114             :         }
  171115             :      ROSE_ASSERT(previouslyCopied == false);
  171116             : 
  171117             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  171118             :      AstAttribute* newAttribute = new AstAttribute();
  171119             :      ROSE_ASSERT(newAttribute != NULL);
  171120             : 
  171121             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  171122             :      const_cast<SgUnsignedLongLongIntVal*>(this)->attribute.add("copied",newAttribute);
  171123             : #endif
  171124             : 
  171125             :   // Copy data members from base classes
  171126             :   // Copy constructor parameter data member: startOfConstruct_copy
  171127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  171128             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  171129           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  171130           0 :      if ( p_startOfConstruct != NULL ) 
  171131             :         { 
  171132           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  171133             :         } 
  171134             :        else 
  171135             :         { 
  171136             :           startOfConstruct_copy = NULL; 
  171137             :         } 
  171138             :   // Copy constructor parameter data member: value_copy
  171139             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  171140             :   // case: toBeCopied == COPY_DATA for value
  171141           0 :      unsigned long long int value_copy = p_value; 
  171142             :   // Copy constructor parameter data member: valueString_copy
  171143             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  171144             :   // case: toBeCopied == COPY_DATA for valueString
  171145           0 :      std::string valueString_copy = p_valueString; 
  171146             :  
  171147             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171148             : 
  171149             :   // Build an empty copy of this object (will be filled in, but 
  171150             :   // the parent can't be set and must be set by the caller)
  171151           0 :      result = new SgUnsignedLongLongIntVal(  startOfConstruct_copy, value_copy, valueString_copy );
  171152           0 :      ROSE_ASSERT(result != NULL);
  171153             : 
  171154             :   // Copy data members of "this" class
  171155             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  171156             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  171157             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  171158           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  171159           0 :      if ( p_endOfConstruct != NULL ) 
  171160             :         { 
  171161           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  171162             :         } 
  171163             :        else 
  171164             :         { 
  171165             :           endOfConstruct_copy = NULL; 
  171166             :         } 
  171167             :   /* check for a valid pointer and delete if present */ 
  171168           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  171169             :   /* add assignment to result here */ 
  171170           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  171171             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  171172             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  171173             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  171174           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  171175           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  171176             :         { 
  171177           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  171178             :         } 
  171179             :        else 
  171180             :         { 
  171181             :           attachedPreprocessingInfoPtr_copy = NULL; 
  171182             :         } 
  171183             :   /* check for a valid pointer and delete if present */ 
  171184           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  171185             :   /* add assignment to result here */ 
  171186           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  171187             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  171188             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  171189             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  171190           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  171191           0 :      if ( p_attributeMechanism != NULL ) 
  171192             :         { 
  171193           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  171194             :         } 
  171195             :        else 
  171196             :         { 
  171197             :           attributeMechanism_copy = NULL; 
  171198             :         } 
  171199             :   /* check for a valid pointer and delete if present */ 
  171200           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  171201             :   /* add assignment to result here */ 
  171202           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  171203             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  171204             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  171205             :   // case: toBeCopied == COPY_DATA for need_paren
  171206           0 :      bool need_paren_copy = p_need_paren; 
  171207           0 :      result->p_need_paren = need_paren_copy; 
  171208             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  171209             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  171210             :   // case: toBeCopied == COPY_DATA for lvalue
  171211           0 :      bool lvalue_copy = p_lvalue; 
  171212           0 :      result->p_lvalue = lvalue_copy; 
  171213             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  171214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  171215             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  171216           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  171217           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  171218             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  171219             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  171220             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  171221           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  171222           0 :      if ( p_operatorPosition != NULL ) 
  171223             :         { 
  171224           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  171225             :         } 
  171226             :        else 
  171227             :         { 
  171228             :           operatorPosition_copy = NULL; 
  171229             :         } 
  171230             :   /* check for a valid pointer and delete if present */ 
  171231           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  171232             :   /* add assignment to result here */ 
  171233           0 :      result->p_operatorPosition = operatorPosition_copy; 
  171234             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  171235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  171236             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  171237           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  171238           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  171239             : 
  171240             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171241             : 
  171242             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  171243             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  171244             :   // fixupCopy(result,help);
  171245             : 
  171246             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  171247             :   // the Sg_File_Info objects that are built for the new IR nodes.
  171248           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  171249           0 :      if (locatedNode != NULL)
  171250             :         {
  171251             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  171252           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  171253           0 :           ROSE_ASSERT(start != NULL);
  171254             : #if 0
  171255             :        // Debugging information
  171256             :           if (start->get_parent() == NULL)
  171257             :              {
  171258             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171259             :              }
  171260             : #endif
  171261           0 :           start->set_parent(locatedNode);
  171262           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  171263             : 
  171264           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  171265             : 
  171266             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  171267             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  171268             :        // ROSE_ASSERT(end != NULL);
  171269           0 :           if (end == NULL)
  171270             :              {
  171271           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  171272             :              }
  171273             :             else
  171274             :              {
  171275             : #if 0
  171276             :             // Debugging information
  171277             :                if (end->get_parent() == NULL)
  171278             :                   {
  171279             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171280             :                   }
  171281             : #endif
  171282           0 :                end->set_parent(locatedNode);
  171283           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  171284             :              }
  171285             : 
  171286           0 :           SgExpression* expression = isSgExpression(result);
  171287           0 :           if (isSgExpression(this) != NULL)
  171288             :              {
  171289           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  171290             : 
  171291             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  171292           0 :                if (operatorPosition != NULL)
  171293             :                   {
  171294             : #if 0
  171295             :                  // Debugging information
  171296             :                     if (operatorPosition->get_parent() == NULL)
  171297             :                        {
  171298             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171299             :                        }
  171300             : #endif
  171301           0 :                     operatorPosition->set_parent(expression);
  171302           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  171303             :                   }
  171304             :              }
  171305             :         }
  171306             : 
  171307             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  171308           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  171309           0 :      if (initializedName != NULL)
  171310             :         {
  171311             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  171312           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  171313           0 :           ROSE_ASSERT(start != NULL);
  171314             : #if 0
  171315             :        // Debugging information
  171316             :           if (start->get_parent() == NULL)
  171317             :              {
  171318             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171319             :              }
  171320             : #endif
  171321           0 :           start->set_parent(initializedName);
  171322           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  171323             : 
  171324             : #if 0
  171325             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  171326             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  171327             : 
  171328             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  171329             :        // ROSE_ASSERT(end != NULL);
  171330             :           if (end == NULL)
  171331             :              {
  171332             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  171333             :              }
  171334             :             else
  171335             :              {
  171336             :                if (end->get_parent() == NULL)
  171337             :                   {
  171338             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171339             :                   }
  171340             :                end->set_parent(initializedName);
  171341             :                ROSE_ASSERT(end->get_parent() != NULL);
  171342             :              }
  171343             : #endif
  171344             :         }
  171345             : 
  171346             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  171347           0 :      help.insertCopiedNodePair(this,result);
  171348             : 
  171349             :   // printf ("End of copy SgUnsignedLongLongIntVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  171350             : 
  171351             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  171352             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  171353           0 :      help.decrementDepth();
  171354             : 
  171355             :   // Test if this is the root of the copy!
  171356           0 :      if (help.get_depth() == 0)
  171357             :         {
  171358             :        // This is the original calling node.
  171359             : 
  171360             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  171361             :        // printf ("Calling SgUnsignedLongLongIntVal::fixupCopy() (from root of AST being copied) \n");
  171362             : #if ALT_FIXUP_COPY
  171363             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  171364           0 :           fixupCopy_scopes (result,help);
  171365           0 :           fixupCopy_symbols (result,help);
  171366           0 :           fixupCopy_references (result,help);
  171367             : #else
  171368             :           fixupCopy(result,help);
  171369             : #endif
  171370             :        // Allow this to be called recursively, so accumulate the state.
  171371             :        // Also, clear the state in the SgCopyHelp object.
  171372             :        // help.clearState();
  171373             :         }
  171374             : 
  171375           0 :      return result;
  171376             :    }
  171377             : 
  171378             : 
  171379             : /* #line 171380 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  171380             : 
  171381             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171382             : 
  171383           0 : SgNode* SgUnsignedLongVal::copy ( SgCopyHelp& help) const
  171384             :    {
  171385           0 :      SgUnsignedLongVal* result = NULL;
  171386             : 
  171387             :   // printf ("Copy SgUnsignedLongVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  171388             : 
  171389             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  171390             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  171391             :   // The default value of the depth is 0, so after this call the depth is 1!
  171392           0 :      help.incrementDepth();
  171393             : 
  171394             : #if 0
  171395             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  171396             :   // but it is not generally true that things can only be copied once!
  171397             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  171398             :   // AstAttribute* existingAttribute = const_cast<SgUnsignedLongVal*>(this)->attribute["copied"];
  171399             :      bool previouslyCopied = const_cast<SgUnsignedLongVal*>(this)->attribute.exists("copied");
  171400             :      if (previouslyCopied == true)
  171401             :         {
  171402             :           this->get_file_info()->display("Called from copy SgUnsignedLongVal: debug");
  171403             :         }
  171404             :      ROSE_ASSERT(previouslyCopied == false);
  171405             : 
  171406             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  171407             :      AstAttribute* newAttribute = new AstAttribute();
  171408             :      ROSE_ASSERT(newAttribute != NULL);
  171409             : 
  171410             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  171411             :      const_cast<SgUnsignedLongVal*>(this)->attribute.add("copied",newAttribute);
  171412             : #endif
  171413             : 
  171414             :   // Copy data members from base classes
  171415             :   // Copy constructor parameter data member: startOfConstruct_copy
  171416             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  171417             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  171418           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  171419           0 :      if ( p_startOfConstruct != NULL ) 
  171420             :         { 
  171421           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  171422             :         } 
  171423             :        else 
  171424             :         { 
  171425             :           startOfConstruct_copy = NULL; 
  171426             :         } 
  171427             :   // Copy constructor parameter data member: value_copy
  171428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  171429             :   // case: toBeCopied == COPY_DATA for value
  171430           0 :      unsigned long value_copy = p_value; 
  171431             :   // Copy constructor parameter data member: valueString_copy
  171432             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  171433             :   // case: toBeCopied == COPY_DATA for valueString
  171434           0 :      std::string valueString_copy = p_valueString; 
  171435             :  
  171436             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171437             : 
  171438             :   // Build an empty copy of this object (will be filled in, but 
  171439             :   // the parent can't be set and must be set by the caller)
  171440           0 :      result = new SgUnsignedLongVal(  startOfConstruct_copy, value_copy, valueString_copy );
  171441           0 :      ROSE_ASSERT(result != NULL);
  171442             : 
  171443             :   // Copy data members of "this" class
  171444             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  171445             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  171446             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  171447           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  171448           0 :      if ( p_endOfConstruct != NULL ) 
  171449             :         { 
  171450           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  171451             :         } 
  171452             :        else 
  171453             :         { 
  171454             :           endOfConstruct_copy = NULL; 
  171455             :         } 
  171456             :   /* check for a valid pointer and delete if present */ 
  171457           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  171458             :   /* add assignment to result here */ 
  171459           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  171460             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  171461             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  171462             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  171463           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  171464           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  171465             :         { 
  171466           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  171467             :         } 
  171468             :        else 
  171469             :         { 
  171470             :           attachedPreprocessingInfoPtr_copy = NULL; 
  171471             :         } 
  171472             :   /* check for a valid pointer and delete if present */ 
  171473           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  171474             :   /* add assignment to result here */ 
  171475           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  171476             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  171477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  171478             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  171479           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  171480           0 :      if ( p_attributeMechanism != NULL ) 
  171481             :         { 
  171482           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  171483             :         } 
  171484             :        else 
  171485             :         { 
  171486             :           attributeMechanism_copy = NULL; 
  171487             :         } 
  171488             :   /* check for a valid pointer and delete if present */ 
  171489           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  171490             :   /* add assignment to result here */ 
  171491           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  171492             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  171493             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  171494             :   // case: toBeCopied == COPY_DATA for need_paren
  171495           0 :      bool need_paren_copy = p_need_paren; 
  171496           0 :      result->p_need_paren = need_paren_copy; 
  171497             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  171498             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  171499             :   // case: toBeCopied == COPY_DATA for lvalue
  171500           0 :      bool lvalue_copy = p_lvalue; 
  171501           0 :      result->p_lvalue = lvalue_copy; 
  171502             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  171503             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  171504             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  171505           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  171506           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  171507             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  171508             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  171509             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  171510           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  171511           0 :      if ( p_operatorPosition != NULL ) 
  171512             :         { 
  171513           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  171514             :         } 
  171515             :        else 
  171516             :         { 
  171517             :           operatorPosition_copy = NULL; 
  171518             :         } 
  171519             :   /* check for a valid pointer and delete if present */ 
  171520           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  171521             :   /* add assignment to result here */ 
  171522           0 :      result->p_operatorPosition = operatorPosition_copy; 
  171523             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  171524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  171525             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  171526           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  171527           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  171528             : 
  171529             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171530             : 
  171531             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  171532             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  171533             :   // fixupCopy(result,help);
  171534             : 
  171535             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  171536             :   // the Sg_File_Info objects that are built for the new IR nodes.
  171537           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  171538           0 :      if (locatedNode != NULL)
  171539             :         {
  171540             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  171541           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  171542           0 :           ROSE_ASSERT(start != NULL);
  171543             : #if 0
  171544             :        // Debugging information
  171545             :           if (start->get_parent() == NULL)
  171546             :              {
  171547             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171548             :              }
  171549             : #endif
  171550           0 :           start->set_parent(locatedNode);
  171551           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  171552             : 
  171553           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  171554             : 
  171555             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  171556             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  171557             :        // ROSE_ASSERT(end != NULL);
  171558           0 :           if (end == NULL)
  171559             :              {
  171560           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  171561             :              }
  171562             :             else
  171563             :              {
  171564             : #if 0
  171565             :             // Debugging information
  171566             :                if (end->get_parent() == NULL)
  171567             :                   {
  171568             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171569             :                   }
  171570             : #endif
  171571           0 :                end->set_parent(locatedNode);
  171572           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  171573             :              }
  171574             : 
  171575           0 :           SgExpression* expression = isSgExpression(result);
  171576           0 :           if (isSgExpression(this) != NULL)
  171577             :              {
  171578           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  171579             : 
  171580             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  171581           0 :                if (operatorPosition != NULL)
  171582             :                   {
  171583             : #if 0
  171584             :                  // Debugging information
  171585             :                     if (operatorPosition->get_parent() == NULL)
  171586             :                        {
  171587             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171588             :                        }
  171589             : #endif
  171590           0 :                     operatorPosition->set_parent(expression);
  171591           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  171592             :                   }
  171593             :              }
  171594             :         }
  171595             : 
  171596             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  171597           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  171598           0 :      if (initializedName != NULL)
  171599             :         {
  171600             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  171601           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  171602           0 :           ROSE_ASSERT(start != NULL);
  171603             : #if 0
  171604             :        // Debugging information
  171605             :           if (start->get_parent() == NULL)
  171606             :              {
  171607             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171608             :              }
  171609             : #endif
  171610           0 :           start->set_parent(initializedName);
  171611           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  171612             : 
  171613             : #if 0
  171614             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  171615             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  171616             : 
  171617             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  171618             :        // ROSE_ASSERT(end != NULL);
  171619             :           if (end == NULL)
  171620             :              {
  171621             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  171622             :              }
  171623             :             else
  171624             :              {
  171625             :                if (end->get_parent() == NULL)
  171626             :                   {
  171627             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171628             :                   }
  171629             :                end->set_parent(initializedName);
  171630             :                ROSE_ASSERT(end->get_parent() != NULL);
  171631             :              }
  171632             : #endif
  171633             :         }
  171634             : 
  171635             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  171636           0 :      help.insertCopiedNodePair(this,result);
  171637             : 
  171638             :   // printf ("End of copy SgUnsignedLongVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  171639             : 
  171640             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  171641             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  171642           0 :      help.decrementDepth();
  171643             : 
  171644             :   // Test if this is the root of the copy!
  171645           0 :      if (help.get_depth() == 0)
  171646             :         {
  171647             :        // This is the original calling node.
  171648             : 
  171649             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  171650             :        // printf ("Calling SgUnsignedLongVal::fixupCopy() (from root of AST being copied) \n");
  171651             : #if ALT_FIXUP_COPY
  171652             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  171653           0 :           fixupCopy_scopes (result,help);
  171654           0 :           fixupCopy_symbols (result,help);
  171655           0 :           fixupCopy_references (result,help);
  171656             : #else
  171657             :           fixupCopy(result,help);
  171658             : #endif
  171659             :        // Allow this to be called recursively, so accumulate the state.
  171660             :        // Also, clear the state in the SgCopyHelp object.
  171661             :        // help.clearState();
  171662             :         }
  171663             : 
  171664           0 :      return result;
  171665             :    }
  171666             : 
  171667             : 
  171668             : /* #line 171669 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  171669             : 
  171670             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171671             : 
  171672           0 : SgNode* SgFloatVal::copy ( SgCopyHelp& help) const
  171673             :    {
  171674           0 :      SgFloatVal* result = NULL;
  171675             : 
  171676             :   // printf ("Copy SgFloatVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  171677             : 
  171678             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  171679             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  171680             :   // The default value of the depth is 0, so after this call the depth is 1!
  171681           0 :      help.incrementDepth();
  171682             : 
  171683             : #if 0
  171684             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  171685             :   // but it is not generally true that things can only be copied once!
  171686             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  171687             :   // AstAttribute* existingAttribute = const_cast<SgFloatVal*>(this)->attribute["copied"];
  171688             :      bool previouslyCopied = const_cast<SgFloatVal*>(this)->attribute.exists("copied");
  171689             :      if (previouslyCopied == true)
  171690             :         {
  171691             :           this->get_file_info()->display("Called from copy SgFloatVal: debug");
  171692             :         }
  171693             :      ROSE_ASSERT(previouslyCopied == false);
  171694             : 
  171695             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  171696             :      AstAttribute* newAttribute = new AstAttribute();
  171697             :      ROSE_ASSERT(newAttribute != NULL);
  171698             : 
  171699             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  171700             :      const_cast<SgFloatVal*>(this)->attribute.add("copied",newAttribute);
  171701             : #endif
  171702             : 
  171703             :   // Copy data members from base classes
  171704             :   // Copy constructor parameter data member: startOfConstruct_copy
  171705             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  171706             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  171707           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  171708           0 :      if ( p_startOfConstruct != NULL ) 
  171709             :         { 
  171710           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  171711             :         } 
  171712             :        else 
  171713             :         { 
  171714             :           startOfConstruct_copy = NULL; 
  171715             :         } 
  171716             :   // Copy constructor parameter data member: value_copy
  171717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  171718             :   // case: toBeCopied == COPY_DATA for value
  171719           0 :      float value_copy = p_value; 
  171720             :   // Copy constructor parameter data member: valueString_copy
  171721             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  171722             :   // case: toBeCopied == COPY_DATA for valueString
  171723           0 :      std::string valueString_copy = p_valueString; 
  171724             :  
  171725             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171726             : 
  171727             :   // Build an empty copy of this object (will be filled in, but 
  171728             :   // the parent can't be set and must be set by the caller)
  171729           0 :      result = new SgFloatVal(  startOfConstruct_copy, value_copy, valueString_copy );
  171730           0 :      ROSE_ASSERT(result != NULL);
  171731             : 
  171732             :   // Copy data members of "this" class
  171733             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  171734             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  171735             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  171736           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  171737           0 :      if ( p_endOfConstruct != NULL ) 
  171738             :         { 
  171739           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  171740             :         } 
  171741             :        else 
  171742             :         { 
  171743             :           endOfConstruct_copy = NULL; 
  171744             :         } 
  171745             :   /* check for a valid pointer and delete if present */ 
  171746           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  171747             :   /* add assignment to result here */ 
  171748           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  171749             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  171750             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  171751             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  171752           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  171753           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  171754             :         { 
  171755           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  171756             :         } 
  171757             :        else 
  171758             :         { 
  171759             :           attachedPreprocessingInfoPtr_copy = NULL; 
  171760             :         } 
  171761             :   /* check for a valid pointer and delete if present */ 
  171762           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  171763             :   /* add assignment to result here */ 
  171764           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  171765             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  171766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  171767             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  171768           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  171769           0 :      if ( p_attributeMechanism != NULL ) 
  171770             :         { 
  171771           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  171772             :         } 
  171773             :        else 
  171774             :         { 
  171775             :           attributeMechanism_copy = NULL; 
  171776             :         } 
  171777             :   /* check for a valid pointer and delete if present */ 
  171778           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  171779             :   /* add assignment to result here */ 
  171780           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  171781             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  171782             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  171783             :   // case: toBeCopied == COPY_DATA for need_paren
  171784           0 :      bool need_paren_copy = p_need_paren; 
  171785           0 :      result->p_need_paren = need_paren_copy; 
  171786             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  171787             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  171788             :   // case: toBeCopied == COPY_DATA for lvalue
  171789           0 :      bool lvalue_copy = p_lvalue; 
  171790           0 :      result->p_lvalue = lvalue_copy; 
  171791             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  171792             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  171793             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  171794           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  171795           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  171796             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  171797             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  171798             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  171799           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  171800           0 :      if ( p_operatorPosition != NULL ) 
  171801             :         { 
  171802           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  171803             :         } 
  171804             :        else 
  171805             :         { 
  171806             :           operatorPosition_copy = NULL; 
  171807             :         } 
  171808             :   /* check for a valid pointer and delete if present */ 
  171809           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  171810             :   /* add assignment to result here */ 
  171811           0 :      result->p_operatorPosition = operatorPosition_copy; 
  171812             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  171813             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  171814             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  171815           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  171816           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  171817             : 
  171818             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171819             : 
  171820             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  171821             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  171822             :   // fixupCopy(result,help);
  171823             : 
  171824             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  171825             :   // the Sg_File_Info objects that are built for the new IR nodes.
  171826           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  171827           0 :      if (locatedNode != NULL)
  171828             :         {
  171829             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  171830           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  171831           0 :           ROSE_ASSERT(start != NULL);
  171832             : #if 0
  171833             :        // Debugging information
  171834             :           if (start->get_parent() == NULL)
  171835             :              {
  171836             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171837             :              }
  171838             : #endif
  171839           0 :           start->set_parent(locatedNode);
  171840           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  171841             : 
  171842           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  171843             : 
  171844             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  171845             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  171846             :        // ROSE_ASSERT(end != NULL);
  171847           0 :           if (end == NULL)
  171848             :              {
  171849           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  171850             :              }
  171851             :             else
  171852             :              {
  171853             : #if 0
  171854             :             // Debugging information
  171855             :                if (end->get_parent() == NULL)
  171856             :                   {
  171857             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171858             :                   }
  171859             : #endif
  171860           0 :                end->set_parent(locatedNode);
  171861           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  171862             :              }
  171863             : 
  171864           0 :           SgExpression* expression = isSgExpression(result);
  171865           0 :           if (isSgExpression(this) != NULL)
  171866             :              {
  171867           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  171868             : 
  171869             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  171870           0 :                if (operatorPosition != NULL)
  171871             :                   {
  171872             : #if 0
  171873             :                  // Debugging information
  171874             :                     if (operatorPosition->get_parent() == NULL)
  171875             :                        {
  171876             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171877             :                        }
  171878             : #endif
  171879           0 :                     operatorPosition->set_parent(expression);
  171880           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  171881             :                   }
  171882             :              }
  171883             :         }
  171884             : 
  171885             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  171886           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  171887           0 :      if (initializedName != NULL)
  171888             :         {
  171889             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  171890           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  171891           0 :           ROSE_ASSERT(start != NULL);
  171892             : #if 0
  171893             :        // Debugging information
  171894             :           if (start->get_parent() == NULL)
  171895             :              {
  171896             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171897             :              }
  171898             : #endif
  171899           0 :           start->set_parent(initializedName);
  171900           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  171901             : 
  171902             : #if 0
  171903             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  171904             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  171905             : 
  171906             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  171907             :        // ROSE_ASSERT(end != NULL);
  171908             :           if (end == NULL)
  171909             :              {
  171910             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  171911             :              }
  171912             :             else
  171913             :              {
  171914             :                if (end->get_parent() == NULL)
  171915             :                   {
  171916             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  171917             :                   }
  171918             :                end->set_parent(initializedName);
  171919             :                ROSE_ASSERT(end->get_parent() != NULL);
  171920             :              }
  171921             : #endif
  171922             :         }
  171923             : 
  171924             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  171925           0 :      help.insertCopiedNodePair(this,result);
  171926             : 
  171927             :   // printf ("End of copy SgFloatVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  171928             : 
  171929             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  171930             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  171931           0 :      help.decrementDepth();
  171932             : 
  171933             :   // Test if this is the root of the copy!
  171934           0 :      if (help.get_depth() == 0)
  171935             :         {
  171936             :        // This is the original calling node.
  171937             : 
  171938             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  171939             :        // printf ("Calling SgFloatVal::fixupCopy() (from root of AST being copied) \n");
  171940             : #if ALT_FIXUP_COPY
  171941             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  171942           0 :           fixupCopy_scopes (result,help);
  171943           0 :           fixupCopy_symbols (result,help);
  171944           0 :           fixupCopy_references (result,help);
  171945             : #else
  171946             :           fixupCopy(result,help);
  171947             : #endif
  171948             :        // Allow this to be called recursively, so accumulate the state.
  171949             :        // Also, clear the state in the SgCopyHelp object.
  171950             :        // help.clearState();
  171951             :         }
  171952             : 
  171953           0 :      return result;
  171954             :    }
  171955             : 
  171956             : 
  171957             : /* #line 171958 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  171958             : 
  171959             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  171960             : 
  171961           0 : SgNode* SgDoubleVal::copy ( SgCopyHelp& help) const
  171962             :    {
  171963           0 :      SgDoubleVal* result = NULL;
  171964             : 
  171965             :   // printf ("Copy SgDoubleVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  171966             : 
  171967             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  171968             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  171969             :   // The default value of the depth is 0, so after this call the depth is 1!
  171970           0 :      help.incrementDepth();
  171971             : 
  171972             : #if 0
  171973             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  171974             :   // but it is not generally true that things can only be copied once!
  171975             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  171976             :   // AstAttribute* existingAttribute = const_cast<SgDoubleVal*>(this)->attribute["copied"];
  171977             :      bool previouslyCopied = const_cast<SgDoubleVal*>(this)->attribute.exists("copied");
  171978             :      if (previouslyCopied == true)
  171979             :         {
  171980             :           this->get_file_info()->display("Called from copy SgDoubleVal: debug");
  171981             :         }
  171982             :      ROSE_ASSERT(previouslyCopied == false);
  171983             : 
  171984             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  171985             :      AstAttribute* newAttribute = new AstAttribute();
  171986             :      ROSE_ASSERT(newAttribute != NULL);
  171987             : 
  171988             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  171989             :      const_cast<SgDoubleVal*>(this)->attribute.add("copied",newAttribute);
  171990             : #endif
  171991             : 
  171992             :   // Copy data members from base classes
  171993             :   // Copy constructor parameter data member: startOfConstruct_copy
  171994             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  171995             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  171996           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  171997           0 :      if ( p_startOfConstruct != NULL ) 
  171998             :         { 
  171999           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  172000             :         } 
  172001             :        else 
  172002             :         { 
  172003             :           startOfConstruct_copy = NULL; 
  172004             :         } 
  172005             :   // Copy constructor parameter data member: value_copy
  172006             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  172007             :   // case: toBeCopied == COPY_DATA for value
  172008           0 :      double value_copy = p_value; 
  172009             :   // Copy constructor parameter data member: valueString_copy
  172010             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  172011             :   // case: toBeCopied == COPY_DATA for valueString
  172012           0 :      std::string valueString_copy = p_valueString; 
  172013             :  
  172014             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172015             : 
  172016             :   // Build an empty copy of this object (will be filled in, but 
  172017             :   // the parent can't be set and must be set by the caller)
  172018           0 :      result = new SgDoubleVal(  startOfConstruct_copy, value_copy, valueString_copy );
  172019           0 :      ROSE_ASSERT(result != NULL);
  172020             : 
  172021             :   // Copy data members of "this" class
  172022             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  172023             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  172024             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  172025           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  172026           0 :      if ( p_endOfConstruct != NULL ) 
  172027             :         { 
  172028           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  172029             :         } 
  172030             :        else 
  172031             :         { 
  172032             :           endOfConstruct_copy = NULL; 
  172033             :         } 
  172034             :   /* check for a valid pointer and delete if present */ 
  172035           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  172036             :   /* add assignment to result here */ 
  172037           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  172038             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  172039             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  172040             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  172041           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  172042           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  172043             :         { 
  172044           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  172045             :         } 
  172046             :        else 
  172047             :         { 
  172048             :           attachedPreprocessingInfoPtr_copy = NULL; 
  172049             :         } 
  172050             :   /* check for a valid pointer and delete if present */ 
  172051           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  172052             :   /* add assignment to result here */ 
  172053           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  172054             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  172055             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  172056             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  172057           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  172058           0 :      if ( p_attributeMechanism != NULL ) 
  172059             :         { 
  172060           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  172061             :         } 
  172062             :        else 
  172063             :         { 
  172064             :           attributeMechanism_copy = NULL; 
  172065             :         } 
  172066             :   /* check for a valid pointer and delete if present */ 
  172067           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  172068             :   /* add assignment to result here */ 
  172069           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  172070             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  172071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  172072             :   // case: toBeCopied == COPY_DATA for need_paren
  172073           0 :      bool need_paren_copy = p_need_paren; 
  172074           0 :      result->p_need_paren = need_paren_copy; 
  172075             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  172076             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  172077             :   // case: toBeCopied == COPY_DATA for lvalue
  172078           0 :      bool lvalue_copy = p_lvalue; 
  172079           0 :      result->p_lvalue = lvalue_copy; 
  172080             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  172081             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  172082             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  172083           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  172084           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  172085             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  172086             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  172087             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  172088           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  172089           0 :      if ( p_operatorPosition != NULL ) 
  172090             :         { 
  172091           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  172092             :         } 
  172093             :        else 
  172094             :         { 
  172095             :           operatorPosition_copy = NULL; 
  172096             :         } 
  172097             :   /* check for a valid pointer and delete if present */ 
  172098           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  172099             :   /* add assignment to result here */ 
  172100           0 :      result->p_operatorPosition = operatorPosition_copy; 
  172101             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  172102             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  172103             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  172104           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  172105           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  172106             : 
  172107             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172108             : 
  172109             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  172110             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  172111             :   // fixupCopy(result,help);
  172112             : 
  172113             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  172114             :   // the Sg_File_Info objects that are built for the new IR nodes.
  172115           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  172116           0 :      if (locatedNode != NULL)
  172117             :         {
  172118             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  172119           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  172120           0 :           ROSE_ASSERT(start != NULL);
  172121             : #if 0
  172122             :        // Debugging information
  172123             :           if (start->get_parent() == NULL)
  172124             :              {
  172125             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172126             :              }
  172127             : #endif
  172128           0 :           start->set_parent(locatedNode);
  172129           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  172130             : 
  172131           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  172132             : 
  172133             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  172134             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  172135             :        // ROSE_ASSERT(end != NULL);
  172136           0 :           if (end == NULL)
  172137             :              {
  172138           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  172139             :              }
  172140             :             else
  172141             :              {
  172142             : #if 0
  172143             :             // Debugging information
  172144             :                if (end->get_parent() == NULL)
  172145             :                   {
  172146             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172147             :                   }
  172148             : #endif
  172149           0 :                end->set_parent(locatedNode);
  172150           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  172151             :              }
  172152             : 
  172153           0 :           SgExpression* expression = isSgExpression(result);
  172154           0 :           if (isSgExpression(this) != NULL)
  172155             :              {
  172156           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  172157             : 
  172158             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  172159           0 :                if (operatorPosition != NULL)
  172160             :                   {
  172161             : #if 0
  172162             :                  // Debugging information
  172163             :                     if (operatorPosition->get_parent() == NULL)
  172164             :                        {
  172165             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172166             :                        }
  172167             : #endif
  172168           0 :                     operatorPosition->set_parent(expression);
  172169           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  172170             :                   }
  172171             :              }
  172172             :         }
  172173             : 
  172174             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  172175           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  172176           0 :      if (initializedName != NULL)
  172177             :         {
  172178             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  172179           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  172180           0 :           ROSE_ASSERT(start != NULL);
  172181             : #if 0
  172182             :        // Debugging information
  172183             :           if (start->get_parent() == NULL)
  172184             :              {
  172185             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172186             :              }
  172187             : #endif
  172188           0 :           start->set_parent(initializedName);
  172189           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  172190             : 
  172191             : #if 0
  172192             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  172193             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  172194             : 
  172195             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  172196             :        // ROSE_ASSERT(end != NULL);
  172197             :           if (end == NULL)
  172198             :              {
  172199             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  172200             :              }
  172201             :             else
  172202             :              {
  172203             :                if (end->get_parent() == NULL)
  172204             :                   {
  172205             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172206             :                   }
  172207             :                end->set_parent(initializedName);
  172208             :                ROSE_ASSERT(end->get_parent() != NULL);
  172209             :              }
  172210             : #endif
  172211             :         }
  172212             : 
  172213             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  172214           0 :      help.insertCopiedNodePair(this,result);
  172215             : 
  172216             :   // printf ("End of copy SgDoubleVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  172217             : 
  172218             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  172219             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  172220           0 :      help.decrementDepth();
  172221             : 
  172222             :   // Test if this is the root of the copy!
  172223           0 :      if (help.get_depth() == 0)
  172224             :         {
  172225             :        // This is the original calling node.
  172226             : 
  172227             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  172228             :        // printf ("Calling SgDoubleVal::fixupCopy() (from root of AST being copied) \n");
  172229             : #if ALT_FIXUP_COPY
  172230             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  172231           0 :           fixupCopy_scopes (result,help);
  172232           0 :           fixupCopy_symbols (result,help);
  172233           0 :           fixupCopy_references (result,help);
  172234             : #else
  172235             :           fixupCopy(result,help);
  172236             : #endif
  172237             :        // Allow this to be called recursively, so accumulate the state.
  172238             :        // Also, clear the state in the SgCopyHelp object.
  172239             :        // help.clearState();
  172240             :         }
  172241             : 
  172242           0 :      return result;
  172243             :    }
  172244             : 
  172245             : 
  172246             : /* #line 172247 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  172247             : 
  172248             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172249             : 
  172250           0 : SgNode* SgLongDoubleVal::copy ( SgCopyHelp& help) const
  172251             :    {
  172252           0 :      SgLongDoubleVal* result = NULL;
  172253             : 
  172254             :   // printf ("Copy SgLongDoubleVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  172255             : 
  172256             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  172257             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  172258             :   // The default value of the depth is 0, so after this call the depth is 1!
  172259           0 :      help.incrementDepth();
  172260             : 
  172261             : #if 0
  172262             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  172263             :   // but it is not generally true that things can only be copied once!
  172264             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  172265             :   // AstAttribute* existingAttribute = const_cast<SgLongDoubleVal*>(this)->attribute["copied"];
  172266             :      bool previouslyCopied = const_cast<SgLongDoubleVal*>(this)->attribute.exists("copied");
  172267             :      if (previouslyCopied == true)
  172268             :         {
  172269             :           this->get_file_info()->display("Called from copy SgLongDoubleVal: debug");
  172270             :         }
  172271             :      ROSE_ASSERT(previouslyCopied == false);
  172272             : 
  172273             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  172274             :      AstAttribute* newAttribute = new AstAttribute();
  172275             :      ROSE_ASSERT(newAttribute != NULL);
  172276             : 
  172277             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  172278             :      const_cast<SgLongDoubleVal*>(this)->attribute.add("copied",newAttribute);
  172279             : #endif
  172280             : 
  172281             :   // Copy data members from base classes
  172282             :   // Copy constructor parameter data member: startOfConstruct_copy
  172283             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  172284             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  172285           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  172286           0 :      if ( p_startOfConstruct != NULL ) 
  172287             :         { 
  172288           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  172289             :         } 
  172290             :        else 
  172291             :         { 
  172292             :           startOfConstruct_copy = NULL; 
  172293             :         } 
  172294             :   // Copy constructor parameter data member: value_copy
  172295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  172296             :   // case: toBeCopied == COPY_DATA for value
  172297           0 :      long double value_copy = p_value; 
  172298             :   // Copy constructor parameter data member: valueString_copy
  172299             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  172300             :   // case: toBeCopied == COPY_DATA for valueString
  172301           0 :      std::string valueString_copy = p_valueString; 
  172302             :  
  172303             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172304             : 
  172305             :   // Build an empty copy of this object (will be filled in, but 
  172306             :   // the parent can't be set and must be set by the caller)
  172307           0 :      result = new SgLongDoubleVal(  startOfConstruct_copy, value_copy, valueString_copy );
  172308           0 :      ROSE_ASSERT(result != NULL);
  172309             : 
  172310             :   // Copy data members of "this" class
  172311             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  172312             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  172313             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  172314           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  172315           0 :      if ( p_endOfConstruct != NULL ) 
  172316             :         { 
  172317           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  172318             :         } 
  172319             :        else 
  172320             :         { 
  172321             :           endOfConstruct_copy = NULL; 
  172322             :         } 
  172323             :   /* check for a valid pointer and delete if present */ 
  172324           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  172325             :   /* add assignment to result here */ 
  172326           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  172327             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  172328             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  172329             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  172330           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  172331           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  172332             :         { 
  172333           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  172334             :         } 
  172335             :        else 
  172336             :         { 
  172337             :           attachedPreprocessingInfoPtr_copy = NULL; 
  172338             :         } 
  172339             :   /* check for a valid pointer and delete if present */ 
  172340           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  172341             :   /* add assignment to result here */ 
  172342           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  172343             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  172344             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  172345             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  172346           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  172347           0 :      if ( p_attributeMechanism != NULL ) 
  172348             :         { 
  172349           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  172350             :         } 
  172351             :        else 
  172352             :         { 
  172353             :           attributeMechanism_copy = NULL; 
  172354             :         } 
  172355             :   /* check for a valid pointer and delete if present */ 
  172356           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  172357             :   /* add assignment to result here */ 
  172358           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  172359             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  172360             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  172361             :   // case: toBeCopied == COPY_DATA for need_paren
  172362           0 :      bool need_paren_copy = p_need_paren; 
  172363           0 :      result->p_need_paren = need_paren_copy; 
  172364             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  172365             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  172366             :   // case: toBeCopied == COPY_DATA for lvalue
  172367           0 :      bool lvalue_copy = p_lvalue; 
  172368           0 :      result->p_lvalue = lvalue_copy; 
  172369             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  172370             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  172371             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  172372           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  172373           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  172374             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  172375             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  172376             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  172377           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  172378           0 :      if ( p_operatorPosition != NULL ) 
  172379             :         { 
  172380           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  172381             :         } 
  172382             :        else 
  172383             :         { 
  172384             :           operatorPosition_copy = NULL; 
  172385             :         } 
  172386             :   /* check for a valid pointer and delete if present */ 
  172387           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  172388             :   /* add assignment to result here */ 
  172389           0 :      result->p_operatorPosition = operatorPosition_copy; 
  172390             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  172391             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  172392             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  172393           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  172394           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  172395             : 
  172396             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172397             : 
  172398             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  172399             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  172400             :   // fixupCopy(result,help);
  172401             : 
  172402             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  172403             :   // the Sg_File_Info objects that are built for the new IR nodes.
  172404           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  172405           0 :      if (locatedNode != NULL)
  172406             :         {
  172407             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  172408           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  172409           0 :           ROSE_ASSERT(start != NULL);
  172410             : #if 0
  172411             :        // Debugging information
  172412             :           if (start->get_parent() == NULL)
  172413             :              {
  172414             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172415             :              }
  172416             : #endif
  172417           0 :           start->set_parent(locatedNode);
  172418           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  172419             : 
  172420           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  172421             : 
  172422             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  172423             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  172424             :        // ROSE_ASSERT(end != NULL);
  172425           0 :           if (end == NULL)
  172426             :              {
  172427           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  172428             :              }
  172429             :             else
  172430             :              {
  172431             : #if 0
  172432             :             // Debugging information
  172433             :                if (end->get_parent() == NULL)
  172434             :                   {
  172435             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172436             :                   }
  172437             : #endif
  172438           0 :                end->set_parent(locatedNode);
  172439           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  172440             :              }
  172441             : 
  172442           0 :           SgExpression* expression = isSgExpression(result);
  172443           0 :           if (isSgExpression(this) != NULL)
  172444             :              {
  172445           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  172446             : 
  172447             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  172448           0 :                if (operatorPosition != NULL)
  172449             :                   {
  172450             : #if 0
  172451             :                  // Debugging information
  172452             :                     if (operatorPosition->get_parent() == NULL)
  172453             :                        {
  172454             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172455             :                        }
  172456             : #endif
  172457           0 :                     operatorPosition->set_parent(expression);
  172458           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  172459             :                   }
  172460             :              }
  172461             :         }
  172462             : 
  172463             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  172464           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  172465           0 :      if (initializedName != NULL)
  172466             :         {
  172467             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  172468           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  172469           0 :           ROSE_ASSERT(start != NULL);
  172470             : #if 0
  172471             :        // Debugging information
  172472             :           if (start->get_parent() == NULL)
  172473             :              {
  172474             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172475             :              }
  172476             : #endif
  172477           0 :           start->set_parent(initializedName);
  172478           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  172479             : 
  172480             : #if 0
  172481             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  172482             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  172483             : 
  172484             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  172485             :        // ROSE_ASSERT(end != NULL);
  172486             :           if (end == NULL)
  172487             :              {
  172488             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  172489             :              }
  172490             :             else
  172491             :              {
  172492             :                if (end->get_parent() == NULL)
  172493             :                   {
  172494             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172495             :                   }
  172496             :                end->set_parent(initializedName);
  172497             :                ROSE_ASSERT(end->get_parent() != NULL);
  172498             :              }
  172499             : #endif
  172500             :         }
  172501             : 
  172502             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  172503           0 :      help.insertCopiedNodePair(this,result);
  172504             : 
  172505             :   // printf ("End of copy SgLongDoubleVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  172506             : 
  172507             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  172508             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  172509           0 :      help.decrementDepth();
  172510             : 
  172511             :   // Test if this is the root of the copy!
  172512           0 :      if (help.get_depth() == 0)
  172513             :         {
  172514             :        // This is the original calling node.
  172515             : 
  172516             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  172517             :        // printf ("Calling SgLongDoubleVal::fixupCopy() (from root of AST being copied) \n");
  172518             : #if ALT_FIXUP_COPY
  172519             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  172520           0 :           fixupCopy_scopes (result,help);
  172521           0 :           fixupCopy_symbols (result,help);
  172522           0 :           fixupCopy_references (result,help);
  172523             : #else
  172524             :           fixupCopy(result,help);
  172525             : #endif
  172526             :        // Allow this to be called recursively, so accumulate the state.
  172527             :        // Also, clear the state in the SgCopyHelp object.
  172528             :        // help.clearState();
  172529             :         }
  172530             : 
  172531           0 :      return result;
  172532             :    }
  172533             : 
  172534             : 
  172535             : /* #line 172536 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  172536             : 
  172537             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172538             : 
  172539           0 : SgNode* SgComplexVal::copy ( SgCopyHelp& help) const
  172540             :    {
  172541           0 :      SgComplexVal* result = NULL;
  172542             : 
  172543             :   // printf ("Copy SgComplexVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  172544             : 
  172545             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  172546             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  172547             :   // The default value of the depth is 0, so after this call the depth is 1!
  172548           0 :      help.incrementDepth();
  172549             : 
  172550             : #if 0
  172551             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  172552             :   // but it is not generally true that things can only be copied once!
  172553             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  172554             :   // AstAttribute* existingAttribute = const_cast<SgComplexVal*>(this)->attribute["copied"];
  172555             :      bool previouslyCopied = const_cast<SgComplexVal*>(this)->attribute.exists("copied");
  172556             :      if (previouslyCopied == true)
  172557             :         {
  172558             :           this->get_file_info()->display("Called from copy SgComplexVal: debug");
  172559             :         }
  172560             :      ROSE_ASSERT(previouslyCopied == false);
  172561             : 
  172562             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  172563             :      AstAttribute* newAttribute = new AstAttribute();
  172564             :      ROSE_ASSERT(newAttribute != NULL);
  172565             : 
  172566             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  172567             :      const_cast<SgComplexVal*>(this)->attribute.add("copied",newAttribute);
  172568             : #endif
  172569             : 
  172570             :   // Copy data members from base classes
  172571             :   // Copy constructor parameter data member: startOfConstruct_copy
  172572             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  172573             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  172574           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  172575           0 :      if ( p_startOfConstruct != NULL ) 
  172576             :         { 
  172577           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  172578             :         } 
  172579             :        else 
  172580             :         { 
  172581             :           startOfConstruct_copy = NULL; 
  172582             :         } 
  172583             :   // Copy constructor parameter data member: real_value_copy
  172584           0 :      SgValueExp* real_value_copy; 
  172585             :   // case: not a listType for (using conditionalToCopyVariable)real_value
  172586           0 :           if (get_real_value() != NULL) 
  172587             :              { 
  172588           0 :                real_value_copy = static_cast<SgValueExp*>(help.copyAst(get_real_value())); 
  172589             :              } 
  172590             :             else 
  172591             :              { 
  172592             :                real_value_copy = NULL; 
  172593             :              } 
  172594             :   // Copy constructor parameter data member: imaginary_value_copy
  172595           0 :      SgValueExp* imaginary_value_copy; 
  172596             :   // case: not a listType for (using conditionalToCopyVariable)imaginary_value
  172597           0 :           if (get_imaginary_value() != NULL) 
  172598             :              { 
  172599           0 :                imaginary_value_copy = static_cast<SgValueExp*>(help.copyAst(get_imaginary_value())); 
  172600             :              } 
  172601             :             else 
  172602             :              { 
  172603             :                imaginary_value_copy = NULL; 
  172604             :              } 
  172605             :   // Copy constructor parameter data member: precisionType_copy
  172606             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for precisionType
  172607             :   // case: toBeCopied == COPY_DATA for precisionType
  172608           0 :      SgType* precisionType_copy = p_precisionType; 
  172609             :   // Copy constructor parameter data member: valueString_copy
  172610             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  172611             :   // case: toBeCopied == COPY_DATA for valueString
  172612           0 :      std::string valueString_copy = p_valueString; 
  172613             :  
  172614             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172615             : 
  172616             :   // Build an empty copy of this object (will be filled in, but 
  172617             :   // the parent can't be set and must be set by the caller)
  172618           0 :      result = new SgComplexVal(  startOfConstruct_copy, real_value_copy, imaginary_value_copy, precisionType_copy, valueString_copy );
  172619           0 :      ROSE_ASSERT(result != NULL);
  172620             : 
  172621             :   // Copy data members of "this" class
  172622             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  172623             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  172624             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  172625           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  172626           0 :      if ( p_endOfConstruct != NULL ) 
  172627             :         { 
  172628           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  172629             :         } 
  172630             :        else 
  172631             :         { 
  172632             :           endOfConstruct_copy = NULL; 
  172633             :         } 
  172634             :   /* check for a valid pointer and delete if present */ 
  172635           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  172636             :   /* add assignment to result here */ 
  172637           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  172638             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  172639             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  172640             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  172641           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  172642           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  172643             :         { 
  172644           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  172645             :         } 
  172646             :        else 
  172647             :         { 
  172648             :           attachedPreprocessingInfoPtr_copy = NULL; 
  172649             :         } 
  172650             :   /* check for a valid pointer and delete if present */ 
  172651           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  172652             :   /* add assignment to result here */ 
  172653           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  172654             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  172655             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  172656             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  172657           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  172658           0 :      if ( p_attributeMechanism != NULL ) 
  172659             :         { 
  172660           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  172661             :         } 
  172662             :        else 
  172663             :         { 
  172664             :           attributeMechanism_copy = NULL; 
  172665             :         } 
  172666             :   /* check for a valid pointer and delete if present */ 
  172667           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  172668             :   /* add assignment to result here */ 
  172669           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  172670             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  172671             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  172672             :   // case: toBeCopied == COPY_DATA for need_paren
  172673           0 :      bool need_paren_copy = p_need_paren; 
  172674           0 :      result->p_need_paren = need_paren_copy; 
  172675             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  172676             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  172677             :   // case: toBeCopied == COPY_DATA for lvalue
  172678           0 :      bool lvalue_copy = p_lvalue; 
  172679           0 :      result->p_lvalue = lvalue_copy; 
  172680             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  172681             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  172682             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  172683           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  172684           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  172685             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  172686             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  172687             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  172688           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  172689           0 :      if ( p_operatorPosition != NULL ) 
  172690             :         { 
  172691           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  172692             :         } 
  172693             :        else 
  172694             :         { 
  172695             :           operatorPosition_copy = NULL; 
  172696             :         } 
  172697             :   /* check for a valid pointer and delete if present */ 
  172698           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  172699             :   /* add assignment to result here */ 
  172700           0 :      result->p_operatorPosition = operatorPosition_copy; 
  172701             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  172702             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  172703             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  172704           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  172705           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  172706             :   // case: not a listType for (using conditionalToSetParent)real_value
  172707           0 :           if ( (real_value_copy != NULL) && (real_value_copy->get_parent() == NULL) && (isSgType(real_value_copy) == NULL) ) 
  172708             :              { 
  172709           0 :                real_value_copy->set_parent(result); 
  172710             :              } 
  172711             :   // case: not a listType for (using conditionalToSetParent)imaginary_value
  172712           0 :           if ( (imaginary_value_copy != NULL) && (imaginary_value_copy->get_parent() == NULL) && (isSgType(imaginary_value_copy) == NULL) ) 
  172713             :              { 
  172714           0 :                imaginary_value_copy->set_parent(result); 
  172715             :              } 
  172716             : 
  172717             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172718             : 
  172719             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  172720             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  172721             :   // fixupCopy(result,help);
  172722             : 
  172723             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  172724             :   // the Sg_File_Info objects that are built for the new IR nodes.
  172725           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  172726           0 :      if (locatedNode != NULL)
  172727             :         {
  172728             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  172729           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  172730           0 :           ROSE_ASSERT(start != NULL);
  172731             : #if 0
  172732             :        // Debugging information
  172733             :           if (start->get_parent() == NULL)
  172734             :              {
  172735             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172736             :              }
  172737             : #endif
  172738           0 :           start->set_parent(locatedNode);
  172739           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  172740             : 
  172741           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  172742             : 
  172743             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  172744             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  172745             :        // ROSE_ASSERT(end != NULL);
  172746           0 :           if (end == NULL)
  172747             :              {
  172748           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  172749             :              }
  172750             :             else
  172751             :              {
  172752             : #if 0
  172753             :             // Debugging information
  172754             :                if (end->get_parent() == NULL)
  172755             :                   {
  172756             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172757             :                   }
  172758             : #endif
  172759           0 :                end->set_parent(locatedNode);
  172760           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  172761             :              }
  172762             : 
  172763           0 :           SgExpression* expression = isSgExpression(result);
  172764           0 :           if (isSgExpression(this) != NULL)
  172765             :              {
  172766           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  172767             : 
  172768             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  172769           0 :                if (operatorPosition != NULL)
  172770             :                   {
  172771             : #if 0
  172772             :                  // Debugging information
  172773             :                     if (operatorPosition->get_parent() == NULL)
  172774             :                        {
  172775             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172776             :                        }
  172777             : #endif
  172778           0 :                     operatorPosition->set_parent(expression);
  172779           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  172780             :                   }
  172781             :              }
  172782             :         }
  172783             : 
  172784             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  172785           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  172786           0 :      if (initializedName != NULL)
  172787             :         {
  172788             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  172789           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  172790           0 :           ROSE_ASSERT(start != NULL);
  172791             : #if 0
  172792             :        // Debugging information
  172793             :           if (start->get_parent() == NULL)
  172794             :              {
  172795             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172796             :              }
  172797             : #endif
  172798           0 :           start->set_parent(initializedName);
  172799           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  172800             : 
  172801             : #if 0
  172802             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  172803             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  172804             : 
  172805             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  172806             :        // ROSE_ASSERT(end != NULL);
  172807             :           if (end == NULL)
  172808             :              {
  172809             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  172810             :              }
  172811             :             else
  172812             :              {
  172813             :                if (end->get_parent() == NULL)
  172814             :                   {
  172815             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  172816             :                   }
  172817             :                end->set_parent(initializedName);
  172818             :                ROSE_ASSERT(end->get_parent() != NULL);
  172819             :              }
  172820             : #endif
  172821             :         }
  172822             : 
  172823             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  172824           0 :      help.insertCopiedNodePair(this,result);
  172825             : 
  172826             :   // printf ("End of copy SgComplexVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  172827             : 
  172828             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  172829             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  172830           0 :      help.decrementDepth();
  172831             : 
  172832             :   // Test if this is the root of the copy!
  172833           0 :      if (help.get_depth() == 0)
  172834             :         {
  172835             :        // This is the original calling node.
  172836             : 
  172837             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  172838             :        // printf ("Calling SgComplexVal::fixupCopy() (from root of AST being copied) \n");
  172839             : #if ALT_FIXUP_COPY
  172840             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  172841           0 :           fixupCopy_scopes (result,help);
  172842           0 :           fixupCopy_symbols (result,help);
  172843           0 :           fixupCopy_references (result,help);
  172844             : #else
  172845             :           fixupCopy(result,help);
  172846             : #endif
  172847             :        // Allow this to be called recursively, so accumulate the state.
  172848             :        // Also, clear the state in the SgCopyHelp object.
  172849             :        // help.clearState();
  172850             :         }
  172851             : 
  172852           0 :      return result;
  172853             :    }
  172854             : 
  172855             : 
  172856             : /* #line 172857 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  172857             : 
  172858             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172859             : 
  172860           0 : SgNode* SgUpcThreads::copy ( SgCopyHelp& help) const
  172861             :    {
  172862           0 :      SgUpcThreads* result = NULL;
  172863             : 
  172864             :   // printf ("Copy SgUpcThreads = %p = %s \n",this,SageInterface::get_name(this).c_str());
  172865             : 
  172866             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  172867             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  172868             :   // The default value of the depth is 0, so after this call the depth is 1!
  172869           0 :      help.incrementDepth();
  172870             : 
  172871             : #if 0
  172872             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  172873             :   // but it is not generally true that things can only be copied once!
  172874             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  172875             :   // AstAttribute* existingAttribute = const_cast<SgUpcThreads*>(this)->attribute["copied"];
  172876             :      bool previouslyCopied = const_cast<SgUpcThreads*>(this)->attribute.exists("copied");
  172877             :      if (previouslyCopied == true)
  172878             :         {
  172879             :           this->get_file_info()->display("Called from copy SgUpcThreads: debug");
  172880             :         }
  172881             :      ROSE_ASSERT(previouslyCopied == false);
  172882             : 
  172883             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  172884             :      AstAttribute* newAttribute = new AstAttribute();
  172885             :      ROSE_ASSERT(newAttribute != NULL);
  172886             : 
  172887             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  172888             :      const_cast<SgUpcThreads*>(this)->attribute.add("copied",newAttribute);
  172889             : #endif
  172890             : 
  172891             :   // Copy data members from base classes
  172892             :   // Copy constructor parameter data member: startOfConstruct_copy
  172893             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  172894             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  172895           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  172896           0 :      if ( p_startOfConstruct != NULL ) 
  172897             :         { 
  172898           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  172899             :         } 
  172900             :        else 
  172901             :         { 
  172902             :           startOfConstruct_copy = NULL; 
  172903             :         } 
  172904             :   // Copy constructor parameter data member: value_copy
  172905             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  172906             :   // case: toBeCopied == COPY_DATA for value
  172907           0 :      int value_copy = p_value; 
  172908             :   // Copy constructor parameter data member: valueString_copy
  172909             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  172910             :   // case: toBeCopied == COPY_DATA for valueString
  172911           0 :      std::string valueString_copy = p_valueString; 
  172912             :  
  172913             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  172914             : 
  172915             :   // Build an empty copy of this object (will be filled in, but 
  172916             :   // the parent can't be set and must be set by the caller)
  172917           0 :      result = new SgUpcThreads(  startOfConstruct_copy, value_copy, valueString_copy );
  172918           0 :      ROSE_ASSERT(result != NULL);
  172919             : 
  172920             :   // Copy data members of "this" class
  172921             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  172922             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  172923             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  172924           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  172925           0 :      if ( p_endOfConstruct != NULL ) 
  172926             :         { 
  172927           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  172928             :         } 
  172929             :        else 
  172930             :         { 
  172931             :           endOfConstruct_copy = NULL; 
  172932             :         } 
  172933             :   /* check for a valid pointer and delete if present */ 
  172934           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  172935             :   /* add assignment to result here */ 
  172936           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  172937             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  172938             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  172939             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  172940           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  172941           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  172942             :         { 
  172943           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  172944             :         } 
  172945             :        else 
  172946             :         { 
  172947             :           attachedPreprocessingInfoPtr_copy = NULL; 
  172948             :         } 
  172949             :   /* check for a valid pointer and delete if present */ 
  172950           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  172951             :   /* add assignment to result here */ 
  172952           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  172953             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  172954             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  172955             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  172956           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  172957           0 :      if ( p_attributeMechanism != NULL ) 
  172958             :         { 
  172959           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  172960             :         } 
  172961             :        else 
  172962             :         { 
  172963             :           attributeMechanism_copy = NULL; 
  172964             :         } 
  172965             :   /* check for a valid pointer and delete if present */ 
  172966           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  172967             :   /* add assignment to result here */ 
  172968           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  172969             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  172970             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  172971             :   // case: toBeCopied == COPY_DATA for need_paren
  172972           0 :      bool need_paren_copy = p_need_paren; 
  172973           0 :      result->p_need_paren = need_paren_copy; 
  172974             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  172975             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  172976             :   // case: toBeCopied == COPY_DATA for lvalue
  172977           0 :      bool lvalue_copy = p_lvalue; 
  172978           0 :      result->p_lvalue = lvalue_copy; 
  172979             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  172980             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  172981             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  172982           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  172983           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  172984             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  172985             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  172986             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  172987           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  172988           0 :      if ( p_operatorPosition != NULL ) 
  172989             :         { 
  172990           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  172991             :         } 
  172992             :        else 
  172993             :         { 
  172994             :           operatorPosition_copy = NULL; 
  172995             :         } 
  172996             :   /* check for a valid pointer and delete if present */ 
  172997           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  172998             :   /* add assignment to result here */ 
  172999           0 :      result->p_operatorPosition = operatorPosition_copy; 
  173000             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  173001             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  173002             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  173003           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  173004           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  173005             : 
  173006             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173007             : 
  173008             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  173009             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  173010             :   // fixupCopy(result,help);
  173011             : 
  173012             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  173013             :   // the Sg_File_Info objects that are built for the new IR nodes.
  173014           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  173015           0 :      if (locatedNode != NULL)
  173016             :         {
  173017             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  173018           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  173019           0 :           ROSE_ASSERT(start != NULL);
  173020             : #if 0
  173021             :        // Debugging information
  173022             :           if (start->get_parent() == NULL)
  173023             :              {
  173024             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173025             :              }
  173026             : #endif
  173027           0 :           start->set_parent(locatedNode);
  173028           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  173029             : 
  173030           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  173031             : 
  173032             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  173033             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  173034             :        // ROSE_ASSERT(end != NULL);
  173035           0 :           if (end == NULL)
  173036             :              {
  173037           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  173038             :              }
  173039             :             else
  173040             :              {
  173041             : #if 0
  173042             :             // Debugging information
  173043             :                if (end->get_parent() == NULL)
  173044             :                   {
  173045             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173046             :                   }
  173047             : #endif
  173048           0 :                end->set_parent(locatedNode);
  173049           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  173050             :              }
  173051             : 
  173052           0 :           SgExpression* expression = isSgExpression(result);
  173053           0 :           if (isSgExpression(this) != NULL)
  173054             :              {
  173055           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  173056             : 
  173057             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  173058           0 :                if (operatorPosition != NULL)
  173059             :                   {
  173060             : #if 0
  173061             :                  // Debugging information
  173062             :                     if (operatorPosition->get_parent() == NULL)
  173063             :                        {
  173064             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173065             :                        }
  173066             : #endif
  173067           0 :                     operatorPosition->set_parent(expression);
  173068           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  173069             :                   }
  173070             :              }
  173071             :         }
  173072             : 
  173073             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  173074           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  173075           0 :      if (initializedName != NULL)
  173076             :         {
  173077             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  173078           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  173079           0 :           ROSE_ASSERT(start != NULL);
  173080             : #if 0
  173081             :        // Debugging information
  173082             :           if (start->get_parent() == NULL)
  173083             :              {
  173084             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173085             :              }
  173086             : #endif
  173087           0 :           start->set_parent(initializedName);
  173088           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  173089             : 
  173090             : #if 0
  173091             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  173092             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  173093             : 
  173094             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  173095             :        // ROSE_ASSERT(end != NULL);
  173096             :           if (end == NULL)
  173097             :              {
  173098             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  173099             :              }
  173100             :             else
  173101             :              {
  173102             :                if (end->get_parent() == NULL)
  173103             :                   {
  173104             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173105             :                   }
  173106             :                end->set_parent(initializedName);
  173107             :                ROSE_ASSERT(end->get_parent() != NULL);
  173108             :              }
  173109             : #endif
  173110             :         }
  173111             : 
  173112             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  173113           0 :      help.insertCopiedNodePair(this,result);
  173114             : 
  173115             :   // printf ("End of copy SgUpcThreads = %p = %s \n",this,SageInterface::get_name(this).c_str());
  173116             : 
  173117             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  173118             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  173119           0 :      help.decrementDepth();
  173120             : 
  173121             :   // Test if this is the root of the copy!
  173122           0 :      if (help.get_depth() == 0)
  173123             :         {
  173124             :        // This is the original calling node.
  173125             : 
  173126             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  173127             :        // printf ("Calling SgUpcThreads::fixupCopy() (from root of AST being copied) \n");
  173128             : #if ALT_FIXUP_COPY
  173129             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  173130           0 :           fixupCopy_scopes (result,help);
  173131           0 :           fixupCopy_symbols (result,help);
  173132           0 :           fixupCopy_references (result,help);
  173133             : #else
  173134             :           fixupCopy(result,help);
  173135             : #endif
  173136             :        // Allow this to be called recursively, so accumulate the state.
  173137             :        // Also, clear the state in the SgCopyHelp object.
  173138             :        // help.clearState();
  173139             :         }
  173140             : 
  173141           0 :      return result;
  173142             :    }
  173143             : 
  173144             : 
  173145             : /* #line 173146 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  173146             : 
  173147             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173148             : 
  173149           0 : SgNode* SgUpcMythread::copy ( SgCopyHelp& help) const
  173150             :    {
  173151           0 :      SgUpcMythread* result = NULL;
  173152             : 
  173153             :   // printf ("Copy SgUpcMythread = %p = %s \n",this,SageInterface::get_name(this).c_str());
  173154             : 
  173155             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  173156             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  173157             :   // The default value of the depth is 0, so after this call the depth is 1!
  173158           0 :      help.incrementDepth();
  173159             : 
  173160             : #if 0
  173161             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  173162             :   // but it is not generally true that things can only be copied once!
  173163             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  173164             :   // AstAttribute* existingAttribute = const_cast<SgUpcMythread*>(this)->attribute["copied"];
  173165             :      bool previouslyCopied = const_cast<SgUpcMythread*>(this)->attribute.exists("copied");
  173166             :      if (previouslyCopied == true)
  173167             :         {
  173168             :           this->get_file_info()->display("Called from copy SgUpcMythread: debug");
  173169             :         }
  173170             :      ROSE_ASSERT(previouslyCopied == false);
  173171             : 
  173172             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  173173             :      AstAttribute* newAttribute = new AstAttribute();
  173174             :      ROSE_ASSERT(newAttribute != NULL);
  173175             : 
  173176             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  173177             :      const_cast<SgUpcMythread*>(this)->attribute.add("copied",newAttribute);
  173178             : #endif
  173179             : 
  173180             :   // Copy data members from base classes
  173181             :   // Copy constructor parameter data member: startOfConstruct_copy
  173182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  173183             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  173184           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  173185           0 :      if ( p_startOfConstruct != NULL ) 
  173186             :         { 
  173187           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  173188             :         } 
  173189             :        else 
  173190             :         { 
  173191             :           startOfConstruct_copy = NULL; 
  173192             :         } 
  173193             :   // Copy constructor parameter data member: value_copy
  173194             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  173195             :   // case: toBeCopied == COPY_DATA for value
  173196           0 :      int value_copy = p_value; 
  173197             :   // Copy constructor parameter data member: valueString_copy
  173198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  173199             :   // case: toBeCopied == COPY_DATA for valueString
  173200           0 :      std::string valueString_copy = p_valueString; 
  173201             :  
  173202             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173203             : 
  173204             :   // Build an empty copy of this object (will be filled in, but 
  173205             :   // the parent can't be set and must be set by the caller)
  173206           0 :      result = new SgUpcMythread(  startOfConstruct_copy, value_copy, valueString_copy );
  173207           0 :      ROSE_ASSERT(result != NULL);
  173208             : 
  173209             :   // Copy data members of "this" class
  173210             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  173211             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  173212             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  173213           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  173214           0 :      if ( p_endOfConstruct != NULL ) 
  173215             :         { 
  173216           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  173217             :         } 
  173218             :        else 
  173219             :         { 
  173220             :           endOfConstruct_copy = NULL; 
  173221             :         } 
  173222             :   /* check for a valid pointer and delete if present */ 
  173223           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  173224             :   /* add assignment to result here */ 
  173225           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  173226             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  173227             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  173228             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  173229           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  173230           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  173231             :         { 
  173232           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  173233             :         } 
  173234             :        else 
  173235             :         { 
  173236             :           attachedPreprocessingInfoPtr_copy = NULL; 
  173237             :         } 
  173238             :   /* check for a valid pointer and delete if present */ 
  173239           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  173240             :   /* add assignment to result here */ 
  173241           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  173242             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  173243             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  173244             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  173245           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  173246           0 :      if ( p_attributeMechanism != NULL ) 
  173247             :         { 
  173248           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  173249             :         } 
  173250             :        else 
  173251             :         { 
  173252             :           attributeMechanism_copy = NULL; 
  173253             :         } 
  173254             :   /* check for a valid pointer and delete if present */ 
  173255           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  173256             :   /* add assignment to result here */ 
  173257           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  173258             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  173259             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  173260             :   // case: toBeCopied == COPY_DATA for need_paren
  173261           0 :      bool need_paren_copy = p_need_paren; 
  173262           0 :      result->p_need_paren = need_paren_copy; 
  173263             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  173264             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  173265             :   // case: toBeCopied == COPY_DATA for lvalue
  173266           0 :      bool lvalue_copy = p_lvalue; 
  173267           0 :      result->p_lvalue = lvalue_copy; 
  173268             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  173269             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  173270             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  173271           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  173272           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  173273             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  173274             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  173275             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  173276           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  173277           0 :      if ( p_operatorPosition != NULL ) 
  173278             :         { 
  173279           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  173280             :         } 
  173281             :        else 
  173282             :         { 
  173283             :           operatorPosition_copy = NULL; 
  173284             :         } 
  173285             :   /* check for a valid pointer and delete if present */ 
  173286           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  173287             :   /* add assignment to result here */ 
  173288           0 :      result->p_operatorPosition = operatorPosition_copy; 
  173289             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  173290             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  173291             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  173292           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  173293           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  173294             : 
  173295             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173296             : 
  173297             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  173298             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  173299             :   // fixupCopy(result,help);
  173300             : 
  173301             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  173302             :   // the Sg_File_Info objects that are built for the new IR nodes.
  173303           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  173304           0 :      if (locatedNode != NULL)
  173305             :         {
  173306             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  173307           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  173308           0 :           ROSE_ASSERT(start != NULL);
  173309             : #if 0
  173310             :        // Debugging information
  173311             :           if (start->get_parent() == NULL)
  173312             :              {
  173313             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173314             :              }
  173315             : #endif
  173316           0 :           start->set_parent(locatedNode);
  173317           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  173318             : 
  173319           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  173320             : 
  173321             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  173322             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  173323             :        // ROSE_ASSERT(end != NULL);
  173324           0 :           if (end == NULL)
  173325             :              {
  173326           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  173327             :              }
  173328             :             else
  173329             :              {
  173330             : #if 0
  173331             :             // Debugging information
  173332             :                if (end->get_parent() == NULL)
  173333             :                   {
  173334             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173335             :                   }
  173336             : #endif
  173337           0 :                end->set_parent(locatedNode);
  173338           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  173339             :              }
  173340             : 
  173341           0 :           SgExpression* expression = isSgExpression(result);
  173342           0 :           if (isSgExpression(this) != NULL)
  173343             :              {
  173344           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  173345             : 
  173346             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  173347           0 :                if (operatorPosition != NULL)
  173348             :                   {
  173349             : #if 0
  173350             :                  // Debugging information
  173351             :                     if (operatorPosition->get_parent() == NULL)
  173352             :                        {
  173353             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173354             :                        }
  173355             : #endif
  173356           0 :                     operatorPosition->set_parent(expression);
  173357           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  173358             :                   }
  173359             :              }
  173360             :         }
  173361             : 
  173362             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  173363           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  173364           0 :      if (initializedName != NULL)
  173365             :         {
  173366             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  173367           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  173368           0 :           ROSE_ASSERT(start != NULL);
  173369             : #if 0
  173370             :        // Debugging information
  173371             :           if (start->get_parent() == NULL)
  173372             :              {
  173373             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173374             :              }
  173375             : #endif
  173376           0 :           start->set_parent(initializedName);
  173377           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  173378             : 
  173379             : #if 0
  173380             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  173381             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  173382             : 
  173383             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  173384             :        // ROSE_ASSERT(end != NULL);
  173385             :           if (end == NULL)
  173386             :              {
  173387             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  173388             :              }
  173389             :             else
  173390             :              {
  173391             :                if (end->get_parent() == NULL)
  173392             :                   {
  173393             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173394             :                   }
  173395             :                end->set_parent(initializedName);
  173396             :                ROSE_ASSERT(end->get_parent() != NULL);
  173397             :              }
  173398             : #endif
  173399             :         }
  173400             : 
  173401             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  173402           0 :      help.insertCopiedNodePair(this,result);
  173403             : 
  173404             :   // printf ("End of copy SgUpcMythread = %p = %s \n",this,SageInterface::get_name(this).c_str());
  173405             : 
  173406             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  173407             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  173408           0 :      help.decrementDepth();
  173409             : 
  173410             :   // Test if this is the root of the copy!
  173411           0 :      if (help.get_depth() == 0)
  173412             :         {
  173413             :        // This is the original calling node.
  173414             : 
  173415             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  173416             :        // printf ("Calling SgUpcMythread::fixupCopy() (from root of AST being copied) \n");
  173417             : #if ALT_FIXUP_COPY
  173418             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  173419           0 :           fixupCopy_scopes (result,help);
  173420           0 :           fixupCopy_symbols (result,help);
  173421           0 :           fixupCopy_references (result,help);
  173422             : #else
  173423             :           fixupCopy(result,help);
  173424             : #endif
  173425             :        // Allow this to be called recursively, so accumulate the state.
  173426             :        // Also, clear the state in the SgCopyHelp object.
  173427             :        // help.clearState();
  173428             :         }
  173429             : 
  173430           0 :      return result;
  173431             :    }
  173432             : 
  173433             : 
  173434             : /* #line 173435 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  173435             : 
  173436             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173437             : 
  173438           0 : SgNode* SgTemplateParameterVal::copy ( SgCopyHelp& help) const
  173439             :    {
  173440           0 :      SgTemplateParameterVal* result = NULL;
  173441             : 
  173442             :   // printf ("Copy SgTemplateParameterVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  173443             : 
  173444             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  173445             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  173446             :   // The default value of the depth is 0, so after this call the depth is 1!
  173447           0 :      help.incrementDepth();
  173448             : 
  173449             : #if 0
  173450             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  173451             :   // but it is not generally true that things can only be copied once!
  173452             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  173453             :   // AstAttribute* existingAttribute = const_cast<SgTemplateParameterVal*>(this)->attribute["copied"];
  173454             :      bool previouslyCopied = const_cast<SgTemplateParameterVal*>(this)->attribute.exists("copied");
  173455             :      if (previouslyCopied == true)
  173456             :         {
  173457             :           this->get_file_info()->display("Called from copy SgTemplateParameterVal: debug");
  173458             :         }
  173459             :      ROSE_ASSERT(previouslyCopied == false);
  173460             : 
  173461             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  173462             :      AstAttribute* newAttribute = new AstAttribute();
  173463             :      ROSE_ASSERT(newAttribute != NULL);
  173464             : 
  173465             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  173466             :      const_cast<SgTemplateParameterVal*>(this)->attribute.add("copied",newAttribute);
  173467             : #endif
  173468             : 
  173469             :   // Copy data members from base classes
  173470             :   // Copy constructor parameter data member: startOfConstruct_copy
  173471             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  173472             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  173473           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  173474           0 :      if ( p_startOfConstruct != NULL ) 
  173475             :         { 
  173476           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  173477             :         } 
  173478             :        else 
  173479             :         { 
  173480             :           startOfConstruct_copy = NULL; 
  173481             :         } 
  173482             :   // Copy constructor parameter data member: template_parameter_position_copy
  173483             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for template_parameter_position
  173484             :   // case: toBeCopied == COPY_DATA for template_parameter_position
  173485           0 :      int template_parameter_position_copy = p_template_parameter_position; 
  173486             :   // Copy constructor parameter data member: valueString_copy
  173487             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  173488             :   // case: toBeCopied == COPY_DATA for valueString
  173489           0 :      std::string valueString_copy = p_valueString; 
  173490             :  
  173491             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173492             : 
  173493             :   // Build an empty copy of this object (will be filled in, but 
  173494             :   // the parent can't be set and must be set by the caller)
  173495           0 :      result = new SgTemplateParameterVal(  startOfConstruct_copy, template_parameter_position_copy, valueString_copy );
  173496           0 :      ROSE_ASSERT(result != NULL);
  173497             : 
  173498             :   // Copy data members of "this" class
  173499             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  173500             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  173501             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  173502           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  173503           0 :      if ( p_endOfConstruct != NULL ) 
  173504             :         { 
  173505           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  173506             :         } 
  173507             :        else 
  173508             :         { 
  173509             :           endOfConstruct_copy = NULL; 
  173510             :         } 
  173511             :   /* check for a valid pointer and delete if present */ 
  173512           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  173513             :   /* add assignment to result here */ 
  173514           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  173515             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  173516             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  173517             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  173518           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  173519           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  173520             :         { 
  173521           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  173522             :         } 
  173523             :        else 
  173524             :         { 
  173525             :           attachedPreprocessingInfoPtr_copy = NULL; 
  173526             :         } 
  173527             :   /* check for a valid pointer and delete if present */ 
  173528           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  173529             :   /* add assignment to result here */ 
  173530           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  173531             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  173532             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  173533             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  173534           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  173535           0 :      if ( p_attributeMechanism != NULL ) 
  173536             :         { 
  173537           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  173538             :         } 
  173539             :        else 
  173540             :         { 
  173541             :           attributeMechanism_copy = NULL; 
  173542             :         } 
  173543             :   /* check for a valid pointer and delete if present */ 
  173544           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  173545             :   /* add assignment to result here */ 
  173546           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  173547             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  173548             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  173549             :   // case: toBeCopied == COPY_DATA for need_paren
  173550           0 :      bool need_paren_copy = p_need_paren; 
  173551           0 :      result->p_need_paren = need_paren_copy; 
  173552             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  173553             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  173554             :   // case: toBeCopied == COPY_DATA for lvalue
  173555           0 :      bool lvalue_copy = p_lvalue; 
  173556           0 :      result->p_lvalue = lvalue_copy; 
  173557             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  173558             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  173559             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  173560           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  173561           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  173562             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  173563             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  173564             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  173565           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  173566           0 :      if ( p_operatorPosition != NULL ) 
  173567             :         { 
  173568           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  173569             :         } 
  173570             :        else 
  173571             :         { 
  173572             :           operatorPosition_copy = NULL; 
  173573             :         } 
  173574             :   /* check for a valid pointer and delete if present */ 
  173575           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  173576             :   /* add assignment to result here */ 
  173577           0 :      result->p_operatorPosition = operatorPosition_copy; 
  173578             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  173579             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  173580             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  173581           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  173582           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  173583             :   // Copy non-constructor parameter data member (access function): valueType_copy
  173584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueType
  173585             :   // case: toBeCopied == COPY_DATA for valueType
  173586           0 :      SgType* valueType_copy = p_valueType; 
  173587           0 :      result->p_valueType = valueType_copy; 
  173588             : 
  173589             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173590             : 
  173591             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  173592             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  173593             :   // fixupCopy(result,help);
  173594             : 
  173595             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  173596             :   // the Sg_File_Info objects that are built for the new IR nodes.
  173597           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  173598           0 :      if (locatedNode != NULL)
  173599             :         {
  173600             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  173601           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  173602           0 :           ROSE_ASSERT(start != NULL);
  173603             : #if 0
  173604             :        // Debugging information
  173605             :           if (start->get_parent() == NULL)
  173606             :              {
  173607             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173608             :              }
  173609             : #endif
  173610           0 :           start->set_parent(locatedNode);
  173611           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  173612             : 
  173613           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  173614             : 
  173615             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  173616             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  173617             :        // ROSE_ASSERT(end != NULL);
  173618           0 :           if (end == NULL)
  173619             :              {
  173620           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  173621             :              }
  173622             :             else
  173623             :              {
  173624             : #if 0
  173625             :             // Debugging information
  173626             :                if (end->get_parent() == NULL)
  173627             :                   {
  173628             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173629             :                   }
  173630             : #endif
  173631           0 :                end->set_parent(locatedNode);
  173632           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  173633             :              }
  173634             : 
  173635           0 :           SgExpression* expression = isSgExpression(result);
  173636           0 :           if (isSgExpression(this) != NULL)
  173637             :              {
  173638           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  173639             : 
  173640             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  173641           0 :                if (operatorPosition != NULL)
  173642             :                   {
  173643             : #if 0
  173644             :                  // Debugging information
  173645             :                     if (operatorPosition->get_parent() == NULL)
  173646             :                        {
  173647             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173648             :                        }
  173649             : #endif
  173650           0 :                     operatorPosition->set_parent(expression);
  173651           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  173652             :                   }
  173653             :              }
  173654             :         }
  173655             : 
  173656             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  173657           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  173658           0 :      if (initializedName != NULL)
  173659             :         {
  173660             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  173661           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  173662           0 :           ROSE_ASSERT(start != NULL);
  173663             : #if 0
  173664             :        // Debugging information
  173665             :           if (start->get_parent() == NULL)
  173666             :              {
  173667             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173668             :              }
  173669             : #endif
  173670           0 :           start->set_parent(initializedName);
  173671           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  173672             : 
  173673             : #if 0
  173674             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  173675             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  173676             : 
  173677             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  173678             :        // ROSE_ASSERT(end != NULL);
  173679             :           if (end == NULL)
  173680             :              {
  173681             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  173682             :              }
  173683             :             else
  173684             :              {
  173685             :                if (end->get_parent() == NULL)
  173686             :                   {
  173687             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173688             :                   }
  173689             :                end->set_parent(initializedName);
  173690             :                ROSE_ASSERT(end->get_parent() != NULL);
  173691             :              }
  173692             : #endif
  173693             :         }
  173694             : 
  173695             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  173696           0 :      help.insertCopiedNodePair(this,result);
  173697             : 
  173698             :   // printf ("End of copy SgTemplateParameterVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  173699             : 
  173700             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  173701             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  173702           0 :      help.decrementDepth();
  173703             : 
  173704             :   // Test if this is the root of the copy!
  173705           0 :      if (help.get_depth() == 0)
  173706             :         {
  173707             :        // This is the original calling node.
  173708             : 
  173709             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  173710             :        // printf ("Calling SgTemplateParameterVal::fixupCopy() (from root of AST being copied) \n");
  173711             : #if ALT_FIXUP_COPY
  173712             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  173713           0 :           fixupCopy_scopes (result,help);
  173714           0 :           fixupCopy_symbols (result,help);
  173715           0 :           fixupCopy_references (result,help);
  173716             : #else
  173717             :           fixupCopy(result,help);
  173718             : #endif
  173719             :        // Allow this to be called recursively, so accumulate the state.
  173720             :        // Also, clear the state in the SgCopyHelp object.
  173721             :        // help.clearState();
  173722             :         }
  173723             : 
  173724           0 :      return result;
  173725             :    }
  173726             : 
  173727             : 
  173728             : /* #line 173729 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  173729             : 
  173730             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173731             : 
  173732           0 : SgNode* SgNullptrValExp::copy ( SgCopyHelp& help) const
  173733             :    {
  173734           0 :      SgNullptrValExp* result = NULL;
  173735             : 
  173736             :   // printf ("Copy SgNullptrValExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  173737             : 
  173738             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  173739             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  173740             :   // The default value of the depth is 0, so after this call the depth is 1!
  173741           0 :      help.incrementDepth();
  173742             : 
  173743             : #if 0
  173744             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  173745             :   // but it is not generally true that things can only be copied once!
  173746             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  173747             :   // AstAttribute* existingAttribute = const_cast<SgNullptrValExp*>(this)->attribute["copied"];
  173748             :      bool previouslyCopied = const_cast<SgNullptrValExp*>(this)->attribute.exists("copied");
  173749             :      if (previouslyCopied == true)
  173750             :         {
  173751             :           this->get_file_info()->display("Called from copy SgNullptrValExp: debug");
  173752             :         }
  173753             :      ROSE_ASSERT(previouslyCopied == false);
  173754             : 
  173755             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  173756             :      AstAttribute* newAttribute = new AstAttribute();
  173757             :      ROSE_ASSERT(newAttribute != NULL);
  173758             : 
  173759             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  173760             :      const_cast<SgNullptrValExp*>(this)->attribute.add("copied",newAttribute);
  173761             : #endif
  173762             : 
  173763             :   // Copy data members from base classes
  173764             :   // Copy constructor parameter data member: startOfConstruct_copy
  173765             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  173766             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  173767           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  173768           0 :      if ( p_startOfConstruct != NULL ) 
  173769             :         { 
  173770           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  173771             :         } 
  173772             :        else 
  173773             :         { 
  173774             :           startOfConstruct_copy = NULL; 
  173775             :         } 
  173776             :  
  173777             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173778             : 
  173779             :   // Build an empty copy of this object (will be filled in, but 
  173780             :   // the parent can't be set and must be set by the caller)
  173781           0 :      result = new SgNullptrValExp(  startOfConstruct_copy );
  173782           0 :      ROSE_ASSERT(result != NULL);
  173783             : 
  173784             :   // Copy data members of "this" class
  173785             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  173786             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  173787             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  173788           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  173789           0 :      if ( p_endOfConstruct != NULL ) 
  173790             :         { 
  173791           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  173792             :         } 
  173793             :        else 
  173794             :         { 
  173795             :           endOfConstruct_copy = NULL; 
  173796             :         } 
  173797             :   /* check for a valid pointer and delete if present */ 
  173798           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  173799             :   /* add assignment to result here */ 
  173800           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  173801             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  173802             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  173803             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  173804           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  173805           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  173806             :         { 
  173807           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  173808             :         } 
  173809             :        else 
  173810             :         { 
  173811             :           attachedPreprocessingInfoPtr_copy = NULL; 
  173812             :         } 
  173813             :   /* check for a valid pointer and delete if present */ 
  173814           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  173815             :   /* add assignment to result here */ 
  173816           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  173817             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  173818             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  173819             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  173820           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  173821           0 :      if ( p_attributeMechanism != NULL ) 
  173822             :         { 
  173823           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  173824             :         } 
  173825             :        else 
  173826             :         { 
  173827             :           attributeMechanism_copy = NULL; 
  173828             :         } 
  173829             :   /* check for a valid pointer and delete if present */ 
  173830           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  173831             :   /* add assignment to result here */ 
  173832           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  173833             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  173834             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  173835             :   // case: toBeCopied == COPY_DATA for need_paren
  173836           0 :      bool need_paren_copy = p_need_paren; 
  173837           0 :      result->p_need_paren = need_paren_copy; 
  173838             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  173839             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  173840             :   // case: toBeCopied == COPY_DATA for lvalue
  173841           0 :      bool lvalue_copy = p_lvalue; 
  173842           0 :      result->p_lvalue = lvalue_copy; 
  173843             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  173844             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  173845             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  173846           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  173847           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  173848             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  173849             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  173850             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  173851           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  173852           0 :      if ( p_operatorPosition != NULL ) 
  173853             :         { 
  173854           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  173855             :         } 
  173856             :        else 
  173857             :         { 
  173858             :           operatorPosition_copy = NULL; 
  173859             :         } 
  173860             :   /* check for a valid pointer and delete if present */ 
  173861           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  173862             :   /* add assignment to result here */ 
  173863           0 :      result->p_operatorPosition = operatorPosition_copy; 
  173864             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  173865             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  173866             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  173867           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  173868           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  173869             : 
  173870             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  173871             : 
  173872             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  173873             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  173874             :   // fixupCopy(result,help);
  173875             : 
  173876             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  173877             :   // the Sg_File_Info objects that are built for the new IR nodes.
  173878           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  173879           0 :      if (locatedNode != NULL)
  173880             :         {
  173881             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  173882           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  173883           0 :           ROSE_ASSERT(start != NULL);
  173884             : #if 0
  173885             :        // Debugging information
  173886             :           if (start->get_parent() == NULL)
  173887             :              {
  173888             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173889             :              }
  173890             : #endif
  173891           0 :           start->set_parent(locatedNode);
  173892           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  173893             : 
  173894           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  173895             : 
  173896             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  173897             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  173898             :        // ROSE_ASSERT(end != NULL);
  173899           0 :           if (end == NULL)
  173900             :              {
  173901           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  173902             :              }
  173903             :             else
  173904             :              {
  173905             : #if 0
  173906             :             // Debugging information
  173907             :                if (end->get_parent() == NULL)
  173908             :                   {
  173909             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173910             :                   }
  173911             : #endif
  173912           0 :                end->set_parent(locatedNode);
  173913           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  173914             :              }
  173915             : 
  173916           0 :           SgExpression* expression = isSgExpression(result);
  173917           0 :           if (isSgExpression(this) != NULL)
  173918             :              {
  173919           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  173920             : 
  173921             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  173922           0 :                if (operatorPosition != NULL)
  173923             :                   {
  173924             : #if 0
  173925             :                  // Debugging information
  173926             :                     if (operatorPosition->get_parent() == NULL)
  173927             :                        {
  173928             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173929             :                        }
  173930             : #endif
  173931           0 :                     operatorPosition->set_parent(expression);
  173932           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  173933             :                   }
  173934             :              }
  173935             :         }
  173936             : 
  173937             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  173938           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  173939           0 :      if (initializedName != NULL)
  173940             :         {
  173941             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  173942           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  173943           0 :           ROSE_ASSERT(start != NULL);
  173944             : #if 0
  173945             :        // Debugging information
  173946             :           if (start->get_parent() == NULL)
  173947             :              {
  173948             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173949             :              }
  173950             : #endif
  173951           0 :           start->set_parent(initializedName);
  173952           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  173953             : 
  173954             : #if 0
  173955             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  173956             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  173957             : 
  173958             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  173959             :        // ROSE_ASSERT(end != NULL);
  173960             :           if (end == NULL)
  173961             :              {
  173962             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  173963             :              }
  173964             :             else
  173965             :              {
  173966             :                if (end->get_parent() == NULL)
  173967             :                   {
  173968             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  173969             :                   }
  173970             :                end->set_parent(initializedName);
  173971             :                ROSE_ASSERT(end->get_parent() != NULL);
  173972             :              }
  173973             : #endif
  173974             :         }
  173975             : 
  173976             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  173977           0 :      help.insertCopiedNodePair(this,result);
  173978             : 
  173979             :   // printf ("End of copy SgNullptrValExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  173980             : 
  173981             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  173982             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  173983           0 :      help.decrementDepth();
  173984             : 
  173985             :   // Test if this is the root of the copy!
  173986           0 :      if (help.get_depth() == 0)
  173987             :         {
  173988             :        // This is the original calling node.
  173989             : 
  173990             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  173991             :        // printf ("Calling SgNullptrValExp::fixupCopy() (from root of AST being copied) \n");
  173992             : #if ALT_FIXUP_COPY
  173993             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  173994           0 :           fixupCopy_scopes (result,help);
  173995           0 :           fixupCopy_symbols (result,help);
  173996           0 :           fixupCopy_references (result,help);
  173997             : #else
  173998             :           fixupCopy(result,help);
  173999             : #endif
  174000             :        // Allow this to be called recursively, so accumulate the state.
  174001             :        // Also, clear the state in the SgCopyHelp object.
  174002             :        // help.clearState();
  174003             :         }
  174004             : 
  174005           0 :      return result;
  174006             :    }
  174007             : 
  174008             : 
  174009             : /* #line 174010 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  174010             : 
  174011             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174012             : 
  174013           0 : SgNode* SgChar16Val::copy ( SgCopyHelp& help) const
  174014             :    {
  174015           0 :      SgChar16Val* result = NULL;
  174016             : 
  174017             :   // printf ("Copy SgChar16Val = %p = %s \n",this,SageInterface::get_name(this).c_str());
  174018             : 
  174019             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  174020             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  174021             :   // The default value of the depth is 0, so after this call the depth is 1!
  174022           0 :      help.incrementDepth();
  174023             : 
  174024             : #if 0
  174025             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  174026             :   // but it is not generally true that things can only be copied once!
  174027             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  174028             :   // AstAttribute* existingAttribute = const_cast<SgChar16Val*>(this)->attribute["copied"];
  174029             :      bool previouslyCopied = const_cast<SgChar16Val*>(this)->attribute.exists("copied");
  174030             :      if (previouslyCopied == true)
  174031             :         {
  174032             :           this->get_file_info()->display("Called from copy SgChar16Val: debug");
  174033             :         }
  174034             :      ROSE_ASSERT(previouslyCopied == false);
  174035             : 
  174036             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  174037             :      AstAttribute* newAttribute = new AstAttribute();
  174038             :      ROSE_ASSERT(newAttribute != NULL);
  174039             : 
  174040             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  174041             :      const_cast<SgChar16Val*>(this)->attribute.add("copied",newAttribute);
  174042             : #endif
  174043             : 
  174044             :   // Copy data members from base classes
  174045             :   // Copy constructor parameter data member: startOfConstruct_copy
  174046             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  174047             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  174048           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  174049           0 :      if ( p_startOfConstruct != NULL ) 
  174050             :         { 
  174051           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  174052             :         } 
  174053             :        else 
  174054             :         { 
  174055             :           startOfConstruct_copy = NULL; 
  174056             :         } 
  174057             :   // Copy constructor parameter data member: valueUL_copy
  174058             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueUL
  174059             :   // case: toBeCopied == COPY_DATA for valueUL
  174060           0 :      unsigned short valueUL_copy = p_valueUL; 
  174061             :   // Copy constructor parameter data member: valueString_copy
  174062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  174063             :   // case: toBeCopied == COPY_DATA for valueString
  174064           0 :      std::string valueString_copy = p_valueString; 
  174065             :  
  174066             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174067             : 
  174068             :   // Build an empty copy of this object (will be filled in, but 
  174069             :   // the parent can't be set and must be set by the caller)
  174070           0 :      result = new SgChar16Val(  startOfConstruct_copy, valueUL_copy, valueString_copy );
  174071           0 :      ROSE_ASSERT(result != NULL);
  174072             : 
  174073             :   // Copy data members of "this" class
  174074             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  174075             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  174076             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  174077           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  174078           0 :      if ( p_endOfConstruct != NULL ) 
  174079             :         { 
  174080           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  174081             :         } 
  174082             :        else 
  174083             :         { 
  174084             :           endOfConstruct_copy = NULL; 
  174085             :         } 
  174086             :   /* check for a valid pointer and delete if present */ 
  174087           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  174088             :   /* add assignment to result here */ 
  174089           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  174090             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  174091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  174092             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  174093           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  174094           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  174095             :         { 
  174096           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  174097             :         } 
  174098             :        else 
  174099             :         { 
  174100             :           attachedPreprocessingInfoPtr_copy = NULL; 
  174101             :         } 
  174102             :   /* check for a valid pointer and delete if present */ 
  174103           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  174104             :   /* add assignment to result here */ 
  174105           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  174106             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  174107             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  174108             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  174109           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  174110           0 :      if ( p_attributeMechanism != NULL ) 
  174111             :         { 
  174112           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  174113             :         } 
  174114             :        else 
  174115             :         { 
  174116             :           attributeMechanism_copy = NULL; 
  174117             :         } 
  174118             :   /* check for a valid pointer and delete if present */ 
  174119           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  174120             :   /* add assignment to result here */ 
  174121           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  174122             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  174123             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  174124             :   // case: toBeCopied == COPY_DATA for need_paren
  174125           0 :      bool need_paren_copy = p_need_paren; 
  174126           0 :      result->p_need_paren = need_paren_copy; 
  174127             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  174128             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  174129             :   // case: toBeCopied == COPY_DATA for lvalue
  174130           0 :      bool lvalue_copy = p_lvalue; 
  174131           0 :      result->p_lvalue = lvalue_copy; 
  174132             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  174133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  174134             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  174135           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  174136           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  174137             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  174138             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  174139             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  174140           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  174141           0 :      if ( p_operatorPosition != NULL ) 
  174142             :         { 
  174143           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  174144             :         } 
  174145             :        else 
  174146             :         { 
  174147             :           operatorPosition_copy = NULL; 
  174148             :         } 
  174149             :   /* check for a valid pointer and delete if present */ 
  174150           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  174151             :   /* add assignment to result here */ 
  174152           0 :      result->p_operatorPosition = operatorPosition_copy; 
  174153             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  174154             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  174155             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  174156           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  174157           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  174158             : 
  174159             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174160             : 
  174161             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  174162             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  174163             :   // fixupCopy(result,help);
  174164             : 
  174165             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  174166             :   // the Sg_File_Info objects that are built for the new IR nodes.
  174167           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  174168           0 :      if (locatedNode != NULL)
  174169             :         {
  174170             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  174171           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  174172           0 :           ROSE_ASSERT(start != NULL);
  174173             : #if 0
  174174             :        // Debugging information
  174175             :           if (start->get_parent() == NULL)
  174176             :              {
  174177             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174178             :              }
  174179             : #endif
  174180           0 :           start->set_parent(locatedNode);
  174181           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  174182             : 
  174183           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  174184             : 
  174185             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  174186             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  174187             :        // ROSE_ASSERT(end != NULL);
  174188           0 :           if (end == NULL)
  174189             :              {
  174190           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  174191             :              }
  174192             :             else
  174193             :              {
  174194             : #if 0
  174195             :             // Debugging information
  174196             :                if (end->get_parent() == NULL)
  174197             :                   {
  174198             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174199             :                   }
  174200             : #endif
  174201           0 :                end->set_parent(locatedNode);
  174202           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  174203             :              }
  174204             : 
  174205           0 :           SgExpression* expression = isSgExpression(result);
  174206           0 :           if (isSgExpression(this) != NULL)
  174207             :              {
  174208           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  174209             : 
  174210             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  174211           0 :                if (operatorPosition != NULL)
  174212             :                   {
  174213             : #if 0
  174214             :                  // Debugging information
  174215             :                     if (operatorPosition->get_parent() == NULL)
  174216             :                        {
  174217             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174218             :                        }
  174219             : #endif
  174220           0 :                     operatorPosition->set_parent(expression);
  174221           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  174222             :                   }
  174223             :              }
  174224             :         }
  174225             : 
  174226             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  174227           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  174228           0 :      if (initializedName != NULL)
  174229             :         {
  174230             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  174231           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  174232           0 :           ROSE_ASSERT(start != NULL);
  174233             : #if 0
  174234             :        // Debugging information
  174235             :           if (start->get_parent() == NULL)
  174236             :              {
  174237             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174238             :              }
  174239             : #endif
  174240           0 :           start->set_parent(initializedName);
  174241           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  174242             : 
  174243             : #if 0
  174244             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  174245             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  174246             : 
  174247             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  174248             :        // ROSE_ASSERT(end != NULL);
  174249             :           if (end == NULL)
  174250             :              {
  174251             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  174252             :              }
  174253             :             else
  174254             :              {
  174255             :                if (end->get_parent() == NULL)
  174256             :                   {
  174257             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174258             :                   }
  174259             :                end->set_parent(initializedName);
  174260             :                ROSE_ASSERT(end->get_parent() != NULL);
  174261             :              }
  174262             : #endif
  174263             :         }
  174264             : 
  174265             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  174266           0 :      help.insertCopiedNodePair(this,result);
  174267             : 
  174268             :   // printf ("End of copy SgChar16Val = %p = %s \n",this,SageInterface::get_name(this).c_str());
  174269             : 
  174270             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  174271             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  174272           0 :      help.decrementDepth();
  174273             : 
  174274             :   // Test if this is the root of the copy!
  174275           0 :      if (help.get_depth() == 0)
  174276             :         {
  174277             :        // This is the original calling node.
  174278             : 
  174279             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  174280             :        // printf ("Calling SgChar16Val::fixupCopy() (from root of AST being copied) \n");
  174281             : #if ALT_FIXUP_COPY
  174282             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  174283           0 :           fixupCopy_scopes (result,help);
  174284           0 :           fixupCopy_symbols (result,help);
  174285           0 :           fixupCopy_references (result,help);
  174286             : #else
  174287             :           fixupCopy(result,help);
  174288             : #endif
  174289             :        // Allow this to be called recursively, so accumulate the state.
  174290             :        // Also, clear the state in the SgCopyHelp object.
  174291             :        // help.clearState();
  174292             :         }
  174293             : 
  174294           0 :      return result;
  174295             :    }
  174296             : 
  174297             : 
  174298             : /* #line 174299 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  174299             : 
  174300             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174301             : 
  174302           0 : SgNode* SgChar32Val::copy ( SgCopyHelp& help) const
  174303             :    {
  174304           0 :      SgChar32Val* result = NULL;
  174305             : 
  174306             :   // printf ("Copy SgChar32Val = %p = %s \n",this,SageInterface::get_name(this).c_str());
  174307             : 
  174308             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  174309             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  174310             :   // The default value of the depth is 0, so after this call the depth is 1!
  174311           0 :      help.incrementDepth();
  174312             : 
  174313             : #if 0
  174314             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  174315             :   // but it is not generally true that things can only be copied once!
  174316             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  174317             :   // AstAttribute* existingAttribute = const_cast<SgChar32Val*>(this)->attribute["copied"];
  174318             :      bool previouslyCopied = const_cast<SgChar32Val*>(this)->attribute.exists("copied");
  174319             :      if (previouslyCopied == true)
  174320             :         {
  174321             :           this->get_file_info()->display("Called from copy SgChar32Val: debug");
  174322             :         }
  174323             :      ROSE_ASSERT(previouslyCopied == false);
  174324             : 
  174325             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  174326             :      AstAttribute* newAttribute = new AstAttribute();
  174327             :      ROSE_ASSERT(newAttribute != NULL);
  174328             : 
  174329             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  174330             :      const_cast<SgChar32Val*>(this)->attribute.add("copied",newAttribute);
  174331             : #endif
  174332             : 
  174333             :   // Copy data members from base classes
  174334             :   // Copy constructor parameter data member: startOfConstruct_copy
  174335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  174336             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  174337           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  174338           0 :      if ( p_startOfConstruct != NULL ) 
  174339             :         { 
  174340           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  174341             :         } 
  174342             :        else 
  174343             :         { 
  174344             :           startOfConstruct_copy = NULL; 
  174345             :         } 
  174346             :   // Copy constructor parameter data member: valueUL_copy
  174347             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueUL
  174348             :   // case: toBeCopied == COPY_DATA for valueUL
  174349           0 :      unsigned int valueUL_copy = p_valueUL; 
  174350             :   // Copy constructor parameter data member: valueString_copy
  174351             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  174352             :   // case: toBeCopied == COPY_DATA for valueString
  174353           0 :      std::string valueString_copy = p_valueString; 
  174354             :  
  174355             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174356             : 
  174357             :   // Build an empty copy of this object (will be filled in, but 
  174358             :   // the parent can't be set and must be set by the caller)
  174359           0 :      result = new SgChar32Val(  startOfConstruct_copy, valueUL_copy, valueString_copy );
  174360           0 :      ROSE_ASSERT(result != NULL);
  174361             : 
  174362             :   // Copy data members of "this" class
  174363             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  174364             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  174365             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  174366           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  174367           0 :      if ( p_endOfConstruct != NULL ) 
  174368             :         { 
  174369           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  174370             :         } 
  174371             :        else 
  174372             :         { 
  174373             :           endOfConstruct_copy = NULL; 
  174374             :         } 
  174375             :   /* check for a valid pointer and delete if present */ 
  174376           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  174377             :   /* add assignment to result here */ 
  174378           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  174379             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  174380             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  174381             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  174382           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  174383           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  174384             :         { 
  174385           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  174386             :         } 
  174387             :        else 
  174388             :         { 
  174389             :           attachedPreprocessingInfoPtr_copy = NULL; 
  174390             :         } 
  174391             :   /* check for a valid pointer and delete if present */ 
  174392           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  174393             :   /* add assignment to result here */ 
  174394           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  174395             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  174396             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  174397             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  174398           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  174399           0 :      if ( p_attributeMechanism != NULL ) 
  174400             :         { 
  174401           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  174402             :         } 
  174403             :        else 
  174404             :         { 
  174405             :           attributeMechanism_copy = NULL; 
  174406             :         } 
  174407             :   /* check for a valid pointer and delete if present */ 
  174408           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  174409             :   /* add assignment to result here */ 
  174410           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  174411             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  174412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  174413             :   // case: toBeCopied == COPY_DATA for need_paren
  174414           0 :      bool need_paren_copy = p_need_paren; 
  174415           0 :      result->p_need_paren = need_paren_copy; 
  174416             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  174417             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  174418             :   // case: toBeCopied == COPY_DATA for lvalue
  174419           0 :      bool lvalue_copy = p_lvalue; 
  174420           0 :      result->p_lvalue = lvalue_copy; 
  174421             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  174422             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  174423             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  174424           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  174425           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  174426             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  174427             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  174428             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  174429           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  174430           0 :      if ( p_operatorPosition != NULL ) 
  174431             :         { 
  174432           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  174433             :         } 
  174434             :        else 
  174435             :         { 
  174436             :           operatorPosition_copy = NULL; 
  174437             :         } 
  174438             :   /* check for a valid pointer and delete if present */ 
  174439           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  174440             :   /* add assignment to result here */ 
  174441           0 :      result->p_operatorPosition = operatorPosition_copy; 
  174442             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  174443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  174444             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  174445           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  174446           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  174447             : 
  174448             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174449             : 
  174450             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  174451             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  174452             :   // fixupCopy(result,help);
  174453             : 
  174454             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  174455             :   // the Sg_File_Info objects that are built for the new IR nodes.
  174456           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  174457           0 :      if (locatedNode != NULL)
  174458             :         {
  174459             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  174460           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  174461           0 :           ROSE_ASSERT(start != NULL);
  174462             : #if 0
  174463             :        // Debugging information
  174464             :           if (start->get_parent() == NULL)
  174465             :              {
  174466             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174467             :              }
  174468             : #endif
  174469           0 :           start->set_parent(locatedNode);
  174470           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  174471             : 
  174472           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  174473             : 
  174474             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  174475             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  174476             :        // ROSE_ASSERT(end != NULL);
  174477           0 :           if (end == NULL)
  174478             :              {
  174479           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  174480             :              }
  174481             :             else
  174482             :              {
  174483             : #if 0
  174484             :             // Debugging information
  174485             :                if (end->get_parent() == NULL)
  174486             :                   {
  174487             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174488             :                   }
  174489             : #endif
  174490           0 :                end->set_parent(locatedNode);
  174491           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  174492             :              }
  174493             : 
  174494           0 :           SgExpression* expression = isSgExpression(result);
  174495           0 :           if (isSgExpression(this) != NULL)
  174496             :              {
  174497           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  174498             : 
  174499             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  174500           0 :                if (operatorPosition != NULL)
  174501             :                   {
  174502             : #if 0
  174503             :                  // Debugging information
  174504             :                     if (operatorPosition->get_parent() == NULL)
  174505             :                        {
  174506             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174507             :                        }
  174508             : #endif
  174509           0 :                     operatorPosition->set_parent(expression);
  174510           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  174511             :                   }
  174512             :              }
  174513             :         }
  174514             : 
  174515             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  174516           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  174517           0 :      if (initializedName != NULL)
  174518             :         {
  174519             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  174520           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  174521           0 :           ROSE_ASSERT(start != NULL);
  174522             : #if 0
  174523             :        // Debugging information
  174524             :           if (start->get_parent() == NULL)
  174525             :              {
  174526             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174527             :              }
  174528             : #endif
  174529           0 :           start->set_parent(initializedName);
  174530           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  174531             : 
  174532             : #if 0
  174533             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  174534             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  174535             : 
  174536             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  174537             :        // ROSE_ASSERT(end != NULL);
  174538             :           if (end == NULL)
  174539             :              {
  174540             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  174541             :              }
  174542             :             else
  174543             :              {
  174544             :                if (end->get_parent() == NULL)
  174545             :                   {
  174546             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174547             :                   }
  174548             :                end->set_parent(initializedName);
  174549             :                ROSE_ASSERT(end->get_parent() != NULL);
  174550             :              }
  174551             : #endif
  174552             :         }
  174553             : 
  174554             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  174555           0 :      help.insertCopiedNodePair(this,result);
  174556             : 
  174557             :   // printf ("End of copy SgChar32Val = %p = %s \n",this,SageInterface::get_name(this).c_str());
  174558             : 
  174559             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  174560             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  174561           0 :      help.decrementDepth();
  174562             : 
  174563             :   // Test if this is the root of the copy!
  174564           0 :      if (help.get_depth() == 0)
  174565             :         {
  174566             :        // This is the original calling node.
  174567             : 
  174568             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  174569             :        // printf ("Calling SgChar32Val::fixupCopy() (from root of AST being copied) \n");
  174570             : #if ALT_FIXUP_COPY
  174571             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  174572           0 :           fixupCopy_scopes (result,help);
  174573           0 :           fixupCopy_symbols (result,help);
  174574           0 :           fixupCopy_references (result,help);
  174575             : #else
  174576             :           fixupCopy(result,help);
  174577             : #endif
  174578             :        // Allow this to be called recursively, so accumulate the state.
  174579             :        // Also, clear the state in the SgCopyHelp object.
  174580             :        // help.clearState();
  174581             :         }
  174582             : 
  174583           0 :      return result;
  174584             :    }
  174585             : 
  174586             : 
  174587             : /* #line 174588 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  174588             : 
  174589             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174590             : 
  174591           0 : SgNode* SgFloat80Val::copy ( SgCopyHelp& help) const
  174592             :    {
  174593           0 :      SgFloat80Val* result = NULL;
  174594             : 
  174595             :   // printf ("Copy SgFloat80Val = %p = %s \n",this,SageInterface::get_name(this).c_str());
  174596             : 
  174597             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  174598             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  174599             :   // The default value of the depth is 0, so after this call the depth is 1!
  174600           0 :      help.incrementDepth();
  174601             : 
  174602             : #if 0
  174603             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  174604             :   // but it is not generally true that things can only be copied once!
  174605             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  174606             :   // AstAttribute* existingAttribute = const_cast<SgFloat80Val*>(this)->attribute["copied"];
  174607             :      bool previouslyCopied = const_cast<SgFloat80Val*>(this)->attribute.exists("copied");
  174608             :      if (previouslyCopied == true)
  174609             :         {
  174610             :           this->get_file_info()->display("Called from copy SgFloat80Val: debug");
  174611             :         }
  174612             :      ROSE_ASSERT(previouslyCopied == false);
  174613             : 
  174614             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  174615             :      AstAttribute* newAttribute = new AstAttribute();
  174616             :      ROSE_ASSERT(newAttribute != NULL);
  174617             : 
  174618             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  174619             :      const_cast<SgFloat80Val*>(this)->attribute.add("copied",newAttribute);
  174620             : #endif
  174621             : 
  174622             :   // Copy data members from base classes
  174623             :   // Copy constructor parameter data member: startOfConstruct_copy
  174624             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  174625             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  174626           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  174627           0 :      if ( p_startOfConstruct != NULL ) 
  174628             :         { 
  174629           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  174630             :         } 
  174631             :        else 
  174632             :         { 
  174633             :           startOfConstruct_copy = NULL; 
  174634             :         } 
  174635             :   // Copy constructor parameter data member: value_copy
  174636             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  174637             :   // case: toBeCopied == COPY_DATA for value
  174638           0 :      long double value_copy = p_value; 
  174639             :   // Copy constructor parameter data member: valueString_copy
  174640             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  174641             :   // case: toBeCopied == COPY_DATA for valueString
  174642           0 :      std::string valueString_copy = p_valueString; 
  174643             :  
  174644             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174645             : 
  174646             :   // Build an empty copy of this object (will be filled in, but 
  174647             :   // the parent can't be set and must be set by the caller)
  174648           0 :      result = new SgFloat80Val(  startOfConstruct_copy, value_copy, valueString_copy );
  174649           0 :      ROSE_ASSERT(result != NULL);
  174650             : 
  174651             :   // Copy data members of "this" class
  174652             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  174653             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  174654             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  174655           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  174656           0 :      if ( p_endOfConstruct != NULL ) 
  174657             :         { 
  174658           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  174659             :         } 
  174660             :        else 
  174661             :         { 
  174662             :           endOfConstruct_copy = NULL; 
  174663             :         } 
  174664             :   /* check for a valid pointer and delete if present */ 
  174665           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  174666             :   /* add assignment to result here */ 
  174667           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  174668             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  174669             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  174670             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  174671           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  174672           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  174673             :         { 
  174674           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  174675             :         } 
  174676             :        else 
  174677             :         { 
  174678             :           attachedPreprocessingInfoPtr_copy = NULL; 
  174679             :         } 
  174680             :   /* check for a valid pointer and delete if present */ 
  174681           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  174682             :   /* add assignment to result here */ 
  174683           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  174684             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  174685             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  174686             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  174687           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  174688           0 :      if ( p_attributeMechanism != NULL ) 
  174689             :         { 
  174690           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  174691             :         } 
  174692             :        else 
  174693             :         { 
  174694             :           attributeMechanism_copy = NULL; 
  174695             :         } 
  174696             :   /* check for a valid pointer and delete if present */ 
  174697           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  174698             :   /* add assignment to result here */ 
  174699           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  174700             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  174701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  174702             :   // case: toBeCopied == COPY_DATA for need_paren
  174703           0 :      bool need_paren_copy = p_need_paren; 
  174704           0 :      result->p_need_paren = need_paren_copy; 
  174705             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  174706             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  174707             :   // case: toBeCopied == COPY_DATA for lvalue
  174708           0 :      bool lvalue_copy = p_lvalue; 
  174709           0 :      result->p_lvalue = lvalue_copy; 
  174710             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  174711             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  174712             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  174713           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  174714           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  174715             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  174716             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  174717             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  174718           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  174719           0 :      if ( p_operatorPosition != NULL ) 
  174720             :         { 
  174721           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  174722             :         } 
  174723             :        else 
  174724             :         { 
  174725             :           operatorPosition_copy = NULL; 
  174726             :         } 
  174727             :   /* check for a valid pointer and delete if present */ 
  174728           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  174729             :   /* add assignment to result here */ 
  174730           0 :      result->p_operatorPosition = operatorPosition_copy; 
  174731             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  174732             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  174733             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  174734           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  174735           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  174736             : 
  174737             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174738             : 
  174739             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  174740             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  174741             :   // fixupCopy(result,help);
  174742             : 
  174743             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  174744             :   // the Sg_File_Info objects that are built for the new IR nodes.
  174745           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  174746           0 :      if (locatedNode != NULL)
  174747             :         {
  174748             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  174749           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  174750           0 :           ROSE_ASSERT(start != NULL);
  174751             : #if 0
  174752             :        // Debugging information
  174753             :           if (start->get_parent() == NULL)
  174754             :              {
  174755             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174756             :              }
  174757             : #endif
  174758           0 :           start->set_parent(locatedNode);
  174759           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  174760             : 
  174761           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  174762             : 
  174763             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  174764             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  174765             :        // ROSE_ASSERT(end != NULL);
  174766           0 :           if (end == NULL)
  174767             :              {
  174768           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  174769             :              }
  174770             :             else
  174771             :              {
  174772             : #if 0
  174773             :             // Debugging information
  174774             :                if (end->get_parent() == NULL)
  174775             :                   {
  174776             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174777             :                   }
  174778             : #endif
  174779           0 :                end->set_parent(locatedNode);
  174780           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  174781             :              }
  174782             : 
  174783           0 :           SgExpression* expression = isSgExpression(result);
  174784           0 :           if (isSgExpression(this) != NULL)
  174785             :              {
  174786           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  174787             : 
  174788             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  174789           0 :                if (operatorPosition != NULL)
  174790             :                   {
  174791             : #if 0
  174792             :                  // Debugging information
  174793             :                     if (operatorPosition->get_parent() == NULL)
  174794             :                        {
  174795             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174796             :                        }
  174797             : #endif
  174798           0 :                     operatorPosition->set_parent(expression);
  174799           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  174800             :                   }
  174801             :              }
  174802             :         }
  174803             : 
  174804             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  174805           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  174806           0 :      if (initializedName != NULL)
  174807             :         {
  174808             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  174809           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  174810           0 :           ROSE_ASSERT(start != NULL);
  174811             : #if 0
  174812             :        // Debugging information
  174813             :           if (start->get_parent() == NULL)
  174814             :              {
  174815             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174816             :              }
  174817             : #endif
  174818           0 :           start->set_parent(initializedName);
  174819           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  174820             : 
  174821             : #if 0
  174822             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  174823             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  174824             : 
  174825             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  174826             :        // ROSE_ASSERT(end != NULL);
  174827             :           if (end == NULL)
  174828             :              {
  174829             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  174830             :              }
  174831             :             else
  174832             :              {
  174833             :                if (end->get_parent() == NULL)
  174834             :                   {
  174835             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  174836             :                   }
  174837             :                end->set_parent(initializedName);
  174838             :                ROSE_ASSERT(end->get_parent() != NULL);
  174839             :              }
  174840             : #endif
  174841             :         }
  174842             : 
  174843             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  174844           0 :      help.insertCopiedNodePair(this,result);
  174845             : 
  174846             :   // printf ("End of copy SgFloat80Val = %p = %s \n",this,SageInterface::get_name(this).c_str());
  174847             : 
  174848             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  174849             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  174850           0 :      help.decrementDepth();
  174851             : 
  174852             :   // Test if this is the root of the copy!
  174853           0 :      if (help.get_depth() == 0)
  174854             :         {
  174855             :        // This is the original calling node.
  174856             : 
  174857             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  174858             :        // printf ("Calling SgFloat80Val::fixupCopy() (from root of AST being copied) \n");
  174859             : #if ALT_FIXUP_COPY
  174860             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  174861           0 :           fixupCopy_scopes (result,help);
  174862           0 :           fixupCopy_symbols (result,help);
  174863           0 :           fixupCopy_references (result,help);
  174864             : #else
  174865             :           fixupCopy(result,help);
  174866             : #endif
  174867             :        // Allow this to be called recursively, so accumulate the state.
  174868             :        // Also, clear the state in the SgCopyHelp object.
  174869             :        // help.clearState();
  174870             :         }
  174871             : 
  174872           0 :      return result;
  174873             :    }
  174874             : 
  174875             : 
  174876             : /* #line 174877 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  174877             : 
  174878             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174879             : 
  174880           0 : SgNode* SgFloat128Val::copy ( SgCopyHelp& help) const
  174881             :    {
  174882           0 :      SgFloat128Val* result = NULL;
  174883             : 
  174884             :   // printf ("Copy SgFloat128Val = %p = %s \n",this,SageInterface::get_name(this).c_str());
  174885             : 
  174886             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  174887             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  174888             :   // The default value of the depth is 0, so after this call the depth is 1!
  174889           0 :      help.incrementDepth();
  174890             : 
  174891             : #if 0
  174892             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  174893             :   // but it is not generally true that things can only be copied once!
  174894             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  174895             :   // AstAttribute* existingAttribute = const_cast<SgFloat128Val*>(this)->attribute["copied"];
  174896             :      bool previouslyCopied = const_cast<SgFloat128Val*>(this)->attribute.exists("copied");
  174897             :      if (previouslyCopied == true)
  174898             :         {
  174899             :           this->get_file_info()->display("Called from copy SgFloat128Val: debug");
  174900             :         }
  174901             :      ROSE_ASSERT(previouslyCopied == false);
  174902             : 
  174903             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  174904             :      AstAttribute* newAttribute = new AstAttribute();
  174905             :      ROSE_ASSERT(newAttribute != NULL);
  174906             : 
  174907             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  174908             :      const_cast<SgFloat128Val*>(this)->attribute.add("copied",newAttribute);
  174909             : #endif
  174910             : 
  174911             :   // Copy data members from base classes
  174912             :   // Copy constructor parameter data member: startOfConstruct_copy
  174913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  174914             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  174915           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  174916           0 :      if ( p_startOfConstruct != NULL ) 
  174917             :         { 
  174918           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  174919             :         } 
  174920             :        else 
  174921             :         { 
  174922             :           startOfConstruct_copy = NULL; 
  174923             :         } 
  174924             :   // Copy constructor parameter data member: value_copy
  174925             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for value
  174926             :   // case: toBeCopied == COPY_DATA for value
  174927           0 :      long double value_copy = p_value; 
  174928             :   // Copy constructor parameter data member: valueString_copy
  174929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for valueString
  174930             :   // case: toBeCopied == COPY_DATA for valueString
  174931           0 :      std::string valueString_copy = p_valueString; 
  174932             :  
  174933             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  174934             : 
  174935             :   // Build an empty copy of this object (will be filled in, but 
  174936             :   // the parent can't be set and must be set by the caller)
  174937           0 :      result = new SgFloat128Val(  startOfConstruct_copy, value_copy, valueString_copy );
  174938           0 :      ROSE_ASSERT(result != NULL);
  174939             : 
  174940             :   // Copy data members of "this" class
  174941             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  174942             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  174943             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  174944           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  174945           0 :      if ( p_endOfConstruct != NULL ) 
  174946             :         { 
  174947           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  174948             :         } 
  174949             :        else 
  174950             :         { 
  174951             :           endOfConstruct_copy = NULL; 
  174952             :         } 
  174953             :   /* check for a valid pointer and delete if present */ 
  174954           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  174955             :   /* add assignment to result here */ 
  174956           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  174957             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  174958             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  174959             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  174960           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  174961           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  174962             :         { 
  174963           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  174964             :         } 
  174965             :        else 
  174966             :         { 
  174967             :           attachedPreprocessingInfoPtr_copy = NULL; 
  174968             :         } 
  174969             :   /* check for a valid pointer and delete if present */ 
  174970           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  174971             :   /* add assignment to result here */ 
  174972           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  174973             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  174974             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  174975             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  174976           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  174977           0 :      if ( p_attributeMechanism != NULL ) 
  174978             :         { 
  174979           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  174980             :         } 
  174981             :        else 
  174982             :         { 
  174983             :           attributeMechanism_copy = NULL; 
  174984             :         } 
  174985             :   /* check for a valid pointer and delete if present */ 
  174986           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  174987             :   /* add assignment to result here */ 
  174988           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  174989             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  174990             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  174991             :   // case: toBeCopied == COPY_DATA for need_paren
  174992           0 :      bool need_paren_copy = p_need_paren; 
  174993           0 :      result->p_need_paren = need_paren_copy; 
  174994             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  174995             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  174996             :   // case: toBeCopied == COPY_DATA for lvalue
  174997           0 :      bool lvalue_copy = p_lvalue; 
  174998           0 :      result->p_lvalue = lvalue_copy; 
  174999             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  175000             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  175001             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  175002           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  175003           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  175004             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  175005             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  175006             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  175007           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  175008           0 :      if ( p_operatorPosition != NULL ) 
  175009             :         { 
  175010           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  175011             :         } 
  175012             :        else 
  175013             :         { 
  175014             :           operatorPosition_copy = NULL; 
  175015             :         } 
  175016             :   /* check for a valid pointer and delete if present */ 
  175017           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  175018             :   /* add assignment to result here */ 
  175019           0 :      result->p_operatorPosition = operatorPosition_copy; 
  175020             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  175021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  175022             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  175023           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  175024           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  175025             : 
  175026             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175027             : 
  175028             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  175029             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  175030             :   // fixupCopy(result,help);
  175031             : 
  175032             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  175033             :   // the Sg_File_Info objects that are built for the new IR nodes.
  175034           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  175035           0 :      if (locatedNode != NULL)
  175036             :         {
  175037             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  175038           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  175039           0 :           ROSE_ASSERT(start != NULL);
  175040             : #if 0
  175041             :        // Debugging information
  175042             :           if (start->get_parent() == NULL)
  175043             :              {
  175044             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175045             :              }
  175046             : #endif
  175047           0 :           start->set_parent(locatedNode);
  175048           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  175049             : 
  175050           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  175051             : 
  175052             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  175053             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  175054             :        // ROSE_ASSERT(end != NULL);
  175055           0 :           if (end == NULL)
  175056             :              {
  175057           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  175058             :              }
  175059             :             else
  175060             :              {
  175061             : #if 0
  175062             :             // Debugging information
  175063             :                if (end->get_parent() == NULL)
  175064             :                   {
  175065             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175066             :                   }
  175067             : #endif
  175068           0 :                end->set_parent(locatedNode);
  175069           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  175070             :              }
  175071             : 
  175072           0 :           SgExpression* expression = isSgExpression(result);
  175073           0 :           if (isSgExpression(this) != NULL)
  175074             :              {
  175075           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  175076             : 
  175077             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  175078           0 :                if (operatorPosition != NULL)
  175079             :                   {
  175080             : #if 0
  175081             :                  // Debugging information
  175082             :                     if (operatorPosition->get_parent() == NULL)
  175083             :                        {
  175084             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175085             :                        }
  175086             : #endif
  175087           0 :                     operatorPosition->set_parent(expression);
  175088           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  175089             :                   }
  175090             :              }
  175091             :         }
  175092             : 
  175093             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  175094           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  175095           0 :      if (initializedName != NULL)
  175096             :         {
  175097             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  175098           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  175099           0 :           ROSE_ASSERT(start != NULL);
  175100             : #if 0
  175101             :        // Debugging information
  175102             :           if (start->get_parent() == NULL)
  175103             :              {
  175104             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175105             :              }
  175106             : #endif
  175107           0 :           start->set_parent(initializedName);
  175108           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  175109             : 
  175110             : #if 0
  175111             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  175112             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  175113             : 
  175114             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  175115             :        // ROSE_ASSERT(end != NULL);
  175116             :           if (end == NULL)
  175117             :              {
  175118             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  175119             :              }
  175120             :             else
  175121             :              {
  175122             :                if (end->get_parent() == NULL)
  175123             :                   {
  175124             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175125             :                   }
  175126             :                end->set_parent(initializedName);
  175127             :                ROSE_ASSERT(end->get_parent() != NULL);
  175128             :              }
  175129             : #endif
  175130             :         }
  175131             : 
  175132             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  175133           0 :      help.insertCopiedNodePair(this,result);
  175134             : 
  175135             :   // printf ("End of copy SgFloat128Val = %p = %s \n",this,SageInterface::get_name(this).c_str());
  175136             : 
  175137             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  175138             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  175139           0 :      help.decrementDepth();
  175140             : 
  175141             :   // Test if this is the root of the copy!
  175142           0 :      if (help.get_depth() == 0)
  175143             :         {
  175144             :        // This is the original calling node.
  175145             : 
  175146             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  175147             :        // printf ("Calling SgFloat128Val::fixupCopy() (from root of AST being copied) \n");
  175148             : #if ALT_FIXUP_COPY
  175149             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  175150           0 :           fixupCopy_scopes (result,help);
  175151           0 :           fixupCopy_symbols (result,help);
  175152           0 :           fixupCopy_references (result,help);
  175153             : #else
  175154             :           fixupCopy(result,help);
  175155             : #endif
  175156             :        // Allow this to be called recursively, so accumulate the state.
  175157             :        // Also, clear the state in the SgCopyHelp object.
  175158             :        // help.clearState();
  175159             :         }
  175160             : 
  175161           0 :      return result;
  175162             :    }
  175163             : 
  175164             : 
  175165             : /* #line 175166 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  175166             : 
  175167             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175168             : 
  175169           0 : SgNode* SgVoidVal::copy ( SgCopyHelp& help) const
  175170             :    {
  175171           0 :      SgVoidVal* result = NULL;
  175172             : 
  175173             :   // printf ("Copy SgVoidVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  175174             : 
  175175             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  175176             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  175177             :   // The default value of the depth is 0, so after this call the depth is 1!
  175178           0 :      help.incrementDepth();
  175179             : 
  175180             : #if 0
  175181             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  175182             :   // but it is not generally true that things can only be copied once!
  175183             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  175184             :   // AstAttribute* existingAttribute = const_cast<SgVoidVal*>(this)->attribute["copied"];
  175185             :      bool previouslyCopied = const_cast<SgVoidVal*>(this)->attribute.exists("copied");
  175186             :      if (previouslyCopied == true)
  175187             :         {
  175188             :           this->get_file_info()->display("Called from copy SgVoidVal: debug");
  175189             :         }
  175190             :      ROSE_ASSERT(previouslyCopied == false);
  175191             : 
  175192             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  175193             :      AstAttribute* newAttribute = new AstAttribute();
  175194             :      ROSE_ASSERT(newAttribute != NULL);
  175195             : 
  175196             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  175197             :      const_cast<SgVoidVal*>(this)->attribute.add("copied",newAttribute);
  175198             : #endif
  175199             : 
  175200             :   // Copy data members from base classes
  175201             :   // Copy constructor parameter data member: startOfConstruct_copy
  175202             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  175203             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  175204           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  175205           0 :      if ( p_startOfConstruct != NULL ) 
  175206             :         { 
  175207           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  175208             :         } 
  175209             :        else 
  175210             :         { 
  175211             :           startOfConstruct_copy = NULL; 
  175212             :         } 
  175213             :  
  175214             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175215             : 
  175216             :   // Build an empty copy of this object (will be filled in, but 
  175217             :   // the parent can't be set and must be set by the caller)
  175218           0 :      result = new SgVoidVal(  startOfConstruct_copy );
  175219           0 :      ROSE_ASSERT(result != NULL);
  175220             : 
  175221             :   // Copy data members of "this" class
  175222             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  175223             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  175224             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  175225           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  175226           0 :      if ( p_endOfConstruct != NULL ) 
  175227             :         { 
  175228           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  175229             :         } 
  175230             :        else 
  175231             :         { 
  175232             :           endOfConstruct_copy = NULL; 
  175233             :         } 
  175234             :   /* check for a valid pointer and delete if present */ 
  175235           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  175236             :   /* add assignment to result here */ 
  175237           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  175238             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  175239             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  175240             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  175241           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  175242           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  175243             :         { 
  175244           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  175245             :         } 
  175246             :        else 
  175247             :         { 
  175248             :           attachedPreprocessingInfoPtr_copy = NULL; 
  175249             :         } 
  175250             :   /* check for a valid pointer and delete if present */ 
  175251           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  175252             :   /* add assignment to result here */ 
  175253           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  175254             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  175255             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  175256             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  175257           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  175258           0 :      if ( p_attributeMechanism != NULL ) 
  175259             :         { 
  175260           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  175261             :         } 
  175262             :        else 
  175263             :         { 
  175264             :           attributeMechanism_copy = NULL; 
  175265             :         } 
  175266             :   /* check for a valid pointer and delete if present */ 
  175267           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  175268             :   /* add assignment to result here */ 
  175269           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  175270             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  175271             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  175272             :   // case: toBeCopied == COPY_DATA for need_paren
  175273           0 :      bool need_paren_copy = p_need_paren; 
  175274           0 :      result->p_need_paren = need_paren_copy; 
  175275             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  175276             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  175277             :   // case: toBeCopied == COPY_DATA for lvalue
  175278           0 :      bool lvalue_copy = p_lvalue; 
  175279           0 :      result->p_lvalue = lvalue_copy; 
  175280             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  175281             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  175282             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  175283           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  175284           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  175285             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  175286             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  175287             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  175288           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  175289           0 :      if ( p_operatorPosition != NULL ) 
  175290             :         { 
  175291           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  175292             :         } 
  175293             :        else 
  175294             :         { 
  175295             :           operatorPosition_copy = NULL; 
  175296             :         } 
  175297             :   /* check for a valid pointer and delete if present */ 
  175298           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  175299             :   /* add assignment to result here */ 
  175300           0 :      result->p_operatorPosition = operatorPosition_copy; 
  175301             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  175302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  175303             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  175304           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  175305           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  175306             : 
  175307             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175308             : 
  175309             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  175310             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  175311             :   // fixupCopy(result,help);
  175312             : 
  175313             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  175314             :   // the Sg_File_Info objects that are built for the new IR nodes.
  175315           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  175316           0 :      if (locatedNode != NULL)
  175317             :         {
  175318             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  175319           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  175320           0 :           ROSE_ASSERT(start != NULL);
  175321             : #if 0
  175322             :        // Debugging information
  175323             :           if (start->get_parent() == NULL)
  175324             :              {
  175325             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175326             :              }
  175327             : #endif
  175328           0 :           start->set_parent(locatedNode);
  175329           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  175330             : 
  175331           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  175332             : 
  175333             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  175334             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  175335             :        // ROSE_ASSERT(end != NULL);
  175336           0 :           if (end == NULL)
  175337             :              {
  175338           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  175339             :              }
  175340             :             else
  175341             :              {
  175342             : #if 0
  175343             :             // Debugging information
  175344             :                if (end->get_parent() == NULL)
  175345             :                   {
  175346             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175347             :                   }
  175348             : #endif
  175349           0 :                end->set_parent(locatedNode);
  175350           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  175351             :              }
  175352             : 
  175353           0 :           SgExpression* expression = isSgExpression(result);
  175354           0 :           if (isSgExpression(this) != NULL)
  175355             :              {
  175356           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  175357             : 
  175358             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  175359           0 :                if (operatorPosition != NULL)
  175360             :                   {
  175361             : #if 0
  175362             :                  // Debugging information
  175363             :                     if (operatorPosition->get_parent() == NULL)
  175364             :                        {
  175365             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175366             :                        }
  175367             : #endif
  175368           0 :                     operatorPosition->set_parent(expression);
  175369           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  175370             :                   }
  175371             :              }
  175372             :         }
  175373             : 
  175374             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  175375           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  175376           0 :      if (initializedName != NULL)
  175377             :         {
  175378             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  175379           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  175380           0 :           ROSE_ASSERT(start != NULL);
  175381             : #if 0
  175382             :        // Debugging information
  175383             :           if (start->get_parent() == NULL)
  175384             :              {
  175385             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175386             :              }
  175387             : #endif
  175388           0 :           start->set_parent(initializedName);
  175389           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  175390             : 
  175391             : #if 0
  175392             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  175393             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  175394             : 
  175395             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  175396             :        // ROSE_ASSERT(end != NULL);
  175397             :           if (end == NULL)
  175398             :              {
  175399             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  175400             :              }
  175401             :             else
  175402             :              {
  175403             :                if (end->get_parent() == NULL)
  175404             :                   {
  175405             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175406             :                   }
  175407             :                end->set_parent(initializedName);
  175408             :                ROSE_ASSERT(end->get_parent() != NULL);
  175409             :              }
  175410             : #endif
  175411             :         }
  175412             : 
  175413             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  175414           0 :      help.insertCopiedNodePair(this,result);
  175415             : 
  175416             :   // printf ("End of copy SgVoidVal = %p = %s \n",this,SageInterface::get_name(this).c_str());
  175417             : 
  175418             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  175419             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  175420           0 :      help.decrementDepth();
  175421             : 
  175422             :   // Test if this is the root of the copy!
  175423           0 :      if (help.get_depth() == 0)
  175424             :         {
  175425             :        // This is the original calling node.
  175426             : 
  175427             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  175428             :        // printf ("Calling SgVoidVal::fixupCopy() (from root of AST being copied) \n");
  175429             : #if ALT_FIXUP_COPY
  175430             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  175431           0 :           fixupCopy_scopes (result,help);
  175432           0 :           fixupCopy_symbols (result,help);
  175433           0 :           fixupCopy_references (result,help);
  175434             : #else
  175435             :           fixupCopy(result,help);
  175436             : #endif
  175437             :        // Allow this to be called recursively, so accumulate the state.
  175438             :        // Also, clear the state in the SgCopyHelp object.
  175439             :        // help.clearState();
  175440             :         }
  175441             : 
  175442           0 :      return result;
  175443             :    }
  175444             : 
  175445             : 
  175446             : /* #line 175447 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  175447             : 
  175448             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175449             : 
  175450           0 : SgNode* SgCallExpression::copy ( SgCopyHelp& help) const
  175451             :    {
  175452           0 :      SgCallExpression* result = NULL;
  175453             : 
  175454             :   // printf ("Copy SgCallExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  175455             : 
  175456             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  175457             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  175458             :   // The default value of the depth is 0, so after this call the depth is 1!
  175459           0 :      help.incrementDepth();
  175460             : 
  175461             : #if 0
  175462             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  175463             :   // but it is not generally true that things can only be copied once!
  175464             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  175465             :   // AstAttribute* existingAttribute = const_cast<SgCallExpression*>(this)->attribute["copied"];
  175466             :      bool previouslyCopied = const_cast<SgCallExpression*>(this)->attribute.exists("copied");
  175467             :      if (previouslyCopied == true)
  175468             :         {
  175469             :           this->get_file_info()->display("Called from copy SgCallExpression: debug");
  175470             :         }
  175471             :      ROSE_ASSERT(previouslyCopied == false);
  175472             : 
  175473             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  175474             :      AstAttribute* newAttribute = new AstAttribute();
  175475             :      ROSE_ASSERT(newAttribute != NULL);
  175476             : 
  175477             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  175478             :      const_cast<SgCallExpression*>(this)->attribute.add("copied",newAttribute);
  175479             : #endif
  175480             : 
  175481             :   // Copy data members from base classes
  175482             :   // Copy constructor parameter data member: startOfConstruct_copy
  175483             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  175484             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  175485           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  175486           0 :      if ( p_startOfConstruct != NULL ) 
  175487             :         { 
  175488           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  175489             :         } 
  175490             :        else 
  175491             :         { 
  175492             :           startOfConstruct_copy = NULL; 
  175493             :         } 
  175494             :   // Copy constructor parameter data member: function_copy
  175495           0 :      SgExpression* function_copy; 
  175496             :   // case: not a listType for (using conditionalToCopyVariable)function
  175497           0 :           if (get_function() != NULL) 
  175498             :              { 
  175499           0 :                function_copy = static_cast<SgExpression*>(help.copyAst(get_function())); 
  175500             :              } 
  175501             :             else 
  175502             :              { 
  175503             :                function_copy = NULL; 
  175504             :              } 
  175505             :   // Copy constructor parameter data member: args_copy
  175506           0 :      SgExprListExp* args_copy; 
  175507             :   // case: not a listType for (using conditionalToCopyVariable)args
  175508           0 :           if (get_args() != NULL) 
  175509             :              { 
  175510           0 :                args_copy = static_cast<SgExprListExp*>(help.copyAst(get_args())); 
  175511             :              } 
  175512             :             else 
  175513             :              { 
  175514             :                args_copy = NULL; 
  175515             :              } 
  175516             :   // Copy constructor parameter data member: expression_type_copy
  175517             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  175518             :   // case: toBeCopied == COPY_DATA for expression_type
  175519           0 :      SgType* expression_type_copy = p_expression_type; 
  175520             :  
  175521             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175522             : 
  175523             :   // Build an empty copy of this object (will be filled in, but 
  175524             :   // the parent can't be set and must be set by the caller)
  175525           0 :      result = new SgCallExpression(  startOfConstruct_copy, function_copy, args_copy, expression_type_copy );
  175526           0 :      ROSE_ASSERT(result != NULL);
  175527             : 
  175528             :   // Copy data members of "this" class
  175529             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  175530             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  175531             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  175532           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  175533           0 :      if ( p_endOfConstruct != NULL ) 
  175534             :         { 
  175535           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  175536             :         } 
  175537             :        else 
  175538             :         { 
  175539             :           endOfConstruct_copy = NULL; 
  175540             :         } 
  175541             :   /* check for a valid pointer and delete if present */ 
  175542           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  175543             :   /* add assignment to result here */ 
  175544           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  175545             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  175546             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  175547             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  175548           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  175549           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  175550             :         { 
  175551           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  175552             :         } 
  175553             :        else 
  175554             :         { 
  175555             :           attachedPreprocessingInfoPtr_copy = NULL; 
  175556             :         } 
  175557             :   /* check for a valid pointer and delete if present */ 
  175558           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  175559             :   /* add assignment to result here */ 
  175560           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  175561             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  175562             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  175563             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  175564           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  175565           0 :      if ( p_attributeMechanism != NULL ) 
  175566             :         { 
  175567           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  175568             :         } 
  175569             :        else 
  175570             :         { 
  175571             :           attributeMechanism_copy = NULL; 
  175572             :         } 
  175573             :   /* check for a valid pointer and delete if present */ 
  175574           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  175575             :   /* add assignment to result here */ 
  175576           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  175577             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  175578             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  175579             :   // case: toBeCopied == COPY_DATA for need_paren
  175580           0 :      bool need_paren_copy = p_need_paren; 
  175581           0 :      result->p_need_paren = need_paren_copy; 
  175582             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  175583             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  175584             :   // case: toBeCopied == COPY_DATA for lvalue
  175585           0 :      bool lvalue_copy = p_lvalue; 
  175586           0 :      result->p_lvalue = lvalue_copy; 
  175587             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  175588             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  175589             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  175590           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  175591           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  175592             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  175593             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  175594             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  175595           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  175596           0 :      if ( p_operatorPosition != NULL ) 
  175597             :         { 
  175598           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  175599             :         } 
  175600             :        else 
  175601             :         { 
  175602             :           operatorPosition_copy = NULL; 
  175603             :         } 
  175604             :   /* check for a valid pointer and delete if present */ 
  175605           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  175606             :   /* add assignment to result here */ 
  175607           0 :      result->p_operatorPosition = operatorPosition_copy; 
  175608             :   // case: not a listType for (using conditionalToSetParent)function
  175609           0 :           if ( (function_copy != NULL) && (function_copy->get_parent() == NULL) && (isSgType(function_copy) == NULL) ) 
  175610             :              { 
  175611           0 :                function_copy->set_parent(result); 
  175612             :              } 
  175613             :   // case: not a listType for (using conditionalToSetParent)args
  175614           0 :           if ( (args_copy != NULL) && (args_copy->get_parent() == NULL) && (isSgType(args_copy) == NULL) ) 
  175615             :              { 
  175616           0 :                args_copy->set_parent(result); 
  175617             :              } 
  175618             : 
  175619             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175620             : 
  175621             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  175622             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  175623             :   // fixupCopy(result,help);
  175624             : 
  175625             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  175626             :   // the Sg_File_Info objects that are built for the new IR nodes.
  175627           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  175628           0 :      if (locatedNode != NULL)
  175629             :         {
  175630             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  175631           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  175632           0 :           ROSE_ASSERT(start != NULL);
  175633             : #if 0
  175634             :        // Debugging information
  175635             :           if (start->get_parent() == NULL)
  175636             :              {
  175637             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175638             :              }
  175639             : #endif
  175640           0 :           start->set_parent(locatedNode);
  175641           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  175642             : 
  175643           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  175644             : 
  175645             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  175646             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  175647             :        // ROSE_ASSERT(end != NULL);
  175648           0 :           if (end == NULL)
  175649             :              {
  175650           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  175651             :              }
  175652             :             else
  175653             :              {
  175654             : #if 0
  175655             :             // Debugging information
  175656             :                if (end->get_parent() == NULL)
  175657             :                   {
  175658             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175659             :                   }
  175660             : #endif
  175661           0 :                end->set_parent(locatedNode);
  175662           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  175663             :              }
  175664             : 
  175665           0 :           SgExpression* expression = isSgExpression(result);
  175666           0 :           if (isSgExpression(this) != NULL)
  175667             :              {
  175668           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  175669             : 
  175670             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  175671           0 :                if (operatorPosition != NULL)
  175672             :                   {
  175673             : #if 0
  175674             :                  // Debugging information
  175675             :                     if (operatorPosition->get_parent() == NULL)
  175676             :                        {
  175677             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175678             :                        }
  175679             : #endif
  175680           0 :                     operatorPosition->set_parent(expression);
  175681           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  175682             :                   }
  175683             :              }
  175684             :         }
  175685             : 
  175686             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  175687           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  175688           0 :      if (initializedName != NULL)
  175689             :         {
  175690             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  175691           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  175692           0 :           ROSE_ASSERT(start != NULL);
  175693             : #if 0
  175694             :        // Debugging information
  175695             :           if (start->get_parent() == NULL)
  175696             :              {
  175697             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175698             :              }
  175699             : #endif
  175700           0 :           start->set_parent(initializedName);
  175701           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  175702             : 
  175703             : #if 0
  175704             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  175705             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  175706             : 
  175707             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  175708             :        // ROSE_ASSERT(end != NULL);
  175709             :           if (end == NULL)
  175710             :              {
  175711             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  175712             :              }
  175713             :             else
  175714             :              {
  175715             :                if (end->get_parent() == NULL)
  175716             :                   {
  175717             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175718             :                   }
  175719             :                end->set_parent(initializedName);
  175720             :                ROSE_ASSERT(end->get_parent() != NULL);
  175721             :              }
  175722             : #endif
  175723             :         }
  175724             : 
  175725             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  175726           0 :      help.insertCopiedNodePair(this,result);
  175727             : 
  175728             :   // printf ("End of copy SgCallExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  175729             : 
  175730             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  175731             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  175732           0 :      help.decrementDepth();
  175733             : 
  175734             :   // Test if this is the root of the copy!
  175735           0 :      if (help.get_depth() == 0)
  175736             :         {
  175737             :        // This is the original calling node.
  175738             : 
  175739             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  175740             :        // printf ("Calling SgCallExpression::fixupCopy() (from root of AST being copied) \n");
  175741             : #if ALT_FIXUP_COPY
  175742             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  175743           0 :           fixupCopy_scopes (result,help);
  175744           0 :           fixupCopy_symbols (result,help);
  175745           0 :           fixupCopy_references (result,help);
  175746             : #else
  175747             :           fixupCopy(result,help);
  175748             : #endif
  175749             :        // Allow this to be called recursively, so accumulate the state.
  175750             :        // Also, clear the state in the SgCopyHelp object.
  175751             :        // help.clearState();
  175752             :         }
  175753             : 
  175754           0 :      return result;
  175755             :    }
  175756             : 
  175757             : 
  175758             : /* #line 175759 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  175759             : 
  175760             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175761             : 
  175762         783 : SgNode* SgFunctionCallExp::copy ( SgCopyHelp& help) const
  175763             :    {
  175764         783 :      SgFunctionCallExp* result = NULL;
  175765             : 
  175766             :   // printf ("Copy SgFunctionCallExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  175767             : 
  175768             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  175769             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  175770             :   // The default value of the depth is 0, so after this call the depth is 1!
  175771         783 :      help.incrementDepth();
  175772             : 
  175773             : #if 0
  175774             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  175775             :   // but it is not generally true that things can only be copied once!
  175776             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  175777             :   // AstAttribute* existingAttribute = const_cast<SgFunctionCallExp*>(this)->attribute["copied"];
  175778             :      bool previouslyCopied = const_cast<SgFunctionCallExp*>(this)->attribute.exists("copied");
  175779             :      if (previouslyCopied == true)
  175780             :         {
  175781             :           this->get_file_info()->display("Called from copy SgFunctionCallExp: debug");
  175782             :         }
  175783             :      ROSE_ASSERT(previouslyCopied == false);
  175784             : 
  175785             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  175786             :      AstAttribute* newAttribute = new AstAttribute();
  175787             :      ROSE_ASSERT(newAttribute != NULL);
  175788             : 
  175789             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  175790             :      const_cast<SgFunctionCallExp*>(this)->attribute.add("copied",newAttribute);
  175791             : #endif
  175792             : 
  175793             :   // Copy data members from base classes
  175794             :   // Copy constructor parameter data member: startOfConstruct_copy
  175795             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  175796             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  175797         783 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  175798         783 :      if ( p_startOfConstruct != NULL ) 
  175799             :         { 
  175800         783 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  175801             :         } 
  175802             :        else 
  175803             :         { 
  175804             :           startOfConstruct_copy = NULL; 
  175805             :         } 
  175806             :   // Copy constructor parameter data member: function_copy
  175807         783 :      SgExpression* function_copy; 
  175808             :   // case: not a listType for (using conditionalToCopyVariable)function
  175809         783 :           if (get_function() != NULL) 
  175810             :              { 
  175811         783 :                function_copy = static_cast<SgExpression*>(help.copyAst(get_function())); 
  175812             :              } 
  175813             :             else 
  175814             :              { 
  175815             :                function_copy = NULL; 
  175816             :              } 
  175817             :   // Copy constructor parameter data member: args_copy
  175818         783 :      SgExprListExp* args_copy; 
  175819             :   // case: not a listType for (using conditionalToCopyVariable)args
  175820         783 :           if (get_args() != NULL) 
  175821             :              { 
  175822         783 :                args_copy = static_cast<SgExprListExp*>(help.copyAst(get_args())); 
  175823             :              } 
  175824             :             else 
  175825             :              { 
  175826             :                args_copy = NULL; 
  175827             :              } 
  175828             :   // Copy constructor parameter data member: expression_type_copy
  175829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  175830             :   // case: toBeCopied == COPY_DATA for expression_type
  175831         783 :      SgType* expression_type_copy = p_expression_type; 
  175832             :  
  175833             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175834             : 
  175835             :   // Build an empty copy of this object (will be filled in, but 
  175836             :   // the parent can't be set and must be set by the caller)
  175837         783 :      result = new SgFunctionCallExp(  startOfConstruct_copy, function_copy, args_copy, expression_type_copy );
  175838         783 :      ROSE_ASSERT(result != NULL);
  175839             : 
  175840             :   // Copy data members of "this" class
  175841             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  175842             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  175843             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  175844         783 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  175845         783 :      if ( p_endOfConstruct != NULL ) 
  175846             :         { 
  175847         783 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  175848             :         } 
  175849             :        else 
  175850             :         { 
  175851             :           endOfConstruct_copy = NULL; 
  175852             :         } 
  175853             :   /* check for a valid pointer and delete if present */ 
  175854         783 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  175855             :   /* add assignment to result here */ 
  175856         783 :      result->p_endOfConstruct = endOfConstruct_copy; 
  175857             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  175858             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  175859             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  175860         783 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  175861         783 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  175862             :         { 
  175863           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  175864             :         } 
  175865             :        else 
  175866             :         { 
  175867             :           attachedPreprocessingInfoPtr_copy = NULL; 
  175868             :         } 
  175869             :   /* check for a valid pointer and delete if present */ 
  175870         783 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  175871             :   /* add assignment to result here */ 
  175872         783 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  175873             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  175874             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  175875             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  175876         783 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  175877         783 :      if ( p_attributeMechanism != NULL ) 
  175878             :         { 
  175879           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  175880             :         } 
  175881             :        else 
  175882             :         { 
  175883             :           attributeMechanism_copy = NULL; 
  175884             :         } 
  175885             :   /* check for a valid pointer and delete if present */ 
  175886         783 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  175887             :   /* add assignment to result here */ 
  175888         783 :      result->p_attributeMechanism = attributeMechanism_copy; 
  175889             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  175890             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  175891             :   // case: toBeCopied == COPY_DATA for need_paren
  175892         783 :      bool need_paren_copy = p_need_paren; 
  175893         783 :      result->p_need_paren = need_paren_copy; 
  175894             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  175895             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  175896             :   // case: toBeCopied == COPY_DATA for lvalue
  175897         783 :      bool lvalue_copy = p_lvalue; 
  175898         783 :      result->p_lvalue = lvalue_copy; 
  175899             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  175900             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  175901             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  175902         783 :      bool global_qualified_name_copy = p_global_qualified_name; 
  175903         783 :      result->p_global_qualified_name = global_qualified_name_copy; 
  175904             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  175905             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  175906             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  175907         783 :      Sg_File_Info* operatorPosition_copy = NULL; 
  175908         783 :      if ( p_operatorPosition != NULL ) 
  175909             :         { 
  175910         783 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  175911             :         } 
  175912             :        else 
  175913             :         { 
  175914             :           operatorPosition_copy = NULL; 
  175915             :         } 
  175916             :   /* check for a valid pointer and delete if present */ 
  175917         783 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  175918             :   /* add assignment to result here */ 
  175919         783 :      result->p_operatorPosition = operatorPosition_copy; 
  175920             :   // Copy non-constructor parameter data member (access function): uses_operator_syntax_copy
  175921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for uses_operator_syntax
  175922             :   // case: toBeCopied == COPY_DATA for uses_operator_syntax
  175923         783 :      bool uses_operator_syntax_copy = p_uses_operator_syntax; 
  175924         783 :      result->p_uses_operator_syntax = uses_operator_syntax_copy; 
  175925             :   // case: not a listType for (using conditionalToSetParent)function
  175926         783 :           if ( (function_copy != NULL) && (function_copy->get_parent() == NULL) && (isSgType(function_copy) == NULL) ) 
  175927             :              { 
  175928           0 :                function_copy->set_parent(result); 
  175929             :              } 
  175930             :   // case: not a listType for (using conditionalToSetParent)args
  175931         783 :           if ( (args_copy != NULL) && (args_copy->get_parent() == NULL) && (isSgType(args_copy) == NULL) ) 
  175932             :              { 
  175933         783 :                args_copy->set_parent(result); 
  175934             :              } 
  175935             : 
  175936             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  175937             : 
  175938             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  175939             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  175940             :   // fixupCopy(result,help);
  175941             : 
  175942             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  175943             :   // the Sg_File_Info objects that are built for the new IR nodes.
  175944         783 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  175945         783 :      if (locatedNode != NULL)
  175946             :         {
  175947             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  175948         783 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  175949         783 :           ROSE_ASSERT(start != NULL);
  175950             : #if 0
  175951             :        // Debugging information
  175952             :           if (start->get_parent() == NULL)
  175953             :              {
  175954             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175955             :              }
  175956             : #endif
  175957         783 :           start->set_parent(locatedNode);
  175958         783 :           ROSE_ASSERT(start->get_parent() != NULL);
  175959             : 
  175960         783 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  175961             : 
  175962             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  175963             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  175964             :        // ROSE_ASSERT(end != NULL);
  175965         783 :           if (end == NULL)
  175966             :              {
  175967           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  175968             :              }
  175969             :             else
  175970             :              {
  175971             : #if 0
  175972             :             // Debugging information
  175973             :                if (end->get_parent() == NULL)
  175974             :                   {
  175975             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175976             :                   }
  175977             : #endif
  175978         783 :                end->set_parent(locatedNode);
  175979         783 :                ROSE_ASSERT(end->get_parent() != NULL);
  175980             :              }
  175981             : 
  175982         783 :           SgExpression* expression = isSgExpression(result);
  175983         783 :           if (isSgExpression(this) != NULL)
  175984             :              {
  175985         783 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  175986             : 
  175987             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  175988         783 :                if (operatorPosition != NULL)
  175989             :                   {
  175990             : #if 0
  175991             :                  // Debugging information
  175992             :                     if (operatorPosition->get_parent() == NULL)
  175993             :                        {
  175994             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  175995             :                        }
  175996             : #endif
  175997         783 :                     operatorPosition->set_parent(expression);
  175998         783 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  175999             :                   }
  176000             :              }
  176001             :         }
  176002             : 
  176003             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  176004         783 :      SgInitializedName* initializedName = isSgInitializedName(result);
  176005         783 :      if (initializedName != NULL)
  176006             :         {
  176007             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  176008           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  176009           0 :           ROSE_ASSERT(start != NULL);
  176010             : #if 0
  176011             :        // Debugging information
  176012             :           if (start->get_parent() == NULL)
  176013             :              {
  176014             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176015             :              }
  176016             : #endif
  176017           0 :           start->set_parent(initializedName);
  176018           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  176019             : 
  176020             : #if 0
  176021             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  176022             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  176023             : 
  176024             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  176025             :        // ROSE_ASSERT(end != NULL);
  176026             :           if (end == NULL)
  176027             :              {
  176028             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  176029             :              }
  176030             :             else
  176031             :              {
  176032             :                if (end->get_parent() == NULL)
  176033             :                   {
  176034             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176035             :                   }
  176036             :                end->set_parent(initializedName);
  176037             :                ROSE_ASSERT(end->get_parent() != NULL);
  176038             :              }
  176039             : #endif
  176040             :         }
  176041             : 
  176042             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  176043         783 :      help.insertCopiedNodePair(this,result);
  176044             : 
  176045             :   // printf ("End of copy SgFunctionCallExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  176046             : 
  176047             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  176048             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  176049         783 :      help.decrementDepth();
  176050             : 
  176051             :   // Test if this is the root of the copy!
  176052         783 :      if (help.get_depth() == 0)
  176053             :         {
  176054             :        // This is the original calling node.
  176055             : 
  176056             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  176057             :        // printf ("Calling SgFunctionCallExp::fixupCopy() (from root of AST being copied) \n");
  176058             : #if ALT_FIXUP_COPY
  176059             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  176060          59 :           fixupCopy_scopes (result,help);
  176061          59 :           fixupCopy_symbols (result,help);
  176062          59 :           fixupCopy_references (result,help);
  176063             : #else
  176064             :           fixupCopy(result,help);
  176065             : #endif
  176066             :        // Allow this to be called recursively, so accumulate the state.
  176067             :        // Also, clear the state in the SgCopyHelp object.
  176068             :        // help.clearState();
  176069             :         }
  176070             : 
  176071         783 :      return result;
  176072             :    }
  176073             : 
  176074             : 
  176075             : /* #line 176076 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  176076             : 
  176077             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  176078             : 
  176079           0 : SgNode* SgCudaKernelCallExp::copy ( SgCopyHelp& help) const
  176080             :    {
  176081           0 :      SgCudaKernelCallExp* result = NULL;
  176082             : 
  176083             :   // printf ("Copy SgCudaKernelCallExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  176084             : 
  176085             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  176086             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  176087             :   // The default value of the depth is 0, so after this call the depth is 1!
  176088           0 :      help.incrementDepth();
  176089             : 
  176090             : #if 0
  176091             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  176092             :   // but it is not generally true that things can only be copied once!
  176093             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  176094             :   // AstAttribute* existingAttribute = const_cast<SgCudaKernelCallExp*>(this)->attribute["copied"];
  176095             :      bool previouslyCopied = const_cast<SgCudaKernelCallExp*>(this)->attribute.exists("copied");
  176096             :      if (previouslyCopied == true)
  176097             :         {
  176098             :           this->get_file_info()->display("Called from copy SgCudaKernelCallExp: debug");
  176099             :         }
  176100             :      ROSE_ASSERT(previouslyCopied == false);
  176101             : 
  176102             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  176103             :      AstAttribute* newAttribute = new AstAttribute();
  176104             :      ROSE_ASSERT(newAttribute != NULL);
  176105             : 
  176106             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  176107             :      const_cast<SgCudaKernelCallExp*>(this)->attribute.add("copied",newAttribute);
  176108             : #endif
  176109             : 
  176110             :   // Copy data members from base classes
  176111             :   // Copy constructor parameter data member: startOfConstruct_copy
  176112             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  176113             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  176114           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  176115           0 :      if ( p_startOfConstruct != NULL ) 
  176116             :         { 
  176117           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  176118             :         } 
  176119             :        else 
  176120             :         { 
  176121             :           startOfConstruct_copy = NULL; 
  176122             :         } 
  176123             :   // Copy constructor parameter data member: function_copy
  176124           0 :      SgExpression* function_copy; 
  176125             :   // case: not a listType for (using conditionalToCopyVariable)function
  176126           0 :           if (get_function() != NULL) 
  176127             :              { 
  176128           0 :                function_copy = static_cast<SgExpression*>(help.copyAst(get_function())); 
  176129             :              } 
  176130             :             else 
  176131             :              { 
  176132             :                function_copy = NULL; 
  176133             :              } 
  176134             :   // Copy constructor parameter data member: args_copy
  176135           0 :      SgExprListExp* args_copy; 
  176136             :   // case: not a listType for (using conditionalToCopyVariable)args
  176137           0 :           if (get_args() != NULL) 
  176138             :              { 
  176139           0 :                args_copy = static_cast<SgExprListExp*>(help.copyAst(get_args())); 
  176140             :              } 
  176141             :             else 
  176142             :              { 
  176143             :                args_copy = NULL; 
  176144             :              } 
  176145             :   // Copy constructor parameter data member: expression_type_copy
  176146             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  176147             :   // case: toBeCopied == COPY_DATA for expression_type
  176148           0 :      SgType* expression_type_copy = p_expression_type; 
  176149             :   // Copy constructor parameter data member: exec_config_copy
  176150           0 :      SgCudaKernelExecConfig* exec_config_copy; 
  176151             :   // case: not a listType for (using conditionalToCopyVariable)exec_config
  176152           0 :           if (get_exec_config() != NULL) 
  176153             :              { 
  176154           0 :                exec_config_copy = static_cast<SgCudaKernelExecConfig*>(help.copyAst(get_exec_config())); 
  176155             :              } 
  176156             :             else 
  176157             :              { 
  176158             :                exec_config_copy = NULL; 
  176159             :              } 
  176160             :  
  176161             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  176162             : 
  176163             :   // Build an empty copy of this object (will be filled in, but 
  176164             :   // the parent can't be set and must be set by the caller)
  176165           0 :      result = new SgCudaKernelCallExp(  startOfConstruct_copy, function_copy, args_copy, expression_type_copy, exec_config_copy );
  176166           0 :      ROSE_ASSERT(result != NULL);
  176167             : 
  176168             :   // Copy data members of "this" class
  176169             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  176170             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  176171             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  176172           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  176173           0 :      if ( p_endOfConstruct != NULL ) 
  176174             :         { 
  176175           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  176176             :         } 
  176177             :        else 
  176178             :         { 
  176179             :           endOfConstruct_copy = NULL; 
  176180             :         } 
  176181             :   /* check for a valid pointer and delete if present */ 
  176182           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  176183             :   /* add assignment to result here */ 
  176184           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  176185             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  176186             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  176187             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  176188           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  176189           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  176190             :         { 
  176191           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  176192             :         } 
  176193             :        else 
  176194             :         { 
  176195             :           attachedPreprocessingInfoPtr_copy = NULL; 
  176196             :         } 
  176197             :   /* check for a valid pointer and delete if present */ 
  176198           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  176199             :   /* add assignment to result here */ 
  176200           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  176201             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  176202             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  176203             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  176204           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  176205           0 :      if ( p_attributeMechanism != NULL ) 
  176206             :         { 
  176207           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  176208             :         } 
  176209             :        else 
  176210             :         { 
  176211             :           attributeMechanism_copy = NULL; 
  176212             :         } 
  176213             :   /* check for a valid pointer and delete if present */ 
  176214           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  176215             :   /* add assignment to result here */ 
  176216           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  176217             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  176218             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  176219             :   // case: toBeCopied == COPY_DATA for need_paren
  176220           0 :      bool need_paren_copy = p_need_paren; 
  176221           0 :      result->p_need_paren = need_paren_copy; 
  176222             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  176223             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  176224             :   // case: toBeCopied == COPY_DATA for lvalue
  176225           0 :      bool lvalue_copy = p_lvalue; 
  176226           0 :      result->p_lvalue = lvalue_copy; 
  176227             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  176228             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  176229             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  176230           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  176231           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  176232             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  176233             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  176234             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  176235           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  176236           0 :      if ( p_operatorPosition != NULL ) 
  176237             :         { 
  176238           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  176239             :         } 
  176240             :        else 
  176241             :         { 
  176242             :           operatorPosition_copy = NULL; 
  176243             :         } 
  176244             :   /* check for a valid pointer and delete if present */ 
  176245           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  176246             :   /* add assignment to result here */ 
  176247           0 :      result->p_operatorPosition = operatorPosition_copy; 
  176248             :   // Copy non-constructor parameter data member (access function): uses_operator_syntax_copy
  176249             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for uses_operator_syntax
  176250             :   // case: toBeCopied == COPY_DATA for uses_operator_syntax
  176251           0 :      bool uses_operator_syntax_copy = p_uses_operator_syntax; 
  176252           0 :      result->p_uses_operator_syntax = uses_operator_syntax_copy; 
  176253             :   // case: not a listType for (using conditionalToSetParent)exec_config
  176254           0 :           if ( (exec_config_copy != NULL) && (exec_config_copy->get_parent() == NULL) && (isSgType(exec_config_copy) == NULL) ) 
  176255             :              { 
  176256           0 :                exec_config_copy->set_parent(result); 
  176257             :              } 
  176258             :   // case: not a listType for (using conditionalToSetParent)function
  176259           0 :           if ( (function_copy != NULL) && (function_copy->get_parent() == NULL) && (isSgType(function_copy) == NULL) ) 
  176260             :              { 
  176261           0 :                function_copy->set_parent(result); 
  176262             :              } 
  176263             :   // case: not a listType for (using conditionalToSetParent)args
  176264           0 :           if ( (args_copy != NULL) && (args_copy->get_parent() == NULL) && (isSgType(args_copy) == NULL) ) 
  176265             :              { 
  176266           0 :                args_copy->set_parent(result); 
  176267             :              } 
  176268             : 
  176269             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  176270             : 
  176271             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  176272             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  176273             :   // fixupCopy(result,help);
  176274             : 
  176275             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  176276             :   // the Sg_File_Info objects that are built for the new IR nodes.
  176277           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  176278           0 :      if (locatedNode != NULL)
  176279             :         {
  176280             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  176281           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  176282           0 :           ROSE_ASSERT(start != NULL);
  176283             : #if 0
  176284             :        // Debugging information
  176285             :           if (start->get_parent() == NULL)
  176286             :              {
  176287             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176288             :              }
  176289             : #endif
  176290           0 :           start->set_parent(locatedNode);
  176291           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  176292             : 
  176293           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  176294             : 
  176295             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  176296             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  176297             :        // ROSE_ASSERT(end != NULL);
  176298           0 :           if (end == NULL)
  176299             :              {
  176300           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  176301             :              }
  176302             :             else
  176303             :              {
  176304             : #if 0
  176305             :             // Debugging information
  176306             :                if (end->get_parent() == NULL)
  176307             :                   {
  176308             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176309             :                   }
  176310             : #endif
  176311           0 :                end->set_parent(locatedNode);
  176312           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  176313             :              }
  176314             : 
  176315           0 :           SgExpression* expression = isSgExpression(result);
  176316           0 :           if (isSgExpression(this) != NULL)
  176317             :              {
  176318           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  176319             : 
  176320             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  176321           0 :                if (operatorPosition != NULL)
  176322             :                   {
  176323             : #if 0
  176324             :                  // Debugging information
  176325             :                     if (operatorPosition->get_parent() == NULL)
  176326             :                        {
  176327             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176328             :                        }
  176329             : #endif
  176330           0 :                     operatorPosition->set_parent(expression);
  176331           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  176332             :                   }
  176333             :              }
  176334             :         }
  176335             : 
  176336             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  176337           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  176338           0 :      if (initializedName != NULL)
  176339             :         {
  176340             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  176341           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  176342           0 :           ROSE_ASSERT(start != NULL);
  176343             : #if 0
  176344             :        // Debugging information
  176345             :           if (start->get_parent() == NULL)
  176346             :              {
  176347             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176348             :              }
  176349             : #endif
  176350           0 :           start->set_parent(initializedName);
  176351           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  176352             : 
  176353             : #if 0
  176354             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  176355             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  176356             : 
  176357             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  176358             :        // ROSE_ASSERT(end != NULL);
  176359             :           if (end == NULL)
  176360             :              {
  176361             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  176362             :              }
  176363             :             else
  176364             :              {
  176365             :                if (end->get_parent() == NULL)
  176366             :                   {
  176367             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176368             :                   }
  176369             :                end->set_parent(initializedName);
  176370             :                ROSE_ASSERT(end->get_parent() != NULL);
  176371             :              }
  176372             : #endif
  176373             :         }
  176374             : 
  176375             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  176376           0 :      help.insertCopiedNodePair(this,result);
  176377             : 
  176378             :   // printf ("End of copy SgCudaKernelCallExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  176379             : 
  176380             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  176381             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  176382           0 :      help.decrementDepth();
  176383             : 
  176384             :   // Test if this is the root of the copy!
  176385           0 :      if (help.get_depth() == 0)
  176386             :         {
  176387             :        // This is the original calling node.
  176388             : 
  176389             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  176390             :        // printf ("Calling SgCudaKernelCallExp::fixupCopy() (from root of AST being copied) \n");
  176391             : #if ALT_FIXUP_COPY
  176392             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  176393           0 :           fixupCopy_scopes (result,help);
  176394           0 :           fixupCopy_symbols (result,help);
  176395           0 :           fixupCopy_references (result,help);
  176396             : #else
  176397             :           fixupCopy(result,help);
  176398             : #endif
  176399             :        // Allow this to be called recursively, so accumulate the state.
  176400             :        // Also, clear the state in the SgCopyHelp object.
  176401             :        // help.clearState();
  176402             :         }
  176403             : 
  176404           0 :      return result;
  176405             :    }
  176406             : 
  176407             : 
  176408             : /* #line 176409 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  176409             : 
  176410             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  176411             : 
  176412          34 : SgNode* SgSizeOfOp::copy ( SgCopyHelp& help) const
  176413             :    {
  176414          34 :      SgSizeOfOp* result = NULL;
  176415             : 
  176416             :   // printf ("Copy SgSizeOfOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  176417             : 
  176418             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  176419             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  176420             :   // The default value of the depth is 0, so after this call the depth is 1!
  176421          34 :      help.incrementDepth();
  176422             : 
  176423             : #if 0
  176424             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  176425             :   // but it is not generally true that things can only be copied once!
  176426             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  176427             :   // AstAttribute* existingAttribute = const_cast<SgSizeOfOp*>(this)->attribute["copied"];
  176428             :      bool previouslyCopied = const_cast<SgSizeOfOp*>(this)->attribute.exists("copied");
  176429             :      if (previouslyCopied == true)
  176430             :         {
  176431             :           this->get_file_info()->display("Called from copy SgSizeOfOp: debug");
  176432             :         }
  176433             :      ROSE_ASSERT(previouslyCopied == false);
  176434             : 
  176435             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  176436             :      AstAttribute* newAttribute = new AstAttribute();
  176437             :      ROSE_ASSERT(newAttribute != NULL);
  176438             : 
  176439             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  176440             :      const_cast<SgSizeOfOp*>(this)->attribute.add("copied",newAttribute);
  176441             : #endif
  176442             : 
  176443             :   // Copy data members from base classes
  176444             :   // Copy constructor parameter data member: startOfConstruct_copy
  176445             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  176446             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  176447          34 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  176448          34 :      if ( p_startOfConstruct != NULL ) 
  176449             :         { 
  176450          34 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  176451             :         } 
  176452             :        else 
  176453             :         { 
  176454             :           startOfConstruct_copy = NULL; 
  176455             :         } 
  176456             :   // Copy constructor parameter data member: operand_expr_copy
  176457          34 :      SgExpression* operand_expr_copy; 
  176458             :   // case: not a listType for (using conditionalToCopyVariable)operand_expr
  176459          34 :           if (get_operand_expr() != NULL) 
  176460             :              { 
  176461           0 :                operand_expr_copy = static_cast<SgExpression*>(help.copyAst(get_operand_expr())); 
  176462             :              } 
  176463             :             else 
  176464             :              { 
  176465             :                operand_expr_copy = NULL; 
  176466             :              } 
  176467             :   // Copy constructor parameter data member: operand_type_copy
  176468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operand_type
  176469             :   // case: toBeCopied == COPY_DATA for operand_type
  176470          34 :      SgType* operand_type_copy = p_operand_type; 
  176471             :   // Copy constructor parameter data member: expression_type_copy
  176472             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  176473             :   // case: toBeCopied == COPY_DATA for expression_type
  176474          34 :      SgType* expression_type_copy = p_expression_type; 
  176475             :  
  176476             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  176477             : 
  176478             :   // Build an empty copy of this object (will be filled in, but 
  176479             :   // the parent can't be set and must be set by the caller)
  176480          34 :      result = new SgSizeOfOp(  startOfConstruct_copy, operand_expr_copy, operand_type_copy, expression_type_copy );
  176481          34 :      ROSE_ASSERT(result != NULL);
  176482             : 
  176483             :   // Copy data members of "this" class
  176484             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  176485             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  176486             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  176487          34 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  176488          34 :      if ( p_endOfConstruct != NULL ) 
  176489             :         { 
  176490          34 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  176491             :         } 
  176492             :        else 
  176493             :         { 
  176494             :           endOfConstruct_copy = NULL; 
  176495             :         } 
  176496             :   /* check for a valid pointer and delete if present */ 
  176497          34 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  176498             :   /* add assignment to result here */ 
  176499          34 :      result->p_endOfConstruct = endOfConstruct_copy; 
  176500             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  176501             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  176502             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  176503          34 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  176504          34 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  176505             :         { 
  176506           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  176507             :         } 
  176508             :        else 
  176509             :         { 
  176510             :           attachedPreprocessingInfoPtr_copy = NULL; 
  176511             :         } 
  176512             :   /* check for a valid pointer and delete if present */ 
  176513          34 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  176514             :   /* add assignment to result here */ 
  176515          34 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  176516             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  176517             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  176518             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  176519          34 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  176520          34 :      if ( p_attributeMechanism != NULL ) 
  176521             :         { 
  176522           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  176523             :         } 
  176524             :        else 
  176525             :         { 
  176526             :           attributeMechanism_copy = NULL; 
  176527             :         } 
  176528             :   /* check for a valid pointer and delete if present */ 
  176529          34 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  176530             :   /* add assignment to result here */ 
  176531          34 :      result->p_attributeMechanism = attributeMechanism_copy; 
  176532             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  176533             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  176534             :   // case: toBeCopied == COPY_DATA for need_paren
  176535          34 :      bool need_paren_copy = p_need_paren; 
  176536          34 :      result->p_need_paren = need_paren_copy; 
  176537             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  176538             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  176539             :   // case: toBeCopied == COPY_DATA for lvalue
  176540          34 :      bool lvalue_copy = p_lvalue; 
  176541          34 :      result->p_lvalue = lvalue_copy; 
  176542             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  176543             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  176544             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  176545          34 :      bool global_qualified_name_copy = p_global_qualified_name; 
  176546          34 :      result->p_global_qualified_name = global_qualified_name_copy; 
  176547             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  176548             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  176549             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  176550          34 :      Sg_File_Info* operatorPosition_copy = NULL; 
  176551          34 :      if ( p_operatorPosition != NULL ) 
  176552             :         { 
  176553          34 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  176554             :         } 
  176555             :        else 
  176556             :         { 
  176557             :           operatorPosition_copy = NULL; 
  176558             :         } 
  176559             :   /* check for a valid pointer and delete if present */ 
  176560          34 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  176561             :   /* add assignment to result here */ 
  176562          34 :      result->p_operatorPosition = operatorPosition_copy; 
  176563             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  176564             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  176565             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  176566          34 :      int name_qualification_length_copy = p_name_qualification_length; 
  176567          34 :      result->p_name_qualification_length = name_qualification_length_copy; 
  176568             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  176569             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  176570             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  176571          34 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  176572          34 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  176573             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  176574             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  176575             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  176576          34 :      bool global_qualification_required_copy = p_global_qualification_required; 
  176577          34 :      result->p_global_qualification_required = global_qualification_required_copy; 
  176578             :   // Copy non-constructor parameter data member (access function): sizeOfContainsBaseTypeDefiningDeclaration_copy
  176579             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for sizeOfContainsBaseTypeDefiningDeclaration
  176580             :   // case: toBeCopied == COPY_DATA for sizeOfContainsBaseTypeDefiningDeclaration
  176581          34 :      bool sizeOfContainsBaseTypeDefiningDeclaration_copy = p_sizeOfContainsBaseTypeDefiningDeclaration; 
  176582          34 :      result->p_sizeOfContainsBaseTypeDefiningDeclaration = sizeOfContainsBaseTypeDefiningDeclaration_copy; 
  176583             :   // Copy non-constructor parameter data member (access function): is_objectless_nonstatic_data_member_reference_copy
  176584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_objectless_nonstatic_data_member_reference
  176585             :   // case: toBeCopied == COPY_DATA for is_objectless_nonstatic_data_member_reference
  176586          34 :      bool is_objectless_nonstatic_data_member_reference_copy = p_is_objectless_nonstatic_data_member_reference; 
  176587          34 :      result->p_is_objectless_nonstatic_data_member_reference = is_objectless_nonstatic_data_member_reference_copy; 
  176588             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_for_pointer_to_member_class_length
  176589             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_for_pointer_to_member_class_length
  176590             :   // case: toBeCopied == COPY_DATA for name_qualification_for_pointer_to_member_class_length
  176591          34 :      int name_qualification_for_pointer_to_member_class_length_copy = p_name_qualification_for_pointer_to_member_class_length; 
  176592          34 :      result->p_name_qualification_for_pointer_to_member_class_length = name_qualification_for_pointer_to_member_class_length_copy; 
  176593             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_for_pointer_to_member_class_required
  176594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_for_pointer_to_member_class_required
  176595             :   // case: toBeCopied == COPY_DATA for type_elaboration_for_pointer_to_member_class_required
  176596          34 :      bool type_elaboration_for_pointer_to_member_class_required_copy = p_type_elaboration_for_pointer_to_member_class_required; 
  176597          34 :      result->p_type_elaboration_for_pointer_to_member_class_required = type_elaboration_for_pointer_to_member_class_required_copy; 
  176598             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_for_pointer_to_member_class_required
  176599             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_for_pointer_to_member_class_required
  176600             :   // case: toBeCopied == COPY_DATA for global_qualification_for_pointer_to_member_class_required
  176601          34 :      bool global_qualification_for_pointer_to_member_class_required_copy = p_global_qualification_for_pointer_to_member_class_required; 
  176602          34 :      result->p_global_qualification_for_pointer_to_member_class_required = global_qualification_for_pointer_to_member_class_required_copy; 
  176603             :   // case: not a listType for (using conditionalToSetParent)operand_expr
  176604          34 :           if ( (operand_expr_copy != NULL) && (operand_expr_copy->get_parent() == NULL) && (isSgType(operand_expr_copy) == NULL) ) 
  176605             :              { 
  176606           0 :                operand_expr_copy->set_parent(result); 
  176607             :              } 
  176608             : 
  176609             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  176610             : 
  176611             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  176612             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  176613             :   // fixupCopy(result,help);
  176614             : 
  176615             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  176616             :   // the Sg_File_Info objects that are built for the new IR nodes.
  176617          34 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  176618          34 :      if (locatedNode != NULL)
  176619             :         {
  176620             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  176621          34 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  176622          34 :           ROSE_ASSERT(start != NULL);
  176623             : #if 0
  176624             :        // Debugging information
  176625             :           if (start->get_parent() == NULL)
  176626             :              {
  176627             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176628             :              }
  176629             : #endif
  176630          34 :           start->set_parent(locatedNode);
  176631          34 :           ROSE_ASSERT(start->get_parent() != NULL);
  176632             : 
  176633          34 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  176634             : 
  176635             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  176636             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  176637             :        // ROSE_ASSERT(end != NULL);
  176638          34 :           if (end == NULL)
  176639             :              {
  176640           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  176641             :              }
  176642             :             else
  176643             :              {
  176644             : #if 0
  176645             :             // Debugging information
  176646             :                if (end->get_parent() == NULL)
  176647             :                   {
  176648             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176649             :                   }
  176650             : #endif
  176651          34 :                end->set_parent(locatedNode);
  176652          34 :                ROSE_ASSERT(end->get_parent() != NULL);
  176653             :              }
  176654             : 
  176655          34 :           SgExpression* expression = isSgExpression(result);
  176656          34 :           if (isSgExpression(this) != NULL)
  176657             :              {
  176658          34 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  176659             : 
  176660             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  176661          34 :                if (operatorPosition != NULL)
  176662             :                   {
  176663             : #if 0
  176664             :                  // Debugging information
  176665             :                     if (operatorPosition->get_parent() == NULL)
  176666             :                        {
  176667             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176668             :                        }
  176669             : #endif
  176670          34 :                     operatorPosition->set_parent(expression);
  176671          34 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  176672             :                   }
  176673             :              }
  176674             :         }
  176675             : 
  176676             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  176677          34 :      SgInitializedName* initializedName = isSgInitializedName(result);
  176678          34 :      if (initializedName != NULL)
  176679             :         {
  176680             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  176681           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  176682           0 :           ROSE_ASSERT(start != NULL);
  176683             : #if 0
  176684             :        // Debugging information
  176685             :           if (start->get_parent() == NULL)
  176686             :              {
  176687             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176688             :              }
  176689             : #endif
  176690           0 :           start->set_parent(initializedName);
  176691           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  176692             : 
  176693             : #if 0
  176694             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  176695             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  176696             : 
  176697             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  176698             :        // ROSE_ASSERT(end != NULL);
  176699             :           if (end == NULL)
  176700             :              {
  176701             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  176702             :              }
  176703             :             else
  176704             :              {
  176705             :                if (end->get_parent() == NULL)
  176706             :                   {
  176707             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176708             :                   }
  176709             :                end->set_parent(initializedName);
  176710             :                ROSE_ASSERT(end->get_parent() != NULL);
  176711             :              }
  176712             : #endif
  176713             :         }
  176714             : 
  176715             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  176716          34 :      help.insertCopiedNodePair(this,result);
  176717             : 
  176718             :   // printf ("End of copy SgSizeOfOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  176719             : 
  176720             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  176721             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  176722          34 :      help.decrementDepth();
  176723             : 
  176724             :   // Test if this is the root of the copy!
  176725          34 :      if (help.get_depth() == 0)
  176726             :         {
  176727             :        // This is the original calling node.
  176728             : 
  176729             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  176730             :        // printf ("Calling SgSizeOfOp::fixupCopy() (from root of AST being copied) \n");
  176731             : #if ALT_FIXUP_COPY
  176732             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  176733           0 :           fixupCopy_scopes (result,help);
  176734           0 :           fixupCopy_symbols (result,help);
  176735           0 :           fixupCopy_references (result,help);
  176736             : #else
  176737             :           fixupCopy(result,help);
  176738             : #endif
  176739             :        // Allow this to be called recursively, so accumulate the state.
  176740             :        // Also, clear the state in the SgCopyHelp object.
  176741             :        // help.clearState();
  176742             :         }
  176743             : 
  176744          34 :      return result;
  176745             :    }
  176746             : 
  176747             : 
  176748             : /* #line 176749 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  176749             : 
  176750             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  176751             : 
  176752           0 : SgNode* SgUpcLocalsizeofExpression::copy ( SgCopyHelp& help) const
  176753             :    {
  176754           0 :      SgUpcLocalsizeofExpression* result = NULL;
  176755             : 
  176756             :   // printf ("Copy SgUpcLocalsizeofExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  176757             : 
  176758             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  176759             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  176760             :   // The default value of the depth is 0, so after this call the depth is 1!
  176761           0 :      help.incrementDepth();
  176762             : 
  176763             : #if 0
  176764             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  176765             :   // but it is not generally true that things can only be copied once!
  176766             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  176767             :   // AstAttribute* existingAttribute = const_cast<SgUpcLocalsizeofExpression*>(this)->attribute["copied"];
  176768             :      bool previouslyCopied = const_cast<SgUpcLocalsizeofExpression*>(this)->attribute.exists("copied");
  176769             :      if (previouslyCopied == true)
  176770             :         {
  176771             :           this->get_file_info()->display("Called from copy SgUpcLocalsizeofExpression: debug");
  176772             :         }
  176773             :      ROSE_ASSERT(previouslyCopied == false);
  176774             : 
  176775             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  176776             :      AstAttribute* newAttribute = new AstAttribute();
  176777             :      ROSE_ASSERT(newAttribute != NULL);
  176778             : 
  176779             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  176780             :      const_cast<SgUpcLocalsizeofExpression*>(this)->attribute.add("copied",newAttribute);
  176781             : #endif
  176782             : 
  176783             :   // Copy data members from base classes
  176784             :   // Copy constructor parameter data member: startOfConstruct_copy
  176785             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  176786             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  176787           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  176788           0 :      if ( p_startOfConstruct != NULL ) 
  176789             :         { 
  176790           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  176791             :         } 
  176792             :        else 
  176793             :         { 
  176794             :           startOfConstruct_copy = NULL; 
  176795             :         } 
  176796             :   // Copy constructor parameter data member: expression_copy
  176797           0 :      SgExpression* expression_copy; 
  176798             :   // case: not a listType for (using conditionalToCopyVariable)expression
  176799           0 :           if (get_expression() != NULL) 
  176800             :              { 
  176801           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
  176802             :              } 
  176803             :             else 
  176804             :              { 
  176805             :                expression_copy = NULL; 
  176806             :              } 
  176807             :   // Copy constructor parameter data member: operand_type_copy
  176808             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operand_type
  176809             :   // case: toBeCopied == COPY_DATA for operand_type
  176810           0 :      SgType* operand_type_copy = p_operand_type; 
  176811             :   // Copy constructor parameter data member: expression_type_copy
  176812             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  176813             :   // case: toBeCopied == COPY_DATA for expression_type
  176814           0 :      SgType* expression_type_copy = p_expression_type; 
  176815             :  
  176816             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  176817             : 
  176818             :   // Build an empty copy of this object (will be filled in, but 
  176819             :   // the parent can't be set and must be set by the caller)
  176820           0 :      result = new SgUpcLocalsizeofExpression(  startOfConstruct_copy, expression_copy, operand_type_copy, expression_type_copy );
  176821           0 :      ROSE_ASSERT(result != NULL);
  176822             : 
  176823             :   // Copy data members of "this" class
  176824             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  176825             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  176826             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  176827           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  176828           0 :      if ( p_endOfConstruct != NULL ) 
  176829             :         { 
  176830           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  176831             :         } 
  176832             :        else 
  176833             :         { 
  176834             :           endOfConstruct_copy = NULL; 
  176835             :         } 
  176836             :   /* check for a valid pointer and delete if present */ 
  176837           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  176838             :   /* add assignment to result here */ 
  176839           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  176840             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  176841             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  176842             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  176843           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  176844           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  176845             :         { 
  176846           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  176847             :         } 
  176848             :        else 
  176849             :         { 
  176850             :           attachedPreprocessingInfoPtr_copy = NULL; 
  176851             :         } 
  176852             :   /* check for a valid pointer and delete if present */ 
  176853           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  176854             :   /* add assignment to result here */ 
  176855           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  176856             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  176857             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  176858             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  176859           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  176860           0 :      if ( p_attributeMechanism != NULL ) 
  176861             :         { 
  176862           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  176863             :         } 
  176864             :        else 
  176865             :         { 
  176866             :           attributeMechanism_copy = NULL; 
  176867             :         } 
  176868             :   /* check for a valid pointer and delete if present */ 
  176869           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  176870             :   /* add assignment to result here */ 
  176871           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  176872             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  176873             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  176874             :   // case: toBeCopied == COPY_DATA for need_paren
  176875           0 :      bool need_paren_copy = p_need_paren; 
  176876           0 :      result->p_need_paren = need_paren_copy; 
  176877             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  176878             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  176879             :   // case: toBeCopied == COPY_DATA for lvalue
  176880           0 :      bool lvalue_copy = p_lvalue; 
  176881           0 :      result->p_lvalue = lvalue_copy; 
  176882             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  176883             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  176884             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  176885           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  176886           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  176887             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  176888             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  176889             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  176890           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  176891           0 :      if ( p_operatorPosition != NULL ) 
  176892             :         { 
  176893           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  176894             :         } 
  176895             :        else 
  176896             :         { 
  176897             :           operatorPosition_copy = NULL; 
  176898             :         } 
  176899             :   /* check for a valid pointer and delete if present */ 
  176900           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  176901             :   /* add assignment to result here */ 
  176902           0 :      result->p_operatorPosition = operatorPosition_copy; 
  176903             :   // case: not a listType for (using conditionalToSetParent)expression
  176904           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
  176905             :              { 
  176906           0 :                expression_copy->set_parent(result); 
  176907             :              } 
  176908             : 
  176909             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  176910             : 
  176911             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  176912             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  176913             :   // fixupCopy(result,help);
  176914             : 
  176915             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  176916             :   // the Sg_File_Info objects that are built for the new IR nodes.
  176917           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  176918           0 :      if (locatedNode != NULL)
  176919             :         {
  176920             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  176921           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  176922           0 :           ROSE_ASSERT(start != NULL);
  176923             : #if 0
  176924             :        // Debugging information
  176925             :           if (start->get_parent() == NULL)
  176926             :              {
  176927             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176928             :              }
  176929             : #endif
  176930           0 :           start->set_parent(locatedNode);
  176931           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  176932             : 
  176933           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  176934             : 
  176935             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  176936             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  176937             :        // ROSE_ASSERT(end != NULL);
  176938           0 :           if (end == NULL)
  176939             :              {
  176940           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  176941             :              }
  176942             :             else
  176943             :              {
  176944             : #if 0
  176945             :             // Debugging information
  176946             :                if (end->get_parent() == NULL)
  176947             :                   {
  176948             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176949             :                   }
  176950             : #endif
  176951           0 :                end->set_parent(locatedNode);
  176952           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  176953             :              }
  176954             : 
  176955           0 :           SgExpression* expression = isSgExpression(result);
  176956           0 :           if (isSgExpression(this) != NULL)
  176957             :              {
  176958           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  176959             : 
  176960             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  176961           0 :                if (operatorPosition != NULL)
  176962             :                   {
  176963             : #if 0
  176964             :                  // Debugging information
  176965             :                     if (operatorPosition->get_parent() == NULL)
  176966             :                        {
  176967             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176968             :                        }
  176969             : #endif
  176970           0 :                     operatorPosition->set_parent(expression);
  176971           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  176972             :                   }
  176973             :              }
  176974             :         }
  176975             : 
  176976             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  176977           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  176978           0 :      if (initializedName != NULL)
  176979             :         {
  176980             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  176981           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  176982           0 :           ROSE_ASSERT(start != NULL);
  176983             : #if 0
  176984             :        // Debugging information
  176985             :           if (start->get_parent() == NULL)
  176986             :              {
  176987             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  176988             :              }
  176989             : #endif
  176990           0 :           start->set_parent(initializedName);
  176991           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  176992             : 
  176993             : #if 0
  176994             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  176995             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  176996             : 
  176997             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  176998             :        // ROSE_ASSERT(end != NULL);
  176999             :           if (end == NULL)
  177000             :              {
  177001             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  177002             :              }
  177003             :             else
  177004             :              {
  177005             :                if (end->get_parent() == NULL)
  177006             :                   {
  177007             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177008             :                   }
  177009             :                end->set_parent(initializedName);
  177010             :                ROSE_ASSERT(end->get_parent() != NULL);
  177011             :              }
  177012             : #endif
  177013             :         }
  177014             : 
  177015             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  177016           0 :      help.insertCopiedNodePair(this,result);
  177017             : 
  177018             :   // printf ("End of copy SgUpcLocalsizeofExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  177019             : 
  177020             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  177021             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  177022           0 :      help.decrementDepth();
  177023             : 
  177024             :   // Test if this is the root of the copy!
  177025           0 :      if (help.get_depth() == 0)
  177026             :         {
  177027             :        // This is the original calling node.
  177028             : 
  177029             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  177030             :        // printf ("Calling SgUpcLocalsizeofExpression::fixupCopy() (from root of AST being copied) \n");
  177031             : #if ALT_FIXUP_COPY
  177032             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  177033           0 :           fixupCopy_scopes (result,help);
  177034           0 :           fixupCopy_symbols (result,help);
  177035           0 :           fixupCopy_references (result,help);
  177036             : #else
  177037             :           fixupCopy(result,help);
  177038             : #endif
  177039             :        // Allow this to be called recursively, so accumulate the state.
  177040             :        // Also, clear the state in the SgCopyHelp object.
  177041             :        // help.clearState();
  177042             :         }
  177043             : 
  177044           0 :      return result;
  177045             :    }
  177046             : 
  177047             : 
  177048             : /* #line 177049 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  177049             : 
  177050             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177051             : 
  177052           0 : SgNode* SgUpcBlocksizeofExpression::copy ( SgCopyHelp& help) const
  177053             :    {
  177054           0 :      SgUpcBlocksizeofExpression* result = NULL;
  177055             : 
  177056             :   // printf ("Copy SgUpcBlocksizeofExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  177057             : 
  177058             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  177059             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  177060             :   // The default value of the depth is 0, so after this call the depth is 1!
  177061           0 :      help.incrementDepth();
  177062             : 
  177063             : #if 0
  177064             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  177065             :   // but it is not generally true that things can only be copied once!
  177066             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  177067             :   // AstAttribute* existingAttribute = const_cast<SgUpcBlocksizeofExpression*>(this)->attribute["copied"];
  177068             :      bool previouslyCopied = const_cast<SgUpcBlocksizeofExpression*>(this)->attribute.exists("copied");
  177069             :      if (previouslyCopied == true)
  177070             :         {
  177071             :           this->get_file_info()->display("Called from copy SgUpcBlocksizeofExpression: debug");
  177072             :         }
  177073             :      ROSE_ASSERT(previouslyCopied == false);
  177074             : 
  177075             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  177076             :      AstAttribute* newAttribute = new AstAttribute();
  177077             :      ROSE_ASSERT(newAttribute != NULL);
  177078             : 
  177079             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  177080             :      const_cast<SgUpcBlocksizeofExpression*>(this)->attribute.add("copied",newAttribute);
  177081             : #endif
  177082             : 
  177083             :   // Copy data members from base classes
  177084             :   // Copy constructor parameter data member: startOfConstruct_copy
  177085             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  177086             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  177087           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  177088           0 :      if ( p_startOfConstruct != NULL ) 
  177089             :         { 
  177090           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  177091             :         } 
  177092             :        else 
  177093             :         { 
  177094             :           startOfConstruct_copy = NULL; 
  177095             :         } 
  177096             :   // Copy constructor parameter data member: expression_copy
  177097           0 :      SgExpression* expression_copy; 
  177098             :   // case: not a listType for (using conditionalToCopyVariable)expression
  177099           0 :           if (get_expression() != NULL) 
  177100             :              { 
  177101           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
  177102             :              } 
  177103             :             else 
  177104             :              { 
  177105             :                expression_copy = NULL; 
  177106             :              } 
  177107             :   // Copy constructor parameter data member: operand_type_copy
  177108             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operand_type
  177109             :   // case: toBeCopied == COPY_DATA for operand_type
  177110           0 :      SgType* operand_type_copy = p_operand_type; 
  177111             :   // Copy constructor parameter data member: expression_type_copy
  177112             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  177113             :   // case: toBeCopied == COPY_DATA for expression_type
  177114           0 :      SgType* expression_type_copy = p_expression_type; 
  177115             :  
  177116             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177117             : 
  177118             :   // Build an empty copy of this object (will be filled in, but 
  177119             :   // the parent can't be set and must be set by the caller)
  177120           0 :      result = new SgUpcBlocksizeofExpression(  startOfConstruct_copy, expression_copy, operand_type_copy, expression_type_copy );
  177121           0 :      ROSE_ASSERT(result != NULL);
  177122             : 
  177123             :   // Copy data members of "this" class
  177124             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  177125             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  177126             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  177127           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  177128           0 :      if ( p_endOfConstruct != NULL ) 
  177129             :         { 
  177130           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  177131             :         } 
  177132             :        else 
  177133             :         { 
  177134             :           endOfConstruct_copy = NULL; 
  177135             :         } 
  177136             :   /* check for a valid pointer and delete if present */ 
  177137           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  177138             :   /* add assignment to result here */ 
  177139           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  177140             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  177141             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  177142             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  177143           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  177144           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  177145             :         { 
  177146           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  177147             :         } 
  177148             :        else 
  177149             :         { 
  177150             :           attachedPreprocessingInfoPtr_copy = NULL; 
  177151             :         } 
  177152             :   /* check for a valid pointer and delete if present */ 
  177153           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  177154             :   /* add assignment to result here */ 
  177155           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  177156             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  177157             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  177158             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  177159           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  177160           0 :      if ( p_attributeMechanism != NULL ) 
  177161             :         { 
  177162           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  177163             :         } 
  177164             :        else 
  177165             :         { 
  177166             :           attributeMechanism_copy = NULL; 
  177167             :         } 
  177168             :   /* check for a valid pointer and delete if present */ 
  177169           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  177170             :   /* add assignment to result here */ 
  177171           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  177172             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  177173             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  177174             :   // case: toBeCopied == COPY_DATA for need_paren
  177175           0 :      bool need_paren_copy = p_need_paren; 
  177176           0 :      result->p_need_paren = need_paren_copy; 
  177177             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  177178             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  177179             :   // case: toBeCopied == COPY_DATA for lvalue
  177180           0 :      bool lvalue_copy = p_lvalue; 
  177181           0 :      result->p_lvalue = lvalue_copy; 
  177182             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  177183             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  177184             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  177185           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  177186           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  177187             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  177188             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  177189             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  177190           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  177191           0 :      if ( p_operatorPosition != NULL ) 
  177192             :         { 
  177193           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  177194             :         } 
  177195             :        else 
  177196             :         { 
  177197             :           operatorPosition_copy = NULL; 
  177198             :         } 
  177199             :   /* check for a valid pointer and delete if present */ 
  177200           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  177201             :   /* add assignment to result here */ 
  177202           0 :      result->p_operatorPosition = operatorPosition_copy; 
  177203             :   // case: not a listType for (using conditionalToSetParent)expression
  177204           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
  177205             :              { 
  177206           0 :                expression_copy->set_parent(result); 
  177207             :              } 
  177208             : 
  177209             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177210             : 
  177211             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  177212             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  177213             :   // fixupCopy(result,help);
  177214             : 
  177215             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  177216             :   // the Sg_File_Info objects that are built for the new IR nodes.
  177217           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  177218           0 :      if (locatedNode != NULL)
  177219             :         {
  177220             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  177221           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  177222           0 :           ROSE_ASSERT(start != NULL);
  177223             : #if 0
  177224             :        // Debugging information
  177225             :           if (start->get_parent() == NULL)
  177226             :              {
  177227             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177228             :              }
  177229             : #endif
  177230           0 :           start->set_parent(locatedNode);
  177231           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  177232             : 
  177233           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  177234             : 
  177235             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  177236             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  177237             :        // ROSE_ASSERT(end != NULL);
  177238           0 :           if (end == NULL)
  177239             :              {
  177240           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  177241             :              }
  177242             :             else
  177243             :              {
  177244             : #if 0
  177245             :             // Debugging information
  177246             :                if (end->get_parent() == NULL)
  177247             :                   {
  177248             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177249             :                   }
  177250             : #endif
  177251           0 :                end->set_parent(locatedNode);
  177252           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  177253             :              }
  177254             : 
  177255           0 :           SgExpression* expression = isSgExpression(result);
  177256           0 :           if (isSgExpression(this) != NULL)
  177257             :              {
  177258           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  177259             : 
  177260             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  177261           0 :                if (operatorPosition != NULL)
  177262             :                   {
  177263             : #if 0
  177264             :                  // Debugging information
  177265             :                     if (operatorPosition->get_parent() == NULL)
  177266             :                        {
  177267             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177268             :                        }
  177269             : #endif
  177270           0 :                     operatorPosition->set_parent(expression);
  177271           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  177272             :                   }
  177273             :              }
  177274             :         }
  177275             : 
  177276             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  177277           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  177278           0 :      if (initializedName != NULL)
  177279             :         {
  177280             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  177281           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  177282           0 :           ROSE_ASSERT(start != NULL);
  177283             : #if 0
  177284             :        // Debugging information
  177285             :           if (start->get_parent() == NULL)
  177286             :              {
  177287             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177288             :              }
  177289             : #endif
  177290           0 :           start->set_parent(initializedName);
  177291           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  177292             : 
  177293             : #if 0
  177294             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  177295             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  177296             : 
  177297             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  177298             :        // ROSE_ASSERT(end != NULL);
  177299             :           if (end == NULL)
  177300             :              {
  177301             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  177302             :              }
  177303             :             else
  177304             :              {
  177305             :                if (end->get_parent() == NULL)
  177306             :                   {
  177307             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177308             :                   }
  177309             :                end->set_parent(initializedName);
  177310             :                ROSE_ASSERT(end->get_parent() != NULL);
  177311             :              }
  177312             : #endif
  177313             :         }
  177314             : 
  177315             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  177316           0 :      help.insertCopiedNodePair(this,result);
  177317             : 
  177318             :   // printf ("End of copy SgUpcBlocksizeofExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  177319             : 
  177320             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  177321             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  177322           0 :      help.decrementDepth();
  177323             : 
  177324             :   // Test if this is the root of the copy!
  177325           0 :      if (help.get_depth() == 0)
  177326             :         {
  177327             :        // This is the original calling node.
  177328             : 
  177329             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  177330             :        // printf ("Calling SgUpcBlocksizeofExpression::fixupCopy() (from root of AST being copied) \n");
  177331             : #if ALT_FIXUP_COPY
  177332             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  177333           0 :           fixupCopy_scopes (result,help);
  177334           0 :           fixupCopy_symbols (result,help);
  177335           0 :           fixupCopy_references (result,help);
  177336             : #else
  177337             :           fixupCopy(result,help);
  177338             : #endif
  177339             :        // Allow this to be called recursively, so accumulate the state.
  177340             :        // Also, clear the state in the SgCopyHelp object.
  177341             :        // help.clearState();
  177342             :         }
  177343             : 
  177344           0 :      return result;
  177345             :    }
  177346             : 
  177347             : 
  177348             : /* #line 177349 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  177349             : 
  177350             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177351             : 
  177352           0 : SgNode* SgUpcElemsizeofExpression::copy ( SgCopyHelp& help) const
  177353             :    {
  177354           0 :      SgUpcElemsizeofExpression* result = NULL;
  177355             : 
  177356             :   // printf ("Copy SgUpcElemsizeofExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  177357             : 
  177358             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  177359             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  177360             :   // The default value of the depth is 0, so after this call the depth is 1!
  177361           0 :      help.incrementDepth();
  177362             : 
  177363             : #if 0
  177364             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  177365             :   // but it is not generally true that things can only be copied once!
  177366             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  177367             :   // AstAttribute* existingAttribute = const_cast<SgUpcElemsizeofExpression*>(this)->attribute["copied"];
  177368             :      bool previouslyCopied = const_cast<SgUpcElemsizeofExpression*>(this)->attribute.exists("copied");
  177369             :      if (previouslyCopied == true)
  177370             :         {
  177371             :           this->get_file_info()->display("Called from copy SgUpcElemsizeofExpression: debug");
  177372             :         }
  177373             :      ROSE_ASSERT(previouslyCopied == false);
  177374             : 
  177375             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  177376             :      AstAttribute* newAttribute = new AstAttribute();
  177377             :      ROSE_ASSERT(newAttribute != NULL);
  177378             : 
  177379             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  177380             :      const_cast<SgUpcElemsizeofExpression*>(this)->attribute.add("copied",newAttribute);
  177381             : #endif
  177382             : 
  177383             :   // Copy data members from base classes
  177384             :   // Copy constructor parameter data member: startOfConstruct_copy
  177385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  177386             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  177387           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  177388           0 :      if ( p_startOfConstruct != NULL ) 
  177389             :         { 
  177390           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  177391             :         } 
  177392             :        else 
  177393             :         { 
  177394             :           startOfConstruct_copy = NULL; 
  177395             :         } 
  177396             :   // Copy constructor parameter data member: expression_copy
  177397           0 :      SgExpression* expression_copy; 
  177398             :   // case: not a listType for (using conditionalToCopyVariable)expression
  177399           0 :           if (get_expression() != NULL) 
  177400             :              { 
  177401           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
  177402             :              } 
  177403             :             else 
  177404             :              { 
  177405             :                expression_copy = NULL; 
  177406             :              } 
  177407             :   // Copy constructor parameter data member: operand_type_copy
  177408             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operand_type
  177409             :   // case: toBeCopied == COPY_DATA for operand_type
  177410           0 :      SgType* operand_type_copy = p_operand_type; 
  177411             :   // Copy constructor parameter data member: expression_type_copy
  177412             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  177413             :   // case: toBeCopied == COPY_DATA for expression_type
  177414           0 :      SgType* expression_type_copy = p_expression_type; 
  177415             :  
  177416             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177417             : 
  177418             :   // Build an empty copy of this object (will be filled in, but 
  177419             :   // the parent can't be set and must be set by the caller)
  177420           0 :      result = new SgUpcElemsizeofExpression(  startOfConstruct_copy, expression_copy, operand_type_copy, expression_type_copy );
  177421           0 :      ROSE_ASSERT(result != NULL);
  177422             : 
  177423             :   // Copy data members of "this" class
  177424             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  177425             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  177426             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  177427           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  177428           0 :      if ( p_endOfConstruct != NULL ) 
  177429             :         { 
  177430           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  177431             :         } 
  177432             :        else 
  177433             :         { 
  177434             :           endOfConstruct_copy = NULL; 
  177435             :         } 
  177436             :   /* check for a valid pointer and delete if present */ 
  177437           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  177438             :   /* add assignment to result here */ 
  177439           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  177440             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  177441             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  177442             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  177443           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  177444           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  177445             :         { 
  177446           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  177447             :         } 
  177448             :        else 
  177449             :         { 
  177450             :           attachedPreprocessingInfoPtr_copy = NULL; 
  177451             :         } 
  177452             :   /* check for a valid pointer and delete if present */ 
  177453           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  177454             :   /* add assignment to result here */ 
  177455           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  177456             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  177457             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  177458             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  177459           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  177460           0 :      if ( p_attributeMechanism != NULL ) 
  177461             :         { 
  177462           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  177463             :         } 
  177464             :        else 
  177465             :         { 
  177466             :           attributeMechanism_copy = NULL; 
  177467             :         } 
  177468             :   /* check for a valid pointer and delete if present */ 
  177469           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  177470             :   /* add assignment to result here */ 
  177471           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  177472             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  177473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  177474             :   // case: toBeCopied == COPY_DATA for need_paren
  177475           0 :      bool need_paren_copy = p_need_paren; 
  177476           0 :      result->p_need_paren = need_paren_copy; 
  177477             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  177478             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  177479             :   // case: toBeCopied == COPY_DATA for lvalue
  177480           0 :      bool lvalue_copy = p_lvalue; 
  177481           0 :      result->p_lvalue = lvalue_copy; 
  177482             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  177483             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  177484             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  177485           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  177486           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  177487             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  177488             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  177489             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  177490           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  177491           0 :      if ( p_operatorPosition != NULL ) 
  177492             :         { 
  177493           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  177494             :         } 
  177495             :        else 
  177496             :         { 
  177497             :           operatorPosition_copy = NULL; 
  177498             :         } 
  177499             :   /* check for a valid pointer and delete if present */ 
  177500           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  177501             :   /* add assignment to result here */ 
  177502           0 :      result->p_operatorPosition = operatorPosition_copy; 
  177503             :   // case: not a listType for (using conditionalToSetParent)expression
  177504           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
  177505             :              { 
  177506           0 :                expression_copy->set_parent(result); 
  177507             :              } 
  177508             : 
  177509             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177510             : 
  177511             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  177512             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  177513             :   // fixupCopy(result,help);
  177514             : 
  177515             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  177516             :   // the Sg_File_Info objects that are built for the new IR nodes.
  177517           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  177518           0 :      if (locatedNode != NULL)
  177519             :         {
  177520             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  177521           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  177522           0 :           ROSE_ASSERT(start != NULL);
  177523             : #if 0
  177524             :        // Debugging information
  177525             :           if (start->get_parent() == NULL)
  177526             :              {
  177527             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177528             :              }
  177529             : #endif
  177530           0 :           start->set_parent(locatedNode);
  177531           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  177532             : 
  177533           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  177534             : 
  177535             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  177536             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  177537             :        // ROSE_ASSERT(end != NULL);
  177538           0 :           if (end == NULL)
  177539             :              {
  177540           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  177541             :              }
  177542             :             else
  177543             :              {
  177544             : #if 0
  177545             :             // Debugging information
  177546             :                if (end->get_parent() == NULL)
  177547             :                   {
  177548             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177549             :                   }
  177550             : #endif
  177551           0 :                end->set_parent(locatedNode);
  177552           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  177553             :              }
  177554             : 
  177555           0 :           SgExpression* expression = isSgExpression(result);
  177556           0 :           if (isSgExpression(this) != NULL)
  177557             :              {
  177558           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  177559             : 
  177560             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  177561           0 :                if (operatorPosition != NULL)
  177562             :                   {
  177563             : #if 0
  177564             :                  // Debugging information
  177565             :                     if (operatorPosition->get_parent() == NULL)
  177566             :                        {
  177567             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177568             :                        }
  177569             : #endif
  177570           0 :                     operatorPosition->set_parent(expression);
  177571           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  177572             :                   }
  177573             :              }
  177574             :         }
  177575             : 
  177576             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  177577           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  177578           0 :      if (initializedName != NULL)
  177579             :         {
  177580             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  177581           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  177582           0 :           ROSE_ASSERT(start != NULL);
  177583             : #if 0
  177584             :        // Debugging information
  177585             :           if (start->get_parent() == NULL)
  177586             :              {
  177587             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177588             :              }
  177589             : #endif
  177590           0 :           start->set_parent(initializedName);
  177591           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  177592             : 
  177593             : #if 0
  177594             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  177595             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  177596             : 
  177597             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  177598             :        // ROSE_ASSERT(end != NULL);
  177599             :           if (end == NULL)
  177600             :              {
  177601             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  177602             :              }
  177603             :             else
  177604             :              {
  177605             :                if (end->get_parent() == NULL)
  177606             :                   {
  177607             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177608             :                   }
  177609             :                end->set_parent(initializedName);
  177610             :                ROSE_ASSERT(end->get_parent() != NULL);
  177611             :              }
  177612             : #endif
  177613             :         }
  177614             : 
  177615             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  177616           0 :      help.insertCopiedNodePair(this,result);
  177617             : 
  177618             :   // printf ("End of copy SgUpcElemsizeofExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  177619             : 
  177620             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  177621             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  177622           0 :      help.decrementDepth();
  177623             : 
  177624             :   // Test if this is the root of the copy!
  177625           0 :      if (help.get_depth() == 0)
  177626             :         {
  177627             :        // This is the original calling node.
  177628             : 
  177629             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  177630             :        // printf ("Calling SgUpcElemsizeofExpression::fixupCopy() (from root of AST being copied) \n");
  177631             : #if ALT_FIXUP_COPY
  177632             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  177633           0 :           fixupCopy_scopes (result,help);
  177634           0 :           fixupCopy_symbols (result,help);
  177635           0 :           fixupCopy_references (result,help);
  177636             : #else
  177637             :           fixupCopy(result,help);
  177638             : #endif
  177639             :        // Allow this to be called recursively, so accumulate the state.
  177640             :        // Also, clear the state in the SgCopyHelp object.
  177641             :        // help.clearState();
  177642             :         }
  177643             : 
  177644           0 :      return result;
  177645             :    }
  177646             : 
  177647             : 
  177648             : /* #line 177649 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  177649             : 
  177650             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177651             : 
  177652           0 : SgNode* SgSuperExp::copy ( SgCopyHelp& help) const
  177653             :    {
  177654           0 :      SgSuperExp* result = NULL;
  177655             : 
  177656             :   // printf ("Copy SgSuperExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  177657             : 
  177658             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  177659             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  177660             :   // The default value of the depth is 0, so after this call the depth is 1!
  177661           0 :      help.incrementDepth();
  177662             : 
  177663             : #if 0
  177664             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  177665             :   // but it is not generally true that things can only be copied once!
  177666             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  177667             :   // AstAttribute* existingAttribute = const_cast<SgSuperExp*>(this)->attribute["copied"];
  177668             :      bool previouslyCopied = const_cast<SgSuperExp*>(this)->attribute.exists("copied");
  177669             :      if (previouslyCopied == true)
  177670             :         {
  177671             :           this->get_file_info()->display("Called from copy SgSuperExp: debug");
  177672             :         }
  177673             :      ROSE_ASSERT(previouslyCopied == false);
  177674             : 
  177675             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  177676             :      AstAttribute* newAttribute = new AstAttribute();
  177677             :      ROSE_ASSERT(newAttribute != NULL);
  177678             : 
  177679             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  177680             :      const_cast<SgSuperExp*>(this)->attribute.add("copied",newAttribute);
  177681             : #endif
  177682             : 
  177683             :   // Copy data members from base classes
  177684             :   // Copy constructor parameter data member: startOfConstruct_copy
  177685             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  177686             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  177687           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  177688           0 :      if ( p_startOfConstruct != NULL ) 
  177689             :         { 
  177690           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  177691             :         } 
  177692             :        else 
  177693             :         { 
  177694             :           startOfConstruct_copy = NULL; 
  177695             :         } 
  177696             :   // Copy constructor parameter data member: class_symbol_copy
  177697             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_symbol
  177698             :   // case: toBeCopied == COPY_DATA for class_symbol
  177699           0 :      SgClassSymbol* class_symbol_copy = p_class_symbol; 
  177700             :   // Copy constructor parameter data member: pobj_super_copy
  177701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for pobj_super
  177702             :   // case: toBeCopied == COPY_DATA for pobj_super
  177703           0 :      int pobj_super_copy = p_pobj_super; 
  177704             :  
  177705             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177706             : 
  177707             :   // Build an empty copy of this object (will be filled in, but 
  177708             :   // the parent can't be set and must be set by the caller)
  177709           0 :      result = new SgSuperExp(  startOfConstruct_copy, class_symbol_copy, pobj_super_copy );
  177710           0 :      ROSE_ASSERT(result != NULL);
  177711             : 
  177712             :   // Copy data members of "this" class
  177713             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  177714             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  177715             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  177716           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  177717           0 :      if ( p_endOfConstruct != NULL ) 
  177718             :         { 
  177719           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  177720             :         } 
  177721             :        else 
  177722             :         { 
  177723             :           endOfConstruct_copy = NULL; 
  177724             :         } 
  177725             :   /* check for a valid pointer and delete if present */ 
  177726           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  177727             :   /* add assignment to result here */ 
  177728           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  177729             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  177730             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  177731             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  177732           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  177733           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  177734             :         { 
  177735           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  177736             :         } 
  177737             :        else 
  177738             :         { 
  177739             :           attachedPreprocessingInfoPtr_copy = NULL; 
  177740             :         } 
  177741             :   /* check for a valid pointer and delete if present */ 
  177742           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  177743             :   /* add assignment to result here */ 
  177744           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  177745             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  177746             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  177747             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  177748           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  177749           0 :      if ( p_attributeMechanism != NULL ) 
  177750             :         { 
  177751           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  177752             :         } 
  177753             :        else 
  177754             :         { 
  177755             :           attributeMechanism_copy = NULL; 
  177756             :         } 
  177757             :   /* check for a valid pointer and delete if present */ 
  177758           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  177759             :   /* add assignment to result here */ 
  177760           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  177761             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  177762             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  177763             :   // case: toBeCopied == COPY_DATA for need_paren
  177764           0 :      bool need_paren_copy = p_need_paren; 
  177765           0 :      result->p_need_paren = need_paren_copy; 
  177766             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  177767             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  177768             :   // case: toBeCopied == COPY_DATA for lvalue
  177769           0 :      bool lvalue_copy = p_lvalue; 
  177770           0 :      result->p_lvalue = lvalue_copy; 
  177771             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  177772             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  177773             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  177774           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  177775           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  177776             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  177777             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  177778             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  177779           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  177780           0 :      if ( p_operatorPosition != NULL ) 
  177781             :         { 
  177782           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  177783             :         } 
  177784             :        else 
  177785             :         { 
  177786             :           operatorPosition_copy = NULL; 
  177787             :         } 
  177788             :   /* check for a valid pointer and delete if present */ 
  177789           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  177790             :   /* add assignment to result here */ 
  177791           0 :      result->p_operatorPosition = operatorPosition_copy; 
  177792             : 
  177793             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177794             : 
  177795             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  177796             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  177797             :   // fixupCopy(result,help);
  177798             : 
  177799             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  177800             :   // the Sg_File_Info objects that are built for the new IR nodes.
  177801           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  177802           0 :      if (locatedNode != NULL)
  177803             :         {
  177804             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  177805           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  177806           0 :           ROSE_ASSERT(start != NULL);
  177807             : #if 0
  177808             :        // Debugging information
  177809             :           if (start->get_parent() == NULL)
  177810             :              {
  177811             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177812             :              }
  177813             : #endif
  177814           0 :           start->set_parent(locatedNode);
  177815           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  177816             : 
  177817           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  177818             : 
  177819             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  177820             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  177821             :        // ROSE_ASSERT(end != NULL);
  177822           0 :           if (end == NULL)
  177823             :              {
  177824           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  177825             :              }
  177826             :             else
  177827             :              {
  177828             : #if 0
  177829             :             // Debugging information
  177830             :                if (end->get_parent() == NULL)
  177831             :                   {
  177832             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177833             :                   }
  177834             : #endif
  177835           0 :                end->set_parent(locatedNode);
  177836           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  177837             :              }
  177838             : 
  177839           0 :           SgExpression* expression = isSgExpression(result);
  177840           0 :           if (isSgExpression(this) != NULL)
  177841             :              {
  177842           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  177843             : 
  177844             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  177845           0 :                if (operatorPosition != NULL)
  177846             :                   {
  177847             : #if 0
  177848             :                  // Debugging information
  177849             :                     if (operatorPosition->get_parent() == NULL)
  177850             :                        {
  177851             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177852             :                        }
  177853             : #endif
  177854           0 :                     operatorPosition->set_parent(expression);
  177855           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  177856             :                   }
  177857             :              }
  177858             :         }
  177859             : 
  177860             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  177861           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  177862           0 :      if (initializedName != NULL)
  177863             :         {
  177864             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  177865           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  177866           0 :           ROSE_ASSERT(start != NULL);
  177867             : #if 0
  177868             :        // Debugging information
  177869             :           if (start->get_parent() == NULL)
  177870             :              {
  177871             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177872             :              }
  177873             : #endif
  177874           0 :           start->set_parent(initializedName);
  177875           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  177876             : 
  177877             : #if 0
  177878             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  177879             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  177880             : 
  177881             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  177882             :        // ROSE_ASSERT(end != NULL);
  177883             :           if (end == NULL)
  177884             :              {
  177885             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  177886             :              }
  177887             :             else
  177888             :              {
  177889             :                if (end->get_parent() == NULL)
  177890             :                   {
  177891             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  177892             :                   }
  177893             :                end->set_parent(initializedName);
  177894             :                ROSE_ASSERT(end->get_parent() != NULL);
  177895             :              }
  177896             : #endif
  177897             :         }
  177898             : 
  177899             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  177900           0 :      help.insertCopiedNodePair(this,result);
  177901             : 
  177902             :   // printf ("End of copy SgSuperExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  177903             : 
  177904             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  177905             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  177906           0 :      help.decrementDepth();
  177907             : 
  177908             :   // Test if this is the root of the copy!
  177909           0 :      if (help.get_depth() == 0)
  177910             :         {
  177911             :        // This is the original calling node.
  177912             : 
  177913             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  177914             :        // printf ("Calling SgSuperExp::fixupCopy() (from root of AST being copied) \n");
  177915             : #if ALT_FIXUP_COPY
  177916             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  177917           0 :           fixupCopy_scopes (result,help);
  177918           0 :           fixupCopy_symbols (result,help);
  177919           0 :           fixupCopy_references (result,help);
  177920             : #else
  177921             :           fixupCopy(result,help);
  177922             : #endif
  177923             :        // Allow this to be called recursively, so accumulate the state.
  177924             :        // Also, clear the state in the SgCopyHelp object.
  177925             :        // help.clearState();
  177926             :         }
  177927             : 
  177928           0 :      return result;
  177929             :    }
  177930             : 
  177931             : 
  177932             : /* #line 177933 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  177933             : 
  177934             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177935             : 
  177936           0 : SgNode* SgTypeIdOp::copy ( SgCopyHelp& help) const
  177937             :    {
  177938           0 :      SgTypeIdOp* result = NULL;
  177939             : 
  177940             :   // printf ("Copy SgTypeIdOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  177941             : 
  177942             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  177943             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  177944             :   // The default value of the depth is 0, so after this call the depth is 1!
  177945           0 :      help.incrementDepth();
  177946             : 
  177947             : #if 0
  177948             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  177949             :   // but it is not generally true that things can only be copied once!
  177950             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  177951             :   // AstAttribute* existingAttribute = const_cast<SgTypeIdOp*>(this)->attribute["copied"];
  177952             :      bool previouslyCopied = const_cast<SgTypeIdOp*>(this)->attribute.exists("copied");
  177953             :      if (previouslyCopied == true)
  177954             :         {
  177955             :           this->get_file_info()->display("Called from copy SgTypeIdOp: debug");
  177956             :         }
  177957             :      ROSE_ASSERT(previouslyCopied == false);
  177958             : 
  177959             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  177960             :      AstAttribute* newAttribute = new AstAttribute();
  177961             :      ROSE_ASSERT(newAttribute != NULL);
  177962             : 
  177963             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  177964             :      const_cast<SgTypeIdOp*>(this)->attribute.add("copied",newAttribute);
  177965             : #endif
  177966             : 
  177967             :   // Copy data members from base classes
  177968             :   // Copy constructor parameter data member: startOfConstruct_copy
  177969             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  177970             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  177971           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  177972           0 :      if ( p_startOfConstruct != NULL ) 
  177973             :         { 
  177974           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  177975             :         } 
  177976             :        else 
  177977             :         { 
  177978             :           startOfConstruct_copy = NULL; 
  177979             :         } 
  177980             :   // Copy constructor parameter data member: operand_expr_copy
  177981           0 :      SgExpression* operand_expr_copy; 
  177982             :   // case: not a listType for (using conditionalToCopyVariable)operand_expr
  177983           0 :           if (get_operand_expr() != NULL) 
  177984             :              { 
  177985           0 :                operand_expr_copy = static_cast<SgExpression*>(help.copyAst(get_operand_expr())); 
  177986             :              } 
  177987             :             else 
  177988             :              { 
  177989             :                operand_expr_copy = NULL; 
  177990             :              } 
  177991             :   // Copy constructor parameter data member: operand_type_copy
  177992             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operand_type
  177993             :   // case: toBeCopied == COPY_DATA for operand_type
  177994           0 :      SgType* operand_type_copy = p_operand_type; 
  177995             :  
  177996             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  177997             : 
  177998             :   // Build an empty copy of this object (will be filled in, but 
  177999             :   // the parent can't be set and must be set by the caller)
  178000           0 :      result = new SgTypeIdOp(  startOfConstruct_copy, operand_expr_copy, operand_type_copy );
  178001           0 :      ROSE_ASSERT(result != NULL);
  178002             : 
  178003             :   // Copy data members of "this" class
  178004             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  178005             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  178006             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  178007           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  178008           0 :      if ( p_endOfConstruct != NULL ) 
  178009             :         { 
  178010           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  178011             :         } 
  178012             :        else 
  178013             :         { 
  178014             :           endOfConstruct_copy = NULL; 
  178015             :         } 
  178016             :   /* check for a valid pointer and delete if present */ 
  178017           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  178018             :   /* add assignment to result here */ 
  178019           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  178020             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  178021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  178022             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  178023           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  178024           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  178025             :         { 
  178026           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  178027             :         } 
  178028             :        else 
  178029             :         { 
  178030             :           attachedPreprocessingInfoPtr_copy = NULL; 
  178031             :         } 
  178032             :   /* check for a valid pointer and delete if present */ 
  178033           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  178034             :   /* add assignment to result here */ 
  178035           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  178036             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  178037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  178038             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  178039           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  178040           0 :      if ( p_attributeMechanism != NULL ) 
  178041             :         { 
  178042           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  178043             :         } 
  178044             :        else 
  178045             :         { 
  178046             :           attributeMechanism_copy = NULL; 
  178047             :         } 
  178048             :   /* check for a valid pointer and delete if present */ 
  178049           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  178050             :   /* add assignment to result here */ 
  178051           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  178052             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  178053             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  178054             :   // case: toBeCopied == COPY_DATA for need_paren
  178055           0 :      bool need_paren_copy = p_need_paren; 
  178056           0 :      result->p_need_paren = need_paren_copy; 
  178057             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  178058             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  178059             :   // case: toBeCopied == COPY_DATA for lvalue
  178060           0 :      bool lvalue_copy = p_lvalue; 
  178061           0 :      result->p_lvalue = lvalue_copy; 
  178062             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  178063             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  178064             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  178065           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  178066           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  178067             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  178068             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  178069             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  178070           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  178071           0 :      if ( p_operatorPosition != NULL ) 
  178072             :         { 
  178073           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  178074             :         } 
  178075             :        else 
  178076             :         { 
  178077             :           operatorPosition_copy = NULL; 
  178078             :         } 
  178079             :   /* check for a valid pointer and delete if present */ 
  178080           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  178081             :   /* add assignment to result here */ 
  178082           0 :      result->p_operatorPosition = operatorPosition_copy; 
  178083             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  178084             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  178085             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  178086           0 :      int name_qualification_length_copy = p_name_qualification_length; 
  178087           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
  178088             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  178089             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  178090             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  178091           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  178092           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  178093             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  178094             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  178095             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  178096           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
  178097           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
  178098             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_for_pointer_to_member_class_length
  178099             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_for_pointer_to_member_class_length
  178100             :   // case: toBeCopied == COPY_DATA for name_qualification_for_pointer_to_member_class_length
  178101           0 :      int name_qualification_for_pointer_to_member_class_length_copy = p_name_qualification_for_pointer_to_member_class_length; 
  178102           0 :      result->p_name_qualification_for_pointer_to_member_class_length = name_qualification_for_pointer_to_member_class_length_copy; 
  178103             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_for_pointer_to_member_class_required
  178104             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_for_pointer_to_member_class_required
  178105             :   // case: toBeCopied == COPY_DATA for type_elaboration_for_pointer_to_member_class_required
  178106           0 :      bool type_elaboration_for_pointer_to_member_class_required_copy = p_type_elaboration_for_pointer_to_member_class_required; 
  178107           0 :      result->p_type_elaboration_for_pointer_to_member_class_required = type_elaboration_for_pointer_to_member_class_required_copy; 
  178108             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_for_pointer_to_member_class_required
  178109             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_for_pointer_to_member_class_required
  178110             :   // case: toBeCopied == COPY_DATA for global_qualification_for_pointer_to_member_class_required
  178111           0 :      bool global_qualification_for_pointer_to_member_class_required_copy = p_global_qualification_for_pointer_to_member_class_required; 
  178112           0 :      result->p_global_qualification_for_pointer_to_member_class_required = global_qualification_for_pointer_to_member_class_required_copy; 
  178113             :   // case: not a listType for (using conditionalToSetParent)operand_expr
  178114           0 :           if ( (operand_expr_copy != NULL) && (operand_expr_copy->get_parent() == NULL) && (isSgType(operand_expr_copy) == NULL) ) 
  178115             :              { 
  178116           0 :                operand_expr_copy->set_parent(result); 
  178117             :              } 
  178118             : 
  178119             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  178120             : 
  178121             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  178122             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  178123             :   // fixupCopy(result,help);
  178124             : 
  178125             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  178126             :   // the Sg_File_Info objects that are built for the new IR nodes.
  178127           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  178128           0 :      if (locatedNode != NULL)
  178129             :         {
  178130             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  178131           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  178132           0 :           ROSE_ASSERT(start != NULL);
  178133             : #if 0
  178134             :        // Debugging information
  178135             :           if (start->get_parent() == NULL)
  178136             :              {
  178137             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178138             :              }
  178139             : #endif
  178140           0 :           start->set_parent(locatedNode);
  178141           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  178142             : 
  178143           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  178144             : 
  178145             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  178146             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  178147             :        // ROSE_ASSERT(end != NULL);
  178148           0 :           if (end == NULL)
  178149             :              {
  178150           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  178151             :              }
  178152             :             else
  178153             :              {
  178154             : #if 0
  178155             :             // Debugging information
  178156             :                if (end->get_parent() == NULL)
  178157             :                   {
  178158             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178159             :                   }
  178160             : #endif
  178161           0 :                end->set_parent(locatedNode);
  178162           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  178163             :              }
  178164             : 
  178165           0 :           SgExpression* expression = isSgExpression(result);
  178166           0 :           if (isSgExpression(this) != NULL)
  178167             :              {
  178168           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  178169             : 
  178170             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  178171           0 :                if (operatorPosition != NULL)
  178172             :                   {
  178173             : #if 0
  178174             :                  // Debugging information
  178175             :                     if (operatorPosition->get_parent() == NULL)
  178176             :                        {
  178177             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178178             :                        }
  178179             : #endif
  178180           0 :                     operatorPosition->set_parent(expression);
  178181           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  178182             :                   }
  178183             :              }
  178184             :         }
  178185             : 
  178186             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  178187           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  178188           0 :      if (initializedName != NULL)
  178189             :         {
  178190             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  178191           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  178192           0 :           ROSE_ASSERT(start != NULL);
  178193             : #if 0
  178194             :        // Debugging information
  178195             :           if (start->get_parent() == NULL)
  178196             :              {
  178197             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178198             :              }
  178199             : #endif
  178200           0 :           start->set_parent(initializedName);
  178201           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  178202             : 
  178203             : #if 0
  178204             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  178205             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  178206             : 
  178207             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  178208             :        // ROSE_ASSERT(end != NULL);
  178209             :           if (end == NULL)
  178210             :              {
  178211             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  178212             :              }
  178213             :             else
  178214             :              {
  178215             :                if (end->get_parent() == NULL)
  178216             :                   {
  178217             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178218             :                   }
  178219             :                end->set_parent(initializedName);
  178220             :                ROSE_ASSERT(end->get_parent() != NULL);
  178221             :              }
  178222             : #endif
  178223             :         }
  178224             : 
  178225             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  178226           0 :      help.insertCopiedNodePair(this,result);
  178227             : 
  178228             :   // printf ("End of copy SgTypeIdOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  178229             : 
  178230             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  178231             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  178232           0 :      help.decrementDepth();
  178233             : 
  178234             :   // Test if this is the root of the copy!
  178235           0 :      if (help.get_depth() == 0)
  178236             :         {
  178237             :        // This is the original calling node.
  178238             : 
  178239             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  178240             :        // printf ("Calling SgTypeIdOp::fixupCopy() (from root of AST being copied) \n");
  178241             : #if ALT_FIXUP_COPY
  178242             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  178243           0 :           fixupCopy_scopes (result,help);
  178244           0 :           fixupCopy_symbols (result,help);
  178245           0 :           fixupCopy_references (result,help);
  178246             : #else
  178247             :           fixupCopy(result,help);
  178248             : #endif
  178249             :        // Allow this to be called recursively, so accumulate the state.
  178250             :        // Also, clear the state in the SgCopyHelp object.
  178251             :        // help.clearState();
  178252             :         }
  178253             : 
  178254           0 :      return result;
  178255             :    }
  178256             : 
  178257             : 
  178258             : /* #line 178259 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  178259             : 
  178260             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  178261             : 
  178262           0 : SgNode* SgConditionalExp::copy ( SgCopyHelp& help) const
  178263             :    {
  178264           0 :      SgConditionalExp* result = NULL;
  178265             : 
  178266             :   // printf ("Copy SgConditionalExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  178267             : 
  178268             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  178269             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  178270             :   // The default value of the depth is 0, so after this call the depth is 1!
  178271           0 :      help.incrementDepth();
  178272             : 
  178273             : #if 0
  178274             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  178275             :   // but it is not generally true that things can only be copied once!
  178276             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  178277             :   // AstAttribute* existingAttribute = const_cast<SgConditionalExp*>(this)->attribute["copied"];
  178278             :      bool previouslyCopied = const_cast<SgConditionalExp*>(this)->attribute.exists("copied");
  178279             :      if (previouslyCopied == true)
  178280             :         {
  178281             :           this->get_file_info()->display("Called from copy SgConditionalExp: debug");
  178282             :         }
  178283             :      ROSE_ASSERT(previouslyCopied == false);
  178284             : 
  178285             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  178286             :      AstAttribute* newAttribute = new AstAttribute();
  178287             :      ROSE_ASSERT(newAttribute != NULL);
  178288             : 
  178289             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  178290             :      const_cast<SgConditionalExp*>(this)->attribute.add("copied",newAttribute);
  178291             : #endif
  178292             : 
  178293             :   // Copy data members from base classes
  178294             :   // Copy constructor parameter data member: startOfConstruct_copy
  178295             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  178296             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  178297           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  178298           0 :      if ( p_startOfConstruct != NULL ) 
  178299             :         { 
  178300           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  178301             :         } 
  178302             :        else 
  178303             :         { 
  178304             :           startOfConstruct_copy = NULL; 
  178305             :         } 
  178306             :   // Copy constructor parameter data member: conditional_exp_copy
  178307           0 :      SgExpression* conditional_exp_copy; 
  178308             :   // case: not a listType for (using conditionalToCopyVariable)conditional_exp
  178309           0 :           if (get_conditional_exp() != NULL) 
  178310             :              { 
  178311           0 :                conditional_exp_copy = static_cast<SgExpression*>(help.copyAst(get_conditional_exp())); 
  178312             :              } 
  178313             :             else 
  178314             :              { 
  178315             :                conditional_exp_copy = NULL; 
  178316             :              } 
  178317             :   // Copy constructor parameter data member: true_exp_copy
  178318           0 :      SgExpression* true_exp_copy; 
  178319             :   // case: not a listType for (using conditionalToCopyVariable)true_exp
  178320           0 :           if (get_true_exp() != NULL) 
  178321             :              { 
  178322           0 :                true_exp_copy = static_cast<SgExpression*>(help.copyAst(get_true_exp())); 
  178323             :              } 
  178324             :             else 
  178325             :              { 
  178326             :                true_exp_copy = NULL; 
  178327             :              } 
  178328             :   // Copy constructor parameter data member: false_exp_copy
  178329           0 :      SgExpression* false_exp_copy; 
  178330             :   // case: not a listType for (using conditionalToCopyVariable)false_exp
  178331           0 :           if (get_false_exp() != NULL) 
  178332             :              { 
  178333           0 :                false_exp_copy = static_cast<SgExpression*>(help.copyAst(get_false_exp())); 
  178334             :              } 
  178335             :             else 
  178336             :              { 
  178337             :                false_exp_copy = NULL; 
  178338             :              } 
  178339             :   // Copy constructor parameter data member: expression_type_copy
  178340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  178341             :   // case: toBeCopied == COPY_DATA for expression_type
  178342           0 :      SgType* expression_type_copy = p_expression_type; 
  178343             :  
  178344             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  178345             : 
  178346             :   // Build an empty copy of this object (will be filled in, but 
  178347             :   // the parent can't be set and must be set by the caller)
  178348           0 :      result = new SgConditionalExp(  startOfConstruct_copy, conditional_exp_copy, true_exp_copy, false_exp_copy, expression_type_copy );
  178349           0 :      ROSE_ASSERT(result != NULL);
  178350             : 
  178351             :   // Copy data members of "this" class
  178352             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  178353             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  178354             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  178355           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  178356           0 :      if ( p_endOfConstruct != NULL ) 
  178357             :         { 
  178358           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  178359             :         } 
  178360             :        else 
  178361             :         { 
  178362             :           endOfConstruct_copy = NULL; 
  178363             :         } 
  178364             :   /* check for a valid pointer and delete if present */ 
  178365           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  178366             :   /* add assignment to result here */ 
  178367           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  178368             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  178369             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  178370             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  178371           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  178372           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  178373             :         { 
  178374           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  178375             :         } 
  178376             :        else 
  178377             :         { 
  178378             :           attachedPreprocessingInfoPtr_copy = NULL; 
  178379             :         } 
  178380             :   /* check for a valid pointer and delete if present */ 
  178381           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  178382             :   /* add assignment to result here */ 
  178383           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  178384             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  178385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  178386             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  178387           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  178388           0 :      if ( p_attributeMechanism != NULL ) 
  178389             :         { 
  178390           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  178391             :         } 
  178392             :        else 
  178393             :         { 
  178394             :           attributeMechanism_copy = NULL; 
  178395             :         } 
  178396             :   /* check for a valid pointer and delete if present */ 
  178397           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  178398             :   /* add assignment to result here */ 
  178399           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  178400             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  178401             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  178402             :   // case: toBeCopied == COPY_DATA for need_paren
  178403           0 :      bool need_paren_copy = p_need_paren; 
  178404           0 :      result->p_need_paren = need_paren_copy; 
  178405             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  178406             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  178407             :   // case: toBeCopied == COPY_DATA for lvalue
  178408           0 :      bool lvalue_copy = p_lvalue; 
  178409           0 :      result->p_lvalue = lvalue_copy; 
  178410             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  178411             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  178412             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  178413           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  178414           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  178415             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  178416             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  178417             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  178418           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  178419           0 :      if ( p_operatorPosition != NULL ) 
  178420             :         { 
  178421           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  178422             :         } 
  178423             :        else 
  178424             :         { 
  178425             :           operatorPosition_copy = NULL; 
  178426             :         } 
  178427             :   /* check for a valid pointer and delete if present */ 
  178428           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  178429             :   /* add assignment to result here */ 
  178430           0 :      result->p_operatorPosition = operatorPosition_copy; 
  178431             :   // case: not a listType for (using conditionalToSetParent)conditional_exp
  178432           0 :           if ( (conditional_exp_copy != NULL) && (conditional_exp_copy->get_parent() == NULL) && (isSgType(conditional_exp_copy) == NULL) ) 
  178433             :              { 
  178434           0 :                conditional_exp_copy->set_parent(result); 
  178435             :              } 
  178436             :   // case: not a listType for (using conditionalToSetParent)true_exp
  178437           0 :           if ( (true_exp_copy != NULL) && (true_exp_copy->get_parent() == NULL) && (isSgType(true_exp_copy) == NULL) ) 
  178438             :              { 
  178439           0 :                true_exp_copy->set_parent(result); 
  178440             :              } 
  178441             :   // case: not a listType for (using conditionalToSetParent)false_exp
  178442           0 :           if ( (false_exp_copy != NULL) && (false_exp_copy->get_parent() == NULL) && (isSgType(false_exp_copy) == NULL) ) 
  178443             :              { 
  178444           0 :                false_exp_copy->set_parent(result); 
  178445             :              } 
  178446             : 
  178447             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  178448             : 
  178449             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  178450             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  178451             :   // fixupCopy(result,help);
  178452             : 
  178453             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  178454             :   // the Sg_File_Info objects that are built for the new IR nodes.
  178455           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  178456           0 :      if (locatedNode != NULL)
  178457             :         {
  178458             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  178459           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  178460           0 :           ROSE_ASSERT(start != NULL);
  178461             : #if 0
  178462             :        // Debugging information
  178463             :           if (start->get_parent() == NULL)
  178464             :              {
  178465             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178466             :              }
  178467             : #endif
  178468           0 :           start->set_parent(locatedNode);
  178469           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  178470             : 
  178471           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  178472             : 
  178473             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  178474             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  178475             :        // ROSE_ASSERT(end != NULL);
  178476           0 :           if (end == NULL)
  178477             :              {
  178478           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  178479             :              }
  178480             :             else
  178481             :              {
  178482             : #if 0
  178483             :             // Debugging information
  178484             :                if (end->get_parent() == NULL)
  178485             :                   {
  178486             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178487             :                   }
  178488             : #endif
  178489           0 :                end->set_parent(locatedNode);
  178490           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  178491             :              }
  178492             : 
  178493           0 :           SgExpression* expression = isSgExpression(result);
  178494           0 :           if (isSgExpression(this) != NULL)
  178495             :              {
  178496           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  178497             : 
  178498             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  178499           0 :                if (operatorPosition != NULL)
  178500             :                   {
  178501             : #if 0
  178502             :                  // Debugging information
  178503             :                     if (operatorPosition->get_parent() == NULL)
  178504             :                        {
  178505             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178506             :                        }
  178507             : #endif
  178508           0 :                     operatorPosition->set_parent(expression);
  178509           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  178510             :                   }
  178511             :              }
  178512             :         }
  178513             : 
  178514             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  178515           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  178516           0 :      if (initializedName != NULL)
  178517             :         {
  178518             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  178519           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  178520           0 :           ROSE_ASSERT(start != NULL);
  178521             : #if 0
  178522             :        // Debugging information
  178523             :           if (start->get_parent() == NULL)
  178524             :              {
  178525             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178526             :              }
  178527             : #endif
  178528           0 :           start->set_parent(initializedName);
  178529           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  178530             : 
  178531             : #if 0
  178532             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  178533             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  178534             : 
  178535             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  178536             :        // ROSE_ASSERT(end != NULL);
  178537             :           if (end == NULL)
  178538             :              {
  178539             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  178540             :              }
  178541             :             else
  178542             :              {
  178543             :                if (end->get_parent() == NULL)
  178544             :                   {
  178545             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178546             :                   }
  178547             :                end->set_parent(initializedName);
  178548             :                ROSE_ASSERT(end->get_parent() != NULL);
  178549             :              }
  178550             : #endif
  178551             :         }
  178552             : 
  178553             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  178554           0 :      help.insertCopiedNodePair(this,result);
  178555             : 
  178556             :   // printf ("End of copy SgConditionalExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  178557             : 
  178558             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  178559             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  178560           0 :      help.decrementDepth();
  178561             : 
  178562             :   // Test if this is the root of the copy!
  178563           0 :      if (help.get_depth() == 0)
  178564             :         {
  178565             :        // This is the original calling node.
  178566             : 
  178567             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  178568             :        // printf ("Calling SgConditionalExp::fixupCopy() (from root of AST being copied) \n");
  178569             : #if ALT_FIXUP_COPY
  178570             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  178571           0 :           fixupCopy_scopes (result,help);
  178572           0 :           fixupCopy_symbols (result,help);
  178573           0 :           fixupCopy_references (result,help);
  178574             : #else
  178575             :           fixupCopy(result,help);
  178576             : #endif
  178577             :        // Allow this to be called recursively, so accumulate the state.
  178578             :        // Also, clear the state in the SgCopyHelp object.
  178579             :        // help.clearState();
  178580             :         }
  178581             : 
  178582           0 :      return result;
  178583             :    }
  178584             : 
  178585             : 
  178586             : /* #line 178587 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  178587             : 
  178588             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  178589             : 
  178590           0 : SgNode* SgNewExp::copy ( SgCopyHelp& help) const
  178591             :    {
  178592           0 :      SgNewExp* result = NULL;
  178593             : 
  178594             :   // printf ("Copy SgNewExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  178595             : 
  178596             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  178597             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  178598             :   // The default value of the depth is 0, so after this call the depth is 1!
  178599           0 :      help.incrementDepth();
  178600             : 
  178601             : #if 0
  178602             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  178603             :   // but it is not generally true that things can only be copied once!
  178604             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  178605             :   // AstAttribute* existingAttribute = const_cast<SgNewExp*>(this)->attribute["copied"];
  178606             :      bool previouslyCopied = const_cast<SgNewExp*>(this)->attribute.exists("copied");
  178607             :      if (previouslyCopied == true)
  178608             :         {
  178609             :           this->get_file_info()->display("Called from copy SgNewExp: debug");
  178610             :         }
  178611             :      ROSE_ASSERT(previouslyCopied == false);
  178612             : 
  178613             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  178614             :      AstAttribute* newAttribute = new AstAttribute();
  178615             :      ROSE_ASSERT(newAttribute != NULL);
  178616             : 
  178617             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  178618             :      const_cast<SgNewExp*>(this)->attribute.add("copied",newAttribute);
  178619             : #endif
  178620             : 
  178621             :   // Copy data members from base classes
  178622             :   // Copy constructor parameter data member: startOfConstruct_copy
  178623             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  178624             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  178625           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  178626           0 :      if ( p_startOfConstruct != NULL ) 
  178627             :         { 
  178628           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  178629             :         } 
  178630             :        else 
  178631             :         { 
  178632             :           startOfConstruct_copy = NULL; 
  178633             :         } 
  178634             :   // Copy constructor parameter data member: specified_type_copy
  178635             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for specified_type
  178636             :   // case: toBeCopied == COPY_DATA for specified_type
  178637           0 :      SgType* specified_type_copy = p_specified_type; 
  178638             :   // Copy constructor parameter data member: placement_args_copy
  178639           0 :      SgExprListExp* placement_args_copy; 
  178640             :   // case: not a listType for (using conditionalToCopyVariable)placement_args
  178641           0 :           if (get_placement_args() != NULL) 
  178642             :              { 
  178643           0 :                placement_args_copy = static_cast<SgExprListExp*>(help.copyAst(get_placement_args())); 
  178644             :              } 
  178645             :             else 
  178646             :              { 
  178647             :                placement_args_copy = NULL; 
  178648             :              } 
  178649             :   // Copy constructor parameter data member: constructor_args_copy
  178650           0 :      SgConstructorInitializer* constructor_args_copy; 
  178651             :   // case: not a listType for (using conditionalToCopyVariable)constructor_args
  178652           0 :           if (get_constructor_args() != NULL) 
  178653             :              { 
  178654           0 :                constructor_args_copy = static_cast<SgConstructorInitializer*>(help.copyAst(get_constructor_args())); 
  178655             :              } 
  178656             :             else 
  178657             :              { 
  178658             :                constructor_args_copy = NULL; 
  178659             :              } 
  178660             :   // Copy constructor parameter data member: builtin_args_copy
  178661           0 :      SgExpression* builtin_args_copy; 
  178662             :   // case: not a listType for (using conditionalToCopyVariable)builtin_args
  178663           0 :           if (get_builtin_args() != NULL) 
  178664             :              { 
  178665           0 :                builtin_args_copy = static_cast<SgExpression*>(help.copyAst(get_builtin_args())); 
  178666             :              } 
  178667             :             else 
  178668             :              { 
  178669             :                builtin_args_copy = NULL; 
  178670             :              } 
  178671             :   // Copy constructor parameter data member: need_global_specifier_copy
  178672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_global_specifier
  178673             :   // case: toBeCopied == COPY_DATA for need_global_specifier
  178674           0 :      short need_global_specifier_copy = p_need_global_specifier; 
  178675             :   // Copy constructor parameter data member: newOperatorDeclaration_copy
  178676             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for newOperatorDeclaration
  178677             :   // case: toBeCopied == COPY_DATA for newOperatorDeclaration
  178678           0 :      SgFunctionDeclaration* newOperatorDeclaration_copy = p_newOperatorDeclaration; 
  178679             :  
  178680             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  178681             : 
  178682             :   // Build an empty copy of this object (will be filled in, but 
  178683             :   // the parent can't be set and must be set by the caller)
  178684           0 :      result = new SgNewExp(  startOfConstruct_copy, specified_type_copy, placement_args_copy, constructor_args_copy, builtin_args_copy, need_global_specifier_copy, newOperatorDeclaration_copy );
  178685           0 :      ROSE_ASSERT(result != NULL);
  178686             : 
  178687             :   // Copy data members of "this" class
  178688             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  178689             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  178690             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  178691           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  178692           0 :      if ( p_endOfConstruct != NULL ) 
  178693             :         { 
  178694           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  178695             :         } 
  178696             :        else 
  178697             :         { 
  178698             :           endOfConstruct_copy = NULL; 
  178699             :         } 
  178700             :   /* check for a valid pointer and delete if present */ 
  178701           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  178702             :   /* add assignment to result here */ 
  178703           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  178704             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  178705             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  178706             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  178707           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  178708           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  178709             :         { 
  178710           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  178711             :         } 
  178712             :        else 
  178713             :         { 
  178714             :           attachedPreprocessingInfoPtr_copy = NULL; 
  178715             :         } 
  178716             :   /* check for a valid pointer and delete if present */ 
  178717           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  178718             :   /* add assignment to result here */ 
  178719           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  178720             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  178721             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  178722             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  178723           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  178724           0 :      if ( p_attributeMechanism != NULL ) 
  178725             :         { 
  178726           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  178727             :         } 
  178728             :        else 
  178729             :         { 
  178730             :           attributeMechanism_copy = NULL; 
  178731             :         } 
  178732             :   /* check for a valid pointer and delete if present */ 
  178733           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  178734             :   /* add assignment to result here */ 
  178735           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  178736             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  178737             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  178738             :   // case: toBeCopied == COPY_DATA for need_paren
  178739           0 :      bool need_paren_copy = p_need_paren; 
  178740           0 :      result->p_need_paren = need_paren_copy; 
  178741             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  178742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  178743             :   // case: toBeCopied == COPY_DATA for lvalue
  178744           0 :      bool lvalue_copy = p_lvalue; 
  178745           0 :      result->p_lvalue = lvalue_copy; 
  178746             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  178747             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  178748             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  178749           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  178750           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  178751             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  178752             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  178753             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  178754           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  178755           0 :      if ( p_operatorPosition != NULL ) 
  178756             :         { 
  178757           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  178758             :         } 
  178759             :        else 
  178760             :         { 
  178761             :           operatorPosition_copy = NULL; 
  178762             :         } 
  178763             :   /* check for a valid pointer and delete if present */ 
  178764           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  178765             :   /* add assignment to result here */ 
  178766           0 :      result->p_operatorPosition = operatorPosition_copy; 
  178767             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  178768             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  178769             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  178770           0 :      int name_qualification_length_copy = p_name_qualification_length; 
  178771           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
  178772             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  178773             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  178774             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  178775           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  178776           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  178777             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  178778             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  178779             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  178780           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
  178781           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
  178782             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_for_pointer_to_member_class_length
  178783             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_for_pointer_to_member_class_length
  178784             :   // case: toBeCopied == COPY_DATA for name_qualification_for_pointer_to_member_class_length
  178785           0 :      int name_qualification_for_pointer_to_member_class_length_copy = p_name_qualification_for_pointer_to_member_class_length; 
  178786           0 :      result->p_name_qualification_for_pointer_to_member_class_length = name_qualification_for_pointer_to_member_class_length_copy; 
  178787             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_for_pointer_to_member_class_required
  178788             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_for_pointer_to_member_class_required
  178789             :   // case: toBeCopied == COPY_DATA for type_elaboration_for_pointer_to_member_class_required
  178790           0 :      bool type_elaboration_for_pointer_to_member_class_required_copy = p_type_elaboration_for_pointer_to_member_class_required; 
  178791           0 :      result->p_type_elaboration_for_pointer_to_member_class_required = type_elaboration_for_pointer_to_member_class_required_copy; 
  178792             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_for_pointer_to_member_class_required
  178793             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_for_pointer_to_member_class_required
  178794             :   // case: toBeCopied == COPY_DATA for global_qualification_for_pointer_to_member_class_required
  178795           0 :      bool global_qualification_for_pointer_to_member_class_required_copy = p_global_qualification_for_pointer_to_member_class_required; 
  178796           0 :      result->p_global_qualification_for_pointer_to_member_class_required = global_qualification_for_pointer_to_member_class_required_copy; 
  178797             :   // case: not a listType for (using conditionalToSetParent)placement_args
  178798           0 :           if ( (placement_args_copy != NULL) && (placement_args_copy->get_parent() == NULL) && (isSgType(placement_args_copy) == NULL) ) 
  178799             :              { 
  178800           0 :                placement_args_copy->set_parent(result); 
  178801             :              } 
  178802             :   // case: not a listType for (using conditionalToSetParent)constructor_args
  178803           0 :           if ( (constructor_args_copy != NULL) && (constructor_args_copy->get_parent() == NULL) && (isSgType(constructor_args_copy) == NULL) ) 
  178804             :              { 
  178805           0 :                constructor_args_copy->set_parent(result); 
  178806             :              } 
  178807             :   // case: not a listType for (using conditionalToSetParent)builtin_args
  178808           0 :           if ( (builtin_args_copy != NULL) && (builtin_args_copy->get_parent() == NULL) && (isSgType(builtin_args_copy) == NULL) ) 
  178809             :              { 
  178810           0 :                builtin_args_copy->set_parent(result); 
  178811             :              } 
  178812             : 
  178813             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  178814             : 
  178815             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  178816             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  178817             :   // fixupCopy(result,help);
  178818             : 
  178819             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  178820             :   // the Sg_File_Info objects that are built for the new IR nodes.
  178821           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  178822           0 :      if (locatedNode != NULL)
  178823             :         {
  178824             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  178825           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  178826           0 :           ROSE_ASSERT(start != NULL);
  178827             : #if 0
  178828             :        // Debugging information
  178829             :           if (start->get_parent() == NULL)
  178830             :              {
  178831             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178832             :              }
  178833             : #endif
  178834           0 :           start->set_parent(locatedNode);
  178835           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  178836             : 
  178837           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  178838             : 
  178839             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  178840             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  178841             :        // ROSE_ASSERT(end != NULL);
  178842           0 :           if (end == NULL)
  178843             :              {
  178844           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  178845             :              }
  178846             :             else
  178847             :              {
  178848             : #if 0
  178849             :             // Debugging information
  178850             :                if (end->get_parent() == NULL)
  178851             :                   {
  178852             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178853             :                   }
  178854             : #endif
  178855           0 :                end->set_parent(locatedNode);
  178856           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  178857             :              }
  178858             : 
  178859           0 :           SgExpression* expression = isSgExpression(result);
  178860           0 :           if (isSgExpression(this) != NULL)
  178861             :              {
  178862           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  178863             : 
  178864             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  178865           0 :                if (operatorPosition != NULL)
  178866             :                   {
  178867             : #if 0
  178868             :                  // Debugging information
  178869             :                     if (operatorPosition->get_parent() == NULL)
  178870             :                        {
  178871             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178872             :                        }
  178873             : #endif
  178874           0 :                     operatorPosition->set_parent(expression);
  178875           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  178876             :                   }
  178877             :              }
  178878             :         }
  178879             : 
  178880             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  178881           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  178882           0 :      if (initializedName != NULL)
  178883             :         {
  178884             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  178885           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  178886           0 :           ROSE_ASSERT(start != NULL);
  178887             : #if 0
  178888             :        // Debugging information
  178889             :           if (start->get_parent() == NULL)
  178890             :              {
  178891             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178892             :              }
  178893             : #endif
  178894           0 :           start->set_parent(initializedName);
  178895           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  178896             : 
  178897             : #if 0
  178898             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  178899             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  178900             : 
  178901             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  178902             :        // ROSE_ASSERT(end != NULL);
  178903             :           if (end == NULL)
  178904             :              {
  178905             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  178906             :              }
  178907             :             else
  178908             :              {
  178909             :                if (end->get_parent() == NULL)
  178910             :                   {
  178911             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  178912             :                   }
  178913             :                end->set_parent(initializedName);
  178914             :                ROSE_ASSERT(end->get_parent() != NULL);
  178915             :              }
  178916             : #endif
  178917             :         }
  178918             : 
  178919             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  178920           0 :      help.insertCopiedNodePair(this,result);
  178921             : 
  178922             :   // printf ("End of copy SgNewExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  178923             : 
  178924             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  178925             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  178926           0 :      help.decrementDepth();
  178927             : 
  178928             :   // Test if this is the root of the copy!
  178929           0 :      if (help.get_depth() == 0)
  178930             :         {
  178931             :        // This is the original calling node.
  178932             : 
  178933             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  178934             :        // printf ("Calling SgNewExp::fixupCopy() (from root of AST being copied) \n");
  178935             : #if ALT_FIXUP_COPY
  178936             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  178937           0 :           fixupCopy_scopes (result,help);
  178938           0 :           fixupCopy_symbols (result,help);
  178939           0 :           fixupCopy_references (result,help);
  178940             : #else
  178941             :           fixupCopy(result,help);
  178942             : #endif
  178943             :        // Allow this to be called recursively, so accumulate the state.
  178944             :        // Also, clear the state in the SgCopyHelp object.
  178945             :        // help.clearState();
  178946             :         }
  178947             : 
  178948           0 :      return result;
  178949             :    }
  178950             : 
  178951             : 
  178952             : /* #line 178953 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  178953             : 
  178954             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  178955             : 
  178956           0 : SgNode* SgDeleteExp::copy ( SgCopyHelp& help) const
  178957             :    {
  178958           0 :      SgDeleteExp* result = NULL;
  178959             : 
  178960             :   // printf ("Copy SgDeleteExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  178961             : 
  178962             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  178963             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  178964             :   // The default value of the depth is 0, so after this call the depth is 1!
  178965           0 :      help.incrementDepth();
  178966             : 
  178967             : #if 0
  178968             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  178969             :   // but it is not generally true that things can only be copied once!
  178970             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  178971             :   // AstAttribute* existingAttribute = const_cast<SgDeleteExp*>(this)->attribute["copied"];
  178972             :      bool previouslyCopied = const_cast<SgDeleteExp*>(this)->attribute.exists("copied");
  178973             :      if (previouslyCopied == true)
  178974             :         {
  178975             :           this->get_file_info()->display("Called from copy SgDeleteExp: debug");
  178976             :         }
  178977             :      ROSE_ASSERT(previouslyCopied == false);
  178978             : 
  178979             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  178980             :      AstAttribute* newAttribute = new AstAttribute();
  178981             :      ROSE_ASSERT(newAttribute != NULL);
  178982             : 
  178983             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  178984             :      const_cast<SgDeleteExp*>(this)->attribute.add("copied",newAttribute);
  178985             : #endif
  178986             : 
  178987             :   // Copy data members from base classes
  178988             :   // Copy constructor parameter data member: startOfConstruct_copy
  178989             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  178990             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  178991           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  178992           0 :      if ( p_startOfConstruct != NULL ) 
  178993             :         { 
  178994           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  178995             :         } 
  178996             :        else 
  178997             :         { 
  178998             :           startOfConstruct_copy = NULL; 
  178999             :         } 
  179000             :   // Copy constructor parameter data member: variable_copy
  179001           0 :      SgExpression* variable_copy; 
  179002             :   // case: not a listType for (using conditionalToCopyVariable)variable
  179003           0 :           if (get_variable() != NULL) 
  179004             :              { 
  179005           0 :                variable_copy = static_cast<SgExpression*>(help.copyAst(get_variable())); 
  179006             :              } 
  179007             :             else 
  179008             :              { 
  179009             :                variable_copy = NULL; 
  179010             :              } 
  179011             :   // Copy constructor parameter data member: is_array_copy
  179012             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_array
  179013             :   // case: toBeCopied == COPY_DATA for is_array
  179014           0 :      short is_array_copy = p_is_array; 
  179015             :   // Copy constructor parameter data member: need_global_specifier_copy
  179016             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_global_specifier
  179017             :   // case: toBeCopied == COPY_DATA for need_global_specifier
  179018           0 :      short need_global_specifier_copy = p_need_global_specifier; 
  179019             :   // Copy constructor parameter data member: deleteOperatorDeclaration_copy
  179020             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for deleteOperatorDeclaration
  179021             :   // case: toBeCopied == COPY_DATA for deleteOperatorDeclaration
  179022           0 :      SgFunctionDeclaration* deleteOperatorDeclaration_copy = p_deleteOperatorDeclaration; 
  179023             :  
  179024             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179025             : 
  179026             :   // Build an empty copy of this object (will be filled in, but 
  179027             :   // the parent can't be set and must be set by the caller)
  179028           0 :      result = new SgDeleteExp(  startOfConstruct_copy, variable_copy, is_array_copy, need_global_specifier_copy, deleteOperatorDeclaration_copy );
  179029           0 :      ROSE_ASSERT(result != NULL);
  179030             : 
  179031             :   // Copy data members of "this" class
  179032             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  179033             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  179034             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  179035           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  179036           0 :      if ( p_endOfConstruct != NULL ) 
  179037             :         { 
  179038           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  179039             :         } 
  179040             :        else 
  179041             :         { 
  179042             :           endOfConstruct_copy = NULL; 
  179043             :         } 
  179044             :   /* check for a valid pointer and delete if present */ 
  179045           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  179046             :   /* add assignment to result here */ 
  179047           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  179048             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  179049             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  179050             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  179051           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  179052           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  179053             :         { 
  179054           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  179055             :         } 
  179056             :        else 
  179057             :         { 
  179058             :           attachedPreprocessingInfoPtr_copy = NULL; 
  179059             :         } 
  179060             :   /* check for a valid pointer and delete if present */ 
  179061           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  179062             :   /* add assignment to result here */ 
  179063           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  179064             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  179065             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  179066             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  179067           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  179068           0 :      if ( p_attributeMechanism != NULL ) 
  179069             :         { 
  179070           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  179071             :         } 
  179072             :        else 
  179073             :         { 
  179074             :           attributeMechanism_copy = NULL; 
  179075             :         } 
  179076             :   /* check for a valid pointer and delete if present */ 
  179077           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  179078             :   /* add assignment to result here */ 
  179079           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  179080             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  179081             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  179082             :   // case: toBeCopied == COPY_DATA for need_paren
  179083           0 :      bool need_paren_copy = p_need_paren; 
  179084           0 :      result->p_need_paren = need_paren_copy; 
  179085             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  179086             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  179087             :   // case: toBeCopied == COPY_DATA for lvalue
  179088           0 :      bool lvalue_copy = p_lvalue; 
  179089           0 :      result->p_lvalue = lvalue_copy; 
  179090             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  179091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  179092             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  179093           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  179094           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  179095             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  179096             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  179097             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  179098           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  179099           0 :      if ( p_operatorPosition != NULL ) 
  179100             :         { 
  179101           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  179102             :         } 
  179103             :        else 
  179104             :         { 
  179105             :           operatorPosition_copy = NULL; 
  179106             :         } 
  179107             :   /* check for a valid pointer and delete if present */ 
  179108           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  179109             :   /* add assignment to result here */ 
  179110           0 :      result->p_operatorPosition = operatorPosition_copy; 
  179111             :   // case: not a listType for (using conditionalToSetParent)variable
  179112           0 :           if ( (variable_copy != NULL) && (variable_copy->get_parent() == NULL) && (isSgType(variable_copy) == NULL) ) 
  179113             :              { 
  179114           0 :                variable_copy->set_parent(result); 
  179115             :              } 
  179116             : 
  179117             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179118             : 
  179119             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  179120             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  179121             :   // fixupCopy(result,help);
  179122             : 
  179123             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  179124             :   // the Sg_File_Info objects that are built for the new IR nodes.
  179125           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  179126           0 :      if (locatedNode != NULL)
  179127             :         {
  179128             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  179129           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  179130           0 :           ROSE_ASSERT(start != NULL);
  179131             : #if 0
  179132             :        // Debugging information
  179133             :           if (start->get_parent() == NULL)
  179134             :              {
  179135             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179136             :              }
  179137             : #endif
  179138           0 :           start->set_parent(locatedNode);
  179139           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  179140             : 
  179141           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  179142             : 
  179143             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  179144             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  179145             :        // ROSE_ASSERT(end != NULL);
  179146           0 :           if (end == NULL)
  179147             :              {
  179148           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  179149             :              }
  179150             :             else
  179151             :              {
  179152             : #if 0
  179153             :             // Debugging information
  179154             :                if (end->get_parent() == NULL)
  179155             :                   {
  179156             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179157             :                   }
  179158             : #endif
  179159           0 :                end->set_parent(locatedNode);
  179160           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  179161             :              }
  179162             : 
  179163           0 :           SgExpression* expression = isSgExpression(result);
  179164           0 :           if (isSgExpression(this) != NULL)
  179165             :              {
  179166           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  179167             : 
  179168             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  179169           0 :                if (operatorPosition != NULL)
  179170             :                   {
  179171             : #if 0
  179172             :                  // Debugging information
  179173             :                     if (operatorPosition->get_parent() == NULL)
  179174             :                        {
  179175             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179176             :                        }
  179177             : #endif
  179178           0 :                     operatorPosition->set_parent(expression);
  179179           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  179180             :                   }
  179181             :              }
  179182             :         }
  179183             : 
  179184             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  179185           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  179186           0 :      if (initializedName != NULL)
  179187             :         {
  179188             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  179189           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  179190           0 :           ROSE_ASSERT(start != NULL);
  179191             : #if 0
  179192             :        // Debugging information
  179193             :           if (start->get_parent() == NULL)
  179194             :              {
  179195             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179196             :              }
  179197             : #endif
  179198           0 :           start->set_parent(initializedName);
  179199           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  179200             : 
  179201             : #if 0
  179202             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  179203             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  179204             : 
  179205             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  179206             :        // ROSE_ASSERT(end != NULL);
  179207             :           if (end == NULL)
  179208             :              {
  179209             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  179210             :              }
  179211             :             else
  179212             :              {
  179213             :                if (end->get_parent() == NULL)
  179214             :                   {
  179215             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179216             :                   }
  179217             :                end->set_parent(initializedName);
  179218             :                ROSE_ASSERT(end->get_parent() != NULL);
  179219             :              }
  179220             : #endif
  179221             :         }
  179222             : 
  179223             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  179224           0 :      help.insertCopiedNodePair(this,result);
  179225             : 
  179226             :   // printf ("End of copy SgDeleteExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  179227             : 
  179228             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  179229             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  179230           0 :      help.decrementDepth();
  179231             : 
  179232             :   // Test if this is the root of the copy!
  179233           0 :      if (help.get_depth() == 0)
  179234             :         {
  179235             :        // This is the original calling node.
  179236             : 
  179237             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  179238             :        // printf ("Calling SgDeleteExp::fixupCopy() (from root of AST being copied) \n");
  179239             : #if ALT_FIXUP_COPY
  179240             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  179241           0 :           fixupCopy_scopes (result,help);
  179242           0 :           fixupCopy_symbols (result,help);
  179243           0 :           fixupCopy_references (result,help);
  179244             : #else
  179245             :           fixupCopy(result,help);
  179246             : #endif
  179247             :        // Allow this to be called recursively, so accumulate the state.
  179248             :        // Also, clear the state in the SgCopyHelp object.
  179249             :        // help.clearState();
  179250             :         }
  179251             : 
  179252           0 :      return result;
  179253             :    }
  179254             : 
  179255             : 
  179256             : /* #line 179257 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  179257             : 
  179258             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179259             : 
  179260         260 : SgNode* SgThisExp::copy ( SgCopyHelp& help) const
  179261             :    {
  179262         260 :      SgThisExp* result = NULL;
  179263             : 
  179264             :   // printf ("Copy SgThisExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  179265             : 
  179266             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  179267             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  179268             :   // The default value of the depth is 0, so after this call the depth is 1!
  179269         260 :      help.incrementDepth();
  179270             : 
  179271             : #if 0
  179272             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  179273             :   // but it is not generally true that things can only be copied once!
  179274             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  179275             :   // AstAttribute* existingAttribute = const_cast<SgThisExp*>(this)->attribute["copied"];
  179276             :      bool previouslyCopied = const_cast<SgThisExp*>(this)->attribute.exists("copied");
  179277             :      if (previouslyCopied == true)
  179278             :         {
  179279             :           this->get_file_info()->display("Called from copy SgThisExp: debug");
  179280             :         }
  179281             :      ROSE_ASSERT(previouslyCopied == false);
  179282             : 
  179283             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  179284             :      AstAttribute* newAttribute = new AstAttribute();
  179285             :      ROSE_ASSERT(newAttribute != NULL);
  179286             : 
  179287             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  179288             :      const_cast<SgThisExp*>(this)->attribute.add("copied",newAttribute);
  179289             : #endif
  179290             : 
  179291             :   // Copy data members from base classes
  179292             :   // Copy constructor parameter data member: startOfConstruct_copy
  179293             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  179294             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  179295         260 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  179296         260 :      if ( p_startOfConstruct != NULL ) 
  179297             :         { 
  179298         260 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  179299             :         } 
  179300             :        else 
  179301             :         { 
  179302             :           startOfConstruct_copy = NULL; 
  179303             :         } 
  179304             :   // Copy constructor parameter data member: class_symbol_copy
  179305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_symbol
  179306             :   // case: toBeCopied == COPY_DATA for class_symbol
  179307         260 :      SgClassSymbol* class_symbol_copy = p_class_symbol; 
  179308             :   // Copy constructor parameter data member: nonreal_symbol_copy
  179309             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for nonreal_symbol
  179310             :   // case: toBeCopied == COPY_DATA for nonreal_symbol
  179311         260 :      SgNonrealSymbol* nonreal_symbol_copy = p_nonreal_symbol; 
  179312             :   // Copy constructor parameter data member: pobj_this_copy
  179313             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for pobj_this
  179314             :   // case: toBeCopied == COPY_DATA for pobj_this
  179315         260 :      int pobj_this_copy = p_pobj_this; 
  179316             :  
  179317             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179318             : 
  179319             :   // Build an empty copy of this object (will be filled in, but 
  179320             :   // the parent can't be set and must be set by the caller)
  179321         260 :      result = new SgThisExp(  startOfConstruct_copy, class_symbol_copy, nonreal_symbol_copy, pobj_this_copy );
  179322         260 :      ROSE_ASSERT(result != NULL);
  179323             : 
  179324             :   // Copy data members of "this" class
  179325             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  179326             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  179327             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  179328         260 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  179329         260 :      if ( p_endOfConstruct != NULL ) 
  179330             :         { 
  179331         260 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  179332             :         } 
  179333             :        else 
  179334             :         { 
  179335             :           endOfConstruct_copy = NULL; 
  179336             :         } 
  179337             :   /* check for a valid pointer and delete if present */ 
  179338         260 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  179339             :   /* add assignment to result here */ 
  179340         260 :      result->p_endOfConstruct = endOfConstruct_copy; 
  179341             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  179342             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  179343             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  179344         260 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  179345         260 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  179346             :         { 
  179347           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  179348             :         } 
  179349             :        else 
  179350             :         { 
  179351             :           attachedPreprocessingInfoPtr_copy = NULL; 
  179352             :         } 
  179353             :   /* check for a valid pointer and delete if present */ 
  179354         260 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  179355             :   /* add assignment to result here */ 
  179356         260 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  179357             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  179358             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  179359             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  179360         260 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  179361         260 :      if ( p_attributeMechanism != NULL ) 
  179362             :         { 
  179363           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  179364             :         } 
  179365             :        else 
  179366             :         { 
  179367             :           attributeMechanism_copy = NULL; 
  179368             :         } 
  179369             :   /* check for a valid pointer and delete if present */ 
  179370         260 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  179371             :   /* add assignment to result here */ 
  179372         260 :      result->p_attributeMechanism = attributeMechanism_copy; 
  179373             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  179374             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  179375             :   // case: toBeCopied == COPY_DATA for need_paren
  179376         260 :      bool need_paren_copy = p_need_paren; 
  179377         260 :      result->p_need_paren = need_paren_copy; 
  179378             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  179379             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  179380             :   // case: toBeCopied == COPY_DATA for lvalue
  179381         260 :      bool lvalue_copy = p_lvalue; 
  179382         260 :      result->p_lvalue = lvalue_copy; 
  179383             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  179384             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  179385             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  179386         260 :      bool global_qualified_name_copy = p_global_qualified_name; 
  179387         260 :      result->p_global_qualified_name = global_qualified_name_copy; 
  179388             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  179389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  179390             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  179391         260 :      Sg_File_Info* operatorPosition_copy = NULL; 
  179392         260 :      if ( p_operatorPosition != NULL ) 
  179393             :         { 
  179394         260 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  179395             :         } 
  179396             :        else 
  179397             :         { 
  179398             :           operatorPosition_copy = NULL; 
  179399             :         } 
  179400             :   /* check for a valid pointer and delete if present */ 
  179401         260 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  179402             :   /* add assignment to result here */ 
  179403         260 :      result->p_operatorPosition = operatorPosition_copy; 
  179404             : 
  179405             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179406             : 
  179407             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  179408             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  179409             :   // fixupCopy(result,help);
  179410             : 
  179411             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  179412             :   // the Sg_File_Info objects that are built for the new IR nodes.
  179413         260 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  179414         260 :      if (locatedNode != NULL)
  179415             :         {
  179416             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  179417         260 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  179418         260 :           ROSE_ASSERT(start != NULL);
  179419             : #if 0
  179420             :        // Debugging information
  179421             :           if (start->get_parent() == NULL)
  179422             :              {
  179423             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179424             :              }
  179425             : #endif
  179426         260 :           start->set_parent(locatedNode);
  179427         260 :           ROSE_ASSERT(start->get_parent() != NULL);
  179428             : 
  179429         260 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  179430             : 
  179431             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  179432             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  179433             :        // ROSE_ASSERT(end != NULL);
  179434         260 :           if (end == NULL)
  179435             :              {
  179436           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  179437             :              }
  179438             :             else
  179439             :              {
  179440             : #if 0
  179441             :             // Debugging information
  179442             :                if (end->get_parent() == NULL)
  179443             :                   {
  179444             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179445             :                   }
  179446             : #endif
  179447         260 :                end->set_parent(locatedNode);
  179448         260 :                ROSE_ASSERT(end->get_parent() != NULL);
  179449             :              }
  179450             : 
  179451         260 :           SgExpression* expression = isSgExpression(result);
  179452         260 :           if (isSgExpression(this) != NULL)
  179453             :              {
  179454         260 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  179455             : 
  179456             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  179457         260 :                if (operatorPosition != NULL)
  179458             :                   {
  179459             : #if 0
  179460             :                  // Debugging information
  179461             :                     if (operatorPosition->get_parent() == NULL)
  179462             :                        {
  179463             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179464             :                        }
  179465             : #endif
  179466         260 :                     operatorPosition->set_parent(expression);
  179467         260 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  179468             :                   }
  179469             :              }
  179470             :         }
  179471             : 
  179472             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  179473         260 :      SgInitializedName* initializedName = isSgInitializedName(result);
  179474         260 :      if (initializedName != NULL)
  179475             :         {
  179476             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  179477           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  179478           0 :           ROSE_ASSERT(start != NULL);
  179479             : #if 0
  179480             :        // Debugging information
  179481             :           if (start->get_parent() == NULL)
  179482             :              {
  179483             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179484             :              }
  179485             : #endif
  179486           0 :           start->set_parent(initializedName);
  179487           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  179488             : 
  179489             : #if 0
  179490             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  179491             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  179492             : 
  179493             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  179494             :        // ROSE_ASSERT(end != NULL);
  179495             :           if (end == NULL)
  179496             :              {
  179497             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  179498             :              }
  179499             :             else
  179500             :              {
  179501             :                if (end->get_parent() == NULL)
  179502             :                   {
  179503             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179504             :                   }
  179505             :                end->set_parent(initializedName);
  179506             :                ROSE_ASSERT(end->get_parent() != NULL);
  179507             :              }
  179508             : #endif
  179509             :         }
  179510             : 
  179511             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  179512         260 :      help.insertCopiedNodePair(this,result);
  179513             : 
  179514             :   // printf ("End of copy SgThisExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  179515             : 
  179516             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  179517             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  179518         260 :      help.decrementDepth();
  179519             : 
  179520             :   // Test if this is the root of the copy!
  179521         260 :      if (help.get_depth() == 0)
  179522             :         {
  179523             :        // This is the original calling node.
  179524             : 
  179525             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  179526             :        // printf ("Calling SgThisExp::fixupCopy() (from root of AST being copied) \n");
  179527             : #if ALT_FIXUP_COPY
  179528             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  179529           0 :           fixupCopy_scopes (result,help);
  179530           0 :           fixupCopy_symbols (result,help);
  179531           0 :           fixupCopy_references (result,help);
  179532             : #else
  179533             :           fixupCopy(result,help);
  179534             : #endif
  179535             :        // Allow this to be called recursively, so accumulate the state.
  179536             :        // Also, clear the state in the SgCopyHelp object.
  179537             :        // help.clearState();
  179538             :         }
  179539             : 
  179540         260 :      return result;
  179541             :    }
  179542             : 
  179543             : 
  179544             : /* #line 179545 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  179545             : 
  179546             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179547             : 
  179548           0 : SgNode* SgRefExp::copy ( SgCopyHelp& help) const
  179549             :    {
  179550           0 :      SgRefExp* result = NULL;
  179551             : 
  179552             :   // printf ("Copy SgRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  179553             : 
  179554             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  179555             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  179556             :   // The default value of the depth is 0, so after this call the depth is 1!
  179557           0 :      help.incrementDepth();
  179558             : 
  179559             : #if 0
  179560             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  179561             :   // but it is not generally true that things can only be copied once!
  179562             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  179563             :   // AstAttribute* existingAttribute = const_cast<SgRefExp*>(this)->attribute["copied"];
  179564             :      bool previouslyCopied = const_cast<SgRefExp*>(this)->attribute.exists("copied");
  179565             :      if (previouslyCopied == true)
  179566             :         {
  179567             :           this->get_file_info()->display("Called from copy SgRefExp: debug");
  179568             :         }
  179569             :      ROSE_ASSERT(previouslyCopied == false);
  179570             : 
  179571             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  179572             :      AstAttribute* newAttribute = new AstAttribute();
  179573             :      ROSE_ASSERT(newAttribute != NULL);
  179574             : 
  179575             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  179576             :      const_cast<SgRefExp*>(this)->attribute.add("copied",newAttribute);
  179577             : #endif
  179578             : 
  179579             :   // Copy data members from base classes
  179580             :   // Copy constructor parameter data member: startOfConstruct_copy
  179581             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  179582             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  179583           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  179584           0 :      if ( p_startOfConstruct != NULL ) 
  179585             :         { 
  179586           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  179587             :         } 
  179588             :        else 
  179589             :         { 
  179590             :           startOfConstruct_copy = NULL; 
  179591             :         } 
  179592             :   // Copy constructor parameter data member: type_name_copy
  179593             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_name
  179594             :   // case: toBeCopied == COPY_DATA for type_name
  179595           0 :      SgType* type_name_copy = p_type_name; 
  179596             :  
  179597             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179598             : 
  179599             :   // Build an empty copy of this object (will be filled in, but 
  179600             :   // the parent can't be set and must be set by the caller)
  179601           0 :      result = new SgRefExp(  startOfConstruct_copy, type_name_copy );
  179602           0 :      ROSE_ASSERT(result != NULL);
  179603             : 
  179604             :   // Copy data members of "this" class
  179605             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  179606             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  179607             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  179608           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  179609           0 :      if ( p_endOfConstruct != NULL ) 
  179610             :         { 
  179611           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  179612             :         } 
  179613             :        else 
  179614             :         { 
  179615             :           endOfConstruct_copy = NULL; 
  179616             :         } 
  179617             :   /* check for a valid pointer and delete if present */ 
  179618           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  179619             :   /* add assignment to result here */ 
  179620           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  179621             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  179622             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  179623             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  179624           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  179625           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  179626             :         { 
  179627           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  179628             :         } 
  179629             :        else 
  179630             :         { 
  179631             :           attachedPreprocessingInfoPtr_copy = NULL; 
  179632             :         } 
  179633             :   /* check for a valid pointer and delete if present */ 
  179634           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  179635             :   /* add assignment to result here */ 
  179636           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  179637             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  179638             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  179639             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  179640           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  179641           0 :      if ( p_attributeMechanism != NULL ) 
  179642             :         { 
  179643           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  179644             :         } 
  179645             :        else 
  179646             :         { 
  179647             :           attributeMechanism_copy = NULL; 
  179648             :         } 
  179649             :   /* check for a valid pointer and delete if present */ 
  179650           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  179651             :   /* add assignment to result here */ 
  179652           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  179653             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  179654             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  179655             :   // case: toBeCopied == COPY_DATA for need_paren
  179656           0 :      bool need_paren_copy = p_need_paren; 
  179657           0 :      result->p_need_paren = need_paren_copy; 
  179658             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  179659             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  179660             :   // case: toBeCopied == COPY_DATA for lvalue
  179661           0 :      bool lvalue_copy = p_lvalue; 
  179662           0 :      result->p_lvalue = lvalue_copy; 
  179663             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  179664             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  179665             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  179666           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  179667           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  179668             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  179669             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  179670             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  179671           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  179672           0 :      if ( p_operatorPosition != NULL ) 
  179673             :         { 
  179674           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  179675             :         } 
  179676             :        else 
  179677             :         { 
  179678             :           operatorPosition_copy = NULL; 
  179679             :         } 
  179680             :   /* check for a valid pointer and delete if present */ 
  179681           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  179682             :   /* add assignment to result here */ 
  179683           0 :      result->p_operatorPosition = operatorPosition_copy; 
  179684             : 
  179685             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179686             : 
  179687             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  179688             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  179689             :   // fixupCopy(result,help);
  179690             : 
  179691             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  179692             :   // the Sg_File_Info objects that are built for the new IR nodes.
  179693           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  179694           0 :      if (locatedNode != NULL)
  179695             :         {
  179696             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  179697           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  179698           0 :           ROSE_ASSERT(start != NULL);
  179699             : #if 0
  179700             :        // Debugging information
  179701             :           if (start->get_parent() == NULL)
  179702             :              {
  179703             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179704             :              }
  179705             : #endif
  179706           0 :           start->set_parent(locatedNode);
  179707           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  179708             : 
  179709           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  179710             : 
  179711             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  179712             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  179713             :        // ROSE_ASSERT(end != NULL);
  179714           0 :           if (end == NULL)
  179715             :              {
  179716           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  179717             :              }
  179718             :             else
  179719             :              {
  179720             : #if 0
  179721             :             // Debugging information
  179722             :                if (end->get_parent() == NULL)
  179723             :                   {
  179724             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179725             :                   }
  179726             : #endif
  179727           0 :                end->set_parent(locatedNode);
  179728           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  179729             :              }
  179730             : 
  179731           0 :           SgExpression* expression = isSgExpression(result);
  179732           0 :           if (isSgExpression(this) != NULL)
  179733             :              {
  179734           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  179735             : 
  179736             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  179737           0 :                if (operatorPosition != NULL)
  179738             :                   {
  179739             : #if 0
  179740             :                  // Debugging information
  179741             :                     if (operatorPosition->get_parent() == NULL)
  179742             :                        {
  179743             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179744             :                        }
  179745             : #endif
  179746           0 :                     operatorPosition->set_parent(expression);
  179747           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  179748             :                   }
  179749             :              }
  179750             :         }
  179751             : 
  179752             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  179753           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  179754           0 :      if (initializedName != NULL)
  179755             :         {
  179756             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  179757           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  179758           0 :           ROSE_ASSERT(start != NULL);
  179759             : #if 0
  179760             :        // Debugging information
  179761             :           if (start->get_parent() == NULL)
  179762             :              {
  179763             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179764             :              }
  179765             : #endif
  179766           0 :           start->set_parent(initializedName);
  179767           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  179768             : 
  179769             : #if 0
  179770             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  179771             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  179772             : 
  179773             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  179774             :        // ROSE_ASSERT(end != NULL);
  179775             :           if (end == NULL)
  179776             :              {
  179777             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  179778             :              }
  179779             :             else
  179780             :              {
  179781             :                if (end->get_parent() == NULL)
  179782             :                   {
  179783             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179784             :                   }
  179785             :                end->set_parent(initializedName);
  179786             :                ROSE_ASSERT(end->get_parent() != NULL);
  179787             :              }
  179788             : #endif
  179789             :         }
  179790             : 
  179791             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  179792           0 :      help.insertCopiedNodePair(this,result);
  179793             : 
  179794             :   // printf ("End of copy SgRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  179795             : 
  179796             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  179797             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  179798           0 :      help.decrementDepth();
  179799             : 
  179800             :   // Test if this is the root of the copy!
  179801           0 :      if (help.get_depth() == 0)
  179802             :         {
  179803             :        // This is the original calling node.
  179804             : 
  179805             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  179806             :        // printf ("Calling SgRefExp::fixupCopy() (from root of AST being copied) \n");
  179807             : #if ALT_FIXUP_COPY
  179808             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  179809           0 :           fixupCopy_scopes (result,help);
  179810           0 :           fixupCopy_symbols (result,help);
  179811           0 :           fixupCopy_references (result,help);
  179812             : #else
  179813             :           fixupCopy(result,help);
  179814             : #endif
  179815             :        // Allow this to be called recursively, so accumulate the state.
  179816             :        // Also, clear the state in the SgCopyHelp object.
  179817             :        // help.clearState();
  179818             :         }
  179819             : 
  179820           0 :      return result;
  179821             :    }
  179822             : 
  179823             : 
  179824             : /* #line 179825 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  179825             : 
  179826             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179827             : 
  179828           0 : SgNode* SgInitializer::copy ( SgCopyHelp& help) const
  179829             :    {
  179830           0 :      SgInitializer* result = NULL;
  179831             : 
  179832             :   // printf ("Copy SgInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  179833             : 
  179834             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  179835             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  179836             :   // The default value of the depth is 0, so after this call the depth is 1!
  179837           0 :      help.incrementDepth();
  179838             : 
  179839             : #if 0
  179840             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  179841             :   // but it is not generally true that things can only be copied once!
  179842             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  179843             :   // AstAttribute* existingAttribute = const_cast<SgInitializer*>(this)->attribute["copied"];
  179844             :      bool previouslyCopied = const_cast<SgInitializer*>(this)->attribute.exists("copied");
  179845             :      if (previouslyCopied == true)
  179846             :         {
  179847             :           this->get_file_info()->display("Called from copy SgInitializer: debug");
  179848             :         }
  179849             :      ROSE_ASSERT(previouslyCopied == false);
  179850             : 
  179851             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  179852             :      AstAttribute* newAttribute = new AstAttribute();
  179853             :      ROSE_ASSERT(newAttribute != NULL);
  179854             : 
  179855             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  179856             :      const_cast<SgInitializer*>(this)->attribute.add("copied",newAttribute);
  179857             : #endif
  179858             : 
  179859             :   // Copy data members from base classes
  179860             :   // Copy constructor parameter data member: startOfConstruct_copy
  179861             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  179862             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  179863           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  179864           0 :      if ( p_startOfConstruct != NULL ) 
  179865             :         { 
  179866           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  179867             :         } 
  179868             :        else 
  179869             :         { 
  179870             :           startOfConstruct_copy = NULL; 
  179871             :         } 
  179872             :  
  179873             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179874             : 
  179875             :   // Build an empty copy of this object (will be filled in, but 
  179876             :   // the parent can't be set and must be set by the caller)
  179877           0 :      result = new SgInitializer(  startOfConstruct_copy );
  179878           0 :      ROSE_ASSERT(result != NULL);
  179879             : 
  179880             :   // Copy data members of "this" class
  179881             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  179882             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  179883             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  179884           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  179885           0 :      if ( p_endOfConstruct != NULL ) 
  179886             :         { 
  179887           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  179888             :         } 
  179889             :        else 
  179890             :         { 
  179891             :           endOfConstruct_copy = NULL; 
  179892             :         } 
  179893             :   /* check for a valid pointer and delete if present */ 
  179894           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  179895             :   /* add assignment to result here */ 
  179896           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  179897             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  179898             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  179899             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  179900           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  179901           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  179902             :         { 
  179903           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  179904             :         } 
  179905             :        else 
  179906             :         { 
  179907             :           attachedPreprocessingInfoPtr_copy = NULL; 
  179908             :         } 
  179909             :   /* check for a valid pointer and delete if present */ 
  179910           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  179911             :   /* add assignment to result here */ 
  179912           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  179913             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  179914             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  179915             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  179916           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  179917           0 :      if ( p_attributeMechanism != NULL ) 
  179918             :         { 
  179919           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  179920             :         } 
  179921             :        else 
  179922             :         { 
  179923             :           attributeMechanism_copy = NULL; 
  179924             :         } 
  179925             :   /* check for a valid pointer and delete if present */ 
  179926           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  179927             :   /* add assignment to result here */ 
  179928           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  179929             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  179930             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  179931             :   // case: toBeCopied == COPY_DATA for need_paren
  179932           0 :      bool need_paren_copy = p_need_paren; 
  179933           0 :      result->p_need_paren = need_paren_copy; 
  179934             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  179935             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  179936             :   // case: toBeCopied == COPY_DATA for lvalue
  179937           0 :      bool lvalue_copy = p_lvalue; 
  179938           0 :      result->p_lvalue = lvalue_copy; 
  179939             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  179940             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  179941             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  179942           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  179943           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  179944             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  179945             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  179946             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  179947           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  179948           0 :      if ( p_operatorPosition != NULL ) 
  179949             :         { 
  179950           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  179951             :         } 
  179952             :        else 
  179953             :         { 
  179954             :           operatorPosition_copy = NULL; 
  179955             :         } 
  179956             :   /* check for a valid pointer and delete if present */ 
  179957           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  179958             :   /* add assignment to result here */ 
  179959           0 :      result->p_operatorPosition = operatorPosition_copy; 
  179960             :   // Copy non-constructor parameter data member (access function): is_explicit_cast_copy
  179961             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_explicit_cast
  179962             :   // case: toBeCopied == COPY_DATA for is_explicit_cast
  179963           0 :      bool is_explicit_cast_copy = p_is_explicit_cast; 
  179964           0 :      result->p_is_explicit_cast = is_explicit_cast_copy; 
  179965             :   // Copy non-constructor parameter data member (access function): is_braced_initialized_copy
  179966             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_braced_initialized
  179967             :   // case: toBeCopied == COPY_DATA for is_braced_initialized
  179968           0 :      bool is_braced_initialized_copy = p_is_braced_initialized; 
  179969           0 :      result->p_is_braced_initialized = is_braced_initialized_copy; 
  179970             : 
  179971             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  179972             : 
  179973             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  179974             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  179975             :   // fixupCopy(result,help);
  179976             : 
  179977             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  179978             :   // the Sg_File_Info objects that are built for the new IR nodes.
  179979           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  179980           0 :      if (locatedNode != NULL)
  179981             :         {
  179982             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  179983           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  179984           0 :           ROSE_ASSERT(start != NULL);
  179985             : #if 0
  179986             :        // Debugging information
  179987             :           if (start->get_parent() == NULL)
  179988             :              {
  179989             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  179990             :              }
  179991             : #endif
  179992           0 :           start->set_parent(locatedNode);
  179993           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  179994             : 
  179995           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  179996             : 
  179997             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  179998             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  179999             :        // ROSE_ASSERT(end != NULL);
  180000           0 :           if (end == NULL)
  180001             :              {
  180002           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  180003             :              }
  180004             :             else
  180005             :              {
  180006             : #if 0
  180007             :             // Debugging information
  180008             :                if (end->get_parent() == NULL)
  180009             :                   {
  180010             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180011             :                   }
  180012             : #endif
  180013           0 :                end->set_parent(locatedNode);
  180014           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  180015             :              }
  180016             : 
  180017           0 :           SgExpression* expression = isSgExpression(result);
  180018           0 :           if (isSgExpression(this) != NULL)
  180019             :              {
  180020           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  180021             : 
  180022             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  180023           0 :                if (operatorPosition != NULL)
  180024             :                   {
  180025             : #if 0
  180026             :                  // Debugging information
  180027             :                     if (operatorPosition->get_parent() == NULL)
  180028             :                        {
  180029             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180030             :                        }
  180031             : #endif
  180032           0 :                     operatorPosition->set_parent(expression);
  180033           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  180034             :                   }
  180035             :              }
  180036             :         }
  180037             : 
  180038             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  180039           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  180040           0 :      if (initializedName != NULL)
  180041             :         {
  180042             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  180043           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  180044           0 :           ROSE_ASSERT(start != NULL);
  180045             : #if 0
  180046             :        // Debugging information
  180047             :           if (start->get_parent() == NULL)
  180048             :              {
  180049             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180050             :              }
  180051             : #endif
  180052           0 :           start->set_parent(initializedName);
  180053           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  180054             : 
  180055             : #if 0
  180056             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  180057             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  180058             : 
  180059             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  180060             :        // ROSE_ASSERT(end != NULL);
  180061             :           if (end == NULL)
  180062             :              {
  180063             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  180064             :              }
  180065             :             else
  180066             :              {
  180067             :                if (end->get_parent() == NULL)
  180068             :                   {
  180069             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180070             :                   }
  180071             :                end->set_parent(initializedName);
  180072             :                ROSE_ASSERT(end->get_parent() != NULL);
  180073             :              }
  180074             : #endif
  180075             :         }
  180076             : 
  180077             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  180078           0 :      help.insertCopiedNodePair(this,result);
  180079             : 
  180080             :   // printf ("End of copy SgInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  180081             : 
  180082             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  180083             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  180084           0 :      help.decrementDepth();
  180085             : 
  180086             :   // Test if this is the root of the copy!
  180087           0 :      if (help.get_depth() == 0)
  180088             :         {
  180089             :        // This is the original calling node.
  180090             : 
  180091             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  180092             :        // printf ("Calling SgInitializer::fixupCopy() (from root of AST being copied) \n");
  180093             : #if ALT_FIXUP_COPY
  180094             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  180095           0 :           fixupCopy_scopes (result,help);
  180096           0 :           fixupCopy_symbols (result,help);
  180097           0 :           fixupCopy_references (result,help);
  180098             : #else
  180099             :           fixupCopy(result,help);
  180100             : #endif
  180101             :        // Allow this to be called recursively, so accumulate the state.
  180102             :        // Also, clear the state in the SgCopyHelp object.
  180103             :        // help.clearState();
  180104             :         }
  180105             : 
  180106           0 :      return result;
  180107             :    }
  180108             : 
  180109             : 
  180110             : /* #line 180111 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  180111             : 
  180112             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  180113             : 
  180114           0 : SgNode* SgAggregateInitializer::copy ( SgCopyHelp& help) const
  180115             :    {
  180116           0 :      SgAggregateInitializer* result = NULL;
  180117             : 
  180118             :   // printf ("Copy SgAggregateInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  180119             : 
  180120             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  180121             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  180122             :   // The default value of the depth is 0, so after this call the depth is 1!
  180123           0 :      help.incrementDepth();
  180124             : 
  180125             : #if 0
  180126             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  180127             :   // but it is not generally true that things can only be copied once!
  180128             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  180129             :   // AstAttribute* existingAttribute = const_cast<SgAggregateInitializer*>(this)->attribute["copied"];
  180130             :      bool previouslyCopied = const_cast<SgAggregateInitializer*>(this)->attribute.exists("copied");
  180131             :      if (previouslyCopied == true)
  180132             :         {
  180133             :           this->get_file_info()->display("Called from copy SgAggregateInitializer: debug");
  180134             :         }
  180135             :      ROSE_ASSERT(previouslyCopied == false);
  180136             : 
  180137             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  180138             :      AstAttribute* newAttribute = new AstAttribute();
  180139             :      ROSE_ASSERT(newAttribute != NULL);
  180140             : 
  180141             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  180142             :      const_cast<SgAggregateInitializer*>(this)->attribute.add("copied",newAttribute);
  180143             : #endif
  180144             : 
  180145             :   // Copy data members from base classes
  180146             :   // Copy constructor parameter data member: startOfConstruct_copy
  180147             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  180148             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  180149           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  180150           0 :      if ( p_startOfConstruct != NULL ) 
  180151             :         { 
  180152           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  180153             :         } 
  180154             :        else 
  180155             :         { 
  180156             :           startOfConstruct_copy = NULL; 
  180157             :         } 
  180158             :   // Copy constructor parameter data member: initializers_copy
  180159           0 :      SgExprListExp* initializers_copy; 
  180160             :   // case: not a listType for (using conditionalToCopyVariable)initializers
  180161           0 :           if (get_initializers() != NULL) 
  180162             :              { 
  180163           0 :                initializers_copy = static_cast<SgExprListExp*>(help.copyAst(get_initializers())); 
  180164             :              } 
  180165             :             else 
  180166             :              { 
  180167             :                initializers_copy = NULL; 
  180168             :              } 
  180169             :   // Copy constructor parameter data member: expression_type_copy
  180170             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  180171             :   // case: toBeCopied == COPY_DATA for expression_type
  180172           0 :      SgType* expression_type_copy = p_expression_type; 
  180173             :  
  180174             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  180175             : 
  180176             :   // Build an empty copy of this object (will be filled in, but 
  180177             :   // the parent can't be set and must be set by the caller)
  180178           0 :      result = new SgAggregateInitializer(  startOfConstruct_copy, initializers_copy, expression_type_copy );
  180179           0 :      ROSE_ASSERT(result != NULL);
  180180             : 
  180181             :   // Copy data members of "this" class
  180182             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  180183             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  180184             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  180185           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  180186           0 :      if ( p_endOfConstruct != NULL ) 
  180187             :         { 
  180188           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  180189             :         } 
  180190             :        else 
  180191             :         { 
  180192             :           endOfConstruct_copy = NULL; 
  180193             :         } 
  180194             :   /* check for a valid pointer and delete if present */ 
  180195           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  180196             :   /* add assignment to result here */ 
  180197           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  180198             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  180199             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  180200             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  180201           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  180202           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  180203             :         { 
  180204           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  180205             :         } 
  180206             :        else 
  180207             :         { 
  180208             :           attachedPreprocessingInfoPtr_copy = NULL; 
  180209             :         } 
  180210             :   /* check for a valid pointer and delete if present */ 
  180211           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  180212             :   /* add assignment to result here */ 
  180213           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  180214             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  180215             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  180216             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  180217           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  180218           0 :      if ( p_attributeMechanism != NULL ) 
  180219             :         { 
  180220           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  180221             :         } 
  180222             :        else 
  180223             :         { 
  180224             :           attributeMechanism_copy = NULL; 
  180225             :         } 
  180226             :   /* check for a valid pointer and delete if present */ 
  180227           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  180228             :   /* add assignment to result here */ 
  180229           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  180230             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  180231             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  180232             :   // case: toBeCopied == COPY_DATA for need_paren
  180233           0 :      bool need_paren_copy = p_need_paren; 
  180234           0 :      result->p_need_paren = need_paren_copy; 
  180235             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  180236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  180237             :   // case: toBeCopied == COPY_DATA for lvalue
  180238           0 :      bool lvalue_copy = p_lvalue; 
  180239           0 :      result->p_lvalue = lvalue_copy; 
  180240             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  180241             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  180242             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  180243           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  180244           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  180245             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  180246             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  180247             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  180248           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  180249           0 :      if ( p_operatorPosition != NULL ) 
  180250             :         { 
  180251           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  180252             :         } 
  180253             :        else 
  180254             :         { 
  180255             :           operatorPosition_copy = NULL; 
  180256             :         } 
  180257             :   /* check for a valid pointer and delete if present */ 
  180258           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  180259             :   /* add assignment to result here */ 
  180260           0 :      result->p_operatorPosition = operatorPosition_copy; 
  180261             :   // Copy non-constructor parameter data member (access function): is_explicit_cast_copy
  180262             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_explicit_cast
  180263             :   // case: toBeCopied == COPY_DATA for is_explicit_cast
  180264           0 :      bool is_explicit_cast_copy = p_is_explicit_cast; 
  180265           0 :      result->p_is_explicit_cast = is_explicit_cast_copy; 
  180266             :   // Copy non-constructor parameter data member (access function): is_braced_initialized_copy
  180267             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_braced_initialized
  180268             :   // case: toBeCopied == COPY_DATA for is_braced_initialized
  180269           0 :      bool is_braced_initialized_copy = p_is_braced_initialized; 
  180270           0 :      result->p_is_braced_initialized = is_braced_initialized_copy; 
  180271             :   // Copy non-constructor parameter data member (access function): need_explicit_braces_copy
  180272             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_explicit_braces
  180273             :   // case: toBeCopied == COPY_DATA for need_explicit_braces
  180274           0 :      bool need_explicit_braces_copy = p_need_explicit_braces; 
  180275           0 :      result->p_need_explicit_braces = need_explicit_braces_copy; 
  180276             :   // Copy non-constructor parameter data member (access function): uses_compound_literal_copy
  180277             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for uses_compound_literal
  180278             :   // case: toBeCopied == COPY_DATA for uses_compound_literal
  180279           0 :      bool uses_compound_literal_copy = p_uses_compound_literal; 
  180280           0 :      result->p_uses_compound_literal = uses_compound_literal_copy; 
  180281             :   // Copy non-constructor parameter data member (no access function): result->p_requiresGlobalNameQualificationOnType
  180282             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for requiresGlobalNameQualificationOnType
  180283             :   // case: toBeCopied == COPY_DATA for requiresGlobalNameQualificationOnType
  180284           0 :      bool requiresGlobalNameQualificationOnType_copy = p_requiresGlobalNameQualificationOnType; 
  180285           0 :      result->p_requiresGlobalNameQualificationOnType = requiresGlobalNameQualificationOnType_copy; 
  180286             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length_for_type
  180287             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length_for_type
  180288             :   // case: toBeCopied == COPY_DATA for name_qualification_length_for_type
  180289           0 :      int name_qualification_length_for_type_copy = p_name_qualification_length_for_type; 
  180290           0 :      result->p_name_qualification_length_for_type = name_qualification_length_for_type_copy; 
  180291             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required_for_type
  180292             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required_for_type
  180293             :   // case: toBeCopied == COPY_DATA for type_elaboration_required_for_type
  180294           0 :      bool type_elaboration_required_for_type_copy = p_type_elaboration_required_for_type; 
  180295           0 :      result->p_type_elaboration_required_for_type = type_elaboration_required_for_type_copy; 
  180296             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required_for_type
  180297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required_for_type
  180298             :   // case: toBeCopied == COPY_DATA for global_qualification_required_for_type
  180299           0 :      bool global_qualification_required_for_type_copy = p_global_qualification_required_for_type; 
  180300           0 :      result->p_global_qualification_required_for_type = global_qualification_required_for_type_copy; 
  180301             :   // Copy non-constructor parameter data member (access function): originalExpressionTree_copy
  180302             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for originalExpressionTree
  180303             :   // case: toBeCopied == COPY_DATA for originalExpressionTree
  180304           0 :      SgExpression* originalExpressionTree_copy = p_originalExpressionTree; 
  180305           0 :      result->p_originalExpressionTree = originalExpressionTree_copy; 
  180306             :   // case: not a listType for (using conditionalToSetParent)initializers
  180307           0 :           if ( (initializers_copy != NULL) && (initializers_copy->get_parent() == NULL) && (isSgType(initializers_copy) == NULL) ) 
  180308             :              { 
  180309           0 :                initializers_copy->set_parent(result); 
  180310             :              } 
  180311             : 
  180312             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  180313             : 
  180314             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  180315             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  180316             :   // fixupCopy(result,help);
  180317             : 
  180318             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  180319             :   // the Sg_File_Info objects that are built for the new IR nodes.
  180320           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  180321           0 :      if (locatedNode != NULL)
  180322             :         {
  180323             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  180324           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  180325           0 :           ROSE_ASSERT(start != NULL);
  180326             : #if 0
  180327             :        // Debugging information
  180328             :           if (start->get_parent() == NULL)
  180329             :              {
  180330             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180331             :              }
  180332             : #endif
  180333           0 :           start->set_parent(locatedNode);
  180334           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  180335             : 
  180336           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  180337             : 
  180338             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  180339             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  180340             :        // ROSE_ASSERT(end != NULL);
  180341           0 :           if (end == NULL)
  180342             :              {
  180343           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  180344             :              }
  180345             :             else
  180346             :              {
  180347             : #if 0
  180348             :             // Debugging information
  180349             :                if (end->get_parent() == NULL)
  180350             :                   {
  180351             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180352             :                   }
  180353             : #endif
  180354           0 :                end->set_parent(locatedNode);
  180355           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  180356             :              }
  180357             : 
  180358           0 :           SgExpression* expression = isSgExpression(result);
  180359           0 :           if (isSgExpression(this) != NULL)
  180360             :              {
  180361           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  180362             : 
  180363             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  180364           0 :                if (operatorPosition != NULL)
  180365             :                   {
  180366             : #if 0
  180367             :                  // Debugging information
  180368             :                     if (operatorPosition->get_parent() == NULL)
  180369             :                        {
  180370             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180371             :                        }
  180372             : #endif
  180373           0 :                     operatorPosition->set_parent(expression);
  180374           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  180375             :                   }
  180376             :              }
  180377             :         }
  180378             : 
  180379             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  180380           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  180381           0 :      if (initializedName != NULL)
  180382             :         {
  180383             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  180384           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  180385           0 :           ROSE_ASSERT(start != NULL);
  180386             : #if 0
  180387             :        // Debugging information
  180388             :           if (start->get_parent() == NULL)
  180389             :              {
  180390             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180391             :              }
  180392             : #endif
  180393           0 :           start->set_parent(initializedName);
  180394           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  180395             : 
  180396             : #if 0
  180397             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  180398             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  180399             : 
  180400             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  180401             :        // ROSE_ASSERT(end != NULL);
  180402             :           if (end == NULL)
  180403             :              {
  180404             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  180405             :              }
  180406             :             else
  180407             :              {
  180408             :                if (end->get_parent() == NULL)
  180409             :                   {
  180410             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180411             :                   }
  180412             :                end->set_parent(initializedName);
  180413             :                ROSE_ASSERT(end->get_parent() != NULL);
  180414             :              }
  180415             : #endif
  180416             :         }
  180417             : 
  180418             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  180419           0 :      help.insertCopiedNodePair(this,result);
  180420             : 
  180421             :   // printf ("End of copy SgAggregateInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  180422             : 
  180423             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  180424             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  180425           0 :      help.decrementDepth();
  180426             : 
  180427             :   // Test if this is the root of the copy!
  180428           0 :      if (help.get_depth() == 0)
  180429             :         {
  180430             :        // This is the original calling node.
  180431             : 
  180432             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  180433             :        // printf ("Calling SgAggregateInitializer::fixupCopy() (from root of AST being copied) \n");
  180434             : #if ALT_FIXUP_COPY
  180435             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  180436           0 :           fixupCopy_scopes (result,help);
  180437           0 :           fixupCopy_symbols (result,help);
  180438           0 :           fixupCopy_references (result,help);
  180439             : #else
  180440             :           fixupCopy(result,help);
  180441             : #endif
  180442             :        // Allow this to be called recursively, so accumulate the state.
  180443             :        // Also, clear the state in the SgCopyHelp object.
  180444             :        // help.clearState();
  180445             :         }
  180446             : 
  180447           0 :      return result;
  180448             :    }
  180449             : 
  180450             : 
  180451             : /* #line 180452 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  180452             : 
  180453             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  180454             : 
  180455           0 : SgNode* SgCompoundInitializer::copy ( SgCopyHelp& help) const
  180456             :    {
  180457           0 :      SgCompoundInitializer* result = NULL;
  180458             : 
  180459             :   // printf ("Copy SgCompoundInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  180460             : 
  180461             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  180462             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  180463             :   // The default value of the depth is 0, so after this call the depth is 1!
  180464           0 :      help.incrementDepth();
  180465             : 
  180466             : #if 0
  180467             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  180468             :   // but it is not generally true that things can only be copied once!
  180469             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  180470             :   // AstAttribute* existingAttribute = const_cast<SgCompoundInitializer*>(this)->attribute["copied"];
  180471             :      bool previouslyCopied = const_cast<SgCompoundInitializer*>(this)->attribute.exists("copied");
  180472             :      if (previouslyCopied == true)
  180473             :         {
  180474             :           this->get_file_info()->display("Called from copy SgCompoundInitializer: debug");
  180475             :         }
  180476             :      ROSE_ASSERT(previouslyCopied == false);
  180477             : 
  180478             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  180479             :      AstAttribute* newAttribute = new AstAttribute();
  180480             :      ROSE_ASSERT(newAttribute != NULL);
  180481             : 
  180482             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  180483             :      const_cast<SgCompoundInitializer*>(this)->attribute.add("copied",newAttribute);
  180484             : #endif
  180485             : 
  180486             :   // Copy data members from base classes
  180487             :   // Copy constructor parameter data member: startOfConstruct_copy
  180488             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  180489             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  180490           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  180491           0 :      if ( p_startOfConstruct != NULL ) 
  180492             :         { 
  180493           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  180494             :         } 
  180495             :        else 
  180496             :         { 
  180497             :           startOfConstruct_copy = NULL; 
  180498             :         } 
  180499             :   // Copy constructor parameter data member: initializers_copy
  180500           0 :      SgExprListExp* initializers_copy; 
  180501             :   // case: not a listType for (using conditionalToCopyVariable)initializers
  180502           0 :           if (get_initializers() != NULL) 
  180503             :              { 
  180504           0 :                initializers_copy = static_cast<SgExprListExp*>(help.copyAst(get_initializers())); 
  180505             :              } 
  180506             :             else 
  180507             :              { 
  180508             :                initializers_copy = NULL; 
  180509             :              } 
  180510             :   // Copy constructor parameter data member: expression_type_copy
  180511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  180512             :   // case: toBeCopied == COPY_DATA for expression_type
  180513           0 :      SgType* expression_type_copy = p_expression_type; 
  180514             :  
  180515             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  180516             : 
  180517             :   // Build an empty copy of this object (will be filled in, but 
  180518             :   // the parent can't be set and must be set by the caller)
  180519           0 :      result = new SgCompoundInitializer(  startOfConstruct_copy, initializers_copy, expression_type_copy );
  180520           0 :      ROSE_ASSERT(result != NULL);
  180521             : 
  180522             :   // Copy data members of "this" class
  180523             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  180524             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  180525             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  180526           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  180527           0 :      if ( p_endOfConstruct != NULL ) 
  180528             :         { 
  180529           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  180530             :         } 
  180531             :        else 
  180532             :         { 
  180533             :           endOfConstruct_copy = NULL; 
  180534             :         } 
  180535             :   /* check for a valid pointer and delete if present */ 
  180536           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  180537             :   /* add assignment to result here */ 
  180538           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  180539             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  180540             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  180541             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  180542           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  180543           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  180544             :         { 
  180545           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  180546             :         } 
  180547             :        else 
  180548             :         { 
  180549             :           attachedPreprocessingInfoPtr_copy = NULL; 
  180550             :         } 
  180551             :   /* check for a valid pointer and delete if present */ 
  180552           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  180553             :   /* add assignment to result here */ 
  180554           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  180555             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  180556             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  180557             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  180558           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  180559           0 :      if ( p_attributeMechanism != NULL ) 
  180560             :         { 
  180561           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  180562             :         } 
  180563             :        else 
  180564             :         { 
  180565             :           attributeMechanism_copy = NULL; 
  180566             :         } 
  180567             :   /* check for a valid pointer and delete if present */ 
  180568           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  180569             :   /* add assignment to result here */ 
  180570           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  180571             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  180572             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  180573             :   // case: toBeCopied == COPY_DATA for need_paren
  180574           0 :      bool need_paren_copy = p_need_paren; 
  180575           0 :      result->p_need_paren = need_paren_copy; 
  180576             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  180577             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  180578             :   // case: toBeCopied == COPY_DATA for lvalue
  180579           0 :      bool lvalue_copy = p_lvalue; 
  180580           0 :      result->p_lvalue = lvalue_copy; 
  180581             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  180582             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  180583             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  180584           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  180585           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  180586             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  180587             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  180588             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  180589           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  180590           0 :      if ( p_operatorPosition != NULL ) 
  180591             :         { 
  180592           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  180593             :         } 
  180594             :        else 
  180595             :         { 
  180596             :           operatorPosition_copy = NULL; 
  180597             :         } 
  180598             :   /* check for a valid pointer and delete if present */ 
  180599           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  180600             :   /* add assignment to result here */ 
  180601           0 :      result->p_operatorPosition = operatorPosition_copy; 
  180602             :   // Copy non-constructor parameter data member (access function): is_explicit_cast_copy
  180603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_explicit_cast
  180604             :   // case: toBeCopied == COPY_DATA for is_explicit_cast
  180605           0 :      bool is_explicit_cast_copy = p_is_explicit_cast; 
  180606           0 :      result->p_is_explicit_cast = is_explicit_cast_copy; 
  180607             :   // Copy non-constructor parameter data member (access function): is_braced_initialized_copy
  180608             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_braced_initialized
  180609             :   // case: toBeCopied == COPY_DATA for is_braced_initialized
  180610           0 :      bool is_braced_initialized_copy = p_is_braced_initialized; 
  180611           0 :      result->p_is_braced_initialized = is_braced_initialized_copy; 
  180612             :   // case: not a listType for (using conditionalToSetParent)initializers
  180613           0 :           if ( (initializers_copy != NULL) && (initializers_copy->get_parent() == NULL) && (isSgType(initializers_copy) == NULL) ) 
  180614             :              { 
  180615           0 :                initializers_copy->set_parent(result); 
  180616             :              } 
  180617             : 
  180618             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  180619             : 
  180620             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  180621             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  180622             :   // fixupCopy(result,help);
  180623             : 
  180624             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  180625             :   // the Sg_File_Info objects that are built for the new IR nodes.
  180626           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  180627           0 :      if (locatedNode != NULL)
  180628             :         {
  180629             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  180630           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  180631           0 :           ROSE_ASSERT(start != NULL);
  180632             : #if 0
  180633             :        // Debugging information
  180634             :           if (start->get_parent() == NULL)
  180635             :              {
  180636             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180637             :              }
  180638             : #endif
  180639           0 :           start->set_parent(locatedNode);
  180640           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  180641             : 
  180642           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  180643             : 
  180644             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  180645             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  180646             :        // ROSE_ASSERT(end != NULL);
  180647           0 :           if (end == NULL)
  180648             :              {
  180649           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  180650             :              }
  180651             :             else
  180652             :              {
  180653             : #if 0
  180654             :             // Debugging information
  180655             :                if (end->get_parent() == NULL)
  180656             :                   {
  180657             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180658             :                   }
  180659             : #endif
  180660           0 :                end->set_parent(locatedNode);
  180661           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  180662             :              }
  180663             : 
  180664           0 :           SgExpression* expression = isSgExpression(result);
  180665           0 :           if (isSgExpression(this) != NULL)
  180666             :              {
  180667           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  180668             : 
  180669             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  180670           0 :                if (operatorPosition != NULL)
  180671             :                   {
  180672             : #if 0
  180673             :                  // Debugging information
  180674             :                     if (operatorPosition->get_parent() == NULL)
  180675             :                        {
  180676             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180677             :                        }
  180678             : #endif
  180679           0 :                     operatorPosition->set_parent(expression);
  180680           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  180681             :                   }
  180682             :              }
  180683             :         }
  180684             : 
  180685             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  180686           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  180687           0 :      if (initializedName != NULL)
  180688             :         {
  180689             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  180690           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  180691           0 :           ROSE_ASSERT(start != NULL);
  180692             : #if 0
  180693             :        // Debugging information
  180694             :           if (start->get_parent() == NULL)
  180695             :              {
  180696             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180697             :              }
  180698             : #endif
  180699           0 :           start->set_parent(initializedName);
  180700           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  180701             : 
  180702             : #if 0
  180703             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  180704             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  180705             : 
  180706             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  180707             :        // ROSE_ASSERT(end != NULL);
  180708             :           if (end == NULL)
  180709             :              {
  180710             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  180711             :              }
  180712             :             else
  180713             :              {
  180714             :                if (end->get_parent() == NULL)
  180715             :                   {
  180716             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180717             :                   }
  180718             :                end->set_parent(initializedName);
  180719             :                ROSE_ASSERT(end->get_parent() != NULL);
  180720             :              }
  180721             : #endif
  180722             :         }
  180723             : 
  180724             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  180725           0 :      help.insertCopiedNodePair(this,result);
  180726             : 
  180727             :   // printf ("End of copy SgCompoundInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  180728             : 
  180729             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  180730             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  180731           0 :      help.decrementDepth();
  180732             : 
  180733             :   // Test if this is the root of the copy!
  180734           0 :      if (help.get_depth() == 0)
  180735             :         {
  180736             :        // This is the original calling node.
  180737             : 
  180738             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  180739             :        // printf ("Calling SgCompoundInitializer::fixupCopy() (from root of AST being copied) \n");
  180740             : #if ALT_FIXUP_COPY
  180741             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  180742           0 :           fixupCopy_scopes (result,help);
  180743           0 :           fixupCopy_symbols (result,help);
  180744           0 :           fixupCopy_references (result,help);
  180745             : #else
  180746             :           fixupCopy(result,help);
  180747             : #endif
  180748             :        // Allow this to be called recursively, so accumulate the state.
  180749             :        // Also, clear the state in the SgCopyHelp object.
  180750             :        // help.clearState();
  180751             :         }
  180752             : 
  180753           0 :      return result;
  180754             :    }
  180755             : 
  180756             : 
  180757             : /* #line 180758 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  180758             : 
  180759             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  180760             : 
  180761          38 : SgNode* SgConstructorInitializer::copy ( SgCopyHelp& help) const
  180762             :    {
  180763          38 :      SgConstructorInitializer* result = NULL;
  180764             : 
  180765             :   // printf ("Copy SgConstructorInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  180766             : 
  180767             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  180768             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  180769             :   // The default value of the depth is 0, so after this call the depth is 1!
  180770          38 :      help.incrementDepth();
  180771             : 
  180772             : #if 0
  180773             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  180774             :   // but it is not generally true that things can only be copied once!
  180775             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  180776             :   // AstAttribute* existingAttribute = const_cast<SgConstructorInitializer*>(this)->attribute["copied"];
  180777             :      bool previouslyCopied = const_cast<SgConstructorInitializer*>(this)->attribute.exists("copied");
  180778             :      if (previouslyCopied == true)
  180779             :         {
  180780             :           this->get_file_info()->display("Called from copy SgConstructorInitializer: debug");
  180781             :         }
  180782             :      ROSE_ASSERT(previouslyCopied == false);
  180783             : 
  180784             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  180785             :      AstAttribute* newAttribute = new AstAttribute();
  180786             :      ROSE_ASSERT(newAttribute != NULL);
  180787             : 
  180788             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  180789             :      const_cast<SgConstructorInitializer*>(this)->attribute.add("copied",newAttribute);
  180790             : #endif
  180791             : 
  180792             :   // Copy data members from base classes
  180793             :   // Copy constructor parameter data member: startOfConstruct_copy
  180794             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  180795             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  180796          38 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  180797          38 :      if ( p_startOfConstruct != NULL ) 
  180798             :         { 
  180799          38 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  180800             :         } 
  180801             :        else 
  180802             :         { 
  180803             :           startOfConstruct_copy = NULL; 
  180804             :         } 
  180805             :   // Copy constructor parameter data member: declaration_copy
  180806             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration
  180807             :   // case: toBeCopied == COPY_DATA for declaration
  180808          38 :      SgMemberFunctionDeclaration* declaration_copy = p_declaration; 
  180809             :   // Copy constructor parameter data member: args_copy
  180810          38 :      SgExprListExp* args_copy; 
  180811             :   // case: not a listType for (using conditionalToCopyVariable)args
  180812          38 :           if (get_args() != NULL) 
  180813             :              { 
  180814          38 :                args_copy = static_cast<SgExprListExp*>(help.copyAst(get_args())); 
  180815             :              } 
  180816             :             else 
  180817             :              { 
  180818             :                args_copy = NULL; 
  180819             :              } 
  180820             :   // Copy constructor parameter data member: expression_type_copy
  180821             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  180822             :   // case: toBeCopied == COPY_DATA for expression_type
  180823          38 :      SgType* expression_type_copy = p_expression_type; 
  180824             :   // Copy constructor parameter data member: need_name_copy
  180825             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_name
  180826             :   // case: toBeCopied == COPY_DATA for need_name
  180827          38 :      bool need_name_copy = p_need_name; 
  180828             :   // Copy constructor parameter data member: need_qualifier_copy
  180829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_qualifier
  180830             :   // case: toBeCopied == COPY_DATA for need_qualifier
  180831          38 :      bool need_qualifier_copy = p_need_qualifier; 
  180832             :   // Copy constructor parameter data member: need_parenthesis_after_name_copy
  180833             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_parenthesis_after_name
  180834             :   // case: toBeCopied == COPY_DATA for need_parenthesis_after_name
  180835          38 :      bool need_parenthesis_after_name_copy = p_need_parenthesis_after_name; 
  180836             :   // Copy constructor parameter data member: associated_class_unknown_copy
  180837             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for associated_class_unknown
  180838             :   // case: toBeCopied == COPY_DATA for associated_class_unknown
  180839          38 :      bool associated_class_unknown_copy = p_associated_class_unknown; 
  180840             :  
  180841             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  180842             : 
  180843             :   // Build an empty copy of this object (will be filled in, but 
  180844             :   // the parent can't be set and must be set by the caller)
  180845          38 :      result = new SgConstructorInitializer(  startOfConstruct_copy, declaration_copy, args_copy, expression_type_copy, need_name_copy, need_qualifier_copy, need_parenthesis_after_name_copy, associated_class_unknown_copy );
  180846          38 :      ROSE_ASSERT(result != NULL);
  180847             : 
  180848             :   // Copy data members of "this" class
  180849             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  180850             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  180851             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  180852          38 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  180853          38 :      if ( p_endOfConstruct != NULL ) 
  180854             :         { 
  180855          38 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  180856             :         } 
  180857             :        else 
  180858             :         { 
  180859             :           endOfConstruct_copy = NULL; 
  180860             :         } 
  180861             :   /* check for a valid pointer and delete if present */ 
  180862          38 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  180863             :   /* add assignment to result here */ 
  180864          38 :      result->p_endOfConstruct = endOfConstruct_copy; 
  180865             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  180866             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  180867             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  180868          38 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  180869          38 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  180870             :         { 
  180871           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  180872             :         } 
  180873             :        else 
  180874             :         { 
  180875             :           attachedPreprocessingInfoPtr_copy = NULL; 
  180876             :         } 
  180877             :   /* check for a valid pointer and delete if present */ 
  180878          38 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  180879             :   /* add assignment to result here */ 
  180880          38 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  180881             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  180882             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  180883             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  180884          38 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  180885          38 :      if ( p_attributeMechanism != NULL ) 
  180886             :         { 
  180887           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  180888             :         } 
  180889             :        else 
  180890             :         { 
  180891             :           attributeMechanism_copy = NULL; 
  180892             :         } 
  180893             :   /* check for a valid pointer and delete if present */ 
  180894          38 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  180895             :   /* add assignment to result here */ 
  180896          38 :      result->p_attributeMechanism = attributeMechanism_copy; 
  180897             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  180898             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  180899             :   // case: toBeCopied == COPY_DATA for need_paren
  180900          38 :      bool need_paren_copy = p_need_paren; 
  180901          38 :      result->p_need_paren = need_paren_copy; 
  180902             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  180903             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  180904             :   // case: toBeCopied == COPY_DATA for lvalue
  180905          38 :      bool lvalue_copy = p_lvalue; 
  180906          38 :      result->p_lvalue = lvalue_copy; 
  180907             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  180908             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  180909             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  180910          38 :      bool global_qualified_name_copy = p_global_qualified_name; 
  180911          38 :      result->p_global_qualified_name = global_qualified_name_copy; 
  180912             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  180913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  180914             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  180915          38 :      Sg_File_Info* operatorPosition_copy = NULL; 
  180916          38 :      if ( p_operatorPosition != NULL ) 
  180917             :         { 
  180918          38 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  180919             :         } 
  180920             :        else 
  180921             :         { 
  180922             :           operatorPosition_copy = NULL; 
  180923             :         } 
  180924             :   /* check for a valid pointer and delete if present */ 
  180925          38 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  180926             :   /* add assignment to result here */ 
  180927          38 :      result->p_operatorPosition = operatorPosition_copy; 
  180928             :   // Copy non-constructor parameter data member (access function): is_explicit_cast_copy
  180929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_explicit_cast
  180930             :   // case: toBeCopied == COPY_DATA for is_explicit_cast
  180931          38 :      bool is_explicit_cast_copy = p_is_explicit_cast; 
  180932          38 :      result->p_is_explicit_cast = is_explicit_cast_copy; 
  180933             :   // Copy non-constructor parameter data member (access function): is_braced_initialized_copy
  180934             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_braced_initialized
  180935             :   // case: toBeCopied == COPY_DATA for is_braced_initialized
  180936          38 :      bool is_braced_initialized_copy = p_is_braced_initialized; 
  180937          38 :      result->p_is_braced_initialized = is_braced_initialized_copy; 
  180938             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  180939             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  180940             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  180941          38 :      int name_qualification_length_copy = p_name_qualification_length; 
  180942          38 :      result->p_name_qualification_length = name_qualification_length_copy; 
  180943             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  180944             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  180945             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  180946          38 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  180947          38 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  180948             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  180949             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  180950             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  180951          38 :      bool global_qualification_required_copy = p_global_qualification_required; 
  180952          38 :      result->p_global_qualification_required = global_qualification_required_copy; 
  180953             :   // Copy non-constructor parameter data member (access function): is_used_in_conditional_copy
  180954             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_used_in_conditional
  180955             :   // case: toBeCopied == COPY_DATA for is_used_in_conditional
  180956          38 :      bool is_used_in_conditional_copy = p_is_used_in_conditional; 
  180957          38 :      result->p_is_used_in_conditional = is_used_in_conditional_copy; 
  180958             :   // case: not a listType for (using conditionalToSetParent)args
  180959          38 :           if ( (args_copy != NULL) && (args_copy->get_parent() == NULL) && (isSgType(args_copy) == NULL) ) 
  180960             :              { 
  180961           0 :                args_copy->set_parent(result); 
  180962             :              } 
  180963             : 
  180964             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  180965             : 
  180966             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  180967             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  180968             :   // fixupCopy(result,help);
  180969             : 
  180970             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  180971             :   // the Sg_File_Info objects that are built for the new IR nodes.
  180972          38 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  180973          38 :      if (locatedNode != NULL)
  180974             :         {
  180975             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  180976          38 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  180977          38 :           ROSE_ASSERT(start != NULL);
  180978             : #if 0
  180979             :        // Debugging information
  180980             :           if (start->get_parent() == NULL)
  180981             :              {
  180982             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  180983             :              }
  180984             : #endif
  180985          38 :           start->set_parent(locatedNode);
  180986          38 :           ROSE_ASSERT(start->get_parent() != NULL);
  180987             : 
  180988          38 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  180989             : 
  180990             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  180991             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  180992             :        // ROSE_ASSERT(end != NULL);
  180993          38 :           if (end == NULL)
  180994             :              {
  180995           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  180996             :              }
  180997             :             else
  180998             :              {
  180999             : #if 0
  181000             :             // Debugging information
  181001             :                if (end->get_parent() == NULL)
  181002             :                   {
  181003             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181004             :                   }
  181005             : #endif
  181006          38 :                end->set_parent(locatedNode);
  181007          38 :                ROSE_ASSERT(end->get_parent() != NULL);
  181008             :              }
  181009             : 
  181010          38 :           SgExpression* expression = isSgExpression(result);
  181011          38 :           if (isSgExpression(this) != NULL)
  181012             :              {
  181013          38 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  181014             : 
  181015             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  181016          38 :                if (operatorPosition != NULL)
  181017             :                   {
  181018             : #if 0
  181019             :                  // Debugging information
  181020             :                     if (operatorPosition->get_parent() == NULL)
  181021             :                        {
  181022             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181023             :                        }
  181024             : #endif
  181025          38 :                     operatorPosition->set_parent(expression);
  181026          38 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  181027             :                   }
  181028             :              }
  181029             :         }
  181030             : 
  181031             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  181032          38 :      SgInitializedName* initializedName = isSgInitializedName(result);
  181033          38 :      if (initializedName != NULL)
  181034             :         {
  181035             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  181036           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  181037           0 :           ROSE_ASSERT(start != NULL);
  181038             : #if 0
  181039             :        // Debugging information
  181040             :           if (start->get_parent() == NULL)
  181041             :              {
  181042             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181043             :              }
  181044             : #endif
  181045           0 :           start->set_parent(initializedName);
  181046           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  181047             : 
  181048             : #if 0
  181049             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  181050             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  181051             : 
  181052             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  181053             :        // ROSE_ASSERT(end != NULL);
  181054             :           if (end == NULL)
  181055             :              {
  181056             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  181057             :              }
  181058             :             else
  181059             :              {
  181060             :                if (end->get_parent() == NULL)
  181061             :                   {
  181062             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181063             :                   }
  181064             :                end->set_parent(initializedName);
  181065             :                ROSE_ASSERT(end->get_parent() != NULL);
  181066             :              }
  181067             : #endif
  181068             :         }
  181069             : 
  181070             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  181071          38 :      help.insertCopiedNodePair(this,result);
  181072             : 
  181073             :   // printf ("End of copy SgConstructorInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  181074             : 
  181075             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  181076             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  181077          38 :      help.decrementDepth();
  181078             : 
  181079             :   // Test if this is the root of the copy!
  181080          38 :      if (help.get_depth() == 0)
  181081             :         {
  181082             :        // This is the original calling node.
  181083             : 
  181084             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  181085             :        // printf ("Calling SgConstructorInitializer::fixupCopy() (from root of AST being copied) \n");
  181086             : #if ALT_FIXUP_COPY
  181087             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  181088           0 :           fixupCopy_scopes (result,help);
  181089           0 :           fixupCopy_symbols (result,help);
  181090           0 :           fixupCopy_references (result,help);
  181091             : #else
  181092             :           fixupCopy(result,help);
  181093             : #endif
  181094             :        // Allow this to be called recursively, so accumulate the state.
  181095             :        // Also, clear the state in the SgCopyHelp object.
  181096             :        // help.clearState();
  181097             :         }
  181098             : 
  181099          38 :      return result;
  181100             :    }
  181101             : 
  181102             : 
  181103             : /* #line 181104 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  181104             : 
  181105             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  181106             : 
  181107          18 : SgNode* SgAssignInitializer::copy ( SgCopyHelp& help) const
  181108             :    {
  181109          18 :      SgAssignInitializer* result = NULL;
  181110             : 
  181111             :   // printf ("Copy SgAssignInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  181112             : 
  181113             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  181114             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  181115             :   // The default value of the depth is 0, so after this call the depth is 1!
  181116          18 :      help.incrementDepth();
  181117             : 
  181118             : #if 0
  181119             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  181120             :   // but it is not generally true that things can only be copied once!
  181121             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  181122             :   // AstAttribute* existingAttribute = const_cast<SgAssignInitializer*>(this)->attribute["copied"];
  181123             :      bool previouslyCopied = const_cast<SgAssignInitializer*>(this)->attribute.exists("copied");
  181124             :      if (previouslyCopied == true)
  181125             :         {
  181126             :           this->get_file_info()->display("Called from copy SgAssignInitializer: debug");
  181127             :         }
  181128             :      ROSE_ASSERT(previouslyCopied == false);
  181129             : 
  181130             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  181131             :      AstAttribute* newAttribute = new AstAttribute();
  181132             :      ROSE_ASSERT(newAttribute != NULL);
  181133             : 
  181134             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  181135             :      const_cast<SgAssignInitializer*>(this)->attribute.add("copied",newAttribute);
  181136             : #endif
  181137             : 
  181138             :   // Copy data members from base classes
  181139             :   // Copy constructor parameter data member: startOfConstruct_copy
  181140             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  181141             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  181142          18 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  181143          18 :      if ( p_startOfConstruct != NULL ) 
  181144             :         { 
  181145          18 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  181146             :         } 
  181147             :        else 
  181148             :         { 
  181149             :           startOfConstruct_copy = NULL; 
  181150             :         } 
  181151             :   // Copy constructor parameter data member: operand_i_copy
  181152          18 :      SgExpression* operand_i_copy; 
  181153             :   // case: not a listType for (using conditionalToCopyVariable)operand_i
  181154          18 :           if (get_operand_i() != NULL) 
  181155             :              { 
  181156          18 :                operand_i_copy = static_cast<SgExpression*>(help.copyAst(get_operand_i())); 
  181157             :              } 
  181158             :             else 
  181159             :              { 
  181160             :                operand_i_copy = NULL; 
  181161             :              } 
  181162             :   // Copy constructor parameter data member: expression_type_copy
  181163             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  181164             :   // case: toBeCopied == COPY_DATA for expression_type
  181165          18 :      SgType* expression_type_copy = p_expression_type; 
  181166             :  
  181167             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  181168             : 
  181169             :   // Build an empty copy of this object (will be filled in, but 
  181170             :   // the parent can't be set and must be set by the caller)
  181171          18 :      result = new SgAssignInitializer(  startOfConstruct_copy, operand_i_copy, expression_type_copy );
  181172          18 :      ROSE_ASSERT(result != NULL);
  181173             : 
  181174             :   // Copy data members of "this" class
  181175             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  181176             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  181177             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  181178          18 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  181179          18 :      if ( p_endOfConstruct != NULL ) 
  181180             :         { 
  181181          18 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  181182             :         } 
  181183             :        else 
  181184             :         { 
  181185             :           endOfConstruct_copy = NULL; 
  181186             :         } 
  181187             :   /* check for a valid pointer and delete if present */ 
  181188          18 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  181189             :   /* add assignment to result here */ 
  181190          18 :      result->p_endOfConstruct = endOfConstruct_copy; 
  181191             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  181192             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  181193             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  181194          18 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  181195          18 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  181196             :         { 
  181197           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  181198             :         } 
  181199             :        else 
  181200             :         { 
  181201             :           attachedPreprocessingInfoPtr_copy = NULL; 
  181202             :         } 
  181203             :   /* check for a valid pointer and delete if present */ 
  181204          18 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  181205             :   /* add assignment to result here */ 
  181206          18 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  181207             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  181208             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  181209             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  181210          18 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  181211          18 :      if ( p_attributeMechanism != NULL ) 
  181212             :         { 
  181213           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  181214             :         } 
  181215             :        else 
  181216             :         { 
  181217             :           attributeMechanism_copy = NULL; 
  181218             :         } 
  181219             :   /* check for a valid pointer and delete if present */ 
  181220          18 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  181221             :   /* add assignment to result here */ 
  181222          18 :      result->p_attributeMechanism = attributeMechanism_copy; 
  181223             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  181224             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  181225             :   // case: toBeCopied == COPY_DATA for need_paren
  181226          18 :      bool need_paren_copy = p_need_paren; 
  181227          18 :      result->p_need_paren = need_paren_copy; 
  181228             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  181229             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  181230             :   // case: toBeCopied == COPY_DATA for lvalue
  181231          18 :      bool lvalue_copy = p_lvalue; 
  181232          18 :      result->p_lvalue = lvalue_copy; 
  181233             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  181234             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  181235             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  181236          18 :      bool global_qualified_name_copy = p_global_qualified_name; 
  181237          18 :      result->p_global_qualified_name = global_qualified_name_copy; 
  181238             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  181239             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  181240             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  181241          18 :      Sg_File_Info* operatorPosition_copy = NULL; 
  181242          18 :      if ( p_operatorPosition != NULL ) 
  181243             :         { 
  181244          18 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  181245             :         } 
  181246             :        else 
  181247             :         { 
  181248             :           operatorPosition_copy = NULL; 
  181249             :         } 
  181250             :   /* check for a valid pointer and delete if present */ 
  181251          18 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  181252             :   /* add assignment to result here */ 
  181253          18 :      result->p_operatorPosition = operatorPosition_copy; 
  181254             :   // Copy non-constructor parameter data member (access function): is_explicit_cast_copy
  181255             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_explicit_cast
  181256             :   // case: toBeCopied == COPY_DATA for is_explicit_cast
  181257          18 :      bool is_explicit_cast_copy = p_is_explicit_cast; 
  181258          18 :      result->p_is_explicit_cast = is_explicit_cast_copy; 
  181259             :   // Copy non-constructor parameter data member (access function): is_braced_initialized_copy
  181260             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_braced_initialized
  181261             :   // case: toBeCopied == COPY_DATA for is_braced_initialized
  181262          18 :      bool is_braced_initialized_copy = p_is_braced_initialized; 
  181263          18 :      result->p_is_braced_initialized = is_braced_initialized_copy; 
  181264             :   // case: not a listType for (using conditionalToSetParent)operand_i
  181265          18 :           if ( (operand_i_copy != NULL) && (operand_i_copy->get_parent() == NULL) && (isSgType(operand_i_copy) == NULL) ) 
  181266             :              { 
  181267           0 :                operand_i_copy->set_parent(result); 
  181268             :              } 
  181269             : 
  181270             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  181271             : 
  181272             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  181273             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  181274             :   // fixupCopy(result,help);
  181275             : 
  181276             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  181277             :   // the Sg_File_Info objects that are built for the new IR nodes.
  181278          18 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  181279          18 :      if (locatedNode != NULL)
  181280             :         {
  181281             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  181282          18 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  181283          18 :           ROSE_ASSERT(start != NULL);
  181284             : #if 0
  181285             :        // Debugging information
  181286             :           if (start->get_parent() == NULL)
  181287             :              {
  181288             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181289             :              }
  181290             : #endif
  181291          18 :           start->set_parent(locatedNode);
  181292          18 :           ROSE_ASSERT(start->get_parent() != NULL);
  181293             : 
  181294          18 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  181295             : 
  181296             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  181297             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  181298             :        // ROSE_ASSERT(end != NULL);
  181299          18 :           if (end == NULL)
  181300             :              {
  181301           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  181302             :              }
  181303             :             else
  181304             :              {
  181305             : #if 0
  181306             :             // Debugging information
  181307             :                if (end->get_parent() == NULL)
  181308             :                   {
  181309             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181310             :                   }
  181311             : #endif
  181312          18 :                end->set_parent(locatedNode);
  181313          18 :                ROSE_ASSERT(end->get_parent() != NULL);
  181314             :              }
  181315             : 
  181316          18 :           SgExpression* expression = isSgExpression(result);
  181317          18 :           if (isSgExpression(this) != NULL)
  181318             :              {
  181319          18 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  181320             : 
  181321             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  181322          18 :                if (operatorPosition != NULL)
  181323             :                   {
  181324             : #if 0
  181325             :                  // Debugging information
  181326             :                     if (operatorPosition->get_parent() == NULL)
  181327             :                        {
  181328             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181329             :                        }
  181330             : #endif
  181331          18 :                     operatorPosition->set_parent(expression);
  181332          18 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  181333             :                   }
  181334             :              }
  181335             :         }
  181336             : 
  181337             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  181338          18 :      SgInitializedName* initializedName = isSgInitializedName(result);
  181339          18 :      if (initializedName != NULL)
  181340             :         {
  181341             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  181342           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  181343           0 :           ROSE_ASSERT(start != NULL);
  181344             : #if 0
  181345             :        // Debugging information
  181346             :           if (start->get_parent() == NULL)
  181347             :              {
  181348             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181349             :              }
  181350             : #endif
  181351           0 :           start->set_parent(initializedName);
  181352           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  181353             : 
  181354             : #if 0
  181355             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  181356             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  181357             : 
  181358             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  181359             :        // ROSE_ASSERT(end != NULL);
  181360             :           if (end == NULL)
  181361             :              {
  181362             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  181363             :              }
  181364             :             else
  181365             :              {
  181366             :                if (end->get_parent() == NULL)
  181367             :                   {
  181368             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181369             :                   }
  181370             :                end->set_parent(initializedName);
  181371             :                ROSE_ASSERT(end->get_parent() != NULL);
  181372             :              }
  181373             : #endif
  181374             :         }
  181375             : 
  181376             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  181377          18 :      help.insertCopiedNodePair(this,result);
  181378             : 
  181379             :   // printf ("End of copy SgAssignInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  181380             : 
  181381             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  181382             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  181383          18 :      help.decrementDepth();
  181384             : 
  181385             :   // Test if this is the root of the copy!
  181386          18 :      if (help.get_depth() == 0)
  181387             :         {
  181388             :        // This is the original calling node.
  181389             : 
  181390             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  181391             :        // printf ("Calling SgAssignInitializer::fixupCopy() (from root of AST being copied) \n");
  181392             : #if ALT_FIXUP_COPY
  181393             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  181394           0 :           fixupCopy_scopes (result,help);
  181395           0 :           fixupCopy_symbols (result,help);
  181396           0 :           fixupCopy_references (result,help);
  181397             : #else
  181398             :           fixupCopy(result,help);
  181399             : #endif
  181400             :        // Allow this to be called recursively, so accumulate the state.
  181401             :        // Also, clear the state in the SgCopyHelp object.
  181402             :        // help.clearState();
  181403             :         }
  181404             : 
  181405          18 :      return result;
  181406             :    }
  181407             : 
  181408             : 
  181409             : /* #line 181410 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  181410             : 
  181411             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  181412             : 
  181413           0 : SgNode* SgDesignatedInitializer::copy ( SgCopyHelp& help) const
  181414             :    {
  181415           0 :      SgDesignatedInitializer* result = NULL;
  181416             : 
  181417             :   // printf ("Copy SgDesignatedInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  181418             : 
  181419             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  181420             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  181421             :   // The default value of the depth is 0, so after this call the depth is 1!
  181422           0 :      help.incrementDepth();
  181423             : 
  181424             : #if 0
  181425             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  181426             :   // but it is not generally true that things can only be copied once!
  181427             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  181428             :   // AstAttribute* existingAttribute = const_cast<SgDesignatedInitializer*>(this)->attribute["copied"];
  181429             :      bool previouslyCopied = const_cast<SgDesignatedInitializer*>(this)->attribute.exists("copied");
  181430             :      if (previouslyCopied == true)
  181431             :         {
  181432             :           this->get_file_info()->display("Called from copy SgDesignatedInitializer: debug");
  181433             :         }
  181434             :      ROSE_ASSERT(previouslyCopied == false);
  181435             : 
  181436             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  181437             :      AstAttribute* newAttribute = new AstAttribute();
  181438             :      ROSE_ASSERT(newAttribute != NULL);
  181439             : 
  181440             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  181441             :      const_cast<SgDesignatedInitializer*>(this)->attribute.add("copied",newAttribute);
  181442             : #endif
  181443             : 
  181444             :   // Copy data members from base classes
  181445             :   // Copy constructor parameter data member: startOfConstruct_copy
  181446             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  181447             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  181448           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  181449           0 :      if ( p_startOfConstruct != NULL ) 
  181450             :         { 
  181451           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  181452             :         } 
  181453             :        else 
  181454             :         { 
  181455             :           startOfConstruct_copy = NULL; 
  181456             :         } 
  181457             :   // Copy constructor parameter data member: designatorList_copy
  181458           0 :      SgExprListExp* designatorList_copy; 
  181459             :   // case: not a listType for (using conditionalToCopyVariable)designatorList
  181460           0 :           if (get_designatorList() != NULL) 
  181461             :              { 
  181462           0 :                designatorList_copy = static_cast<SgExprListExp*>(help.copyAst(get_designatorList())); 
  181463             :              } 
  181464             :             else 
  181465             :              { 
  181466             :                designatorList_copy = NULL; 
  181467             :              } 
  181468             :   // Copy constructor parameter data member: memberInit_copy
  181469           0 :      SgInitializer* memberInit_copy; 
  181470             :   // case: not a listType for (using conditionalToCopyVariable)memberInit
  181471           0 :           if (get_memberInit() != NULL) 
  181472             :              { 
  181473           0 :                memberInit_copy = static_cast<SgInitializer*>(help.copyAst(get_memberInit())); 
  181474             :              } 
  181475             :             else 
  181476             :              { 
  181477             :                memberInit_copy = NULL; 
  181478             :              } 
  181479             :  
  181480             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  181481             : 
  181482             :   // Build an empty copy of this object (will be filled in, but 
  181483             :   // the parent can't be set and must be set by the caller)
  181484           0 :      result = new SgDesignatedInitializer(  startOfConstruct_copy, designatorList_copy, memberInit_copy );
  181485           0 :      ROSE_ASSERT(result != NULL);
  181486             : 
  181487             :   // Copy data members of "this" class
  181488             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  181489             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  181490             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  181491           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  181492           0 :      if ( p_endOfConstruct != NULL ) 
  181493             :         { 
  181494           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  181495             :         } 
  181496             :        else 
  181497             :         { 
  181498             :           endOfConstruct_copy = NULL; 
  181499             :         } 
  181500             :   /* check for a valid pointer and delete if present */ 
  181501           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  181502             :   /* add assignment to result here */ 
  181503           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  181504             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  181505             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  181506             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  181507           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  181508           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  181509             :         { 
  181510           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  181511             :         } 
  181512             :        else 
  181513             :         { 
  181514             :           attachedPreprocessingInfoPtr_copy = NULL; 
  181515             :         } 
  181516             :   /* check for a valid pointer and delete if present */ 
  181517           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  181518             :   /* add assignment to result here */ 
  181519           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  181520             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  181521             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  181522             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  181523           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  181524           0 :      if ( p_attributeMechanism != NULL ) 
  181525             :         { 
  181526           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  181527             :         } 
  181528             :        else 
  181529             :         { 
  181530             :           attributeMechanism_copy = NULL; 
  181531             :         } 
  181532             :   /* check for a valid pointer and delete if present */ 
  181533           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  181534             :   /* add assignment to result here */ 
  181535           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  181536             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  181537             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  181538             :   // case: toBeCopied == COPY_DATA for need_paren
  181539           0 :      bool need_paren_copy = p_need_paren; 
  181540           0 :      result->p_need_paren = need_paren_copy; 
  181541             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  181542             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  181543             :   // case: toBeCopied == COPY_DATA for lvalue
  181544           0 :      bool lvalue_copy = p_lvalue; 
  181545           0 :      result->p_lvalue = lvalue_copy; 
  181546             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  181547             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  181548             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  181549           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  181550           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  181551             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  181552             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  181553             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  181554           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  181555           0 :      if ( p_operatorPosition != NULL ) 
  181556             :         { 
  181557           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  181558             :         } 
  181559             :        else 
  181560             :         { 
  181561             :           operatorPosition_copy = NULL; 
  181562             :         } 
  181563             :   /* check for a valid pointer and delete if present */ 
  181564           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  181565             :   /* add assignment to result here */ 
  181566           0 :      result->p_operatorPosition = operatorPosition_copy; 
  181567             :   // Copy non-constructor parameter data member (access function): is_explicit_cast_copy
  181568             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_explicit_cast
  181569             :   // case: toBeCopied == COPY_DATA for is_explicit_cast
  181570           0 :      bool is_explicit_cast_copy = p_is_explicit_cast; 
  181571           0 :      result->p_is_explicit_cast = is_explicit_cast_copy; 
  181572             :   // Copy non-constructor parameter data member (access function): is_braced_initialized_copy
  181573             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_braced_initialized
  181574             :   // case: toBeCopied == COPY_DATA for is_braced_initialized
  181575           0 :      bool is_braced_initialized_copy = p_is_braced_initialized; 
  181576           0 :      result->p_is_braced_initialized = is_braced_initialized_copy; 
  181577             :   // case: not a listType for (using conditionalToSetParent)designatorList
  181578           0 :           if ( (designatorList_copy != NULL) && (designatorList_copy->get_parent() == NULL) && (isSgType(designatorList_copy) == NULL) ) 
  181579             :              { 
  181580           0 :                designatorList_copy->set_parent(result); 
  181581             :              } 
  181582             :   // case: not a listType for (using conditionalToSetParent)memberInit
  181583           0 :           if ( (memberInit_copy != NULL) && (memberInit_copy->get_parent() == NULL) && (isSgType(memberInit_copy) == NULL) ) 
  181584             :              { 
  181585           0 :                memberInit_copy->set_parent(result); 
  181586             :              } 
  181587             : 
  181588             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  181589             : 
  181590             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  181591             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  181592             :   // fixupCopy(result,help);
  181593             : 
  181594             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  181595             :   // the Sg_File_Info objects that are built for the new IR nodes.
  181596           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  181597           0 :      if (locatedNode != NULL)
  181598             :         {
  181599             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  181600           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  181601           0 :           ROSE_ASSERT(start != NULL);
  181602             : #if 0
  181603             :        // Debugging information
  181604             :           if (start->get_parent() == NULL)
  181605             :              {
  181606             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181607             :              }
  181608             : #endif
  181609           0 :           start->set_parent(locatedNode);
  181610           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  181611             : 
  181612           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  181613             : 
  181614             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  181615             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  181616             :        // ROSE_ASSERT(end != NULL);
  181617           0 :           if (end == NULL)
  181618             :              {
  181619           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  181620             :              }
  181621             :             else
  181622             :              {
  181623             : #if 0
  181624             :             // Debugging information
  181625             :                if (end->get_parent() == NULL)
  181626             :                   {
  181627             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181628             :                   }
  181629             : #endif
  181630           0 :                end->set_parent(locatedNode);
  181631           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  181632             :              }
  181633             : 
  181634           0 :           SgExpression* expression = isSgExpression(result);
  181635           0 :           if (isSgExpression(this) != NULL)
  181636             :              {
  181637           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  181638             : 
  181639             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  181640           0 :                if (operatorPosition != NULL)
  181641             :                   {
  181642             : #if 0
  181643             :                  // Debugging information
  181644             :                     if (operatorPosition->get_parent() == NULL)
  181645             :                        {
  181646             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181647             :                        }
  181648             : #endif
  181649           0 :                     operatorPosition->set_parent(expression);
  181650           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  181651             :                   }
  181652             :              }
  181653             :         }
  181654             : 
  181655             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  181656           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  181657           0 :      if (initializedName != NULL)
  181658             :         {
  181659             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  181660           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  181661           0 :           ROSE_ASSERT(start != NULL);
  181662             : #if 0
  181663             :        // Debugging information
  181664             :           if (start->get_parent() == NULL)
  181665             :              {
  181666             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181667             :              }
  181668             : #endif
  181669           0 :           start->set_parent(initializedName);
  181670           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  181671             : 
  181672             : #if 0
  181673             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  181674             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  181675             : 
  181676             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  181677             :        // ROSE_ASSERT(end != NULL);
  181678             :           if (end == NULL)
  181679             :              {
  181680             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  181681             :              }
  181682             :             else
  181683             :              {
  181684             :                if (end->get_parent() == NULL)
  181685             :                   {
  181686             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181687             :                   }
  181688             :                end->set_parent(initializedName);
  181689             :                ROSE_ASSERT(end->get_parent() != NULL);
  181690             :              }
  181691             : #endif
  181692             :         }
  181693             : 
  181694             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  181695           0 :      help.insertCopiedNodePair(this,result);
  181696             : 
  181697             :   // printf ("End of copy SgDesignatedInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  181698             : 
  181699             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  181700             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  181701           0 :      help.decrementDepth();
  181702             : 
  181703             :   // Test if this is the root of the copy!
  181704           0 :      if (help.get_depth() == 0)
  181705             :         {
  181706             :        // This is the original calling node.
  181707             : 
  181708             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  181709             :        // printf ("Calling SgDesignatedInitializer::fixupCopy() (from root of AST being copied) \n");
  181710             : #if ALT_FIXUP_COPY
  181711             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  181712           0 :           fixupCopy_scopes (result,help);
  181713           0 :           fixupCopy_symbols (result,help);
  181714           0 :           fixupCopy_references (result,help);
  181715             : #else
  181716             :           fixupCopy(result,help);
  181717             : #endif
  181718             :        // Allow this to be called recursively, so accumulate the state.
  181719             :        // Also, clear the state in the SgCopyHelp object.
  181720             :        // help.clearState();
  181721             :         }
  181722             : 
  181723           0 :      return result;
  181724             :    }
  181725             : 
  181726             : 
  181727             : /* #line 181728 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  181728             : 
  181729             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  181730             : 
  181731           0 : SgNode* SgBracedInitializer::copy ( SgCopyHelp& help) const
  181732             :    {
  181733           0 :      SgBracedInitializer* result = NULL;
  181734             : 
  181735             :   // printf ("Copy SgBracedInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  181736             : 
  181737             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  181738             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  181739             :   // The default value of the depth is 0, so after this call the depth is 1!
  181740           0 :      help.incrementDepth();
  181741             : 
  181742             : #if 0
  181743             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  181744             :   // but it is not generally true that things can only be copied once!
  181745             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  181746             :   // AstAttribute* existingAttribute = const_cast<SgBracedInitializer*>(this)->attribute["copied"];
  181747             :      bool previouslyCopied = const_cast<SgBracedInitializer*>(this)->attribute.exists("copied");
  181748             :      if (previouslyCopied == true)
  181749             :         {
  181750             :           this->get_file_info()->display("Called from copy SgBracedInitializer: debug");
  181751             :         }
  181752             :      ROSE_ASSERT(previouslyCopied == false);
  181753             : 
  181754             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  181755             :      AstAttribute* newAttribute = new AstAttribute();
  181756             :      ROSE_ASSERT(newAttribute != NULL);
  181757             : 
  181758             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  181759             :      const_cast<SgBracedInitializer*>(this)->attribute.add("copied",newAttribute);
  181760             : #endif
  181761             : 
  181762             :   // Copy data members from base classes
  181763             :   // Copy constructor parameter data member: startOfConstruct_copy
  181764             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  181765             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  181766           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  181767           0 :      if ( p_startOfConstruct != NULL ) 
  181768             :         { 
  181769           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  181770             :         } 
  181771             :        else 
  181772             :         { 
  181773             :           startOfConstruct_copy = NULL; 
  181774             :         } 
  181775             :   // Copy constructor parameter data member: initializers_copy
  181776           0 :      SgExprListExp* initializers_copy; 
  181777             :   // case: not a listType for (using conditionalToCopyVariable)initializers
  181778           0 :           if (get_initializers() != NULL) 
  181779             :              { 
  181780           0 :                initializers_copy = static_cast<SgExprListExp*>(help.copyAst(get_initializers())); 
  181781             :              } 
  181782             :             else 
  181783             :              { 
  181784             :                initializers_copy = NULL; 
  181785             :              } 
  181786             :   // Copy constructor parameter data member: expression_type_copy
  181787             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  181788             :   // case: toBeCopied == COPY_DATA for expression_type
  181789           0 :      SgType* expression_type_copy = p_expression_type; 
  181790             :  
  181791             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  181792             : 
  181793             :   // Build an empty copy of this object (will be filled in, but 
  181794             :   // the parent can't be set and must be set by the caller)
  181795           0 :      result = new SgBracedInitializer(  startOfConstruct_copy, initializers_copy, expression_type_copy );
  181796           0 :      ROSE_ASSERT(result != NULL);
  181797             : 
  181798             :   // Copy data members of "this" class
  181799             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  181800             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  181801             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  181802           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  181803           0 :      if ( p_endOfConstruct != NULL ) 
  181804             :         { 
  181805           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  181806             :         } 
  181807             :        else 
  181808             :         { 
  181809             :           endOfConstruct_copy = NULL; 
  181810             :         } 
  181811             :   /* check for a valid pointer and delete if present */ 
  181812           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  181813             :   /* add assignment to result here */ 
  181814           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  181815             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  181816             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  181817             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  181818           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  181819           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  181820             :         { 
  181821           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  181822             :         } 
  181823             :        else 
  181824             :         { 
  181825             :           attachedPreprocessingInfoPtr_copy = NULL; 
  181826             :         } 
  181827             :   /* check for a valid pointer and delete if present */ 
  181828           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  181829             :   /* add assignment to result here */ 
  181830           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  181831             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  181832             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  181833             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  181834           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  181835           0 :      if ( p_attributeMechanism != NULL ) 
  181836             :         { 
  181837           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  181838             :         } 
  181839             :        else 
  181840             :         { 
  181841             :           attributeMechanism_copy = NULL; 
  181842             :         } 
  181843             :   /* check for a valid pointer and delete if present */ 
  181844           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  181845             :   /* add assignment to result here */ 
  181846           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  181847             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  181848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  181849             :   // case: toBeCopied == COPY_DATA for need_paren
  181850           0 :      bool need_paren_copy = p_need_paren; 
  181851           0 :      result->p_need_paren = need_paren_copy; 
  181852             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  181853             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  181854             :   // case: toBeCopied == COPY_DATA for lvalue
  181855           0 :      bool lvalue_copy = p_lvalue; 
  181856           0 :      result->p_lvalue = lvalue_copy; 
  181857             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  181858             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  181859             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  181860           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  181861           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  181862             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  181863             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  181864             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  181865           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  181866           0 :      if ( p_operatorPosition != NULL ) 
  181867             :         { 
  181868           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  181869             :         } 
  181870             :        else 
  181871             :         { 
  181872             :           operatorPosition_copy = NULL; 
  181873             :         } 
  181874             :   /* check for a valid pointer and delete if present */ 
  181875           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  181876             :   /* add assignment to result here */ 
  181877           0 :      result->p_operatorPosition = operatorPosition_copy; 
  181878             :   // Copy non-constructor parameter data member (access function): is_explicit_cast_copy
  181879             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_explicit_cast
  181880             :   // case: toBeCopied == COPY_DATA for is_explicit_cast
  181881           0 :      bool is_explicit_cast_copy = p_is_explicit_cast; 
  181882           0 :      result->p_is_explicit_cast = is_explicit_cast_copy; 
  181883             :   // Copy non-constructor parameter data member (access function): is_braced_initialized_copy
  181884             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_braced_initialized
  181885             :   // case: toBeCopied == COPY_DATA for is_braced_initialized
  181886           0 :      bool is_braced_initialized_copy = p_is_braced_initialized; 
  181887           0 :      result->p_is_braced_initialized = is_braced_initialized_copy; 
  181888             :   // case: not a listType for (using conditionalToSetParent)initializers
  181889           0 :           if ( (initializers_copy != NULL) && (initializers_copy->get_parent() == NULL) && (isSgType(initializers_copy) == NULL) ) 
  181890             :              { 
  181891           0 :                initializers_copy->set_parent(result); 
  181892             :              } 
  181893             : 
  181894             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  181895             : 
  181896             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  181897             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  181898             :   // fixupCopy(result,help);
  181899             : 
  181900             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  181901             :   // the Sg_File_Info objects that are built for the new IR nodes.
  181902           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  181903           0 :      if (locatedNode != NULL)
  181904             :         {
  181905             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  181906           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  181907           0 :           ROSE_ASSERT(start != NULL);
  181908             : #if 0
  181909             :        // Debugging information
  181910             :           if (start->get_parent() == NULL)
  181911             :              {
  181912             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181913             :              }
  181914             : #endif
  181915           0 :           start->set_parent(locatedNode);
  181916           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  181917             : 
  181918           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  181919             : 
  181920             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  181921             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  181922             :        // ROSE_ASSERT(end != NULL);
  181923           0 :           if (end == NULL)
  181924             :              {
  181925           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  181926             :              }
  181927             :             else
  181928             :              {
  181929             : #if 0
  181930             :             // Debugging information
  181931             :                if (end->get_parent() == NULL)
  181932             :                   {
  181933             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181934             :                   }
  181935             : #endif
  181936           0 :                end->set_parent(locatedNode);
  181937           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  181938             :              }
  181939             : 
  181940           0 :           SgExpression* expression = isSgExpression(result);
  181941           0 :           if (isSgExpression(this) != NULL)
  181942             :              {
  181943           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  181944             : 
  181945             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  181946           0 :                if (operatorPosition != NULL)
  181947             :                   {
  181948             : #if 0
  181949             :                  // Debugging information
  181950             :                     if (operatorPosition->get_parent() == NULL)
  181951             :                        {
  181952             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181953             :                        }
  181954             : #endif
  181955           0 :                     operatorPosition->set_parent(expression);
  181956           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  181957             :                   }
  181958             :              }
  181959             :         }
  181960             : 
  181961             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  181962           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  181963           0 :      if (initializedName != NULL)
  181964             :         {
  181965             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  181966           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  181967           0 :           ROSE_ASSERT(start != NULL);
  181968             : #if 0
  181969             :        // Debugging information
  181970             :           if (start->get_parent() == NULL)
  181971             :              {
  181972             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181973             :              }
  181974             : #endif
  181975           0 :           start->set_parent(initializedName);
  181976           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  181977             : 
  181978             : #if 0
  181979             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  181980             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  181981             : 
  181982             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  181983             :        // ROSE_ASSERT(end != NULL);
  181984             :           if (end == NULL)
  181985             :              {
  181986             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  181987             :              }
  181988             :             else
  181989             :              {
  181990             :                if (end->get_parent() == NULL)
  181991             :                   {
  181992             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  181993             :                   }
  181994             :                end->set_parent(initializedName);
  181995             :                ROSE_ASSERT(end->get_parent() != NULL);
  181996             :              }
  181997             : #endif
  181998             :         }
  181999             : 
  182000             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  182001           0 :      help.insertCopiedNodePair(this,result);
  182002             : 
  182003             :   // printf ("End of copy SgBracedInitializer = %p = %s \n",this,SageInterface::get_name(this).c_str());
  182004             : 
  182005             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  182006             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  182007           0 :      help.decrementDepth();
  182008             : 
  182009             :   // Test if this is the root of the copy!
  182010           0 :      if (help.get_depth() == 0)
  182011             :         {
  182012             :        // This is the original calling node.
  182013             : 
  182014             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  182015             :        // printf ("Calling SgBracedInitializer::fixupCopy() (from root of AST being copied) \n");
  182016             : #if ALT_FIXUP_COPY
  182017             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  182018           0 :           fixupCopy_scopes (result,help);
  182019           0 :           fixupCopy_symbols (result,help);
  182020           0 :           fixupCopy_references (result,help);
  182021             : #else
  182022             :           fixupCopy(result,help);
  182023             : #endif
  182024             :        // Allow this to be called recursively, so accumulate the state.
  182025             :        // Also, clear the state in the SgCopyHelp object.
  182026             :        // help.clearState();
  182027             :         }
  182028             : 
  182029           0 :      return result;
  182030             :    }
  182031             : 
  182032             : 
  182033             : /* #line 182034 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  182034             : 
  182035             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182036             : 
  182037           0 : SgNode* SgVarArgStartOp::copy ( SgCopyHelp& help) const
  182038             :    {
  182039           0 :      SgVarArgStartOp* result = NULL;
  182040             : 
  182041             :   // printf ("Copy SgVarArgStartOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  182042             : 
  182043             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  182044             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  182045             :   // The default value of the depth is 0, so after this call the depth is 1!
  182046           0 :      help.incrementDepth();
  182047             : 
  182048             : #if 0
  182049             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  182050             :   // but it is not generally true that things can only be copied once!
  182051             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  182052             :   // AstAttribute* existingAttribute = const_cast<SgVarArgStartOp*>(this)->attribute["copied"];
  182053             :      bool previouslyCopied = const_cast<SgVarArgStartOp*>(this)->attribute.exists("copied");
  182054             :      if (previouslyCopied == true)
  182055             :         {
  182056             :           this->get_file_info()->display("Called from copy SgVarArgStartOp: debug");
  182057             :         }
  182058             :      ROSE_ASSERT(previouslyCopied == false);
  182059             : 
  182060             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  182061             :      AstAttribute* newAttribute = new AstAttribute();
  182062             :      ROSE_ASSERT(newAttribute != NULL);
  182063             : 
  182064             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  182065             :      const_cast<SgVarArgStartOp*>(this)->attribute.add("copied",newAttribute);
  182066             : #endif
  182067             : 
  182068             :   // Copy data members from base classes
  182069             :   // Copy constructor parameter data member: startOfConstruct_copy
  182070             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  182071             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  182072           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  182073           0 :      if ( p_startOfConstruct != NULL ) 
  182074             :         { 
  182075           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  182076             :         } 
  182077             :        else 
  182078             :         { 
  182079             :           startOfConstruct_copy = NULL; 
  182080             :         } 
  182081             :   // Copy constructor parameter data member: lhs_operand_copy
  182082           0 :      SgExpression* lhs_operand_copy; 
  182083             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand
  182084           0 :           if (get_lhs_operand() != NULL) 
  182085             :              { 
  182086           0 :                lhs_operand_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand())); 
  182087             :              } 
  182088             :             else 
  182089             :              { 
  182090             :                lhs_operand_copy = NULL; 
  182091             :              } 
  182092             :   // Copy constructor parameter data member: rhs_operand_copy
  182093           0 :      SgExpression* rhs_operand_copy; 
  182094             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand
  182095           0 :           if (get_rhs_operand() != NULL) 
  182096             :              { 
  182097           0 :                rhs_operand_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand())); 
  182098             :              } 
  182099             :             else 
  182100             :              { 
  182101             :                rhs_operand_copy = NULL; 
  182102             :              } 
  182103             :   // Copy constructor parameter data member: expression_type_copy
  182104             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  182105             :   // case: toBeCopied == COPY_DATA for expression_type
  182106           0 :      SgType* expression_type_copy = p_expression_type; 
  182107             :  
  182108             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182109             : 
  182110             :   // Build an empty copy of this object (will be filled in, but 
  182111             :   // the parent can't be set and must be set by the caller)
  182112           0 :      result = new SgVarArgStartOp(  startOfConstruct_copy, lhs_operand_copy, rhs_operand_copy, expression_type_copy );
  182113           0 :      ROSE_ASSERT(result != NULL);
  182114             : 
  182115             :   // Copy data members of "this" class
  182116             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  182117             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  182118             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  182119           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  182120           0 :      if ( p_endOfConstruct != NULL ) 
  182121             :         { 
  182122           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  182123             :         } 
  182124             :        else 
  182125             :         { 
  182126             :           endOfConstruct_copy = NULL; 
  182127             :         } 
  182128             :   /* check for a valid pointer and delete if present */ 
  182129           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  182130             :   /* add assignment to result here */ 
  182131           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  182132             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  182133             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  182134             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  182135           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  182136           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  182137             :         { 
  182138           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  182139             :         } 
  182140             :        else 
  182141             :         { 
  182142             :           attachedPreprocessingInfoPtr_copy = NULL; 
  182143             :         } 
  182144             :   /* check for a valid pointer and delete if present */ 
  182145           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  182146             :   /* add assignment to result here */ 
  182147           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  182148             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  182149             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  182150             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  182151           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  182152           0 :      if ( p_attributeMechanism != NULL ) 
  182153             :         { 
  182154           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  182155             :         } 
  182156             :        else 
  182157             :         { 
  182158             :           attributeMechanism_copy = NULL; 
  182159             :         } 
  182160             :   /* check for a valid pointer and delete if present */ 
  182161           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  182162             :   /* add assignment to result here */ 
  182163           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  182164             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  182165             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  182166             :   // case: toBeCopied == COPY_DATA for need_paren
  182167           0 :      bool need_paren_copy = p_need_paren; 
  182168           0 :      result->p_need_paren = need_paren_copy; 
  182169             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  182170             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  182171             :   // case: toBeCopied == COPY_DATA for lvalue
  182172           0 :      bool lvalue_copy = p_lvalue; 
  182173           0 :      result->p_lvalue = lvalue_copy; 
  182174             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  182175             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  182176             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  182177           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  182178           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  182179             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  182180             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  182181             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  182182           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  182183           0 :      if ( p_operatorPosition != NULL ) 
  182184             :         { 
  182185           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  182186             :         } 
  182187             :        else 
  182188             :         { 
  182189             :           operatorPosition_copy = NULL; 
  182190             :         } 
  182191             :   /* check for a valid pointer and delete if present */ 
  182192           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  182193             :   /* add assignment to result here */ 
  182194           0 :      result->p_operatorPosition = operatorPosition_copy; 
  182195             :   // case: not a listType for (using conditionalToSetParent)lhs_operand
  182196           0 :           if ( (lhs_operand_copy != NULL) && (lhs_operand_copy->get_parent() == NULL) && (isSgType(lhs_operand_copy) == NULL) ) 
  182197             :              { 
  182198           0 :                lhs_operand_copy->set_parent(result); 
  182199             :              } 
  182200             :   // case: not a listType for (using conditionalToSetParent)rhs_operand
  182201           0 :           if ( (rhs_operand_copy != NULL) && (rhs_operand_copy->get_parent() == NULL) && (isSgType(rhs_operand_copy) == NULL) ) 
  182202             :              { 
  182203           0 :                rhs_operand_copy->set_parent(result); 
  182204             :              } 
  182205             : 
  182206             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182207             : 
  182208             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  182209             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  182210             :   // fixupCopy(result,help);
  182211             : 
  182212             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  182213             :   // the Sg_File_Info objects that are built for the new IR nodes.
  182214           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  182215           0 :      if (locatedNode != NULL)
  182216             :         {
  182217             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  182218           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  182219           0 :           ROSE_ASSERT(start != NULL);
  182220             : #if 0
  182221             :        // Debugging information
  182222             :           if (start->get_parent() == NULL)
  182223             :              {
  182224             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182225             :              }
  182226             : #endif
  182227           0 :           start->set_parent(locatedNode);
  182228           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  182229             : 
  182230           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  182231             : 
  182232             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  182233             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  182234             :        // ROSE_ASSERT(end != NULL);
  182235           0 :           if (end == NULL)
  182236             :              {
  182237           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  182238             :              }
  182239             :             else
  182240             :              {
  182241             : #if 0
  182242             :             // Debugging information
  182243             :                if (end->get_parent() == NULL)
  182244             :                   {
  182245             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182246             :                   }
  182247             : #endif
  182248           0 :                end->set_parent(locatedNode);
  182249           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  182250             :              }
  182251             : 
  182252           0 :           SgExpression* expression = isSgExpression(result);
  182253           0 :           if (isSgExpression(this) != NULL)
  182254             :              {
  182255           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  182256             : 
  182257             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  182258           0 :                if (operatorPosition != NULL)
  182259             :                   {
  182260             : #if 0
  182261             :                  // Debugging information
  182262             :                     if (operatorPosition->get_parent() == NULL)
  182263             :                        {
  182264             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182265             :                        }
  182266             : #endif
  182267           0 :                     operatorPosition->set_parent(expression);
  182268           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  182269             :                   }
  182270             :              }
  182271             :         }
  182272             : 
  182273             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  182274           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  182275           0 :      if (initializedName != NULL)
  182276             :         {
  182277             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  182278           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  182279           0 :           ROSE_ASSERT(start != NULL);
  182280             : #if 0
  182281             :        // Debugging information
  182282             :           if (start->get_parent() == NULL)
  182283             :              {
  182284             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182285             :              }
  182286             : #endif
  182287           0 :           start->set_parent(initializedName);
  182288           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  182289             : 
  182290             : #if 0
  182291             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  182292             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  182293             : 
  182294             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  182295             :        // ROSE_ASSERT(end != NULL);
  182296             :           if (end == NULL)
  182297             :              {
  182298             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  182299             :              }
  182300             :             else
  182301             :              {
  182302             :                if (end->get_parent() == NULL)
  182303             :                   {
  182304             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182305             :                   }
  182306             :                end->set_parent(initializedName);
  182307             :                ROSE_ASSERT(end->get_parent() != NULL);
  182308             :              }
  182309             : #endif
  182310             :         }
  182311             : 
  182312             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  182313           0 :      help.insertCopiedNodePair(this,result);
  182314             : 
  182315             :   // printf ("End of copy SgVarArgStartOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  182316             : 
  182317             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  182318             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  182319           0 :      help.decrementDepth();
  182320             : 
  182321             :   // Test if this is the root of the copy!
  182322           0 :      if (help.get_depth() == 0)
  182323             :         {
  182324             :        // This is the original calling node.
  182325             : 
  182326             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  182327             :        // printf ("Calling SgVarArgStartOp::fixupCopy() (from root of AST being copied) \n");
  182328             : #if ALT_FIXUP_COPY
  182329             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  182330           0 :           fixupCopy_scopes (result,help);
  182331           0 :           fixupCopy_symbols (result,help);
  182332           0 :           fixupCopy_references (result,help);
  182333             : #else
  182334             :           fixupCopy(result,help);
  182335             : #endif
  182336             :        // Allow this to be called recursively, so accumulate the state.
  182337             :        // Also, clear the state in the SgCopyHelp object.
  182338             :        // help.clearState();
  182339             :         }
  182340             : 
  182341           0 :      return result;
  182342             :    }
  182343             : 
  182344             : 
  182345             : /* #line 182346 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  182346             : 
  182347             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182348             : 
  182349           0 : SgNode* SgVarArgOp::copy ( SgCopyHelp& help) const
  182350             :    {
  182351           0 :      SgVarArgOp* result = NULL;
  182352             : 
  182353             :   // printf ("Copy SgVarArgOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  182354             : 
  182355             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  182356             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  182357             :   // The default value of the depth is 0, so after this call the depth is 1!
  182358           0 :      help.incrementDepth();
  182359             : 
  182360             : #if 0
  182361             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  182362             :   // but it is not generally true that things can only be copied once!
  182363             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  182364             :   // AstAttribute* existingAttribute = const_cast<SgVarArgOp*>(this)->attribute["copied"];
  182365             :      bool previouslyCopied = const_cast<SgVarArgOp*>(this)->attribute.exists("copied");
  182366             :      if (previouslyCopied == true)
  182367             :         {
  182368             :           this->get_file_info()->display("Called from copy SgVarArgOp: debug");
  182369             :         }
  182370             :      ROSE_ASSERT(previouslyCopied == false);
  182371             : 
  182372             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  182373             :      AstAttribute* newAttribute = new AstAttribute();
  182374             :      ROSE_ASSERT(newAttribute != NULL);
  182375             : 
  182376             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  182377             :      const_cast<SgVarArgOp*>(this)->attribute.add("copied",newAttribute);
  182378             : #endif
  182379             : 
  182380             :   // Copy data members from base classes
  182381             :   // Copy constructor parameter data member: startOfConstruct_copy
  182382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  182383             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  182384           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  182385           0 :      if ( p_startOfConstruct != NULL ) 
  182386             :         { 
  182387           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  182388             :         } 
  182389             :        else 
  182390             :         { 
  182391             :           startOfConstruct_copy = NULL; 
  182392             :         } 
  182393             :   // Copy constructor parameter data member: operand_expr_copy
  182394           0 :      SgExpression* operand_expr_copy; 
  182395             :   // case: not a listType for (using conditionalToCopyVariable)operand_expr
  182396           0 :           if (get_operand_expr() != NULL) 
  182397             :              { 
  182398           0 :                operand_expr_copy = static_cast<SgExpression*>(help.copyAst(get_operand_expr())); 
  182399             :              } 
  182400             :             else 
  182401             :              { 
  182402             :                operand_expr_copy = NULL; 
  182403             :              } 
  182404             :   // Copy constructor parameter data member: expression_type_copy
  182405             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  182406             :   // case: toBeCopied == COPY_DATA for expression_type
  182407           0 :      SgType* expression_type_copy = p_expression_type; 
  182408             :  
  182409             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182410             : 
  182411             :   // Build an empty copy of this object (will be filled in, but 
  182412             :   // the parent can't be set and must be set by the caller)
  182413           0 :      result = new SgVarArgOp(  startOfConstruct_copy, operand_expr_copy, expression_type_copy );
  182414           0 :      ROSE_ASSERT(result != NULL);
  182415             : 
  182416             :   // Copy data members of "this" class
  182417             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  182418             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  182419             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  182420           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  182421           0 :      if ( p_endOfConstruct != NULL ) 
  182422             :         { 
  182423           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  182424             :         } 
  182425             :        else 
  182426             :         { 
  182427             :           endOfConstruct_copy = NULL; 
  182428             :         } 
  182429             :   /* check for a valid pointer and delete if present */ 
  182430           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  182431             :   /* add assignment to result here */ 
  182432           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  182433             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  182434             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  182435             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  182436           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  182437           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  182438             :         { 
  182439           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  182440             :         } 
  182441             :        else 
  182442             :         { 
  182443             :           attachedPreprocessingInfoPtr_copy = NULL; 
  182444             :         } 
  182445             :   /* check for a valid pointer and delete if present */ 
  182446           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  182447             :   /* add assignment to result here */ 
  182448           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  182449             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  182450             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  182451             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  182452           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  182453           0 :      if ( p_attributeMechanism != NULL ) 
  182454             :         { 
  182455           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  182456             :         } 
  182457             :        else 
  182458             :         { 
  182459             :           attributeMechanism_copy = NULL; 
  182460             :         } 
  182461             :   /* check for a valid pointer and delete if present */ 
  182462           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  182463             :   /* add assignment to result here */ 
  182464           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  182465             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  182466             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  182467             :   // case: toBeCopied == COPY_DATA for need_paren
  182468           0 :      bool need_paren_copy = p_need_paren; 
  182469           0 :      result->p_need_paren = need_paren_copy; 
  182470             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  182471             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  182472             :   // case: toBeCopied == COPY_DATA for lvalue
  182473           0 :      bool lvalue_copy = p_lvalue; 
  182474           0 :      result->p_lvalue = lvalue_copy; 
  182475             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  182476             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  182477             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  182478           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  182479           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  182480             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  182481             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  182482             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  182483           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  182484           0 :      if ( p_operatorPosition != NULL ) 
  182485             :         { 
  182486           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  182487             :         } 
  182488             :        else 
  182489             :         { 
  182490             :           operatorPosition_copy = NULL; 
  182491             :         } 
  182492             :   /* check for a valid pointer and delete if present */ 
  182493           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  182494             :   /* add assignment to result here */ 
  182495           0 :      result->p_operatorPosition = operatorPosition_copy; 
  182496             :   // case: not a listType for (using conditionalToSetParent)operand_expr
  182497           0 :           if ( (operand_expr_copy != NULL) && (operand_expr_copy->get_parent() == NULL) && (isSgType(operand_expr_copy) == NULL) ) 
  182498             :              { 
  182499           0 :                operand_expr_copy->set_parent(result); 
  182500             :              } 
  182501             : 
  182502             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182503             : 
  182504             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  182505             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  182506             :   // fixupCopy(result,help);
  182507             : 
  182508             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  182509             :   // the Sg_File_Info objects that are built for the new IR nodes.
  182510           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  182511           0 :      if (locatedNode != NULL)
  182512             :         {
  182513             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  182514           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  182515           0 :           ROSE_ASSERT(start != NULL);
  182516             : #if 0
  182517             :        // Debugging information
  182518             :           if (start->get_parent() == NULL)
  182519             :              {
  182520             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182521             :              }
  182522             : #endif
  182523           0 :           start->set_parent(locatedNode);
  182524           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  182525             : 
  182526           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  182527             : 
  182528             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  182529             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  182530             :        // ROSE_ASSERT(end != NULL);
  182531           0 :           if (end == NULL)
  182532             :              {
  182533           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  182534             :              }
  182535             :             else
  182536             :              {
  182537             : #if 0
  182538             :             // Debugging information
  182539             :                if (end->get_parent() == NULL)
  182540             :                   {
  182541             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182542             :                   }
  182543             : #endif
  182544           0 :                end->set_parent(locatedNode);
  182545           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  182546             :              }
  182547             : 
  182548           0 :           SgExpression* expression = isSgExpression(result);
  182549           0 :           if (isSgExpression(this) != NULL)
  182550             :              {
  182551           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  182552             : 
  182553             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  182554           0 :                if (operatorPosition != NULL)
  182555             :                   {
  182556             : #if 0
  182557             :                  // Debugging information
  182558             :                     if (operatorPosition->get_parent() == NULL)
  182559             :                        {
  182560             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182561             :                        }
  182562             : #endif
  182563           0 :                     operatorPosition->set_parent(expression);
  182564           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  182565             :                   }
  182566             :              }
  182567             :         }
  182568             : 
  182569             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  182570           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  182571           0 :      if (initializedName != NULL)
  182572             :         {
  182573             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  182574           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  182575           0 :           ROSE_ASSERT(start != NULL);
  182576             : #if 0
  182577             :        // Debugging information
  182578             :           if (start->get_parent() == NULL)
  182579             :              {
  182580             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182581             :              }
  182582             : #endif
  182583           0 :           start->set_parent(initializedName);
  182584           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  182585             : 
  182586             : #if 0
  182587             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  182588             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  182589             : 
  182590             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  182591             :        // ROSE_ASSERT(end != NULL);
  182592             :           if (end == NULL)
  182593             :              {
  182594             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  182595             :              }
  182596             :             else
  182597             :              {
  182598             :                if (end->get_parent() == NULL)
  182599             :                   {
  182600             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182601             :                   }
  182602             :                end->set_parent(initializedName);
  182603             :                ROSE_ASSERT(end->get_parent() != NULL);
  182604             :              }
  182605             : #endif
  182606             :         }
  182607             : 
  182608             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  182609           0 :      help.insertCopiedNodePair(this,result);
  182610             : 
  182611             :   // printf ("End of copy SgVarArgOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  182612             : 
  182613             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  182614             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  182615           0 :      help.decrementDepth();
  182616             : 
  182617             :   // Test if this is the root of the copy!
  182618           0 :      if (help.get_depth() == 0)
  182619             :         {
  182620             :        // This is the original calling node.
  182621             : 
  182622             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  182623             :        // printf ("Calling SgVarArgOp::fixupCopy() (from root of AST being copied) \n");
  182624             : #if ALT_FIXUP_COPY
  182625             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  182626           0 :           fixupCopy_scopes (result,help);
  182627           0 :           fixupCopy_symbols (result,help);
  182628           0 :           fixupCopy_references (result,help);
  182629             : #else
  182630             :           fixupCopy(result,help);
  182631             : #endif
  182632             :        // Allow this to be called recursively, so accumulate the state.
  182633             :        // Also, clear the state in the SgCopyHelp object.
  182634             :        // help.clearState();
  182635             :         }
  182636             : 
  182637           0 :      return result;
  182638             :    }
  182639             : 
  182640             : 
  182641             : /* #line 182642 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  182642             : 
  182643             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182644             : 
  182645           0 : SgNode* SgVarArgEndOp::copy ( SgCopyHelp& help) const
  182646             :    {
  182647           0 :      SgVarArgEndOp* result = NULL;
  182648             : 
  182649             :   // printf ("Copy SgVarArgEndOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  182650             : 
  182651             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  182652             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  182653             :   // The default value of the depth is 0, so after this call the depth is 1!
  182654           0 :      help.incrementDepth();
  182655             : 
  182656             : #if 0
  182657             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  182658             :   // but it is not generally true that things can only be copied once!
  182659             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  182660             :   // AstAttribute* existingAttribute = const_cast<SgVarArgEndOp*>(this)->attribute["copied"];
  182661             :      bool previouslyCopied = const_cast<SgVarArgEndOp*>(this)->attribute.exists("copied");
  182662             :      if (previouslyCopied == true)
  182663             :         {
  182664             :           this->get_file_info()->display("Called from copy SgVarArgEndOp: debug");
  182665             :         }
  182666             :      ROSE_ASSERT(previouslyCopied == false);
  182667             : 
  182668             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  182669             :      AstAttribute* newAttribute = new AstAttribute();
  182670             :      ROSE_ASSERT(newAttribute != NULL);
  182671             : 
  182672             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  182673             :      const_cast<SgVarArgEndOp*>(this)->attribute.add("copied",newAttribute);
  182674             : #endif
  182675             : 
  182676             :   // Copy data members from base classes
  182677             :   // Copy constructor parameter data member: startOfConstruct_copy
  182678             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  182679             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  182680           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  182681           0 :      if ( p_startOfConstruct != NULL ) 
  182682             :         { 
  182683           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  182684             :         } 
  182685             :        else 
  182686             :         { 
  182687             :           startOfConstruct_copy = NULL; 
  182688             :         } 
  182689             :   // Copy constructor parameter data member: operand_expr_copy
  182690           0 :      SgExpression* operand_expr_copy; 
  182691             :   // case: not a listType for (using conditionalToCopyVariable)operand_expr
  182692           0 :           if (get_operand_expr() != NULL) 
  182693             :              { 
  182694           0 :                operand_expr_copy = static_cast<SgExpression*>(help.copyAst(get_operand_expr())); 
  182695             :              } 
  182696             :             else 
  182697             :              { 
  182698             :                operand_expr_copy = NULL; 
  182699             :              } 
  182700             :   // Copy constructor parameter data member: expression_type_copy
  182701             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  182702             :   // case: toBeCopied == COPY_DATA for expression_type
  182703           0 :      SgType* expression_type_copy = p_expression_type; 
  182704             :  
  182705             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182706             : 
  182707             :   // Build an empty copy of this object (will be filled in, but 
  182708             :   // the parent can't be set and must be set by the caller)
  182709           0 :      result = new SgVarArgEndOp(  startOfConstruct_copy, operand_expr_copy, expression_type_copy );
  182710           0 :      ROSE_ASSERT(result != NULL);
  182711             : 
  182712             :   // Copy data members of "this" class
  182713             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  182714             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  182715             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  182716           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  182717           0 :      if ( p_endOfConstruct != NULL ) 
  182718             :         { 
  182719           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  182720             :         } 
  182721             :        else 
  182722             :         { 
  182723             :           endOfConstruct_copy = NULL; 
  182724             :         } 
  182725             :   /* check for a valid pointer and delete if present */ 
  182726           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  182727             :   /* add assignment to result here */ 
  182728           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  182729             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  182730             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  182731             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  182732           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  182733           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  182734             :         { 
  182735           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  182736             :         } 
  182737             :        else 
  182738             :         { 
  182739             :           attachedPreprocessingInfoPtr_copy = NULL; 
  182740             :         } 
  182741             :   /* check for a valid pointer and delete if present */ 
  182742           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  182743             :   /* add assignment to result here */ 
  182744           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  182745             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  182746             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  182747             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  182748           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  182749           0 :      if ( p_attributeMechanism != NULL ) 
  182750             :         { 
  182751           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  182752             :         } 
  182753             :        else 
  182754             :         { 
  182755             :           attributeMechanism_copy = NULL; 
  182756             :         } 
  182757             :   /* check for a valid pointer and delete if present */ 
  182758           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  182759             :   /* add assignment to result here */ 
  182760           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  182761             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  182762             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  182763             :   // case: toBeCopied == COPY_DATA for need_paren
  182764           0 :      bool need_paren_copy = p_need_paren; 
  182765           0 :      result->p_need_paren = need_paren_copy; 
  182766             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  182767             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  182768             :   // case: toBeCopied == COPY_DATA for lvalue
  182769           0 :      bool lvalue_copy = p_lvalue; 
  182770           0 :      result->p_lvalue = lvalue_copy; 
  182771             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  182772             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  182773             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  182774           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  182775           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  182776             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  182777             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  182778             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  182779           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  182780           0 :      if ( p_operatorPosition != NULL ) 
  182781             :         { 
  182782           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  182783             :         } 
  182784             :        else 
  182785             :         { 
  182786             :           operatorPosition_copy = NULL; 
  182787             :         } 
  182788             :   /* check for a valid pointer and delete if present */ 
  182789           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  182790             :   /* add assignment to result here */ 
  182791           0 :      result->p_operatorPosition = operatorPosition_copy; 
  182792             :   // case: not a listType for (using conditionalToSetParent)operand_expr
  182793           0 :           if ( (operand_expr_copy != NULL) && (operand_expr_copy->get_parent() == NULL) && (isSgType(operand_expr_copy) == NULL) ) 
  182794             :              { 
  182795           0 :                operand_expr_copy->set_parent(result); 
  182796             :              } 
  182797             : 
  182798             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182799             : 
  182800             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  182801             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  182802             :   // fixupCopy(result,help);
  182803             : 
  182804             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  182805             :   // the Sg_File_Info objects that are built for the new IR nodes.
  182806           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  182807           0 :      if (locatedNode != NULL)
  182808             :         {
  182809             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  182810           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  182811           0 :           ROSE_ASSERT(start != NULL);
  182812             : #if 0
  182813             :        // Debugging information
  182814             :           if (start->get_parent() == NULL)
  182815             :              {
  182816             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182817             :              }
  182818             : #endif
  182819           0 :           start->set_parent(locatedNode);
  182820           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  182821             : 
  182822           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  182823             : 
  182824             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  182825             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  182826             :        // ROSE_ASSERT(end != NULL);
  182827           0 :           if (end == NULL)
  182828             :              {
  182829           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  182830             :              }
  182831             :             else
  182832             :              {
  182833             : #if 0
  182834             :             // Debugging information
  182835             :                if (end->get_parent() == NULL)
  182836             :                   {
  182837             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182838             :                   }
  182839             : #endif
  182840           0 :                end->set_parent(locatedNode);
  182841           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  182842             :              }
  182843             : 
  182844           0 :           SgExpression* expression = isSgExpression(result);
  182845           0 :           if (isSgExpression(this) != NULL)
  182846             :              {
  182847           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  182848             : 
  182849             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  182850           0 :                if (operatorPosition != NULL)
  182851             :                   {
  182852             : #if 0
  182853             :                  // Debugging information
  182854             :                     if (operatorPosition->get_parent() == NULL)
  182855             :                        {
  182856             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182857             :                        }
  182858             : #endif
  182859           0 :                     operatorPosition->set_parent(expression);
  182860           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  182861             :                   }
  182862             :              }
  182863             :         }
  182864             : 
  182865             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  182866           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  182867           0 :      if (initializedName != NULL)
  182868             :         {
  182869             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  182870           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  182871           0 :           ROSE_ASSERT(start != NULL);
  182872             : #if 0
  182873             :        // Debugging information
  182874             :           if (start->get_parent() == NULL)
  182875             :              {
  182876             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182877             :              }
  182878             : #endif
  182879           0 :           start->set_parent(initializedName);
  182880           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  182881             : 
  182882             : #if 0
  182883             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  182884             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  182885             : 
  182886             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  182887             :        // ROSE_ASSERT(end != NULL);
  182888             :           if (end == NULL)
  182889             :              {
  182890             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  182891             :              }
  182892             :             else
  182893             :              {
  182894             :                if (end->get_parent() == NULL)
  182895             :                   {
  182896             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  182897             :                   }
  182898             :                end->set_parent(initializedName);
  182899             :                ROSE_ASSERT(end->get_parent() != NULL);
  182900             :              }
  182901             : #endif
  182902             :         }
  182903             : 
  182904             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  182905           0 :      help.insertCopiedNodePair(this,result);
  182906             : 
  182907             :   // printf ("End of copy SgVarArgEndOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  182908             : 
  182909             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  182910             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  182911           0 :      help.decrementDepth();
  182912             : 
  182913             :   // Test if this is the root of the copy!
  182914           0 :      if (help.get_depth() == 0)
  182915             :         {
  182916             :        // This is the original calling node.
  182917             : 
  182918             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  182919             :        // printf ("Calling SgVarArgEndOp::fixupCopy() (from root of AST being copied) \n");
  182920             : #if ALT_FIXUP_COPY
  182921             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  182922           0 :           fixupCopy_scopes (result,help);
  182923           0 :           fixupCopy_symbols (result,help);
  182924           0 :           fixupCopy_references (result,help);
  182925             : #else
  182926             :           fixupCopy(result,help);
  182927             : #endif
  182928             :        // Allow this to be called recursively, so accumulate the state.
  182929             :        // Also, clear the state in the SgCopyHelp object.
  182930             :        // help.clearState();
  182931             :         }
  182932             : 
  182933           0 :      return result;
  182934             :    }
  182935             : 
  182936             : 
  182937             : /* #line 182938 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  182938             : 
  182939             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  182940             : 
  182941           0 : SgNode* SgVarArgCopyOp::copy ( SgCopyHelp& help) const
  182942             :    {
  182943           0 :      SgVarArgCopyOp* result = NULL;
  182944             : 
  182945             :   // printf ("Copy SgVarArgCopyOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  182946             : 
  182947             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  182948             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  182949             :   // The default value of the depth is 0, so after this call the depth is 1!
  182950           0 :      help.incrementDepth();
  182951             : 
  182952             : #if 0
  182953             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  182954             :   // but it is not generally true that things can only be copied once!
  182955             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  182956             :   // AstAttribute* existingAttribute = const_cast<SgVarArgCopyOp*>(this)->attribute["copied"];
  182957             :      bool previouslyCopied = const_cast<SgVarArgCopyOp*>(this)->attribute.exists("copied");
  182958             :      if (previouslyCopied == true)
  182959             :         {
  182960             :           this->get_file_info()->display("Called from copy SgVarArgCopyOp: debug");
  182961             :         }
  182962             :      ROSE_ASSERT(previouslyCopied == false);
  182963             : 
  182964             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  182965             :      AstAttribute* newAttribute = new AstAttribute();
  182966             :      ROSE_ASSERT(newAttribute != NULL);
  182967             : 
  182968             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  182969             :      const_cast<SgVarArgCopyOp*>(this)->attribute.add("copied",newAttribute);
  182970             : #endif
  182971             : 
  182972             :   // Copy data members from base classes
  182973             :   // Copy constructor parameter data member: startOfConstruct_copy
  182974             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  182975             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  182976           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  182977           0 :      if ( p_startOfConstruct != NULL ) 
  182978             :         { 
  182979           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  182980             :         } 
  182981             :        else 
  182982             :         { 
  182983             :           startOfConstruct_copy = NULL; 
  182984             :         } 
  182985             :   // Copy constructor parameter data member: lhs_operand_copy
  182986           0 :      SgExpression* lhs_operand_copy; 
  182987             :   // case: not a listType for (using conditionalToCopyVariable)lhs_operand
  182988           0 :           if (get_lhs_operand() != NULL) 
  182989             :              { 
  182990           0 :                lhs_operand_copy = static_cast<SgExpression*>(help.copyAst(get_lhs_operand())); 
  182991             :              } 
  182992             :             else 
  182993             :              { 
  182994             :                lhs_operand_copy = NULL; 
  182995             :              } 
  182996             :   // Copy constructor parameter data member: rhs_operand_copy
  182997           0 :      SgExpression* rhs_operand_copy; 
  182998             :   // case: not a listType for (using conditionalToCopyVariable)rhs_operand
  182999           0 :           if (get_rhs_operand() != NULL) 
  183000             :              { 
  183001           0 :                rhs_operand_copy = static_cast<SgExpression*>(help.copyAst(get_rhs_operand())); 
  183002             :              } 
  183003             :             else 
  183004             :              { 
  183005             :                rhs_operand_copy = NULL; 
  183006             :              } 
  183007             :   // Copy constructor parameter data member: expression_type_copy
  183008             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  183009             :   // case: toBeCopied == COPY_DATA for expression_type
  183010           0 :      SgType* expression_type_copy = p_expression_type; 
  183011             :  
  183012             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183013             : 
  183014             :   // Build an empty copy of this object (will be filled in, but 
  183015             :   // the parent can't be set and must be set by the caller)
  183016           0 :      result = new SgVarArgCopyOp(  startOfConstruct_copy, lhs_operand_copy, rhs_operand_copy, expression_type_copy );
  183017           0 :      ROSE_ASSERT(result != NULL);
  183018             : 
  183019             :   // Copy data members of "this" class
  183020             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  183021             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  183022             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  183023           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  183024           0 :      if ( p_endOfConstruct != NULL ) 
  183025             :         { 
  183026           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  183027             :         } 
  183028             :        else 
  183029             :         { 
  183030             :           endOfConstruct_copy = NULL; 
  183031             :         } 
  183032             :   /* check for a valid pointer and delete if present */ 
  183033           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  183034             :   /* add assignment to result here */ 
  183035           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  183036             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  183037             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  183038             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  183039           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  183040           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  183041             :         { 
  183042           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  183043             :         } 
  183044             :        else 
  183045             :         { 
  183046             :           attachedPreprocessingInfoPtr_copy = NULL; 
  183047             :         } 
  183048             :   /* check for a valid pointer and delete if present */ 
  183049           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  183050             :   /* add assignment to result here */ 
  183051           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  183052             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  183053             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  183054             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  183055           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  183056           0 :      if ( p_attributeMechanism != NULL ) 
  183057             :         { 
  183058           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  183059             :         } 
  183060             :        else 
  183061             :         { 
  183062             :           attributeMechanism_copy = NULL; 
  183063             :         } 
  183064             :   /* check for a valid pointer and delete if present */ 
  183065           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  183066             :   /* add assignment to result here */ 
  183067           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  183068             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  183069             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  183070             :   // case: toBeCopied == COPY_DATA for need_paren
  183071           0 :      bool need_paren_copy = p_need_paren; 
  183072           0 :      result->p_need_paren = need_paren_copy; 
  183073             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  183074             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  183075             :   // case: toBeCopied == COPY_DATA for lvalue
  183076           0 :      bool lvalue_copy = p_lvalue; 
  183077           0 :      result->p_lvalue = lvalue_copy; 
  183078             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  183079             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  183080             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  183081           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  183082           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  183083             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  183084             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  183085             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  183086           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  183087           0 :      if ( p_operatorPosition != NULL ) 
  183088             :         { 
  183089           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  183090             :         } 
  183091             :        else 
  183092             :         { 
  183093             :           operatorPosition_copy = NULL; 
  183094             :         } 
  183095             :   /* check for a valid pointer and delete if present */ 
  183096           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  183097             :   /* add assignment to result here */ 
  183098           0 :      result->p_operatorPosition = operatorPosition_copy; 
  183099             :   // case: not a listType for (using conditionalToSetParent)lhs_operand
  183100           0 :           if ( (lhs_operand_copy != NULL) && (lhs_operand_copy->get_parent() == NULL) && (isSgType(lhs_operand_copy) == NULL) ) 
  183101             :              { 
  183102           0 :                lhs_operand_copy->set_parent(result); 
  183103             :              } 
  183104             :   // case: not a listType for (using conditionalToSetParent)rhs_operand
  183105           0 :           if ( (rhs_operand_copy != NULL) && (rhs_operand_copy->get_parent() == NULL) && (isSgType(rhs_operand_copy) == NULL) ) 
  183106             :              { 
  183107           0 :                rhs_operand_copy->set_parent(result); 
  183108             :              } 
  183109             : 
  183110             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183111             : 
  183112             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  183113             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  183114             :   // fixupCopy(result,help);
  183115             : 
  183116             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  183117             :   // the Sg_File_Info objects that are built for the new IR nodes.
  183118           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  183119           0 :      if (locatedNode != NULL)
  183120             :         {
  183121             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  183122           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  183123           0 :           ROSE_ASSERT(start != NULL);
  183124             : #if 0
  183125             :        // Debugging information
  183126             :           if (start->get_parent() == NULL)
  183127             :              {
  183128             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183129             :              }
  183130             : #endif
  183131           0 :           start->set_parent(locatedNode);
  183132           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  183133             : 
  183134           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  183135             : 
  183136             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  183137             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  183138             :        // ROSE_ASSERT(end != NULL);
  183139           0 :           if (end == NULL)
  183140             :              {
  183141           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  183142             :              }
  183143             :             else
  183144             :              {
  183145             : #if 0
  183146             :             // Debugging information
  183147             :                if (end->get_parent() == NULL)
  183148             :                   {
  183149             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183150             :                   }
  183151             : #endif
  183152           0 :                end->set_parent(locatedNode);
  183153           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  183154             :              }
  183155             : 
  183156           0 :           SgExpression* expression = isSgExpression(result);
  183157           0 :           if (isSgExpression(this) != NULL)
  183158             :              {
  183159           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  183160             : 
  183161             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  183162           0 :                if (operatorPosition != NULL)
  183163             :                   {
  183164             : #if 0
  183165             :                  // Debugging information
  183166             :                     if (operatorPosition->get_parent() == NULL)
  183167             :                        {
  183168             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183169             :                        }
  183170             : #endif
  183171           0 :                     operatorPosition->set_parent(expression);
  183172           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  183173             :                   }
  183174             :              }
  183175             :         }
  183176             : 
  183177             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  183178           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  183179           0 :      if (initializedName != NULL)
  183180             :         {
  183181             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  183182           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  183183           0 :           ROSE_ASSERT(start != NULL);
  183184             : #if 0
  183185             :        // Debugging information
  183186             :           if (start->get_parent() == NULL)
  183187             :              {
  183188             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183189             :              }
  183190             : #endif
  183191           0 :           start->set_parent(initializedName);
  183192           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  183193             : 
  183194             : #if 0
  183195             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  183196             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  183197             : 
  183198             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  183199             :        // ROSE_ASSERT(end != NULL);
  183200             :           if (end == NULL)
  183201             :              {
  183202             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  183203             :              }
  183204             :             else
  183205             :              {
  183206             :                if (end->get_parent() == NULL)
  183207             :                   {
  183208             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183209             :                   }
  183210             :                end->set_parent(initializedName);
  183211             :                ROSE_ASSERT(end->get_parent() != NULL);
  183212             :              }
  183213             : #endif
  183214             :         }
  183215             : 
  183216             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  183217           0 :      help.insertCopiedNodePair(this,result);
  183218             : 
  183219             :   // printf ("End of copy SgVarArgCopyOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  183220             : 
  183221             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  183222             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  183223           0 :      help.decrementDepth();
  183224             : 
  183225             :   // Test if this is the root of the copy!
  183226           0 :      if (help.get_depth() == 0)
  183227             :         {
  183228             :        // This is the original calling node.
  183229             : 
  183230             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  183231             :        // printf ("Calling SgVarArgCopyOp::fixupCopy() (from root of AST being copied) \n");
  183232             : #if ALT_FIXUP_COPY
  183233             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  183234           0 :           fixupCopy_scopes (result,help);
  183235           0 :           fixupCopy_symbols (result,help);
  183236           0 :           fixupCopy_references (result,help);
  183237             : #else
  183238             :           fixupCopy(result,help);
  183239             : #endif
  183240             :        // Allow this to be called recursively, so accumulate the state.
  183241             :        // Also, clear the state in the SgCopyHelp object.
  183242             :        // help.clearState();
  183243             :         }
  183244             : 
  183245           0 :      return result;
  183246             :    }
  183247             : 
  183248             : 
  183249             : /* #line 183250 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  183250             : 
  183251             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183252             : 
  183253           0 : SgNode* SgVarArgStartOneOperandOp::copy ( SgCopyHelp& help) const
  183254             :    {
  183255           0 :      SgVarArgStartOneOperandOp* result = NULL;
  183256             : 
  183257             :   // printf ("Copy SgVarArgStartOneOperandOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  183258             : 
  183259             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  183260             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  183261             :   // The default value of the depth is 0, so after this call the depth is 1!
  183262           0 :      help.incrementDepth();
  183263             : 
  183264             : #if 0
  183265             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  183266             :   // but it is not generally true that things can only be copied once!
  183267             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  183268             :   // AstAttribute* existingAttribute = const_cast<SgVarArgStartOneOperandOp*>(this)->attribute["copied"];
  183269             :      bool previouslyCopied = const_cast<SgVarArgStartOneOperandOp*>(this)->attribute.exists("copied");
  183270             :      if (previouslyCopied == true)
  183271             :         {
  183272             :           this->get_file_info()->display("Called from copy SgVarArgStartOneOperandOp: debug");
  183273             :         }
  183274             :      ROSE_ASSERT(previouslyCopied == false);
  183275             : 
  183276             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  183277             :      AstAttribute* newAttribute = new AstAttribute();
  183278             :      ROSE_ASSERT(newAttribute != NULL);
  183279             : 
  183280             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  183281             :      const_cast<SgVarArgStartOneOperandOp*>(this)->attribute.add("copied",newAttribute);
  183282             : #endif
  183283             : 
  183284             :   // Copy data members from base classes
  183285             :   // Copy constructor parameter data member: startOfConstruct_copy
  183286             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  183287             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  183288           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  183289           0 :      if ( p_startOfConstruct != NULL ) 
  183290             :         { 
  183291           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  183292             :         } 
  183293             :        else 
  183294             :         { 
  183295             :           startOfConstruct_copy = NULL; 
  183296             :         } 
  183297             :   // Copy constructor parameter data member: operand_expr_copy
  183298           0 :      SgExpression* operand_expr_copy; 
  183299             :   // case: not a listType for (using conditionalToCopyVariable)operand_expr
  183300           0 :           if (get_operand_expr() != NULL) 
  183301             :              { 
  183302           0 :                operand_expr_copy = static_cast<SgExpression*>(help.copyAst(get_operand_expr())); 
  183303             :              } 
  183304             :             else 
  183305             :              { 
  183306             :                operand_expr_copy = NULL; 
  183307             :              } 
  183308             :   // Copy constructor parameter data member: expression_type_copy
  183309             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  183310             :   // case: toBeCopied == COPY_DATA for expression_type
  183311           0 :      SgType* expression_type_copy = p_expression_type; 
  183312             :  
  183313             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183314             : 
  183315             :   // Build an empty copy of this object (will be filled in, but 
  183316             :   // the parent can't be set and must be set by the caller)
  183317           0 :      result = new SgVarArgStartOneOperandOp(  startOfConstruct_copy, operand_expr_copy, expression_type_copy );
  183318           0 :      ROSE_ASSERT(result != NULL);
  183319             : 
  183320             :   // Copy data members of "this" class
  183321             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  183322             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  183323             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  183324           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  183325           0 :      if ( p_endOfConstruct != NULL ) 
  183326             :         { 
  183327           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  183328             :         } 
  183329             :        else 
  183330             :         { 
  183331             :           endOfConstruct_copy = NULL; 
  183332             :         } 
  183333             :   /* check for a valid pointer and delete if present */ 
  183334           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  183335             :   /* add assignment to result here */ 
  183336           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  183337             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  183338             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  183339             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  183340           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  183341           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  183342             :         { 
  183343           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  183344             :         } 
  183345             :        else 
  183346             :         { 
  183347             :           attachedPreprocessingInfoPtr_copy = NULL; 
  183348             :         } 
  183349             :   /* check for a valid pointer and delete if present */ 
  183350           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  183351             :   /* add assignment to result here */ 
  183352           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  183353             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  183354             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  183355             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  183356           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  183357           0 :      if ( p_attributeMechanism != NULL ) 
  183358             :         { 
  183359           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  183360             :         } 
  183361             :        else 
  183362             :         { 
  183363             :           attributeMechanism_copy = NULL; 
  183364             :         } 
  183365             :   /* check for a valid pointer and delete if present */ 
  183366           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  183367             :   /* add assignment to result here */ 
  183368           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  183369             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  183370             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  183371             :   // case: toBeCopied == COPY_DATA for need_paren
  183372           0 :      bool need_paren_copy = p_need_paren; 
  183373           0 :      result->p_need_paren = need_paren_copy; 
  183374             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  183375             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  183376             :   // case: toBeCopied == COPY_DATA for lvalue
  183377           0 :      bool lvalue_copy = p_lvalue; 
  183378           0 :      result->p_lvalue = lvalue_copy; 
  183379             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  183380             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  183381             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  183382           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  183383           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  183384             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  183385             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  183386             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  183387           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  183388           0 :      if ( p_operatorPosition != NULL ) 
  183389             :         { 
  183390           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  183391             :         } 
  183392             :        else 
  183393             :         { 
  183394             :           operatorPosition_copy = NULL; 
  183395             :         } 
  183396             :   /* check for a valid pointer and delete if present */ 
  183397           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  183398             :   /* add assignment to result here */ 
  183399           0 :      result->p_operatorPosition = operatorPosition_copy; 
  183400             :   // case: not a listType for (using conditionalToSetParent)operand_expr
  183401           0 :           if ( (operand_expr_copy != NULL) && (operand_expr_copy->get_parent() == NULL) && (isSgType(operand_expr_copy) == NULL) ) 
  183402             :              { 
  183403           0 :                operand_expr_copy->set_parent(result); 
  183404             :              } 
  183405             : 
  183406             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183407             : 
  183408             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  183409             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  183410             :   // fixupCopy(result,help);
  183411             : 
  183412             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  183413             :   // the Sg_File_Info objects that are built for the new IR nodes.
  183414           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  183415           0 :      if (locatedNode != NULL)
  183416             :         {
  183417             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  183418           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  183419           0 :           ROSE_ASSERT(start != NULL);
  183420             : #if 0
  183421             :        // Debugging information
  183422             :           if (start->get_parent() == NULL)
  183423             :              {
  183424             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183425             :              }
  183426             : #endif
  183427           0 :           start->set_parent(locatedNode);
  183428           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  183429             : 
  183430           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  183431             : 
  183432             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  183433             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  183434             :        // ROSE_ASSERT(end != NULL);
  183435           0 :           if (end == NULL)
  183436             :              {
  183437           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  183438             :              }
  183439             :             else
  183440             :              {
  183441             : #if 0
  183442             :             // Debugging information
  183443             :                if (end->get_parent() == NULL)
  183444             :                   {
  183445             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183446             :                   }
  183447             : #endif
  183448           0 :                end->set_parent(locatedNode);
  183449           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  183450             :              }
  183451             : 
  183452           0 :           SgExpression* expression = isSgExpression(result);
  183453           0 :           if (isSgExpression(this) != NULL)
  183454             :              {
  183455           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  183456             : 
  183457             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  183458           0 :                if (operatorPosition != NULL)
  183459             :                   {
  183460             : #if 0
  183461             :                  // Debugging information
  183462             :                     if (operatorPosition->get_parent() == NULL)
  183463             :                        {
  183464             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183465             :                        }
  183466             : #endif
  183467           0 :                     operatorPosition->set_parent(expression);
  183468           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  183469             :                   }
  183470             :              }
  183471             :         }
  183472             : 
  183473             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  183474           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  183475           0 :      if (initializedName != NULL)
  183476             :         {
  183477             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  183478           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  183479           0 :           ROSE_ASSERT(start != NULL);
  183480             : #if 0
  183481             :        // Debugging information
  183482             :           if (start->get_parent() == NULL)
  183483             :              {
  183484             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183485             :              }
  183486             : #endif
  183487           0 :           start->set_parent(initializedName);
  183488           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  183489             : 
  183490             : #if 0
  183491             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  183492             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  183493             : 
  183494             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  183495             :        // ROSE_ASSERT(end != NULL);
  183496             :           if (end == NULL)
  183497             :              {
  183498             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  183499             :              }
  183500             :             else
  183501             :              {
  183502             :                if (end->get_parent() == NULL)
  183503             :                   {
  183504             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183505             :                   }
  183506             :                end->set_parent(initializedName);
  183507             :                ROSE_ASSERT(end->get_parent() != NULL);
  183508             :              }
  183509             : #endif
  183510             :         }
  183511             : 
  183512             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  183513           0 :      help.insertCopiedNodePair(this,result);
  183514             : 
  183515             :   // printf ("End of copy SgVarArgStartOneOperandOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  183516             : 
  183517             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  183518             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  183519           0 :      help.decrementDepth();
  183520             : 
  183521             :   // Test if this is the root of the copy!
  183522           0 :      if (help.get_depth() == 0)
  183523             :         {
  183524             :        // This is the original calling node.
  183525             : 
  183526             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  183527             :        // printf ("Calling SgVarArgStartOneOperandOp::fixupCopy() (from root of AST being copied) \n");
  183528             : #if ALT_FIXUP_COPY
  183529             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  183530           0 :           fixupCopy_scopes (result,help);
  183531           0 :           fixupCopy_symbols (result,help);
  183532           0 :           fixupCopy_references (result,help);
  183533             : #else
  183534             :           fixupCopy(result,help);
  183535             : #endif
  183536             :        // Allow this to be called recursively, so accumulate the state.
  183537             :        // Also, clear the state in the SgCopyHelp object.
  183538             :        // help.clearState();
  183539             :         }
  183540             : 
  183541           0 :      return result;
  183542             :    }
  183543             : 
  183544             : 
  183545             : /* #line 183546 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  183546             : 
  183547             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183548             : 
  183549           0 : SgNode* SgNullExpression::copy ( SgCopyHelp& help) const
  183550             :    {
  183551           0 :      SgNullExpression* result = NULL;
  183552             : 
  183553             :   // printf ("Copy SgNullExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  183554             : 
  183555             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  183556             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  183557             :   // The default value of the depth is 0, so after this call the depth is 1!
  183558           0 :      help.incrementDepth();
  183559             : 
  183560             : #if 0
  183561             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  183562             :   // but it is not generally true that things can only be copied once!
  183563             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  183564             :   // AstAttribute* existingAttribute = const_cast<SgNullExpression*>(this)->attribute["copied"];
  183565             :      bool previouslyCopied = const_cast<SgNullExpression*>(this)->attribute.exists("copied");
  183566             :      if (previouslyCopied == true)
  183567             :         {
  183568             :           this->get_file_info()->display("Called from copy SgNullExpression: debug");
  183569             :         }
  183570             :      ROSE_ASSERT(previouslyCopied == false);
  183571             : 
  183572             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  183573             :      AstAttribute* newAttribute = new AstAttribute();
  183574             :      ROSE_ASSERT(newAttribute != NULL);
  183575             : 
  183576             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  183577             :      const_cast<SgNullExpression*>(this)->attribute.add("copied",newAttribute);
  183578             : #endif
  183579             : 
  183580             :   // Copy data members from base classes
  183581             :   // Copy constructor parameter data member: startOfConstruct_copy
  183582             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  183583             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  183584           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  183585           0 :      if ( p_startOfConstruct != NULL ) 
  183586             :         { 
  183587           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  183588             :         } 
  183589             :        else 
  183590             :         { 
  183591             :           startOfConstruct_copy = NULL; 
  183592             :         } 
  183593             :  
  183594             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183595             : 
  183596             :   // Build an empty copy of this object (will be filled in, but 
  183597             :   // the parent can't be set and must be set by the caller)
  183598           0 :      result = new SgNullExpression(  startOfConstruct_copy );
  183599           0 :      ROSE_ASSERT(result != NULL);
  183600             : 
  183601             :   // Copy data members of "this" class
  183602             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  183603             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  183604             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  183605           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  183606           0 :      if ( p_endOfConstruct != NULL ) 
  183607             :         { 
  183608           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  183609             :         } 
  183610             :        else 
  183611             :         { 
  183612             :           endOfConstruct_copy = NULL; 
  183613             :         } 
  183614             :   /* check for a valid pointer and delete if present */ 
  183615           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  183616             :   /* add assignment to result here */ 
  183617           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  183618             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  183619             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  183620             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  183621           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  183622           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  183623             :         { 
  183624           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  183625             :         } 
  183626             :        else 
  183627             :         { 
  183628             :           attachedPreprocessingInfoPtr_copy = NULL; 
  183629             :         } 
  183630             :   /* check for a valid pointer and delete if present */ 
  183631           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  183632             :   /* add assignment to result here */ 
  183633           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  183634             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  183635             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  183636             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  183637           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  183638           0 :      if ( p_attributeMechanism != NULL ) 
  183639             :         { 
  183640           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  183641             :         } 
  183642             :        else 
  183643             :         { 
  183644             :           attributeMechanism_copy = NULL; 
  183645             :         } 
  183646             :   /* check for a valid pointer and delete if present */ 
  183647           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  183648             :   /* add assignment to result here */ 
  183649           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  183650             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  183651             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  183652             :   // case: toBeCopied == COPY_DATA for need_paren
  183653           0 :      bool need_paren_copy = p_need_paren; 
  183654           0 :      result->p_need_paren = need_paren_copy; 
  183655             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  183656             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  183657             :   // case: toBeCopied == COPY_DATA for lvalue
  183658           0 :      bool lvalue_copy = p_lvalue; 
  183659           0 :      result->p_lvalue = lvalue_copy; 
  183660             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  183661             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  183662             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  183663           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  183664           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  183665             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  183666             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  183667             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  183668           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  183669           0 :      if ( p_operatorPosition != NULL ) 
  183670             :         { 
  183671           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  183672             :         } 
  183673             :        else 
  183674             :         { 
  183675             :           operatorPosition_copy = NULL; 
  183676             :         } 
  183677             :   /* check for a valid pointer and delete if present */ 
  183678           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  183679             :   /* add assignment to result here */ 
  183680           0 :      result->p_operatorPosition = operatorPosition_copy; 
  183681             : 
  183682             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183683             : 
  183684             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  183685             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  183686             :   // fixupCopy(result,help);
  183687             : 
  183688             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  183689             :   // the Sg_File_Info objects that are built for the new IR nodes.
  183690           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  183691           0 :      if (locatedNode != NULL)
  183692             :         {
  183693             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  183694           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  183695           0 :           ROSE_ASSERT(start != NULL);
  183696             : #if 0
  183697             :        // Debugging information
  183698             :           if (start->get_parent() == NULL)
  183699             :              {
  183700             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183701             :              }
  183702             : #endif
  183703           0 :           start->set_parent(locatedNode);
  183704           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  183705             : 
  183706           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  183707             : 
  183708             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  183709             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  183710             :        // ROSE_ASSERT(end != NULL);
  183711           0 :           if (end == NULL)
  183712             :              {
  183713           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  183714             :              }
  183715             :             else
  183716             :              {
  183717             : #if 0
  183718             :             // Debugging information
  183719             :                if (end->get_parent() == NULL)
  183720             :                   {
  183721             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183722             :                   }
  183723             : #endif
  183724           0 :                end->set_parent(locatedNode);
  183725           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  183726             :              }
  183727             : 
  183728           0 :           SgExpression* expression = isSgExpression(result);
  183729           0 :           if (isSgExpression(this) != NULL)
  183730             :              {
  183731           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  183732             : 
  183733             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  183734           0 :                if (operatorPosition != NULL)
  183735             :                   {
  183736             : #if 0
  183737             :                  // Debugging information
  183738             :                     if (operatorPosition->get_parent() == NULL)
  183739             :                        {
  183740             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183741             :                        }
  183742             : #endif
  183743           0 :                     operatorPosition->set_parent(expression);
  183744           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  183745             :                   }
  183746             :              }
  183747             :         }
  183748             : 
  183749             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  183750           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  183751           0 :      if (initializedName != NULL)
  183752             :         {
  183753             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  183754           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  183755           0 :           ROSE_ASSERT(start != NULL);
  183756             : #if 0
  183757             :        // Debugging information
  183758             :           if (start->get_parent() == NULL)
  183759             :              {
  183760             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183761             :              }
  183762             : #endif
  183763           0 :           start->set_parent(initializedName);
  183764           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  183765             : 
  183766             : #if 0
  183767             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  183768             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  183769             : 
  183770             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  183771             :        // ROSE_ASSERT(end != NULL);
  183772             :           if (end == NULL)
  183773             :              {
  183774             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  183775             :              }
  183776             :             else
  183777             :              {
  183778             :                if (end->get_parent() == NULL)
  183779             :                   {
  183780             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183781             :                   }
  183782             :                end->set_parent(initializedName);
  183783             :                ROSE_ASSERT(end->get_parent() != NULL);
  183784             :              }
  183785             : #endif
  183786             :         }
  183787             : 
  183788             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  183789           0 :      help.insertCopiedNodePair(this,result);
  183790             : 
  183791             :   // printf ("End of copy SgNullExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  183792             : 
  183793             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  183794             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  183795           0 :      help.decrementDepth();
  183796             : 
  183797             :   // Test if this is the root of the copy!
  183798           0 :      if (help.get_depth() == 0)
  183799             :         {
  183800             :        // This is the original calling node.
  183801             : 
  183802             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  183803             :        // printf ("Calling SgNullExpression::fixupCopy() (from root of AST being copied) \n");
  183804             : #if ALT_FIXUP_COPY
  183805             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  183806           0 :           fixupCopy_scopes (result,help);
  183807           0 :           fixupCopy_symbols (result,help);
  183808           0 :           fixupCopy_references (result,help);
  183809             : #else
  183810             :           fixupCopy(result,help);
  183811             : #endif
  183812             :        // Allow this to be called recursively, so accumulate the state.
  183813             :        // Also, clear the state in the SgCopyHelp object.
  183814             :        // help.clearState();
  183815             :         }
  183816             : 
  183817           0 :      return result;
  183818             :    }
  183819             : 
  183820             : 
  183821             : /* #line 183822 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  183822             : 
  183823             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183824             : 
  183825           0 : SgNode* SgVariantExpression::copy ( SgCopyHelp& help) const
  183826             :    {
  183827           0 :      SgVariantExpression* result = NULL;
  183828             : 
  183829             :   // printf ("Copy SgVariantExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  183830             : 
  183831             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  183832             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  183833             :   // The default value of the depth is 0, so after this call the depth is 1!
  183834           0 :      help.incrementDepth();
  183835             : 
  183836             : #if 0
  183837             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  183838             :   // but it is not generally true that things can only be copied once!
  183839             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  183840             :   // AstAttribute* existingAttribute = const_cast<SgVariantExpression*>(this)->attribute["copied"];
  183841             :      bool previouslyCopied = const_cast<SgVariantExpression*>(this)->attribute.exists("copied");
  183842             :      if (previouslyCopied == true)
  183843             :         {
  183844             :           this->get_file_info()->display("Called from copy SgVariantExpression: debug");
  183845             :         }
  183846             :      ROSE_ASSERT(previouslyCopied == false);
  183847             : 
  183848             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  183849             :      AstAttribute* newAttribute = new AstAttribute();
  183850             :      ROSE_ASSERT(newAttribute != NULL);
  183851             : 
  183852             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  183853             :      const_cast<SgVariantExpression*>(this)->attribute.add("copied",newAttribute);
  183854             : #endif
  183855             : 
  183856             :   // Copy data members from base classes
  183857             :   // Copy constructor parameter data member: startOfConstruct_copy
  183858             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  183859             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  183860           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  183861           0 :      if ( p_startOfConstruct != NULL ) 
  183862             :         { 
  183863           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  183864             :         } 
  183865             :        else 
  183866             :         { 
  183867             :           startOfConstruct_copy = NULL; 
  183868             :         } 
  183869             :  
  183870             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183871             : 
  183872             :   // Build an empty copy of this object (will be filled in, but 
  183873             :   // the parent can't be set and must be set by the caller)
  183874           0 :      result = new SgVariantExpression(  startOfConstruct_copy );
  183875           0 :      ROSE_ASSERT(result != NULL);
  183876             : 
  183877             :   // Copy data members of "this" class
  183878             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  183879             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  183880             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  183881           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  183882           0 :      if ( p_endOfConstruct != NULL ) 
  183883             :         { 
  183884           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  183885             :         } 
  183886             :        else 
  183887             :         { 
  183888             :           endOfConstruct_copy = NULL; 
  183889             :         } 
  183890             :   /* check for a valid pointer and delete if present */ 
  183891           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  183892             :   /* add assignment to result here */ 
  183893           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  183894             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  183895             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  183896             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  183897           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  183898           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  183899             :         { 
  183900           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  183901             :         } 
  183902             :        else 
  183903             :         { 
  183904             :           attachedPreprocessingInfoPtr_copy = NULL; 
  183905             :         } 
  183906             :   /* check for a valid pointer and delete if present */ 
  183907           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  183908             :   /* add assignment to result here */ 
  183909           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  183910             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  183911             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  183912             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  183913           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  183914           0 :      if ( p_attributeMechanism != NULL ) 
  183915             :         { 
  183916           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  183917             :         } 
  183918             :        else 
  183919             :         { 
  183920             :           attributeMechanism_copy = NULL; 
  183921             :         } 
  183922             :   /* check for a valid pointer and delete if present */ 
  183923           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  183924             :   /* add assignment to result here */ 
  183925           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  183926             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  183927             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  183928             :   // case: toBeCopied == COPY_DATA for need_paren
  183929           0 :      bool need_paren_copy = p_need_paren; 
  183930           0 :      result->p_need_paren = need_paren_copy; 
  183931             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  183932             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  183933             :   // case: toBeCopied == COPY_DATA for lvalue
  183934           0 :      bool lvalue_copy = p_lvalue; 
  183935           0 :      result->p_lvalue = lvalue_copy; 
  183936             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  183937             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  183938             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  183939           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  183940           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  183941             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  183942             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  183943             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  183944           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  183945           0 :      if ( p_operatorPosition != NULL ) 
  183946             :         { 
  183947           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  183948             :         } 
  183949             :        else 
  183950             :         { 
  183951             :           operatorPosition_copy = NULL; 
  183952             :         } 
  183953             :   /* check for a valid pointer and delete if present */ 
  183954           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  183955             :   /* add assignment to result here */ 
  183956           0 :      result->p_operatorPosition = operatorPosition_copy; 
  183957             : 
  183958             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  183959             : 
  183960             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  183961             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  183962             :   // fixupCopy(result,help);
  183963             : 
  183964             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  183965             :   // the Sg_File_Info objects that are built for the new IR nodes.
  183966           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  183967           0 :      if (locatedNode != NULL)
  183968             :         {
  183969             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  183970           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  183971           0 :           ROSE_ASSERT(start != NULL);
  183972             : #if 0
  183973             :        // Debugging information
  183974             :           if (start->get_parent() == NULL)
  183975             :              {
  183976             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183977             :              }
  183978             : #endif
  183979           0 :           start->set_parent(locatedNode);
  183980           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  183981             : 
  183982           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  183983             : 
  183984             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  183985             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  183986             :        // ROSE_ASSERT(end != NULL);
  183987           0 :           if (end == NULL)
  183988             :              {
  183989           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  183990             :              }
  183991             :             else
  183992             :              {
  183993             : #if 0
  183994             :             // Debugging information
  183995             :                if (end->get_parent() == NULL)
  183996             :                   {
  183997             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  183998             :                   }
  183999             : #endif
  184000           0 :                end->set_parent(locatedNode);
  184001           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  184002             :              }
  184003             : 
  184004           0 :           SgExpression* expression = isSgExpression(result);
  184005           0 :           if (isSgExpression(this) != NULL)
  184006             :              {
  184007           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  184008             : 
  184009             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  184010           0 :                if (operatorPosition != NULL)
  184011             :                   {
  184012             : #if 0
  184013             :                  // Debugging information
  184014             :                     if (operatorPosition->get_parent() == NULL)
  184015             :                        {
  184016             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184017             :                        }
  184018             : #endif
  184019           0 :                     operatorPosition->set_parent(expression);
  184020           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  184021             :                   }
  184022             :              }
  184023             :         }
  184024             : 
  184025             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  184026           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  184027           0 :      if (initializedName != NULL)
  184028             :         {
  184029             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  184030           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  184031           0 :           ROSE_ASSERT(start != NULL);
  184032             : #if 0
  184033             :        // Debugging information
  184034             :           if (start->get_parent() == NULL)
  184035             :              {
  184036             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184037             :              }
  184038             : #endif
  184039           0 :           start->set_parent(initializedName);
  184040           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  184041             : 
  184042             : #if 0
  184043             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  184044             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  184045             : 
  184046             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  184047             :        // ROSE_ASSERT(end != NULL);
  184048             :           if (end == NULL)
  184049             :              {
  184050             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  184051             :              }
  184052             :             else
  184053             :              {
  184054             :                if (end->get_parent() == NULL)
  184055             :                   {
  184056             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184057             :                   }
  184058             :                end->set_parent(initializedName);
  184059             :                ROSE_ASSERT(end->get_parent() != NULL);
  184060             :              }
  184061             : #endif
  184062             :         }
  184063             : 
  184064             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  184065           0 :      help.insertCopiedNodePair(this,result);
  184066             : 
  184067             :   // printf ("End of copy SgVariantExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  184068             : 
  184069             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  184070             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  184071           0 :      help.decrementDepth();
  184072             : 
  184073             :   // Test if this is the root of the copy!
  184074           0 :      if (help.get_depth() == 0)
  184075             :         {
  184076             :        // This is the original calling node.
  184077             : 
  184078             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  184079             :        // printf ("Calling SgVariantExpression::fixupCopy() (from root of AST being copied) \n");
  184080             : #if ALT_FIXUP_COPY
  184081             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  184082           0 :           fixupCopy_scopes (result,help);
  184083           0 :           fixupCopy_symbols (result,help);
  184084           0 :           fixupCopy_references (result,help);
  184085             : #else
  184086             :           fixupCopy(result,help);
  184087             : #endif
  184088             :        // Allow this to be called recursively, so accumulate the state.
  184089             :        // Also, clear the state in the SgCopyHelp object.
  184090             :        // help.clearState();
  184091             :         }
  184092             : 
  184093           0 :      return result;
  184094             :    }
  184095             : 
  184096             : 
  184097             : /* #line 184098 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  184098             : 
  184099             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184100             : 
  184101           0 : SgNode* SgSubscriptExpression::copy ( SgCopyHelp& help) const
  184102             :    {
  184103           0 :      SgSubscriptExpression* result = NULL;
  184104             : 
  184105             :   // printf ("Copy SgSubscriptExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  184106             : 
  184107             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  184108             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  184109             :   // The default value of the depth is 0, so after this call the depth is 1!
  184110           0 :      help.incrementDepth();
  184111             : 
  184112             : #if 0
  184113             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  184114             :   // but it is not generally true that things can only be copied once!
  184115             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  184116             :   // AstAttribute* existingAttribute = const_cast<SgSubscriptExpression*>(this)->attribute["copied"];
  184117             :      bool previouslyCopied = const_cast<SgSubscriptExpression*>(this)->attribute.exists("copied");
  184118             :      if (previouslyCopied == true)
  184119             :         {
  184120             :           this->get_file_info()->display("Called from copy SgSubscriptExpression: debug");
  184121             :         }
  184122             :      ROSE_ASSERT(previouslyCopied == false);
  184123             : 
  184124             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  184125             :      AstAttribute* newAttribute = new AstAttribute();
  184126             :      ROSE_ASSERT(newAttribute != NULL);
  184127             : 
  184128             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  184129             :      const_cast<SgSubscriptExpression*>(this)->attribute.add("copied",newAttribute);
  184130             : #endif
  184131             : 
  184132             :   // Copy data members from base classes
  184133             :   // Copy constructor parameter data member: startOfConstruct_copy
  184134             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  184135             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  184136           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  184137           0 :      if ( p_startOfConstruct != NULL ) 
  184138             :         { 
  184139           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  184140             :         } 
  184141             :        else 
  184142             :         { 
  184143             :           startOfConstruct_copy = NULL; 
  184144             :         } 
  184145             :   // Copy constructor parameter data member: lowerBound_copy
  184146           0 :      SgExpression* lowerBound_copy; 
  184147             :   // case: not a listType for (using conditionalToCopyVariable)lowerBound
  184148           0 :           if (get_lowerBound() != NULL) 
  184149             :              { 
  184150           0 :                lowerBound_copy = static_cast<SgExpression*>(help.copyAst(get_lowerBound())); 
  184151             :              } 
  184152             :             else 
  184153             :              { 
  184154             :                lowerBound_copy = NULL; 
  184155             :              } 
  184156             :   // Copy constructor parameter data member: upperBound_copy
  184157           0 :      SgExpression* upperBound_copy; 
  184158             :   // case: not a listType for (using conditionalToCopyVariable)upperBound
  184159           0 :           if (get_upperBound() != NULL) 
  184160             :              { 
  184161           0 :                upperBound_copy = static_cast<SgExpression*>(help.copyAst(get_upperBound())); 
  184162             :              } 
  184163             :             else 
  184164             :              { 
  184165             :                upperBound_copy = NULL; 
  184166             :              } 
  184167             :   // Copy constructor parameter data member: stride_copy
  184168           0 :      SgExpression* stride_copy; 
  184169             :   // case: not a listType for (using conditionalToCopyVariable)stride
  184170           0 :           if (get_stride() != NULL) 
  184171             :              { 
  184172           0 :                stride_copy = static_cast<SgExpression*>(help.copyAst(get_stride())); 
  184173             :              } 
  184174             :             else 
  184175             :              { 
  184176             :                stride_copy = NULL; 
  184177             :              } 
  184178             :  
  184179             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184180             : 
  184181             :   // Build an empty copy of this object (will be filled in, but 
  184182             :   // the parent can't be set and must be set by the caller)
  184183           0 :      result = new SgSubscriptExpression(  startOfConstruct_copy, lowerBound_copy, upperBound_copy, stride_copy );
  184184           0 :      ROSE_ASSERT(result != NULL);
  184185             : 
  184186             :   // Copy data members of "this" class
  184187             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  184188             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  184189             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  184190           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  184191           0 :      if ( p_endOfConstruct != NULL ) 
  184192             :         { 
  184193           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  184194             :         } 
  184195             :        else 
  184196             :         { 
  184197             :           endOfConstruct_copy = NULL; 
  184198             :         } 
  184199             :   /* check for a valid pointer and delete if present */ 
  184200           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  184201             :   /* add assignment to result here */ 
  184202           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  184203             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  184204             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  184205             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  184206           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  184207           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  184208             :         { 
  184209           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  184210             :         } 
  184211             :        else 
  184212             :         { 
  184213             :           attachedPreprocessingInfoPtr_copy = NULL; 
  184214             :         } 
  184215             :   /* check for a valid pointer and delete if present */ 
  184216           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  184217             :   /* add assignment to result here */ 
  184218           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  184219             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  184220             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  184221             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  184222           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  184223           0 :      if ( p_attributeMechanism != NULL ) 
  184224             :         { 
  184225           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  184226             :         } 
  184227             :        else 
  184228             :         { 
  184229             :           attributeMechanism_copy = NULL; 
  184230             :         } 
  184231             :   /* check for a valid pointer and delete if present */ 
  184232           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  184233             :   /* add assignment to result here */ 
  184234           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  184235             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  184236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  184237             :   // case: toBeCopied == COPY_DATA for need_paren
  184238           0 :      bool need_paren_copy = p_need_paren; 
  184239           0 :      result->p_need_paren = need_paren_copy; 
  184240             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  184241             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  184242             :   // case: toBeCopied == COPY_DATA for lvalue
  184243           0 :      bool lvalue_copy = p_lvalue; 
  184244           0 :      result->p_lvalue = lvalue_copy; 
  184245             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  184246             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  184247             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  184248           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  184249           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  184250             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  184251             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  184252             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  184253           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  184254           0 :      if ( p_operatorPosition != NULL ) 
  184255             :         { 
  184256           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  184257             :         } 
  184258             :        else 
  184259             :         { 
  184260             :           operatorPosition_copy = NULL; 
  184261             :         } 
  184262             :   /* check for a valid pointer and delete if present */ 
  184263           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  184264             :   /* add assignment to result here */ 
  184265           0 :      result->p_operatorPosition = operatorPosition_copy; 
  184266             :   // case: not a listType for (using conditionalToSetParent)lowerBound
  184267           0 :           if ( (lowerBound_copy != NULL) && (lowerBound_copy->get_parent() == NULL) && (isSgType(lowerBound_copy) == NULL) ) 
  184268             :              { 
  184269           0 :                lowerBound_copy->set_parent(result); 
  184270             :              } 
  184271             :   // case: not a listType for (using conditionalToSetParent)upperBound
  184272           0 :           if ( (upperBound_copy != NULL) && (upperBound_copy->get_parent() == NULL) && (isSgType(upperBound_copy) == NULL) ) 
  184273             :              { 
  184274           0 :                upperBound_copy->set_parent(result); 
  184275             :              } 
  184276             :   // case: not a listType for (using conditionalToSetParent)stride
  184277           0 :           if ( (stride_copy != NULL) && (stride_copy->get_parent() == NULL) && (isSgType(stride_copy) == NULL) ) 
  184278             :              { 
  184279           0 :                stride_copy->set_parent(result); 
  184280             :              } 
  184281             : 
  184282             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184283             : 
  184284             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  184285             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  184286             :   // fixupCopy(result,help);
  184287             : 
  184288             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  184289             :   // the Sg_File_Info objects that are built for the new IR nodes.
  184290           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  184291           0 :      if (locatedNode != NULL)
  184292             :         {
  184293             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  184294           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  184295           0 :           ROSE_ASSERT(start != NULL);
  184296             : #if 0
  184297             :        // Debugging information
  184298             :           if (start->get_parent() == NULL)
  184299             :              {
  184300             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184301             :              }
  184302             : #endif
  184303           0 :           start->set_parent(locatedNode);
  184304           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  184305             : 
  184306           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  184307             : 
  184308             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  184309             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  184310             :        // ROSE_ASSERT(end != NULL);
  184311           0 :           if (end == NULL)
  184312             :              {
  184313           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  184314             :              }
  184315             :             else
  184316             :              {
  184317             : #if 0
  184318             :             // Debugging information
  184319             :                if (end->get_parent() == NULL)
  184320             :                   {
  184321             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184322             :                   }
  184323             : #endif
  184324           0 :                end->set_parent(locatedNode);
  184325           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  184326             :              }
  184327             : 
  184328           0 :           SgExpression* expression = isSgExpression(result);
  184329           0 :           if (isSgExpression(this) != NULL)
  184330             :              {
  184331           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  184332             : 
  184333             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  184334           0 :                if (operatorPosition != NULL)
  184335             :                   {
  184336             : #if 0
  184337             :                  // Debugging information
  184338             :                     if (operatorPosition->get_parent() == NULL)
  184339             :                        {
  184340             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184341             :                        }
  184342             : #endif
  184343           0 :                     operatorPosition->set_parent(expression);
  184344           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  184345             :                   }
  184346             :              }
  184347             :         }
  184348             : 
  184349             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  184350           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  184351           0 :      if (initializedName != NULL)
  184352             :         {
  184353             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  184354           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  184355           0 :           ROSE_ASSERT(start != NULL);
  184356             : #if 0
  184357             :        // Debugging information
  184358             :           if (start->get_parent() == NULL)
  184359             :              {
  184360             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184361             :              }
  184362             : #endif
  184363           0 :           start->set_parent(initializedName);
  184364           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  184365             : 
  184366             : #if 0
  184367             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  184368             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  184369             : 
  184370             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  184371             :        // ROSE_ASSERT(end != NULL);
  184372             :           if (end == NULL)
  184373             :              {
  184374             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  184375             :              }
  184376             :             else
  184377             :              {
  184378             :                if (end->get_parent() == NULL)
  184379             :                   {
  184380             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184381             :                   }
  184382             :                end->set_parent(initializedName);
  184383             :                ROSE_ASSERT(end->get_parent() != NULL);
  184384             :              }
  184385             : #endif
  184386             :         }
  184387             : 
  184388             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  184389           0 :      help.insertCopiedNodePair(this,result);
  184390             : 
  184391             :   // printf ("End of copy SgSubscriptExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  184392             : 
  184393             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  184394             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  184395           0 :      help.decrementDepth();
  184396             : 
  184397             :   // Test if this is the root of the copy!
  184398           0 :      if (help.get_depth() == 0)
  184399             :         {
  184400             :        // This is the original calling node.
  184401             : 
  184402             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  184403             :        // printf ("Calling SgSubscriptExpression::fixupCopy() (from root of AST being copied) \n");
  184404             : #if ALT_FIXUP_COPY
  184405             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  184406           0 :           fixupCopy_scopes (result,help);
  184407           0 :           fixupCopy_symbols (result,help);
  184408           0 :           fixupCopy_references (result,help);
  184409             : #else
  184410             :           fixupCopy(result,help);
  184411             : #endif
  184412             :        // Allow this to be called recursively, so accumulate the state.
  184413             :        // Also, clear the state in the SgCopyHelp object.
  184414             :        // help.clearState();
  184415             :         }
  184416             : 
  184417           0 :      return result;
  184418             :    }
  184419             : 
  184420             : 
  184421             : /* #line 184422 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  184422             : 
  184423             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184424             : 
  184425           0 : SgNode* SgColonShapeExp::copy ( SgCopyHelp& help) const
  184426             :    {
  184427           0 :      SgColonShapeExp* result = NULL;
  184428             : 
  184429             :   // printf ("Copy SgColonShapeExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  184430             : 
  184431             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  184432             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  184433             :   // The default value of the depth is 0, so after this call the depth is 1!
  184434           0 :      help.incrementDepth();
  184435             : 
  184436             : #if 0
  184437             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  184438             :   // but it is not generally true that things can only be copied once!
  184439             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  184440             :   // AstAttribute* existingAttribute = const_cast<SgColonShapeExp*>(this)->attribute["copied"];
  184441             :      bool previouslyCopied = const_cast<SgColonShapeExp*>(this)->attribute.exists("copied");
  184442             :      if (previouslyCopied == true)
  184443             :         {
  184444             :           this->get_file_info()->display("Called from copy SgColonShapeExp: debug");
  184445             :         }
  184446             :      ROSE_ASSERT(previouslyCopied == false);
  184447             : 
  184448             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  184449             :      AstAttribute* newAttribute = new AstAttribute();
  184450             :      ROSE_ASSERT(newAttribute != NULL);
  184451             : 
  184452             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  184453             :      const_cast<SgColonShapeExp*>(this)->attribute.add("copied",newAttribute);
  184454             : #endif
  184455             : 
  184456             :   // Copy data members from base classes
  184457             :   // Copy constructor parameter data member: startOfConstruct_copy
  184458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  184459             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  184460           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  184461           0 :      if ( p_startOfConstruct != NULL ) 
  184462             :         { 
  184463           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  184464             :         } 
  184465             :        else 
  184466             :         { 
  184467             :           startOfConstruct_copy = NULL; 
  184468             :         } 
  184469             :  
  184470             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184471             : 
  184472             :   // Build an empty copy of this object (will be filled in, but 
  184473             :   // the parent can't be set and must be set by the caller)
  184474           0 :      result = new SgColonShapeExp(  startOfConstruct_copy );
  184475           0 :      ROSE_ASSERT(result != NULL);
  184476             : 
  184477             :   // Copy data members of "this" class
  184478             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  184479             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  184480             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  184481           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  184482           0 :      if ( p_endOfConstruct != NULL ) 
  184483             :         { 
  184484           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  184485             :         } 
  184486             :        else 
  184487             :         { 
  184488             :           endOfConstruct_copy = NULL; 
  184489             :         } 
  184490             :   /* check for a valid pointer and delete if present */ 
  184491           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  184492             :   /* add assignment to result here */ 
  184493           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  184494             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  184495             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  184496             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  184497           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  184498           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  184499             :         { 
  184500           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  184501             :         } 
  184502             :        else 
  184503             :         { 
  184504             :           attachedPreprocessingInfoPtr_copy = NULL; 
  184505             :         } 
  184506             :   /* check for a valid pointer and delete if present */ 
  184507           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  184508             :   /* add assignment to result here */ 
  184509           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  184510             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  184511             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  184512             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  184513           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  184514           0 :      if ( p_attributeMechanism != NULL ) 
  184515             :         { 
  184516           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  184517             :         } 
  184518             :        else 
  184519             :         { 
  184520             :           attributeMechanism_copy = NULL; 
  184521             :         } 
  184522             :   /* check for a valid pointer and delete if present */ 
  184523           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  184524             :   /* add assignment to result here */ 
  184525           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  184526             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  184527             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  184528             :   // case: toBeCopied == COPY_DATA for need_paren
  184529           0 :      bool need_paren_copy = p_need_paren; 
  184530           0 :      result->p_need_paren = need_paren_copy; 
  184531             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  184532             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  184533             :   // case: toBeCopied == COPY_DATA for lvalue
  184534           0 :      bool lvalue_copy = p_lvalue; 
  184535           0 :      result->p_lvalue = lvalue_copy; 
  184536             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  184537             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  184538             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  184539           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  184540           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  184541             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  184542             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  184543             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  184544           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  184545           0 :      if ( p_operatorPosition != NULL ) 
  184546             :         { 
  184547           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  184548             :         } 
  184549             :        else 
  184550             :         { 
  184551             :           operatorPosition_copy = NULL; 
  184552             :         } 
  184553             :   /* check for a valid pointer and delete if present */ 
  184554           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  184555             :   /* add assignment to result here */ 
  184556           0 :      result->p_operatorPosition = operatorPosition_copy; 
  184557             : 
  184558             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184559             : 
  184560             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  184561             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  184562             :   // fixupCopy(result,help);
  184563             : 
  184564             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  184565             :   // the Sg_File_Info objects that are built for the new IR nodes.
  184566           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  184567           0 :      if (locatedNode != NULL)
  184568             :         {
  184569             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  184570           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  184571           0 :           ROSE_ASSERT(start != NULL);
  184572             : #if 0
  184573             :        // Debugging information
  184574             :           if (start->get_parent() == NULL)
  184575             :              {
  184576             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184577             :              }
  184578             : #endif
  184579           0 :           start->set_parent(locatedNode);
  184580           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  184581             : 
  184582           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  184583             : 
  184584             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  184585             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  184586             :        // ROSE_ASSERT(end != NULL);
  184587           0 :           if (end == NULL)
  184588             :              {
  184589           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  184590             :              }
  184591             :             else
  184592             :              {
  184593             : #if 0
  184594             :             // Debugging information
  184595             :                if (end->get_parent() == NULL)
  184596             :                   {
  184597             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184598             :                   }
  184599             : #endif
  184600           0 :                end->set_parent(locatedNode);
  184601           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  184602             :              }
  184603             : 
  184604           0 :           SgExpression* expression = isSgExpression(result);
  184605           0 :           if (isSgExpression(this) != NULL)
  184606             :              {
  184607           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  184608             : 
  184609             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  184610           0 :                if (operatorPosition != NULL)
  184611             :                   {
  184612             : #if 0
  184613             :                  // Debugging information
  184614             :                     if (operatorPosition->get_parent() == NULL)
  184615             :                        {
  184616             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184617             :                        }
  184618             : #endif
  184619           0 :                     operatorPosition->set_parent(expression);
  184620           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  184621             :                   }
  184622             :              }
  184623             :         }
  184624             : 
  184625             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  184626           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  184627           0 :      if (initializedName != NULL)
  184628             :         {
  184629             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  184630           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  184631           0 :           ROSE_ASSERT(start != NULL);
  184632             : #if 0
  184633             :        // Debugging information
  184634             :           if (start->get_parent() == NULL)
  184635             :              {
  184636             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184637             :              }
  184638             : #endif
  184639           0 :           start->set_parent(initializedName);
  184640           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  184641             : 
  184642             : #if 0
  184643             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  184644             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  184645             : 
  184646             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  184647             :        // ROSE_ASSERT(end != NULL);
  184648             :           if (end == NULL)
  184649             :              {
  184650             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  184651             :              }
  184652             :             else
  184653             :              {
  184654             :                if (end->get_parent() == NULL)
  184655             :                   {
  184656             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184657             :                   }
  184658             :                end->set_parent(initializedName);
  184659             :                ROSE_ASSERT(end->get_parent() != NULL);
  184660             :              }
  184661             : #endif
  184662             :         }
  184663             : 
  184664             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  184665           0 :      help.insertCopiedNodePair(this,result);
  184666             : 
  184667             :   // printf ("End of copy SgColonShapeExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  184668             : 
  184669             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  184670             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  184671           0 :      help.decrementDepth();
  184672             : 
  184673             :   // Test if this is the root of the copy!
  184674           0 :      if (help.get_depth() == 0)
  184675             :         {
  184676             :        // This is the original calling node.
  184677             : 
  184678             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  184679             :        // printf ("Calling SgColonShapeExp::fixupCopy() (from root of AST being copied) \n");
  184680             : #if ALT_FIXUP_COPY
  184681             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  184682           0 :           fixupCopy_scopes (result,help);
  184683           0 :           fixupCopy_symbols (result,help);
  184684           0 :           fixupCopy_references (result,help);
  184685             : #else
  184686             :           fixupCopy(result,help);
  184687             : #endif
  184688             :        // Allow this to be called recursively, so accumulate the state.
  184689             :        // Also, clear the state in the SgCopyHelp object.
  184690             :        // help.clearState();
  184691             :         }
  184692             : 
  184693           0 :      return result;
  184694             :    }
  184695             : 
  184696             : 
  184697             : /* #line 184698 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  184698             : 
  184699             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184700             : 
  184701           0 : SgNode* SgAsteriskShapeExp::copy ( SgCopyHelp& help) const
  184702             :    {
  184703           0 :      SgAsteriskShapeExp* result = NULL;
  184704             : 
  184705             :   // printf ("Copy SgAsteriskShapeExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  184706             : 
  184707             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  184708             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  184709             :   // The default value of the depth is 0, so after this call the depth is 1!
  184710           0 :      help.incrementDepth();
  184711             : 
  184712             : #if 0
  184713             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  184714             :   // but it is not generally true that things can only be copied once!
  184715             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  184716             :   // AstAttribute* existingAttribute = const_cast<SgAsteriskShapeExp*>(this)->attribute["copied"];
  184717             :      bool previouslyCopied = const_cast<SgAsteriskShapeExp*>(this)->attribute.exists("copied");
  184718             :      if (previouslyCopied == true)
  184719             :         {
  184720             :           this->get_file_info()->display("Called from copy SgAsteriskShapeExp: debug");
  184721             :         }
  184722             :      ROSE_ASSERT(previouslyCopied == false);
  184723             : 
  184724             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  184725             :      AstAttribute* newAttribute = new AstAttribute();
  184726             :      ROSE_ASSERT(newAttribute != NULL);
  184727             : 
  184728             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  184729             :      const_cast<SgAsteriskShapeExp*>(this)->attribute.add("copied",newAttribute);
  184730             : #endif
  184731             : 
  184732             :   // Copy data members from base classes
  184733             :   // Copy constructor parameter data member: startOfConstruct_copy
  184734             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  184735             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  184736           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  184737           0 :      if ( p_startOfConstruct != NULL ) 
  184738             :         { 
  184739           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  184740             :         } 
  184741             :        else 
  184742             :         { 
  184743             :           startOfConstruct_copy = NULL; 
  184744             :         } 
  184745             :  
  184746             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184747             : 
  184748             :   // Build an empty copy of this object (will be filled in, but 
  184749             :   // the parent can't be set and must be set by the caller)
  184750           0 :      result = new SgAsteriskShapeExp(  startOfConstruct_copy );
  184751           0 :      ROSE_ASSERT(result != NULL);
  184752             : 
  184753             :   // Copy data members of "this" class
  184754             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  184755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  184756             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  184757           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  184758           0 :      if ( p_endOfConstruct != NULL ) 
  184759             :         { 
  184760           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  184761             :         } 
  184762             :        else 
  184763             :         { 
  184764             :           endOfConstruct_copy = NULL; 
  184765             :         } 
  184766             :   /* check for a valid pointer and delete if present */ 
  184767           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  184768             :   /* add assignment to result here */ 
  184769           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  184770             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  184771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  184772             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  184773           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  184774           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  184775             :         { 
  184776           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  184777             :         } 
  184778             :        else 
  184779             :         { 
  184780             :           attachedPreprocessingInfoPtr_copy = NULL; 
  184781             :         } 
  184782             :   /* check for a valid pointer and delete if present */ 
  184783           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  184784             :   /* add assignment to result here */ 
  184785           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  184786             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  184787             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  184788             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  184789           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  184790           0 :      if ( p_attributeMechanism != NULL ) 
  184791             :         { 
  184792           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  184793             :         } 
  184794             :        else 
  184795             :         { 
  184796             :           attributeMechanism_copy = NULL; 
  184797             :         } 
  184798             :   /* check for a valid pointer and delete if present */ 
  184799           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  184800             :   /* add assignment to result here */ 
  184801           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  184802             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  184803             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  184804             :   // case: toBeCopied == COPY_DATA for need_paren
  184805           0 :      bool need_paren_copy = p_need_paren; 
  184806           0 :      result->p_need_paren = need_paren_copy; 
  184807             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  184808             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  184809             :   // case: toBeCopied == COPY_DATA for lvalue
  184810           0 :      bool lvalue_copy = p_lvalue; 
  184811           0 :      result->p_lvalue = lvalue_copy; 
  184812             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  184813             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  184814             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  184815           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  184816           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  184817             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  184818             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  184819             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  184820           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  184821           0 :      if ( p_operatorPosition != NULL ) 
  184822             :         { 
  184823           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  184824             :         } 
  184825             :        else 
  184826             :         { 
  184827             :           operatorPosition_copy = NULL; 
  184828             :         } 
  184829             :   /* check for a valid pointer and delete if present */ 
  184830           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  184831             :   /* add assignment to result here */ 
  184832           0 :      result->p_operatorPosition = operatorPosition_copy; 
  184833             : 
  184834             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184835             : 
  184836             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  184837             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  184838             :   // fixupCopy(result,help);
  184839             : 
  184840             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  184841             :   // the Sg_File_Info objects that are built for the new IR nodes.
  184842           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  184843           0 :      if (locatedNode != NULL)
  184844             :         {
  184845             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  184846           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  184847           0 :           ROSE_ASSERT(start != NULL);
  184848             : #if 0
  184849             :        // Debugging information
  184850             :           if (start->get_parent() == NULL)
  184851             :              {
  184852             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184853             :              }
  184854             : #endif
  184855           0 :           start->set_parent(locatedNode);
  184856           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  184857             : 
  184858           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  184859             : 
  184860             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  184861             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  184862             :        // ROSE_ASSERT(end != NULL);
  184863           0 :           if (end == NULL)
  184864             :              {
  184865           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  184866             :              }
  184867             :             else
  184868             :              {
  184869             : #if 0
  184870             :             // Debugging information
  184871             :                if (end->get_parent() == NULL)
  184872             :                   {
  184873             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184874             :                   }
  184875             : #endif
  184876           0 :                end->set_parent(locatedNode);
  184877           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  184878             :              }
  184879             : 
  184880           0 :           SgExpression* expression = isSgExpression(result);
  184881           0 :           if (isSgExpression(this) != NULL)
  184882             :              {
  184883           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  184884             : 
  184885             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  184886           0 :                if (operatorPosition != NULL)
  184887             :                   {
  184888             : #if 0
  184889             :                  // Debugging information
  184890             :                     if (operatorPosition->get_parent() == NULL)
  184891             :                        {
  184892             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184893             :                        }
  184894             : #endif
  184895           0 :                     operatorPosition->set_parent(expression);
  184896           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  184897             :                   }
  184898             :              }
  184899             :         }
  184900             : 
  184901             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  184902           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  184903           0 :      if (initializedName != NULL)
  184904             :         {
  184905             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  184906           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  184907           0 :           ROSE_ASSERT(start != NULL);
  184908             : #if 0
  184909             :        // Debugging information
  184910             :           if (start->get_parent() == NULL)
  184911             :              {
  184912             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184913             :              }
  184914             : #endif
  184915           0 :           start->set_parent(initializedName);
  184916           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  184917             : 
  184918             : #if 0
  184919             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  184920             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  184921             : 
  184922             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  184923             :        // ROSE_ASSERT(end != NULL);
  184924             :           if (end == NULL)
  184925             :              {
  184926             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  184927             :              }
  184928             :             else
  184929             :              {
  184930             :                if (end->get_parent() == NULL)
  184931             :                   {
  184932             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  184933             :                   }
  184934             :                end->set_parent(initializedName);
  184935             :                ROSE_ASSERT(end->get_parent() != NULL);
  184936             :              }
  184937             : #endif
  184938             :         }
  184939             : 
  184940             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  184941           0 :      help.insertCopiedNodePair(this,result);
  184942             : 
  184943             :   // printf ("End of copy SgAsteriskShapeExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  184944             : 
  184945             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  184946             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  184947           0 :      help.decrementDepth();
  184948             : 
  184949             :   // Test if this is the root of the copy!
  184950           0 :      if (help.get_depth() == 0)
  184951             :         {
  184952             :        // This is the original calling node.
  184953             : 
  184954             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  184955             :        // printf ("Calling SgAsteriskShapeExp::fixupCopy() (from root of AST being copied) \n");
  184956             : #if ALT_FIXUP_COPY
  184957             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  184958           0 :           fixupCopy_scopes (result,help);
  184959           0 :           fixupCopy_symbols (result,help);
  184960           0 :           fixupCopy_references (result,help);
  184961             : #else
  184962             :           fixupCopy(result,help);
  184963             : #endif
  184964             :        // Allow this to be called recursively, so accumulate the state.
  184965             :        // Also, clear the state in the SgCopyHelp object.
  184966             :        // help.clearState();
  184967             :         }
  184968             : 
  184969           0 :      return result;
  184970             :    }
  184971             : 
  184972             : 
  184973             : /* #line 184974 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  184974             : 
  184975             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  184976             : 
  184977           0 : SgNode* SgImpliedDo::copy ( SgCopyHelp& help) const
  184978             :    {
  184979           0 :      SgImpliedDo* result = NULL;
  184980             : 
  184981             :   // printf ("Copy SgImpliedDo = %p = %s \n",this,SageInterface::get_name(this).c_str());
  184982             : 
  184983             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  184984             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  184985             :   // The default value of the depth is 0, so after this call the depth is 1!
  184986           0 :      help.incrementDepth();
  184987             : 
  184988             : #if 0
  184989             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  184990             :   // but it is not generally true that things can only be copied once!
  184991             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  184992             :   // AstAttribute* existingAttribute = const_cast<SgImpliedDo*>(this)->attribute["copied"];
  184993             :      bool previouslyCopied = const_cast<SgImpliedDo*>(this)->attribute.exists("copied");
  184994             :      if (previouslyCopied == true)
  184995             :         {
  184996             :           this->get_file_info()->display("Called from copy SgImpliedDo: debug");
  184997             :         }
  184998             :      ROSE_ASSERT(previouslyCopied == false);
  184999             : 
  185000             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  185001             :      AstAttribute* newAttribute = new AstAttribute();
  185002             :      ROSE_ASSERT(newAttribute != NULL);
  185003             : 
  185004             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  185005             :      const_cast<SgImpliedDo*>(this)->attribute.add("copied",newAttribute);
  185006             : #endif
  185007             : 
  185008             :   // Copy data members from base classes
  185009             :   // Copy constructor parameter data member: startOfConstruct_copy
  185010             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  185011             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  185012           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  185013           0 :      if ( p_startOfConstruct != NULL ) 
  185014             :         { 
  185015           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  185016             :         } 
  185017             :        else 
  185018             :         { 
  185019             :           startOfConstruct_copy = NULL; 
  185020             :         } 
  185021             :   // Copy constructor parameter data member: do_var_initialization_copy
  185022           0 :      SgExpression* do_var_initialization_copy; 
  185023             :   // case: not a listType for (using conditionalToCopyVariable)do_var_initialization
  185024           0 :           if (get_do_var_initialization() != NULL) 
  185025             :              { 
  185026           0 :                do_var_initialization_copy = static_cast<SgExpression*>(help.copyAst(get_do_var_initialization())); 
  185027             :              } 
  185028             :             else 
  185029             :              { 
  185030             :                do_var_initialization_copy = NULL; 
  185031             :              } 
  185032             :   // Copy constructor parameter data member: last_val_copy
  185033           0 :      SgExpression* last_val_copy; 
  185034             :   // case: not a listType for (using conditionalToCopyVariable)last_val
  185035           0 :           if (get_last_val() != NULL) 
  185036             :              { 
  185037           0 :                last_val_copy = static_cast<SgExpression*>(help.copyAst(get_last_val())); 
  185038             :              } 
  185039             :             else 
  185040             :              { 
  185041             :                last_val_copy = NULL; 
  185042             :              } 
  185043             :   // Copy constructor parameter data member: increment_copy
  185044           0 :      SgExpression* increment_copy; 
  185045             :   // case: not a listType for (using conditionalToCopyVariable)increment
  185046           0 :           if (get_increment() != NULL) 
  185047             :              { 
  185048           0 :                increment_copy = static_cast<SgExpression*>(help.copyAst(get_increment())); 
  185049             :              } 
  185050             :             else 
  185051             :              { 
  185052             :                increment_copy = NULL; 
  185053             :              } 
  185054             :   // Copy constructor parameter data member: object_list_copy
  185055           0 :      SgExprListExp* object_list_copy; 
  185056             :   // case: not a listType for (using conditionalToCopyVariable)object_list
  185057           0 :           if (get_object_list() != NULL) 
  185058             :              { 
  185059           0 :                object_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_object_list())); 
  185060             :              } 
  185061             :             else 
  185062             :              { 
  185063             :                object_list_copy = NULL; 
  185064             :              } 
  185065             :   // Copy constructor parameter data member: implied_do_scope_copy
  185066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for implied_do_scope
  185067             :   // case: toBeCopied == COPY_DATA for implied_do_scope
  185068           0 :      SgScopeStatement* implied_do_scope_copy = p_implied_do_scope; 
  185069             :  
  185070             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185071             : 
  185072             :   // Build an empty copy of this object (will be filled in, but 
  185073             :   // the parent can't be set and must be set by the caller)
  185074           0 :      result = new SgImpliedDo(  startOfConstruct_copy, do_var_initialization_copy, last_val_copy, increment_copy, object_list_copy, implied_do_scope_copy );
  185075           0 :      ROSE_ASSERT(result != NULL);
  185076             : 
  185077             :   // Copy data members of "this" class
  185078             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  185079             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  185080             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  185081           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  185082           0 :      if ( p_endOfConstruct != NULL ) 
  185083             :         { 
  185084           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  185085             :         } 
  185086             :        else 
  185087             :         { 
  185088             :           endOfConstruct_copy = NULL; 
  185089             :         } 
  185090             :   /* check for a valid pointer and delete if present */ 
  185091           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  185092             :   /* add assignment to result here */ 
  185093           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  185094             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  185095             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  185096             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  185097           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  185098           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  185099             :         { 
  185100           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  185101             :         } 
  185102             :        else 
  185103             :         { 
  185104             :           attachedPreprocessingInfoPtr_copy = NULL; 
  185105             :         } 
  185106             :   /* check for a valid pointer and delete if present */ 
  185107           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  185108             :   /* add assignment to result here */ 
  185109           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  185110             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  185111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  185112             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  185113           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  185114           0 :      if ( p_attributeMechanism != NULL ) 
  185115             :         { 
  185116           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  185117             :         } 
  185118             :        else 
  185119             :         { 
  185120             :           attributeMechanism_copy = NULL; 
  185121             :         } 
  185122             :   /* check for a valid pointer and delete if present */ 
  185123           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  185124             :   /* add assignment to result here */ 
  185125           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  185126             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  185127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  185128             :   // case: toBeCopied == COPY_DATA for need_paren
  185129           0 :      bool need_paren_copy = p_need_paren; 
  185130           0 :      result->p_need_paren = need_paren_copy; 
  185131             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  185132             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  185133             :   // case: toBeCopied == COPY_DATA for lvalue
  185134           0 :      bool lvalue_copy = p_lvalue; 
  185135           0 :      result->p_lvalue = lvalue_copy; 
  185136             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  185137             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  185138             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  185139           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  185140           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  185141             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  185142             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  185143             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  185144           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  185145           0 :      if ( p_operatorPosition != NULL ) 
  185146             :         { 
  185147           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  185148             :         } 
  185149             :        else 
  185150             :         { 
  185151             :           operatorPosition_copy = NULL; 
  185152             :         } 
  185153             :   /* check for a valid pointer and delete if present */ 
  185154           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  185155             :   /* add assignment to result here */ 
  185156           0 :      result->p_operatorPosition = operatorPosition_copy; 
  185157             :   // case: not a listType for (using conditionalToSetParent)do_var_initialization
  185158           0 :           if ( (do_var_initialization_copy != NULL) && (do_var_initialization_copy->get_parent() == NULL) && (isSgType(do_var_initialization_copy) == NULL) ) 
  185159             :              { 
  185160           0 :                do_var_initialization_copy->set_parent(result); 
  185161             :              } 
  185162             :   // case: not a listType for (using conditionalToSetParent)last_val
  185163           0 :           if ( (last_val_copy != NULL) && (last_val_copy->get_parent() == NULL) && (isSgType(last_val_copy) == NULL) ) 
  185164             :              { 
  185165           0 :                last_val_copy->set_parent(result); 
  185166             :              } 
  185167             :   // case: not a listType for (using conditionalToSetParent)increment
  185168           0 :           if ( (increment_copy != NULL) && (increment_copy->get_parent() == NULL) && (isSgType(increment_copy) == NULL) ) 
  185169             :              { 
  185170           0 :                increment_copy->set_parent(result); 
  185171             :              } 
  185172             :   // case: not a listType for (using conditionalToSetParent)object_list
  185173           0 :           if ( (object_list_copy != NULL) && (object_list_copy->get_parent() == NULL) && (isSgType(object_list_copy) == NULL) ) 
  185174             :              { 
  185175           0 :                object_list_copy->set_parent(result); 
  185176             :              } 
  185177             : 
  185178             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185179             : 
  185180             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  185181             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  185182             :   // fixupCopy(result,help);
  185183             : 
  185184             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  185185             :   // the Sg_File_Info objects that are built for the new IR nodes.
  185186           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  185187           0 :      if (locatedNode != NULL)
  185188             :         {
  185189             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  185190           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  185191           0 :           ROSE_ASSERT(start != NULL);
  185192             : #if 0
  185193             :        // Debugging information
  185194             :           if (start->get_parent() == NULL)
  185195             :              {
  185196             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185197             :              }
  185198             : #endif
  185199           0 :           start->set_parent(locatedNode);
  185200           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  185201             : 
  185202           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  185203             : 
  185204             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  185205             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  185206             :        // ROSE_ASSERT(end != NULL);
  185207           0 :           if (end == NULL)
  185208             :              {
  185209           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  185210             :              }
  185211             :             else
  185212             :              {
  185213             : #if 0
  185214             :             // Debugging information
  185215             :                if (end->get_parent() == NULL)
  185216             :                   {
  185217             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185218             :                   }
  185219             : #endif
  185220           0 :                end->set_parent(locatedNode);
  185221           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  185222             :              }
  185223             : 
  185224           0 :           SgExpression* expression = isSgExpression(result);
  185225           0 :           if (isSgExpression(this) != NULL)
  185226             :              {
  185227           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  185228             : 
  185229             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  185230           0 :                if (operatorPosition != NULL)
  185231             :                   {
  185232             : #if 0
  185233             :                  // Debugging information
  185234             :                     if (operatorPosition->get_parent() == NULL)
  185235             :                        {
  185236             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185237             :                        }
  185238             : #endif
  185239           0 :                     operatorPosition->set_parent(expression);
  185240           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  185241             :                   }
  185242             :              }
  185243             :         }
  185244             : 
  185245             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  185246           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  185247           0 :      if (initializedName != NULL)
  185248             :         {
  185249             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  185250           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  185251           0 :           ROSE_ASSERT(start != NULL);
  185252             : #if 0
  185253             :        // Debugging information
  185254             :           if (start->get_parent() == NULL)
  185255             :              {
  185256             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185257             :              }
  185258             : #endif
  185259           0 :           start->set_parent(initializedName);
  185260           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  185261             : 
  185262             : #if 0
  185263             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  185264             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  185265             : 
  185266             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  185267             :        // ROSE_ASSERT(end != NULL);
  185268             :           if (end == NULL)
  185269             :              {
  185270             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  185271             :              }
  185272             :             else
  185273             :              {
  185274             :                if (end->get_parent() == NULL)
  185275             :                   {
  185276             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185277             :                   }
  185278             :                end->set_parent(initializedName);
  185279             :                ROSE_ASSERT(end->get_parent() != NULL);
  185280             :              }
  185281             : #endif
  185282             :         }
  185283             : 
  185284             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  185285           0 :      help.insertCopiedNodePair(this,result);
  185286             : 
  185287             :   // printf ("End of copy SgImpliedDo = %p = %s \n",this,SageInterface::get_name(this).c_str());
  185288             : 
  185289             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  185290             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  185291           0 :      help.decrementDepth();
  185292             : 
  185293             :   // Test if this is the root of the copy!
  185294           0 :      if (help.get_depth() == 0)
  185295             :         {
  185296             :        // This is the original calling node.
  185297             : 
  185298             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  185299             :        // printf ("Calling SgImpliedDo::fixupCopy() (from root of AST being copied) \n");
  185300             : #if ALT_FIXUP_COPY
  185301             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  185302           0 :           fixupCopy_scopes (result,help);
  185303           0 :           fixupCopy_symbols (result,help);
  185304           0 :           fixupCopy_references (result,help);
  185305             : #else
  185306             :           fixupCopy(result,help);
  185307             : #endif
  185308             :        // Allow this to be called recursively, so accumulate the state.
  185309             :        // Also, clear the state in the SgCopyHelp object.
  185310             :        // help.clearState();
  185311             :         }
  185312             : 
  185313           0 :      return result;
  185314             :    }
  185315             : 
  185316             : 
  185317             : /* #line 185318 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  185318             : 
  185319             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185320             : 
  185321           0 : SgNode* SgIOItemExpression::copy ( SgCopyHelp& help) const
  185322             :    {
  185323           0 :      SgIOItemExpression* result = NULL;
  185324             : 
  185325             :   // printf ("Copy SgIOItemExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  185326             : 
  185327             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  185328             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  185329             :   // The default value of the depth is 0, so after this call the depth is 1!
  185330           0 :      help.incrementDepth();
  185331             : 
  185332             : #if 0
  185333             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  185334             :   // but it is not generally true that things can only be copied once!
  185335             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  185336             :   // AstAttribute* existingAttribute = const_cast<SgIOItemExpression*>(this)->attribute["copied"];
  185337             :      bool previouslyCopied = const_cast<SgIOItemExpression*>(this)->attribute.exists("copied");
  185338             :      if (previouslyCopied == true)
  185339             :         {
  185340             :           this->get_file_info()->display("Called from copy SgIOItemExpression: debug");
  185341             :         }
  185342             :      ROSE_ASSERT(previouslyCopied == false);
  185343             : 
  185344             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  185345             :      AstAttribute* newAttribute = new AstAttribute();
  185346             :      ROSE_ASSERT(newAttribute != NULL);
  185347             : 
  185348             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  185349             :      const_cast<SgIOItemExpression*>(this)->attribute.add("copied",newAttribute);
  185350             : #endif
  185351             : 
  185352             :   // Copy data members from base classes
  185353             :   // Copy constructor parameter data member: startOfConstruct_copy
  185354             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  185355             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  185356           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  185357           0 :      if ( p_startOfConstruct != NULL ) 
  185358             :         { 
  185359           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  185360             :         } 
  185361             :        else 
  185362             :         { 
  185363             :           startOfConstruct_copy = NULL; 
  185364             :         } 
  185365             :   // Copy constructor parameter data member: name_copy
  185366             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  185367             :   // case: toBeCopied == COPY_DATA for name
  185368           0 :      SgName name_copy = p_name; 
  185369             :   // Copy constructor parameter data member: io_item_copy
  185370           0 :      SgExpression* io_item_copy; 
  185371             :   // case: not a listType for (using conditionalToCopyVariable)io_item
  185372           0 :           if (get_io_item() != NULL) 
  185373             :              { 
  185374           0 :                io_item_copy = static_cast<SgExpression*>(help.copyAst(get_io_item())); 
  185375             :              } 
  185376             :             else 
  185377             :              { 
  185378             :                io_item_copy = NULL; 
  185379             :              } 
  185380             :  
  185381             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185382             : 
  185383             :   // Build an empty copy of this object (will be filled in, but 
  185384             :   // the parent can't be set and must be set by the caller)
  185385           0 :      result = new SgIOItemExpression(  startOfConstruct_copy, name_copy, io_item_copy );
  185386           0 :      ROSE_ASSERT(result != NULL);
  185387             : 
  185388             :   // Copy data members of "this" class
  185389             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  185390             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  185391             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  185392           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  185393           0 :      if ( p_endOfConstruct != NULL ) 
  185394             :         { 
  185395           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  185396             :         } 
  185397             :        else 
  185398             :         { 
  185399             :           endOfConstruct_copy = NULL; 
  185400             :         } 
  185401             :   /* check for a valid pointer and delete if present */ 
  185402           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  185403             :   /* add assignment to result here */ 
  185404           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  185405             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  185406             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  185407             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  185408           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  185409           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  185410             :         { 
  185411           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  185412             :         } 
  185413             :        else 
  185414             :         { 
  185415             :           attachedPreprocessingInfoPtr_copy = NULL; 
  185416             :         } 
  185417             :   /* check for a valid pointer and delete if present */ 
  185418           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  185419             :   /* add assignment to result here */ 
  185420           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  185421             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  185422             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  185423             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  185424           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  185425           0 :      if ( p_attributeMechanism != NULL ) 
  185426             :         { 
  185427           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  185428             :         } 
  185429             :        else 
  185430             :         { 
  185431             :           attributeMechanism_copy = NULL; 
  185432             :         } 
  185433             :   /* check for a valid pointer and delete if present */ 
  185434           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  185435             :   /* add assignment to result here */ 
  185436           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  185437             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  185438             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  185439             :   // case: toBeCopied == COPY_DATA for need_paren
  185440           0 :      bool need_paren_copy = p_need_paren; 
  185441           0 :      result->p_need_paren = need_paren_copy; 
  185442             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  185443             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  185444             :   // case: toBeCopied == COPY_DATA for lvalue
  185445           0 :      bool lvalue_copy = p_lvalue; 
  185446           0 :      result->p_lvalue = lvalue_copy; 
  185447             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  185448             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  185449             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  185450           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  185451           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  185452             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  185453             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  185454             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  185455           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  185456           0 :      if ( p_operatorPosition != NULL ) 
  185457             :         { 
  185458           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  185459             :         } 
  185460             :        else 
  185461             :         { 
  185462             :           operatorPosition_copy = NULL; 
  185463             :         } 
  185464             :   /* check for a valid pointer and delete if present */ 
  185465           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  185466             :   /* add assignment to result here */ 
  185467           0 :      result->p_operatorPosition = operatorPosition_copy; 
  185468             :   // case: not a listType for (using conditionalToSetParent)io_item
  185469           0 :           if ( (io_item_copy != NULL) && (io_item_copy->get_parent() == NULL) && (isSgType(io_item_copy) == NULL) ) 
  185470             :              { 
  185471           0 :                io_item_copy->set_parent(result); 
  185472             :              } 
  185473             : 
  185474             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185475             : 
  185476             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  185477             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  185478             :   // fixupCopy(result,help);
  185479             : 
  185480             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  185481             :   // the Sg_File_Info objects that are built for the new IR nodes.
  185482           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  185483           0 :      if (locatedNode != NULL)
  185484             :         {
  185485             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  185486           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  185487           0 :           ROSE_ASSERT(start != NULL);
  185488             : #if 0
  185489             :        // Debugging information
  185490             :           if (start->get_parent() == NULL)
  185491             :              {
  185492             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185493             :              }
  185494             : #endif
  185495           0 :           start->set_parent(locatedNode);
  185496           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  185497             : 
  185498           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  185499             : 
  185500             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  185501             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  185502             :        // ROSE_ASSERT(end != NULL);
  185503           0 :           if (end == NULL)
  185504             :              {
  185505           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  185506             :              }
  185507             :             else
  185508             :              {
  185509             : #if 0
  185510             :             // Debugging information
  185511             :                if (end->get_parent() == NULL)
  185512             :                   {
  185513             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185514             :                   }
  185515             : #endif
  185516           0 :                end->set_parent(locatedNode);
  185517           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  185518             :              }
  185519             : 
  185520           0 :           SgExpression* expression = isSgExpression(result);
  185521           0 :           if (isSgExpression(this) != NULL)
  185522             :              {
  185523           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  185524             : 
  185525             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  185526           0 :                if (operatorPosition != NULL)
  185527             :                   {
  185528             : #if 0
  185529             :                  // Debugging information
  185530             :                     if (operatorPosition->get_parent() == NULL)
  185531             :                        {
  185532             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185533             :                        }
  185534             : #endif
  185535           0 :                     operatorPosition->set_parent(expression);
  185536           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  185537             :                   }
  185538             :              }
  185539             :         }
  185540             : 
  185541             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  185542           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  185543           0 :      if (initializedName != NULL)
  185544             :         {
  185545             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  185546           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  185547           0 :           ROSE_ASSERT(start != NULL);
  185548             : #if 0
  185549             :        // Debugging information
  185550             :           if (start->get_parent() == NULL)
  185551             :              {
  185552             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185553             :              }
  185554             : #endif
  185555           0 :           start->set_parent(initializedName);
  185556           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  185557             : 
  185558             : #if 0
  185559             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  185560             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  185561             : 
  185562             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  185563             :        // ROSE_ASSERT(end != NULL);
  185564             :           if (end == NULL)
  185565             :              {
  185566             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  185567             :              }
  185568             :             else
  185569             :              {
  185570             :                if (end->get_parent() == NULL)
  185571             :                   {
  185572             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185573             :                   }
  185574             :                end->set_parent(initializedName);
  185575             :                ROSE_ASSERT(end->get_parent() != NULL);
  185576             :              }
  185577             : #endif
  185578             :         }
  185579             : 
  185580             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  185581           0 :      help.insertCopiedNodePair(this,result);
  185582             : 
  185583             :   // printf ("End of copy SgIOItemExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  185584             : 
  185585             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  185586             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  185587           0 :      help.decrementDepth();
  185588             : 
  185589             :   // Test if this is the root of the copy!
  185590           0 :      if (help.get_depth() == 0)
  185591             :         {
  185592             :        // This is the original calling node.
  185593             : 
  185594             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  185595             :        // printf ("Calling SgIOItemExpression::fixupCopy() (from root of AST being copied) \n");
  185596             : #if ALT_FIXUP_COPY
  185597             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  185598           0 :           fixupCopy_scopes (result,help);
  185599           0 :           fixupCopy_symbols (result,help);
  185600           0 :           fixupCopy_references (result,help);
  185601             : #else
  185602             :           fixupCopy(result,help);
  185603             : #endif
  185604             :        // Allow this to be called recursively, so accumulate the state.
  185605             :        // Also, clear the state in the SgCopyHelp object.
  185606             :        // help.clearState();
  185607             :         }
  185608             : 
  185609           0 :      return result;
  185610             :    }
  185611             : 
  185612             : 
  185613             : /* #line 185614 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  185614             : 
  185615             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185616             : 
  185617           0 : SgNode* SgStatementExpression::copy ( SgCopyHelp& help) const
  185618             :    {
  185619           0 :      SgStatementExpression* result = NULL;
  185620             : 
  185621             :   // printf ("Copy SgStatementExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  185622             : 
  185623             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  185624             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  185625             :   // The default value of the depth is 0, so after this call the depth is 1!
  185626           0 :      help.incrementDepth();
  185627             : 
  185628             : #if 0
  185629             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  185630             :   // but it is not generally true that things can only be copied once!
  185631             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  185632             :   // AstAttribute* existingAttribute = const_cast<SgStatementExpression*>(this)->attribute["copied"];
  185633             :      bool previouslyCopied = const_cast<SgStatementExpression*>(this)->attribute.exists("copied");
  185634             :      if (previouslyCopied == true)
  185635             :         {
  185636             :           this->get_file_info()->display("Called from copy SgStatementExpression: debug");
  185637             :         }
  185638             :      ROSE_ASSERT(previouslyCopied == false);
  185639             : 
  185640             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  185641             :      AstAttribute* newAttribute = new AstAttribute();
  185642             :      ROSE_ASSERT(newAttribute != NULL);
  185643             : 
  185644             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  185645             :      const_cast<SgStatementExpression*>(this)->attribute.add("copied",newAttribute);
  185646             : #endif
  185647             : 
  185648             :   // Copy data members from base classes
  185649             :   // Copy constructor parameter data member: startOfConstruct_copy
  185650             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  185651             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  185652           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  185653           0 :      if ( p_startOfConstruct != NULL ) 
  185654             :         { 
  185655           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  185656             :         } 
  185657             :        else 
  185658             :         { 
  185659             :           startOfConstruct_copy = NULL; 
  185660             :         } 
  185661             :   // Copy constructor parameter data member: statement_copy
  185662           0 :      SgStatement* statement_copy; 
  185663             :   // case: not a listType for (using conditionalToCopyVariable)statement
  185664           0 :           if (get_statement() != NULL) 
  185665             :              { 
  185666           0 :                statement_copy = static_cast<SgStatement*>(help.copyAst(get_statement())); 
  185667             :              } 
  185668             :             else 
  185669             :              { 
  185670             :                statement_copy = NULL; 
  185671             :              } 
  185672             :  
  185673             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185674             : 
  185675             :   // Build an empty copy of this object (will be filled in, but 
  185676             :   // the parent can't be set and must be set by the caller)
  185677           0 :      result = new SgStatementExpression(  startOfConstruct_copy, statement_copy );
  185678           0 :      ROSE_ASSERT(result != NULL);
  185679             : 
  185680             :   // Copy data members of "this" class
  185681             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  185682             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  185683             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  185684           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  185685           0 :      if ( p_endOfConstruct != NULL ) 
  185686             :         { 
  185687           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  185688             :         } 
  185689             :        else 
  185690             :         { 
  185691             :           endOfConstruct_copy = NULL; 
  185692             :         } 
  185693             :   /* check for a valid pointer and delete if present */ 
  185694           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  185695             :   /* add assignment to result here */ 
  185696           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  185697             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  185698             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  185699             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  185700           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  185701           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  185702             :         { 
  185703           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  185704             :         } 
  185705             :        else 
  185706             :         { 
  185707             :           attachedPreprocessingInfoPtr_copy = NULL; 
  185708             :         } 
  185709             :   /* check for a valid pointer and delete if present */ 
  185710           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  185711             :   /* add assignment to result here */ 
  185712           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  185713             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  185714             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  185715             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  185716           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  185717           0 :      if ( p_attributeMechanism != NULL ) 
  185718             :         { 
  185719           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  185720             :         } 
  185721             :        else 
  185722             :         { 
  185723             :           attributeMechanism_copy = NULL; 
  185724             :         } 
  185725             :   /* check for a valid pointer and delete if present */ 
  185726           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  185727             :   /* add assignment to result here */ 
  185728           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  185729             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  185730             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  185731             :   // case: toBeCopied == COPY_DATA for need_paren
  185732           0 :      bool need_paren_copy = p_need_paren; 
  185733           0 :      result->p_need_paren = need_paren_copy; 
  185734             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  185735             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  185736             :   // case: toBeCopied == COPY_DATA for lvalue
  185737           0 :      bool lvalue_copy = p_lvalue; 
  185738           0 :      result->p_lvalue = lvalue_copy; 
  185739             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  185740             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  185741             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  185742           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  185743           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  185744             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  185745             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  185746             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  185747           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  185748           0 :      if ( p_operatorPosition != NULL ) 
  185749             :         { 
  185750           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  185751             :         } 
  185752             :        else 
  185753             :         { 
  185754             :           operatorPosition_copy = NULL; 
  185755             :         } 
  185756             :   /* check for a valid pointer and delete if present */ 
  185757           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  185758             :   /* add assignment to result here */ 
  185759           0 :      result->p_operatorPosition = operatorPosition_copy; 
  185760             :   // case: not a listType for (using conditionalToSetParent)statement
  185761           0 :           if ( (statement_copy != NULL) && (statement_copy->get_parent() == NULL) && (isSgType(statement_copy) == NULL) ) 
  185762             :              { 
  185763           0 :                statement_copy->set_parent(result); 
  185764             :              } 
  185765             : 
  185766             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185767             : 
  185768             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  185769             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  185770             :   // fixupCopy(result,help);
  185771             : 
  185772             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  185773             :   // the Sg_File_Info objects that are built for the new IR nodes.
  185774           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  185775           0 :      if (locatedNode != NULL)
  185776             :         {
  185777             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  185778           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  185779           0 :           ROSE_ASSERT(start != NULL);
  185780             : #if 0
  185781             :        // Debugging information
  185782             :           if (start->get_parent() == NULL)
  185783             :              {
  185784             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185785             :              }
  185786             : #endif
  185787           0 :           start->set_parent(locatedNode);
  185788           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  185789             : 
  185790           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  185791             : 
  185792             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  185793             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  185794             :        // ROSE_ASSERT(end != NULL);
  185795           0 :           if (end == NULL)
  185796             :              {
  185797           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  185798             :              }
  185799             :             else
  185800             :              {
  185801             : #if 0
  185802             :             // Debugging information
  185803             :                if (end->get_parent() == NULL)
  185804             :                   {
  185805             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185806             :                   }
  185807             : #endif
  185808           0 :                end->set_parent(locatedNode);
  185809           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  185810             :              }
  185811             : 
  185812           0 :           SgExpression* expression = isSgExpression(result);
  185813           0 :           if (isSgExpression(this) != NULL)
  185814             :              {
  185815           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  185816             : 
  185817             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  185818           0 :                if (operatorPosition != NULL)
  185819             :                   {
  185820             : #if 0
  185821             :                  // Debugging information
  185822             :                     if (operatorPosition->get_parent() == NULL)
  185823             :                        {
  185824             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185825             :                        }
  185826             : #endif
  185827           0 :                     operatorPosition->set_parent(expression);
  185828           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  185829             :                   }
  185830             :              }
  185831             :         }
  185832             : 
  185833             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  185834           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  185835           0 :      if (initializedName != NULL)
  185836             :         {
  185837             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  185838           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  185839           0 :           ROSE_ASSERT(start != NULL);
  185840             : #if 0
  185841             :        // Debugging information
  185842             :           if (start->get_parent() == NULL)
  185843             :              {
  185844             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185845             :              }
  185846             : #endif
  185847           0 :           start->set_parent(initializedName);
  185848           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  185849             : 
  185850             : #if 0
  185851             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  185852             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  185853             : 
  185854             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  185855             :        // ROSE_ASSERT(end != NULL);
  185856             :           if (end == NULL)
  185857             :              {
  185858             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  185859             :              }
  185860             :             else
  185861             :              {
  185862             :                if (end->get_parent() == NULL)
  185863             :                   {
  185864             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  185865             :                   }
  185866             :                end->set_parent(initializedName);
  185867             :                ROSE_ASSERT(end->get_parent() != NULL);
  185868             :              }
  185869             : #endif
  185870             :         }
  185871             : 
  185872             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  185873           0 :      help.insertCopiedNodePair(this,result);
  185874             : 
  185875             :   // printf ("End of copy SgStatementExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  185876             : 
  185877             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  185878             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  185879           0 :      help.decrementDepth();
  185880             : 
  185881             :   // Test if this is the root of the copy!
  185882           0 :      if (help.get_depth() == 0)
  185883             :         {
  185884             :        // This is the original calling node.
  185885             : 
  185886             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  185887             :        // printf ("Calling SgStatementExpression::fixupCopy() (from root of AST being copied) \n");
  185888             : #if ALT_FIXUP_COPY
  185889             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  185890           0 :           fixupCopy_scopes (result,help);
  185891           0 :           fixupCopy_symbols (result,help);
  185892           0 :           fixupCopy_references (result,help);
  185893             : #else
  185894             :           fixupCopy(result,help);
  185895             : #endif
  185896             :        // Allow this to be called recursively, so accumulate the state.
  185897             :        // Also, clear the state in the SgCopyHelp object.
  185898             :        // help.clearState();
  185899             :         }
  185900             : 
  185901           0 :      return result;
  185902             :    }
  185903             : 
  185904             : 
  185905             : /* #line 185906 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  185906             : 
  185907             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185908             : 
  185909           0 : SgNode* SgAsmOp::copy ( SgCopyHelp& help) const
  185910             :    {
  185911           0 :      SgAsmOp* result = NULL;
  185912             : 
  185913             :   // printf ("Copy SgAsmOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  185914             : 
  185915             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  185916             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  185917             :   // The default value of the depth is 0, so after this call the depth is 1!
  185918           0 :      help.incrementDepth();
  185919             : 
  185920             : #if 0
  185921             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  185922             :   // but it is not generally true that things can only be copied once!
  185923             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  185924             :   // AstAttribute* existingAttribute = const_cast<SgAsmOp*>(this)->attribute["copied"];
  185925             :      bool previouslyCopied = const_cast<SgAsmOp*>(this)->attribute.exists("copied");
  185926             :      if (previouslyCopied == true)
  185927             :         {
  185928             :           this->get_file_info()->display("Called from copy SgAsmOp: debug");
  185929             :         }
  185930             :      ROSE_ASSERT(previouslyCopied == false);
  185931             : 
  185932             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  185933             :      AstAttribute* newAttribute = new AstAttribute();
  185934             :      ROSE_ASSERT(newAttribute != NULL);
  185935             : 
  185936             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  185937             :      const_cast<SgAsmOp*>(this)->attribute.add("copied",newAttribute);
  185938             : #endif
  185939             : 
  185940             :   // Copy data members from base classes
  185941             :   // Copy constructor parameter data member: startOfConstruct_copy
  185942             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  185943             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  185944           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  185945           0 :      if ( p_startOfConstruct != NULL ) 
  185946             :         { 
  185947           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  185948             :         } 
  185949             :        else 
  185950             :         { 
  185951             :           startOfConstruct_copy = NULL; 
  185952             :         } 
  185953             :   // Copy constructor parameter data member: constraint_copy
  185954             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for constraint
  185955             :   // case: toBeCopied == COPY_DATA for constraint
  185956           0 :      SgAsmOp::asm_operand_constraint_enum constraint_copy = p_constraint; 
  185957             :   // Copy constructor parameter data member: modifiers_copy
  185958             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for modifiers
  185959             :   // case: toBeCopied == COPY_DATA for modifiers
  185960           0 :      SgAsmOp::asm_operand_modifier_enum modifiers_copy = p_modifiers; 
  185961             :   // Copy constructor parameter data member: expression_copy
  185962           0 :      SgExpression* expression_copy; 
  185963             :   // case: not a listType for (using conditionalToCopyVariable)expression
  185964           0 :           if (get_expression() != NULL) 
  185965             :              { 
  185966           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
  185967             :              } 
  185968             :             else 
  185969             :              { 
  185970             :                expression_copy = NULL; 
  185971             :              } 
  185972             :  
  185973             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  185974             : 
  185975             :   // Build an empty copy of this object (will be filled in, but 
  185976             :   // the parent can't be set and must be set by the caller)
  185977           0 :      result = new SgAsmOp(  startOfConstruct_copy, constraint_copy, modifiers_copy, expression_copy );
  185978           0 :      ROSE_ASSERT(result != NULL);
  185979             : 
  185980             :   // Copy data members of "this" class
  185981             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  185982             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  185983             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  185984           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  185985           0 :      if ( p_endOfConstruct != NULL ) 
  185986             :         { 
  185987           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  185988             :         } 
  185989             :        else 
  185990             :         { 
  185991             :           endOfConstruct_copy = NULL; 
  185992             :         } 
  185993             :   /* check for a valid pointer and delete if present */ 
  185994           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  185995             :   /* add assignment to result here */ 
  185996           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  185997             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  185998             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  185999             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  186000           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  186001           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  186002             :         { 
  186003           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  186004             :         } 
  186005             :        else 
  186006             :         { 
  186007             :           attachedPreprocessingInfoPtr_copy = NULL; 
  186008             :         } 
  186009             :   /* check for a valid pointer and delete if present */ 
  186010           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  186011             :   /* add assignment to result here */ 
  186012           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  186013             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  186014             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  186015             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  186016           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  186017           0 :      if ( p_attributeMechanism != NULL ) 
  186018             :         { 
  186019           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  186020             :         } 
  186021             :        else 
  186022             :         { 
  186023             :           attributeMechanism_copy = NULL; 
  186024             :         } 
  186025             :   /* check for a valid pointer and delete if present */ 
  186026           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  186027             :   /* add assignment to result here */ 
  186028           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  186029             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  186030             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  186031             :   // case: toBeCopied == COPY_DATA for need_paren
  186032           0 :      bool need_paren_copy = p_need_paren; 
  186033           0 :      result->p_need_paren = need_paren_copy; 
  186034             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  186035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  186036             :   // case: toBeCopied == COPY_DATA for lvalue
  186037           0 :      bool lvalue_copy = p_lvalue; 
  186038           0 :      result->p_lvalue = lvalue_copy; 
  186039             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  186040             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  186041             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  186042           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  186043           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  186044             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  186045             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  186046             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  186047           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  186048           0 :      if ( p_operatorPosition != NULL ) 
  186049             :         { 
  186050           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  186051             :         } 
  186052             :        else 
  186053             :         { 
  186054             :           operatorPosition_copy = NULL; 
  186055             :         } 
  186056             :   /* check for a valid pointer and delete if present */ 
  186057           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  186058             :   /* add assignment to result here */ 
  186059           0 :      result->p_operatorPosition = operatorPosition_copy; 
  186060             :   // Copy non-constructor parameter data member (access function): recordRawAsmOperandDescriptions_copy
  186061             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for recordRawAsmOperandDescriptions
  186062             :   // case: toBeCopied == COPY_DATA for recordRawAsmOperandDescriptions
  186063           0 :      bool recordRawAsmOperandDescriptions_copy = p_recordRawAsmOperandDescriptions; 
  186064           0 :      result->p_recordRawAsmOperandDescriptions = recordRawAsmOperandDescriptions_copy; 
  186065             :   // Copy non-constructor parameter data member (access function): isOutputOperand_copy
  186066             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isOutputOperand
  186067             :   // case: toBeCopied == COPY_DATA for isOutputOperand
  186068           0 :      bool isOutputOperand_copy = p_isOutputOperand; 
  186069           0 :      result->p_isOutputOperand = isOutputOperand_copy; 
  186070             :   // Copy non-constructor parameter data member (access function): constraintString_copy
  186071             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for constraintString
  186072             :   // case: toBeCopied == COPY_DATA for constraintString
  186073           0 :      std::string constraintString_copy = p_constraintString; 
  186074           0 :      result->p_constraintString = constraintString_copy; 
  186075             :   // Copy non-constructor parameter data member (access function): name_copy
  186076             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  186077             :   // case: toBeCopied == COPY_DATA for name
  186078           0 :      std::string name_copy = p_name; 
  186079           0 :      result->p_name = name_copy; 
  186080             :   // case: not a listType for (using conditionalToSetParent)expression
  186081           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
  186082             :              { 
  186083           0 :                expression_copy->set_parent(result); 
  186084             :              } 
  186085             : 
  186086             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186087             : 
  186088             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  186089             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  186090             :   // fixupCopy(result,help);
  186091             : 
  186092             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  186093             :   // the Sg_File_Info objects that are built for the new IR nodes.
  186094           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  186095           0 :      if (locatedNode != NULL)
  186096             :         {
  186097             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  186098           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  186099           0 :           ROSE_ASSERT(start != NULL);
  186100             : #if 0
  186101             :        // Debugging information
  186102             :           if (start->get_parent() == NULL)
  186103             :              {
  186104             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186105             :              }
  186106             : #endif
  186107           0 :           start->set_parent(locatedNode);
  186108           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  186109             : 
  186110           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  186111             : 
  186112             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  186113             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  186114             :        // ROSE_ASSERT(end != NULL);
  186115           0 :           if (end == NULL)
  186116             :              {
  186117           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  186118             :              }
  186119             :             else
  186120             :              {
  186121             : #if 0
  186122             :             // Debugging information
  186123             :                if (end->get_parent() == NULL)
  186124             :                   {
  186125             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186126             :                   }
  186127             : #endif
  186128           0 :                end->set_parent(locatedNode);
  186129           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  186130             :              }
  186131             : 
  186132           0 :           SgExpression* expression = isSgExpression(result);
  186133           0 :           if (isSgExpression(this) != NULL)
  186134             :              {
  186135           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  186136             : 
  186137             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  186138           0 :                if (operatorPosition != NULL)
  186139             :                   {
  186140             : #if 0
  186141             :                  // Debugging information
  186142             :                     if (operatorPosition->get_parent() == NULL)
  186143             :                        {
  186144             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186145             :                        }
  186146             : #endif
  186147           0 :                     operatorPosition->set_parent(expression);
  186148           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  186149             :                   }
  186150             :              }
  186151             :         }
  186152             : 
  186153             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  186154           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  186155           0 :      if (initializedName != NULL)
  186156             :         {
  186157             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  186158           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  186159           0 :           ROSE_ASSERT(start != NULL);
  186160             : #if 0
  186161             :        // Debugging information
  186162             :           if (start->get_parent() == NULL)
  186163             :              {
  186164             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186165             :              }
  186166             : #endif
  186167           0 :           start->set_parent(initializedName);
  186168           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  186169             : 
  186170             : #if 0
  186171             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  186172             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  186173             : 
  186174             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  186175             :        // ROSE_ASSERT(end != NULL);
  186176             :           if (end == NULL)
  186177             :              {
  186178             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  186179             :              }
  186180             :             else
  186181             :              {
  186182             :                if (end->get_parent() == NULL)
  186183             :                   {
  186184             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186185             :                   }
  186186             :                end->set_parent(initializedName);
  186187             :                ROSE_ASSERT(end->get_parent() != NULL);
  186188             :              }
  186189             : #endif
  186190             :         }
  186191             : 
  186192             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  186193           0 :      help.insertCopiedNodePair(this,result);
  186194             : 
  186195             :   // printf ("End of copy SgAsmOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  186196             : 
  186197             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  186198             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  186199           0 :      help.decrementDepth();
  186200             : 
  186201             :   // Test if this is the root of the copy!
  186202           0 :      if (help.get_depth() == 0)
  186203             :         {
  186204             :        // This is the original calling node.
  186205             : 
  186206             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  186207             :        // printf ("Calling SgAsmOp::fixupCopy() (from root of AST being copied) \n");
  186208             : #if ALT_FIXUP_COPY
  186209             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  186210           0 :           fixupCopy_scopes (result,help);
  186211           0 :           fixupCopy_symbols (result,help);
  186212           0 :           fixupCopy_references (result,help);
  186213             : #else
  186214             :           fixupCopy(result,help);
  186215             : #endif
  186216             :        // Allow this to be called recursively, so accumulate the state.
  186217             :        // Also, clear the state in the SgCopyHelp object.
  186218             :        // help.clearState();
  186219             :         }
  186220             : 
  186221           0 :      return result;
  186222             :    }
  186223             : 
  186224             : 
  186225             : /* #line 186226 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  186226             : 
  186227             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186228             : 
  186229           0 : SgNode* SgLabelRefExp::copy ( SgCopyHelp& help) const
  186230             :    {
  186231           0 :      SgLabelRefExp* result = NULL;
  186232             : 
  186233             :   // printf ("Copy SgLabelRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  186234             : 
  186235             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  186236             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  186237             :   // The default value of the depth is 0, so after this call the depth is 1!
  186238           0 :      help.incrementDepth();
  186239             : 
  186240             : #if 0
  186241             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  186242             :   // but it is not generally true that things can only be copied once!
  186243             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  186244             :   // AstAttribute* existingAttribute = const_cast<SgLabelRefExp*>(this)->attribute["copied"];
  186245             :      bool previouslyCopied = const_cast<SgLabelRefExp*>(this)->attribute.exists("copied");
  186246             :      if (previouslyCopied == true)
  186247             :         {
  186248             :           this->get_file_info()->display("Called from copy SgLabelRefExp: debug");
  186249             :         }
  186250             :      ROSE_ASSERT(previouslyCopied == false);
  186251             : 
  186252             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  186253             :      AstAttribute* newAttribute = new AstAttribute();
  186254             :      ROSE_ASSERT(newAttribute != NULL);
  186255             : 
  186256             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  186257             :      const_cast<SgLabelRefExp*>(this)->attribute.add("copied",newAttribute);
  186258             : #endif
  186259             : 
  186260             :   // Copy data members from base classes
  186261             :   // Copy constructor parameter data member: startOfConstruct_copy
  186262             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  186263             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  186264           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  186265           0 :      if ( p_startOfConstruct != NULL ) 
  186266             :         { 
  186267           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  186268             :         } 
  186269             :        else 
  186270             :         { 
  186271             :           startOfConstruct_copy = NULL; 
  186272             :         } 
  186273             :   // Copy constructor parameter data member: symbol_copy
  186274             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol
  186275             :   // case: toBeCopied == COPY_DATA for symbol
  186276           0 :      SgLabelSymbol* symbol_copy = p_symbol; 
  186277             :  
  186278             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186279             : 
  186280             :   // Build an empty copy of this object (will be filled in, but 
  186281             :   // the parent can't be set and must be set by the caller)
  186282           0 :      result = new SgLabelRefExp(  startOfConstruct_copy, symbol_copy );
  186283           0 :      ROSE_ASSERT(result != NULL);
  186284             : 
  186285             :   // Copy data members of "this" class
  186286             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  186287             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  186288             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  186289           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  186290           0 :      if ( p_endOfConstruct != NULL ) 
  186291             :         { 
  186292           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  186293             :         } 
  186294             :        else 
  186295             :         { 
  186296             :           endOfConstruct_copy = NULL; 
  186297             :         } 
  186298             :   /* check for a valid pointer and delete if present */ 
  186299           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  186300             :   /* add assignment to result here */ 
  186301           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  186302             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  186303             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  186304             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  186305           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  186306           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  186307             :         { 
  186308           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  186309             :         } 
  186310             :        else 
  186311             :         { 
  186312             :           attachedPreprocessingInfoPtr_copy = NULL; 
  186313             :         } 
  186314             :   /* check for a valid pointer and delete if present */ 
  186315           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  186316             :   /* add assignment to result here */ 
  186317           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  186318             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  186319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  186320             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  186321           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  186322           0 :      if ( p_attributeMechanism != NULL ) 
  186323             :         { 
  186324           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  186325             :         } 
  186326             :        else 
  186327             :         { 
  186328             :           attributeMechanism_copy = NULL; 
  186329             :         } 
  186330             :   /* check for a valid pointer and delete if present */ 
  186331           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  186332             :   /* add assignment to result here */ 
  186333           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  186334             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  186335             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  186336             :   // case: toBeCopied == COPY_DATA for need_paren
  186337           0 :      bool need_paren_copy = p_need_paren; 
  186338           0 :      result->p_need_paren = need_paren_copy; 
  186339             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  186340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  186341             :   // case: toBeCopied == COPY_DATA for lvalue
  186342           0 :      bool lvalue_copy = p_lvalue; 
  186343           0 :      result->p_lvalue = lvalue_copy; 
  186344             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  186345             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  186346             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  186347           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  186348           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  186349             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  186350             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  186351             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  186352           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  186353           0 :      if ( p_operatorPosition != NULL ) 
  186354             :         { 
  186355           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  186356             :         } 
  186357             :        else 
  186358             :         { 
  186359             :           operatorPosition_copy = NULL; 
  186360             :         } 
  186361             :   /* check for a valid pointer and delete if present */ 
  186362           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  186363             :   /* add assignment to result here */ 
  186364           0 :      result->p_operatorPosition = operatorPosition_copy; 
  186365             : 
  186366             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186367             : 
  186368             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  186369             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  186370             :   // fixupCopy(result,help);
  186371             : 
  186372             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  186373             :   // the Sg_File_Info objects that are built for the new IR nodes.
  186374           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  186375           0 :      if (locatedNode != NULL)
  186376             :         {
  186377             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  186378           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  186379           0 :           ROSE_ASSERT(start != NULL);
  186380             : #if 0
  186381             :        // Debugging information
  186382             :           if (start->get_parent() == NULL)
  186383             :              {
  186384             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186385             :              }
  186386             : #endif
  186387           0 :           start->set_parent(locatedNode);
  186388           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  186389             : 
  186390           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  186391             : 
  186392             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  186393             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  186394             :        // ROSE_ASSERT(end != NULL);
  186395           0 :           if (end == NULL)
  186396             :              {
  186397           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  186398             :              }
  186399             :             else
  186400             :              {
  186401             : #if 0
  186402             :             // Debugging information
  186403             :                if (end->get_parent() == NULL)
  186404             :                   {
  186405             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186406             :                   }
  186407             : #endif
  186408           0 :                end->set_parent(locatedNode);
  186409           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  186410             :              }
  186411             : 
  186412           0 :           SgExpression* expression = isSgExpression(result);
  186413           0 :           if (isSgExpression(this) != NULL)
  186414             :              {
  186415           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  186416             : 
  186417             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  186418           0 :                if (operatorPosition != NULL)
  186419             :                   {
  186420             : #if 0
  186421             :                  // Debugging information
  186422             :                     if (operatorPosition->get_parent() == NULL)
  186423             :                        {
  186424             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186425             :                        }
  186426             : #endif
  186427           0 :                     operatorPosition->set_parent(expression);
  186428           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  186429             :                   }
  186430             :              }
  186431             :         }
  186432             : 
  186433             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  186434           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  186435           0 :      if (initializedName != NULL)
  186436             :         {
  186437             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  186438           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  186439           0 :           ROSE_ASSERT(start != NULL);
  186440             : #if 0
  186441             :        // Debugging information
  186442             :           if (start->get_parent() == NULL)
  186443             :              {
  186444             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186445             :              }
  186446             : #endif
  186447           0 :           start->set_parent(initializedName);
  186448           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  186449             : 
  186450             : #if 0
  186451             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  186452             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  186453             : 
  186454             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  186455             :        // ROSE_ASSERT(end != NULL);
  186456             :           if (end == NULL)
  186457             :              {
  186458             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  186459             :              }
  186460             :             else
  186461             :              {
  186462             :                if (end->get_parent() == NULL)
  186463             :                   {
  186464             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186465             :                   }
  186466             :                end->set_parent(initializedName);
  186467             :                ROSE_ASSERT(end->get_parent() != NULL);
  186468             :              }
  186469             : #endif
  186470             :         }
  186471             : 
  186472             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  186473           0 :      help.insertCopiedNodePair(this,result);
  186474             : 
  186475             :   // printf ("End of copy SgLabelRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  186476             : 
  186477             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  186478             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  186479           0 :      help.decrementDepth();
  186480             : 
  186481             :   // Test if this is the root of the copy!
  186482           0 :      if (help.get_depth() == 0)
  186483             :         {
  186484             :        // This is the original calling node.
  186485             : 
  186486             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  186487             :        // printf ("Calling SgLabelRefExp::fixupCopy() (from root of AST being copied) \n");
  186488             : #if ALT_FIXUP_COPY
  186489             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  186490           0 :           fixupCopy_scopes (result,help);
  186491           0 :           fixupCopy_symbols (result,help);
  186492           0 :           fixupCopy_references (result,help);
  186493             : #else
  186494             :           fixupCopy(result,help);
  186495             : #endif
  186496             :        // Allow this to be called recursively, so accumulate the state.
  186497             :        // Also, clear the state in the SgCopyHelp object.
  186498             :        // help.clearState();
  186499             :         }
  186500             : 
  186501           0 :      return result;
  186502             :    }
  186503             : 
  186504             : 
  186505             : /* #line 186506 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  186506             : 
  186507             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186508             : 
  186509           0 : SgNode* SgActualArgumentExpression::copy ( SgCopyHelp& help) const
  186510             :    {
  186511           0 :      SgActualArgumentExpression* result = NULL;
  186512             : 
  186513             :   // printf ("Copy SgActualArgumentExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  186514             : 
  186515             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  186516             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  186517             :   // The default value of the depth is 0, so after this call the depth is 1!
  186518           0 :      help.incrementDepth();
  186519             : 
  186520             : #if 0
  186521             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  186522             :   // but it is not generally true that things can only be copied once!
  186523             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  186524             :   // AstAttribute* existingAttribute = const_cast<SgActualArgumentExpression*>(this)->attribute["copied"];
  186525             :      bool previouslyCopied = const_cast<SgActualArgumentExpression*>(this)->attribute.exists("copied");
  186526             :      if (previouslyCopied == true)
  186527             :         {
  186528             :           this->get_file_info()->display("Called from copy SgActualArgumentExpression: debug");
  186529             :         }
  186530             :      ROSE_ASSERT(previouslyCopied == false);
  186531             : 
  186532             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  186533             :      AstAttribute* newAttribute = new AstAttribute();
  186534             :      ROSE_ASSERT(newAttribute != NULL);
  186535             : 
  186536             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  186537             :      const_cast<SgActualArgumentExpression*>(this)->attribute.add("copied",newAttribute);
  186538             : #endif
  186539             : 
  186540             :   // Copy data members from base classes
  186541             :   // Copy constructor parameter data member: startOfConstruct_copy
  186542             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  186543             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  186544           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  186545           0 :      if ( p_startOfConstruct != NULL ) 
  186546             :         { 
  186547           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  186548             :         } 
  186549             :        else 
  186550             :         { 
  186551             :           startOfConstruct_copy = NULL; 
  186552             :         } 
  186553             :   // Copy constructor parameter data member: argument_name_copy
  186554             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for argument_name
  186555             :   // case: toBeCopied == COPY_DATA for argument_name
  186556           0 :      SgName argument_name_copy = p_argument_name; 
  186557             :   // Copy constructor parameter data member: expression_copy
  186558           0 :      SgExpression* expression_copy; 
  186559             :   // case: not a listType for (using conditionalToCopyVariable)expression
  186560           0 :           if (get_expression() != NULL) 
  186561             :              { 
  186562           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
  186563             :              } 
  186564             :             else 
  186565             :              { 
  186566             :                expression_copy = NULL; 
  186567             :              } 
  186568             :  
  186569             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186570             : 
  186571             :   // Build an empty copy of this object (will be filled in, but 
  186572             :   // the parent can't be set and must be set by the caller)
  186573           0 :      result = new SgActualArgumentExpression(  startOfConstruct_copy, argument_name_copy, expression_copy );
  186574           0 :      ROSE_ASSERT(result != NULL);
  186575             : 
  186576             :   // Copy data members of "this" class
  186577             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  186578             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  186579             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  186580           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  186581           0 :      if ( p_endOfConstruct != NULL ) 
  186582             :         { 
  186583           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  186584             :         } 
  186585             :        else 
  186586             :         { 
  186587             :           endOfConstruct_copy = NULL; 
  186588             :         } 
  186589             :   /* check for a valid pointer and delete if present */ 
  186590           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  186591             :   /* add assignment to result here */ 
  186592           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  186593             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  186594             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  186595             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  186596           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  186597           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  186598             :         { 
  186599           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  186600             :         } 
  186601             :        else 
  186602             :         { 
  186603             :           attachedPreprocessingInfoPtr_copy = NULL; 
  186604             :         } 
  186605             :   /* check for a valid pointer and delete if present */ 
  186606           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  186607             :   /* add assignment to result here */ 
  186608           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  186609             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  186610             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  186611             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  186612           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  186613           0 :      if ( p_attributeMechanism != NULL ) 
  186614             :         { 
  186615           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  186616             :         } 
  186617             :        else 
  186618             :         { 
  186619             :           attributeMechanism_copy = NULL; 
  186620             :         } 
  186621             :   /* check for a valid pointer and delete if present */ 
  186622           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  186623             :   /* add assignment to result here */ 
  186624           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  186625             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  186626             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  186627             :   // case: toBeCopied == COPY_DATA for need_paren
  186628           0 :      bool need_paren_copy = p_need_paren; 
  186629           0 :      result->p_need_paren = need_paren_copy; 
  186630             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  186631             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  186632             :   // case: toBeCopied == COPY_DATA for lvalue
  186633           0 :      bool lvalue_copy = p_lvalue; 
  186634           0 :      result->p_lvalue = lvalue_copy; 
  186635             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  186636             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  186637             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  186638           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  186639           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  186640             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  186641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  186642             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  186643           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  186644           0 :      if ( p_operatorPosition != NULL ) 
  186645             :         { 
  186646           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  186647             :         } 
  186648             :        else 
  186649             :         { 
  186650             :           operatorPosition_copy = NULL; 
  186651             :         } 
  186652             :   /* check for a valid pointer and delete if present */ 
  186653           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  186654             :   /* add assignment to result here */ 
  186655           0 :      result->p_operatorPosition = operatorPosition_copy; 
  186656             :   // case: not a listType for (using conditionalToSetParent)expression
  186657           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
  186658             :              { 
  186659           0 :                expression_copy->set_parent(result); 
  186660             :              } 
  186661             : 
  186662             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186663             : 
  186664             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  186665             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  186666             :   // fixupCopy(result,help);
  186667             : 
  186668             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  186669             :   // the Sg_File_Info objects that are built for the new IR nodes.
  186670           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  186671           0 :      if (locatedNode != NULL)
  186672             :         {
  186673             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  186674           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  186675           0 :           ROSE_ASSERT(start != NULL);
  186676             : #if 0
  186677             :        // Debugging information
  186678             :           if (start->get_parent() == NULL)
  186679             :              {
  186680             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186681             :              }
  186682             : #endif
  186683           0 :           start->set_parent(locatedNode);
  186684           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  186685             : 
  186686           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  186687             : 
  186688             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  186689             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  186690             :        // ROSE_ASSERT(end != NULL);
  186691           0 :           if (end == NULL)
  186692             :              {
  186693           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  186694             :              }
  186695             :             else
  186696             :              {
  186697             : #if 0
  186698             :             // Debugging information
  186699             :                if (end->get_parent() == NULL)
  186700             :                   {
  186701             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186702             :                   }
  186703             : #endif
  186704           0 :                end->set_parent(locatedNode);
  186705           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  186706             :              }
  186707             : 
  186708           0 :           SgExpression* expression = isSgExpression(result);
  186709           0 :           if (isSgExpression(this) != NULL)
  186710             :              {
  186711           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  186712             : 
  186713             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  186714           0 :                if (operatorPosition != NULL)
  186715             :                   {
  186716             : #if 0
  186717             :                  // Debugging information
  186718             :                     if (operatorPosition->get_parent() == NULL)
  186719             :                        {
  186720             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186721             :                        }
  186722             : #endif
  186723           0 :                     operatorPosition->set_parent(expression);
  186724           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  186725             :                   }
  186726             :              }
  186727             :         }
  186728             : 
  186729             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  186730           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  186731           0 :      if (initializedName != NULL)
  186732             :         {
  186733             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  186734           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  186735           0 :           ROSE_ASSERT(start != NULL);
  186736             : #if 0
  186737             :        // Debugging information
  186738             :           if (start->get_parent() == NULL)
  186739             :              {
  186740             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186741             :              }
  186742             : #endif
  186743           0 :           start->set_parent(initializedName);
  186744           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  186745             : 
  186746             : #if 0
  186747             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  186748             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  186749             : 
  186750             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  186751             :        // ROSE_ASSERT(end != NULL);
  186752             :           if (end == NULL)
  186753             :              {
  186754             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  186755             :              }
  186756             :             else
  186757             :              {
  186758             :                if (end->get_parent() == NULL)
  186759             :                   {
  186760             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  186761             :                   }
  186762             :                end->set_parent(initializedName);
  186763             :                ROSE_ASSERT(end->get_parent() != NULL);
  186764             :              }
  186765             : #endif
  186766             :         }
  186767             : 
  186768             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  186769           0 :      help.insertCopiedNodePair(this,result);
  186770             : 
  186771             :   // printf ("End of copy SgActualArgumentExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  186772             : 
  186773             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  186774             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  186775           0 :      help.decrementDepth();
  186776             : 
  186777             :   // Test if this is the root of the copy!
  186778           0 :      if (help.get_depth() == 0)
  186779             :         {
  186780             :        // This is the original calling node.
  186781             : 
  186782             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  186783             :        // printf ("Calling SgActualArgumentExpression::fixupCopy() (from root of AST being copied) \n");
  186784             : #if ALT_FIXUP_COPY
  186785             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  186786           0 :           fixupCopy_scopes (result,help);
  186787           0 :           fixupCopy_symbols (result,help);
  186788           0 :           fixupCopy_references (result,help);
  186789             : #else
  186790             :           fixupCopy(result,help);
  186791             : #endif
  186792             :        // Allow this to be called recursively, so accumulate the state.
  186793             :        // Also, clear the state in the SgCopyHelp object.
  186794             :        // help.clearState();
  186795             :         }
  186796             : 
  186797           0 :      return result;
  186798             :    }
  186799             : 
  186800             : 
  186801             : /* #line 186802 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  186802             : 
  186803             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186804             : 
  186805           0 : SgNode* SgUnknownArrayOrFunctionReference::copy ( SgCopyHelp& help) const
  186806             :    {
  186807           0 :      SgUnknownArrayOrFunctionReference* result = NULL;
  186808             : 
  186809             :   // printf ("Copy SgUnknownArrayOrFunctionReference = %p = %s \n",this,SageInterface::get_name(this).c_str());
  186810             : 
  186811             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  186812             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  186813             :   // The default value of the depth is 0, so after this call the depth is 1!
  186814           0 :      help.incrementDepth();
  186815             : 
  186816             : #if 0
  186817             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  186818             :   // but it is not generally true that things can only be copied once!
  186819             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  186820             :   // AstAttribute* existingAttribute = const_cast<SgUnknownArrayOrFunctionReference*>(this)->attribute["copied"];
  186821             :      bool previouslyCopied = const_cast<SgUnknownArrayOrFunctionReference*>(this)->attribute.exists("copied");
  186822             :      if (previouslyCopied == true)
  186823             :         {
  186824             :           this->get_file_info()->display("Called from copy SgUnknownArrayOrFunctionReference: debug");
  186825             :         }
  186826             :      ROSE_ASSERT(previouslyCopied == false);
  186827             : 
  186828             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  186829             :      AstAttribute* newAttribute = new AstAttribute();
  186830             :      ROSE_ASSERT(newAttribute != NULL);
  186831             : 
  186832             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  186833             :      const_cast<SgUnknownArrayOrFunctionReference*>(this)->attribute.add("copied",newAttribute);
  186834             : #endif
  186835             : 
  186836             :   // Copy data members from base classes
  186837             :   // Copy constructor parameter data member: startOfConstruct_copy
  186838             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  186839             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  186840           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  186841           0 :      if ( p_startOfConstruct != NULL ) 
  186842             :         { 
  186843           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  186844             :         } 
  186845             :        else 
  186846             :         { 
  186847             :           startOfConstruct_copy = NULL; 
  186848             :         } 
  186849             :  
  186850             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186851             : 
  186852             :   // Build an empty copy of this object (will be filled in, but 
  186853             :   // the parent can't be set and must be set by the caller)
  186854           0 :      result = new SgUnknownArrayOrFunctionReference(  startOfConstruct_copy );
  186855           0 :      ROSE_ASSERT(result != NULL);
  186856             : 
  186857             :   // Copy data members of "this" class
  186858             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  186859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  186860             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  186861           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  186862           0 :      if ( p_endOfConstruct != NULL ) 
  186863             :         { 
  186864           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  186865             :         } 
  186866             :        else 
  186867             :         { 
  186868             :           endOfConstruct_copy = NULL; 
  186869             :         } 
  186870             :   /* check for a valid pointer and delete if present */ 
  186871           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  186872             :   /* add assignment to result here */ 
  186873           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  186874             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  186875             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  186876             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  186877           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  186878           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  186879             :         { 
  186880           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  186881             :         } 
  186882             :        else 
  186883             :         { 
  186884             :           attachedPreprocessingInfoPtr_copy = NULL; 
  186885             :         } 
  186886             :   /* check for a valid pointer and delete if present */ 
  186887           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  186888             :   /* add assignment to result here */ 
  186889           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  186890             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  186891             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  186892             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  186893           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  186894           0 :      if ( p_attributeMechanism != NULL ) 
  186895             :         { 
  186896           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  186897             :         } 
  186898             :        else 
  186899             :         { 
  186900             :           attributeMechanism_copy = NULL; 
  186901             :         } 
  186902             :   /* check for a valid pointer and delete if present */ 
  186903           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  186904             :   /* add assignment to result here */ 
  186905           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  186906             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  186907             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  186908             :   // case: toBeCopied == COPY_DATA for need_paren
  186909           0 :      bool need_paren_copy = p_need_paren; 
  186910           0 :      result->p_need_paren = need_paren_copy; 
  186911             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  186912             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  186913             :   // case: toBeCopied == COPY_DATA for lvalue
  186914           0 :      bool lvalue_copy = p_lvalue; 
  186915           0 :      result->p_lvalue = lvalue_copy; 
  186916             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  186917             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  186918             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  186919           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  186920           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  186921             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  186922             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  186923             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  186924           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  186925           0 :      if ( p_operatorPosition != NULL ) 
  186926             :         { 
  186927           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  186928             :         } 
  186929             :        else 
  186930             :         { 
  186931             :           operatorPosition_copy = NULL; 
  186932             :         } 
  186933             :   /* check for a valid pointer and delete if present */ 
  186934           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  186935             :   /* add assignment to result here */ 
  186936           0 :      result->p_operatorPosition = operatorPosition_copy; 
  186937             :   // Copy non-constructor parameter data member (access function): name_copy
  186938             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  186939             :   // case: toBeCopied == COPY_DATA for name
  186940           0 :      std::string name_copy = p_name; 
  186941           0 :      result->p_name = name_copy; 
  186942             :   // Copy non-constructor parameter data member (access function): named_reference_copy
  186943           0 :      SgExpression* named_reference_copy; 
  186944             :   // case: not a listType for (using conditionalToCopyVariable)named_reference
  186945           0 :           if (get_named_reference() != NULL) 
  186946             :              { 
  186947           0 :                named_reference_copy = static_cast<SgExpression*>(help.copyAst(get_named_reference())); 
  186948             :              } 
  186949             :             else 
  186950             :              { 
  186951             :                named_reference_copy = NULL; 
  186952             :              } 
  186953             :   /* check for a valid pointer and delete if present */ 
  186954           0 :      if (result->p_named_reference != NULL) delete result->p_named_reference; 
  186955           0 :      result->p_named_reference = named_reference_copy; 
  186956             :   // case: not a listType for (using conditionalToSetParent)named_reference
  186957           0 :           if ( (named_reference_copy != NULL) && (named_reference_copy->get_parent() == NULL) && (isSgType(named_reference_copy) == NULL) ) 
  186958             :              { 
  186959           0 :                named_reference_copy->set_parent(result); 
  186960             :              } 
  186961             :   // Copy non-constructor parameter data member (access function): expression_list_copy
  186962           0 :      SgExprListExp* expression_list_copy; 
  186963             :   // case: not a listType for (using conditionalToCopyVariable)expression_list
  186964           0 :           if (get_expression_list() != NULL) 
  186965             :              { 
  186966           0 :                expression_list_copy = static_cast<SgExprListExp*>(help.copyAst(get_expression_list())); 
  186967             :              } 
  186968             :             else 
  186969             :              { 
  186970             :                expression_list_copy = NULL; 
  186971             :              } 
  186972             :   /* check for a valid pointer and delete if present */ 
  186973           0 :      if (result->p_expression_list != NULL) delete result->p_expression_list; 
  186974           0 :      result->p_expression_list = expression_list_copy; 
  186975             :   // case: not a listType for (using conditionalToSetParent)expression_list
  186976           0 :           if ( (expression_list_copy != NULL) && (expression_list_copy->get_parent() == NULL) && (isSgType(expression_list_copy) == NULL) ) 
  186977             :              { 
  186978           0 :                expression_list_copy->set_parent(result); 
  186979             :              } 
  186980             : 
  186981             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  186982             : 
  186983             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  186984             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  186985             :   // fixupCopy(result,help);
  186986             : 
  186987             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  186988             :   // the Sg_File_Info objects that are built for the new IR nodes.
  186989           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  186990           0 :      if (locatedNode != NULL)
  186991             :         {
  186992             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  186993           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  186994           0 :           ROSE_ASSERT(start != NULL);
  186995             : #if 0
  186996             :        // Debugging information
  186997             :           if (start->get_parent() == NULL)
  186998             :              {
  186999             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187000             :              }
  187001             : #endif
  187002           0 :           start->set_parent(locatedNode);
  187003           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  187004             : 
  187005           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  187006             : 
  187007             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  187008             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  187009             :        // ROSE_ASSERT(end != NULL);
  187010           0 :           if (end == NULL)
  187011             :              {
  187012           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  187013             :              }
  187014             :             else
  187015             :              {
  187016             : #if 0
  187017             :             // Debugging information
  187018             :                if (end->get_parent() == NULL)
  187019             :                   {
  187020             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187021             :                   }
  187022             : #endif
  187023           0 :                end->set_parent(locatedNode);
  187024           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  187025             :              }
  187026             : 
  187027           0 :           SgExpression* expression = isSgExpression(result);
  187028           0 :           if (isSgExpression(this) != NULL)
  187029             :              {
  187030           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  187031             : 
  187032             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  187033           0 :                if (operatorPosition != NULL)
  187034             :                   {
  187035             : #if 0
  187036             :                  // Debugging information
  187037             :                     if (operatorPosition->get_parent() == NULL)
  187038             :                        {
  187039             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187040             :                        }
  187041             : #endif
  187042           0 :                     operatorPosition->set_parent(expression);
  187043           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  187044             :                   }
  187045             :              }
  187046             :         }
  187047             : 
  187048             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  187049           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  187050           0 :      if (initializedName != NULL)
  187051             :         {
  187052             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  187053           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  187054           0 :           ROSE_ASSERT(start != NULL);
  187055             : #if 0
  187056             :        // Debugging information
  187057             :           if (start->get_parent() == NULL)
  187058             :              {
  187059             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187060             :              }
  187061             : #endif
  187062           0 :           start->set_parent(initializedName);
  187063           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  187064             : 
  187065             : #if 0
  187066             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  187067             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  187068             : 
  187069             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  187070             :        // ROSE_ASSERT(end != NULL);
  187071             :           if (end == NULL)
  187072             :              {
  187073             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  187074             :              }
  187075             :             else
  187076             :              {
  187077             :                if (end->get_parent() == NULL)
  187078             :                   {
  187079             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187080             :                   }
  187081             :                end->set_parent(initializedName);
  187082             :                ROSE_ASSERT(end->get_parent() != NULL);
  187083             :              }
  187084             : #endif
  187085             :         }
  187086             : 
  187087             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  187088           0 :      help.insertCopiedNodePair(this,result);
  187089             : 
  187090             :   // printf ("End of copy SgUnknownArrayOrFunctionReference = %p = %s \n",this,SageInterface::get_name(this).c_str());
  187091             : 
  187092             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  187093             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  187094           0 :      help.decrementDepth();
  187095             : 
  187096             :   // Test if this is the root of the copy!
  187097           0 :      if (help.get_depth() == 0)
  187098             :         {
  187099             :        // This is the original calling node.
  187100             : 
  187101             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  187102             :        // printf ("Calling SgUnknownArrayOrFunctionReference::fixupCopy() (from root of AST being copied) \n");
  187103             : #if ALT_FIXUP_COPY
  187104             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  187105           0 :           fixupCopy_scopes (result,help);
  187106           0 :           fixupCopy_symbols (result,help);
  187107           0 :           fixupCopy_references (result,help);
  187108             : #else
  187109             :           fixupCopy(result,help);
  187110             : #endif
  187111             :        // Allow this to be called recursively, so accumulate the state.
  187112             :        // Also, clear the state in the SgCopyHelp object.
  187113             :        // help.clearState();
  187114             :         }
  187115             : 
  187116           0 :      return result;
  187117             :    }
  187118             : 
  187119             : 
  187120             : /* #line 187121 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  187121             : 
  187122             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  187123             : 
  187124           0 : SgNode* SgPseudoDestructorRefExp::copy ( SgCopyHelp& help) const
  187125             :    {
  187126           0 :      SgPseudoDestructorRefExp* result = NULL;
  187127             : 
  187128             :   // printf ("Copy SgPseudoDestructorRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  187129             : 
  187130             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  187131             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  187132             :   // The default value of the depth is 0, so after this call the depth is 1!
  187133           0 :      help.incrementDepth();
  187134             : 
  187135             : #if 0
  187136             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  187137             :   // but it is not generally true that things can only be copied once!
  187138             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  187139             :   // AstAttribute* existingAttribute = const_cast<SgPseudoDestructorRefExp*>(this)->attribute["copied"];
  187140             :      bool previouslyCopied = const_cast<SgPseudoDestructorRefExp*>(this)->attribute.exists("copied");
  187141             :      if (previouslyCopied == true)
  187142             :         {
  187143             :           this->get_file_info()->display("Called from copy SgPseudoDestructorRefExp: debug");
  187144             :         }
  187145             :      ROSE_ASSERT(previouslyCopied == false);
  187146             : 
  187147             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  187148             :      AstAttribute* newAttribute = new AstAttribute();
  187149             :      ROSE_ASSERT(newAttribute != NULL);
  187150             : 
  187151             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  187152             :      const_cast<SgPseudoDestructorRefExp*>(this)->attribute.add("copied",newAttribute);
  187153             : #endif
  187154             : 
  187155             :   // Copy data members from base classes
  187156             :   // Copy constructor parameter data member: startOfConstruct_copy
  187157             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  187158             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  187159           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  187160           0 :      if ( p_startOfConstruct != NULL ) 
  187161             :         { 
  187162           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  187163             :         } 
  187164             :        else 
  187165             :         { 
  187166             :           startOfConstruct_copy = NULL; 
  187167             :         } 
  187168             :   // Copy constructor parameter data member: object_type_copy
  187169             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for object_type
  187170             :   // case: toBeCopied == COPY_DATA for object_type
  187171           0 :      SgType* object_type_copy = p_object_type; 
  187172             :  
  187173             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  187174             : 
  187175             :   // Build an empty copy of this object (will be filled in, but 
  187176             :   // the parent can't be set and must be set by the caller)
  187177           0 :      result = new SgPseudoDestructorRefExp(  startOfConstruct_copy, object_type_copy );
  187178           0 :      ROSE_ASSERT(result != NULL);
  187179             : 
  187180             :   // Copy data members of "this" class
  187181             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  187182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  187183             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  187184           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  187185           0 :      if ( p_endOfConstruct != NULL ) 
  187186             :         { 
  187187           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  187188             :         } 
  187189             :        else 
  187190             :         { 
  187191             :           endOfConstruct_copy = NULL; 
  187192             :         } 
  187193             :   /* check for a valid pointer and delete if present */ 
  187194           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  187195             :   /* add assignment to result here */ 
  187196           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  187197             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  187198             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  187199             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  187200           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  187201           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  187202             :         { 
  187203           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  187204             :         } 
  187205             :        else 
  187206             :         { 
  187207             :           attachedPreprocessingInfoPtr_copy = NULL; 
  187208             :         } 
  187209             :   /* check for a valid pointer and delete if present */ 
  187210           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  187211             :   /* add assignment to result here */ 
  187212           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  187213             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  187214             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  187215             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  187216           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  187217           0 :      if ( p_attributeMechanism != NULL ) 
  187218             :         { 
  187219           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  187220             :         } 
  187221             :        else 
  187222             :         { 
  187223             :           attributeMechanism_copy = NULL; 
  187224             :         } 
  187225             :   /* check for a valid pointer and delete if present */ 
  187226           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  187227             :   /* add assignment to result here */ 
  187228           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  187229             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  187230             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  187231             :   // case: toBeCopied == COPY_DATA for need_paren
  187232           0 :      bool need_paren_copy = p_need_paren; 
  187233           0 :      result->p_need_paren = need_paren_copy; 
  187234             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  187235             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  187236             :   // case: toBeCopied == COPY_DATA for lvalue
  187237           0 :      bool lvalue_copy = p_lvalue; 
  187238           0 :      result->p_lvalue = lvalue_copy; 
  187239             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  187240             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  187241             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  187242           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  187243           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  187244             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  187245             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  187246             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  187247           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  187248           0 :      if ( p_operatorPosition != NULL ) 
  187249             :         { 
  187250           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  187251             :         } 
  187252             :        else 
  187253             :         { 
  187254             :           operatorPosition_copy = NULL; 
  187255             :         } 
  187256             :   /* check for a valid pointer and delete if present */ 
  187257           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  187258             :   /* add assignment to result here */ 
  187259           0 :      result->p_operatorPosition = operatorPosition_copy; 
  187260             :   // Copy non-constructor parameter data member (access function): expression_type_copy
  187261             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  187262             :   // case: toBeCopied == COPY_DATA for expression_type
  187263           0 :      SgType* expression_type_copy = p_expression_type; 
  187264           0 :      result->p_expression_type = expression_type_copy; 
  187265             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  187266             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  187267             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  187268           0 :      int name_qualification_length_copy = p_name_qualification_length; 
  187269           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
  187270             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  187271             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  187272             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  187273           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  187274           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  187275             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  187276             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  187277             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  187278           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
  187279           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
  187280             : 
  187281             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  187282             : 
  187283             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  187284             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  187285             :   // fixupCopy(result,help);
  187286             : 
  187287             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  187288             :   // the Sg_File_Info objects that are built for the new IR nodes.
  187289           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  187290           0 :      if (locatedNode != NULL)
  187291             :         {
  187292             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  187293           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  187294           0 :           ROSE_ASSERT(start != NULL);
  187295             : #if 0
  187296             :        // Debugging information
  187297             :           if (start->get_parent() == NULL)
  187298             :              {
  187299             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187300             :              }
  187301             : #endif
  187302           0 :           start->set_parent(locatedNode);
  187303           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  187304             : 
  187305           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  187306             : 
  187307             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  187308             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  187309             :        // ROSE_ASSERT(end != NULL);
  187310           0 :           if (end == NULL)
  187311             :              {
  187312           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  187313             :              }
  187314             :             else
  187315             :              {
  187316             : #if 0
  187317             :             // Debugging information
  187318             :                if (end->get_parent() == NULL)
  187319             :                   {
  187320             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187321             :                   }
  187322             : #endif
  187323           0 :                end->set_parent(locatedNode);
  187324           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  187325             :              }
  187326             : 
  187327           0 :           SgExpression* expression = isSgExpression(result);
  187328           0 :           if (isSgExpression(this) != NULL)
  187329             :              {
  187330           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  187331             : 
  187332             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  187333           0 :                if (operatorPosition != NULL)
  187334             :                   {
  187335             : #if 0
  187336             :                  // Debugging information
  187337             :                     if (operatorPosition->get_parent() == NULL)
  187338             :                        {
  187339             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187340             :                        }
  187341             : #endif
  187342           0 :                     operatorPosition->set_parent(expression);
  187343           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  187344             :                   }
  187345             :              }
  187346             :         }
  187347             : 
  187348             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  187349           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  187350           0 :      if (initializedName != NULL)
  187351             :         {
  187352             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  187353           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  187354           0 :           ROSE_ASSERT(start != NULL);
  187355             : #if 0
  187356             :        // Debugging information
  187357             :           if (start->get_parent() == NULL)
  187358             :              {
  187359             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187360             :              }
  187361             : #endif
  187362           0 :           start->set_parent(initializedName);
  187363           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  187364             : 
  187365             : #if 0
  187366             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  187367             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  187368             : 
  187369             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  187370             :        // ROSE_ASSERT(end != NULL);
  187371             :           if (end == NULL)
  187372             :              {
  187373             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  187374             :              }
  187375             :             else
  187376             :              {
  187377             :                if (end->get_parent() == NULL)
  187378             :                   {
  187379             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187380             :                   }
  187381             :                end->set_parent(initializedName);
  187382             :                ROSE_ASSERT(end->get_parent() != NULL);
  187383             :              }
  187384             : #endif
  187385             :         }
  187386             : 
  187387             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  187388           0 :      help.insertCopiedNodePair(this,result);
  187389             : 
  187390             :   // printf ("End of copy SgPseudoDestructorRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  187391             : 
  187392             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  187393             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  187394           0 :      help.decrementDepth();
  187395             : 
  187396             :   // Test if this is the root of the copy!
  187397           0 :      if (help.get_depth() == 0)
  187398             :         {
  187399             :        // This is the original calling node.
  187400             : 
  187401             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  187402             :        // printf ("Calling SgPseudoDestructorRefExp::fixupCopy() (from root of AST being copied) \n");
  187403             : #if ALT_FIXUP_COPY
  187404             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  187405           0 :           fixupCopy_scopes (result,help);
  187406           0 :           fixupCopy_symbols (result,help);
  187407           0 :           fixupCopy_references (result,help);
  187408             : #else
  187409             :           fixupCopy(result,help);
  187410             : #endif
  187411             :        // Allow this to be called recursively, so accumulate the state.
  187412             :        // Also, clear the state in the SgCopyHelp object.
  187413             :        // help.clearState();
  187414             :         }
  187415             : 
  187416           0 :      return result;
  187417             :    }
  187418             : 
  187419             : 
  187420             : /* #line 187421 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  187421             : 
  187422             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  187423             : 
  187424           0 : SgNode* SgCAFCoExpression::copy ( SgCopyHelp& help) const
  187425             :    {
  187426           0 :      SgCAFCoExpression* result = NULL;
  187427             : 
  187428             :   // printf ("Copy SgCAFCoExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  187429             : 
  187430             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  187431             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  187432             :   // The default value of the depth is 0, so after this call the depth is 1!
  187433           0 :      help.incrementDepth();
  187434             : 
  187435             : #if 0
  187436             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  187437             :   // but it is not generally true that things can only be copied once!
  187438             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  187439             :   // AstAttribute* existingAttribute = const_cast<SgCAFCoExpression*>(this)->attribute["copied"];
  187440             :      bool previouslyCopied = const_cast<SgCAFCoExpression*>(this)->attribute.exists("copied");
  187441             :      if (previouslyCopied == true)
  187442             :         {
  187443             :           this->get_file_info()->display("Called from copy SgCAFCoExpression: debug");
  187444             :         }
  187445             :      ROSE_ASSERT(previouslyCopied == false);
  187446             : 
  187447             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  187448             :      AstAttribute* newAttribute = new AstAttribute();
  187449             :      ROSE_ASSERT(newAttribute != NULL);
  187450             : 
  187451             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  187452             :      const_cast<SgCAFCoExpression*>(this)->attribute.add("copied",newAttribute);
  187453             : #endif
  187454             : 
  187455             :   // Copy data members from base classes
  187456             :   // Copy constructor parameter data member: startOfConstruct_copy
  187457             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  187458             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  187459           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  187460           0 :      if ( p_startOfConstruct != NULL ) 
  187461             :         { 
  187462           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  187463             :         } 
  187464             :        else 
  187465             :         { 
  187466             :           startOfConstruct_copy = NULL; 
  187467             :         } 
  187468             :   // Copy constructor parameter data member: teamId_copy
  187469             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for teamId
  187470             :   // case: toBeCopied == COPY_DATA for teamId
  187471           0 :      SgVarRefExp* teamId_copy = p_teamId; 
  187472             :   // Copy constructor parameter data member: teamRank_copy
  187473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for teamRank
  187474             :   // case: toBeCopied == COPY_DATA for teamRank
  187475           0 :      SgExpression* teamRank_copy = p_teamRank; 
  187476             :   // Copy constructor parameter data member: referData_copy
  187477           0 :      SgExpression* referData_copy; 
  187478             :   // case: not a listType for (using conditionalToCopyVariable)referData
  187479           0 :           if (get_referData() != NULL) 
  187480             :              { 
  187481           0 :                referData_copy = static_cast<SgExpression*>(help.copyAst(get_referData())); 
  187482             :              } 
  187483             :             else 
  187484             :              { 
  187485             :                referData_copy = NULL; 
  187486             :              } 
  187487             :  
  187488             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  187489             : 
  187490             :   // Build an empty copy of this object (will be filled in, but 
  187491             :   // the parent can't be set and must be set by the caller)
  187492           0 :      result = new SgCAFCoExpression(  startOfConstruct_copy, teamId_copy, teamRank_copy, referData_copy );
  187493           0 :      ROSE_ASSERT(result != NULL);
  187494             : 
  187495             :   // Copy data members of "this" class
  187496             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  187497             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  187498             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  187499           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  187500           0 :      if ( p_endOfConstruct != NULL ) 
  187501             :         { 
  187502           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  187503             :         } 
  187504             :        else 
  187505             :         { 
  187506             :           endOfConstruct_copy = NULL; 
  187507             :         } 
  187508             :   /* check for a valid pointer and delete if present */ 
  187509           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  187510             :   /* add assignment to result here */ 
  187511           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  187512             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  187513             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  187514             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  187515           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  187516           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  187517             :         { 
  187518           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  187519             :         } 
  187520             :        else 
  187521             :         { 
  187522             :           attachedPreprocessingInfoPtr_copy = NULL; 
  187523             :         } 
  187524             :   /* check for a valid pointer and delete if present */ 
  187525           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  187526             :   /* add assignment to result here */ 
  187527           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  187528             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  187529             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  187530             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  187531           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  187532           0 :      if ( p_attributeMechanism != NULL ) 
  187533             :         { 
  187534           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  187535             :         } 
  187536             :        else 
  187537             :         { 
  187538             :           attributeMechanism_copy = NULL; 
  187539             :         } 
  187540             :   /* check for a valid pointer and delete if present */ 
  187541           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  187542             :   /* add assignment to result here */ 
  187543           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  187544             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  187545             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  187546             :   // case: toBeCopied == COPY_DATA for need_paren
  187547           0 :      bool need_paren_copy = p_need_paren; 
  187548           0 :      result->p_need_paren = need_paren_copy; 
  187549             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  187550             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  187551             :   // case: toBeCopied == COPY_DATA for lvalue
  187552           0 :      bool lvalue_copy = p_lvalue; 
  187553           0 :      result->p_lvalue = lvalue_copy; 
  187554             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  187555             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  187556             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  187557           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  187558           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  187559             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  187560             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  187561             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  187562           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  187563           0 :      if ( p_operatorPosition != NULL ) 
  187564             :         { 
  187565           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  187566             :         } 
  187567             :        else 
  187568             :         { 
  187569             :           operatorPosition_copy = NULL; 
  187570             :         } 
  187571             :   /* check for a valid pointer and delete if present */ 
  187572           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  187573             :   /* add assignment to result here */ 
  187574           0 :      result->p_operatorPosition = operatorPosition_copy; 
  187575             :   // case: not a listType for (using conditionalToSetParent)referData
  187576           0 :           if ( (referData_copy != NULL) && (referData_copy->get_parent() == NULL) && (isSgType(referData_copy) == NULL) ) 
  187577             :              { 
  187578           0 :                referData_copy->set_parent(result); 
  187579             :              } 
  187580             : 
  187581             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  187582             : 
  187583             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  187584             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  187585             :   // fixupCopy(result,help);
  187586             : 
  187587             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  187588             :   // the Sg_File_Info objects that are built for the new IR nodes.
  187589           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  187590           0 :      if (locatedNode != NULL)
  187591             :         {
  187592             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  187593           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  187594           0 :           ROSE_ASSERT(start != NULL);
  187595             : #if 0
  187596             :        // Debugging information
  187597             :           if (start->get_parent() == NULL)
  187598             :              {
  187599             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187600             :              }
  187601             : #endif
  187602           0 :           start->set_parent(locatedNode);
  187603           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  187604             : 
  187605           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  187606             : 
  187607             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  187608             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  187609             :        // ROSE_ASSERT(end != NULL);
  187610           0 :           if (end == NULL)
  187611             :              {
  187612           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  187613             :              }
  187614             :             else
  187615             :              {
  187616             : #if 0
  187617             :             // Debugging information
  187618             :                if (end->get_parent() == NULL)
  187619             :                   {
  187620             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187621             :                   }
  187622             : #endif
  187623           0 :                end->set_parent(locatedNode);
  187624           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  187625             :              }
  187626             : 
  187627           0 :           SgExpression* expression = isSgExpression(result);
  187628           0 :           if (isSgExpression(this) != NULL)
  187629             :              {
  187630           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  187631             : 
  187632             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  187633           0 :                if (operatorPosition != NULL)
  187634             :                   {
  187635             : #if 0
  187636             :                  // Debugging information
  187637             :                     if (operatorPosition->get_parent() == NULL)
  187638             :                        {
  187639             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187640             :                        }
  187641             : #endif
  187642           0 :                     operatorPosition->set_parent(expression);
  187643           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  187644             :                   }
  187645             :              }
  187646             :         }
  187647             : 
  187648             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  187649           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  187650           0 :      if (initializedName != NULL)
  187651             :         {
  187652             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  187653           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  187654           0 :           ROSE_ASSERT(start != NULL);
  187655             : #if 0
  187656             :        // Debugging information
  187657             :           if (start->get_parent() == NULL)
  187658             :              {
  187659             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187660             :              }
  187661             : #endif
  187662           0 :           start->set_parent(initializedName);
  187663           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  187664             : 
  187665             : #if 0
  187666             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  187667             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  187668             : 
  187669             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  187670             :        // ROSE_ASSERT(end != NULL);
  187671             :           if (end == NULL)
  187672             :              {
  187673             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  187674             :              }
  187675             :             else
  187676             :              {
  187677             :                if (end->get_parent() == NULL)
  187678             :                   {
  187679             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187680             :                   }
  187681             :                end->set_parent(initializedName);
  187682             :                ROSE_ASSERT(end->get_parent() != NULL);
  187683             :              }
  187684             : #endif
  187685             :         }
  187686             : 
  187687             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  187688           0 :      help.insertCopiedNodePair(this,result);
  187689             : 
  187690             :   // printf ("End of copy SgCAFCoExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  187691             : 
  187692             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  187693             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  187694           0 :      help.decrementDepth();
  187695             : 
  187696             :   // Test if this is the root of the copy!
  187697           0 :      if (help.get_depth() == 0)
  187698             :         {
  187699             :        // This is the original calling node.
  187700             : 
  187701             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  187702             :        // printf ("Calling SgCAFCoExpression::fixupCopy() (from root of AST being copied) \n");
  187703             : #if ALT_FIXUP_COPY
  187704             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  187705           0 :           fixupCopy_scopes (result,help);
  187706           0 :           fixupCopy_symbols (result,help);
  187707           0 :           fixupCopy_references (result,help);
  187708             : #else
  187709             :           fixupCopy(result,help);
  187710             : #endif
  187711             :        // Allow this to be called recursively, so accumulate the state.
  187712             :        // Also, clear the state in the SgCopyHelp object.
  187713             :        // help.clearState();
  187714             :         }
  187715             : 
  187716           0 :      return result;
  187717             :    }
  187718             : 
  187719             : 
  187720             : /* #line 187721 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  187721             : 
  187722             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  187723             : 
  187724           0 : SgNode* SgCudaKernelExecConfig::copy ( SgCopyHelp& help) const
  187725             :    {
  187726           0 :      SgCudaKernelExecConfig* result = NULL;
  187727             : 
  187728             :   // printf ("Copy SgCudaKernelExecConfig = %p = %s \n",this,SageInterface::get_name(this).c_str());
  187729             : 
  187730             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  187731             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  187732             :   // The default value of the depth is 0, so after this call the depth is 1!
  187733           0 :      help.incrementDepth();
  187734             : 
  187735             : #if 0
  187736             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  187737             :   // but it is not generally true that things can only be copied once!
  187738             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  187739             :   // AstAttribute* existingAttribute = const_cast<SgCudaKernelExecConfig*>(this)->attribute["copied"];
  187740             :      bool previouslyCopied = const_cast<SgCudaKernelExecConfig*>(this)->attribute.exists("copied");
  187741             :      if (previouslyCopied == true)
  187742             :         {
  187743             :           this->get_file_info()->display("Called from copy SgCudaKernelExecConfig: debug");
  187744             :         }
  187745             :      ROSE_ASSERT(previouslyCopied == false);
  187746             : 
  187747             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  187748             :      AstAttribute* newAttribute = new AstAttribute();
  187749             :      ROSE_ASSERT(newAttribute != NULL);
  187750             : 
  187751             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  187752             :      const_cast<SgCudaKernelExecConfig*>(this)->attribute.add("copied",newAttribute);
  187753             : #endif
  187754             : 
  187755             :   // Copy data members from base classes
  187756             :   // Copy constructor parameter data member: startOfConstruct_copy
  187757             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  187758             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  187759           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  187760           0 :      if ( p_startOfConstruct != NULL ) 
  187761             :         { 
  187762           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  187763             :         } 
  187764             :        else 
  187765             :         { 
  187766             :           startOfConstruct_copy = NULL; 
  187767             :         } 
  187768             :   // Copy constructor parameter data member: grid_copy
  187769           0 :      SgExpression* grid_copy; 
  187770             :   // case: not a listType for (using conditionalToCopyVariable)grid
  187771           0 :           if (get_grid() != NULL) 
  187772             :              { 
  187773           0 :                grid_copy = static_cast<SgExpression*>(help.copyAst(get_grid())); 
  187774             :              } 
  187775             :             else 
  187776             :              { 
  187777             :                grid_copy = NULL; 
  187778             :              } 
  187779             :   // Copy constructor parameter data member: blocks_copy
  187780           0 :      SgExpression* blocks_copy; 
  187781             :   // case: not a listType for (using conditionalToCopyVariable)blocks
  187782           0 :           if (get_blocks() != NULL) 
  187783             :              { 
  187784           0 :                blocks_copy = static_cast<SgExpression*>(help.copyAst(get_blocks())); 
  187785             :              } 
  187786             :             else 
  187787             :              { 
  187788             :                blocks_copy = NULL; 
  187789             :              } 
  187790             :   // Copy constructor parameter data member: shared_copy
  187791           0 :      SgExpression* shared_copy; 
  187792             :   // case: not a listType for (using conditionalToCopyVariable)shared
  187793           0 :           if (get_shared() != NULL) 
  187794             :              { 
  187795           0 :                shared_copy = static_cast<SgExpression*>(help.copyAst(get_shared())); 
  187796             :              } 
  187797             :             else 
  187798             :              { 
  187799             :                shared_copy = NULL; 
  187800             :              } 
  187801             :   // Copy constructor parameter data member: stream_copy
  187802           0 :      SgExpression* stream_copy; 
  187803             :   // case: not a listType for (using conditionalToCopyVariable)stream
  187804           0 :           if (get_stream() != NULL) 
  187805             :              { 
  187806           0 :                stream_copy = static_cast<SgExpression*>(help.copyAst(get_stream())); 
  187807             :              } 
  187808             :             else 
  187809             :              { 
  187810             :                stream_copy = NULL; 
  187811             :              } 
  187812             :  
  187813             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  187814             : 
  187815             :   // Build an empty copy of this object (will be filled in, but 
  187816             :   // the parent can't be set and must be set by the caller)
  187817           0 :      result = new SgCudaKernelExecConfig(  startOfConstruct_copy, grid_copy, blocks_copy, shared_copy, stream_copy );
  187818           0 :      ROSE_ASSERT(result != NULL);
  187819             : 
  187820             :   // Copy data members of "this" class
  187821             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  187822             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  187823             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  187824           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  187825           0 :      if ( p_endOfConstruct != NULL ) 
  187826             :         { 
  187827           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  187828             :         } 
  187829             :        else 
  187830             :         { 
  187831             :           endOfConstruct_copy = NULL; 
  187832             :         } 
  187833             :   /* check for a valid pointer and delete if present */ 
  187834           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  187835             :   /* add assignment to result here */ 
  187836           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  187837             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  187838             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  187839             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  187840           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  187841           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  187842             :         { 
  187843           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  187844             :         } 
  187845             :        else 
  187846             :         { 
  187847             :           attachedPreprocessingInfoPtr_copy = NULL; 
  187848             :         } 
  187849             :   /* check for a valid pointer and delete if present */ 
  187850           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  187851             :   /* add assignment to result here */ 
  187852           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  187853             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  187854             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  187855             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  187856           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  187857           0 :      if ( p_attributeMechanism != NULL ) 
  187858             :         { 
  187859           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  187860             :         } 
  187861             :        else 
  187862             :         { 
  187863             :           attributeMechanism_copy = NULL; 
  187864             :         } 
  187865             :   /* check for a valid pointer and delete if present */ 
  187866           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  187867             :   /* add assignment to result here */ 
  187868           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  187869             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  187870             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  187871             :   // case: toBeCopied == COPY_DATA for need_paren
  187872           0 :      bool need_paren_copy = p_need_paren; 
  187873           0 :      result->p_need_paren = need_paren_copy; 
  187874             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  187875             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  187876             :   // case: toBeCopied == COPY_DATA for lvalue
  187877           0 :      bool lvalue_copy = p_lvalue; 
  187878           0 :      result->p_lvalue = lvalue_copy; 
  187879             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  187880             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  187881             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  187882           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  187883           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  187884             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  187885             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  187886             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  187887           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  187888           0 :      if ( p_operatorPosition != NULL ) 
  187889             :         { 
  187890           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  187891             :         } 
  187892             :        else 
  187893             :         { 
  187894             :           operatorPosition_copy = NULL; 
  187895             :         } 
  187896             :   /* check for a valid pointer and delete if present */ 
  187897           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  187898             :   /* add assignment to result here */ 
  187899           0 :      result->p_operatorPosition = operatorPosition_copy; 
  187900             :   // case: not a listType for (using conditionalToSetParent)grid
  187901           0 :           if ( (grid_copy != NULL) && (grid_copy->get_parent() == NULL) && (isSgType(grid_copy) == NULL) ) 
  187902             :              { 
  187903           0 :                grid_copy->set_parent(result); 
  187904             :              } 
  187905             :   // case: not a listType for (using conditionalToSetParent)blocks
  187906           0 :           if ( (blocks_copy != NULL) && (blocks_copy->get_parent() == NULL) && (isSgType(blocks_copy) == NULL) ) 
  187907             :              { 
  187908           0 :                blocks_copy->set_parent(result); 
  187909             :              } 
  187910             :   // case: not a listType for (using conditionalToSetParent)shared
  187911           0 :           if ( (shared_copy != NULL) && (shared_copy->get_parent() == NULL) && (isSgType(shared_copy) == NULL) ) 
  187912             :              { 
  187913           0 :                shared_copy->set_parent(result); 
  187914             :              } 
  187915             :   // case: not a listType for (using conditionalToSetParent)stream
  187916           0 :           if ( (stream_copy != NULL) && (stream_copy->get_parent() == NULL) && (isSgType(stream_copy) == NULL) ) 
  187917             :              { 
  187918           0 :                stream_copy->set_parent(result); 
  187919             :              } 
  187920             : 
  187921             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  187922             : 
  187923             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  187924             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  187925             :   // fixupCopy(result,help);
  187926             : 
  187927             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  187928             :   // the Sg_File_Info objects that are built for the new IR nodes.
  187929           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  187930           0 :      if (locatedNode != NULL)
  187931             :         {
  187932             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  187933           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  187934           0 :           ROSE_ASSERT(start != NULL);
  187935             : #if 0
  187936             :        // Debugging information
  187937             :           if (start->get_parent() == NULL)
  187938             :              {
  187939             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187940             :              }
  187941             : #endif
  187942           0 :           start->set_parent(locatedNode);
  187943           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  187944             : 
  187945           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  187946             : 
  187947             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  187948             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  187949             :        // ROSE_ASSERT(end != NULL);
  187950           0 :           if (end == NULL)
  187951             :              {
  187952           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  187953             :              }
  187954             :             else
  187955             :              {
  187956             : #if 0
  187957             :             // Debugging information
  187958             :                if (end->get_parent() == NULL)
  187959             :                   {
  187960             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187961             :                   }
  187962             : #endif
  187963           0 :                end->set_parent(locatedNode);
  187964           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  187965             :              }
  187966             : 
  187967           0 :           SgExpression* expression = isSgExpression(result);
  187968           0 :           if (isSgExpression(this) != NULL)
  187969             :              {
  187970           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  187971             : 
  187972             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  187973           0 :                if (operatorPosition != NULL)
  187974             :                   {
  187975             : #if 0
  187976             :                  // Debugging information
  187977             :                     if (operatorPosition->get_parent() == NULL)
  187978             :                        {
  187979             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  187980             :                        }
  187981             : #endif
  187982           0 :                     operatorPosition->set_parent(expression);
  187983           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  187984             :                   }
  187985             :              }
  187986             :         }
  187987             : 
  187988             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  187989           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  187990           0 :      if (initializedName != NULL)
  187991             :         {
  187992             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  187993           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  187994           0 :           ROSE_ASSERT(start != NULL);
  187995             : #if 0
  187996             :        // Debugging information
  187997             :           if (start->get_parent() == NULL)
  187998             :              {
  187999             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188000             :              }
  188001             : #endif
  188002           0 :           start->set_parent(initializedName);
  188003           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  188004             : 
  188005             : #if 0
  188006             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  188007             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  188008             : 
  188009             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  188010             :        // ROSE_ASSERT(end != NULL);
  188011             :           if (end == NULL)
  188012             :              {
  188013             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  188014             :              }
  188015             :             else
  188016             :              {
  188017             :                if (end->get_parent() == NULL)
  188018             :                   {
  188019             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188020             :                   }
  188021             :                end->set_parent(initializedName);
  188022             :                ROSE_ASSERT(end->get_parent() != NULL);
  188023             :              }
  188024             : #endif
  188025             :         }
  188026             : 
  188027             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  188028           0 :      help.insertCopiedNodePair(this,result);
  188029             : 
  188030             :   // printf ("End of copy SgCudaKernelExecConfig = %p = %s \n",this,SageInterface::get_name(this).c_str());
  188031             : 
  188032             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  188033             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  188034           0 :      help.decrementDepth();
  188035             : 
  188036             :   // Test if this is the root of the copy!
  188037           0 :      if (help.get_depth() == 0)
  188038             :         {
  188039             :        // This is the original calling node.
  188040             : 
  188041             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  188042             :        // printf ("Calling SgCudaKernelExecConfig::fixupCopy() (from root of AST being copied) \n");
  188043             : #if ALT_FIXUP_COPY
  188044             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  188045           0 :           fixupCopy_scopes (result,help);
  188046           0 :           fixupCopy_symbols (result,help);
  188047           0 :           fixupCopy_references (result,help);
  188048             : #else
  188049             :           fixupCopy(result,help);
  188050             : #endif
  188051             :        // Allow this to be called recursively, so accumulate the state.
  188052             :        // Also, clear the state in the SgCopyHelp object.
  188053             :        // help.clearState();
  188054             :         }
  188055             : 
  188056           0 :      return result;
  188057             :    }
  188058             : 
  188059             : 
  188060             : /* #line 188061 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  188061             : 
  188062             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188063             : 
  188064           0 : SgNode* SgLambdaRefExp::copy ( SgCopyHelp& help) const
  188065             :    {
  188066           0 :      SgLambdaRefExp* result = NULL;
  188067             : 
  188068             :   // printf ("Copy SgLambdaRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  188069             : 
  188070             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  188071             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  188072             :   // The default value of the depth is 0, so after this call the depth is 1!
  188073           0 :      help.incrementDepth();
  188074             : 
  188075             : #if 0
  188076             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  188077             :   // but it is not generally true that things can only be copied once!
  188078             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  188079             :   // AstAttribute* existingAttribute = const_cast<SgLambdaRefExp*>(this)->attribute["copied"];
  188080             :      bool previouslyCopied = const_cast<SgLambdaRefExp*>(this)->attribute.exists("copied");
  188081             :      if (previouslyCopied == true)
  188082             :         {
  188083             :           this->get_file_info()->display("Called from copy SgLambdaRefExp: debug");
  188084             :         }
  188085             :      ROSE_ASSERT(previouslyCopied == false);
  188086             : 
  188087             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  188088             :      AstAttribute* newAttribute = new AstAttribute();
  188089             :      ROSE_ASSERT(newAttribute != NULL);
  188090             : 
  188091             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  188092             :      const_cast<SgLambdaRefExp*>(this)->attribute.add("copied",newAttribute);
  188093             : #endif
  188094             : 
  188095             :   // Copy data members from base classes
  188096             :   // Copy constructor parameter data member: startOfConstruct_copy
  188097             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  188098             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  188099           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  188100           0 :      if ( p_startOfConstruct != NULL ) 
  188101             :         { 
  188102           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  188103             :         } 
  188104             :        else 
  188105             :         { 
  188106             :           startOfConstruct_copy = NULL; 
  188107             :         } 
  188108             :   // Copy constructor parameter data member: functionDeclaration_copy
  188109           0 :      SgFunctionDeclaration* functionDeclaration_copy; 
  188110             :   // case: not a listType for (using conditionalToCopyVariable)functionDeclaration
  188111           0 :           if (get_functionDeclaration() != NULL) 
  188112             :              { 
  188113           0 :                functionDeclaration_copy = static_cast<SgFunctionDeclaration*>(help.copyAst(get_functionDeclaration())); 
  188114             :              } 
  188115             :             else 
  188116             :              { 
  188117             :                functionDeclaration_copy = NULL; 
  188118             :              } 
  188119             :  
  188120             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188121             : 
  188122             :   // Build an empty copy of this object (will be filled in, but 
  188123             :   // the parent can't be set and must be set by the caller)
  188124           0 :      result = new SgLambdaRefExp(  startOfConstruct_copy, functionDeclaration_copy );
  188125           0 :      ROSE_ASSERT(result != NULL);
  188126             : 
  188127             :   // Copy data members of "this" class
  188128             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  188129             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  188130             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  188131           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  188132           0 :      if ( p_endOfConstruct != NULL ) 
  188133             :         { 
  188134           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  188135             :         } 
  188136             :        else 
  188137             :         { 
  188138             :           endOfConstruct_copy = NULL; 
  188139             :         } 
  188140             :   /* check for a valid pointer and delete if present */ 
  188141           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  188142             :   /* add assignment to result here */ 
  188143           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  188144             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  188145             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  188146             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  188147           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  188148           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  188149             :         { 
  188150           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  188151             :         } 
  188152             :        else 
  188153             :         { 
  188154             :           attachedPreprocessingInfoPtr_copy = NULL; 
  188155             :         } 
  188156             :   /* check for a valid pointer and delete if present */ 
  188157           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  188158             :   /* add assignment to result here */ 
  188159           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  188160             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  188161             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  188162             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  188163           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  188164           0 :      if ( p_attributeMechanism != NULL ) 
  188165             :         { 
  188166           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  188167             :         } 
  188168             :        else 
  188169             :         { 
  188170             :           attributeMechanism_copy = NULL; 
  188171             :         } 
  188172             :   /* check for a valid pointer and delete if present */ 
  188173           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  188174             :   /* add assignment to result here */ 
  188175           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  188176             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  188177             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  188178             :   // case: toBeCopied == COPY_DATA for need_paren
  188179           0 :      bool need_paren_copy = p_need_paren; 
  188180           0 :      result->p_need_paren = need_paren_copy; 
  188181             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  188182             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  188183             :   // case: toBeCopied == COPY_DATA for lvalue
  188184           0 :      bool lvalue_copy = p_lvalue; 
  188185           0 :      result->p_lvalue = lvalue_copy; 
  188186             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  188187             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  188188             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  188189           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  188190           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  188191             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  188192             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  188193             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  188194           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  188195           0 :      if ( p_operatorPosition != NULL ) 
  188196             :         { 
  188197           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  188198             :         } 
  188199             :        else 
  188200             :         { 
  188201             :           operatorPosition_copy = NULL; 
  188202             :         } 
  188203             :   /* check for a valid pointer and delete if present */ 
  188204           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  188205             :   /* add assignment to result here */ 
  188206           0 :      result->p_operatorPosition = operatorPosition_copy; 
  188207             :   // case: not a listType for (using conditionalToSetParent)functionDeclaration
  188208           0 :           if ( (functionDeclaration_copy != NULL) && (functionDeclaration_copy->get_parent() == NULL) && (isSgType(functionDeclaration_copy) == NULL) ) 
  188209             :              { 
  188210           0 :                functionDeclaration_copy->set_parent(result); 
  188211             :              } 
  188212             : 
  188213             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188214             : 
  188215             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  188216             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  188217             :   // fixupCopy(result,help);
  188218             : 
  188219             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  188220             :   // the Sg_File_Info objects that are built for the new IR nodes.
  188221           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  188222           0 :      if (locatedNode != NULL)
  188223             :         {
  188224             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  188225           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  188226           0 :           ROSE_ASSERT(start != NULL);
  188227             : #if 0
  188228             :        // Debugging information
  188229             :           if (start->get_parent() == NULL)
  188230             :              {
  188231             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188232             :              }
  188233             : #endif
  188234           0 :           start->set_parent(locatedNode);
  188235           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  188236             : 
  188237           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  188238             : 
  188239             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  188240             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  188241             :        // ROSE_ASSERT(end != NULL);
  188242           0 :           if (end == NULL)
  188243             :              {
  188244           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  188245             :              }
  188246             :             else
  188247             :              {
  188248             : #if 0
  188249             :             // Debugging information
  188250             :                if (end->get_parent() == NULL)
  188251             :                   {
  188252             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188253             :                   }
  188254             : #endif
  188255           0 :                end->set_parent(locatedNode);
  188256           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  188257             :              }
  188258             : 
  188259           0 :           SgExpression* expression = isSgExpression(result);
  188260           0 :           if (isSgExpression(this) != NULL)
  188261             :              {
  188262           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  188263             : 
  188264             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  188265           0 :                if (operatorPosition != NULL)
  188266             :                   {
  188267             : #if 0
  188268             :                  // Debugging information
  188269             :                     if (operatorPosition->get_parent() == NULL)
  188270             :                        {
  188271             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188272             :                        }
  188273             : #endif
  188274           0 :                     operatorPosition->set_parent(expression);
  188275           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  188276             :                   }
  188277             :              }
  188278             :         }
  188279             : 
  188280             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  188281           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  188282           0 :      if (initializedName != NULL)
  188283             :         {
  188284             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  188285           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  188286           0 :           ROSE_ASSERT(start != NULL);
  188287             : #if 0
  188288             :        // Debugging information
  188289             :           if (start->get_parent() == NULL)
  188290             :              {
  188291             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188292             :              }
  188293             : #endif
  188294           0 :           start->set_parent(initializedName);
  188295           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  188296             : 
  188297             : #if 0
  188298             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  188299             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  188300             : 
  188301             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  188302             :        // ROSE_ASSERT(end != NULL);
  188303             :           if (end == NULL)
  188304             :              {
  188305             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  188306             :              }
  188307             :             else
  188308             :              {
  188309             :                if (end->get_parent() == NULL)
  188310             :                   {
  188311             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188312             :                   }
  188313             :                end->set_parent(initializedName);
  188314             :                ROSE_ASSERT(end->get_parent() != NULL);
  188315             :              }
  188316             : #endif
  188317             :         }
  188318             : 
  188319             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  188320           0 :      help.insertCopiedNodePair(this,result);
  188321             : 
  188322             :   // printf ("End of copy SgLambdaRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  188323             : 
  188324             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  188325             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  188326           0 :      help.decrementDepth();
  188327             : 
  188328             :   // Test if this is the root of the copy!
  188329           0 :      if (help.get_depth() == 0)
  188330             :         {
  188331             :        // This is the original calling node.
  188332             : 
  188333             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  188334             :        // printf ("Calling SgLambdaRefExp::fixupCopy() (from root of AST being copied) \n");
  188335             : #if ALT_FIXUP_COPY
  188336             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  188337           0 :           fixupCopy_scopes (result,help);
  188338           0 :           fixupCopy_symbols (result,help);
  188339           0 :           fixupCopy_references (result,help);
  188340             : #else
  188341             :           fixupCopy(result,help);
  188342             : #endif
  188343             :        // Allow this to be called recursively, so accumulate the state.
  188344             :        // Also, clear the state in the SgCopyHelp object.
  188345             :        // help.clearState();
  188346             :         }
  188347             : 
  188348           0 :      return result;
  188349             :    }
  188350             : 
  188351             : 
  188352             : /* #line 188353 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  188353             : 
  188354             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188355             : 
  188356           0 : SgNode* SgDictionaryExp::copy ( SgCopyHelp& help) const
  188357             :    {
  188358           0 :      SgDictionaryExp* result = NULL;
  188359             : 
  188360             :   // printf ("Copy SgDictionaryExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  188361             : 
  188362             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  188363             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  188364             :   // The default value of the depth is 0, so after this call the depth is 1!
  188365           0 :      help.incrementDepth();
  188366             : 
  188367             : #if 0
  188368             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  188369             :   // but it is not generally true that things can only be copied once!
  188370             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  188371             :   // AstAttribute* existingAttribute = const_cast<SgDictionaryExp*>(this)->attribute["copied"];
  188372             :      bool previouslyCopied = const_cast<SgDictionaryExp*>(this)->attribute.exists("copied");
  188373             :      if (previouslyCopied == true)
  188374             :         {
  188375             :           this->get_file_info()->display("Called from copy SgDictionaryExp: debug");
  188376             :         }
  188377             :      ROSE_ASSERT(previouslyCopied == false);
  188378             : 
  188379             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  188380             :      AstAttribute* newAttribute = new AstAttribute();
  188381             :      ROSE_ASSERT(newAttribute != NULL);
  188382             : 
  188383             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  188384             :      const_cast<SgDictionaryExp*>(this)->attribute.add("copied",newAttribute);
  188385             : #endif
  188386             : 
  188387             :   // Copy data members from base classes
  188388             :   // Copy constructor parameter data member: startOfConstruct_copy
  188389             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  188390             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  188391           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  188392           0 :      if ( p_startOfConstruct != NULL ) 
  188393             :         { 
  188394           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  188395             :         } 
  188396             :        else 
  188397             :         { 
  188398             :           startOfConstruct_copy = NULL; 
  188399             :         } 
  188400             :  
  188401             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188402             : 
  188403             :   // Build an empty copy of this object (will be filled in, but 
  188404             :   // the parent can't be set and must be set by the caller)
  188405           0 :      result = new SgDictionaryExp(  startOfConstruct_copy );
  188406           0 :      ROSE_ASSERT(result != NULL);
  188407             : 
  188408             :   // Copy data members of "this" class
  188409             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  188410             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  188411             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  188412           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  188413           0 :      if ( p_endOfConstruct != NULL ) 
  188414             :         { 
  188415           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  188416             :         } 
  188417             :        else 
  188418             :         { 
  188419             :           endOfConstruct_copy = NULL; 
  188420             :         } 
  188421             :   /* check for a valid pointer and delete if present */ 
  188422           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  188423             :   /* add assignment to result here */ 
  188424           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  188425             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  188426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  188427             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  188428           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  188429           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  188430             :         { 
  188431           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  188432             :         } 
  188433             :        else 
  188434             :         { 
  188435             :           attachedPreprocessingInfoPtr_copy = NULL; 
  188436             :         } 
  188437             :   /* check for a valid pointer and delete if present */ 
  188438           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  188439             :   /* add assignment to result here */ 
  188440           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  188441             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  188442             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  188443             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  188444           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  188445           0 :      if ( p_attributeMechanism != NULL ) 
  188446             :         { 
  188447           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  188448             :         } 
  188449             :        else 
  188450             :         { 
  188451             :           attributeMechanism_copy = NULL; 
  188452             :         } 
  188453             :   /* check for a valid pointer and delete if present */ 
  188454           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  188455             :   /* add assignment to result here */ 
  188456           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  188457             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  188458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  188459             :   // case: toBeCopied == COPY_DATA for need_paren
  188460           0 :      bool need_paren_copy = p_need_paren; 
  188461           0 :      result->p_need_paren = need_paren_copy; 
  188462             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  188463             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  188464             :   // case: toBeCopied == COPY_DATA for lvalue
  188465           0 :      bool lvalue_copy = p_lvalue; 
  188466           0 :      result->p_lvalue = lvalue_copy; 
  188467             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  188468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  188469             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  188470           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  188471           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  188472             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  188473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  188474             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  188475           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  188476           0 :      if ( p_operatorPosition != NULL ) 
  188477             :         { 
  188478           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  188479             :         } 
  188480             :        else 
  188481             :         { 
  188482             :           operatorPosition_copy = NULL; 
  188483             :         } 
  188484             :   /* check for a valid pointer and delete if present */ 
  188485           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  188486             :   /* add assignment to result here */ 
  188487           0 :      result->p_operatorPosition = operatorPosition_copy; 
  188488             :   // Copy non-constructor parameter data member (no access function): result->p_key_datum_pairs
  188489           0 :      SgKeyDatumPairPtrList key_datum_pairs_copy; 
  188490             :   // case: listType for key_datum_pairs
  188491             :   // case: listType (typeIsPointerToList == false) for key_datum_pairs
  188492           0 :      SgKeyDatumPairPtrList::const_iterator source_key_datum_pairs_iterator = get_key_datum_pairs().begin(); 
  188493           0 :      for ( /* empty by design */; source_key_datum_pairs_iterator != get_key_datum_pairs().end(); ++source_key_datum_pairs_iterator) 
  188494             :         { 
  188495           0 :           SgKeyDatumPair* source_list_element = *source_key_datum_pairs_iterator; 
  188496           0 :           SgKeyDatumPair* copy_list_element = NULL; 
  188497           0 :           if (source_list_element != NULL) 
  188498             :              { 
  188499           0 :                copy_list_element = static_cast<SgKeyDatumPair*>(help.copyAst(*source_key_datum_pairs_iterator)); 
  188500             :              } 
  188501             :             else 
  188502             :              { 
  188503             :                copy_list_element = NULL; 
  188504             :              } 
  188505           0 :           key_datum_pairs_copy.push_back(copy_list_element); 
  188506             :         } 
  188507           0 :      result->p_key_datum_pairs = key_datum_pairs_copy; 
  188508             :   // case: listType for key_datum_pairs
  188509             :   // case: listType (typeIsPointerToList == false) for key_datum_pairs
  188510           0 :      SgKeyDatumPairPtrList::const_iterator key_datum_pairs_iterator = result->get_key_datum_pairs().begin(); 
  188511           0 :      for ( /* empty by design */; key_datum_pairs_iterator != result->get_key_datum_pairs().end(); ++key_datum_pairs_iterator) 
  188512             :         { 
  188513           0 :           SgKeyDatumPair* list_element = *key_datum_pairs_iterator; 
  188514           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  188515             :              { 
  188516           0 :                list_element->set_parent(result); 
  188517             :              } 
  188518             :         } 
  188519             : 
  188520             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188521             : 
  188522             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  188523             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  188524             :   // fixupCopy(result,help);
  188525             : 
  188526             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  188527             :   // the Sg_File_Info objects that are built for the new IR nodes.
  188528           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  188529           0 :      if (locatedNode != NULL)
  188530             :         {
  188531             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  188532           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  188533           0 :           ROSE_ASSERT(start != NULL);
  188534             : #if 0
  188535             :        // Debugging information
  188536             :           if (start->get_parent() == NULL)
  188537             :              {
  188538             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188539             :              }
  188540             : #endif
  188541           0 :           start->set_parent(locatedNode);
  188542           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  188543             : 
  188544           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  188545             : 
  188546             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  188547             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  188548             :        // ROSE_ASSERT(end != NULL);
  188549           0 :           if (end == NULL)
  188550             :              {
  188551           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  188552             :              }
  188553             :             else
  188554             :              {
  188555             : #if 0
  188556             :             // Debugging information
  188557             :                if (end->get_parent() == NULL)
  188558             :                   {
  188559             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188560             :                   }
  188561             : #endif
  188562           0 :                end->set_parent(locatedNode);
  188563           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  188564             :              }
  188565             : 
  188566           0 :           SgExpression* expression = isSgExpression(result);
  188567           0 :           if (isSgExpression(this) != NULL)
  188568             :              {
  188569           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  188570             : 
  188571             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  188572           0 :                if (operatorPosition != NULL)
  188573             :                   {
  188574             : #if 0
  188575             :                  // Debugging information
  188576             :                     if (operatorPosition->get_parent() == NULL)
  188577             :                        {
  188578             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188579             :                        }
  188580             : #endif
  188581           0 :                     operatorPosition->set_parent(expression);
  188582           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  188583             :                   }
  188584             :              }
  188585             :         }
  188586             : 
  188587             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  188588           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  188589           0 :      if (initializedName != NULL)
  188590             :         {
  188591             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  188592           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  188593           0 :           ROSE_ASSERT(start != NULL);
  188594             : #if 0
  188595             :        // Debugging information
  188596             :           if (start->get_parent() == NULL)
  188597             :              {
  188598             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188599             :              }
  188600             : #endif
  188601           0 :           start->set_parent(initializedName);
  188602           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  188603             : 
  188604             : #if 0
  188605             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  188606             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  188607             : 
  188608             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  188609             :        // ROSE_ASSERT(end != NULL);
  188610             :           if (end == NULL)
  188611             :              {
  188612             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  188613             :              }
  188614             :             else
  188615             :              {
  188616             :                if (end->get_parent() == NULL)
  188617             :                   {
  188618             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188619             :                   }
  188620             :                end->set_parent(initializedName);
  188621             :                ROSE_ASSERT(end->get_parent() != NULL);
  188622             :              }
  188623             : #endif
  188624             :         }
  188625             : 
  188626             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  188627           0 :      help.insertCopiedNodePair(this,result);
  188628             : 
  188629             :   // printf ("End of copy SgDictionaryExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  188630             : 
  188631             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  188632             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  188633           0 :      help.decrementDepth();
  188634             : 
  188635             :   // Test if this is the root of the copy!
  188636           0 :      if (help.get_depth() == 0)
  188637             :         {
  188638             :        // This is the original calling node.
  188639             : 
  188640             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  188641             :        // printf ("Calling SgDictionaryExp::fixupCopy() (from root of AST being copied) \n");
  188642             : #if ALT_FIXUP_COPY
  188643             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  188644           0 :           fixupCopy_scopes (result,help);
  188645           0 :           fixupCopy_symbols (result,help);
  188646           0 :           fixupCopy_references (result,help);
  188647             : #else
  188648             :           fixupCopy(result,help);
  188649             : #endif
  188650             :        // Allow this to be called recursively, so accumulate the state.
  188651             :        // Also, clear the state in the SgCopyHelp object.
  188652             :        // help.clearState();
  188653             :         }
  188654             : 
  188655           0 :      return result;
  188656             :    }
  188657             : 
  188658             : 
  188659             : /* #line 188660 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  188660             : 
  188661             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188662             : 
  188663           0 : SgNode* SgKeyDatumPair::copy ( SgCopyHelp& help) const
  188664             :    {
  188665           0 :      SgKeyDatumPair* result = NULL;
  188666             : 
  188667             :   // printf ("Copy SgKeyDatumPair = %p = %s \n",this,SageInterface::get_name(this).c_str());
  188668             : 
  188669             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  188670             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  188671             :   // The default value of the depth is 0, so after this call the depth is 1!
  188672           0 :      help.incrementDepth();
  188673             : 
  188674             : #if 0
  188675             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  188676             :   // but it is not generally true that things can only be copied once!
  188677             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  188678             :   // AstAttribute* existingAttribute = const_cast<SgKeyDatumPair*>(this)->attribute["copied"];
  188679             :      bool previouslyCopied = const_cast<SgKeyDatumPair*>(this)->attribute.exists("copied");
  188680             :      if (previouslyCopied == true)
  188681             :         {
  188682             :           this->get_file_info()->display("Called from copy SgKeyDatumPair: debug");
  188683             :         }
  188684             :      ROSE_ASSERT(previouslyCopied == false);
  188685             : 
  188686             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  188687             :      AstAttribute* newAttribute = new AstAttribute();
  188688             :      ROSE_ASSERT(newAttribute != NULL);
  188689             : 
  188690             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  188691             :      const_cast<SgKeyDatumPair*>(this)->attribute.add("copied",newAttribute);
  188692             : #endif
  188693             : 
  188694             :   // Copy data members from base classes
  188695             :   // Copy constructor parameter data member: startOfConstruct_copy
  188696             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  188697             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  188698           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  188699           0 :      if ( p_startOfConstruct != NULL ) 
  188700             :         { 
  188701           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  188702             :         } 
  188703             :        else 
  188704             :         { 
  188705             :           startOfConstruct_copy = NULL; 
  188706             :         } 
  188707             :   // Copy constructor parameter data member: key_copy
  188708           0 :      SgExpression* key_copy; 
  188709             :   // case: not a listType for (using conditionalToCopyVariable)key
  188710           0 :           if (get_key() != NULL) 
  188711             :              { 
  188712           0 :                key_copy = static_cast<SgExpression*>(help.copyAst(get_key())); 
  188713             :              } 
  188714             :             else 
  188715             :              { 
  188716             :                key_copy = NULL; 
  188717             :              } 
  188718             :   // Copy constructor parameter data member: datum_copy
  188719           0 :      SgExpression* datum_copy; 
  188720             :   // case: not a listType for (using conditionalToCopyVariable)datum
  188721           0 :           if (get_datum() != NULL) 
  188722             :              { 
  188723           0 :                datum_copy = static_cast<SgExpression*>(help.copyAst(get_datum())); 
  188724             :              } 
  188725             :             else 
  188726             :              { 
  188727             :                datum_copy = NULL; 
  188728             :              } 
  188729             :  
  188730             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188731             : 
  188732             :   // Build an empty copy of this object (will be filled in, but 
  188733             :   // the parent can't be set and must be set by the caller)
  188734           0 :      result = new SgKeyDatumPair(  startOfConstruct_copy, key_copy, datum_copy );
  188735           0 :      ROSE_ASSERT(result != NULL);
  188736             : 
  188737             :   // Copy data members of "this" class
  188738             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  188739             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  188740             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  188741           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  188742           0 :      if ( p_endOfConstruct != NULL ) 
  188743             :         { 
  188744           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  188745             :         } 
  188746             :        else 
  188747             :         { 
  188748             :           endOfConstruct_copy = NULL; 
  188749             :         } 
  188750             :   /* check for a valid pointer and delete if present */ 
  188751           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  188752             :   /* add assignment to result here */ 
  188753           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  188754             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  188755             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  188756             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  188757           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  188758           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  188759             :         { 
  188760           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  188761             :         } 
  188762             :        else 
  188763             :         { 
  188764             :           attachedPreprocessingInfoPtr_copy = NULL; 
  188765             :         } 
  188766             :   /* check for a valid pointer and delete if present */ 
  188767           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  188768             :   /* add assignment to result here */ 
  188769           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  188770             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  188771             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  188772             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  188773           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  188774           0 :      if ( p_attributeMechanism != NULL ) 
  188775             :         { 
  188776           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  188777             :         } 
  188778             :        else 
  188779             :         { 
  188780             :           attributeMechanism_copy = NULL; 
  188781             :         } 
  188782             :   /* check for a valid pointer and delete if present */ 
  188783           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  188784             :   /* add assignment to result here */ 
  188785           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  188786             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  188787             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  188788             :   // case: toBeCopied == COPY_DATA for need_paren
  188789           0 :      bool need_paren_copy = p_need_paren; 
  188790           0 :      result->p_need_paren = need_paren_copy; 
  188791             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  188792             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  188793             :   // case: toBeCopied == COPY_DATA for lvalue
  188794           0 :      bool lvalue_copy = p_lvalue; 
  188795           0 :      result->p_lvalue = lvalue_copy; 
  188796             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  188797             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  188798             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  188799           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  188800           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  188801             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  188802             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  188803             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  188804           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  188805           0 :      if ( p_operatorPosition != NULL ) 
  188806             :         { 
  188807           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  188808             :         } 
  188809             :        else 
  188810             :         { 
  188811             :           operatorPosition_copy = NULL; 
  188812             :         } 
  188813             :   /* check for a valid pointer and delete if present */ 
  188814           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  188815             :   /* add assignment to result here */ 
  188816           0 :      result->p_operatorPosition = operatorPosition_copy; 
  188817             :   // case: not a listType for (using conditionalToSetParent)key
  188818           0 :           if ( (key_copy != NULL) && (key_copy->get_parent() == NULL) && (isSgType(key_copy) == NULL) ) 
  188819             :              { 
  188820           0 :                key_copy->set_parent(result); 
  188821             :              } 
  188822             :   // case: not a listType for (using conditionalToSetParent)datum
  188823           0 :           if ( (datum_copy != NULL) && (datum_copy->get_parent() == NULL) && (isSgType(datum_copy) == NULL) ) 
  188824             :              { 
  188825           0 :                datum_copy->set_parent(result); 
  188826             :              } 
  188827             : 
  188828             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188829             : 
  188830             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  188831             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  188832             :   // fixupCopy(result,help);
  188833             : 
  188834             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  188835             :   // the Sg_File_Info objects that are built for the new IR nodes.
  188836           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  188837           0 :      if (locatedNode != NULL)
  188838             :         {
  188839             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  188840           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  188841           0 :           ROSE_ASSERT(start != NULL);
  188842             : #if 0
  188843             :        // Debugging information
  188844             :           if (start->get_parent() == NULL)
  188845             :              {
  188846             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188847             :              }
  188848             : #endif
  188849           0 :           start->set_parent(locatedNode);
  188850           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  188851             : 
  188852           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  188853             : 
  188854             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  188855             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  188856             :        // ROSE_ASSERT(end != NULL);
  188857           0 :           if (end == NULL)
  188858             :              {
  188859           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  188860             :              }
  188861             :             else
  188862             :              {
  188863             : #if 0
  188864             :             // Debugging information
  188865             :                if (end->get_parent() == NULL)
  188866             :                   {
  188867             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188868             :                   }
  188869             : #endif
  188870           0 :                end->set_parent(locatedNode);
  188871           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  188872             :              }
  188873             : 
  188874           0 :           SgExpression* expression = isSgExpression(result);
  188875           0 :           if (isSgExpression(this) != NULL)
  188876             :              {
  188877           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  188878             : 
  188879             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  188880           0 :                if (operatorPosition != NULL)
  188881             :                   {
  188882             : #if 0
  188883             :                  // Debugging information
  188884             :                     if (operatorPosition->get_parent() == NULL)
  188885             :                        {
  188886             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188887             :                        }
  188888             : #endif
  188889           0 :                     operatorPosition->set_parent(expression);
  188890           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  188891             :                   }
  188892             :              }
  188893             :         }
  188894             : 
  188895             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  188896           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  188897           0 :      if (initializedName != NULL)
  188898             :         {
  188899             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  188900           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  188901           0 :           ROSE_ASSERT(start != NULL);
  188902             : #if 0
  188903             :        // Debugging information
  188904             :           if (start->get_parent() == NULL)
  188905             :              {
  188906             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188907             :              }
  188908             : #endif
  188909           0 :           start->set_parent(initializedName);
  188910           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  188911             : 
  188912             : #if 0
  188913             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  188914             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  188915             : 
  188916             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  188917             :        // ROSE_ASSERT(end != NULL);
  188918             :           if (end == NULL)
  188919             :              {
  188920             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  188921             :              }
  188922             :             else
  188923             :              {
  188924             :                if (end->get_parent() == NULL)
  188925             :                   {
  188926             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  188927             :                   }
  188928             :                end->set_parent(initializedName);
  188929             :                ROSE_ASSERT(end->get_parent() != NULL);
  188930             :              }
  188931             : #endif
  188932             :         }
  188933             : 
  188934             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  188935           0 :      help.insertCopiedNodePair(this,result);
  188936             : 
  188937             :   // printf ("End of copy SgKeyDatumPair = %p = %s \n",this,SageInterface::get_name(this).c_str());
  188938             : 
  188939             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  188940             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  188941           0 :      help.decrementDepth();
  188942             : 
  188943             :   // Test if this is the root of the copy!
  188944           0 :      if (help.get_depth() == 0)
  188945             :         {
  188946             :        // This is the original calling node.
  188947             : 
  188948             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  188949             :        // printf ("Calling SgKeyDatumPair::fixupCopy() (from root of AST being copied) \n");
  188950             : #if ALT_FIXUP_COPY
  188951             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  188952           0 :           fixupCopy_scopes (result,help);
  188953           0 :           fixupCopy_symbols (result,help);
  188954           0 :           fixupCopy_references (result,help);
  188955             : #else
  188956             :           fixupCopy(result,help);
  188957             : #endif
  188958             :        // Allow this to be called recursively, so accumulate the state.
  188959             :        // Also, clear the state in the SgCopyHelp object.
  188960             :        // help.clearState();
  188961             :         }
  188962             : 
  188963           0 :      return result;
  188964             :    }
  188965             : 
  188966             : 
  188967             : /* #line 188968 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  188968             : 
  188969             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  188970             : 
  188971           0 : SgNode* SgComprehension::copy ( SgCopyHelp& help) const
  188972             :    {
  188973           0 :      SgComprehension* result = NULL;
  188974             : 
  188975             :   // printf ("Copy SgComprehension = %p = %s \n",this,SageInterface::get_name(this).c_str());
  188976             : 
  188977             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  188978             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  188979             :   // The default value of the depth is 0, so after this call the depth is 1!
  188980           0 :      help.incrementDepth();
  188981             : 
  188982             : #if 0
  188983             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  188984             :   // but it is not generally true that things can only be copied once!
  188985             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  188986             :   // AstAttribute* existingAttribute = const_cast<SgComprehension*>(this)->attribute["copied"];
  188987             :      bool previouslyCopied = const_cast<SgComprehension*>(this)->attribute.exists("copied");
  188988             :      if (previouslyCopied == true)
  188989             :         {
  188990             :           this->get_file_info()->display("Called from copy SgComprehension: debug");
  188991             :         }
  188992             :      ROSE_ASSERT(previouslyCopied == false);
  188993             : 
  188994             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  188995             :      AstAttribute* newAttribute = new AstAttribute();
  188996             :      ROSE_ASSERT(newAttribute != NULL);
  188997             : 
  188998             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  188999             :      const_cast<SgComprehension*>(this)->attribute.add("copied",newAttribute);
  189000             : #endif
  189001             : 
  189002             :   // Copy data members from base classes
  189003             :   // Copy constructor parameter data member: startOfConstruct_copy
  189004             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  189005             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  189006           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  189007           0 :      if ( p_startOfConstruct != NULL ) 
  189008             :         { 
  189009           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  189010             :         } 
  189011             :        else 
  189012             :         { 
  189013             :           startOfConstruct_copy = NULL; 
  189014             :         } 
  189015             :   // Copy constructor parameter data member: target_copy
  189016           0 :      SgExpression* target_copy; 
  189017             :   // case: not a listType for (using conditionalToCopyVariable)target
  189018           0 :           if (get_target() != NULL) 
  189019             :              { 
  189020           0 :                target_copy = static_cast<SgExpression*>(help.copyAst(get_target())); 
  189021             :              } 
  189022             :             else 
  189023             :              { 
  189024             :                target_copy = NULL; 
  189025             :              } 
  189026             :   // Copy constructor parameter data member: iter_copy
  189027           0 :      SgExpression* iter_copy; 
  189028             :   // case: not a listType for (using conditionalToCopyVariable)iter
  189029           0 :           if (get_iter() != NULL) 
  189030             :              { 
  189031           0 :                iter_copy = static_cast<SgExpression*>(help.copyAst(get_iter())); 
  189032             :              } 
  189033             :             else 
  189034             :              { 
  189035             :                iter_copy = NULL; 
  189036             :              } 
  189037             :   // Copy constructor parameter data member: filters_copy
  189038           0 :      SgExprListExp* filters_copy; 
  189039             :   // case: not a listType for (using conditionalToCopyVariable)filters
  189040           0 :           if (get_filters() != NULL) 
  189041             :              { 
  189042           0 :                filters_copy = static_cast<SgExprListExp*>(help.copyAst(get_filters())); 
  189043             :              } 
  189044             :             else 
  189045             :              { 
  189046             :                filters_copy = NULL; 
  189047             :              } 
  189048             :  
  189049             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189050             : 
  189051             :   // Build an empty copy of this object (will be filled in, but 
  189052             :   // the parent can't be set and must be set by the caller)
  189053           0 :      result = new SgComprehension(  startOfConstruct_copy, target_copy, iter_copy, filters_copy );
  189054           0 :      ROSE_ASSERT(result != NULL);
  189055             : 
  189056             :   // Copy data members of "this" class
  189057             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  189058             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  189059             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  189060           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  189061           0 :      if ( p_endOfConstruct != NULL ) 
  189062             :         { 
  189063           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  189064             :         } 
  189065             :        else 
  189066             :         { 
  189067             :           endOfConstruct_copy = NULL; 
  189068             :         } 
  189069             :   /* check for a valid pointer and delete if present */ 
  189070           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  189071             :   /* add assignment to result here */ 
  189072           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  189073             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  189074             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  189075             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  189076           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  189077           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  189078             :         { 
  189079           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  189080             :         } 
  189081             :        else 
  189082             :         { 
  189083             :           attachedPreprocessingInfoPtr_copy = NULL; 
  189084             :         } 
  189085             :   /* check for a valid pointer and delete if present */ 
  189086           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  189087             :   /* add assignment to result here */ 
  189088           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  189089             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  189090             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  189091             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  189092           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  189093           0 :      if ( p_attributeMechanism != NULL ) 
  189094             :         { 
  189095           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  189096             :         } 
  189097             :        else 
  189098             :         { 
  189099             :           attributeMechanism_copy = NULL; 
  189100             :         } 
  189101             :   /* check for a valid pointer and delete if present */ 
  189102           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  189103             :   /* add assignment to result here */ 
  189104           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  189105             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  189106             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  189107             :   // case: toBeCopied == COPY_DATA for need_paren
  189108           0 :      bool need_paren_copy = p_need_paren; 
  189109           0 :      result->p_need_paren = need_paren_copy; 
  189110             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  189111             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  189112             :   // case: toBeCopied == COPY_DATA for lvalue
  189113           0 :      bool lvalue_copy = p_lvalue; 
  189114           0 :      result->p_lvalue = lvalue_copy; 
  189115             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  189116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  189117             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  189118           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  189119           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  189120             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  189121             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  189122             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  189123           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  189124           0 :      if ( p_operatorPosition != NULL ) 
  189125             :         { 
  189126           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  189127             :         } 
  189128             :        else 
  189129             :         { 
  189130             :           operatorPosition_copy = NULL; 
  189131             :         } 
  189132             :   /* check for a valid pointer and delete if present */ 
  189133           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  189134             :   /* add assignment to result here */ 
  189135           0 :      result->p_operatorPosition = operatorPosition_copy; 
  189136             :   // case: not a listType for (using conditionalToSetParent)target
  189137           0 :           if ( (target_copy != NULL) && (target_copy->get_parent() == NULL) && (isSgType(target_copy) == NULL) ) 
  189138             :              { 
  189139           0 :                target_copy->set_parent(result); 
  189140             :              } 
  189141             :   // case: not a listType for (using conditionalToSetParent)iter
  189142           0 :           if ( (iter_copy != NULL) && (iter_copy->get_parent() == NULL) && (isSgType(iter_copy) == NULL) ) 
  189143             :              { 
  189144           0 :                iter_copy->set_parent(result); 
  189145             :              } 
  189146             :   // case: not a listType for (using conditionalToSetParent)filters
  189147           0 :           if ( (filters_copy != NULL) && (filters_copy->get_parent() == NULL) && (isSgType(filters_copy) == NULL) ) 
  189148             :              { 
  189149           0 :                filters_copy->set_parent(result); 
  189150             :              } 
  189151             : 
  189152             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189153             : 
  189154             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  189155             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  189156             :   // fixupCopy(result,help);
  189157             : 
  189158             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  189159             :   // the Sg_File_Info objects that are built for the new IR nodes.
  189160           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  189161           0 :      if (locatedNode != NULL)
  189162             :         {
  189163             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  189164           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  189165           0 :           ROSE_ASSERT(start != NULL);
  189166             : #if 0
  189167             :        // Debugging information
  189168             :           if (start->get_parent() == NULL)
  189169             :              {
  189170             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189171             :              }
  189172             : #endif
  189173           0 :           start->set_parent(locatedNode);
  189174           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  189175             : 
  189176           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  189177             : 
  189178             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  189179             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  189180             :        // ROSE_ASSERT(end != NULL);
  189181           0 :           if (end == NULL)
  189182             :              {
  189183           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  189184             :              }
  189185             :             else
  189186             :              {
  189187             : #if 0
  189188             :             // Debugging information
  189189             :                if (end->get_parent() == NULL)
  189190             :                   {
  189191             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189192             :                   }
  189193             : #endif
  189194           0 :                end->set_parent(locatedNode);
  189195           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  189196             :              }
  189197             : 
  189198           0 :           SgExpression* expression = isSgExpression(result);
  189199           0 :           if (isSgExpression(this) != NULL)
  189200             :              {
  189201           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  189202             : 
  189203             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  189204           0 :                if (operatorPosition != NULL)
  189205             :                   {
  189206             : #if 0
  189207             :                  // Debugging information
  189208             :                     if (operatorPosition->get_parent() == NULL)
  189209             :                        {
  189210             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189211             :                        }
  189212             : #endif
  189213           0 :                     operatorPosition->set_parent(expression);
  189214           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  189215             :                   }
  189216             :              }
  189217             :         }
  189218             : 
  189219             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  189220           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  189221           0 :      if (initializedName != NULL)
  189222             :         {
  189223             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  189224           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  189225           0 :           ROSE_ASSERT(start != NULL);
  189226             : #if 0
  189227             :        // Debugging information
  189228             :           if (start->get_parent() == NULL)
  189229             :              {
  189230             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189231             :              }
  189232             : #endif
  189233           0 :           start->set_parent(initializedName);
  189234           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  189235             : 
  189236             : #if 0
  189237             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  189238             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  189239             : 
  189240             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  189241             :        // ROSE_ASSERT(end != NULL);
  189242             :           if (end == NULL)
  189243             :              {
  189244             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  189245             :              }
  189246             :             else
  189247             :              {
  189248             :                if (end->get_parent() == NULL)
  189249             :                   {
  189250             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189251             :                   }
  189252             :                end->set_parent(initializedName);
  189253             :                ROSE_ASSERT(end->get_parent() != NULL);
  189254             :              }
  189255             : #endif
  189256             :         }
  189257             : 
  189258             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  189259           0 :      help.insertCopiedNodePair(this,result);
  189260             : 
  189261             :   // printf ("End of copy SgComprehension = %p = %s \n",this,SageInterface::get_name(this).c_str());
  189262             : 
  189263             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  189264             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  189265           0 :      help.decrementDepth();
  189266             : 
  189267             :   // Test if this is the root of the copy!
  189268           0 :      if (help.get_depth() == 0)
  189269             :         {
  189270             :        // This is the original calling node.
  189271             : 
  189272             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  189273             :        // printf ("Calling SgComprehension::fixupCopy() (from root of AST being copied) \n");
  189274             : #if ALT_FIXUP_COPY
  189275             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  189276           0 :           fixupCopy_scopes (result,help);
  189277           0 :           fixupCopy_symbols (result,help);
  189278           0 :           fixupCopy_references (result,help);
  189279             : #else
  189280             :           fixupCopy(result,help);
  189281             : #endif
  189282             :        // Allow this to be called recursively, so accumulate the state.
  189283             :        // Also, clear the state in the SgCopyHelp object.
  189284             :        // help.clearState();
  189285             :         }
  189286             : 
  189287           0 :      return result;
  189288             :    }
  189289             : 
  189290             : 
  189291             : /* #line 189292 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  189292             : 
  189293             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189294             : 
  189295           0 : SgNode* SgListComprehension::copy ( SgCopyHelp& help) const
  189296             :    {
  189297           0 :      SgListComprehension* result = NULL;
  189298             : 
  189299             :   // printf ("Copy SgListComprehension = %p = %s \n",this,SageInterface::get_name(this).c_str());
  189300             : 
  189301             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  189302             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  189303             :   // The default value of the depth is 0, so after this call the depth is 1!
  189304           0 :      help.incrementDepth();
  189305             : 
  189306             : #if 0
  189307             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  189308             :   // but it is not generally true that things can only be copied once!
  189309             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  189310             :   // AstAttribute* existingAttribute = const_cast<SgListComprehension*>(this)->attribute["copied"];
  189311             :      bool previouslyCopied = const_cast<SgListComprehension*>(this)->attribute.exists("copied");
  189312             :      if (previouslyCopied == true)
  189313             :         {
  189314             :           this->get_file_info()->display("Called from copy SgListComprehension: debug");
  189315             :         }
  189316             :      ROSE_ASSERT(previouslyCopied == false);
  189317             : 
  189318             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  189319             :      AstAttribute* newAttribute = new AstAttribute();
  189320             :      ROSE_ASSERT(newAttribute != NULL);
  189321             : 
  189322             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  189323             :      const_cast<SgListComprehension*>(this)->attribute.add("copied",newAttribute);
  189324             : #endif
  189325             : 
  189326             :   // Copy data members from base classes
  189327             :   // Copy constructor parameter data member: startOfConstruct_copy
  189328             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  189329             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  189330           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  189331           0 :      if ( p_startOfConstruct != NULL ) 
  189332             :         { 
  189333           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  189334             :         } 
  189335             :        else 
  189336             :         { 
  189337             :           startOfConstruct_copy = NULL; 
  189338             :         } 
  189339             :   // Copy constructor parameter data member: element_copy
  189340           0 :      SgExpression* element_copy; 
  189341             :   // case: not a listType for (using conditionalToCopyVariable)element
  189342           0 :           if (get_element() != NULL) 
  189343             :              { 
  189344           0 :                element_copy = static_cast<SgExpression*>(help.copyAst(get_element())); 
  189345             :              } 
  189346             :             else 
  189347             :              { 
  189348             :                element_copy = NULL; 
  189349             :              } 
  189350             :   // Copy constructor parameter data member: generators_copy
  189351           0 :      SgExprListExp* generators_copy; 
  189352             :   // case: not a listType for (using conditionalToCopyVariable)generators
  189353           0 :           if (get_generators() != NULL) 
  189354             :              { 
  189355           0 :                generators_copy = static_cast<SgExprListExp*>(help.copyAst(get_generators())); 
  189356             :              } 
  189357             :             else 
  189358             :              { 
  189359             :                generators_copy = NULL; 
  189360             :              } 
  189361             :  
  189362             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189363             : 
  189364             :   // Build an empty copy of this object (will be filled in, but 
  189365             :   // the parent can't be set and must be set by the caller)
  189366           0 :      result = new SgListComprehension(  startOfConstruct_copy, element_copy, generators_copy );
  189367           0 :      ROSE_ASSERT(result != NULL);
  189368             : 
  189369             :   // Copy data members of "this" class
  189370             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  189371             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  189372             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  189373           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  189374           0 :      if ( p_endOfConstruct != NULL ) 
  189375             :         { 
  189376           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  189377             :         } 
  189378             :        else 
  189379             :         { 
  189380             :           endOfConstruct_copy = NULL; 
  189381             :         } 
  189382             :   /* check for a valid pointer and delete if present */ 
  189383           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  189384             :   /* add assignment to result here */ 
  189385           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  189386             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  189387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  189388             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  189389           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  189390           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  189391             :         { 
  189392           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  189393             :         } 
  189394             :        else 
  189395             :         { 
  189396             :           attachedPreprocessingInfoPtr_copy = NULL; 
  189397             :         } 
  189398             :   /* check for a valid pointer and delete if present */ 
  189399           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  189400             :   /* add assignment to result here */ 
  189401           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  189402             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  189403             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  189404             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  189405           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  189406           0 :      if ( p_attributeMechanism != NULL ) 
  189407             :         { 
  189408           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  189409             :         } 
  189410             :        else 
  189411             :         { 
  189412             :           attributeMechanism_copy = NULL; 
  189413             :         } 
  189414             :   /* check for a valid pointer and delete if present */ 
  189415           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  189416             :   /* add assignment to result here */ 
  189417           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  189418             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  189419             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  189420             :   // case: toBeCopied == COPY_DATA for need_paren
  189421           0 :      bool need_paren_copy = p_need_paren; 
  189422           0 :      result->p_need_paren = need_paren_copy; 
  189423             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  189424             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  189425             :   // case: toBeCopied == COPY_DATA for lvalue
  189426           0 :      bool lvalue_copy = p_lvalue; 
  189427           0 :      result->p_lvalue = lvalue_copy; 
  189428             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  189429             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  189430             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  189431           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  189432           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  189433             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  189434             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  189435             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  189436           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  189437           0 :      if ( p_operatorPosition != NULL ) 
  189438             :         { 
  189439           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  189440             :         } 
  189441             :        else 
  189442             :         { 
  189443             :           operatorPosition_copy = NULL; 
  189444             :         } 
  189445             :   /* check for a valid pointer and delete if present */ 
  189446           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  189447             :   /* add assignment to result here */ 
  189448           0 :      result->p_operatorPosition = operatorPosition_copy; 
  189449             :   // case: not a listType for (using conditionalToSetParent)element
  189450           0 :           if ( (element_copy != NULL) && (element_copy->get_parent() == NULL) && (isSgType(element_copy) == NULL) ) 
  189451             :              { 
  189452           0 :                element_copy->set_parent(result); 
  189453             :              } 
  189454             :   // case: not a listType for (using conditionalToSetParent)generators
  189455           0 :           if ( (generators_copy != NULL) && (generators_copy->get_parent() == NULL) && (isSgType(generators_copy) == NULL) ) 
  189456             :              { 
  189457           0 :                generators_copy->set_parent(result); 
  189458             :              } 
  189459             : 
  189460             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189461             : 
  189462             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  189463             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  189464             :   // fixupCopy(result,help);
  189465             : 
  189466             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  189467             :   // the Sg_File_Info objects that are built for the new IR nodes.
  189468           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  189469           0 :      if (locatedNode != NULL)
  189470             :         {
  189471             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  189472           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  189473           0 :           ROSE_ASSERT(start != NULL);
  189474             : #if 0
  189475             :        // Debugging information
  189476             :           if (start->get_parent() == NULL)
  189477             :              {
  189478             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189479             :              }
  189480             : #endif
  189481           0 :           start->set_parent(locatedNode);
  189482           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  189483             : 
  189484           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  189485             : 
  189486             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  189487             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  189488             :        // ROSE_ASSERT(end != NULL);
  189489           0 :           if (end == NULL)
  189490             :              {
  189491           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  189492             :              }
  189493             :             else
  189494             :              {
  189495             : #if 0
  189496             :             // Debugging information
  189497             :                if (end->get_parent() == NULL)
  189498             :                   {
  189499             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189500             :                   }
  189501             : #endif
  189502           0 :                end->set_parent(locatedNode);
  189503           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  189504             :              }
  189505             : 
  189506           0 :           SgExpression* expression = isSgExpression(result);
  189507           0 :           if (isSgExpression(this) != NULL)
  189508             :              {
  189509           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  189510             : 
  189511             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  189512           0 :                if (operatorPosition != NULL)
  189513             :                   {
  189514             : #if 0
  189515             :                  // Debugging information
  189516             :                     if (operatorPosition->get_parent() == NULL)
  189517             :                        {
  189518             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189519             :                        }
  189520             : #endif
  189521           0 :                     operatorPosition->set_parent(expression);
  189522           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  189523             :                   }
  189524             :              }
  189525             :         }
  189526             : 
  189527             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  189528           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  189529           0 :      if (initializedName != NULL)
  189530             :         {
  189531             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  189532           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  189533           0 :           ROSE_ASSERT(start != NULL);
  189534             : #if 0
  189535             :        // Debugging information
  189536             :           if (start->get_parent() == NULL)
  189537             :              {
  189538             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189539             :              }
  189540             : #endif
  189541           0 :           start->set_parent(initializedName);
  189542           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  189543             : 
  189544             : #if 0
  189545             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  189546             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  189547             : 
  189548             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  189549             :        // ROSE_ASSERT(end != NULL);
  189550             :           if (end == NULL)
  189551             :              {
  189552             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  189553             :              }
  189554             :             else
  189555             :              {
  189556             :                if (end->get_parent() == NULL)
  189557             :                   {
  189558             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189559             :                   }
  189560             :                end->set_parent(initializedName);
  189561             :                ROSE_ASSERT(end->get_parent() != NULL);
  189562             :              }
  189563             : #endif
  189564             :         }
  189565             : 
  189566             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  189567           0 :      help.insertCopiedNodePair(this,result);
  189568             : 
  189569             :   // printf ("End of copy SgListComprehension = %p = %s \n",this,SageInterface::get_name(this).c_str());
  189570             : 
  189571             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  189572             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  189573           0 :      help.decrementDepth();
  189574             : 
  189575             :   // Test if this is the root of the copy!
  189576           0 :      if (help.get_depth() == 0)
  189577             :         {
  189578             :        // This is the original calling node.
  189579             : 
  189580             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  189581             :        // printf ("Calling SgListComprehension::fixupCopy() (from root of AST being copied) \n");
  189582             : #if ALT_FIXUP_COPY
  189583             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  189584           0 :           fixupCopy_scopes (result,help);
  189585           0 :           fixupCopy_symbols (result,help);
  189586           0 :           fixupCopy_references (result,help);
  189587             : #else
  189588             :           fixupCopy(result,help);
  189589             : #endif
  189590             :        // Allow this to be called recursively, so accumulate the state.
  189591             :        // Also, clear the state in the SgCopyHelp object.
  189592             :        // help.clearState();
  189593             :         }
  189594             : 
  189595           0 :      return result;
  189596             :    }
  189597             : 
  189598             : 
  189599             : /* #line 189600 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  189600             : 
  189601             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189602             : 
  189603           0 : SgNode* SgSetComprehension::copy ( SgCopyHelp& help) const
  189604             :    {
  189605           0 :      SgSetComprehension* result = NULL;
  189606             : 
  189607             :   // printf ("Copy SgSetComprehension = %p = %s \n",this,SageInterface::get_name(this).c_str());
  189608             : 
  189609             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  189610             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  189611             :   // The default value of the depth is 0, so after this call the depth is 1!
  189612           0 :      help.incrementDepth();
  189613             : 
  189614             : #if 0
  189615             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  189616             :   // but it is not generally true that things can only be copied once!
  189617             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  189618             :   // AstAttribute* existingAttribute = const_cast<SgSetComprehension*>(this)->attribute["copied"];
  189619             :      bool previouslyCopied = const_cast<SgSetComprehension*>(this)->attribute.exists("copied");
  189620             :      if (previouslyCopied == true)
  189621             :         {
  189622             :           this->get_file_info()->display("Called from copy SgSetComprehension: debug");
  189623             :         }
  189624             :      ROSE_ASSERT(previouslyCopied == false);
  189625             : 
  189626             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  189627             :      AstAttribute* newAttribute = new AstAttribute();
  189628             :      ROSE_ASSERT(newAttribute != NULL);
  189629             : 
  189630             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  189631             :      const_cast<SgSetComprehension*>(this)->attribute.add("copied",newAttribute);
  189632             : #endif
  189633             : 
  189634             :   // Copy data members from base classes
  189635             :   // Copy constructor parameter data member: startOfConstruct_copy
  189636             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  189637             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  189638           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  189639           0 :      if ( p_startOfConstruct != NULL ) 
  189640             :         { 
  189641           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  189642             :         } 
  189643             :        else 
  189644             :         { 
  189645             :           startOfConstruct_copy = NULL; 
  189646             :         } 
  189647             :   // Copy constructor parameter data member: element_copy
  189648           0 :      SgExpression* element_copy; 
  189649             :   // case: not a listType for (using conditionalToCopyVariable)element
  189650           0 :           if (get_element() != NULL) 
  189651             :              { 
  189652           0 :                element_copy = static_cast<SgExpression*>(help.copyAst(get_element())); 
  189653             :              } 
  189654             :             else 
  189655             :              { 
  189656             :                element_copy = NULL; 
  189657             :              } 
  189658             :   // Copy constructor parameter data member: generators_copy
  189659           0 :      SgExprListExp* generators_copy; 
  189660             :   // case: not a listType for (using conditionalToCopyVariable)generators
  189661           0 :           if (get_generators() != NULL) 
  189662             :              { 
  189663           0 :                generators_copy = static_cast<SgExprListExp*>(help.copyAst(get_generators())); 
  189664             :              } 
  189665             :             else 
  189666             :              { 
  189667             :                generators_copy = NULL; 
  189668             :              } 
  189669             :  
  189670             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189671             : 
  189672             :   // Build an empty copy of this object (will be filled in, but 
  189673             :   // the parent can't be set and must be set by the caller)
  189674           0 :      result = new SgSetComprehension(  startOfConstruct_copy, element_copy, generators_copy );
  189675           0 :      ROSE_ASSERT(result != NULL);
  189676             : 
  189677             :   // Copy data members of "this" class
  189678             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  189679             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  189680             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  189681           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  189682           0 :      if ( p_endOfConstruct != NULL ) 
  189683             :         { 
  189684           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  189685             :         } 
  189686             :        else 
  189687             :         { 
  189688             :           endOfConstruct_copy = NULL; 
  189689             :         } 
  189690             :   /* check for a valid pointer and delete if present */ 
  189691           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  189692             :   /* add assignment to result here */ 
  189693           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  189694             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  189695             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  189696             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  189697           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  189698           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  189699             :         { 
  189700           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  189701             :         } 
  189702             :        else 
  189703             :         { 
  189704             :           attachedPreprocessingInfoPtr_copy = NULL; 
  189705             :         } 
  189706             :   /* check for a valid pointer and delete if present */ 
  189707           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  189708             :   /* add assignment to result here */ 
  189709           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  189710             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  189711             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  189712             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  189713           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  189714           0 :      if ( p_attributeMechanism != NULL ) 
  189715             :         { 
  189716           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  189717             :         } 
  189718             :        else 
  189719             :         { 
  189720             :           attributeMechanism_copy = NULL; 
  189721             :         } 
  189722             :   /* check for a valid pointer and delete if present */ 
  189723           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  189724             :   /* add assignment to result here */ 
  189725           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  189726             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  189727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  189728             :   // case: toBeCopied == COPY_DATA for need_paren
  189729           0 :      bool need_paren_copy = p_need_paren; 
  189730           0 :      result->p_need_paren = need_paren_copy; 
  189731             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  189732             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  189733             :   // case: toBeCopied == COPY_DATA for lvalue
  189734           0 :      bool lvalue_copy = p_lvalue; 
  189735           0 :      result->p_lvalue = lvalue_copy; 
  189736             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  189737             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  189738             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  189739           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  189740           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  189741             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  189742             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  189743             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  189744           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  189745           0 :      if ( p_operatorPosition != NULL ) 
  189746             :         { 
  189747           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  189748             :         } 
  189749             :        else 
  189750             :         { 
  189751             :           operatorPosition_copy = NULL; 
  189752             :         } 
  189753             :   /* check for a valid pointer and delete if present */ 
  189754           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  189755             :   /* add assignment to result here */ 
  189756           0 :      result->p_operatorPosition = operatorPosition_copy; 
  189757             :   // case: not a listType for (using conditionalToSetParent)element
  189758           0 :           if ( (element_copy != NULL) && (element_copy->get_parent() == NULL) && (isSgType(element_copy) == NULL) ) 
  189759             :              { 
  189760           0 :                element_copy->set_parent(result); 
  189761             :              } 
  189762             :   // case: not a listType for (using conditionalToSetParent)generators
  189763           0 :           if ( (generators_copy != NULL) && (generators_copy->get_parent() == NULL) && (isSgType(generators_copy) == NULL) ) 
  189764             :              { 
  189765           0 :                generators_copy->set_parent(result); 
  189766             :              } 
  189767             : 
  189768             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189769             : 
  189770             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  189771             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  189772             :   // fixupCopy(result,help);
  189773             : 
  189774             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  189775             :   // the Sg_File_Info objects that are built for the new IR nodes.
  189776           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  189777           0 :      if (locatedNode != NULL)
  189778             :         {
  189779             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  189780           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  189781           0 :           ROSE_ASSERT(start != NULL);
  189782             : #if 0
  189783             :        // Debugging information
  189784             :           if (start->get_parent() == NULL)
  189785             :              {
  189786             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189787             :              }
  189788             : #endif
  189789           0 :           start->set_parent(locatedNode);
  189790           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  189791             : 
  189792           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  189793             : 
  189794             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  189795             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  189796             :        // ROSE_ASSERT(end != NULL);
  189797           0 :           if (end == NULL)
  189798             :              {
  189799           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  189800             :              }
  189801             :             else
  189802             :              {
  189803             : #if 0
  189804             :             // Debugging information
  189805             :                if (end->get_parent() == NULL)
  189806             :                   {
  189807             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189808             :                   }
  189809             : #endif
  189810           0 :                end->set_parent(locatedNode);
  189811           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  189812             :              }
  189813             : 
  189814           0 :           SgExpression* expression = isSgExpression(result);
  189815           0 :           if (isSgExpression(this) != NULL)
  189816             :              {
  189817           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  189818             : 
  189819             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  189820           0 :                if (operatorPosition != NULL)
  189821             :                   {
  189822             : #if 0
  189823             :                  // Debugging information
  189824             :                     if (operatorPosition->get_parent() == NULL)
  189825             :                        {
  189826             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189827             :                        }
  189828             : #endif
  189829           0 :                     operatorPosition->set_parent(expression);
  189830           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  189831             :                   }
  189832             :              }
  189833             :         }
  189834             : 
  189835             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  189836           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  189837           0 :      if (initializedName != NULL)
  189838             :         {
  189839             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  189840           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  189841           0 :           ROSE_ASSERT(start != NULL);
  189842             : #if 0
  189843             :        // Debugging information
  189844             :           if (start->get_parent() == NULL)
  189845             :              {
  189846             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189847             :              }
  189848             : #endif
  189849           0 :           start->set_parent(initializedName);
  189850           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  189851             : 
  189852             : #if 0
  189853             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  189854             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  189855             : 
  189856             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  189857             :        // ROSE_ASSERT(end != NULL);
  189858             :           if (end == NULL)
  189859             :              {
  189860             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  189861             :              }
  189862             :             else
  189863             :              {
  189864             :                if (end->get_parent() == NULL)
  189865             :                   {
  189866             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  189867             :                   }
  189868             :                end->set_parent(initializedName);
  189869             :                ROSE_ASSERT(end->get_parent() != NULL);
  189870             :              }
  189871             : #endif
  189872             :         }
  189873             : 
  189874             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  189875           0 :      help.insertCopiedNodePair(this,result);
  189876             : 
  189877             :   // printf ("End of copy SgSetComprehension = %p = %s \n",this,SageInterface::get_name(this).c_str());
  189878             : 
  189879             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  189880             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  189881           0 :      help.decrementDepth();
  189882             : 
  189883             :   // Test if this is the root of the copy!
  189884           0 :      if (help.get_depth() == 0)
  189885             :         {
  189886             :        // This is the original calling node.
  189887             : 
  189888             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  189889             :        // printf ("Calling SgSetComprehension::fixupCopy() (from root of AST being copied) \n");
  189890             : #if ALT_FIXUP_COPY
  189891             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  189892           0 :           fixupCopy_scopes (result,help);
  189893           0 :           fixupCopy_symbols (result,help);
  189894           0 :           fixupCopy_references (result,help);
  189895             : #else
  189896             :           fixupCopy(result,help);
  189897             : #endif
  189898             :        // Allow this to be called recursively, so accumulate the state.
  189899             :        // Also, clear the state in the SgCopyHelp object.
  189900             :        // help.clearState();
  189901             :         }
  189902             : 
  189903           0 :      return result;
  189904             :    }
  189905             : 
  189906             : 
  189907             : /* #line 189908 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  189908             : 
  189909             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189910             : 
  189911           0 : SgNode* SgDictionaryComprehension::copy ( SgCopyHelp& help) const
  189912             :    {
  189913           0 :      SgDictionaryComprehension* result = NULL;
  189914             : 
  189915             :   // printf ("Copy SgDictionaryComprehension = %p = %s \n",this,SageInterface::get_name(this).c_str());
  189916             : 
  189917             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  189918             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  189919             :   // The default value of the depth is 0, so after this call the depth is 1!
  189920           0 :      help.incrementDepth();
  189921             : 
  189922             : #if 0
  189923             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  189924             :   // but it is not generally true that things can only be copied once!
  189925             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  189926             :   // AstAttribute* existingAttribute = const_cast<SgDictionaryComprehension*>(this)->attribute["copied"];
  189927             :      bool previouslyCopied = const_cast<SgDictionaryComprehension*>(this)->attribute.exists("copied");
  189928             :      if (previouslyCopied == true)
  189929             :         {
  189930             :           this->get_file_info()->display("Called from copy SgDictionaryComprehension: debug");
  189931             :         }
  189932             :      ROSE_ASSERT(previouslyCopied == false);
  189933             : 
  189934             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  189935             :      AstAttribute* newAttribute = new AstAttribute();
  189936             :      ROSE_ASSERT(newAttribute != NULL);
  189937             : 
  189938             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  189939             :      const_cast<SgDictionaryComprehension*>(this)->attribute.add("copied",newAttribute);
  189940             : #endif
  189941             : 
  189942             :   // Copy data members from base classes
  189943             :   // Copy constructor parameter data member: startOfConstruct_copy
  189944             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  189945             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  189946           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  189947           0 :      if ( p_startOfConstruct != NULL ) 
  189948             :         { 
  189949           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  189950             :         } 
  189951             :        else 
  189952             :         { 
  189953             :           startOfConstruct_copy = NULL; 
  189954             :         } 
  189955             :   // Copy constructor parameter data member: element_copy
  189956           0 :      SgKeyDatumPair* element_copy; 
  189957             :   // case: not a listType for (using conditionalToCopyVariable)element
  189958           0 :           if (get_element() != NULL) 
  189959             :              { 
  189960           0 :                element_copy = static_cast<SgKeyDatumPair*>(help.copyAst(get_element())); 
  189961             :              } 
  189962             :             else 
  189963             :              { 
  189964             :                element_copy = NULL; 
  189965             :              } 
  189966             :   // Copy constructor parameter data member: generators_copy
  189967           0 :      SgExprListExp* generators_copy; 
  189968             :   // case: not a listType for (using conditionalToCopyVariable)generators
  189969           0 :           if (get_generators() != NULL) 
  189970             :              { 
  189971           0 :                generators_copy = static_cast<SgExprListExp*>(help.copyAst(get_generators())); 
  189972             :              } 
  189973             :             else 
  189974             :              { 
  189975             :                generators_copy = NULL; 
  189976             :              } 
  189977             :  
  189978             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  189979             : 
  189980             :   // Build an empty copy of this object (will be filled in, but 
  189981             :   // the parent can't be set and must be set by the caller)
  189982           0 :      result = new SgDictionaryComprehension(  startOfConstruct_copy, element_copy, generators_copy );
  189983           0 :      ROSE_ASSERT(result != NULL);
  189984             : 
  189985             :   // Copy data members of "this" class
  189986             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  189987             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  189988             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  189989           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  189990           0 :      if ( p_endOfConstruct != NULL ) 
  189991             :         { 
  189992           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  189993             :         } 
  189994             :        else 
  189995             :         { 
  189996             :           endOfConstruct_copy = NULL; 
  189997             :         } 
  189998             :   /* check for a valid pointer and delete if present */ 
  189999           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  190000             :   /* add assignment to result here */ 
  190001           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  190002             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  190003             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  190004             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  190005           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  190006           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  190007             :         { 
  190008           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  190009             :         } 
  190010             :        else 
  190011             :         { 
  190012             :           attachedPreprocessingInfoPtr_copy = NULL; 
  190013             :         } 
  190014             :   /* check for a valid pointer and delete if present */ 
  190015           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  190016             :   /* add assignment to result here */ 
  190017           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  190018             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  190019             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  190020             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  190021           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  190022           0 :      if ( p_attributeMechanism != NULL ) 
  190023             :         { 
  190024           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  190025             :         } 
  190026             :        else 
  190027             :         { 
  190028             :           attributeMechanism_copy = NULL; 
  190029             :         } 
  190030             :   /* check for a valid pointer and delete if present */ 
  190031           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  190032             :   /* add assignment to result here */ 
  190033           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  190034             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  190035             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  190036             :   // case: toBeCopied == COPY_DATA for need_paren
  190037           0 :      bool need_paren_copy = p_need_paren; 
  190038           0 :      result->p_need_paren = need_paren_copy; 
  190039             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  190040             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  190041             :   // case: toBeCopied == COPY_DATA for lvalue
  190042           0 :      bool lvalue_copy = p_lvalue; 
  190043           0 :      result->p_lvalue = lvalue_copy; 
  190044             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  190045             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  190046             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  190047           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  190048           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  190049             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  190050             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  190051             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  190052           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  190053           0 :      if ( p_operatorPosition != NULL ) 
  190054             :         { 
  190055           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  190056             :         } 
  190057             :        else 
  190058             :         { 
  190059             :           operatorPosition_copy = NULL; 
  190060             :         } 
  190061             :   /* check for a valid pointer and delete if present */ 
  190062           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  190063             :   /* add assignment to result here */ 
  190064           0 :      result->p_operatorPosition = operatorPosition_copy; 
  190065             :   // case: not a listType for (using conditionalToSetParent)element
  190066           0 :           if ( (element_copy != NULL) && (element_copy->get_parent() == NULL) && (isSgType(element_copy) == NULL) ) 
  190067             :              { 
  190068           0 :                element_copy->set_parent(result); 
  190069             :              } 
  190070             :   // case: not a listType for (using conditionalToSetParent)generators
  190071           0 :           if ( (generators_copy != NULL) && (generators_copy->get_parent() == NULL) && (isSgType(generators_copy) == NULL) ) 
  190072             :              { 
  190073           0 :                generators_copy->set_parent(result); 
  190074             :              } 
  190075             : 
  190076             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  190077             : 
  190078             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  190079             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  190080             :   // fixupCopy(result,help);
  190081             : 
  190082             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  190083             :   // the Sg_File_Info objects that are built for the new IR nodes.
  190084           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  190085           0 :      if (locatedNode != NULL)
  190086             :         {
  190087             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  190088           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  190089           0 :           ROSE_ASSERT(start != NULL);
  190090             : #if 0
  190091             :        // Debugging information
  190092             :           if (start->get_parent() == NULL)
  190093             :              {
  190094             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190095             :              }
  190096             : #endif
  190097           0 :           start->set_parent(locatedNode);
  190098           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  190099             : 
  190100           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  190101             : 
  190102             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  190103             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  190104             :        // ROSE_ASSERT(end != NULL);
  190105           0 :           if (end == NULL)
  190106             :              {
  190107           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  190108             :              }
  190109             :             else
  190110             :              {
  190111             : #if 0
  190112             :             // Debugging information
  190113             :                if (end->get_parent() == NULL)
  190114             :                   {
  190115             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190116             :                   }
  190117             : #endif
  190118           0 :                end->set_parent(locatedNode);
  190119           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  190120             :              }
  190121             : 
  190122           0 :           SgExpression* expression = isSgExpression(result);
  190123           0 :           if (isSgExpression(this) != NULL)
  190124             :              {
  190125           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  190126             : 
  190127             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  190128           0 :                if (operatorPosition != NULL)
  190129             :                   {
  190130             : #if 0
  190131             :                  // Debugging information
  190132             :                     if (operatorPosition->get_parent() == NULL)
  190133             :                        {
  190134             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190135             :                        }
  190136             : #endif
  190137           0 :                     operatorPosition->set_parent(expression);
  190138           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  190139             :                   }
  190140             :              }
  190141             :         }
  190142             : 
  190143             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  190144           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  190145           0 :      if (initializedName != NULL)
  190146             :         {
  190147             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  190148           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  190149           0 :           ROSE_ASSERT(start != NULL);
  190150             : #if 0
  190151             :        // Debugging information
  190152             :           if (start->get_parent() == NULL)
  190153             :              {
  190154             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190155             :              }
  190156             : #endif
  190157           0 :           start->set_parent(initializedName);
  190158           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  190159             : 
  190160             : #if 0
  190161             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  190162             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  190163             : 
  190164             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  190165             :        // ROSE_ASSERT(end != NULL);
  190166             :           if (end == NULL)
  190167             :              {
  190168             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  190169             :              }
  190170             :             else
  190171             :              {
  190172             :                if (end->get_parent() == NULL)
  190173             :                   {
  190174             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190175             :                   }
  190176             :                end->set_parent(initializedName);
  190177             :                ROSE_ASSERT(end->get_parent() != NULL);
  190178             :              }
  190179             : #endif
  190180             :         }
  190181             : 
  190182             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  190183           0 :      help.insertCopiedNodePair(this,result);
  190184             : 
  190185             :   // printf ("End of copy SgDictionaryComprehension = %p = %s \n",this,SageInterface::get_name(this).c_str());
  190186             : 
  190187             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  190188             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  190189           0 :      help.decrementDepth();
  190190             : 
  190191             :   // Test if this is the root of the copy!
  190192           0 :      if (help.get_depth() == 0)
  190193             :         {
  190194             :        // This is the original calling node.
  190195             : 
  190196             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  190197             :        // printf ("Calling SgDictionaryComprehension::fixupCopy() (from root of AST being copied) \n");
  190198             : #if ALT_FIXUP_COPY
  190199             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  190200           0 :           fixupCopy_scopes (result,help);
  190201           0 :           fixupCopy_symbols (result,help);
  190202           0 :           fixupCopy_references (result,help);
  190203             : #else
  190204             :           fixupCopy(result,help);
  190205             : #endif
  190206             :        // Allow this to be called recursively, so accumulate the state.
  190207             :        // Also, clear the state in the SgCopyHelp object.
  190208             :        // help.clearState();
  190209             :         }
  190210             : 
  190211           0 :      return result;
  190212             :    }
  190213             : 
  190214             : 
  190215             : /* #line 190216 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  190216             : 
  190217             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  190218             : 
  190219           0 : SgNode* SgNaryOp::copy ( SgCopyHelp& help) const
  190220             :    {
  190221           0 :      SgNaryOp* result = NULL;
  190222             : 
  190223             :   // printf ("Copy SgNaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  190224             : 
  190225             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  190226             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  190227             :   // The default value of the depth is 0, so after this call the depth is 1!
  190228           0 :      help.incrementDepth();
  190229             : 
  190230             : #if 0
  190231             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  190232             :   // but it is not generally true that things can only be copied once!
  190233             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  190234             :   // AstAttribute* existingAttribute = const_cast<SgNaryOp*>(this)->attribute["copied"];
  190235             :      bool previouslyCopied = const_cast<SgNaryOp*>(this)->attribute.exists("copied");
  190236             :      if (previouslyCopied == true)
  190237             :         {
  190238             :           this->get_file_info()->display("Called from copy SgNaryOp: debug");
  190239             :         }
  190240             :      ROSE_ASSERT(previouslyCopied == false);
  190241             : 
  190242             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  190243             :      AstAttribute* newAttribute = new AstAttribute();
  190244             :      ROSE_ASSERT(newAttribute != NULL);
  190245             : 
  190246             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  190247             :      const_cast<SgNaryOp*>(this)->attribute.add("copied",newAttribute);
  190248             : #endif
  190249             : 
  190250             :   // Copy data members from base classes
  190251             :   // Copy constructor parameter data member: startOfConstruct_copy
  190252             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  190253             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  190254           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  190255           0 :      if ( p_startOfConstruct != NULL ) 
  190256             :         { 
  190257           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  190258             :         } 
  190259             :        else 
  190260             :         { 
  190261             :           startOfConstruct_copy = NULL; 
  190262             :         } 
  190263             :  
  190264             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  190265             : 
  190266             :   // Build an empty copy of this object (will be filled in, but 
  190267             :   // the parent can't be set and must be set by the caller)
  190268           0 :      result = new SgNaryOp(  startOfConstruct_copy );
  190269           0 :      ROSE_ASSERT(result != NULL);
  190270             : 
  190271             :   // Copy data members of "this" class
  190272             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  190273             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  190274             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  190275           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  190276           0 :      if ( p_endOfConstruct != NULL ) 
  190277             :         { 
  190278           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  190279             :         } 
  190280             :        else 
  190281             :         { 
  190282             :           endOfConstruct_copy = NULL; 
  190283             :         } 
  190284             :   /* check for a valid pointer and delete if present */ 
  190285           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  190286             :   /* add assignment to result here */ 
  190287           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  190288             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  190289             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  190290             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  190291           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  190292           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  190293             :         { 
  190294           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  190295             :         } 
  190296             :        else 
  190297             :         { 
  190298             :           attachedPreprocessingInfoPtr_copy = NULL; 
  190299             :         } 
  190300             :   /* check for a valid pointer and delete if present */ 
  190301           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  190302             :   /* add assignment to result here */ 
  190303           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  190304             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  190305             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  190306             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  190307           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  190308           0 :      if ( p_attributeMechanism != NULL ) 
  190309             :         { 
  190310           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  190311             :         } 
  190312             :        else 
  190313             :         { 
  190314             :           attributeMechanism_copy = NULL; 
  190315             :         } 
  190316             :   /* check for a valid pointer and delete if present */ 
  190317           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  190318             :   /* add assignment to result here */ 
  190319           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  190320             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  190321             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  190322             :   // case: toBeCopied == COPY_DATA for need_paren
  190323           0 :      bool need_paren_copy = p_need_paren; 
  190324           0 :      result->p_need_paren = need_paren_copy; 
  190325             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  190326             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  190327             :   // case: toBeCopied == COPY_DATA for lvalue
  190328           0 :      bool lvalue_copy = p_lvalue; 
  190329           0 :      result->p_lvalue = lvalue_copy; 
  190330             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  190331             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  190332             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  190333           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  190334           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  190335             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  190336             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  190337             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  190338           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  190339           0 :      if ( p_operatorPosition != NULL ) 
  190340             :         { 
  190341           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  190342             :         } 
  190343             :        else 
  190344             :         { 
  190345             :           operatorPosition_copy = NULL; 
  190346             :         } 
  190347             :   /* check for a valid pointer and delete if present */ 
  190348           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  190349             :   /* add assignment to result here */ 
  190350           0 :      result->p_operatorPosition = operatorPosition_copy; 
  190351             :   // Copy non-constructor parameter data member (no access function): result->p_operands
  190352           0 :      SgExpressionPtrList operands_copy; 
  190353             :   // case: listType for operands
  190354             :   // case: listType (typeIsPointerToList == false) for operands
  190355           0 :      SgExpressionPtrList::const_iterator source_operands_iterator = get_operands().begin(); 
  190356           0 :      for ( /* empty by design */; source_operands_iterator != get_operands().end(); ++source_operands_iterator) 
  190357             :         { 
  190358           0 :           SgExpression* source_list_element = *source_operands_iterator; 
  190359           0 :           SgExpression* copy_list_element = NULL; 
  190360           0 :           if (source_list_element != NULL) 
  190361             :              { 
  190362           0 :                copy_list_element = static_cast<SgExpression*>(help.copyAst(*source_operands_iterator)); 
  190363             :              } 
  190364             :             else 
  190365             :              { 
  190366             :                copy_list_element = NULL; 
  190367             :              } 
  190368           0 :           operands_copy.push_back(copy_list_element); 
  190369             :         } 
  190370           0 :      result->p_operands = operands_copy; 
  190371             :   // case: listType for operands
  190372             :   // case: listType (typeIsPointerToList == false) for operands
  190373           0 :      SgExpressionPtrList::const_iterator operands_iterator = result->get_operands().begin(); 
  190374           0 :      for ( /* empty by design */; operands_iterator != result->get_operands().end(); ++operands_iterator) 
  190375             :         { 
  190376           0 :           SgExpression* list_element = *operands_iterator; 
  190377           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  190378             :              { 
  190379           0 :                list_element->set_parent(result); 
  190380             :              } 
  190381             :         } 
  190382             :   // Copy non-constructor parameter data member (no access function): result->p_operators
  190383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operators
  190384             :   // case: toBeCopied == COPY_DATA for operators
  190385           0 :      VariantTList operators_copy = p_operators; 
  190386           0 :      result->p_operators = operators_copy; 
  190387             : 
  190388             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  190389             : 
  190390             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  190391             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  190392             :   // fixupCopy(result,help);
  190393             : 
  190394             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  190395             :   // the Sg_File_Info objects that are built for the new IR nodes.
  190396           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  190397           0 :      if (locatedNode != NULL)
  190398             :         {
  190399             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  190400           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  190401           0 :           ROSE_ASSERT(start != NULL);
  190402             : #if 0
  190403             :        // Debugging information
  190404             :           if (start->get_parent() == NULL)
  190405             :              {
  190406             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190407             :              }
  190408             : #endif
  190409           0 :           start->set_parent(locatedNode);
  190410           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  190411             : 
  190412           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  190413             : 
  190414             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  190415             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  190416             :        // ROSE_ASSERT(end != NULL);
  190417           0 :           if (end == NULL)
  190418             :              {
  190419           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  190420             :              }
  190421             :             else
  190422             :              {
  190423             : #if 0
  190424             :             // Debugging information
  190425             :                if (end->get_parent() == NULL)
  190426             :                   {
  190427             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190428             :                   }
  190429             : #endif
  190430           0 :                end->set_parent(locatedNode);
  190431           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  190432             :              }
  190433             : 
  190434           0 :           SgExpression* expression = isSgExpression(result);
  190435           0 :           if (isSgExpression(this) != NULL)
  190436             :              {
  190437           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  190438             : 
  190439             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  190440           0 :                if (operatorPosition != NULL)
  190441             :                   {
  190442             : #if 0
  190443             :                  // Debugging information
  190444             :                     if (operatorPosition->get_parent() == NULL)
  190445             :                        {
  190446             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190447             :                        }
  190448             : #endif
  190449           0 :                     operatorPosition->set_parent(expression);
  190450           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  190451             :                   }
  190452             :              }
  190453             :         }
  190454             : 
  190455             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  190456           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  190457           0 :      if (initializedName != NULL)
  190458             :         {
  190459             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  190460           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  190461           0 :           ROSE_ASSERT(start != NULL);
  190462             : #if 0
  190463             :        // Debugging information
  190464             :           if (start->get_parent() == NULL)
  190465             :              {
  190466             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190467             :              }
  190468             : #endif
  190469           0 :           start->set_parent(initializedName);
  190470           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  190471             : 
  190472             : #if 0
  190473             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  190474             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  190475             : 
  190476             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  190477             :        // ROSE_ASSERT(end != NULL);
  190478             :           if (end == NULL)
  190479             :              {
  190480             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  190481             :              }
  190482             :             else
  190483             :              {
  190484             :                if (end->get_parent() == NULL)
  190485             :                   {
  190486             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190487             :                   }
  190488             :                end->set_parent(initializedName);
  190489             :                ROSE_ASSERT(end->get_parent() != NULL);
  190490             :              }
  190491             : #endif
  190492             :         }
  190493             : 
  190494             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  190495           0 :      help.insertCopiedNodePair(this,result);
  190496             : 
  190497             :   // printf ("End of copy SgNaryOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  190498             : 
  190499             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  190500             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  190501           0 :      help.decrementDepth();
  190502             : 
  190503             :   // Test if this is the root of the copy!
  190504           0 :      if (help.get_depth() == 0)
  190505             :         {
  190506             :        // This is the original calling node.
  190507             : 
  190508             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  190509             :        // printf ("Calling SgNaryOp::fixupCopy() (from root of AST being copied) \n");
  190510             : #if ALT_FIXUP_COPY
  190511             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  190512           0 :           fixupCopy_scopes (result,help);
  190513           0 :           fixupCopy_symbols (result,help);
  190514           0 :           fixupCopy_references (result,help);
  190515             : #else
  190516             :           fixupCopy(result,help);
  190517             : #endif
  190518             :        // Allow this to be called recursively, so accumulate the state.
  190519             :        // Also, clear the state in the SgCopyHelp object.
  190520             :        // help.clearState();
  190521             :         }
  190522             : 
  190523           0 :      return result;
  190524             :    }
  190525             : 
  190526             : 
  190527             : /* #line 190528 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  190528             : 
  190529             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  190530             : 
  190531           0 : SgNode* SgNaryBooleanOp::copy ( SgCopyHelp& help) const
  190532             :    {
  190533           0 :      SgNaryBooleanOp* result = NULL;
  190534             : 
  190535             :   // printf ("Copy SgNaryBooleanOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  190536             : 
  190537             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  190538             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  190539             :   // The default value of the depth is 0, so after this call the depth is 1!
  190540           0 :      help.incrementDepth();
  190541             : 
  190542             : #if 0
  190543             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  190544             :   // but it is not generally true that things can only be copied once!
  190545             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  190546             :   // AstAttribute* existingAttribute = const_cast<SgNaryBooleanOp*>(this)->attribute["copied"];
  190547             :      bool previouslyCopied = const_cast<SgNaryBooleanOp*>(this)->attribute.exists("copied");
  190548             :      if (previouslyCopied == true)
  190549             :         {
  190550             :           this->get_file_info()->display("Called from copy SgNaryBooleanOp: debug");
  190551             :         }
  190552             :      ROSE_ASSERT(previouslyCopied == false);
  190553             : 
  190554             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  190555             :      AstAttribute* newAttribute = new AstAttribute();
  190556             :      ROSE_ASSERT(newAttribute != NULL);
  190557             : 
  190558             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  190559             :      const_cast<SgNaryBooleanOp*>(this)->attribute.add("copied",newAttribute);
  190560             : #endif
  190561             : 
  190562             :   // Copy data members from base classes
  190563             :   // Copy constructor parameter data member: startOfConstruct_copy
  190564             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  190565             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  190566           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  190567           0 :      if ( p_startOfConstruct != NULL ) 
  190568             :         { 
  190569           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  190570             :         } 
  190571             :        else 
  190572             :         { 
  190573             :           startOfConstruct_copy = NULL; 
  190574             :         } 
  190575             :  
  190576             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  190577             : 
  190578             :   // Build an empty copy of this object (will be filled in, but 
  190579             :   // the parent can't be set and must be set by the caller)
  190580           0 :      result = new SgNaryBooleanOp(  startOfConstruct_copy );
  190581           0 :      ROSE_ASSERT(result != NULL);
  190582             : 
  190583             :   // Copy data members of "this" class
  190584             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  190585             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  190586             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  190587           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  190588           0 :      if ( p_endOfConstruct != NULL ) 
  190589             :         { 
  190590           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  190591             :         } 
  190592             :        else 
  190593             :         { 
  190594             :           endOfConstruct_copy = NULL; 
  190595             :         } 
  190596             :   /* check for a valid pointer and delete if present */ 
  190597           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  190598             :   /* add assignment to result here */ 
  190599           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  190600             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  190601             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  190602             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  190603           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  190604           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  190605             :         { 
  190606           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  190607             :         } 
  190608             :        else 
  190609             :         { 
  190610             :           attachedPreprocessingInfoPtr_copy = NULL; 
  190611             :         } 
  190612             :   /* check for a valid pointer and delete if present */ 
  190613           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  190614             :   /* add assignment to result here */ 
  190615           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  190616             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  190617             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  190618             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  190619           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  190620           0 :      if ( p_attributeMechanism != NULL ) 
  190621             :         { 
  190622           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  190623             :         } 
  190624             :        else 
  190625             :         { 
  190626             :           attributeMechanism_copy = NULL; 
  190627             :         } 
  190628             :   /* check for a valid pointer and delete if present */ 
  190629           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  190630             :   /* add assignment to result here */ 
  190631           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  190632             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  190633             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  190634             :   // case: toBeCopied == COPY_DATA for need_paren
  190635           0 :      bool need_paren_copy = p_need_paren; 
  190636           0 :      result->p_need_paren = need_paren_copy; 
  190637             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  190638             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  190639             :   // case: toBeCopied == COPY_DATA for lvalue
  190640           0 :      bool lvalue_copy = p_lvalue; 
  190641           0 :      result->p_lvalue = lvalue_copy; 
  190642             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  190643             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  190644             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  190645           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  190646           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  190647             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  190648             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  190649             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  190650           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  190651           0 :      if ( p_operatorPosition != NULL ) 
  190652             :         { 
  190653           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  190654             :         } 
  190655             :        else 
  190656             :         { 
  190657             :           operatorPosition_copy = NULL; 
  190658             :         } 
  190659             :   /* check for a valid pointer and delete if present */ 
  190660           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  190661             :   /* add assignment to result here */ 
  190662           0 :      result->p_operatorPosition = operatorPosition_copy; 
  190663             :   // Copy non-constructor parameter data member (no access function): result->p_operands
  190664           0 :      SgExpressionPtrList operands_copy; 
  190665             :   // case: listType for operands
  190666             :   // case: listType (typeIsPointerToList == false) for operands
  190667           0 :      SgExpressionPtrList::const_iterator source_operands_iterator = get_operands().begin(); 
  190668           0 :      for ( /* empty by design */; source_operands_iterator != get_operands().end(); ++source_operands_iterator) 
  190669             :         { 
  190670           0 :           SgExpression* source_list_element = *source_operands_iterator; 
  190671           0 :           SgExpression* copy_list_element = NULL; 
  190672           0 :           if (source_list_element != NULL) 
  190673             :              { 
  190674           0 :                copy_list_element = static_cast<SgExpression*>(help.copyAst(*source_operands_iterator)); 
  190675             :              } 
  190676             :             else 
  190677             :              { 
  190678             :                copy_list_element = NULL; 
  190679             :              } 
  190680           0 :           operands_copy.push_back(copy_list_element); 
  190681             :         } 
  190682           0 :      result->p_operands = operands_copy; 
  190683             :   // case: listType for operands
  190684             :   // case: listType (typeIsPointerToList == false) for operands
  190685           0 :      SgExpressionPtrList::const_iterator operands_iterator = result->get_operands().begin(); 
  190686           0 :      for ( /* empty by design */; operands_iterator != result->get_operands().end(); ++operands_iterator) 
  190687             :         { 
  190688           0 :           SgExpression* list_element = *operands_iterator; 
  190689           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  190690             :              { 
  190691           0 :                list_element->set_parent(result); 
  190692             :              } 
  190693             :         } 
  190694             :   // Copy non-constructor parameter data member (no access function): result->p_operators
  190695             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operators
  190696             :   // case: toBeCopied == COPY_DATA for operators
  190697           0 :      VariantTList operators_copy = p_operators; 
  190698           0 :      result->p_operators = operators_copy; 
  190699             : 
  190700             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  190701             : 
  190702             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  190703             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  190704             :   // fixupCopy(result,help);
  190705             : 
  190706             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  190707             :   // the Sg_File_Info objects that are built for the new IR nodes.
  190708           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  190709           0 :      if (locatedNode != NULL)
  190710             :         {
  190711             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  190712           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  190713           0 :           ROSE_ASSERT(start != NULL);
  190714             : #if 0
  190715             :        // Debugging information
  190716             :           if (start->get_parent() == NULL)
  190717             :              {
  190718             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190719             :              }
  190720             : #endif
  190721           0 :           start->set_parent(locatedNode);
  190722           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  190723             : 
  190724           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  190725             : 
  190726             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  190727             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  190728             :        // ROSE_ASSERT(end != NULL);
  190729           0 :           if (end == NULL)
  190730             :              {
  190731           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  190732             :              }
  190733             :             else
  190734             :              {
  190735             : #if 0
  190736             :             // Debugging information
  190737             :                if (end->get_parent() == NULL)
  190738             :                   {
  190739             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190740             :                   }
  190741             : #endif
  190742           0 :                end->set_parent(locatedNode);
  190743           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  190744             :              }
  190745             : 
  190746           0 :           SgExpression* expression = isSgExpression(result);
  190747           0 :           if (isSgExpression(this) != NULL)
  190748             :              {
  190749           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  190750             : 
  190751             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  190752           0 :                if (operatorPosition != NULL)
  190753             :                   {
  190754             : #if 0
  190755             :                  // Debugging information
  190756             :                     if (operatorPosition->get_parent() == NULL)
  190757             :                        {
  190758             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190759             :                        }
  190760             : #endif
  190761           0 :                     operatorPosition->set_parent(expression);
  190762           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  190763             :                   }
  190764             :              }
  190765             :         }
  190766             : 
  190767             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  190768           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  190769           0 :      if (initializedName != NULL)
  190770             :         {
  190771             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  190772           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  190773           0 :           ROSE_ASSERT(start != NULL);
  190774             : #if 0
  190775             :        // Debugging information
  190776             :           if (start->get_parent() == NULL)
  190777             :              {
  190778             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190779             :              }
  190780             : #endif
  190781           0 :           start->set_parent(initializedName);
  190782           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  190783             : 
  190784             : #if 0
  190785             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  190786             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  190787             : 
  190788             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  190789             :        // ROSE_ASSERT(end != NULL);
  190790             :           if (end == NULL)
  190791             :              {
  190792             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  190793             :              }
  190794             :             else
  190795             :              {
  190796             :                if (end->get_parent() == NULL)
  190797             :                   {
  190798             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  190799             :                   }
  190800             :                end->set_parent(initializedName);
  190801             :                ROSE_ASSERT(end->get_parent() != NULL);
  190802             :              }
  190803             : #endif
  190804             :         }
  190805             : 
  190806             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  190807           0 :      help.insertCopiedNodePair(this,result);
  190808             : 
  190809             :   // printf ("End of copy SgNaryBooleanOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  190810             : 
  190811             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  190812             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  190813           0 :      help.decrementDepth();
  190814             : 
  190815             :   // Test if this is the root of the copy!
  190816           0 :      if (help.get_depth() == 0)
  190817             :         {
  190818             :        // This is the original calling node.
  190819             : 
  190820             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  190821             :        // printf ("Calling SgNaryBooleanOp::fixupCopy() (from root of AST being copied) \n");
  190822             : #if ALT_FIXUP_COPY
  190823             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  190824           0 :           fixupCopy_scopes (result,help);
  190825           0 :           fixupCopy_symbols (result,help);
  190826           0 :           fixupCopy_references (result,help);
  190827             : #else
  190828             :           fixupCopy(result,help);
  190829             : #endif
  190830             :        // Allow this to be called recursively, so accumulate the state.
  190831             :        // Also, clear the state in the SgCopyHelp object.
  190832             :        // help.clearState();
  190833             :         }
  190834             : 
  190835           0 :      return result;
  190836             :    }
  190837             : 
  190838             : 
  190839             : /* #line 190840 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  190840             : 
  190841             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  190842             : 
  190843           0 : SgNode* SgNaryComparisonOp::copy ( SgCopyHelp& help) const
  190844             :    {
  190845           0 :      SgNaryComparisonOp* result = NULL;
  190846             : 
  190847             :   // printf ("Copy SgNaryComparisonOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  190848             : 
  190849             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  190850             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  190851             :   // The default value of the depth is 0, so after this call the depth is 1!
  190852           0 :      help.incrementDepth();
  190853             : 
  190854             : #if 0
  190855             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  190856             :   // but it is not generally true that things can only be copied once!
  190857             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  190858             :   // AstAttribute* existingAttribute = const_cast<SgNaryComparisonOp*>(this)->attribute["copied"];
  190859             :      bool previouslyCopied = const_cast<SgNaryComparisonOp*>(this)->attribute.exists("copied");
  190860             :      if (previouslyCopied == true)
  190861             :         {
  190862             :           this->get_file_info()->display("Called from copy SgNaryComparisonOp: debug");
  190863             :         }
  190864             :      ROSE_ASSERT(previouslyCopied == false);
  190865             : 
  190866             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  190867             :      AstAttribute* newAttribute = new AstAttribute();
  190868             :      ROSE_ASSERT(newAttribute != NULL);
  190869             : 
  190870             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  190871             :      const_cast<SgNaryComparisonOp*>(this)->attribute.add("copied",newAttribute);
  190872             : #endif
  190873             : 
  190874             :   // Copy data members from base classes
  190875             :   // Copy constructor parameter data member: startOfConstruct_copy
  190876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  190877             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  190878           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  190879           0 :      if ( p_startOfConstruct != NULL ) 
  190880             :         { 
  190881           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  190882             :         } 
  190883             :        else 
  190884             :         { 
  190885             :           startOfConstruct_copy = NULL; 
  190886             :         } 
  190887             :  
  190888             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  190889             : 
  190890             :   // Build an empty copy of this object (will be filled in, but 
  190891             :   // the parent can't be set and must be set by the caller)
  190892           0 :      result = new SgNaryComparisonOp(  startOfConstruct_copy );
  190893           0 :      ROSE_ASSERT(result != NULL);
  190894             : 
  190895             :   // Copy data members of "this" class
  190896             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  190897             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  190898             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  190899           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  190900           0 :      if ( p_endOfConstruct != NULL ) 
  190901             :         { 
  190902           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  190903             :         } 
  190904             :        else 
  190905             :         { 
  190906             :           endOfConstruct_copy = NULL; 
  190907             :         } 
  190908             :   /* check for a valid pointer and delete if present */ 
  190909           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  190910             :   /* add assignment to result here */ 
  190911           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  190912             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  190913             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  190914             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  190915           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  190916           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  190917             :         { 
  190918           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  190919             :         } 
  190920             :        else 
  190921             :         { 
  190922             :           attachedPreprocessingInfoPtr_copy = NULL; 
  190923             :         } 
  190924             :   /* check for a valid pointer and delete if present */ 
  190925           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  190926             :   /* add assignment to result here */ 
  190927           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  190928             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  190929             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  190930             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  190931           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  190932           0 :      if ( p_attributeMechanism != NULL ) 
  190933             :         { 
  190934           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  190935             :         } 
  190936             :        else 
  190937             :         { 
  190938             :           attributeMechanism_copy = NULL; 
  190939             :         } 
  190940             :   /* check for a valid pointer and delete if present */ 
  190941           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  190942             :   /* add assignment to result here */ 
  190943           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  190944             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  190945             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  190946             :   // case: toBeCopied == COPY_DATA for need_paren
  190947           0 :      bool need_paren_copy = p_need_paren; 
  190948           0 :      result->p_need_paren = need_paren_copy; 
  190949             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  190950             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  190951             :   // case: toBeCopied == COPY_DATA for lvalue
  190952           0 :      bool lvalue_copy = p_lvalue; 
  190953           0 :      result->p_lvalue = lvalue_copy; 
  190954             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  190955             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  190956             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  190957           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  190958           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  190959             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  190960             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  190961             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  190962           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  190963           0 :      if ( p_operatorPosition != NULL ) 
  190964             :         { 
  190965           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  190966             :         } 
  190967             :        else 
  190968             :         { 
  190969             :           operatorPosition_copy = NULL; 
  190970             :         } 
  190971             :   /* check for a valid pointer and delete if present */ 
  190972           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  190973             :   /* add assignment to result here */ 
  190974           0 :      result->p_operatorPosition = operatorPosition_copy; 
  190975             :   // Copy non-constructor parameter data member (no access function): result->p_operands
  190976           0 :      SgExpressionPtrList operands_copy; 
  190977             :   // case: listType for operands
  190978             :   // case: listType (typeIsPointerToList == false) for operands
  190979           0 :      SgExpressionPtrList::const_iterator source_operands_iterator = get_operands().begin(); 
  190980           0 :      for ( /* empty by design */; source_operands_iterator != get_operands().end(); ++source_operands_iterator) 
  190981             :         { 
  190982           0 :           SgExpression* source_list_element = *source_operands_iterator; 
  190983           0 :           SgExpression* copy_list_element = NULL; 
  190984           0 :           if (source_list_element != NULL) 
  190985             :              { 
  190986           0 :                copy_list_element = static_cast<SgExpression*>(help.copyAst(*source_operands_iterator)); 
  190987             :              } 
  190988             :             else 
  190989             :              { 
  190990             :                copy_list_element = NULL; 
  190991             :              } 
  190992           0 :           operands_copy.push_back(copy_list_element); 
  190993             :         } 
  190994           0 :      result->p_operands = operands_copy; 
  190995             :   // case: listType for operands
  190996             :   // case: listType (typeIsPointerToList == false) for operands
  190997           0 :      SgExpressionPtrList::const_iterator operands_iterator = result->get_operands().begin(); 
  190998           0 :      for ( /* empty by design */; operands_iterator != result->get_operands().end(); ++operands_iterator) 
  190999             :         { 
  191000           0 :           SgExpression* list_element = *operands_iterator; 
  191001           0 :           if ( (list_element != NULL) && (list_element->get_parent() == NULL) && (isSgType(list_element) == NULL) ) 
  191002             :              { 
  191003           0 :                list_element->set_parent(result); 
  191004             :              } 
  191005             :         } 
  191006             :   // Copy non-constructor parameter data member (no access function): result->p_operators
  191007             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operators
  191008             :   // case: toBeCopied == COPY_DATA for operators
  191009           0 :      VariantTList operators_copy = p_operators; 
  191010           0 :      result->p_operators = operators_copy; 
  191011             : 
  191012             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191013             : 
  191014             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  191015             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  191016             :   // fixupCopy(result,help);
  191017             : 
  191018             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  191019             :   // the Sg_File_Info objects that are built for the new IR nodes.
  191020           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  191021           0 :      if (locatedNode != NULL)
  191022             :         {
  191023             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  191024           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  191025           0 :           ROSE_ASSERT(start != NULL);
  191026             : #if 0
  191027             :        // Debugging information
  191028             :           if (start->get_parent() == NULL)
  191029             :              {
  191030             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191031             :              }
  191032             : #endif
  191033           0 :           start->set_parent(locatedNode);
  191034           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  191035             : 
  191036           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  191037             : 
  191038             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  191039             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  191040             :        // ROSE_ASSERT(end != NULL);
  191041           0 :           if (end == NULL)
  191042             :              {
  191043           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  191044             :              }
  191045             :             else
  191046             :              {
  191047             : #if 0
  191048             :             // Debugging information
  191049             :                if (end->get_parent() == NULL)
  191050             :                   {
  191051             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191052             :                   }
  191053             : #endif
  191054           0 :                end->set_parent(locatedNode);
  191055           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  191056             :              }
  191057             : 
  191058           0 :           SgExpression* expression = isSgExpression(result);
  191059           0 :           if (isSgExpression(this) != NULL)
  191060             :              {
  191061           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  191062             : 
  191063             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  191064           0 :                if (operatorPosition != NULL)
  191065             :                   {
  191066             : #if 0
  191067             :                  // Debugging information
  191068             :                     if (operatorPosition->get_parent() == NULL)
  191069             :                        {
  191070             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191071             :                        }
  191072             : #endif
  191073           0 :                     operatorPosition->set_parent(expression);
  191074           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  191075             :                   }
  191076             :              }
  191077             :         }
  191078             : 
  191079             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  191080           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  191081           0 :      if (initializedName != NULL)
  191082             :         {
  191083             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  191084           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  191085           0 :           ROSE_ASSERT(start != NULL);
  191086             : #if 0
  191087             :        // Debugging information
  191088             :           if (start->get_parent() == NULL)
  191089             :              {
  191090             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191091             :              }
  191092             : #endif
  191093           0 :           start->set_parent(initializedName);
  191094           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  191095             : 
  191096             : #if 0
  191097             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  191098             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  191099             : 
  191100             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  191101             :        // ROSE_ASSERT(end != NULL);
  191102             :           if (end == NULL)
  191103             :              {
  191104             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  191105             :              }
  191106             :             else
  191107             :              {
  191108             :                if (end->get_parent() == NULL)
  191109             :                   {
  191110             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191111             :                   }
  191112             :                end->set_parent(initializedName);
  191113             :                ROSE_ASSERT(end->get_parent() != NULL);
  191114             :              }
  191115             : #endif
  191116             :         }
  191117             : 
  191118             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  191119           0 :      help.insertCopiedNodePair(this,result);
  191120             : 
  191121             :   // printf ("End of copy SgNaryComparisonOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  191122             : 
  191123             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  191124             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  191125           0 :      help.decrementDepth();
  191126             : 
  191127             :   // Test if this is the root of the copy!
  191128           0 :      if (help.get_depth() == 0)
  191129             :         {
  191130             :        // This is the original calling node.
  191131             : 
  191132             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  191133             :        // printf ("Calling SgNaryComparisonOp::fixupCopy() (from root of AST being copied) \n");
  191134             : #if ALT_FIXUP_COPY
  191135             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  191136           0 :           fixupCopy_scopes (result,help);
  191137           0 :           fixupCopy_symbols (result,help);
  191138           0 :           fixupCopy_references (result,help);
  191139             : #else
  191140             :           fixupCopy(result,help);
  191141             : #endif
  191142             :        // Allow this to be called recursively, so accumulate the state.
  191143             :        // Also, clear the state in the SgCopyHelp object.
  191144             :        // help.clearState();
  191145             :         }
  191146             : 
  191147           0 :      return result;
  191148             :    }
  191149             : 
  191150             : 
  191151             : /* #line 191152 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  191152             : 
  191153             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191154             : 
  191155           0 : SgNode* SgStringConversion::copy ( SgCopyHelp& help) const
  191156             :    {
  191157           0 :      SgStringConversion* result = NULL;
  191158             : 
  191159             :   // printf ("Copy SgStringConversion = %p = %s \n",this,SageInterface::get_name(this).c_str());
  191160             : 
  191161             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  191162             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  191163             :   // The default value of the depth is 0, so after this call the depth is 1!
  191164           0 :      help.incrementDepth();
  191165             : 
  191166             : #if 0
  191167             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  191168             :   // but it is not generally true that things can only be copied once!
  191169             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  191170             :   // AstAttribute* existingAttribute = const_cast<SgStringConversion*>(this)->attribute["copied"];
  191171             :      bool previouslyCopied = const_cast<SgStringConversion*>(this)->attribute.exists("copied");
  191172             :      if (previouslyCopied == true)
  191173             :         {
  191174             :           this->get_file_info()->display("Called from copy SgStringConversion: debug");
  191175             :         }
  191176             :      ROSE_ASSERT(previouslyCopied == false);
  191177             : 
  191178             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  191179             :      AstAttribute* newAttribute = new AstAttribute();
  191180             :      ROSE_ASSERT(newAttribute != NULL);
  191181             : 
  191182             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  191183             :      const_cast<SgStringConversion*>(this)->attribute.add("copied",newAttribute);
  191184             : #endif
  191185             : 
  191186             :   // Copy data members from base classes
  191187             :   // Copy constructor parameter data member: startOfConstruct_copy
  191188             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  191189             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  191190           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  191191           0 :      if ( p_startOfConstruct != NULL ) 
  191192             :         { 
  191193           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  191194             :         } 
  191195             :        else 
  191196             :         { 
  191197             :           startOfConstruct_copy = NULL; 
  191198             :         } 
  191199             :   // Copy constructor parameter data member: expression_copy
  191200           0 :      SgExpression* expression_copy; 
  191201             :   // case: not a listType for (using conditionalToCopyVariable)expression
  191202           0 :           if (get_expression() != NULL) 
  191203             :              { 
  191204           0 :                expression_copy = static_cast<SgExpression*>(help.copyAst(get_expression())); 
  191205             :              } 
  191206             :             else 
  191207             :              { 
  191208             :                expression_copy = NULL; 
  191209             :              } 
  191210             :  
  191211             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191212             : 
  191213             :   // Build an empty copy of this object (will be filled in, but 
  191214             :   // the parent can't be set and must be set by the caller)
  191215           0 :      result = new SgStringConversion(  startOfConstruct_copy, expression_copy );
  191216           0 :      ROSE_ASSERT(result != NULL);
  191217             : 
  191218             :   // Copy data members of "this" class
  191219             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  191220             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  191221             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  191222           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  191223           0 :      if ( p_endOfConstruct != NULL ) 
  191224             :         { 
  191225           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  191226             :         } 
  191227             :        else 
  191228             :         { 
  191229             :           endOfConstruct_copy = NULL; 
  191230             :         } 
  191231             :   /* check for a valid pointer and delete if present */ 
  191232           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  191233             :   /* add assignment to result here */ 
  191234           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  191235             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  191236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  191237             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  191238           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  191239           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  191240             :         { 
  191241           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  191242             :         } 
  191243             :        else 
  191244             :         { 
  191245             :           attachedPreprocessingInfoPtr_copy = NULL; 
  191246             :         } 
  191247             :   /* check for a valid pointer and delete if present */ 
  191248           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  191249             :   /* add assignment to result here */ 
  191250           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  191251             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  191252             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  191253             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  191254           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  191255           0 :      if ( p_attributeMechanism != NULL ) 
  191256             :         { 
  191257           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  191258             :         } 
  191259             :        else 
  191260             :         { 
  191261             :           attributeMechanism_copy = NULL; 
  191262             :         } 
  191263             :   /* check for a valid pointer and delete if present */ 
  191264           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  191265             :   /* add assignment to result here */ 
  191266           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  191267             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  191268             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  191269             :   // case: toBeCopied == COPY_DATA for need_paren
  191270           0 :      bool need_paren_copy = p_need_paren; 
  191271           0 :      result->p_need_paren = need_paren_copy; 
  191272             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  191273             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  191274             :   // case: toBeCopied == COPY_DATA for lvalue
  191275           0 :      bool lvalue_copy = p_lvalue; 
  191276           0 :      result->p_lvalue = lvalue_copy; 
  191277             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  191278             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  191279             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  191280           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  191281           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  191282             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  191283             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  191284             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  191285           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  191286           0 :      if ( p_operatorPosition != NULL ) 
  191287             :         { 
  191288           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  191289             :         } 
  191290             :        else 
  191291             :         { 
  191292             :           operatorPosition_copy = NULL; 
  191293             :         } 
  191294             :   /* check for a valid pointer and delete if present */ 
  191295           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  191296             :   /* add assignment to result here */ 
  191297           0 :      result->p_operatorPosition = operatorPosition_copy; 
  191298             :   // case: not a listType for (using conditionalToSetParent)expression
  191299           0 :           if ( (expression_copy != NULL) && (expression_copy->get_parent() == NULL) && (isSgType(expression_copy) == NULL) ) 
  191300             :              { 
  191301           0 :                expression_copy->set_parent(result); 
  191302             :              } 
  191303             : 
  191304             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191305             : 
  191306             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  191307             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  191308             :   // fixupCopy(result,help);
  191309             : 
  191310             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  191311             :   // the Sg_File_Info objects that are built for the new IR nodes.
  191312           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  191313           0 :      if (locatedNode != NULL)
  191314             :         {
  191315             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  191316           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  191317           0 :           ROSE_ASSERT(start != NULL);
  191318             : #if 0
  191319             :        // Debugging information
  191320             :           if (start->get_parent() == NULL)
  191321             :              {
  191322             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191323             :              }
  191324             : #endif
  191325           0 :           start->set_parent(locatedNode);
  191326           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  191327             : 
  191328           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  191329             : 
  191330             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  191331             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  191332             :        // ROSE_ASSERT(end != NULL);
  191333           0 :           if (end == NULL)
  191334             :              {
  191335           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  191336             :              }
  191337             :             else
  191338             :              {
  191339             : #if 0
  191340             :             // Debugging information
  191341             :                if (end->get_parent() == NULL)
  191342             :                   {
  191343             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191344             :                   }
  191345             : #endif
  191346           0 :                end->set_parent(locatedNode);
  191347           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  191348             :              }
  191349             : 
  191350           0 :           SgExpression* expression = isSgExpression(result);
  191351           0 :           if (isSgExpression(this) != NULL)
  191352             :              {
  191353           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  191354             : 
  191355             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  191356           0 :                if (operatorPosition != NULL)
  191357             :                   {
  191358             : #if 0
  191359             :                  // Debugging information
  191360             :                     if (operatorPosition->get_parent() == NULL)
  191361             :                        {
  191362             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191363             :                        }
  191364             : #endif
  191365           0 :                     operatorPosition->set_parent(expression);
  191366           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  191367             :                   }
  191368             :              }
  191369             :         }
  191370             : 
  191371             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  191372           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  191373           0 :      if (initializedName != NULL)
  191374             :         {
  191375             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  191376           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  191377           0 :           ROSE_ASSERT(start != NULL);
  191378             : #if 0
  191379             :        // Debugging information
  191380             :           if (start->get_parent() == NULL)
  191381             :              {
  191382             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191383             :              }
  191384             : #endif
  191385           0 :           start->set_parent(initializedName);
  191386           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  191387             : 
  191388             : #if 0
  191389             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  191390             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  191391             : 
  191392             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  191393             :        // ROSE_ASSERT(end != NULL);
  191394             :           if (end == NULL)
  191395             :              {
  191396             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  191397             :              }
  191398             :             else
  191399             :              {
  191400             :                if (end->get_parent() == NULL)
  191401             :                   {
  191402             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191403             :                   }
  191404             :                end->set_parent(initializedName);
  191405             :                ROSE_ASSERT(end->get_parent() != NULL);
  191406             :              }
  191407             : #endif
  191408             :         }
  191409             : 
  191410             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  191411           0 :      help.insertCopiedNodePair(this,result);
  191412             : 
  191413             :   // printf ("End of copy SgStringConversion = %p = %s \n",this,SageInterface::get_name(this).c_str());
  191414             : 
  191415             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  191416             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  191417           0 :      help.decrementDepth();
  191418             : 
  191419             :   // Test if this is the root of the copy!
  191420           0 :      if (help.get_depth() == 0)
  191421             :         {
  191422             :        // This is the original calling node.
  191423             : 
  191424             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  191425             :        // printf ("Calling SgStringConversion::fixupCopy() (from root of AST being copied) \n");
  191426             : #if ALT_FIXUP_COPY
  191427             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  191428           0 :           fixupCopy_scopes (result,help);
  191429           0 :           fixupCopy_symbols (result,help);
  191430           0 :           fixupCopy_references (result,help);
  191431             : #else
  191432             :           fixupCopy(result,help);
  191433             : #endif
  191434             :        // Allow this to be called recursively, so accumulate the state.
  191435             :        // Also, clear the state in the SgCopyHelp object.
  191436             :        // help.clearState();
  191437             :         }
  191438             : 
  191439           0 :      return result;
  191440             :    }
  191441             : 
  191442             : 
  191443             : /* #line 191444 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  191444             : 
  191445             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191446             : 
  191447           0 : SgNode* SgYieldExpression::copy ( SgCopyHelp& help) const
  191448             :    {
  191449           0 :      SgYieldExpression* result = NULL;
  191450             : 
  191451             :   // printf ("Copy SgYieldExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  191452             : 
  191453             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  191454             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  191455             :   // The default value of the depth is 0, so after this call the depth is 1!
  191456           0 :      help.incrementDepth();
  191457             : 
  191458             : #if 0
  191459             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  191460             :   // but it is not generally true that things can only be copied once!
  191461             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  191462             :   // AstAttribute* existingAttribute = const_cast<SgYieldExpression*>(this)->attribute["copied"];
  191463             :      bool previouslyCopied = const_cast<SgYieldExpression*>(this)->attribute.exists("copied");
  191464             :      if (previouslyCopied == true)
  191465             :         {
  191466             :           this->get_file_info()->display("Called from copy SgYieldExpression: debug");
  191467             :         }
  191468             :      ROSE_ASSERT(previouslyCopied == false);
  191469             : 
  191470             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  191471             :      AstAttribute* newAttribute = new AstAttribute();
  191472             :      ROSE_ASSERT(newAttribute != NULL);
  191473             : 
  191474             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  191475             :      const_cast<SgYieldExpression*>(this)->attribute.add("copied",newAttribute);
  191476             : #endif
  191477             : 
  191478             :   // Copy data members from base classes
  191479             :   // Copy constructor parameter data member: startOfConstruct_copy
  191480             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  191481             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  191482           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  191483           0 :      if ( p_startOfConstruct != NULL ) 
  191484             :         { 
  191485           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  191486             :         } 
  191487             :        else 
  191488             :         { 
  191489             :           startOfConstruct_copy = NULL; 
  191490             :         } 
  191491             :   // Copy constructor parameter data member: value_copy
  191492           0 :      SgExpression* value_copy; 
  191493             :   // case: not a listType for (using conditionalToCopyVariable)value
  191494           0 :           if (get_value() != NULL) 
  191495             :              { 
  191496           0 :                value_copy = static_cast<SgExpression*>(help.copyAst(get_value())); 
  191497             :              } 
  191498             :             else 
  191499             :              { 
  191500             :                value_copy = NULL; 
  191501             :              } 
  191502             :  
  191503             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191504             : 
  191505             :   // Build an empty copy of this object (will be filled in, but 
  191506             :   // the parent can't be set and must be set by the caller)
  191507           0 :      result = new SgYieldExpression(  startOfConstruct_copy, value_copy );
  191508           0 :      ROSE_ASSERT(result != NULL);
  191509             : 
  191510             :   // Copy data members of "this" class
  191511             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  191512             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  191513             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  191514           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  191515           0 :      if ( p_endOfConstruct != NULL ) 
  191516             :         { 
  191517           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  191518             :         } 
  191519             :        else 
  191520             :         { 
  191521             :           endOfConstruct_copy = NULL; 
  191522             :         } 
  191523             :   /* check for a valid pointer and delete if present */ 
  191524           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  191525             :   /* add assignment to result here */ 
  191526           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  191527             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  191528             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  191529             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  191530           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  191531           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  191532             :         { 
  191533           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  191534             :         } 
  191535             :        else 
  191536             :         { 
  191537             :           attachedPreprocessingInfoPtr_copy = NULL; 
  191538             :         } 
  191539             :   /* check for a valid pointer and delete if present */ 
  191540           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  191541             :   /* add assignment to result here */ 
  191542           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  191543             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  191544             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  191545             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  191546           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  191547           0 :      if ( p_attributeMechanism != NULL ) 
  191548             :         { 
  191549           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  191550             :         } 
  191551             :        else 
  191552             :         { 
  191553             :           attributeMechanism_copy = NULL; 
  191554             :         } 
  191555             :   /* check for a valid pointer and delete if present */ 
  191556           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  191557             :   /* add assignment to result here */ 
  191558           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  191559             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  191560             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  191561             :   // case: toBeCopied == COPY_DATA for need_paren
  191562           0 :      bool need_paren_copy = p_need_paren; 
  191563           0 :      result->p_need_paren = need_paren_copy; 
  191564             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  191565             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  191566             :   // case: toBeCopied == COPY_DATA for lvalue
  191567           0 :      bool lvalue_copy = p_lvalue; 
  191568           0 :      result->p_lvalue = lvalue_copy; 
  191569             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  191570             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  191571             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  191572           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  191573           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  191574             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  191575             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  191576             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  191577           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  191578           0 :      if ( p_operatorPosition != NULL ) 
  191579             :         { 
  191580           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  191581             :         } 
  191582             :        else 
  191583             :         { 
  191584             :           operatorPosition_copy = NULL; 
  191585             :         } 
  191586             :   /* check for a valid pointer and delete if present */ 
  191587           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  191588             :   /* add assignment to result here */ 
  191589           0 :      result->p_operatorPosition = operatorPosition_copy; 
  191590             :   // case: not a listType for (using conditionalToSetParent)value
  191591           0 :           if ( (value_copy != NULL) && (value_copy->get_parent() == NULL) && (isSgType(value_copy) == NULL) ) 
  191592             :              { 
  191593           0 :                value_copy->set_parent(result); 
  191594             :              } 
  191595             : 
  191596             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191597             : 
  191598             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  191599             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  191600             :   // fixupCopy(result,help);
  191601             : 
  191602             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  191603             :   // the Sg_File_Info objects that are built for the new IR nodes.
  191604           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  191605           0 :      if (locatedNode != NULL)
  191606             :         {
  191607             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  191608           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  191609           0 :           ROSE_ASSERT(start != NULL);
  191610             : #if 0
  191611             :        // Debugging information
  191612             :           if (start->get_parent() == NULL)
  191613             :              {
  191614             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191615             :              }
  191616             : #endif
  191617           0 :           start->set_parent(locatedNode);
  191618           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  191619             : 
  191620           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  191621             : 
  191622             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  191623             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  191624             :        // ROSE_ASSERT(end != NULL);
  191625           0 :           if (end == NULL)
  191626             :              {
  191627           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  191628             :              }
  191629             :             else
  191630             :              {
  191631             : #if 0
  191632             :             // Debugging information
  191633             :                if (end->get_parent() == NULL)
  191634             :                   {
  191635             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191636             :                   }
  191637             : #endif
  191638           0 :                end->set_parent(locatedNode);
  191639           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  191640             :              }
  191641             : 
  191642           0 :           SgExpression* expression = isSgExpression(result);
  191643           0 :           if (isSgExpression(this) != NULL)
  191644             :              {
  191645           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  191646             : 
  191647             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  191648           0 :                if (operatorPosition != NULL)
  191649             :                   {
  191650             : #if 0
  191651             :                  // Debugging information
  191652             :                     if (operatorPosition->get_parent() == NULL)
  191653             :                        {
  191654             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191655             :                        }
  191656             : #endif
  191657           0 :                     operatorPosition->set_parent(expression);
  191658           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  191659             :                   }
  191660             :              }
  191661             :         }
  191662             : 
  191663             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  191664           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  191665           0 :      if (initializedName != NULL)
  191666             :         {
  191667             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  191668           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  191669           0 :           ROSE_ASSERT(start != NULL);
  191670             : #if 0
  191671             :        // Debugging information
  191672             :           if (start->get_parent() == NULL)
  191673             :              {
  191674             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191675             :              }
  191676             : #endif
  191677           0 :           start->set_parent(initializedName);
  191678           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  191679             : 
  191680             : #if 0
  191681             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  191682             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  191683             : 
  191684             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  191685             :        // ROSE_ASSERT(end != NULL);
  191686             :           if (end == NULL)
  191687             :              {
  191688             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  191689             :              }
  191690             :             else
  191691             :              {
  191692             :                if (end->get_parent() == NULL)
  191693             :                   {
  191694             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191695             :                   }
  191696             :                end->set_parent(initializedName);
  191697             :                ROSE_ASSERT(end->get_parent() != NULL);
  191698             :              }
  191699             : #endif
  191700             :         }
  191701             : 
  191702             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  191703           0 :      help.insertCopiedNodePair(this,result);
  191704             : 
  191705             :   // printf ("End of copy SgYieldExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  191706             : 
  191707             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  191708             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  191709           0 :      help.decrementDepth();
  191710             : 
  191711             :   // Test if this is the root of the copy!
  191712           0 :      if (help.get_depth() == 0)
  191713             :         {
  191714             :        // This is the original calling node.
  191715             : 
  191716             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  191717             :        // printf ("Calling SgYieldExpression::fixupCopy() (from root of AST being copied) \n");
  191718             : #if ALT_FIXUP_COPY
  191719             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  191720           0 :           fixupCopy_scopes (result,help);
  191721           0 :           fixupCopy_symbols (result,help);
  191722           0 :           fixupCopy_references (result,help);
  191723             : #else
  191724             :           fixupCopy(result,help);
  191725             : #endif
  191726             :        // Allow this to be called recursively, so accumulate the state.
  191727             :        // Also, clear the state in the SgCopyHelp object.
  191728             :        // help.clearState();
  191729             :         }
  191730             : 
  191731           0 :      return result;
  191732             :    }
  191733             : 
  191734             : 
  191735             : /* #line 191736 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  191736             : 
  191737             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191738             : 
  191739           6 : SgNode* SgTemplateFunctionRefExp::copy ( SgCopyHelp& help) const
  191740             :    {
  191741           6 :      SgTemplateFunctionRefExp* result = NULL;
  191742             : 
  191743             :   // printf ("Copy SgTemplateFunctionRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  191744             : 
  191745             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  191746             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  191747             :   // The default value of the depth is 0, so after this call the depth is 1!
  191748           6 :      help.incrementDepth();
  191749             : 
  191750             : #if 0
  191751             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  191752             :   // but it is not generally true that things can only be copied once!
  191753             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  191754             :   // AstAttribute* existingAttribute = const_cast<SgTemplateFunctionRefExp*>(this)->attribute["copied"];
  191755             :      bool previouslyCopied = const_cast<SgTemplateFunctionRefExp*>(this)->attribute.exists("copied");
  191756             :      if (previouslyCopied == true)
  191757             :         {
  191758             :           this->get_file_info()->display("Called from copy SgTemplateFunctionRefExp: debug");
  191759             :         }
  191760             :      ROSE_ASSERT(previouslyCopied == false);
  191761             : 
  191762             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  191763             :      AstAttribute* newAttribute = new AstAttribute();
  191764             :      ROSE_ASSERT(newAttribute != NULL);
  191765             : 
  191766             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  191767             :      const_cast<SgTemplateFunctionRefExp*>(this)->attribute.add("copied",newAttribute);
  191768             : #endif
  191769             : 
  191770             :   // Copy data members from base classes
  191771             :   // Copy constructor parameter data member: startOfConstruct_copy
  191772             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  191773             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  191774           6 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  191775           6 :      if ( p_startOfConstruct != NULL ) 
  191776             :         { 
  191777           6 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  191778             :         } 
  191779             :        else 
  191780             :         { 
  191781             :           startOfConstruct_copy = NULL; 
  191782             :         } 
  191783             :   // Copy constructor parameter data member: symbol_i_copy
  191784             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol_i
  191785             :   // case: toBeCopied == COPY_DATA for symbol_i
  191786           6 :      SgTemplateFunctionSymbol* symbol_i_copy = p_symbol_i; 
  191787             :  
  191788             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191789             : 
  191790             :   // Build an empty copy of this object (will be filled in, but 
  191791             :   // the parent can't be set and must be set by the caller)
  191792           6 :      result = new SgTemplateFunctionRefExp(  startOfConstruct_copy, symbol_i_copy );
  191793           6 :      ROSE_ASSERT(result != NULL);
  191794             : 
  191795             :   // Copy data members of "this" class
  191796             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  191797             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  191798             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  191799           6 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  191800           6 :      if ( p_endOfConstruct != NULL ) 
  191801             :         { 
  191802           6 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  191803             :         } 
  191804             :        else 
  191805             :         { 
  191806             :           endOfConstruct_copy = NULL; 
  191807             :         } 
  191808             :   /* check for a valid pointer and delete if present */ 
  191809           6 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  191810             :   /* add assignment to result here */ 
  191811           6 :      result->p_endOfConstruct = endOfConstruct_copy; 
  191812             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  191813             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  191814             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  191815           6 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  191816           6 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  191817             :         { 
  191818           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  191819             :         } 
  191820             :        else 
  191821             :         { 
  191822             :           attachedPreprocessingInfoPtr_copy = NULL; 
  191823             :         } 
  191824             :   /* check for a valid pointer and delete if present */ 
  191825           6 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  191826             :   /* add assignment to result here */ 
  191827           6 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  191828             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  191829             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  191830             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  191831           6 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  191832           6 :      if ( p_attributeMechanism != NULL ) 
  191833             :         { 
  191834           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  191835             :         } 
  191836             :        else 
  191837             :         { 
  191838             :           attributeMechanism_copy = NULL; 
  191839             :         } 
  191840             :   /* check for a valid pointer and delete if present */ 
  191841           6 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  191842             :   /* add assignment to result here */ 
  191843           6 :      result->p_attributeMechanism = attributeMechanism_copy; 
  191844             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  191845             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  191846             :   // case: toBeCopied == COPY_DATA for need_paren
  191847           6 :      bool need_paren_copy = p_need_paren; 
  191848           6 :      result->p_need_paren = need_paren_copy; 
  191849             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  191850             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  191851             :   // case: toBeCopied == COPY_DATA for lvalue
  191852           6 :      bool lvalue_copy = p_lvalue; 
  191853           6 :      result->p_lvalue = lvalue_copy; 
  191854             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  191855             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  191856             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  191857           6 :      bool global_qualified_name_copy = p_global_qualified_name; 
  191858           6 :      result->p_global_qualified_name = global_qualified_name_copy; 
  191859             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  191860             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  191861             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  191862           6 :      Sg_File_Info* operatorPosition_copy = NULL; 
  191863           6 :      if ( p_operatorPosition != NULL ) 
  191864             :         { 
  191865           6 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  191866             :         } 
  191867             :        else 
  191868             :         { 
  191869             :           operatorPosition_copy = NULL; 
  191870             :         } 
  191871             :   /* check for a valid pointer and delete if present */ 
  191872           6 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  191873             :   /* add assignment to result here */ 
  191874           6 :      result->p_operatorPosition = operatorPosition_copy; 
  191875             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  191876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  191877             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  191878           6 :      int name_qualification_length_copy = p_name_qualification_length; 
  191879           6 :      result->p_name_qualification_length = name_qualification_length_copy; 
  191880             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  191881             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  191882             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  191883           6 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  191884           6 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  191885             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  191886             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  191887             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  191888           6 :      bool global_qualification_required_copy = p_global_qualification_required; 
  191889           6 :      result->p_global_qualification_required = global_qualification_required_copy; 
  191890             : 
  191891             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  191892             : 
  191893             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  191894             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  191895             :   // fixupCopy(result,help);
  191896             : 
  191897             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  191898             :   // the Sg_File_Info objects that are built for the new IR nodes.
  191899           6 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  191900           6 :      if (locatedNode != NULL)
  191901             :         {
  191902             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  191903           6 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  191904           6 :           ROSE_ASSERT(start != NULL);
  191905             : #if 0
  191906             :        // Debugging information
  191907             :           if (start->get_parent() == NULL)
  191908             :              {
  191909             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191910             :              }
  191911             : #endif
  191912           6 :           start->set_parent(locatedNode);
  191913           6 :           ROSE_ASSERT(start->get_parent() != NULL);
  191914             : 
  191915           6 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  191916             : 
  191917             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  191918             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  191919             :        // ROSE_ASSERT(end != NULL);
  191920           6 :           if (end == NULL)
  191921             :              {
  191922           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  191923             :              }
  191924             :             else
  191925             :              {
  191926             : #if 0
  191927             :             // Debugging information
  191928             :                if (end->get_parent() == NULL)
  191929             :                   {
  191930             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191931             :                   }
  191932             : #endif
  191933           6 :                end->set_parent(locatedNode);
  191934           6 :                ROSE_ASSERT(end->get_parent() != NULL);
  191935             :              }
  191936             : 
  191937           6 :           SgExpression* expression = isSgExpression(result);
  191938           6 :           if (isSgExpression(this) != NULL)
  191939             :              {
  191940           6 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  191941             : 
  191942             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  191943           6 :                if (operatorPosition != NULL)
  191944             :                   {
  191945             : #if 0
  191946             :                  // Debugging information
  191947             :                     if (operatorPosition->get_parent() == NULL)
  191948             :                        {
  191949             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191950             :                        }
  191951             : #endif
  191952           6 :                     operatorPosition->set_parent(expression);
  191953           6 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  191954             :                   }
  191955             :              }
  191956             :         }
  191957             : 
  191958             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  191959           6 :      SgInitializedName* initializedName = isSgInitializedName(result);
  191960           6 :      if (initializedName != NULL)
  191961             :         {
  191962             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  191963           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  191964           0 :           ROSE_ASSERT(start != NULL);
  191965             : #if 0
  191966             :        // Debugging information
  191967             :           if (start->get_parent() == NULL)
  191968             :              {
  191969             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191970             :              }
  191971             : #endif
  191972           0 :           start->set_parent(initializedName);
  191973           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  191974             : 
  191975             : #if 0
  191976             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  191977             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  191978             : 
  191979             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  191980             :        // ROSE_ASSERT(end != NULL);
  191981             :           if (end == NULL)
  191982             :              {
  191983             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  191984             :              }
  191985             :             else
  191986             :              {
  191987             :                if (end->get_parent() == NULL)
  191988             :                   {
  191989             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  191990             :                   }
  191991             :                end->set_parent(initializedName);
  191992             :                ROSE_ASSERT(end->get_parent() != NULL);
  191993             :              }
  191994             : #endif
  191995             :         }
  191996             : 
  191997             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  191998           6 :      help.insertCopiedNodePair(this,result);
  191999             : 
  192000             :   // printf ("End of copy SgTemplateFunctionRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  192001             : 
  192002             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  192003             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  192004           6 :      help.decrementDepth();
  192005             : 
  192006             :   // Test if this is the root of the copy!
  192007           6 :      if (help.get_depth() == 0)
  192008             :         {
  192009             :        // This is the original calling node.
  192010             : 
  192011             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  192012             :        // printf ("Calling SgTemplateFunctionRefExp::fixupCopy() (from root of AST being copied) \n");
  192013             : #if ALT_FIXUP_COPY
  192014             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  192015           0 :           fixupCopy_scopes (result,help);
  192016           0 :           fixupCopy_symbols (result,help);
  192017           0 :           fixupCopy_references (result,help);
  192018             : #else
  192019             :           fixupCopy(result,help);
  192020             : #endif
  192021             :        // Allow this to be called recursively, so accumulate the state.
  192022             :        // Also, clear the state in the SgCopyHelp object.
  192023             :        // help.clearState();
  192024             :         }
  192025             : 
  192026           6 :      return result;
  192027             :    }
  192028             : 
  192029             : 
  192030             : /* #line 192031 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  192031             : 
  192032             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192033             : 
  192034         226 : SgNode* SgTemplateMemberFunctionRefExp::copy ( SgCopyHelp& help) const
  192035             :    {
  192036         226 :      SgTemplateMemberFunctionRefExp* result = NULL;
  192037             : 
  192038             :   // printf ("Copy SgTemplateMemberFunctionRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  192039             : 
  192040             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  192041             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  192042             :   // The default value of the depth is 0, so after this call the depth is 1!
  192043         226 :      help.incrementDepth();
  192044             : 
  192045             : #if 0
  192046             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  192047             :   // but it is not generally true that things can only be copied once!
  192048             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  192049             :   // AstAttribute* existingAttribute = const_cast<SgTemplateMemberFunctionRefExp*>(this)->attribute["copied"];
  192050             :      bool previouslyCopied = const_cast<SgTemplateMemberFunctionRefExp*>(this)->attribute.exists("copied");
  192051             :      if (previouslyCopied == true)
  192052             :         {
  192053             :           this->get_file_info()->display("Called from copy SgTemplateMemberFunctionRefExp: debug");
  192054             :         }
  192055             :      ROSE_ASSERT(previouslyCopied == false);
  192056             : 
  192057             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  192058             :      AstAttribute* newAttribute = new AstAttribute();
  192059             :      ROSE_ASSERT(newAttribute != NULL);
  192060             : 
  192061             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  192062             :      const_cast<SgTemplateMemberFunctionRefExp*>(this)->attribute.add("copied",newAttribute);
  192063             : #endif
  192064             : 
  192065             :   // Copy data members from base classes
  192066             :   // Copy constructor parameter data member: startOfConstruct_copy
  192067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  192068             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  192069         226 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  192070         226 :      if ( p_startOfConstruct != NULL ) 
  192071             :         { 
  192072         226 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  192073             :         } 
  192074             :        else 
  192075             :         { 
  192076             :           startOfConstruct_copy = NULL; 
  192077             :         } 
  192078             :   // Copy constructor parameter data member: symbol_i_copy
  192079             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol_i
  192080             :   // case: toBeCopied == COPY_DATA for symbol_i
  192081         226 :      SgTemplateMemberFunctionSymbol* symbol_i_copy = p_symbol_i; 
  192082             :   // Copy constructor parameter data member: virtual_call_copy
  192083             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for virtual_call
  192084             :   // case: toBeCopied == COPY_DATA for virtual_call
  192085         226 :      int virtual_call_copy = p_virtual_call; 
  192086             :   // Copy constructor parameter data member: need_qualifier_copy
  192087             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_qualifier
  192088             :   // case: toBeCopied == COPY_DATA for need_qualifier
  192089         226 :      int need_qualifier_copy = p_need_qualifier; 
  192090             :  
  192091             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192092             : 
  192093             :   // Build an empty copy of this object (will be filled in, but 
  192094             :   // the parent can't be set and must be set by the caller)
  192095         226 :      result = new SgTemplateMemberFunctionRefExp(  startOfConstruct_copy, symbol_i_copy, virtual_call_copy, need_qualifier_copy );
  192096         226 :      ROSE_ASSERT(result != NULL);
  192097             : 
  192098             :   // Copy data members of "this" class
  192099             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  192100             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  192101             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  192102         226 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  192103         226 :      if ( p_endOfConstruct != NULL ) 
  192104             :         { 
  192105         226 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  192106             :         } 
  192107             :        else 
  192108             :         { 
  192109             :           endOfConstruct_copy = NULL; 
  192110             :         } 
  192111             :   /* check for a valid pointer and delete if present */ 
  192112         226 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  192113             :   /* add assignment to result here */ 
  192114         226 :      result->p_endOfConstruct = endOfConstruct_copy; 
  192115             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  192116             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  192117             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  192118         226 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  192119         226 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  192120             :         { 
  192121           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  192122             :         } 
  192123             :        else 
  192124             :         { 
  192125             :           attachedPreprocessingInfoPtr_copy = NULL; 
  192126             :         } 
  192127             :   /* check for a valid pointer and delete if present */ 
  192128         226 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  192129             :   /* add assignment to result here */ 
  192130         226 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  192131             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  192132             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  192133             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  192134         226 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  192135         226 :      if ( p_attributeMechanism != NULL ) 
  192136             :         { 
  192137           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  192138             :         } 
  192139             :        else 
  192140             :         { 
  192141             :           attributeMechanism_copy = NULL; 
  192142             :         } 
  192143             :   /* check for a valid pointer and delete if present */ 
  192144         226 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  192145             :   /* add assignment to result here */ 
  192146         226 :      result->p_attributeMechanism = attributeMechanism_copy; 
  192147             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  192148             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  192149             :   // case: toBeCopied == COPY_DATA for need_paren
  192150         226 :      bool need_paren_copy = p_need_paren; 
  192151         226 :      result->p_need_paren = need_paren_copy; 
  192152             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  192153             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  192154             :   // case: toBeCopied == COPY_DATA for lvalue
  192155         226 :      bool lvalue_copy = p_lvalue; 
  192156         226 :      result->p_lvalue = lvalue_copy; 
  192157             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  192158             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  192159             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  192160         226 :      bool global_qualified_name_copy = p_global_qualified_name; 
  192161         226 :      result->p_global_qualified_name = global_qualified_name_copy; 
  192162             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  192163             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  192164             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  192165         226 :      Sg_File_Info* operatorPosition_copy = NULL; 
  192166         226 :      if ( p_operatorPosition != NULL ) 
  192167             :         { 
  192168         226 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  192169             :         } 
  192170             :        else 
  192171             :         { 
  192172             :           operatorPosition_copy = NULL; 
  192173             :         } 
  192174             :   /* check for a valid pointer and delete if present */ 
  192175         226 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  192176             :   /* add assignment to result here */ 
  192177         226 :      result->p_operatorPosition = operatorPosition_copy; 
  192178             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  192179             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  192180             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  192181         226 :      int name_qualification_length_copy = p_name_qualification_length; 
  192182         226 :      result->p_name_qualification_length = name_qualification_length_copy; 
  192183             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  192184             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  192185             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  192186         226 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  192187         226 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  192188             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  192189             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  192190             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  192191         226 :      bool global_qualification_required_copy = p_global_qualification_required; 
  192192         226 :      result->p_global_qualification_required = global_qualification_required_copy; 
  192193             : 
  192194             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192195             : 
  192196             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  192197             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  192198             :   // fixupCopy(result,help);
  192199             : 
  192200             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  192201             :   // the Sg_File_Info objects that are built for the new IR nodes.
  192202         226 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  192203         226 :      if (locatedNode != NULL)
  192204             :         {
  192205             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  192206         226 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  192207         226 :           ROSE_ASSERT(start != NULL);
  192208             : #if 0
  192209             :        // Debugging information
  192210             :           if (start->get_parent() == NULL)
  192211             :              {
  192212             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192213             :              }
  192214             : #endif
  192215         226 :           start->set_parent(locatedNode);
  192216         226 :           ROSE_ASSERT(start->get_parent() != NULL);
  192217             : 
  192218         226 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  192219             : 
  192220             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  192221             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  192222             :        // ROSE_ASSERT(end != NULL);
  192223         226 :           if (end == NULL)
  192224             :              {
  192225           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  192226             :              }
  192227             :             else
  192228             :              {
  192229             : #if 0
  192230             :             // Debugging information
  192231             :                if (end->get_parent() == NULL)
  192232             :                   {
  192233             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192234             :                   }
  192235             : #endif
  192236         226 :                end->set_parent(locatedNode);
  192237         226 :                ROSE_ASSERT(end->get_parent() != NULL);
  192238             :              }
  192239             : 
  192240         226 :           SgExpression* expression = isSgExpression(result);
  192241         226 :           if (isSgExpression(this) != NULL)
  192242             :              {
  192243         226 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  192244             : 
  192245             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  192246         226 :                if (operatorPosition != NULL)
  192247             :                   {
  192248             : #if 0
  192249             :                  // Debugging information
  192250             :                     if (operatorPosition->get_parent() == NULL)
  192251             :                        {
  192252             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192253             :                        }
  192254             : #endif
  192255         226 :                     operatorPosition->set_parent(expression);
  192256         226 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  192257             :                   }
  192258             :              }
  192259             :         }
  192260             : 
  192261             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  192262         226 :      SgInitializedName* initializedName = isSgInitializedName(result);
  192263         226 :      if (initializedName != NULL)
  192264             :         {
  192265             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  192266           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  192267           0 :           ROSE_ASSERT(start != NULL);
  192268             : #if 0
  192269             :        // Debugging information
  192270             :           if (start->get_parent() == NULL)
  192271             :              {
  192272             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192273             :              }
  192274             : #endif
  192275           0 :           start->set_parent(initializedName);
  192276           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  192277             : 
  192278             : #if 0
  192279             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  192280             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  192281             : 
  192282             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  192283             :        // ROSE_ASSERT(end != NULL);
  192284             :           if (end == NULL)
  192285             :              {
  192286             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  192287             :              }
  192288             :             else
  192289             :              {
  192290             :                if (end->get_parent() == NULL)
  192291             :                   {
  192292             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192293             :                   }
  192294             :                end->set_parent(initializedName);
  192295             :                ROSE_ASSERT(end->get_parent() != NULL);
  192296             :              }
  192297             : #endif
  192298             :         }
  192299             : 
  192300             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  192301         226 :      help.insertCopiedNodePair(this,result);
  192302             : 
  192303             :   // printf ("End of copy SgTemplateMemberFunctionRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  192304             : 
  192305             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  192306             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  192307         226 :      help.decrementDepth();
  192308             : 
  192309             :   // Test if this is the root of the copy!
  192310         226 :      if (help.get_depth() == 0)
  192311             :         {
  192312             :        // This is the original calling node.
  192313             : 
  192314             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  192315             :        // printf ("Calling SgTemplateMemberFunctionRefExp::fixupCopy() (from root of AST being copied) \n");
  192316             : #if ALT_FIXUP_COPY
  192317             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  192318           0 :           fixupCopy_scopes (result,help);
  192319           0 :           fixupCopy_symbols (result,help);
  192320           0 :           fixupCopy_references (result,help);
  192321             : #else
  192322             :           fixupCopy(result,help);
  192323             : #endif
  192324             :        // Allow this to be called recursively, so accumulate the state.
  192325             :        // Also, clear the state in the SgCopyHelp object.
  192326             :        // help.clearState();
  192327             :         }
  192328             : 
  192329         226 :      return result;
  192330             :    }
  192331             : 
  192332             : 
  192333             : /* #line 192334 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  192334             : 
  192335             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192336             : 
  192337           0 : SgNode* SgAlignOfOp::copy ( SgCopyHelp& help) const
  192338             :    {
  192339           0 :      SgAlignOfOp* result = NULL;
  192340             : 
  192341             :   // printf ("Copy SgAlignOfOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  192342             : 
  192343             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  192344             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  192345             :   // The default value of the depth is 0, so after this call the depth is 1!
  192346           0 :      help.incrementDepth();
  192347             : 
  192348             : #if 0
  192349             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  192350             :   // but it is not generally true that things can only be copied once!
  192351             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  192352             :   // AstAttribute* existingAttribute = const_cast<SgAlignOfOp*>(this)->attribute["copied"];
  192353             :      bool previouslyCopied = const_cast<SgAlignOfOp*>(this)->attribute.exists("copied");
  192354             :      if (previouslyCopied == true)
  192355             :         {
  192356             :           this->get_file_info()->display("Called from copy SgAlignOfOp: debug");
  192357             :         }
  192358             :      ROSE_ASSERT(previouslyCopied == false);
  192359             : 
  192360             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  192361             :      AstAttribute* newAttribute = new AstAttribute();
  192362             :      ROSE_ASSERT(newAttribute != NULL);
  192363             : 
  192364             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  192365             :      const_cast<SgAlignOfOp*>(this)->attribute.add("copied",newAttribute);
  192366             : #endif
  192367             : 
  192368             :   // Copy data members from base classes
  192369             :   // Copy constructor parameter data member: startOfConstruct_copy
  192370             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  192371             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  192372           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  192373           0 :      if ( p_startOfConstruct != NULL ) 
  192374             :         { 
  192375           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  192376             :         } 
  192377             :        else 
  192378             :         { 
  192379             :           startOfConstruct_copy = NULL; 
  192380             :         } 
  192381             :   // Copy constructor parameter data member: operand_expr_copy
  192382           0 :      SgExpression* operand_expr_copy; 
  192383             :   // case: not a listType for (using conditionalToCopyVariable)operand_expr
  192384           0 :           if (get_operand_expr() != NULL) 
  192385             :              { 
  192386           0 :                operand_expr_copy = static_cast<SgExpression*>(help.copyAst(get_operand_expr())); 
  192387             :              } 
  192388             :             else 
  192389             :              { 
  192390             :                operand_expr_copy = NULL; 
  192391             :              } 
  192392             :   // Copy constructor parameter data member: operand_type_copy
  192393             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operand_type
  192394             :   // case: toBeCopied == COPY_DATA for operand_type
  192395           0 :      SgType* operand_type_copy = p_operand_type; 
  192396             :   // Copy constructor parameter data member: expression_type_copy
  192397             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for expression_type
  192398             :   // case: toBeCopied == COPY_DATA for expression_type
  192399           0 :      SgType* expression_type_copy = p_expression_type; 
  192400             :  
  192401             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192402             : 
  192403             :   // Build an empty copy of this object (will be filled in, but 
  192404             :   // the parent can't be set and must be set by the caller)
  192405           0 :      result = new SgAlignOfOp(  startOfConstruct_copy, operand_expr_copy, operand_type_copy, expression_type_copy );
  192406           0 :      ROSE_ASSERT(result != NULL);
  192407             : 
  192408             :   // Copy data members of "this" class
  192409             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  192410             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  192411             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  192412           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  192413           0 :      if ( p_endOfConstruct != NULL ) 
  192414             :         { 
  192415           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  192416             :         } 
  192417             :        else 
  192418             :         { 
  192419             :           endOfConstruct_copy = NULL; 
  192420             :         } 
  192421             :   /* check for a valid pointer and delete if present */ 
  192422           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  192423             :   /* add assignment to result here */ 
  192424           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  192425             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  192426             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  192427             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  192428           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  192429           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  192430             :         { 
  192431           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  192432             :         } 
  192433             :        else 
  192434             :         { 
  192435             :           attachedPreprocessingInfoPtr_copy = NULL; 
  192436             :         } 
  192437             :   /* check for a valid pointer and delete if present */ 
  192438           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  192439             :   /* add assignment to result here */ 
  192440           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  192441             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  192442             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  192443             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  192444           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  192445           0 :      if ( p_attributeMechanism != NULL ) 
  192446             :         { 
  192447           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  192448             :         } 
  192449             :        else 
  192450             :         { 
  192451             :           attributeMechanism_copy = NULL; 
  192452             :         } 
  192453             :   /* check for a valid pointer and delete if present */ 
  192454           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  192455             :   /* add assignment to result here */ 
  192456           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  192457             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  192458             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  192459             :   // case: toBeCopied == COPY_DATA for need_paren
  192460           0 :      bool need_paren_copy = p_need_paren; 
  192461           0 :      result->p_need_paren = need_paren_copy; 
  192462             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  192463             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  192464             :   // case: toBeCopied == COPY_DATA for lvalue
  192465           0 :      bool lvalue_copy = p_lvalue; 
  192466           0 :      result->p_lvalue = lvalue_copy; 
  192467             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  192468             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  192469             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  192470           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  192471           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  192472             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  192473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  192474             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  192475           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  192476           0 :      if ( p_operatorPosition != NULL ) 
  192477             :         { 
  192478           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  192479             :         } 
  192480             :        else 
  192481             :         { 
  192482             :           operatorPosition_copy = NULL; 
  192483             :         } 
  192484             :   /* check for a valid pointer and delete if present */ 
  192485           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  192486             :   /* add assignment to result here */ 
  192487           0 :      result->p_operatorPosition = operatorPosition_copy; 
  192488             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  192489             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  192490             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  192491           0 :      int name_qualification_length_copy = p_name_qualification_length; 
  192492           0 :      result->p_name_qualification_length = name_qualification_length_copy; 
  192493             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  192494             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  192495             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  192496           0 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  192497           0 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  192498             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  192499             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  192500             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  192501           0 :      bool global_qualification_required_copy = p_global_qualification_required; 
  192502           0 :      result->p_global_qualification_required = global_qualification_required_copy; 
  192503             :   // Copy non-constructor parameter data member (access function): alignOfContainsBaseTypeDefiningDeclaration_copy
  192504             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for alignOfContainsBaseTypeDefiningDeclaration
  192505             :   // case: toBeCopied == COPY_DATA for alignOfContainsBaseTypeDefiningDeclaration
  192506           0 :      bool alignOfContainsBaseTypeDefiningDeclaration_copy = p_alignOfContainsBaseTypeDefiningDeclaration; 
  192507           0 :      result->p_alignOfContainsBaseTypeDefiningDeclaration = alignOfContainsBaseTypeDefiningDeclaration_copy; 
  192508             :   // case: not a listType for (using conditionalToSetParent)operand_expr
  192509           0 :           if ( (operand_expr_copy != NULL) && (operand_expr_copy->get_parent() == NULL) && (isSgType(operand_expr_copy) == NULL) ) 
  192510             :              { 
  192511           0 :                operand_expr_copy->set_parent(result); 
  192512             :              } 
  192513             : 
  192514             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192515             : 
  192516             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  192517             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  192518             :   // fixupCopy(result,help);
  192519             : 
  192520             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  192521             :   // the Sg_File_Info objects that are built for the new IR nodes.
  192522           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  192523           0 :      if (locatedNode != NULL)
  192524             :         {
  192525             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  192526           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  192527           0 :           ROSE_ASSERT(start != NULL);
  192528             : #if 0
  192529             :        // Debugging information
  192530             :           if (start->get_parent() == NULL)
  192531             :              {
  192532             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192533             :              }
  192534             : #endif
  192535           0 :           start->set_parent(locatedNode);
  192536           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  192537             : 
  192538           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  192539             : 
  192540             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  192541             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  192542             :        // ROSE_ASSERT(end != NULL);
  192543           0 :           if (end == NULL)
  192544             :              {
  192545           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  192546             :              }
  192547             :             else
  192548             :              {
  192549             : #if 0
  192550             :             // Debugging information
  192551             :                if (end->get_parent() == NULL)
  192552             :                   {
  192553             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192554             :                   }
  192555             : #endif
  192556           0 :                end->set_parent(locatedNode);
  192557           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  192558             :              }
  192559             : 
  192560           0 :           SgExpression* expression = isSgExpression(result);
  192561           0 :           if (isSgExpression(this) != NULL)
  192562             :              {
  192563           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  192564             : 
  192565             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  192566           0 :                if (operatorPosition != NULL)
  192567             :                   {
  192568             : #if 0
  192569             :                  // Debugging information
  192570             :                     if (operatorPosition->get_parent() == NULL)
  192571             :                        {
  192572             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192573             :                        }
  192574             : #endif
  192575           0 :                     operatorPosition->set_parent(expression);
  192576           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  192577             :                   }
  192578             :              }
  192579             :         }
  192580             : 
  192581             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  192582           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  192583           0 :      if (initializedName != NULL)
  192584             :         {
  192585             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  192586           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  192587           0 :           ROSE_ASSERT(start != NULL);
  192588             : #if 0
  192589             :        // Debugging information
  192590             :           if (start->get_parent() == NULL)
  192591             :              {
  192592             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192593             :              }
  192594             : #endif
  192595           0 :           start->set_parent(initializedName);
  192596           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  192597             : 
  192598             : #if 0
  192599             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  192600             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  192601             : 
  192602             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  192603             :        // ROSE_ASSERT(end != NULL);
  192604             :           if (end == NULL)
  192605             :              {
  192606             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  192607             :              }
  192608             :             else
  192609             :              {
  192610             :                if (end->get_parent() == NULL)
  192611             :                   {
  192612             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192613             :                   }
  192614             :                end->set_parent(initializedName);
  192615             :                ROSE_ASSERT(end->get_parent() != NULL);
  192616             :              }
  192617             : #endif
  192618             :         }
  192619             : 
  192620             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  192621           0 :      help.insertCopiedNodePair(this,result);
  192622             : 
  192623             :   // printf ("End of copy SgAlignOfOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  192624             : 
  192625             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  192626             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  192627           0 :      help.decrementDepth();
  192628             : 
  192629             :   // Test if this is the root of the copy!
  192630           0 :      if (help.get_depth() == 0)
  192631             :         {
  192632             :        // This is the original calling node.
  192633             : 
  192634             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  192635             :        // printf ("Calling SgAlignOfOp::fixupCopy() (from root of AST being copied) \n");
  192636             : #if ALT_FIXUP_COPY
  192637             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  192638           0 :           fixupCopy_scopes (result,help);
  192639           0 :           fixupCopy_symbols (result,help);
  192640           0 :           fixupCopy_references (result,help);
  192641             : #else
  192642             :           fixupCopy(result,help);
  192643             : #endif
  192644             :        // Allow this to be called recursively, so accumulate the state.
  192645             :        // Also, clear the state in the SgCopyHelp object.
  192646             :        // help.clearState();
  192647             :         }
  192648             : 
  192649           0 :      return result;
  192650             :    }
  192651             : 
  192652             : 
  192653             : /* #line 192654 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  192654             : 
  192655             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192656             : 
  192657           0 : SgNode* SgRangeExp::copy ( SgCopyHelp& help) const
  192658             :    {
  192659           0 :      SgRangeExp* result = NULL;
  192660             : 
  192661             :   // printf ("Copy SgRangeExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  192662             : 
  192663             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  192664             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  192665             :   // The default value of the depth is 0, so after this call the depth is 1!
  192666           0 :      help.incrementDepth();
  192667             : 
  192668             : #if 0
  192669             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  192670             :   // but it is not generally true that things can only be copied once!
  192671             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  192672             :   // AstAttribute* existingAttribute = const_cast<SgRangeExp*>(this)->attribute["copied"];
  192673             :      bool previouslyCopied = const_cast<SgRangeExp*>(this)->attribute.exists("copied");
  192674             :      if (previouslyCopied == true)
  192675             :         {
  192676             :           this->get_file_info()->display("Called from copy SgRangeExp: debug");
  192677             :         }
  192678             :      ROSE_ASSERT(previouslyCopied == false);
  192679             : 
  192680             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  192681             :      AstAttribute* newAttribute = new AstAttribute();
  192682             :      ROSE_ASSERT(newAttribute != NULL);
  192683             : 
  192684             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  192685             :      const_cast<SgRangeExp*>(this)->attribute.add("copied",newAttribute);
  192686             : #endif
  192687             : 
  192688             :   // Copy data members from base classes
  192689             :   // Copy constructor parameter data member: startOfConstruct_copy
  192690             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  192691             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  192692           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  192693           0 :      if ( p_startOfConstruct != NULL ) 
  192694             :         { 
  192695           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  192696             :         } 
  192697             :        else 
  192698             :         { 
  192699             :           startOfConstruct_copy = NULL; 
  192700             :         } 
  192701             :  
  192702             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192703             : 
  192704             :   // Build an empty copy of this object (will be filled in, but 
  192705             :   // the parent can't be set and must be set by the caller)
  192706           0 :      result = new SgRangeExp(  startOfConstruct_copy );
  192707           0 :      ROSE_ASSERT(result != NULL);
  192708             : 
  192709             :   // Copy data members of "this" class
  192710             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  192711             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  192712             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  192713           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  192714           0 :      if ( p_endOfConstruct != NULL ) 
  192715             :         { 
  192716           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  192717             :         } 
  192718             :        else 
  192719             :         { 
  192720             :           endOfConstruct_copy = NULL; 
  192721             :         } 
  192722             :   /* check for a valid pointer and delete if present */ 
  192723           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  192724             :   /* add assignment to result here */ 
  192725           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  192726             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  192727             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  192728             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  192729           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  192730           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  192731             :         { 
  192732           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  192733             :         } 
  192734             :        else 
  192735             :         { 
  192736             :           attachedPreprocessingInfoPtr_copy = NULL; 
  192737             :         } 
  192738             :   /* check for a valid pointer and delete if present */ 
  192739           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  192740             :   /* add assignment to result here */ 
  192741           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  192742             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  192743             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  192744             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  192745           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  192746           0 :      if ( p_attributeMechanism != NULL ) 
  192747             :         { 
  192748           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  192749             :         } 
  192750             :        else 
  192751             :         { 
  192752             :           attributeMechanism_copy = NULL; 
  192753             :         } 
  192754             :   /* check for a valid pointer and delete if present */ 
  192755           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  192756             :   /* add assignment to result here */ 
  192757           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  192758             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  192759             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  192760             :   // case: toBeCopied == COPY_DATA for need_paren
  192761           0 :      bool need_paren_copy = p_need_paren; 
  192762           0 :      result->p_need_paren = need_paren_copy; 
  192763             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  192764             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  192765             :   // case: toBeCopied == COPY_DATA for lvalue
  192766           0 :      bool lvalue_copy = p_lvalue; 
  192767           0 :      result->p_lvalue = lvalue_copy; 
  192768             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  192769             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  192770             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  192771           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  192772           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  192773             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  192774             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  192775             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  192776           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  192777           0 :      if ( p_operatorPosition != NULL ) 
  192778             :         { 
  192779           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  192780             :         } 
  192781             :        else 
  192782             :         { 
  192783             :           operatorPosition_copy = NULL; 
  192784             :         } 
  192785             :   /* check for a valid pointer and delete if present */ 
  192786           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  192787             :   /* add assignment to result here */ 
  192788           0 :      result->p_operatorPosition = operatorPosition_copy; 
  192789             :   // Copy non-constructor parameter data member (access function): start_copy
  192790           0 :      SgExpression* start_copy; 
  192791             :   // case: not a listType for (using conditionalToCopyVariable)start
  192792           0 :           if (get_start() != NULL) 
  192793             :              { 
  192794           0 :                start_copy = static_cast<SgExpression*>(help.copyAst(get_start())); 
  192795             :              } 
  192796             :             else 
  192797             :              { 
  192798             :                start_copy = NULL; 
  192799             :              } 
  192800             :   /* check for a valid pointer and delete if present */ 
  192801           0 :      if (result->p_start != NULL) delete result->p_start; 
  192802           0 :      result->p_start = start_copy; 
  192803             :   // case: not a listType for (using conditionalToSetParent)start
  192804           0 :           if ( (start_copy != NULL) && (start_copy->get_parent() == NULL) && (isSgType(start_copy) == NULL) ) 
  192805             :              { 
  192806           0 :                start_copy->set_parent(result); 
  192807             :              } 
  192808             :   // Copy non-constructor parameter data member (access function): end_copy
  192809           0 :      SgExpression* end_copy; 
  192810             :   // case: not a listType for (using conditionalToCopyVariable)end
  192811           0 :           if (get_end() != NULL) 
  192812             :              { 
  192813           0 :                end_copy = static_cast<SgExpression*>(help.copyAst(get_end())); 
  192814             :              } 
  192815             :             else 
  192816             :              { 
  192817             :                end_copy = NULL; 
  192818             :              } 
  192819             :   /* check for a valid pointer and delete if present */ 
  192820           0 :      if (result->p_end != NULL) delete result->p_end; 
  192821           0 :      result->p_end = end_copy; 
  192822             :   // case: not a listType for (using conditionalToSetParent)end
  192823           0 :           if ( (end_copy != NULL) && (end_copy->get_parent() == NULL) && (isSgType(end_copy) == NULL) ) 
  192824             :              { 
  192825           0 :                end_copy->set_parent(result); 
  192826             :              } 
  192827             :   // Copy non-constructor parameter data member (access function): stride_copy
  192828           0 :      SgExpression* stride_copy; 
  192829             :   // case: not a listType for (using conditionalToCopyVariable)stride
  192830           0 :           if (get_stride() != NULL) 
  192831             :              { 
  192832           0 :                stride_copy = static_cast<SgExpression*>(help.copyAst(get_stride())); 
  192833             :              } 
  192834             :             else 
  192835             :              { 
  192836             :                stride_copy = NULL; 
  192837             :              } 
  192838             :   /* check for a valid pointer and delete if present */ 
  192839           0 :      if (result->p_stride != NULL) delete result->p_stride; 
  192840           0 :      result->p_stride = stride_copy; 
  192841             :   // case: not a listType for (using conditionalToSetParent)stride
  192842           0 :           if ( (stride_copy != NULL) && (stride_copy->get_parent() == NULL) && (isSgType(stride_copy) == NULL) ) 
  192843             :              { 
  192844           0 :                stride_copy->set_parent(result); 
  192845             :              } 
  192846             : 
  192847             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192848             : 
  192849             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  192850             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  192851             :   // fixupCopy(result,help);
  192852             : 
  192853             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  192854             :   // the Sg_File_Info objects that are built for the new IR nodes.
  192855           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  192856           0 :      if (locatedNode != NULL)
  192857             :         {
  192858             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  192859           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  192860           0 :           ROSE_ASSERT(start != NULL);
  192861             : #if 0
  192862             :        // Debugging information
  192863             :           if (start->get_parent() == NULL)
  192864             :              {
  192865             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192866             :              }
  192867             : #endif
  192868           0 :           start->set_parent(locatedNode);
  192869           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  192870             : 
  192871           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  192872             : 
  192873             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  192874             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  192875             :        // ROSE_ASSERT(end != NULL);
  192876           0 :           if (end == NULL)
  192877             :              {
  192878           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  192879             :              }
  192880             :             else
  192881             :              {
  192882             : #if 0
  192883             :             // Debugging information
  192884             :                if (end->get_parent() == NULL)
  192885             :                   {
  192886             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192887             :                   }
  192888             : #endif
  192889           0 :                end->set_parent(locatedNode);
  192890           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  192891             :              }
  192892             : 
  192893           0 :           SgExpression* expression = isSgExpression(result);
  192894           0 :           if (isSgExpression(this) != NULL)
  192895             :              {
  192896           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  192897             : 
  192898             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  192899           0 :                if (operatorPosition != NULL)
  192900             :                   {
  192901             : #if 0
  192902             :                  // Debugging information
  192903             :                     if (operatorPosition->get_parent() == NULL)
  192904             :                        {
  192905             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192906             :                        }
  192907             : #endif
  192908           0 :                     operatorPosition->set_parent(expression);
  192909           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  192910             :                   }
  192911             :              }
  192912             :         }
  192913             : 
  192914             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  192915           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  192916           0 :      if (initializedName != NULL)
  192917             :         {
  192918             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  192919           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  192920           0 :           ROSE_ASSERT(start != NULL);
  192921             : #if 0
  192922             :        // Debugging information
  192923             :           if (start->get_parent() == NULL)
  192924             :              {
  192925             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192926             :              }
  192927             : #endif
  192928           0 :           start->set_parent(initializedName);
  192929           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  192930             : 
  192931             : #if 0
  192932             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  192933             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  192934             : 
  192935             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  192936             :        // ROSE_ASSERT(end != NULL);
  192937             :           if (end == NULL)
  192938             :              {
  192939             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  192940             :              }
  192941             :             else
  192942             :              {
  192943             :                if (end->get_parent() == NULL)
  192944             :                   {
  192945             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  192946             :                   }
  192947             :                end->set_parent(initializedName);
  192948             :                ROSE_ASSERT(end->get_parent() != NULL);
  192949             :              }
  192950             : #endif
  192951             :         }
  192952             : 
  192953             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  192954           0 :      help.insertCopiedNodePair(this,result);
  192955             : 
  192956             :   // printf ("End of copy SgRangeExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  192957             : 
  192958             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  192959             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  192960           0 :      help.decrementDepth();
  192961             : 
  192962             :   // Test if this is the root of the copy!
  192963           0 :      if (help.get_depth() == 0)
  192964             :         {
  192965             :        // This is the original calling node.
  192966             : 
  192967             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  192968             :        // printf ("Calling SgRangeExp::fixupCopy() (from root of AST being copied) \n");
  192969             : #if ALT_FIXUP_COPY
  192970             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  192971           0 :           fixupCopy_scopes (result,help);
  192972           0 :           fixupCopy_symbols (result,help);
  192973           0 :           fixupCopy_references (result,help);
  192974             : #else
  192975             :           fixupCopy(result,help);
  192976             : #endif
  192977             :        // Allow this to be called recursively, so accumulate the state.
  192978             :        // Also, clear the state in the SgCopyHelp object.
  192979             :        // help.clearState();
  192980             :         }
  192981             : 
  192982           0 :      return result;
  192983             :    }
  192984             : 
  192985             : 
  192986             : /* #line 192987 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  192987             : 
  192988             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  192989             : 
  192990           0 : SgNode* SgMagicColonExp::copy ( SgCopyHelp& help) const
  192991             :    {
  192992           0 :      SgMagicColonExp* result = NULL;
  192993             : 
  192994             :   // printf ("Copy SgMagicColonExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  192995             : 
  192996             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  192997             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  192998             :   // The default value of the depth is 0, so after this call the depth is 1!
  192999           0 :      help.incrementDepth();
  193000             : 
  193001             : #if 0
  193002             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  193003             :   // but it is not generally true that things can only be copied once!
  193004             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  193005             :   // AstAttribute* existingAttribute = const_cast<SgMagicColonExp*>(this)->attribute["copied"];
  193006             :      bool previouslyCopied = const_cast<SgMagicColonExp*>(this)->attribute.exists("copied");
  193007             :      if (previouslyCopied == true)
  193008             :         {
  193009             :           this->get_file_info()->display("Called from copy SgMagicColonExp: debug");
  193010             :         }
  193011             :      ROSE_ASSERT(previouslyCopied == false);
  193012             : 
  193013             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  193014             :      AstAttribute* newAttribute = new AstAttribute();
  193015             :      ROSE_ASSERT(newAttribute != NULL);
  193016             : 
  193017             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  193018             :      const_cast<SgMagicColonExp*>(this)->attribute.add("copied",newAttribute);
  193019             : #endif
  193020             : 
  193021             :   // Copy data members from base classes
  193022             :   // Copy constructor parameter data member: startOfConstruct_copy
  193023             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  193024             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  193025           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  193026           0 :      if ( p_startOfConstruct != NULL ) 
  193027             :         { 
  193028           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  193029             :         } 
  193030             :        else 
  193031             :         { 
  193032             :           startOfConstruct_copy = NULL; 
  193033             :         } 
  193034             :  
  193035             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193036             : 
  193037             :   // Build an empty copy of this object (will be filled in, but 
  193038             :   // the parent can't be set and must be set by the caller)
  193039           0 :      result = new SgMagicColonExp(  startOfConstruct_copy );
  193040           0 :      ROSE_ASSERT(result != NULL);
  193041             : 
  193042             :   // Copy data members of "this" class
  193043             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  193044             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  193045             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  193046           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  193047           0 :      if ( p_endOfConstruct != NULL ) 
  193048             :         { 
  193049           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  193050             :         } 
  193051             :        else 
  193052             :         { 
  193053             :           endOfConstruct_copy = NULL; 
  193054             :         } 
  193055             :   /* check for a valid pointer and delete if present */ 
  193056           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  193057             :   /* add assignment to result here */ 
  193058           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  193059             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  193060             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  193061             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  193062           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  193063           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  193064             :         { 
  193065           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  193066             :         } 
  193067             :        else 
  193068             :         { 
  193069             :           attachedPreprocessingInfoPtr_copy = NULL; 
  193070             :         } 
  193071             :   /* check for a valid pointer and delete if present */ 
  193072           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  193073             :   /* add assignment to result here */ 
  193074           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  193075             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  193076             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  193077             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  193078           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  193079           0 :      if ( p_attributeMechanism != NULL ) 
  193080             :         { 
  193081           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  193082             :         } 
  193083             :        else 
  193084             :         { 
  193085             :           attributeMechanism_copy = NULL; 
  193086             :         } 
  193087             :   /* check for a valid pointer and delete if present */ 
  193088           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  193089             :   /* add assignment to result here */ 
  193090           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  193091             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  193092             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  193093             :   // case: toBeCopied == COPY_DATA for need_paren
  193094           0 :      bool need_paren_copy = p_need_paren; 
  193095           0 :      result->p_need_paren = need_paren_copy; 
  193096             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  193097             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  193098             :   // case: toBeCopied == COPY_DATA for lvalue
  193099           0 :      bool lvalue_copy = p_lvalue; 
  193100           0 :      result->p_lvalue = lvalue_copy; 
  193101             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  193102             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  193103             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  193104           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  193105           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  193106             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  193107             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  193108             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  193109           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  193110           0 :      if ( p_operatorPosition != NULL ) 
  193111             :         { 
  193112           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  193113             :         } 
  193114             :        else 
  193115             :         { 
  193116             :           operatorPosition_copy = NULL; 
  193117             :         } 
  193118             :   /* check for a valid pointer and delete if present */ 
  193119           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  193120             :   /* add assignment to result here */ 
  193121           0 :      result->p_operatorPosition = operatorPosition_copy; 
  193122             : 
  193123             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193124             : 
  193125             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  193126             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  193127             :   // fixupCopy(result,help);
  193128             : 
  193129             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  193130             :   // the Sg_File_Info objects that are built for the new IR nodes.
  193131           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  193132           0 :      if (locatedNode != NULL)
  193133             :         {
  193134             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  193135           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  193136           0 :           ROSE_ASSERT(start != NULL);
  193137             : #if 0
  193138             :        // Debugging information
  193139             :           if (start->get_parent() == NULL)
  193140             :              {
  193141             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193142             :              }
  193143             : #endif
  193144           0 :           start->set_parent(locatedNode);
  193145           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  193146             : 
  193147           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  193148             : 
  193149             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  193150             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  193151             :        // ROSE_ASSERT(end != NULL);
  193152           0 :           if (end == NULL)
  193153             :              {
  193154           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  193155             :              }
  193156             :             else
  193157             :              {
  193158             : #if 0
  193159             :             // Debugging information
  193160             :                if (end->get_parent() == NULL)
  193161             :                   {
  193162             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193163             :                   }
  193164             : #endif
  193165           0 :                end->set_parent(locatedNode);
  193166           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  193167             :              }
  193168             : 
  193169           0 :           SgExpression* expression = isSgExpression(result);
  193170           0 :           if (isSgExpression(this) != NULL)
  193171             :              {
  193172           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  193173             : 
  193174             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  193175           0 :                if (operatorPosition != NULL)
  193176             :                   {
  193177             : #if 0
  193178             :                  // Debugging information
  193179             :                     if (operatorPosition->get_parent() == NULL)
  193180             :                        {
  193181             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193182             :                        }
  193183             : #endif
  193184           0 :                     operatorPosition->set_parent(expression);
  193185           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  193186             :                   }
  193187             :              }
  193188             :         }
  193189             : 
  193190             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  193191           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  193192           0 :      if (initializedName != NULL)
  193193             :         {
  193194             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  193195           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  193196           0 :           ROSE_ASSERT(start != NULL);
  193197             : #if 0
  193198             :        // Debugging information
  193199             :           if (start->get_parent() == NULL)
  193200             :              {
  193201             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193202             :              }
  193203             : #endif
  193204           0 :           start->set_parent(initializedName);
  193205           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  193206             : 
  193207             : #if 0
  193208             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  193209             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  193210             : 
  193211             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  193212             :        // ROSE_ASSERT(end != NULL);
  193213             :           if (end == NULL)
  193214             :              {
  193215             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  193216             :              }
  193217             :             else
  193218             :              {
  193219             :                if (end->get_parent() == NULL)
  193220             :                   {
  193221             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193222             :                   }
  193223             :                end->set_parent(initializedName);
  193224             :                ROSE_ASSERT(end->get_parent() != NULL);
  193225             :              }
  193226             : #endif
  193227             :         }
  193228             : 
  193229             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  193230           0 :      help.insertCopiedNodePair(this,result);
  193231             : 
  193232             :   // printf ("End of copy SgMagicColonExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  193233             : 
  193234             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  193235             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  193236           0 :      help.decrementDepth();
  193237             : 
  193238             :   // Test if this is the root of the copy!
  193239           0 :      if (help.get_depth() == 0)
  193240             :         {
  193241             :        // This is the original calling node.
  193242             : 
  193243             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  193244             :        // printf ("Calling SgMagicColonExp::fixupCopy() (from root of AST being copied) \n");
  193245             : #if ALT_FIXUP_COPY
  193246             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  193247           0 :           fixupCopy_scopes (result,help);
  193248           0 :           fixupCopy_symbols (result,help);
  193249           0 :           fixupCopy_references (result,help);
  193250             : #else
  193251             :           fixupCopy(result,help);
  193252             : #endif
  193253             :        // Allow this to be called recursively, so accumulate the state.
  193254             :        // Also, clear the state in the SgCopyHelp object.
  193255             :        // help.clearState();
  193256             :         }
  193257             : 
  193258           0 :      return result;
  193259             :    }
  193260             : 
  193261             : 
  193262             : /* #line 193263 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  193263             : 
  193264             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193265             : 
  193266           0 : SgNode* SgTypeTraitBuiltinOperator::copy ( SgCopyHelp& help) const
  193267             :    {
  193268           0 :      SgTypeTraitBuiltinOperator* result = NULL;
  193269             : 
  193270             :   // printf ("Copy SgTypeTraitBuiltinOperator = %p = %s \n",this,SageInterface::get_name(this).c_str());
  193271             : 
  193272             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  193273             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  193274             :   // The default value of the depth is 0, so after this call the depth is 1!
  193275           0 :      help.incrementDepth();
  193276             : 
  193277             : #if 0
  193278             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  193279             :   // but it is not generally true that things can only be copied once!
  193280             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  193281             :   // AstAttribute* existingAttribute = const_cast<SgTypeTraitBuiltinOperator*>(this)->attribute["copied"];
  193282             :      bool previouslyCopied = const_cast<SgTypeTraitBuiltinOperator*>(this)->attribute.exists("copied");
  193283             :      if (previouslyCopied == true)
  193284             :         {
  193285             :           this->get_file_info()->display("Called from copy SgTypeTraitBuiltinOperator: debug");
  193286             :         }
  193287             :      ROSE_ASSERT(previouslyCopied == false);
  193288             : 
  193289             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  193290             :      AstAttribute* newAttribute = new AstAttribute();
  193291             :      ROSE_ASSERT(newAttribute != NULL);
  193292             : 
  193293             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  193294             :      const_cast<SgTypeTraitBuiltinOperator*>(this)->attribute.add("copied",newAttribute);
  193295             : #endif
  193296             : 
  193297             :   // Copy data members from base classes
  193298             :   // Copy constructor parameter data member: startOfConstruct_copy
  193299             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  193300             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  193301           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  193302           0 :      if ( p_startOfConstruct != NULL ) 
  193303             :         { 
  193304           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  193305             :         } 
  193306             :        else 
  193307             :         { 
  193308             :           startOfConstruct_copy = NULL; 
  193309             :         } 
  193310             :   // Copy constructor parameter data member: name_copy
  193311             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  193312             :   // case: toBeCopied == COPY_DATA for name
  193313           0 :      SgName name_copy = p_name; 
  193314             :  
  193315             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193316             : 
  193317             :   // Build an empty copy of this object (will be filled in, but 
  193318             :   // the parent can't be set and must be set by the caller)
  193319           0 :      result = new SgTypeTraitBuiltinOperator(  startOfConstruct_copy, name_copy );
  193320           0 :      ROSE_ASSERT(result != NULL);
  193321             : 
  193322             :   // Copy data members of "this" class
  193323             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  193324             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  193325             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  193326           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  193327           0 :      if ( p_endOfConstruct != NULL ) 
  193328             :         { 
  193329           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  193330             :         } 
  193331             :        else 
  193332             :         { 
  193333             :           endOfConstruct_copy = NULL; 
  193334             :         } 
  193335             :   /* check for a valid pointer and delete if present */ 
  193336           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  193337             :   /* add assignment to result here */ 
  193338           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  193339             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  193340             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  193341             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  193342           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  193343           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  193344             :         { 
  193345           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  193346             :         } 
  193347             :        else 
  193348             :         { 
  193349             :           attachedPreprocessingInfoPtr_copy = NULL; 
  193350             :         } 
  193351             :   /* check for a valid pointer and delete if present */ 
  193352           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  193353             :   /* add assignment to result here */ 
  193354           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  193355             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  193356             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  193357             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  193358           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  193359           0 :      if ( p_attributeMechanism != NULL ) 
  193360             :         { 
  193361           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  193362             :         } 
  193363             :        else 
  193364             :         { 
  193365             :           attributeMechanism_copy = NULL; 
  193366             :         } 
  193367             :   /* check for a valid pointer and delete if present */ 
  193368           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  193369             :   /* add assignment to result here */ 
  193370           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  193371             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  193372             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  193373             :   // case: toBeCopied == COPY_DATA for need_paren
  193374           0 :      bool need_paren_copy = p_need_paren; 
  193375           0 :      result->p_need_paren = need_paren_copy; 
  193376             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  193377             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  193378             :   // case: toBeCopied == COPY_DATA for lvalue
  193379           0 :      bool lvalue_copy = p_lvalue; 
  193380           0 :      result->p_lvalue = lvalue_copy; 
  193381             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  193382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  193383             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  193384           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  193385           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  193386             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  193387             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  193388             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  193389           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  193390           0 :      if ( p_operatorPosition != NULL ) 
  193391             :         { 
  193392           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  193393             :         } 
  193394             :        else 
  193395             :         { 
  193396             :           operatorPosition_copy = NULL; 
  193397             :         } 
  193398             :   /* check for a valid pointer and delete if present */ 
  193399           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  193400             :   /* add assignment to result here */ 
  193401           0 :      result->p_operatorPosition = operatorPosition_copy; 
  193402             :   // Copy non-constructor parameter data member (list access function): result->get_args()
  193403             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for args
  193404             :   // case: toBeCopied == COPY_DATA for args
  193405           0 :      SgNodePtrList args_copy = p_args; 
  193406           0 :      result->p_args = args_copy; 
  193407             : 
  193408             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193409             : 
  193410             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  193411             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  193412             :   // fixupCopy(result,help);
  193413             : 
  193414             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  193415             :   // the Sg_File_Info objects that are built for the new IR nodes.
  193416           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  193417           0 :      if (locatedNode != NULL)
  193418             :         {
  193419             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  193420           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  193421           0 :           ROSE_ASSERT(start != NULL);
  193422             : #if 0
  193423             :        // Debugging information
  193424             :           if (start->get_parent() == NULL)
  193425             :              {
  193426             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193427             :              }
  193428             : #endif
  193429           0 :           start->set_parent(locatedNode);
  193430           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  193431             : 
  193432           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  193433             : 
  193434             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  193435             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  193436             :        // ROSE_ASSERT(end != NULL);
  193437           0 :           if (end == NULL)
  193438             :              {
  193439           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  193440             :              }
  193441             :             else
  193442             :              {
  193443             : #if 0
  193444             :             // Debugging information
  193445             :                if (end->get_parent() == NULL)
  193446             :                   {
  193447             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193448             :                   }
  193449             : #endif
  193450           0 :                end->set_parent(locatedNode);
  193451           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  193452             :              }
  193453             : 
  193454           0 :           SgExpression* expression = isSgExpression(result);
  193455           0 :           if (isSgExpression(this) != NULL)
  193456             :              {
  193457           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  193458             : 
  193459             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  193460           0 :                if (operatorPosition != NULL)
  193461             :                   {
  193462             : #if 0
  193463             :                  // Debugging information
  193464             :                     if (operatorPosition->get_parent() == NULL)
  193465             :                        {
  193466             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193467             :                        }
  193468             : #endif
  193469           0 :                     operatorPosition->set_parent(expression);
  193470           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  193471             :                   }
  193472             :              }
  193473             :         }
  193474             : 
  193475             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  193476           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  193477           0 :      if (initializedName != NULL)
  193478             :         {
  193479             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  193480           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  193481           0 :           ROSE_ASSERT(start != NULL);
  193482             : #if 0
  193483             :        // Debugging information
  193484             :           if (start->get_parent() == NULL)
  193485             :              {
  193486             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193487             :              }
  193488             : #endif
  193489           0 :           start->set_parent(initializedName);
  193490           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  193491             : 
  193492             : #if 0
  193493             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  193494             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  193495             : 
  193496             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  193497             :        // ROSE_ASSERT(end != NULL);
  193498             :           if (end == NULL)
  193499             :              {
  193500             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  193501             :              }
  193502             :             else
  193503             :              {
  193504             :                if (end->get_parent() == NULL)
  193505             :                   {
  193506             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193507             :                   }
  193508             :                end->set_parent(initializedName);
  193509             :                ROSE_ASSERT(end->get_parent() != NULL);
  193510             :              }
  193511             : #endif
  193512             :         }
  193513             : 
  193514             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  193515           0 :      help.insertCopiedNodePair(this,result);
  193516             : 
  193517             :   // printf ("End of copy SgTypeTraitBuiltinOperator = %p = %s \n",this,SageInterface::get_name(this).c_str());
  193518             : 
  193519             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  193520             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  193521           0 :      help.decrementDepth();
  193522             : 
  193523             :   // Test if this is the root of the copy!
  193524           0 :      if (help.get_depth() == 0)
  193525             :         {
  193526             :        // This is the original calling node.
  193527             : 
  193528             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  193529             :        // printf ("Calling SgTypeTraitBuiltinOperator::fixupCopy() (from root of AST being copied) \n");
  193530             : #if ALT_FIXUP_COPY
  193531             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  193532           0 :           fixupCopy_scopes (result,help);
  193533           0 :           fixupCopy_symbols (result,help);
  193534           0 :           fixupCopy_references (result,help);
  193535             : #else
  193536             :           fixupCopy(result,help);
  193537             : #endif
  193538             :        // Allow this to be called recursively, so accumulate the state.
  193539             :        // Also, clear the state in the SgCopyHelp object.
  193540             :        // help.clearState();
  193541             :         }
  193542             : 
  193543           0 :      return result;
  193544             :    }
  193545             : 
  193546             : 
  193547             : /* #line 193548 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  193548             : 
  193549             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193550             : 
  193551           0 : SgNode* SgCompoundLiteralExp::copy ( SgCopyHelp& help) const
  193552             :    {
  193553           0 :      SgCompoundLiteralExp* result = NULL;
  193554             : 
  193555             :   // printf ("Copy SgCompoundLiteralExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  193556             : 
  193557             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  193558             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  193559             :   // The default value of the depth is 0, so after this call the depth is 1!
  193560           0 :      help.incrementDepth();
  193561             : 
  193562             : #if 0
  193563             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  193564             :   // but it is not generally true that things can only be copied once!
  193565             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  193566             :   // AstAttribute* existingAttribute = const_cast<SgCompoundLiteralExp*>(this)->attribute["copied"];
  193567             :      bool previouslyCopied = const_cast<SgCompoundLiteralExp*>(this)->attribute.exists("copied");
  193568             :      if (previouslyCopied == true)
  193569             :         {
  193570             :           this->get_file_info()->display("Called from copy SgCompoundLiteralExp: debug");
  193571             :         }
  193572             :      ROSE_ASSERT(previouslyCopied == false);
  193573             : 
  193574             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  193575             :      AstAttribute* newAttribute = new AstAttribute();
  193576             :      ROSE_ASSERT(newAttribute != NULL);
  193577             : 
  193578             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  193579             :      const_cast<SgCompoundLiteralExp*>(this)->attribute.add("copied",newAttribute);
  193580             : #endif
  193581             : 
  193582             :   // Copy data members from base classes
  193583             :   // Copy constructor parameter data member: startOfConstruct_copy
  193584             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  193585             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  193586           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  193587           0 :      if ( p_startOfConstruct != NULL ) 
  193588             :         { 
  193589           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  193590             :         } 
  193591             :        else 
  193592             :         { 
  193593             :           startOfConstruct_copy = NULL; 
  193594             :         } 
  193595             :   // Copy constructor parameter data member: symbol_copy
  193596             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol
  193597             :   // case: toBeCopied == COPY_DATA for symbol
  193598           0 :      SgVariableSymbol* symbol_copy = p_symbol; 
  193599             :  
  193600             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193601             : 
  193602             :   // Build an empty copy of this object (will be filled in, but 
  193603             :   // the parent can't be set and must be set by the caller)
  193604           0 :      result = new SgCompoundLiteralExp(  startOfConstruct_copy, symbol_copy );
  193605           0 :      ROSE_ASSERT(result != NULL);
  193606             : 
  193607             :   // Copy data members of "this" class
  193608             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  193609             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  193610             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  193611           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  193612           0 :      if ( p_endOfConstruct != NULL ) 
  193613             :         { 
  193614           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  193615             :         } 
  193616             :        else 
  193617             :         { 
  193618             :           endOfConstruct_copy = NULL; 
  193619             :         } 
  193620             :   /* check for a valid pointer and delete if present */ 
  193621           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  193622             :   /* add assignment to result here */ 
  193623           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  193624             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  193625             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  193626             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  193627           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  193628           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  193629             :         { 
  193630           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  193631             :         } 
  193632             :        else 
  193633             :         { 
  193634             :           attachedPreprocessingInfoPtr_copy = NULL; 
  193635             :         } 
  193636             :   /* check for a valid pointer and delete if present */ 
  193637           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  193638             :   /* add assignment to result here */ 
  193639           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  193640             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  193641             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  193642             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  193643           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  193644           0 :      if ( p_attributeMechanism != NULL ) 
  193645             :         { 
  193646           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  193647             :         } 
  193648             :        else 
  193649             :         { 
  193650             :           attributeMechanism_copy = NULL; 
  193651             :         } 
  193652             :   /* check for a valid pointer and delete if present */ 
  193653           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  193654             :   /* add assignment to result here */ 
  193655           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  193656             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  193657             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  193658             :   // case: toBeCopied == COPY_DATA for need_paren
  193659           0 :      bool need_paren_copy = p_need_paren; 
  193660           0 :      result->p_need_paren = need_paren_copy; 
  193661             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  193662             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  193663             :   // case: toBeCopied == COPY_DATA for lvalue
  193664           0 :      bool lvalue_copy = p_lvalue; 
  193665           0 :      result->p_lvalue = lvalue_copy; 
  193666             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  193667             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  193668             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  193669           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  193670           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  193671             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  193672             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  193673             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  193674           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  193675           0 :      if ( p_operatorPosition != NULL ) 
  193676             :         { 
  193677           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  193678             :         } 
  193679             :        else 
  193680             :         { 
  193681             :           operatorPosition_copy = NULL; 
  193682             :         } 
  193683             :   /* check for a valid pointer and delete if present */ 
  193684           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  193685             :   /* add assignment to result here */ 
  193686           0 :      result->p_operatorPosition = operatorPosition_copy; 
  193687             : 
  193688             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193689             : 
  193690             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  193691             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  193692             :   // fixupCopy(result,help);
  193693             : 
  193694             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  193695             :   // the Sg_File_Info objects that are built for the new IR nodes.
  193696           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  193697           0 :      if (locatedNode != NULL)
  193698             :         {
  193699             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  193700           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  193701           0 :           ROSE_ASSERT(start != NULL);
  193702             : #if 0
  193703             :        // Debugging information
  193704             :           if (start->get_parent() == NULL)
  193705             :              {
  193706             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193707             :              }
  193708             : #endif
  193709           0 :           start->set_parent(locatedNode);
  193710           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  193711             : 
  193712           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  193713             : 
  193714             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  193715             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  193716             :        // ROSE_ASSERT(end != NULL);
  193717           0 :           if (end == NULL)
  193718             :              {
  193719           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  193720             :              }
  193721             :             else
  193722             :              {
  193723             : #if 0
  193724             :             // Debugging information
  193725             :                if (end->get_parent() == NULL)
  193726             :                   {
  193727             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193728             :                   }
  193729             : #endif
  193730           0 :                end->set_parent(locatedNode);
  193731           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  193732             :              }
  193733             : 
  193734           0 :           SgExpression* expression = isSgExpression(result);
  193735           0 :           if (isSgExpression(this) != NULL)
  193736             :              {
  193737           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  193738             : 
  193739             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  193740           0 :                if (operatorPosition != NULL)
  193741             :                   {
  193742             : #if 0
  193743             :                  // Debugging information
  193744             :                     if (operatorPosition->get_parent() == NULL)
  193745             :                        {
  193746             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193747             :                        }
  193748             : #endif
  193749           0 :                     operatorPosition->set_parent(expression);
  193750           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  193751             :                   }
  193752             :              }
  193753             :         }
  193754             : 
  193755             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  193756           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  193757           0 :      if (initializedName != NULL)
  193758             :         {
  193759             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  193760           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  193761           0 :           ROSE_ASSERT(start != NULL);
  193762             : #if 0
  193763             :        // Debugging information
  193764             :           if (start->get_parent() == NULL)
  193765             :              {
  193766             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193767             :              }
  193768             : #endif
  193769           0 :           start->set_parent(initializedName);
  193770           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  193771             : 
  193772             : #if 0
  193773             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  193774             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  193775             : 
  193776             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  193777             :        // ROSE_ASSERT(end != NULL);
  193778             :           if (end == NULL)
  193779             :              {
  193780             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  193781             :              }
  193782             :             else
  193783             :              {
  193784             :                if (end->get_parent() == NULL)
  193785             :                   {
  193786             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193787             :                   }
  193788             :                end->set_parent(initializedName);
  193789             :                ROSE_ASSERT(end->get_parent() != NULL);
  193790             :              }
  193791             : #endif
  193792             :         }
  193793             : 
  193794             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  193795           0 :      help.insertCopiedNodePair(this,result);
  193796             : 
  193797             :   // printf ("End of copy SgCompoundLiteralExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  193798             : 
  193799             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  193800             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  193801           0 :      help.decrementDepth();
  193802             : 
  193803             :   // Test if this is the root of the copy!
  193804           0 :      if (help.get_depth() == 0)
  193805             :         {
  193806             :        // This is the original calling node.
  193807             : 
  193808             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  193809             :        // printf ("Calling SgCompoundLiteralExp::fixupCopy() (from root of AST being copied) \n");
  193810             : #if ALT_FIXUP_COPY
  193811             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  193812           0 :           fixupCopy_scopes (result,help);
  193813           0 :           fixupCopy_symbols (result,help);
  193814           0 :           fixupCopy_references (result,help);
  193815             : #else
  193816             :           fixupCopy(result,help);
  193817             : #endif
  193818             :        // Allow this to be called recursively, so accumulate the state.
  193819             :        // Also, clear the state in the SgCopyHelp object.
  193820             :        // help.clearState();
  193821             :         }
  193822             : 
  193823           0 :      return result;
  193824             :    }
  193825             : 
  193826             : 
  193827             : /* #line 193828 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  193828             : 
  193829             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193830             : 
  193831           0 : SgNode* SgTypeExpression::copy ( SgCopyHelp& help) const
  193832             :    {
  193833           0 :      SgTypeExpression* result = NULL;
  193834             : 
  193835             :   // printf ("Copy SgTypeExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  193836             : 
  193837             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  193838             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  193839             :   // The default value of the depth is 0, so after this call the depth is 1!
  193840           0 :      help.incrementDepth();
  193841             : 
  193842             : #if 0
  193843             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  193844             :   // but it is not generally true that things can only be copied once!
  193845             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  193846             :   // AstAttribute* existingAttribute = const_cast<SgTypeExpression*>(this)->attribute["copied"];
  193847             :      bool previouslyCopied = const_cast<SgTypeExpression*>(this)->attribute.exists("copied");
  193848             :      if (previouslyCopied == true)
  193849             :         {
  193850             :           this->get_file_info()->display("Called from copy SgTypeExpression: debug");
  193851             :         }
  193852             :      ROSE_ASSERT(previouslyCopied == false);
  193853             : 
  193854             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  193855             :      AstAttribute* newAttribute = new AstAttribute();
  193856             :      ROSE_ASSERT(newAttribute != NULL);
  193857             : 
  193858             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  193859             :      const_cast<SgTypeExpression*>(this)->attribute.add("copied",newAttribute);
  193860             : #endif
  193861             : 
  193862             :   // Copy data members from base classes
  193863             :   // Copy constructor parameter data member: startOfConstruct_copy
  193864             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  193865             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  193866           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  193867           0 :      if ( p_startOfConstruct != NULL ) 
  193868             :         { 
  193869           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  193870             :         } 
  193871             :        else 
  193872             :         { 
  193873             :           startOfConstruct_copy = NULL; 
  193874             :         } 
  193875             :   // Copy constructor parameter data member: type_copy
  193876             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
  193877             :   // case: toBeCopied == COPY_DATA for type
  193878           0 :      SgType* type_copy = p_type; 
  193879             :  
  193880             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193881             : 
  193882             :   // Build an empty copy of this object (will be filled in, but 
  193883             :   // the parent can't be set and must be set by the caller)
  193884           0 :      result = new SgTypeExpression(  startOfConstruct_copy, type_copy );
  193885           0 :      ROSE_ASSERT(result != NULL);
  193886             : 
  193887             :   // Copy data members of "this" class
  193888             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  193889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  193890             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  193891           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  193892           0 :      if ( p_endOfConstruct != NULL ) 
  193893             :         { 
  193894           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  193895             :         } 
  193896             :        else 
  193897             :         { 
  193898             :           endOfConstruct_copy = NULL; 
  193899             :         } 
  193900             :   /* check for a valid pointer and delete if present */ 
  193901           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  193902             :   /* add assignment to result here */ 
  193903           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  193904             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  193905             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  193906             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  193907           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  193908           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  193909             :         { 
  193910           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  193911             :         } 
  193912             :        else 
  193913             :         { 
  193914             :           attachedPreprocessingInfoPtr_copy = NULL; 
  193915             :         } 
  193916             :   /* check for a valid pointer and delete if present */ 
  193917           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  193918             :   /* add assignment to result here */ 
  193919           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  193920             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  193921             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  193922             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  193923           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  193924           0 :      if ( p_attributeMechanism != NULL ) 
  193925             :         { 
  193926           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  193927             :         } 
  193928             :        else 
  193929             :         { 
  193930             :           attributeMechanism_copy = NULL; 
  193931             :         } 
  193932             :   /* check for a valid pointer and delete if present */ 
  193933           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  193934             :   /* add assignment to result here */ 
  193935           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  193936             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  193937             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  193938             :   // case: toBeCopied == COPY_DATA for need_paren
  193939           0 :      bool need_paren_copy = p_need_paren; 
  193940           0 :      result->p_need_paren = need_paren_copy; 
  193941             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  193942             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  193943             :   // case: toBeCopied == COPY_DATA for lvalue
  193944           0 :      bool lvalue_copy = p_lvalue; 
  193945           0 :      result->p_lvalue = lvalue_copy; 
  193946             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  193947             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  193948             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  193949           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  193950           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  193951             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  193952             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  193953             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  193954           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  193955           0 :      if ( p_operatorPosition != NULL ) 
  193956             :         { 
  193957           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  193958             :         } 
  193959             :        else 
  193960             :         { 
  193961             :           operatorPosition_copy = NULL; 
  193962             :         } 
  193963             :   /* check for a valid pointer and delete if present */ 
  193964           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  193965             :   /* add assignment to result here */ 
  193966           0 :      result->p_operatorPosition = operatorPosition_copy; 
  193967             : 
  193968             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  193969             : 
  193970             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  193971             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  193972             :   // fixupCopy(result,help);
  193973             : 
  193974             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  193975             :   // the Sg_File_Info objects that are built for the new IR nodes.
  193976           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  193977           0 :      if (locatedNode != NULL)
  193978             :         {
  193979             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  193980           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  193981           0 :           ROSE_ASSERT(start != NULL);
  193982             : #if 0
  193983             :        // Debugging information
  193984             :           if (start->get_parent() == NULL)
  193985             :              {
  193986             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  193987             :              }
  193988             : #endif
  193989           0 :           start->set_parent(locatedNode);
  193990           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  193991             : 
  193992           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  193993             : 
  193994             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  193995             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  193996             :        // ROSE_ASSERT(end != NULL);
  193997           0 :           if (end == NULL)
  193998             :              {
  193999           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  194000             :              }
  194001             :             else
  194002             :              {
  194003             : #if 0
  194004             :             // Debugging information
  194005             :                if (end->get_parent() == NULL)
  194006             :                   {
  194007             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194008             :                   }
  194009             : #endif
  194010           0 :                end->set_parent(locatedNode);
  194011           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  194012             :              }
  194013             : 
  194014           0 :           SgExpression* expression = isSgExpression(result);
  194015           0 :           if (isSgExpression(this) != NULL)
  194016             :              {
  194017           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  194018             : 
  194019             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  194020           0 :                if (operatorPosition != NULL)
  194021             :                   {
  194022             : #if 0
  194023             :                  // Debugging information
  194024             :                     if (operatorPosition->get_parent() == NULL)
  194025             :                        {
  194026             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194027             :                        }
  194028             : #endif
  194029           0 :                     operatorPosition->set_parent(expression);
  194030           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  194031             :                   }
  194032             :              }
  194033             :         }
  194034             : 
  194035             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  194036           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  194037           0 :      if (initializedName != NULL)
  194038             :         {
  194039             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  194040           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  194041           0 :           ROSE_ASSERT(start != NULL);
  194042             : #if 0
  194043             :        // Debugging information
  194044             :           if (start->get_parent() == NULL)
  194045             :              {
  194046             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194047             :              }
  194048             : #endif
  194049           0 :           start->set_parent(initializedName);
  194050           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  194051             : 
  194052             : #if 0
  194053             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  194054             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  194055             : 
  194056             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  194057             :        // ROSE_ASSERT(end != NULL);
  194058             :           if (end == NULL)
  194059             :              {
  194060             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  194061             :              }
  194062             :             else
  194063             :              {
  194064             :                if (end->get_parent() == NULL)
  194065             :                   {
  194066             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194067             :                   }
  194068             :                end->set_parent(initializedName);
  194069             :                ROSE_ASSERT(end->get_parent() != NULL);
  194070             :              }
  194071             : #endif
  194072             :         }
  194073             : 
  194074             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  194075           0 :      help.insertCopiedNodePair(this,result);
  194076             : 
  194077             :   // printf ("End of copy SgTypeExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  194078             : 
  194079             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  194080             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  194081           0 :      help.decrementDepth();
  194082             : 
  194083             :   // Test if this is the root of the copy!
  194084           0 :      if (help.get_depth() == 0)
  194085             :         {
  194086             :        // This is the original calling node.
  194087             : 
  194088             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  194089             :        // printf ("Calling SgTypeExpression::fixupCopy() (from root of AST being copied) \n");
  194090             : #if ALT_FIXUP_COPY
  194091             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  194092           0 :           fixupCopy_scopes (result,help);
  194093           0 :           fixupCopy_symbols (result,help);
  194094           0 :           fixupCopy_references (result,help);
  194095             : #else
  194096             :           fixupCopy(result,help);
  194097             : #endif
  194098             :        // Allow this to be called recursively, so accumulate the state.
  194099             :        // Also, clear the state in the SgCopyHelp object.
  194100             :        // help.clearState();
  194101             :         }
  194102             : 
  194103           0 :      return result;
  194104             :    }
  194105             : 
  194106             : 
  194107             : /* #line 194108 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  194108             : 
  194109             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  194110             : 
  194111           0 : SgNode* SgClassExp::copy ( SgCopyHelp& help) const
  194112             :    {
  194113           0 :      SgClassExp* result = NULL;
  194114             : 
  194115             :   // printf ("Copy SgClassExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  194116             : 
  194117             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  194118             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  194119             :   // The default value of the depth is 0, so after this call the depth is 1!
  194120           0 :      help.incrementDepth();
  194121             : 
  194122             : #if 0
  194123             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  194124             :   // but it is not generally true that things can only be copied once!
  194125             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  194126             :   // AstAttribute* existingAttribute = const_cast<SgClassExp*>(this)->attribute["copied"];
  194127             :      bool previouslyCopied = const_cast<SgClassExp*>(this)->attribute.exists("copied");
  194128             :      if (previouslyCopied == true)
  194129             :         {
  194130             :           this->get_file_info()->display("Called from copy SgClassExp: debug");
  194131             :         }
  194132             :      ROSE_ASSERT(previouslyCopied == false);
  194133             : 
  194134             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  194135             :      AstAttribute* newAttribute = new AstAttribute();
  194136             :      ROSE_ASSERT(newAttribute != NULL);
  194137             : 
  194138             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  194139             :      const_cast<SgClassExp*>(this)->attribute.add("copied",newAttribute);
  194140             : #endif
  194141             : 
  194142             :   // Copy data members from base classes
  194143             :   // Copy constructor parameter data member: startOfConstruct_copy
  194144             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  194145             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  194146           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  194147           0 :      if ( p_startOfConstruct != NULL ) 
  194148             :         { 
  194149           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  194150             :         } 
  194151             :        else 
  194152             :         { 
  194153             :           startOfConstruct_copy = NULL; 
  194154             :         } 
  194155             :   // Copy constructor parameter data member: class_symbol_copy
  194156             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for class_symbol
  194157             :   // case: toBeCopied == COPY_DATA for class_symbol
  194158           0 :      SgClassSymbol* class_symbol_copy = p_class_symbol; 
  194159             :   // Copy constructor parameter data member: pobj_class_copy
  194160             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for pobj_class
  194161             :   // case: toBeCopied == COPY_DATA for pobj_class
  194162           0 :      int pobj_class_copy = p_pobj_class; 
  194163             :  
  194164             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  194165             : 
  194166             :   // Build an empty copy of this object (will be filled in, but 
  194167             :   // the parent can't be set and must be set by the caller)
  194168           0 :      result = new SgClassExp(  startOfConstruct_copy, class_symbol_copy, pobj_class_copy );
  194169           0 :      ROSE_ASSERT(result != NULL);
  194170             : 
  194171             :   // Copy data members of "this" class
  194172             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  194173             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  194174             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  194175           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  194176           0 :      if ( p_endOfConstruct != NULL ) 
  194177             :         { 
  194178           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  194179             :         } 
  194180             :        else 
  194181             :         { 
  194182             :           endOfConstruct_copy = NULL; 
  194183             :         } 
  194184             :   /* check for a valid pointer and delete if present */ 
  194185           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  194186             :   /* add assignment to result here */ 
  194187           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  194188             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  194189             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  194190             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  194191           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  194192           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  194193             :         { 
  194194           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  194195             :         } 
  194196             :        else 
  194197             :         { 
  194198             :           attachedPreprocessingInfoPtr_copy = NULL; 
  194199             :         } 
  194200             :   /* check for a valid pointer and delete if present */ 
  194201           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  194202             :   /* add assignment to result here */ 
  194203           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  194204             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  194205             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  194206             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  194207           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  194208           0 :      if ( p_attributeMechanism != NULL ) 
  194209             :         { 
  194210           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  194211             :         } 
  194212             :        else 
  194213             :         { 
  194214             :           attributeMechanism_copy = NULL; 
  194215             :         } 
  194216             :   /* check for a valid pointer and delete if present */ 
  194217           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  194218             :   /* add assignment to result here */ 
  194219           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  194220             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  194221             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  194222             :   // case: toBeCopied == COPY_DATA for need_paren
  194223           0 :      bool need_paren_copy = p_need_paren; 
  194224           0 :      result->p_need_paren = need_paren_copy; 
  194225             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  194226             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  194227             :   // case: toBeCopied == COPY_DATA for lvalue
  194228           0 :      bool lvalue_copy = p_lvalue; 
  194229           0 :      result->p_lvalue = lvalue_copy; 
  194230             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  194231             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  194232             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  194233           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  194234           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  194235             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  194236             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  194237             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  194238           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  194239           0 :      if ( p_operatorPosition != NULL ) 
  194240             :         { 
  194241           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  194242             :         } 
  194243             :        else 
  194244             :         { 
  194245             :           operatorPosition_copy = NULL; 
  194246             :         } 
  194247             :   /* check for a valid pointer and delete if present */ 
  194248           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  194249             :   /* add assignment to result here */ 
  194250           0 :      result->p_operatorPosition = operatorPosition_copy; 
  194251             : 
  194252             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  194253             : 
  194254             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  194255             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  194256             :   // fixupCopy(result,help);
  194257             : 
  194258             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  194259             :   // the Sg_File_Info objects that are built for the new IR nodes.
  194260           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  194261           0 :      if (locatedNode != NULL)
  194262             :         {
  194263             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  194264           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  194265           0 :           ROSE_ASSERT(start != NULL);
  194266             : #if 0
  194267             :        // Debugging information
  194268             :           if (start->get_parent() == NULL)
  194269             :              {
  194270             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194271             :              }
  194272             : #endif
  194273           0 :           start->set_parent(locatedNode);
  194274           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  194275             : 
  194276           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  194277             : 
  194278             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  194279             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  194280             :        // ROSE_ASSERT(end != NULL);
  194281           0 :           if (end == NULL)
  194282             :              {
  194283           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  194284             :              }
  194285             :             else
  194286             :              {
  194287             : #if 0
  194288             :             // Debugging information
  194289             :                if (end->get_parent() == NULL)
  194290             :                   {
  194291             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194292             :                   }
  194293             : #endif
  194294           0 :                end->set_parent(locatedNode);
  194295           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  194296             :              }
  194297             : 
  194298           0 :           SgExpression* expression = isSgExpression(result);
  194299           0 :           if (isSgExpression(this) != NULL)
  194300             :              {
  194301           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  194302             : 
  194303             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  194304           0 :                if (operatorPosition != NULL)
  194305             :                   {
  194306             : #if 0
  194307             :                  // Debugging information
  194308             :                     if (operatorPosition->get_parent() == NULL)
  194309             :                        {
  194310             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194311             :                        }
  194312             : #endif
  194313           0 :                     operatorPosition->set_parent(expression);
  194314           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  194315             :                   }
  194316             :              }
  194317             :         }
  194318             : 
  194319             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  194320           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  194321           0 :      if (initializedName != NULL)
  194322             :         {
  194323             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  194324           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  194325           0 :           ROSE_ASSERT(start != NULL);
  194326             : #if 0
  194327             :        // Debugging information
  194328             :           if (start->get_parent() == NULL)
  194329             :              {
  194330             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194331             :              }
  194332             : #endif
  194333           0 :           start->set_parent(initializedName);
  194334           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  194335             : 
  194336             : #if 0
  194337             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  194338             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  194339             : 
  194340             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  194341             :        // ROSE_ASSERT(end != NULL);
  194342             :           if (end == NULL)
  194343             :              {
  194344             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  194345             :              }
  194346             :             else
  194347             :              {
  194348             :                if (end->get_parent() == NULL)
  194349             :                   {
  194350             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194351             :                   }
  194352             :                end->set_parent(initializedName);
  194353             :                ROSE_ASSERT(end->get_parent() != NULL);
  194354             :              }
  194355             : #endif
  194356             :         }
  194357             : 
  194358             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  194359           0 :      help.insertCopiedNodePair(this,result);
  194360             : 
  194361             :   // printf ("End of copy SgClassExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  194362             : 
  194363             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  194364             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  194365           0 :      help.decrementDepth();
  194366             : 
  194367             :   // Test if this is the root of the copy!
  194368           0 :      if (help.get_depth() == 0)
  194369             :         {
  194370             :        // This is the original calling node.
  194371             : 
  194372             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  194373             :        // printf ("Calling SgClassExp::fixupCopy() (from root of AST being copied) \n");
  194374             : #if ALT_FIXUP_COPY
  194375             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  194376           0 :           fixupCopy_scopes (result,help);
  194377           0 :           fixupCopy_symbols (result,help);
  194378           0 :           fixupCopy_references (result,help);
  194379             : #else
  194380             :           fixupCopy(result,help);
  194381             : #endif
  194382             :        // Allow this to be called recursively, so accumulate the state.
  194383             :        // Also, clear the state in the SgCopyHelp object.
  194384             :        // help.clearState();
  194385             :         }
  194386             : 
  194387           0 :      return result;
  194388             :    }
  194389             : 
  194390             : 
  194391             : /* #line 194392 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  194392             : 
  194393             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  194394             : 
  194395           0 : SgNode* SgFunctionParameterRefExp::copy ( SgCopyHelp& help) const
  194396             :    {
  194397           0 :      SgFunctionParameterRefExp* result = NULL;
  194398             : 
  194399             :   // printf ("Copy SgFunctionParameterRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  194400             : 
  194401             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  194402             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  194403             :   // The default value of the depth is 0, so after this call the depth is 1!
  194404           0 :      help.incrementDepth();
  194405             : 
  194406             : #if 0
  194407             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  194408             :   // but it is not generally true that things can only be copied once!
  194409             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  194410             :   // AstAttribute* existingAttribute = const_cast<SgFunctionParameterRefExp*>(this)->attribute["copied"];
  194411             :      bool previouslyCopied = const_cast<SgFunctionParameterRefExp*>(this)->attribute.exists("copied");
  194412             :      if (previouslyCopied == true)
  194413             :         {
  194414             :           this->get_file_info()->display("Called from copy SgFunctionParameterRefExp: debug");
  194415             :         }
  194416             :      ROSE_ASSERT(previouslyCopied == false);
  194417             : 
  194418             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  194419             :      AstAttribute* newAttribute = new AstAttribute();
  194420             :      ROSE_ASSERT(newAttribute != NULL);
  194421             : 
  194422             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  194423             :      const_cast<SgFunctionParameterRefExp*>(this)->attribute.add("copied",newAttribute);
  194424             : #endif
  194425             : 
  194426             :   // Copy data members from base classes
  194427             :   // Copy constructor parameter data member: startOfConstruct_copy
  194428             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  194429             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  194430           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  194431           0 :      if ( p_startOfConstruct != NULL ) 
  194432             :         { 
  194433           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  194434             :         } 
  194435             :        else 
  194436             :         { 
  194437             :           startOfConstruct_copy = NULL; 
  194438             :         } 
  194439             :   // Copy constructor parameter data member: parameter_number_copy
  194440             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameter_number
  194441             :   // case: toBeCopied == COPY_DATA for parameter_number
  194442           0 :      int parameter_number_copy = p_parameter_number; 
  194443             :   // Copy constructor parameter data member: parameter_levels_up_copy
  194444             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameter_levels_up
  194445             :   // case: toBeCopied == COPY_DATA for parameter_levels_up
  194446           0 :      int parameter_levels_up_copy = p_parameter_levels_up; 
  194447             :  
  194448             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  194449             : 
  194450             :   // Build an empty copy of this object (will be filled in, but 
  194451             :   // the parent can't be set and must be set by the caller)
  194452           0 :      result = new SgFunctionParameterRefExp(  startOfConstruct_copy, parameter_number_copy, parameter_levels_up_copy );
  194453           0 :      ROSE_ASSERT(result != NULL);
  194454             : 
  194455             :   // Copy data members of "this" class
  194456             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  194457             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  194458             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  194459           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  194460           0 :      if ( p_endOfConstruct != NULL ) 
  194461             :         { 
  194462           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  194463             :         } 
  194464             :        else 
  194465             :         { 
  194466             :           endOfConstruct_copy = NULL; 
  194467             :         } 
  194468             :   /* check for a valid pointer and delete if present */ 
  194469           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  194470             :   /* add assignment to result here */ 
  194471           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  194472             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  194473             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  194474             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  194475           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  194476           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  194477             :         { 
  194478           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  194479             :         } 
  194480             :        else 
  194481             :         { 
  194482             :           attachedPreprocessingInfoPtr_copy = NULL; 
  194483             :         } 
  194484             :   /* check for a valid pointer and delete if present */ 
  194485           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  194486             :   /* add assignment to result here */ 
  194487           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  194488             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  194489             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  194490             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  194491           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  194492           0 :      if ( p_attributeMechanism != NULL ) 
  194493             :         { 
  194494           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  194495             :         } 
  194496             :        else 
  194497             :         { 
  194498             :           attributeMechanism_copy = NULL; 
  194499             :         } 
  194500             :   /* check for a valid pointer and delete if present */ 
  194501           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  194502             :   /* add assignment to result here */ 
  194503           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  194504             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  194505             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  194506             :   // case: toBeCopied == COPY_DATA for need_paren
  194507           0 :      bool need_paren_copy = p_need_paren; 
  194508           0 :      result->p_need_paren = need_paren_copy; 
  194509             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  194510             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  194511             :   // case: toBeCopied == COPY_DATA for lvalue
  194512           0 :      bool lvalue_copy = p_lvalue; 
  194513           0 :      result->p_lvalue = lvalue_copy; 
  194514             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  194515             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  194516             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  194517           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  194518           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  194519             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  194520             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  194521             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  194522           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  194523           0 :      if ( p_operatorPosition != NULL ) 
  194524             :         { 
  194525           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  194526             :         } 
  194527             :        else 
  194528             :         { 
  194529             :           operatorPosition_copy = NULL; 
  194530             :         } 
  194531             :   /* check for a valid pointer and delete if present */ 
  194532           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  194533             :   /* add assignment to result here */ 
  194534           0 :      result->p_operatorPosition = operatorPosition_copy; 
  194535             :   // Copy non-constructor parameter data member (access function): parameter_expression_copy
  194536           0 :      SgExpression* parameter_expression_copy; 
  194537             :   // case: not a listType for (using conditionalToCopyVariable)parameter_expression
  194538           0 :           if (get_parameter_expression() != NULL) 
  194539             :              { 
  194540           0 :                parameter_expression_copy = static_cast<SgExpression*>(help.copyAst(get_parameter_expression())); 
  194541             :              } 
  194542             :             else 
  194543             :              { 
  194544             :                parameter_expression_copy = NULL; 
  194545             :              } 
  194546             :   /* check for a valid pointer and delete if present */ 
  194547           0 :      if (result->p_parameter_expression != NULL) delete result->p_parameter_expression; 
  194548           0 :      result->p_parameter_expression = parameter_expression_copy; 
  194549             :   // case: not a listType for (using conditionalToSetParent)parameter_expression
  194550           0 :           if ( (parameter_expression_copy != NULL) && (parameter_expression_copy->get_parent() == NULL) && (isSgType(parameter_expression_copy) == NULL) ) 
  194551             :              { 
  194552           0 :                parameter_expression_copy->set_parent(result); 
  194553             :              } 
  194554             :   // Copy non-constructor parameter data member (access function): parameter_type_copy
  194555             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for parameter_type
  194556             :   // case: toBeCopied == COPY_DATA for parameter_type
  194557           0 :      SgType* parameter_type_copy = p_parameter_type; 
  194558           0 :      result->p_parameter_type = parameter_type_copy; 
  194559             : 
  194560             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  194561             : 
  194562             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  194563             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  194564             :   // fixupCopy(result,help);
  194565             : 
  194566             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  194567             :   // the Sg_File_Info objects that are built for the new IR nodes.
  194568           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  194569           0 :      if (locatedNode != NULL)
  194570             :         {
  194571             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  194572           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  194573           0 :           ROSE_ASSERT(start != NULL);
  194574             : #if 0
  194575             :        // Debugging information
  194576             :           if (start->get_parent() == NULL)
  194577             :              {
  194578             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194579             :              }
  194580             : #endif
  194581           0 :           start->set_parent(locatedNode);
  194582           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  194583             : 
  194584           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  194585             : 
  194586             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  194587             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  194588             :        // ROSE_ASSERT(end != NULL);
  194589           0 :           if (end == NULL)
  194590             :              {
  194591           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  194592             :              }
  194593             :             else
  194594             :              {
  194595             : #if 0
  194596             :             // Debugging information
  194597             :                if (end->get_parent() == NULL)
  194598             :                   {
  194599             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194600             :                   }
  194601             : #endif
  194602           0 :                end->set_parent(locatedNode);
  194603           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  194604             :              }
  194605             : 
  194606           0 :           SgExpression* expression = isSgExpression(result);
  194607           0 :           if (isSgExpression(this) != NULL)
  194608             :              {
  194609           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  194610             : 
  194611             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  194612           0 :                if (operatorPosition != NULL)
  194613             :                   {
  194614             : #if 0
  194615             :                  // Debugging information
  194616             :                     if (operatorPosition->get_parent() == NULL)
  194617             :                        {
  194618             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194619             :                        }
  194620             : #endif
  194621           0 :                     operatorPosition->set_parent(expression);
  194622           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  194623             :                   }
  194624             :              }
  194625             :         }
  194626             : 
  194627             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  194628           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  194629           0 :      if (initializedName != NULL)
  194630             :         {
  194631             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  194632           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  194633           0 :           ROSE_ASSERT(start != NULL);
  194634             : #if 0
  194635             :        // Debugging information
  194636             :           if (start->get_parent() == NULL)
  194637             :              {
  194638             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194639             :              }
  194640             : #endif
  194641           0 :           start->set_parent(initializedName);
  194642           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  194643             : 
  194644             : #if 0
  194645             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  194646             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  194647             : 
  194648             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  194649             :        // ROSE_ASSERT(end != NULL);
  194650             :           if (end == NULL)
  194651             :              {
  194652             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  194653             :              }
  194654             :             else
  194655             :              {
  194656             :                if (end->get_parent() == NULL)
  194657             :                   {
  194658             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194659             :                   }
  194660             :                end->set_parent(initializedName);
  194661             :                ROSE_ASSERT(end->get_parent() != NULL);
  194662             :              }
  194663             : #endif
  194664             :         }
  194665             : 
  194666             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  194667           0 :      help.insertCopiedNodePair(this,result);
  194668             : 
  194669             :   // printf ("End of copy SgFunctionParameterRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  194670             : 
  194671             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  194672             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  194673           0 :      help.decrementDepth();
  194674             : 
  194675             :   // Test if this is the root of the copy!
  194676           0 :      if (help.get_depth() == 0)
  194677             :         {
  194678             :        // This is the original calling node.
  194679             : 
  194680             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  194681             :        // printf ("Calling SgFunctionParameterRefExp::fixupCopy() (from root of AST being copied) \n");
  194682             : #if ALT_FIXUP_COPY
  194683             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  194684           0 :           fixupCopy_scopes (result,help);
  194685           0 :           fixupCopy_symbols (result,help);
  194686           0 :           fixupCopy_references (result,help);
  194687             : #else
  194688             :           fixupCopy(result,help);
  194689             : #endif
  194690             :        // Allow this to be called recursively, so accumulate the state.
  194691             :        // Also, clear the state in the SgCopyHelp object.
  194692             :        // help.clearState();
  194693             :         }
  194694             : 
  194695           0 :      return result;
  194696             :    }
  194697             : 
  194698             : 
  194699             : /* #line 194700 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  194700             : 
  194701             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  194702             : 
  194703           0 : SgNode* SgLambdaExp::copy ( SgCopyHelp& help) const
  194704             :    {
  194705           0 :      SgLambdaExp* result = NULL;
  194706             : 
  194707             :   // printf ("Copy SgLambdaExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  194708             : 
  194709             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  194710             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  194711             :   // The default value of the depth is 0, so after this call the depth is 1!
  194712           0 :      help.incrementDepth();
  194713             : 
  194714             : #if 0
  194715             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  194716             :   // but it is not generally true that things can only be copied once!
  194717             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  194718             :   // AstAttribute* existingAttribute = const_cast<SgLambdaExp*>(this)->attribute["copied"];
  194719             :      bool previouslyCopied = const_cast<SgLambdaExp*>(this)->attribute.exists("copied");
  194720             :      if (previouslyCopied == true)
  194721             :         {
  194722             :           this->get_file_info()->display("Called from copy SgLambdaExp: debug");
  194723             :         }
  194724             :      ROSE_ASSERT(previouslyCopied == false);
  194725             : 
  194726             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  194727             :      AstAttribute* newAttribute = new AstAttribute();
  194728             :      ROSE_ASSERT(newAttribute != NULL);
  194729             : 
  194730             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  194731             :      const_cast<SgLambdaExp*>(this)->attribute.add("copied",newAttribute);
  194732             : #endif
  194733             : 
  194734             :   // Copy data members from base classes
  194735             :   // Copy constructor parameter data member: startOfConstruct_copy
  194736             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  194737             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  194738           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  194739           0 :      if ( p_startOfConstruct != NULL ) 
  194740             :         { 
  194741           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  194742             :         } 
  194743             :        else 
  194744             :         { 
  194745             :           startOfConstruct_copy = NULL; 
  194746             :         } 
  194747             :   // Copy constructor parameter data member: lambda_capture_list_copy
  194748           0 :      SgLambdaCaptureList* lambda_capture_list_copy; 
  194749             :   // case: not a listType for (using conditionalToCopyVariable)lambda_capture_list
  194750           0 :           if (get_lambda_capture_list() != NULL) 
  194751             :              { 
  194752           0 :                lambda_capture_list_copy = static_cast<SgLambdaCaptureList*>(help.copyAst(get_lambda_capture_list())); 
  194753             :              } 
  194754             :             else 
  194755             :              { 
  194756             :                lambda_capture_list_copy = NULL; 
  194757             :              } 
  194758             :   // Copy constructor parameter data member: lambda_closure_class_copy
  194759           0 :      SgClassDeclaration* lambda_closure_class_copy; 
  194760             :   // case: not a listType for (using conditionalToCopyVariable)lambda_closure_class
  194761           0 :           if (get_lambda_closure_class() != NULL) 
  194762             :              { 
  194763           0 :                lambda_closure_class_copy = static_cast<SgClassDeclaration*>(help.copyAst(get_lambda_closure_class())); 
  194764             :              } 
  194765             :             else 
  194766             :              { 
  194767             :                lambda_closure_class_copy = NULL; 
  194768             :              } 
  194769             :   // Copy constructor parameter data member: lambda_function_copy
  194770           0 :      SgFunctionDeclaration* lambda_function_copy; 
  194771             :   // case: not a listType for (using conditionalToCopyVariable)lambda_function
  194772           0 :           if (get_lambda_function() != NULL) 
  194773             :              { 
  194774           0 :                lambda_function_copy = static_cast<SgFunctionDeclaration*>(help.copyAst(get_lambda_function())); 
  194775             :              } 
  194776             :             else 
  194777             :              { 
  194778             :                lambda_function_copy = NULL; 
  194779             :              } 
  194780             :  
  194781             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  194782             : 
  194783             :   // Build an empty copy of this object (will be filled in, but 
  194784             :   // the parent can't be set and must be set by the caller)
  194785           0 :      result = new SgLambdaExp(  startOfConstruct_copy, lambda_capture_list_copy, lambda_closure_class_copy, lambda_function_copy );
  194786           0 :      ROSE_ASSERT(result != NULL);
  194787             : 
  194788             :   // Copy data members of "this" class
  194789             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  194790             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  194791             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  194792           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  194793           0 :      if ( p_endOfConstruct != NULL ) 
  194794             :         { 
  194795           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  194796             :         } 
  194797             :        else 
  194798             :         { 
  194799             :           endOfConstruct_copy = NULL; 
  194800             :         } 
  194801             :   /* check for a valid pointer and delete if present */ 
  194802           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  194803             :   /* add assignment to result here */ 
  194804           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  194805             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  194806             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  194807             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  194808           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  194809           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  194810             :         { 
  194811           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  194812             :         } 
  194813             :        else 
  194814             :         { 
  194815             :           attachedPreprocessingInfoPtr_copy = NULL; 
  194816             :         } 
  194817             :   /* check for a valid pointer and delete if present */ 
  194818           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  194819             :   /* add assignment to result here */ 
  194820           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  194821             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  194822             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  194823             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  194824           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  194825           0 :      if ( p_attributeMechanism != NULL ) 
  194826             :         { 
  194827           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  194828             :         } 
  194829             :        else 
  194830             :         { 
  194831             :           attributeMechanism_copy = NULL; 
  194832             :         } 
  194833             :   /* check for a valid pointer and delete if present */ 
  194834           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  194835             :   /* add assignment to result here */ 
  194836           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  194837             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  194838             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  194839             :   // case: toBeCopied == COPY_DATA for need_paren
  194840           0 :      bool need_paren_copy = p_need_paren; 
  194841           0 :      result->p_need_paren = need_paren_copy; 
  194842             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  194843             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  194844             :   // case: toBeCopied == COPY_DATA for lvalue
  194845           0 :      bool lvalue_copy = p_lvalue; 
  194846           0 :      result->p_lvalue = lvalue_copy; 
  194847             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  194848             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  194849             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  194850           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  194851           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  194852             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  194853             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  194854             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  194855           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  194856           0 :      if ( p_operatorPosition != NULL ) 
  194857             :         { 
  194858           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  194859             :         } 
  194860             :        else 
  194861             :         { 
  194862             :           operatorPosition_copy = NULL; 
  194863             :         } 
  194864             :   /* check for a valid pointer and delete if present */ 
  194865           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  194866             :   /* add assignment to result here */ 
  194867           0 :      result->p_operatorPosition = operatorPosition_copy; 
  194868             :   // Copy non-constructor parameter data member (access function): is_mutable_copy
  194869             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_mutable
  194870             :   // case: toBeCopied == COPY_DATA for is_mutable
  194871           0 :      bool is_mutable_copy = p_is_mutable; 
  194872           0 :      result->p_is_mutable = is_mutable_copy; 
  194873             :   // Copy non-constructor parameter data member (access function): capture_default_copy
  194874             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for capture_default
  194875             :   // case: toBeCopied == COPY_DATA for capture_default
  194876           0 :      bool capture_default_copy = p_capture_default; 
  194877           0 :      result->p_capture_default = capture_default_copy; 
  194878             :   // Copy non-constructor parameter data member (access function): default_is_by_reference_copy
  194879             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for default_is_by_reference
  194880             :   // case: toBeCopied == COPY_DATA for default_is_by_reference
  194881           0 :      bool default_is_by_reference_copy = p_default_is_by_reference; 
  194882           0 :      result->p_default_is_by_reference = default_is_by_reference_copy; 
  194883             :   // Copy non-constructor parameter data member (access function): explicit_return_type_copy
  194884             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for explicit_return_type
  194885             :   // case: toBeCopied == COPY_DATA for explicit_return_type
  194886           0 :      bool explicit_return_type_copy = p_explicit_return_type; 
  194887           0 :      result->p_explicit_return_type = explicit_return_type_copy; 
  194888             :   // Copy non-constructor parameter data member (access function): has_parameter_decl_copy
  194889             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for has_parameter_decl
  194890             :   // case: toBeCopied == COPY_DATA for has_parameter_decl
  194891           0 :      bool has_parameter_decl_copy = p_has_parameter_decl; 
  194892           0 :      result->p_has_parameter_decl = has_parameter_decl_copy; 
  194893             :   // Copy non-constructor parameter data member (access function): is_device_copy
  194894             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_device
  194895             :   // case: toBeCopied == COPY_DATA for is_device
  194896           0 :      bool is_device_copy = p_is_device; 
  194897           0 :      result->p_is_device = is_device_copy; 
  194898             :   // case: not a listType for (using conditionalToSetParent)lambda_capture_list
  194899           0 :           if ( (lambda_capture_list_copy != NULL) && (lambda_capture_list_copy->get_parent() == NULL) && (isSgType(lambda_capture_list_copy) == NULL) ) 
  194900             :              { 
  194901           0 :                lambda_capture_list_copy->set_parent(result); 
  194902             :              } 
  194903             :   // case: not a listType for (using conditionalToSetParent)lambda_closure_class
  194904           0 :           if ( (lambda_closure_class_copy != NULL) && (lambda_closure_class_copy->get_parent() == NULL) && (isSgType(lambda_closure_class_copy) == NULL) ) 
  194905             :              { 
  194906           0 :                lambda_closure_class_copy->set_parent(result); 
  194907             :              } 
  194908             :   // case: not a listType for (using conditionalToSetParent)lambda_function
  194909           0 :           if ( (lambda_function_copy != NULL) && (lambda_function_copy->get_parent() == NULL) && (isSgType(lambda_function_copy) == NULL) ) 
  194910             :              { 
  194911           0 :                lambda_function_copy->set_parent(result); 
  194912             :              } 
  194913             : 
  194914             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  194915             : 
  194916             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  194917             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  194918             :   // fixupCopy(result,help);
  194919             : 
  194920             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  194921             :   // the Sg_File_Info objects that are built for the new IR nodes.
  194922           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  194923           0 :      if (locatedNode != NULL)
  194924             :         {
  194925             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  194926           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  194927           0 :           ROSE_ASSERT(start != NULL);
  194928             : #if 0
  194929             :        // Debugging information
  194930             :           if (start->get_parent() == NULL)
  194931             :              {
  194932             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194933             :              }
  194934             : #endif
  194935           0 :           start->set_parent(locatedNode);
  194936           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  194937             : 
  194938           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  194939             : 
  194940             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  194941             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  194942             :        // ROSE_ASSERT(end != NULL);
  194943           0 :           if (end == NULL)
  194944             :              {
  194945           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  194946             :              }
  194947             :             else
  194948             :              {
  194949             : #if 0
  194950             :             // Debugging information
  194951             :                if (end->get_parent() == NULL)
  194952             :                   {
  194953             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194954             :                   }
  194955             : #endif
  194956           0 :                end->set_parent(locatedNode);
  194957           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  194958             :              }
  194959             : 
  194960           0 :           SgExpression* expression = isSgExpression(result);
  194961           0 :           if (isSgExpression(this) != NULL)
  194962             :              {
  194963           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  194964             : 
  194965             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  194966           0 :                if (operatorPosition != NULL)
  194967             :                   {
  194968             : #if 0
  194969             :                  // Debugging information
  194970             :                     if (operatorPosition->get_parent() == NULL)
  194971             :                        {
  194972             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194973             :                        }
  194974             : #endif
  194975           0 :                     operatorPosition->set_parent(expression);
  194976           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  194977             :                   }
  194978             :              }
  194979             :         }
  194980             : 
  194981             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  194982           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  194983           0 :      if (initializedName != NULL)
  194984             :         {
  194985             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  194986           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  194987           0 :           ROSE_ASSERT(start != NULL);
  194988             : #if 0
  194989             :        // Debugging information
  194990             :           if (start->get_parent() == NULL)
  194991             :              {
  194992             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  194993             :              }
  194994             : #endif
  194995           0 :           start->set_parent(initializedName);
  194996           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  194997             : 
  194998             : #if 0
  194999             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  195000             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  195001             : 
  195002             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  195003             :        // ROSE_ASSERT(end != NULL);
  195004             :           if (end == NULL)
  195005             :              {
  195006             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  195007             :              }
  195008             :             else
  195009             :              {
  195010             :                if (end->get_parent() == NULL)
  195011             :                   {
  195012             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195013             :                   }
  195014             :                end->set_parent(initializedName);
  195015             :                ROSE_ASSERT(end->get_parent() != NULL);
  195016             :              }
  195017             : #endif
  195018             :         }
  195019             : 
  195020             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  195021           0 :      help.insertCopiedNodePair(this,result);
  195022             : 
  195023             :   // printf ("End of copy SgLambdaExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  195024             : 
  195025             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  195026             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  195027           0 :      help.decrementDepth();
  195028             : 
  195029             :   // Test if this is the root of the copy!
  195030           0 :      if (help.get_depth() == 0)
  195031             :         {
  195032             :        // This is the original calling node.
  195033             : 
  195034             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  195035             :        // printf ("Calling SgLambdaExp::fixupCopy() (from root of AST being copied) \n");
  195036             : #if ALT_FIXUP_COPY
  195037             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  195038           0 :           fixupCopy_scopes (result,help);
  195039           0 :           fixupCopy_symbols (result,help);
  195040           0 :           fixupCopy_references (result,help);
  195041             : #else
  195042             :           fixupCopy(result,help);
  195043             : #endif
  195044             :        // Allow this to be called recursively, so accumulate the state.
  195045             :        // Also, clear the state in the SgCopyHelp object.
  195046             :        // help.clearState();
  195047             :         }
  195048             : 
  195049           0 :      return result;
  195050             :    }
  195051             : 
  195052             : 
  195053             : /* #line 195054 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  195054             : 
  195055             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195056             : 
  195057           0 : SgNode* SgNoexceptOp::copy ( SgCopyHelp& help) const
  195058             :    {
  195059           0 :      SgNoexceptOp* result = NULL;
  195060             : 
  195061             :   // printf ("Copy SgNoexceptOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  195062             : 
  195063             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  195064             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  195065             :   // The default value of the depth is 0, so after this call the depth is 1!
  195066           0 :      help.incrementDepth();
  195067             : 
  195068             : #if 0
  195069             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  195070             :   // but it is not generally true that things can only be copied once!
  195071             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  195072             :   // AstAttribute* existingAttribute = const_cast<SgNoexceptOp*>(this)->attribute["copied"];
  195073             :      bool previouslyCopied = const_cast<SgNoexceptOp*>(this)->attribute.exists("copied");
  195074             :      if (previouslyCopied == true)
  195075             :         {
  195076             :           this->get_file_info()->display("Called from copy SgNoexceptOp: debug");
  195077             :         }
  195078             :      ROSE_ASSERT(previouslyCopied == false);
  195079             : 
  195080             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  195081             :      AstAttribute* newAttribute = new AstAttribute();
  195082             :      ROSE_ASSERT(newAttribute != NULL);
  195083             : 
  195084             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  195085             :      const_cast<SgNoexceptOp*>(this)->attribute.add("copied",newAttribute);
  195086             : #endif
  195087             : 
  195088             :   // Copy data members from base classes
  195089             :   // Copy constructor parameter data member: startOfConstruct_copy
  195090             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  195091             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  195092           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  195093           0 :      if ( p_startOfConstruct != NULL ) 
  195094             :         { 
  195095           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  195096             :         } 
  195097             :        else 
  195098             :         { 
  195099             :           startOfConstruct_copy = NULL; 
  195100             :         } 
  195101             :   // Copy constructor parameter data member: operand_expr_copy
  195102           0 :      SgExpression* operand_expr_copy; 
  195103             :   // case: not a listType for (using conditionalToCopyVariable)operand_expr
  195104           0 :           if (get_operand_expr() != NULL) 
  195105             :              { 
  195106           0 :                operand_expr_copy = static_cast<SgExpression*>(help.copyAst(get_operand_expr())); 
  195107             :              } 
  195108             :             else 
  195109             :              { 
  195110             :                operand_expr_copy = NULL; 
  195111             :              } 
  195112             :  
  195113             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195114             : 
  195115             :   // Build an empty copy of this object (will be filled in, but 
  195116             :   // the parent can't be set and must be set by the caller)
  195117           0 :      result = new SgNoexceptOp(  startOfConstruct_copy, operand_expr_copy );
  195118           0 :      ROSE_ASSERT(result != NULL);
  195119             : 
  195120             :   // Copy data members of "this" class
  195121             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  195122             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  195123             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  195124           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  195125           0 :      if ( p_endOfConstruct != NULL ) 
  195126             :         { 
  195127           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  195128             :         } 
  195129             :        else 
  195130             :         { 
  195131             :           endOfConstruct_copy = NULL; 
  195132             :         } 
  195133             :   /* check for a valid pointer and delete if present */ 
  195134           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  195135             :   /* add assignment to result here */ 
  195136           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  195137             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  195138             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  195139             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  195140           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  195141           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  195142             :         { 
  195143           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  195144             :         } 
  195145             :        else 
  195146             :         { 
  195147             :           attachedPreprocessingInfoPtr_copy = NULL; 
  195148             :         } 
  195149             :   /* check for a valid pointer and delete if present */ 
  195150           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  195151             :   /* add assignment to result here */ 
  195152           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  195153             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  195154             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  195155             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  195156           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  195157           0 :      if ( p_attributeMechanism != NULL ) 
  195158             :         { 
  195159           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  195160             :         } 
  195161             :        else 
  195162             :         { 
  195163             :           attributeMechanism_copy = NULL; 
  195164             :         } 
  195165             :   /* check for a valid pointer and delete if present */ 
  195166           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  195167             :   /* add assignment to result here */ 
  195168           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  195169             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  195170             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  195171             :   // case: toBeCopied == COPY_DATA for need_paren
  195172           0 :      bool need_paren_copy = p_need_paren; 
  195173           0 :      result->p_need_paren = need_paren_copy; 
  195174             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  195175             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  195176             :   // case: toBeCopied == COPY_DATA for lvalue
  195177           0 :      bool lvalue_copy = p_lvalue; 
  195178           0 :      result->p_lvalue = lvalue_copy; 
  195179             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  195180             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  195181             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  195182           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  195183           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  195184             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  195185             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  195186             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  195187           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  195188           0 :      if ( p_operatorPosition != NULL ) 
  195189             :         { 
  195190           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  195191             :         } 
  195192             :        else 
  195193             :         { 
  195194             :           operatorPosition_copy = NULL; 
  195195             :         } 
  195196             :   /* check for a valid pointer and delete if present */ 
  195197           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  195198             :   /* add assignment to result here */ 
  195199           0 :      result->p_operatorPosition = operatorPosition_copy; 
  195200             :   // case: not a listType for (using conditionalToSetParent)operand_expr
  195201           0 :           if ( (operand_expr_copy != NULL) && (operand_expr_copy->get_parent() == NULL) && (isSgType(operand_expr_copy) == NULL) ) 
  195202             :              { 
  195203           0 :                operand_expr_copy->set_parent(result); 
  195204             :              } 
  195205             : 
  195206             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195207             : 
  195208             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  195209             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  195210             :   // fixupCopy(result,help);
  195211             : 
  195212             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  195213             :   // the Sg_File_Info objects that are built for the new IR nodes.
  195214           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  195215           0 :      if (locatedNode != NULL)
  195216             :         {
  195217             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  195218           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  195219           0 :           ROSE_ASSERT(start != NULL);
  195220             : #if 0
  195221             :        // Debugging information
  195222             :           if (start->get_parent() == NULL)
  195223             :              {
  195224             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195225             :              }
  195226             : #endif
  195227           0 :           start->set_parent(locatedNode);
  195228           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  195229             : 
  195230           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  195231             : 
  195232             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  195233             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  195234             :        // ROSE_ASSERT(end != NULL);
  195235           0 :           if (end == NULL)
  195236             :              {
  195237           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  195238             :              }
  195239             :             else
  195240             :              {
  195241             : #if 0
  195242             :             // Debugging information
  195243             :                if (end->get_parent() == NULL)
  195244             :                   {
  195245             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195246             :                   }
  195247             : #endif
  195248           0 :                end->set_parent(locatedNode);
  195249           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  195250             :              }
  195251             : 
  195252           0 :           SgExpression* expression = isSgExpression(result);
  195253           0 :           if (isSgExpression(this) != NULL)
  195254             :              {
  195255           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  195256             : 
  195257             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  195258           0 :                if (operatorPosition != NULL)
  195259             :                   {
  195260             : #if 0
  195261             :                  // Debugging information
  195262             :                     if (operatorPosition->get_parent() == NULL)
  195263             :                        {
  195264             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195265             :                        }
  195266             : #endif
  195267           0 :                     operatorPosition->set_parent(expression);
  195268           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  195269             :                   }
  195270             :              }
  195271             :         }
  195272             : 
  195273             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  195274           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  195275           0 :      if (initializedName != NULL)
  195276             :         {
  195277             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  195278           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  195279           0 :           ROSE_ASSERT(start != NULL);
  195280             : #if 0
  195281             :        // Debugging information
  195282             :           if (start->get_parent() == NULL)
  195283             :              {
  195284             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195285             :              }
  195286             : #endif
  195287           0 :           start->set_parent(initializedName);
  195288           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  195289             : 
  195290             : #if 0
  195291             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  195292             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  195293             : 
  195294             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  195295             :        // ROSE_ASSERT(end != NULL);
  195296             :           if (end == NULL)
  195297             :              {
  195298             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  195299             :              }
  195300             :             else
  195301             :              {
  195302             :                if (end->get_parent() == NULL)
  195303             :                   {
  195304             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195305             :                   }
  195306             :                end->set_parent(initializedName);
  195307             :                ROSE_ASSERT(end->get_parent() != NULL);
  195308             :              }
  195309             : #endif
  195310             :         }
  195311             : 
  195312             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  195313           0 :      help.insertCopiedNodePair(this,result);
  195314             : 
  195315             :   // printf ("End of copy SgNoexceptOp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  195316             : 
  195317             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  195318             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  195319           0 :      help.decrementDepth();
  195320             : 
  195321             :   // Test if this is the root of the copy!
  195322           0 :      if (help.get_depth() == 0)
  195323             :         {
  195324             :        // This is the original calling node.
  195325             : 
  195326             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  195327             :        // printf ("Calling SgNoexceptOp::fixupCopy() (from root of AST being copied) \n");
  195328             : #if ALT_FIXUP_COPY
  195329             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  195330           0 :           fixupCopy_scopes (result,help);
  195331           0 :           fixupCopy_symbols (result,help);
  195332           0 :           fixupCopy_references (result,help);
  195333             : #else
  195334             :           fixupCopy(result,help);
  195335             : #endif
  195336             :        // Allow this to be called recursively, so accumulate the state.
  195337             :        // Also, clear the state in the SgCopyHelp object.
  195338             :        // help.clearState();
  195339             :         }
  195340             : 
  195341           0 :      return result;
  195342             :    }
  195343             : 
  195344             : 
  195345             : /* #line 195346 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  195346             : 
  195347             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195348             : 
  195349         406 : SgNode* SgNonrealRefExp::copy ( SgCopyHelp& help) const
  195350             :    {
  195351         406 :      SgNonrealRefExp* result = NULL;
  195352             : 
  195353             :   // printf ("Copy SgNonrealRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  195354             : 
  195355             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  195356             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  195357             :   // The default value of the depth is 0, so after this call the depth is 1!
  195358         406 :      help.incrementDepth();
  195359             : 
  195360             : #if 0
  195361             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  195362             :   // but it is not generally true that things can only be copied once!
  195363             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  195364             :   // AstAttribute* existingAttribute = const_cast<SgNonrealRefExp*>(this)->attribute["copied"];
  195365             :      bool previouslyCopied = const_cast<SgNonrealRefExp*>(this)->attribute.exists("copied");
  195366             :      if (previouslyCopied == true)
  195367             :         {
  195368             :           this->get_file_info()->display("Called from copy SgNonrealRefExp: debug");
  195369             :         }
  195370             :      ROSE_ASSERT(previouslyCopied == false);
  195371             : 
  195372             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  195373             :      AstAttribute* newAttribute = new AstAttribute();
  195374             :      ROSE_ASSERT(newAttribute != NULL);
  195375             : 
  195376             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  195377             :      const_cast<SgNonrealRefExp*>(this)->attribute.add("copied",newAttribute);
  195378             : #endif
  195379             : 
  195380             :   // Copy data members from base classes
  195381             :   // Copy constructor parameter data member: startOfConstruct_copy
  195382             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  195383             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  195384         406 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  195385         406 :      if ( p_startOfConstruct != NULL ) 
  195386             :         { 
  195387         406 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  195388             :         } 
  195389             :        else 
  195390             :         { 
  195391             :           startOfConstruct_copy = NULL; 
  195392             :         } 
  195393             :   // Copy constructor parameter data member: symbol_copy
  195394             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for symbol
  195395             :   // case: toBeCopied == COPY_DATA for symbol
  195396         406 :      SgNonrealSymbol* symbol_copy = p_symbol; 
  195397             :  
  195398             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195399             : 
  195400             :   // Build an empty copy of this object (will be filled in, but 
  195401             :   // the parent can't be set and must be set by the caller)
  195402         406 :      result = new SgNonrealRefExp(  startOfConstruct_copy, symbol_copy );
  195403         406 :      ROSE_ASSERT(result != NULL);
  195404             : 
  195405             :   // Copy data members of "this" class
  195406             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  195407             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  195408             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  195409         406 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  195410         406 :      if ( p_endOfConstruct != NULL ) 
  195411             :         { 
  195412         406 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  195413             :         } 
  195414             :        else 
  195415             :         { 
  195416             :           endOfConstruct_copy = NULL; 
  195417             :         } 
  195418             :   /* check for a valid pointer and delete if present */ 
  195419         406 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  195420             :   /* add assignment to result here */ 
  195421         406 :      result->p_endOfConstruct = endOfConstruct_copy; 
  195422             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  195423             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  195424             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  195425         406 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  195426         406 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  195427             :         { 
  195428           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  195429             :         } 
  195430             :        else 
  195431             :         { 
  195432             :           attachedPreprocessingInfoPtr_copy = NULL; 
  195433             :         } 
  195434             :   /* check for a valid pointer and delete if present */ 
  195435         406 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  195436             :   /* add assignment to result here */ 
  195437         406 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  195438             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  195439             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  195440             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  195441         406 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  195442         406 :      if ( p_attributeMechanism != NULL ) 
  195443             :         { 
  195444           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  195445             :         } 
  195446             :        else 
  195447             :         { 
  195448             :           attributeMechanism_copy = NULL; 
  195449             :         } 
  195450             :   /* check for a valid pointer and delete if present */ 
  195451         406 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  195452             :   /* add assignment to result here */ 
  195453         406 :      result->p_attributeMechanism = attributeMechanism_copy; 
  195454             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  195455             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  195456             :   // case: toBeCopied == COPY_DATA for need_paren
  195457         406 :      bool need_paren_copy = p_need_paren; 
  195458         406 :      result->p_need_paren = need_paren_copy; 
  195459             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  195460             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  195461             :   // case: toBeCopied == COPY_DATA for lvalue
  195462         406 :      bool lvalue_copy = p_lvalue; 
  195463         406 :      result->p_lvalue = lvalue_copy; 
  195464             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  195465             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  195466             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  195467         406 :      bool global_qualified_name_copy = p_global_qualified_name; 
  195468         406 :      result->p_global_qualified_name = global_qualified_name_copy; 
  195469             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  195470             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  195471             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  195472         406 :      Sg_File_Info* operatorPosition_copy = NULL; 
  195473         406 :      if ( p_operatorPosition != NULL ) 
  195474             :         { 
  195475         406 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  195476             :         } 
  195477             :        else 
  195478             :         { 
  195479             :           operatorPosition_copy = NULL; 
  195480             :         } 
  195481             :   /* check for a valid pointer and delete if present */ 
  195482         406 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  195483             :   /* add assignment to result here */ 
  195484         406 :      result->p_operatorPosition = operatorPosition_copy; 
  195485             :   // Copy non-constructor parameter data member (no access function): result->p_name_qualification_length
  195486             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name_qualification_length
  195487             :   // case: toBeCopied == COPY_DATA for name_qualification_length
  195488         406 :      int name_qualification_length_copy = p_name_qualification_length; 
  195489         406 :      result->p_name_qualification_length = name_qualification_length_copy; 
  195490             :   // Copy non-constructor parameter data member (no access function): result->p_type_elaboration_required
  195491             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type_elaboration_required
  195492             :   // case: toBeCopied == COPY_DATA for type_elaboration_required
  195493         406 :      bool type_elaboration_required_copy = p_type_elaboration_required; 
  195494         406 :      result->p_type_elaboration_required = type_elaboration_required_copy; 
  195495             :   // Copy non-constructor parameter data member (no access function): result->p_global_qualification_required
  195496             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualification_required
  195497             :   // case: toBeCopied == COPY_DATA for global_qualification_required
  195498         406 :      bool global_qualification_required_copy = p_global_qualification_required; 
  195499         406 :      result->p_global_qualification_required = global_qualification_required_copy; 
  195500             : 
  195501             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195502             : 
  195503             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  195504             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  195505             :   // fixupCopy(result,help);
  195506             : 
  195507             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  195508             :   // the Sg_File_Info objects that are built for the new IR nodes.
  195509         406 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  195510         406 :      if (locatedNode != NULL)
  195511             :         {
  195512             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  195513         406 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  195514         406 :           ROSE_ASSERT(start != NULL);
  195515             : #if 0
  195516             :        // Debugging information
  195517             :           if (start->get_parent() == NULL)
  195518             :              {
  195519             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195520             :              }
  195521             : #endif
  195522         406 :           start->set_parent(locatedNode);
  195523         406 :           ROSE_ASSERT(start->get_parent() != NULL);
  195524             : 
  195525         406 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  195526             : 
  195527             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  195528             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  195529             :        // ROSE_ASSERT(end != NULL);
  195530         406 :           if (end == NULL)
  195531             :              {
  195532           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  195533             :              }
  195534             :             else
  195535             :              {
  195536             : #if 0
  195537             :             // Debugging information
  195538             :                if (end->get_parent() == NULL)
  195539             :                   {
  195540             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195541             :                   }
  195542             : #endif
  195543         406 :                end->set_parent(locatedNode);
  195544         406 :                ROSE_ASSERT(end->get_parent() != NULL);
  195545             :              }
  195546             : 
  195547         406 :           SgExpression* expression = isSgExpression(result);
  195548         406 :           if (isSgExpression(this) != NULL)
  195549             :              {
  195550         406 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  195551             : 
  195552             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  195553         406 :                if (operatorPosition != NULL)
  195554             :                   {
  195555             : #if 0
  195556             :                  // Debugging information
  195557             :                     if (operatorPosition->get_parent() == NULL)
  195558             :                        {
  195559             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195560             :                        }
  195561             : #endif
  195562         406 :                     operatorPosition->set_parent(expression);
  195563         406 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  195564             :                   }
  195565             :              }
  195566             :         }
  195567             : 
  195568             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  195569         406 :      SgInitializedName* initializedName = isSgInitializedName(result);
  195570         406 :      if (initializedName != NULL)
  195571             :         {
  195572             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  195573           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  195574           0 :           ROSE_ASSERT(start != NULL);
  195575             : #if 0
  195576             :        // Debugging information
  195577             :           if (start->get_parent() == NULL)
  195578             :              {
  195579             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195580             :              }
  195581             : #endif
  195582           0 :           start->set_parent(initializedName);
  195583           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  195584             : 
  195585             : #if 0
  195586             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  195587             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  195588             : 
  195589             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  195590             :        // ROSE_ASSERT(end != NULL);
  195591             :           if (end == NULL)
  195592             :              {
  195593             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  195594             :              }
  195595             :             else
  195596             :              {
  195597             :                if (end->get_parent() == NULL)
  195598             :                   {
  195599             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195600             :                   }
  195601             :                end->set_parent(initializedName);
  195602             :                ROSE_ASSERT(end->get_parent() != NULL);
  195603             :              }
  195604             : #endif
  195605             :         }
  195606             : 
  195607             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  195608         406 :      help.insertCopiedNodePair(this,result);
  195609             : 
  195610             :   // printf ("End of copy SgNonrealRefExp = %p = %s \n",this,SageInterface::get_name(this).c_str());
  195611             : 
  195612             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  195613             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  195614         406 :      help.decrementDepth();
  195615             : 
  195616             :   // Test if this is the root of the copy!
  195617         406 :      if (help.get_depth() == 0)
  195618             :         {
  195619             :        // This is the original calling node.
  195620             : 
  195621             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  195622             :        // printf ("Calling SgNonrealRefExp::fixupCopy() (from root of AST being copied) \n");
  195623             : #if ALT_FIXUP_COPY
  195624             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  195625           0 :           fixupCopy_scopes (result,help);
  195626           0 :           fixupCopy_symbols (result,help);
  195627           0 :           fixupCopy_references (result,help);
  195628             : #else
  195629             :           fixupCopy(result,help);
  195630             : #endif
  195631             :        // Allow this to be called recursively, so accumulate the state.
  195632             :        // Also, clear the state in the SgCopyHelp object.
  195633             :        // help.clearState();
  195634             :         }
  195635             : 
  195636         406 :      return result;
  195637             :    }
  195638             : 
  195639             : 
  195640             : /* #line 195641 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  195641             : 
  195642             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195643             : 
  195644           0 : SgNode* SgFoldExpression::copy ( SgCopyHelp& help) const
  195645             :    {
  195646           0 :      SgFoldExpression* result = NULL;
  195647             : 
  195648             :   // printf ("Copy SgFoldExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  195649             : 
  195650             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  195651             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  195652             :   // The default value of the depth is 0, so after this call the depth is 1!
  195653           0 :      help.incrementDepth();
  195654             : 
  195655             : #if 0
  195656             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  195657             :   // but it is not generally true that things can only be copied once!
  195658             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  195659             :   // AstAttribute* existingAttribute = const_cast<SgFoldExpression*>(this)->attribute["copied"];
  195660             :      bool previouslyCopied = const_cast<SgFoldExpression*>(this)->attribute.exists("copied");
  195661             :      if (previouslyCopied == true)
  195662             :         {
  195663             :           this->get_file_info()->display("Called from copy SgFoldExpression: debug");
  195664             :         }
  195665             :      ROSE_ASSERT(previouslyCopied == false);
  195666             : 
  195667             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  195668             :      AstAttribute* newAttribute = new AstAttribute();
  195669             :      ROSE_ASSERT(newAttribute != NULL);
  195670             : 
  195671             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  195672             :      const_cast<SgFoldExpression*>(this)->attribute.add("copied",newAttribute);
  195673             : #endif
  195674             : 
  195675             :   // Copy data members from base classes
  195676             :   // Copy constructor parameter data member: startOfConstruct_copy
  195677             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  195678             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  195679           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  195680           0 :      if ( p_startOfConstruct != NULL ) 
  195681             :         { 
  195682           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  195683             :         } 
  195684             :        else 
  195685             :         { 
  195686             :           startOfConstruct_copy = NULL; 
  195687             :         } 
  195688             :   // Copy constructor parameter data member: operands_copy
  195689           0 :      SgExpression* operands_copy; 
  195690             :   // case: not a listType for (using conditionalToCopyVariable)operands
  195691           0 :           if (get_operands() != NULL) 
  195692             :              { 
  195693           0 :                operands_copy = static_cast<SgExpression*>(help.copyAst(get_operands())); 
  195694             :              } 
  195695             :             else 
  195696             :              { 
  195697             :                operands_copy = NULL; 
  195698             :              } 
  195699             :   // Copy constructor parameter data member: operator_token_copy
  195700             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operator_token
  195701             :   // case: toBeCopied == COPY_DATA for operator_token
  195702           0 :      std::string operator_token_copy = p_operator_token; 
  195703             :   // Copy constructor parameter data member: is_left_associative_copy
  195704             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for is_left_associative
  195705             :   // case: toBeCopied == COPY_DATA for is_left_associative
  195706           0 :      bool is_left_associative_copy = p_is_left_associative; 
  195707             :  
  195708             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195709             : 
  195710             :   // Build an empty copy of this object (will be filled in, but 
  195711             :   // the parent can't be set and must be set by the caller)
  195712           0 :      result = new SgFoldExpression(  startOfConstruct_copy, operands_copy, operator_token_copy, is_left_associative_copy );
  195713           0 :      ROSE_ASSERT(result != NULL);
  195714             : 
  195715             :   // Copy data members of "this" class
  195716             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  195717             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  195718             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  195719           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  195720           0 :      if ( p_endOfConstruct != NULL ) 
  195721             :         { 
  195722           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  195723             :         } 
  195724             :        else 
  195725             :         { 
  195726             :           endOfConstruct_copy = NULL; 
  195727             :         } 
  195728             :   /* check for a valid pointer and delete if present */ 
  195729           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  195730             :   /* add assignment to result here */ 
  195731           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  195732             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  195733             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  195734             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  195735           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  195736           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  195737             :         { 
  195738           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  195739             :         } 
  195740             :        else 
  195741             :         { 
  195742             :           attachedPreprocessingInfoPtr_copy = NULL; 
  195743             :         } 
  195744             :   /* check for a valid pointer and delete if present */ 
  195745           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  195746             :   /* add assignment to result here */ 
  195747           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  195748             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  195749             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  195750             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  195751           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  195752           0 :      if ( p_attributeMechanism != NULL ) 
  195753             :         { 
  195754           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  195755             :         } 
  195756             :        else 
  195757             :         { 
  195758             :           attributeMechanism_copy = NULL; 
  195759             :         } 
  195760             :   /* check for a valid pointer and delete if present */ 
  195761           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  195762             :   /* add assignment to result here */ 
  195763           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  195764             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  195765             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  195766             :   // case: toBeCopied == COPY_DATA for need_paren
  195767           0 :      bool need_paren_copy = p_need_paren; 
  195768           0 :      result->p_need_paren = need_paren_copy; 
  195769             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  195770             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  195771             :   // case: toBeCopied == COPY_DATA for lvalue
  195772           0 :      bool lvalue_copy = p_lvalue; 
  195773           0 :      result->p_lvalue = lvalue_copy; 
  195774             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  195775             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  195776             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  195777           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  195778           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  195779             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  195780             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  195781             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  195782           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  195783           0 :      if ( p_operatorPosition != NULL ) 
  195784             :         { 
  195785           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  195786             :         } 
  195787             :        else 
  195788             :         { 
  195789             :           operatorPosition_copy = NULL; 
  195790             :         } 
  195791             :   /* check for a valid pointer and delete if present */ 
  195792           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  195793             :   /* add assignment to result here */ 
  195794           0 :      result->p_operatorPosition = operatorPosition_copy; 
  195795             :   // case: not a listType for (using conditionalToSetParent)operands
  195796           0 :           if ( (operands_copy != NULL) && (operands_copy->get_parent() == NULL) && (isSgType(operands_copy) == NULL) ) 
  195797             :              { 
  195798           0 :                operands_copy->set_parent(result); 
  195799             :              } 
  195800             : 
  195801             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195802             : 
  195803             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  195804             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  195805             :   // fixupCopy(result,help);
  195806             : 
  195807             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  195808             :   // the Sg_File_Info objects that are built for the new IR nodes.
  195809           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  195810           0 :      if (locatedNode != NULL)
  195811             :         {
  195812             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  195813           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  195814           0 :           ROSE_ASSERT(start != NULL);
  195815             : #if 0
  195816             :        // Debugging information
  195817             :           if (start->get_parent() == NULL)
  195818             :              {
  195819             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195820             :              }
  195821             : #endif
  195822           0 :           start->set_parent(locatedNode);
  195823           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  195824             : 
  195825           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  195826             : 
  195827             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  195828             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  195829             :        // ROSE_ASSERT(end != NULL);
  195830           0 :           if (end == NULL)
  195831             :              {
  195832           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  195833             :              }
  195834             :             else
  195835             :              {
  195836             : #if 0
  195837             :             // Debugging information
  195838             :                if (end->get_parent() == NULL)
  195839             :                   {
  195840             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195841             :                   }
  195842             : #endif
  195843           0 :                end->set_parent(locatedNode);
  195844           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  195845             :              }
  195846             : 
  195847           0 :           SgExpression* expression = isSgExpression(result);
  195848           0 :           if (isSgExpression(this) != NULL)
  195849             :              {
  195850           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  195851             : 
  195852             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  195853           0 :                if (operatorPosition != NULL)
  195854             :                   {
  195855             : #if 0
  195856             :                  // Debugging information
  195857             :                     if (operatorPosition->get_parent() == NULL)
  195858             :                        {
  195859             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195860             :                        }
  195861             : #endif
  195862           0 :                     operatorPosition->set_parent(expression);
  195863           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  195864             :                   }
  195865             :              }
  195866             :         }
  195867             : 
  195868             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  195869           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  195870           0 :      if (initializedName != NULL)
  195871             :         {
  195872             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  195873           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  195874           0 :           ROSE_ASSERT(start != NULL);
  195875             : #if 0
  195876             :        // Debugging information
  195877             :           if (start->get_parent() == NULL)
  195878             :              {
  195879             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195880             :              }
  195881             : #endif
  195882           0 :           start->set_parent(initializedName);
  195883           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  195884             : 
  195885             : #if 0
  195886             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  195887             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  195888             : 
  195889             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  195890             :        // ROSE_ASSERT(end != NULL);
  195891             :           if (end == NULL)
  195892             :              {
  195893             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  195894             :              }
  195895             :             else
  195896             :              {
  195897             :                if (end->get_parent() == NULL)
  195898             :                   {
  195899             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  195900             :                   }
  195901             :                end->set_parent(initializedName);
  195902             :                ROSE_ASSERT(end->get_parent() != NULL);
  195903             :              }
  195904             : #endif
  195905             :         }
  195906             : 
  195907             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  195908           0 :      help.insertCopiedNodePair(this,result);
  195909             : 
  195910             :   // printf ("End of copy SgFoldExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  195911             : 
  195912             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  195913             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  195914           0 :      help.decrementDepth();
  195915             : 
  195916             :   // Test if this is the root of the copy!
  195917           0 :      if (help.get_depth() == 0)
  195918             :         {
  195919             :        // This is the original calling node.
  195920             : 
  195921             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  195922             :        // printf ("Calling SgFoldExpression::fixupCopy() (from root of AST being copied) \n");
  195923             : #if ALT_FIXUP_COPY
  195924             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  195925           0 :           fixupCopy_scopes (result,help);
  195926           0 :           fixupCopy_symbols (result,help);
  195927           0 :           fixupCopy_references (result,help);
  195928             : #else
  195929             :           fixupCopy(result,help);
  195930             : #endif
  195931             :        // Allow this to be called recursively, so accumulate the state.
  195932             :        // Also, clear the state in the SgCopyHelp object.
  195933             :        // help.clearState();
  195934             :         }
  195935             : 
  195936           0 :      return result;
  195937             :    }
  195938             : 
  195939             : 
  195940             : /* #line 195941 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  195941             : 
  195942             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  195943             : 
  195944           0 : SgNode* SgAwaitExpression::copy ( SgCopyHelp& help) const
  195945             :    {
  195946           0 :      SgAwaitExpression* result = NULL;
  195947             : 
  195948             :   // printf ("Copy SgAwaitExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  195949             : 
  195950             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  195951             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  195952             :   // The default value of the depth is 0, so after this call the depth is 1!
  195953           0 :      help.incrementDepth();
  195954             : 
  195955             : #if 0
  195956             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  195957             :   // but it is not generally true that things can only be copied once!
  195958             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  195959             :   // AstAttribute* existingAttribute = const_cast<SgAwaitExpression*>(this)->attribute["copied"];
  195960             :      bool previouslyCopied = const_cast<SgAwaitExpression*>(this)->attribute.exists("copied");
  195961             :      if (previouslyCopied == true)
  195962             :         {
  195963             :           this->get_file_info()->display("Called from copy SgAwaitExpression: debug");
  195964             :         }
  195965             :      ROSE_ASSERT(previouslyCopied == false);
  195966             : 
  195967             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  195968             :      AstAttribute* newAttribute = new AstAttribute();
  195969             :      ROSE_ASSERT(newAttribute != NULL);
  195970             : 
  195971             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  195972             :      const_cast<SgAwaitExpression*>(this)->attribute.add("copied",newAttribute);
  195973             : #endif
  195974             : 
  195975             :   // Copy data members from base classes
  195976             :   // Copy constructor parameter data member: startOfConstruct_copy
  195977             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  195978             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  195979           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  195980           0 :      if ( p_startOfConstruct != NULL ) 
  195981             :         { 
  195982           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  195983             :         } 
  195984             :        else 
  195985             :         { 
  195986             :           startOfConstruct_copy = NULL; 
  195987             :         } 
  195988             :   // Copy constructor parameter data member: value_copy
  195989           0 :      SgExpression* value_copy; 
  195990             :   // case: not a listType for (using conditionalToCopyVariable)value
  195991           0 :           if (get_value() != NULL) 
  195992             :              { 
  195993           0 :                value_copy = static_cast<SgExpression*>(help.copyAst(get_value())); 
  195994             :              } 
  195995             :             else 
  195996             :              { 
  195997             :                value_copy = NULL; 
  195998             :              } 
  195999             :  
  196000             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196001             : 
  196002             :   // Build an empty copy of this object (will be filled in, but 
  196003             :   // the parent can't be set and must be set by the caller)
  196004           0 :      result = new SgAwaitExpression(  startOfConstruct_copy, value_copy );
  196005           0 :      ROSE_ASSERT(result != NULL);
  196006             : 
  196007             :   // Copy data members of "this" class
  196008             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  196009             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  196010             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  196011           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  196012           0 :      if ( p_endOfConstruct != NULL ) 
  196013             :         { 
  196014           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  196015             :         } 
  196016             :        else 
  196017             :         { 
  196018             :           endOfConstruct_copy = NULL; 
  196019             :         } 
  196020             :   /* check for a valid pointer and delete if present */ 
  196021           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  196022             :   /* add assignment to result here */ 
  196023           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  196024             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  196025             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  196026             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  196027           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  196028           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  196029             :         { 
  196030           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  196031             :         } 
  196032             :        else 
  196033             :         { 
  196034             :           attachedPreprocessingInfoPtr_copy = NULL; 
  196035             :         } 
  196036             :   /* check for a valid pointer and delete if present */ 
  196037           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  196038             :   /* add assignment to result here */ 
  196039           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  196040             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  196041             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  196042             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  196043           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  196044           0 :      if ( p_attributeMechanism != NULL ) 
  196045             :         { 
  196046           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  196047             :         } 
  196048             :        else 
  196049             :         { 
  196050             :           attributeMechanism_copy = NULL; 
  196051             :         } 
  196052             :   /* check for a valid pointer and delete if present */ 
  196053           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  196054             :   /* add assignment to result here */ 
  196055           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  196056             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  196057             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  196058             :   // case: toBeCopied == COPY_DATA for need_paren
  196059           0 :      bool need_paren_copy = p_need_paren; 
  196060           0 :      result->p_need_paren = need_paren_copy; 
  196061             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  196062             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  196063             :   // case: toBeCopied == COPY_DATA for lvalue
  196064           0 :      bool lvalue_copy = p_lvalue; 
  196065           0 :      result->p_lvalue = lvalue_copy; 
  196066             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  196067             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  196068             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  196069           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  196070           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  196071             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  196072             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  196073             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  196074           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  196075           0 :      if ( p_operatorPosition != NULL ) 
  196076             :         { 
  196077           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  196078             :         } 
  196079             :        else 
  196080             :         { 
  196081             :           operatorPosition_copy = NULL; 
  196082             :         } 
  196083             :   /* check for a valid pointer and delete if present */ 
  196084           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  196085             :   /* add assignment to result here */ 
  196086           0 :      result->p_operatorPosition = operatorPosition_copy; 
  196087             :   // case: not a listType for (using conditionalToSetParent)value
  196088           0 :           if ( (value_copy != NULL) && (value_copy->get_parent() == NULL) && (isSgType(value_copy) == NULL) ) 
  196089             :              { 
  196090           0 :                value_copy->set_parent(result); 
  196091             :              } 
  196092             : 
  196093             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196094             : 
  196095             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  196096             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  196097             :   // fixupCopy(result,help);
  196098             : 
  196099             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  196100             :   // the Sg_File_Info objects that are built for the new IR nodes.
  196101           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  196102           0 :      if (locatedNode != NULL)
  196103             :         {
  196104             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  196105           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  196106           0 :           ROSE_ASSERT(start != NULL);
  196107             : #if 0
  196108             :        // Debugging information
  196109             :           if (start->get_parent() == NULL)
  196110             :              {
  196111             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196112             :              }
  196113             : #endif
  196114           0 :           start->set_parent(locatedNode);
  196115           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  196116             : 
  196117           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  196118             : 
  196119             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  196120             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  196121             :        // ROSE_ASSERT(end != NULL);
  196122           0 :           if (end == NULL)
  196123             :              {
  196124           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  196125             :              }
  196126             :             else
  196127             :              {
  196128             : #if 0
  196129             :             // Debugging information
  196130             :                if (end->get_parent() == NULL)
  196131             :                   {
  196132             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196133             :                   }
  196134             : #endif
  196135           0 :                end->set_parent(locatedNode);
  196136           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  196137             :              }
  196138             : 
  196139           0 :           SgExpression* expression = isSgExpression(result);
  196140           0 :           if (isSgExpression(this) != NULL)
  196141             :              {
  196142           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  196143             : 
  196144             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  196145           0 :                if (operatorPosition != NULL)
  196146             :                   {
  196147             : #if 0
  196148             :                  // Debugging information
  196149             :                     if (operatorPosition->get_parent() == NULL)
  196150             :                        {
  196151             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196152             :                        }
  196153             : #endif
  196154           0 :                     operatorPosition->set_parent(expression);
  196155           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  196156             :                   }
  196157             :              }
  196158             :         }
  196159             : 
  196160             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  196161           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  196162           0 :      if (initializedName != NULL)
  196163             :         {
  196164             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  196165           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  196166           0 :           ROSE_ASSERT(start != NULL);
  196167             : #if 0
  196168             :        // Debugging information
  196169             :           if (start->get_parent() == NULL)
  196170             :              {
  196171             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196172             :              }
  196173             : #endif
  196174           0 :           start->set_parent(initializedName);
  196175           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  196176             : 
  196177             : #if 0
  196178             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  196179             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  196180             : 
  196181             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  196182             :        // ROSE_ASSERT(end != NULL);
  196183             :           if (end == NULL)
  196184             :              {
  196185             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  196186             :              }
  196187             :             else
  196188             :              {
  196189             :                if (end->get_parent() == NULL)
  196190             :                   {
  196191             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196192             :                   }
  196193             :                end->set_parent(initializedName);
  196194             :                ROSE_ASSERT(end->get_parent() != NULL);
  196195             :              }
  196196             : #endif
  196197             :         }
  196198             : 
  196199             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  196200           0 :      help.insertCopiedNodePair(this,result);
  196201             : 
  196202             :   // printf ("End of copy SgAwaitExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  196203             : 
  196204             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  196205             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  196206           0 :      help.decrementDepth();
  196207             : 
  196208             :   // Test if this is the root of the copy!
  196209           0 :      if (help.get_depth() == 0)
  196210             :         {
  196211             :        // This is the original calling node.
  196212             : 
  196213             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  196214             :        // printf ("Calling SgAwaitExpression::fixupCopy() (from root of AST being copied) \n");
  196215             : #if ALT_FIXUP_COPY
  196216             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  196217           0 :           fixupCopy_scopes (result,help);
  196218           0 :           fixupCopy_symbols (result,help);
  196219           0 :           fixupCopy_references (result,help);
  196220             : #else
  196221             :           fixupCopy(result,help);
  196222             : #endif
  196223             :        // Allow this to be called recursively, so accumulate the state.
  196224             :        // Also, clear the state in the SgCopyHelp object.
  196225             :        // help.clearState();
  196226             :         }
  196227             : 
  196228           0 :      return result;
  196229             :    }
  196230             : 
  196231             : 
  196232             : /* #line 196233 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  196233             : 
  196234             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196235             : 
  196236           0 : SgNode* SgChooseExpression::copy ( SgCopyHelp& help) const
  196237             :    {
  196238           0 :      SgChooseExpression* result = NULL;
  196239             : 
  196240             :   // printf ("Copy SgChooseExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  196241             : 
  196242             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  196243             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  196244             :   // The default value of the depth is 0, so after this call the depth is 1!
  196245           0 :      help.incrementDepth();
  196246             : 
  196247             : #if 0
  196248             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  196249             :   // but it is not generally true that things can only be copied once!
  196250             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  196251             :   // AstAttribute* existingAttribute = const_cast<SgChooseExpression*>(this)->attribute["copied"];
  196252             :      bool previouslyCopied = const_cast<SgChooseExpression*>(this)->attribute.exists("copied");
  196253             :      if (previouslyCopied == true)
  196254             :         {
  196255             :           this->get_file_info()->display("Called from copy SgChooseExpression: debug");
  196256             :         }
  196257             :      ROSE_ASSERT(previouslyCopied == false);
  196258             : 
  196259             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  196260             :      AstAttribute* newAttribute = new AstAttribute();
  196261             :      ROSE_ASSERT(newAttribute != NULL);
  196262             : 
  196263             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  196264             :      const_cast<SgChooseExpression*>(this)->attribute.add("copied",newAttribute);
  196265             : #endif
  196266             : 
  196267             :   // Copy data members from base classes
  196268             :   // Copy constructor parameter data member: startOfConstruct_copy
  196269             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for startOfConstruct
  196270             :   // case: toBeCopied == CLONE_PTR for startOfConstruct
  196271           0 :      Sg_File_Info* startOfConstruct_copy = NULL; 
  196272           0 :      if ( p_startOfConstruct != NULL ) 
  196273             :         { 
  196274           0 :           startOfConstruct_copy = new Sg_File_Info( *p_startOfConstruct); 
  196275             :         } 
  196276             :        else 
  196277             :         { 
  196278             :           startOfConstruct_copy = NULL; 
  196279             :         } 
  196280             :   // Copy constructor parameter data member: value_copy
  196281           0 :      SgExpression* value_copy; 
  196282             :   // case: not a listType for (using conditionalToCopyVariable)value
  196283           0 :           if (get_value() != NULL) 
  196284             :              { 
  196285           0 :                value_copy = static_cast<SgExpression*>(help.copyAst(get_value())); 
  196286             :              } 
  196287             :             else 
  196288             :              { 
  196289             :                value_copy = NULL; 
  196290             :              } 
  196291             :  
  196292             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196293             : 
  196294             :   // Build an empty copy of this object (will be filled in, but 
  196295             :   // the parent can't be set and must be set by the caller)
  196296           0 :      result = new SgChooseExpression(  startOfConstruct_copy, value_copy );
  196297           0 :      ROSE_ASSERT(result != NULL);
  196298             : 
  196299             :   // Copy data members of "this" class
  196300             :   // Copy non-constructor parameter data member (access function): endOfConstruct_copy
  196301             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for endOfConstruct
  196302             :   // case: toBeCopied == CLONE_PTR for endOfConstruct
  196303           0 :      Sg_File_Info* endOfConstruct_copy = NULL; 
  196304           0 :      if ( p_endOfConstruct != NULL ) 
  196305             :         { 
  196306           0 :           endOfConstruct_copy = new Sg_File_Info( *p_endOfConstruct); 
  196307             :         } 
  196308             :        else 
  196309             :         { 
  196310             :           endOfConstruct_copy = NULL; 
  196311             :         } 
  196312             :   /* check for a valid pointer and delete if present */ 
  196313           0 :      if (result->p_endOfConstruct != NULL) delete result->p_endOfConstruct; 
  196314             :   /* add assignment to result here */ 
  196315           0 :      result->p_endOfConstruct = endOfConstruct_copy; 
  196316             :   // Copy non-constructor parameter data member (access function): attachedPreprocessingInfoPtr_copy
  196317             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attachedPreprocessingInfoPtr
  196318             :   // case: toBeCopied == CLONE_PTR for attachedPreprocessingInfoPtr
  196319           0 :      AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr_copy = NULL; 
  196320           0 :      if ( p_attachedPreprocessingInfoPtr != NULL ) 
  196321             :         { 
  196322           0 :           attachedPreprocessingInfoPtr_copy = new AttachedPreprocessingInfoType( *p_attachedPreprocessingInfoPtr); 
  196323             :         } 
  196324             :        else 
  196325             :         { 
  196326             :           attachedPreprocessingInfoPtr_copy = NULL; 
  196327             :         } 
  196328             :   /* check for a valid pointer and delete if present */ 
  196329           0 :      if (result->p_attachedPreprocessingInfoPtr != NULL) delete result->p_attachedPreprocessingInfoPtr; 
  196330             :   /* add assignment to result here */ 
  196331           0 :      result->p_attachedPreprocessingInfoPtr = attachedPreprocessingInfoPtr_copy; 
  196332             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  196333             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  196334             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  196335           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  196336           0 :      if ( p_attributeMechanism != NULL ) 
  196337             :         { 
  196338           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  196339             :         } 
  196340             :        else 
  196341             :         { 
  196342             :           attributeMechanism_copy = NULL; 
  196343             :         } 
  196344             :   /* check for a valid pointer and delete if present */ 
  196345           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  196346             :   /* add assignment to result here */ 
  196347           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  196348             :   // Copy non-constructor parameter data member (access function): need_paren_copy
  196349             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for need_paren
  196350             :   // case: toBeCopied == COPY_DATA for need_paren
  196351           0 :      bool need_paren_copy = p_need_paren; 
  196352           0 :      result->p_need_paren = need_paren_copy; 
  196353             :   // Copy non-constructor parameter data member (access function): lvalue_copy
  196354             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for lvalue
  196355             :   // case: toBeCopied == COPY_DATA for lvalue
  196356           0 :      bool lvalue_copy = p_lvalue; 
  196357           0 :      result->p_lvalue = lvalue_copy; 
  196358             :   // Copy non-constructor parameter data member (access function): global_qualified_name_copy
  196359             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for global_qualified_name
  196360             :   // case: toBeCopied == COPY_DATA for global_qualified_name
  196361           0 :      bool global_qualified_name_copy = p_global_qualified_name; 
  196362           0 :      result->p_global_qualified_name = global_qualified_name_copy; 
  196363             :   // Copy non-constructor parameter data member (access function): operatorPosition_copy
  196364             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for operatorPosition
  196365             :   // case: toBeCopied == CLONE_PTR for operatorPosition
  196366           0 :      Sg_File_Info* operatorPosition_copy = NULL; 
  196367           0 :      if ( p_operatorPosition != NULL ) 
  196368             :         { 
  196369           0 :           operatorPosition_copy = new Sg_File_Info( *p_operatorPosition); 
  196370             :         } 
  196371             :        else 
  196372             :         { 
  196373             :           operatorPosition_copy = NULL; 
  196374             :         } 
  196375             :   /* check for a valid pointer and delete if present */ 
  196376           0 :      if (result->p_operatorPosition != NULL) delete result->p_operatorPosition; 
  196377             :   /* add assignment to result here */ 
  196378           0 :      result->p_operatorPosition = operatorPosition_copy; 
  196379             :   // case: not a listType for (using conditionalToSetParent)value
  196380           0 :           if ( (value_copy != NULL) && (value_copy->get_parent() == NULL) && (isSgType(value_copy) == NULL) ) 
  196381             :              { 
  196382           0 :                value_copy->set_parent(result); 
  196383             :              } 
  196384             : 
  196385             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196386             : 
  196387             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  196388             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  196389             :   // fixupCopy(result,help);
  196390             : 
  196391             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  196392             :   // the Sg_File_Info objects that are built for the new IR nodes.
  196393           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  196394           0 :      if (locatedNode != NULL)
  196395             :         {
  196396             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  196397           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  196398           0 :           ROSE_ASSERT(start != NULL);
  196399             : #if 0
  196400             :        // Debugging information
  196401             :           if (start->get_parent() == NULL)
  196402             :              {
  196403             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196404             :              }
  196405             : #endif
  196406           0 :           start->set_parent(locatedNode);
  196407           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  196408             : 
  196409           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  196410             : 
  196411             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  196412             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  196413             :        // ROSE_ASSERT(end != NULL);
  196414           0 :           if (end == NULL)
  196415             :              {
  196416           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  196417             :              }
  196418             :             else
  196419             :              {
  196420             : #if 0
  196421             :             // Debugging information
  196422             :                if (end->get_parent() == NULL)
  196423             :                   {
  196424             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196425             :                   }
  196426             : #endif
  196427           0 :                end->set_parent(locatedNode);
  196428           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  196429             :              }
  196430             : 
  196431           0 :           SgExpression* expression = isSgExpression(result);
  196432           0 :           if (isSgExpression(this) != NULL)
  196433             :              {
  196434           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  196435             : 
  196436             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  196437           0 :                if (operatorPosition != NULL)
  196438             :                   {
  196439             : #if 0
  196440             :                  // Debugging information
  196441             :                     if (operatorPosition->get_parent() == NULL)
  196442             :                        {
  196443             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196444             :                        }
  196445             : #endif
  196446           0 :                     operatorPosition->set_parent(expression);
  196447           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  196448             :                   }
  196449             :              }
  196450             :         }
  196451             : 
  196452             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  196453           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  196454           0 :      if (initializedName != NULL)
  196455             :         {
  196456             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  196457           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  196458           0 :           ROSE_ASSERT(start != NULL);
  196459             : #if 0
  196460             :        // Debugging information
  196461             :           if (start->get_parent() == NULL)
  196462             :              {
  196463             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196464             :              }
  196465             : #endif
  196466           0 :           start->set_parent(initializedName);
  196467           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  196468             : 
  196469             : #if 0
  196470             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  196471             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  196472             : 
  196473             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  196474             :        // ROSE_ASSERT(end != NULL);
  196475             :           if (end == NULL)
  196476             :              {
  196477             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  196478             :              }
  196479             :             else
  196480             :              {
  196481             :                if (end->get_parent() == NULL)
  196482             :                   {
  196483             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196484             :                   }
  196485             :                end->set_parent(initializedName);
  196486             :                ROSE_ASSERT(end->get_parent() != NULL);
  196487             :              }
  196488             : #endif
  196489             :         }
  196490             : 
  196491             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  196492           0 :      help.insertCopiedNodePair(this,result);
  196493             : 
  196494             :   // printf ("End of copy SgChooseExpression = %p = %s \n",this,SageInterface::get_name(this).c_str());
  196495             : 
  196496             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  196497             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  196498           0 :      help.decrementDepth();
  196499             : 
  196500             :   // Test if this is the root of the copy!
  196501           0 :      if (help.get_depth() == 0)
  196502             :         {
  196503             :        // This is the original calling node.
  196504             : 
  196505             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  196506             :        // printf ("Calling SgChooseExpression::fixupCopy() (from root of AST being copied) \n");
  196507             : #if ALT_FIXUP_COPY
  196508             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  196509           0 :           fixupCopy_scopes (result,help);
  196510           0 :           fixupCopy_symbols (result,help);
  196511           0 :           fixupCopy_references (result,help);
  196512             : #else
  196513             :           fixupCopy(result,help);
  196514             : #endif
  196515             :        // Allow this to be called recursively, so accumulate the state.
  196516             :        // Also, clear the state in the SgCopyHelp object.
  196517             :        // help.clearState();
  196518             :         }
  196519             : 
  196520           0 :      return result;
  196521             :    }
  196522             : 
  196523             : 
  196524             : /* #line 196525 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  196525             : 
  196526             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196527             : 
  196528           0 : SgNode* SgVariableSymbol::copy ( SgCopyHelp& help) const
  196529             :    {
  196530           0 :      SgVariableSymbol* result = NULL;
  196531             : 
  196532             :   // printf ("Copy SgVariableSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  196533             : 
  196534             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  196535             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  196536             :   // The default value of the depth is 0, so after this call the depth is 1!
  196537           0 :      help.incrementDepth();
  196538             : 
  196539             : #if 0
  196540             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  196541             :   // but it is not generally true that things can only be copied once!
  196542             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  196543             :   // AstAttribute* existingAttribute = const_cast<SgVariableSymbol*>(this)->attribute["copied"];
  196544             :      bool previouslyCopied = const_cast<SgVariableSymbol*>(this)->attribute.exists("copied");
  196545             :      if (previouslyCopied == true)
  196546             :         {
  196547             :           this->get_file_info()->display("Called from copy SgVariableSymbol: debug");
  196548             :         }
  196549             :      ROSE_ASSERT(previouslyCopied == false);
  196550             : 
  196551             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  196552             :      AstAttribute* newAttribute = new AstAttribute();
  196553             :      ROSE_ASSERT(newAttribute != NULL);
  196554             : 
  196555             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  196556             :      const_cast<SgVariableSymbol*>(this)->attribute.add("copied",newAttribute);
  196557             : #endif
  196558             : 
  196559             :   // Copy data members from base classes
  196560             :   // Copy constructor parameter data member: declaration_copy
  196561             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration
  196562             :   // case: toBeCopied == COPY_DATA for declaration
  196563           0 :      SgInitializedName* declaration_copy = p_declaration; 
  196564             :  
  196565             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196566             : 
  196567             :   // Build an empty copy of this object (will be filled in, but 
  196568             :   // the parent can't be set and must be set by the caller)
  196569           0 :      result = new SgVariableSymbol(  declaration_copy );
  196570           0 :      ROSE_ASSERT(result != NULL);
  196571             : 
  196572             :   // Copy data members of "this" class
  196573             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  196574             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  196575             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  196576           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  196577           0 :      if ( p_attributeMechanism != NULL ) 
  196578             :         { 
  196579           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  196580             :         } 
  196581             :        else 
  196582             :         { 
  196583             :           attributeMechanism_copy = NULL; 
  196584             :         } 
  196585             :   /* check for a valid pointer and delete if present */ 
  196586           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  196587             :   /* add assignment to result here */ 
  196588           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  196589             : 
  196590             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196591             : 
  196592             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  196593             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  196594             :   // fixupCopy(result,help);
  196595             : 
  196596             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  196597             :   // the Sg_File_Info objects that are built for the new IR nodes.
  196598           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  196599           0 :      if (locatedNode != NULL)
  196600             :         {
  196601             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  196602           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  196603           0 :           ROSE_ASSERT(start != NULL);
  196604             : #if 0
  196605             :        // Debugging information
  196606             :           if (start->get_parent() == NULL)
  196607             :              {
  196608             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196609             :              }
  196610             : #endif
  196611           0 :           start->set_parent(locatedNode);
  196612           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  196613             : 
  196614           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  196615             : 
  196616             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  196617             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  196618             :        // ROSE_ASSERT(end != NULL);
  196619           0 :           if (end == NULL)
  196620             :              {
  196621           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  196622             :              }
  196623             :             else
  196624             :              {
  196625             : #if 0
  196626             :             // Debugging information
  196627             :                if (end->get_parent() == NULL)
  196628             :                   {
  196629             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196630             :                   }
  196631             : #endif
  196632           0 :                end->set_parent(locatedNode);
  196633           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  196634             :              }
  196635             : 
  196636           0 :           SgExpression* expression = isSgExpression(result);
  196637           0 :           if (isSgExpression(this) != NULL)
  196638             :              {
  196639           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  196640             : 
  196641             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  196642           0 :                if (operatorPosition != NULL)
  196643             :                   {
  196644             : #if 0
  196645             :                  // Debugging information
  196646             :                     if (operatorPosition->get_parent() == NULL)
  196647             :                        {
  196648             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196649             :                        }
  196650             : #endif
  196651           0 :                     operatorPosition->set_parent(expression);
  196652           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  196653             :                   }
  196654             :              }
  196655             :         }
  196656             : 
  196657             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  196658           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  196659           0 :      if (initializedName != NULL)
  196660             :         {
  196661             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  196662           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  196663           0 :           ROSE_ASSERT(start != NULL);
  196664             : #if 0
  196665             :        // Debugging information
  196666             :           if (start->get_parent() == NULL)
  196667             :              {
  196668             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196669             :              }
  196670             : #endif
  196671           0 :           start->set_parent(initializedName);
  196672           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  196673             : 
  196674             : #if 0
  196675             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  196676             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  196677             : 
  196678             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  196679             :        // ROSE_ASSERT(end != NULL);
  196680             :           if (end == NULL)
  196681             :              {
  196682             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  196683             :              }
  196684             :             else
  196685             :              {
  196686             :                if (end->get_parent() == NULL)
  196687             :                   {
  196688             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196689             :                   }
  196690             :                end->set_parent(initializedName);
  196691             :                ROSE_ASSERT(end->get_parent() != NULL);
  196692             :              }
  196693             : #endif
  196694             :         }
  196695             : 
  196696             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  196697           0 :      help.insertCopiedNodePair(this,result);
  196698             : 
  196699             :   // printf ("End of copy SgVariableSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  196700             : 
  196701             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  196702             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  196703           0 :      help.decrementDepth();
  196704             : 
  196705             :   // Test if this is the root of the copy!
  196706           0 :      if (help.get_depth() == 0)
  196707             :         {
  196708             :        // This is the original calling node.
  196709             : 
  196710             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  196711             :        // printf ("Calling SgVariableSymbol::fixupCopy() (from root of AST being copied) \n");
  196712             : #if ALT_FIXUP_COPY
  196713             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  196714           0 :           fixupCopy_scopes (result,help);
  196715           0 :           fixupCopy_symbols (result,help);
  196716           0 :           fixupCopy_references (result,help);
  196717             : #else
  196718             :           fixupCopy(result,help);
  196719             : #endif
  196720             :        // Allow this to be called recursively, so accumulate the state.
  196721             :        // Also, clear the state in the SgCopyHelp object.
  196722             :        // help.clearState();
  196723             :         }
  196724             : 
  196725           0 :      return result;
  196726             :    }
  196727             : 
  196728             : 
  196729             : /* #line 196730 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  196730             : 
  196731             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196732             : 
  196733           0 : SgNode* SgTemplateVariableSymbol::copy ( SgCopyHelp& help) const
  196734             :    {
  196735           0 :      SgTemplateVariableSymbol* result = NULL;
  196736             : 
  196737             :   // printf ("Copy SgTemplateVariableSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  196738             : 
  196739             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  196740             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  196741             :   // The default value of the depth is 0, so after this call the depth is 1!
  196742           0 :      help.incrementDepth();
  196743             : 
  196744             : #if 0
  196745             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  196746             :   // but it is not generally true that things can only be copied once!
  196747             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  196748             :   // AstAttribute* existingAttribute = const_cast<SgTemplateVariableSymbol*>(this)->attribute["copied"];
  196749             :      bool previouslyCopied = const_cast<SgTemplateVariableSymbol*>(this)->attribute.exists("copied");
  196750             :      if (previouslyCopied == true)
  196751             :         {
  196752             :           this->get_file_info()->display("Called from copy SgTemplateVariableSymbol: debug");
  196753             :         }
  196754             :      ROSE_ASSERT(previouslyCopied == false);
  196755             : 
  196756             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  196757             :      AstAttribute* newAttribute = new AstAttribute();
  196758             :      ROSE_ASSERT(newAttribute != NULL);
  196759             : 
  196760             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  196761             :      const_cast<SgTemplateVariableSymbol*>(this)->attribute.add("copied",newAttribute);
  196762             : #endif
  196763             : 
  196764             :   // Copy data members from base classes
  196765             :   // Copy constructor parameter data member: declaration_copy
  196766             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration
  196767             :   // case: toBeCopied == COPY_DATA for declaration
  196768           0 :      SgInitializedName* declaration_copy = p_declaration; 
  196769             :  
  196770             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196771             : 
  196772             :   // Build an empty copy of this object (will be filled in, but 
  196773             :   // the parent can't be set and must be set by the caller)
  196774           0 :      result = new SgTemplateVariableSymbol(  declaration_copy );
  196775           0 :      ROSE_ASSERT(result != NULL);
  196776             : 
  196777             :   // Copy data members of "this" class
  196778             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  196779             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  196780             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  196781           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  196782           0 :      if ( p_attributeMechanism != NULL ) 
  196783             :         { 
  196784           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  196785             :         } 
  196786             :        else 
  196787             :         { 
  196788             :           attributeMechanism_copy = NULL; 
  196789             :         } 
  196790             :   /* check for a valid pointer and delete if present */ 
  196791           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  196792             :   /* add assignment to result here */ 
  196793           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  196794             : 
  196795             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196796             : 
  196797             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  196798             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  196799             :   // fixupCopy(result,help);
  196800             : 
  196801             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  196802             :   // the Sg_File_Info objects that are built for the new IR nodes.
  196803           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  196804           0 :      if (locatedNode != NULL)
  196805             :         {
  196806             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  196807           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  196808           0 :           ROSE_ASSERT(start != NULL);
  196809             : #if 0
  196810             :        // Debugging information
  196811             :           if (start->get_parent() == NULL)
  196812             :              {
  196813             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196814             :              }
  196815             : #endif
  196816           0 :           start->set_parent(locatedNode);
  196817           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  196818             : 
  196819           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  196820             : 
  196821             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  196822             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  196823             :        // ROSE_ASSERT(end != NULL);
  196824           0 :           if (end == NULL)
  196825             :              {
  196826           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  196827             :              }
  196828             :             else
  196829             :              {
  196830             : #if 0
  196831             :             // Debugging information
  196832             :                if (end->get_parent() == NULL)
  196833             :                   {
  196834             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196835             :                   }
  196836             : #endif
  196837           0 :                end->set_parent(locatedNode);
  196838           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  196839             :              }
  196840             : 
  196841           0 :           SgExpression* expression = isSgExpression(result);
  196842           0 :           if (isSgExpression(this) != NULL)
  196843             :              {
  196844           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  196845             : 
  196846             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  196847           0 :                if (operatorPosition != NULL)
  196848             :                   {
  196849             : #if 0
  196850             :                  // Debugging information
  196851             :                     if (operatorPosition->get_parent() == NULL)
  196852             :                        {
  196853             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196854             :                        }
  196855             : #endif
  196856           0 :                     operatorPosition->set_parent(expression);
  196857           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  196858             :                   }
  196859             :              }
  196860             :         }
  196861             : 
  196862             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  196863           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  196864           0 :      if (initializedName != NULL)
  196865             :         {
  196866             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  196867           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  196868           0 :           ROSE_ASSERT(start != NULL);
  196869             : #if 0
  196870             :        // Debugging information
  196871             :           if (start->get_parent() == NULL)
  196872             :              {
  196873             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196874             :              }
  196875             : #endif
  196876           0 :           start->set_parent(initializedName);
  196877           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  196878             : 
  196879             : #if 0
  196880             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  196881             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  196882             : 
  196883             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  196884             :        // ROSE_ASSERT(end != NULL);
  196885             :           if (end == NULL)
  196886             :              {
  196887             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  196888             :              }
  196889             :             else
  196890             :              {
  196891             :                if (end->get_parent() == NULL)
  196892             :                   {
  196893             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  196894             :                   }
  196895             :                end->set_parent(initializedName);
  196896             :                ROSE_ASSERT(end->get_parent() != NULL);
  196897             :              }
  196898             : #endif
  196899             :         }
  196900             : 
  196901             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  196902           0 :      help.insertCopiedNodePair(this,result);
  196903             : 
  196904             :   // printf ("End of copy SgTemplateVariableSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  196905             : 
  196906             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  196907             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  196908           0 :      help.decrementDepth();
  196909             : 
  196910             :   // Test if this is the root of the copy!
  196911           0 :      if (help.get_depth() == 0)
  196912             :         {
  196913             :        // This is the original calling node.
  196914             : 
  196915             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  196916             :        // printf ("Calling SgTemplateVariableSymbol::fixupCopy() (from root of AST being copied) \n");
  196917             : #if ALT_FIXUP_COPY
  196918             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  196919           0 :           fixupCopy_scopes (result,help);
  196920           0 :           fixupCopy_symbols (result,help);
  196921           0 :           fixupCopy_references (result,help);
  196922             : #else
  196923             :           fixupCopy(result,help);
  196924             : #endif
  196925             :        // Allow this to be called recursively, so accumulate the state.
  196926             :        // Also, clear the state in the SgCopyHelp object.
  196927             :        // help.clearState();
  196928             :         }
  196929             : 
  196930           0 :      return result;
  196931             :    }
  196932             : 
  196933             : 
  196934             : /* #line 196935 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  196935             : 
  196936             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196937             : 
  196938           0 : SgNode* SgNonrealSymbol::copy ( SgCopyHelp& help) const
  196939             :    {
  196940           0 :      SgNonrealSymbol* result = NULL;
  196941             : 
  196942             :   // printf ("Copy SgNonrealSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  196943             : 
  196944             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  196945             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  196946             :   // The default value of the depth is 0, so after this call the depth is 1!
  196947           0 :      help.incrementDepth();
  196948             : 
  196949             : #if 0
  196950             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  196951             :   // but it is not generally true that things can only be copied once!
  196952             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  196953             :   // AstAttribute* existingAttribute = const_cast<SgNonrealSymbol*>(this)->attribute["copied"];
  196954             :      bool previouslyCopied = const_cast<SgNonrealSymbol*>(this)->attribute.exists("copied");
  196955             :      if (previouslyCopied == true)
  196956             :         {
  196957             :           this->get_file_info()->display("Called from copy SgNonrealSymbol: debug");
  196958             :         }
  196959             :      ROSE_ASSERT(previouslyCopied == false);
  196960             : 
  196961             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  196962             :      AstAttribute* newAttribute = new AstAttribute();
  196963             :      ROSE_ASSERT(newAttribute != NULL);
  196964             : 
  196965             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  196966             :      const_cast<SgNonrealSymbol*>(this)->attribute.add("copied",newAttribute);
  196967             : #endif
  196968             : 
  196969             :   // Copy data members from base classes
  196970             :   // Copy constructor parameter data member: declaration_copy
  196971           0 :      SgNonrealDecl* declaration_copy; 
  196972             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  196973           0 :           if (get_declaration() != NULL) 
  196974             :              { 
  196975           0 :                declaration_copy = static_cast<SgNonrealDecl*>(help.copyAst(get_declaration())); 
  196976             :              } 
  196977             :             else 
  196978             :              { 
  196979             :                declaration_copy = NULL; 
  196980             :              } 
  196981             :  
  196982             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  196983             : 
  196984             :   // Build an empty copy of this object (will be filled in, but 
  196985             :   // the parent can't be set and must be set by the caller)
  196986           0 :      result = new SgNonrealSymbol(  declaration_copy );
  196987           0 :      ROSE_ASSERT(result != NULL);
  196988             : 
  196989             :   // Copy data members of "this" class
  196990             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  196991             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  196992             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  196993           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  196994           0 :      if ( p_attributeMechanism != NULL ) 
  196995             :         { 
  196996           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  196997             :         } 
  196998             :        else 
  196999             :         { 
  197000             :           attributeMechanism_copy = NULL; 
  197001             :         } 
  197002             :   /* check for a valid pointer and delete if present */ 
  197003           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  197004             :   /* add assignment to result here */ 
  197005           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  197006             :   // case: not a listType for (using conditionalToSetParent)declaration
  197007           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  197008             :              { 
  197009           0 :                declaration_copy->set_parent(result); 
  197010             :              } 
  197011             : 
  197012             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197013             : 
  197014             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  197015             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  197016             :   // fixupCopy(result,help);
  197017             : 
  197018             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  197019             :   // the Sg_File_Info objects that are built for the new IR nodes.
  197020           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  197021           0 :      if (locatedNode != NULL)
  197022             :         {
  197023             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197024           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  197025           0 :           ROSE_ASSERT(start != NULL);
  197026             : #if 0
  197027             :        // Debugging information
  197028             :           if (start->get_parent() == NULL)
  197029             :              {
  197030             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197031             :              }
  197032             : #endif
  197033           0 :           start->set_parent(locatedNode);
  197034           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197035             : 
  197036           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  197037             : 
  197038             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  197039             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  197040             :        // ROSE_ASSERT(end != NULL);
  197041           0 :           if (end == NULL)
  197042             :              {
  197043           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  197044             :              }
  197045             :             else
  197046             :              {
  197047             : #if 0
  197048             :             // Debugging information
  197049             :                if (end->get_parent() == NULL)
  197050             :                   {
  197051             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197052             :                   }
  197053             : #endif
  197054           0 :                end->set_parent(locatedNode);
  197055           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  197056             :              }
  197057             : 
  197058           0 :           SgExpression* expression = isSgExpression(result);
  197059           0 :           if (isSgExpression(this) != NULL)
  197060             :              {
  197061           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  197062             : 
  197063             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  197064           0 :                if (operatorPosition != NULL)
  197065             :                   {
  197066             : #if 0
  197067             :                  // Debugging information
  197068             :                     if (operatorPosition->get_parent() == NULL)
  197069             :                        {
  197070             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197071             :                        }
  197072             : #endif
  197073           0 :                     operatorPosition->set_parent(expression);
  197074           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  197075             :                   }
  197076             :              }
  197077             :         }
  197078             : 
  197079             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  197080           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  197081           0 :      if (initializedName != NULL)
  197082             :         {
  197083             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197084           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  197085           0 :           ROSE_ASSERT(start != NULL);
  197086             : #if 0
  197087             :        // Debugging information
  197088             :           if (start->get_parent() == NULL)
  197089             :              {
  197090             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197091             :              }
  197092             : #endif
  197093           0 :           start->set_parent(initializedName);
  197094           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197095             : 
  197096             : #if 0
  197097             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  197098             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  197099             : 
  197100             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  197101             :        // ROSE_ASSERT(end != NULL);
  197102             :           if (end == NULL)
  197103             :              {
  197104             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  197105             :              }
  197106             :             else
  197107             :              {
  197108             :                if (end->get_parent() == NULL)
  197109             :                   {
  197110             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197111             :                   }
  197112             :                end->set_parent(initializedName);
  197113             :                ROSE_ASSERT(end->get_parent() != NULL);
  197114             :              }
  197115             : #endif
  197116             :         }
  197117             : 
  197118             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  197119           0 :      help.insertCopiedNodePair(this,result);
  197120             : 
  197121             :   // printf ("End of copy SgNonrealSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  197122             : 
  197123             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  197124             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  197125           0 :      help.decrementDepth();
  197126             : 
  197127             :   // Test if this is the root of the copy!
  197128           0 :      if (help.get_depth() == 0)
  197129             :         {
  197130             :        // This is the original calling node.
  197131             : 
  197132             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  197133             :        // printf ("Calling SgNonrealSymbol::fixupCopy() (from root of AST being copied) \n");
  197134             : #if ALT_FIXUP_COPY
  197135             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  197136           0 :           fixupCopy_scopes (result,help);
  197137           0 :           fixupCopy_symbols (result,help);
  197138           0 :           fixupCopy_references (result,help);
  197139             : #else
  197140             :           fixupCopy(result,help);
  197141             : #endif
  197142             :        // Allow this to be called recursively, so accumulate the state.
  197143             :        // Also, clear the state in the SgCopyHelp object.
  197144             :        // help.clearState();
  197145             :         }
  197146             : 
  197147           0 :      return result;
  197148             :    }
  197149             : 
  197150             : 
  197151             : /* #line 197152 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  197152             : 
  197153             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197154             : 
  197155           0 : SgNode* SgFunctionSymbol::copy ( SgCopyHelp& help) const
  197156             :    {
  197157           0 :      SgFunctionSymbol* result = NULL;
  197158             : 
  197159             :   // printf ("Copy SgFunctionSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  197160             : 
  197161             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  197162             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  197163             :   // The default value of the depth is 0, so after this call the depth is 1!
  197164           0 :      help.incrementDepth();
  197165             : 
  197166             : #if 0
  197167             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  197168             :   // but it is not generally true that things can only be copied once!
  197169             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  197170             :   // AstAttribute* existingAttribute = const_cast<SgFunctionSymbol*>(this)->attribute["copied"];
  197171             :      bool previouslyCopied = const_cast<SgFunctionSymbol*>(this)->attribute.exists("copied");
  197172             :      if (previouslyCopied == true)
  197173             :         {
  197174             :           this->get_file_info()->display("Called from copy SgFunctionSymbol: debug");
  197175             :         }
  197176             :      ROSE_ASSERT(previouslyCopied == false);
  197177             : 
  197178             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  197179             :      AstAttribute* newAttribute = new AstAttribute();
  197180             :      ROSE_ASSERT(newAttribute != NULL);
  197181             : 
  197182             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  197183             :      const_cast<SgFunctionSymbol*>(this)->attribute.add("copied",newAttribute);
  197184             : #endif
  197185             : 
  197186             :   // Copy data members from base classes
  197187             :   // Copy constructor parameter data member: declaration_copy
  197188           0 :      SgFunctionDeclaration* declaration_copy; 
  197189             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  197190           0 :           if (get_declaration() != NULL) 
  197191             :              { 
  197192           0 :                declaration_copy = static_cast<SgFunctionDeclaration*>(help.copyAst(get_declaration())); 
  197193             :              } 
  197194             :             else 
  197195             :              { 
  197196             :                declaration_copy = NULL; 
  197197             :              } 
  197198             :  
  197199             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197200             : 
  197201             :   // Build an empty copy of this object (will be filled in, but 
  197202             :   // the parent can't be set and must be set by the caller)
  197203           0 :      result = new SgFunctionSymbol(  declaration_copy );
  197204           0 :      ROSE_ASSERT(result != NULL);
  197205             : 
  197206             :   // Copy data members of "this" class
  197207             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  197208             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  197209             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  197210           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  197211           0 :      if ( p_attributeMechanism != NULL ) 
  197212             :         { 
  197213           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  197214             :         } 
  197215             :        else 
  197216             :         { 
  197217             :           attributeMechanism_copy = NULL; 
  197218             :         } 
  197219             :   /* check for a valid pointer and delete if present */ 
  197220           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  197221             :   /* add assignment to result here */ 
  197222           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  197223             :   // case: not a listType for (using conditionalToSetParent)declaration
  197224           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  197225             :              { 
  197226           0 :                declaration_copy->set_parent(result); 
  197227             :              } 
  197228             : 
  197229             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197230             : 
  197231             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  197232             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  197233             :   // fixupCopy(result,help);
  197234             : 
  197235             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  197236             :   // the Sg_File_Info objects that are built for the new IR nodes.
  197237           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  197238           0 :      if (locatedNode != NULL)
  197239             :         {
  197240             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197241           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  197242           0 :           ROSE_ASSERT(start != NULL);
  197243             : #if 0
  197244             :        // Debugging information
  197245             :           if (start->get_parent() == NULL)
  197246             :              {
  197247             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197248             :              }
  197249             : #endif
  197250           0 :           start->set_parent(locatedNode);
  197251           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197252             : 
  197253           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  197254             : 
  197255             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  197256             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  197257             :        // ROSE_ASSERT(end != NULL);
  197258           0 :           if (end == NULL)
  197259             :              {
  197260           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  197261             :              }
  197262             :             else
  197263             :              {
  197264             : #if 0
  197265             :             // Debugging information
  197266             :                if (end->get_parent() == NULL)
  197267             :                   {
  197268             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197269             :                   }
  197270             : #endif
  197271           0 :                end->set_parent(locatedNode);
  197272           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  197273             :              }
  197274             : 
  197275           0 :           SgExpression* expression = isSgExpression(result);
  197276           0 :           if (isSgExpression(this) != NULL)
  197277             :              {
  197278           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  197279             : 
  197280             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  197281           0 :                if (operatorPosition != NULL)
  197282             :                   {
  197283             : #if 0
  197284             :                  // Debugging information
  197285             :                     if (operatorPosition->get_parent() == NULL)
  197286             :                        {
  197287             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197288             :                        }
  197289             : #endif
  197290           0 :                     operatorPosition->set_parent(expression);
  197291           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  197292             :                   }
  197293             :              }
  197294             :         }
  197295             : 
  197296             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  197297           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  197298           0 :      if (initializedName != NULL)
  197299             :         {
  197300             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197301           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  197302           0 :           ROSE_ASSERT(start != NULL);
  197303             : #if 0
  197304             :        // Debugging information
  197305             :           if (start->get_parent() == NULL)
  197306             :              {
  197307             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197308             :              }
  197309             : #endif
  197310           0 :           start->set_parent(initializedName);
  197311           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197312             : 
  197313             : #if 0
  197314             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  197315             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  197316             : 
  197317             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  197318             :        // ROSE_ASSERT(end != NULL);
  197319             :           if (end == NULL)
  197320             :              {
  197321             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  197322             :              }
  197323             :             else
  197324             :              {
  197325             :                if (end->get_parent() == NULL)
  197326             :                   {
  197327             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197328             :                   }
  197329             :                end->set_parent(initializedName);
  197330             :                ROSE_ASSERT(end->get_parent() != NULL);
  197331             :              }
  197332             : #endif
  197333             :         }
  197334             : 
  197335             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  197336           0 :      help.insertCopiedNodePair(this,result);
  197337             : 
  197338             :   // printf ("End of copy SgFunctionSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  197339             : 
  197340             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  197341             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  197342           0 :      help.decrementDepth();
  197343             : 
  197344             :   // Test if this is the root of the copy!
  197345           0 :      if (help.get_depth() == 0)
  197346             :         {
  197347             :        // This is the original calling node.
  197348             : 
  197349             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  197350             :        // printf ("Calling SgFunctionSymbol::fixupCopy() (from root of AST being copied) \n");
  197351             : #if ALT_FIXUP_COPY
  197352             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  197353           0 :           fixupCopy_scopes (result,help);
  197354           0 :           fixupCopy_symbols (result,help);
  197355           0 :           fixupCopy_references (result,help);
  197356             : #else
  197357             :           fixupCopy(result,help);
  197358             : #endif
  197359             :        // Allow this to be called recursively, so accumulate the state.
  197360             :        // Also, clear the state in the SgCopyHelp object.
  197361             :        // help.clearState();
  197362             :         }
  197363             : 
  197364           0 :      return result;
  197365             :    }
  197366             : 
  197367             : 
  197368             : /* #line 197369 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  197369             : 
  197370             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197371             : 
  197372           0 : SgNode* SgMemberFunctionSymbol::copy ( SgCopyHelp& help) const
  197373             :    {
  197374           0 :      SgMemberFunctionSymbol* result = NULL;
  197375             : 
  197376             :   // printf ("Copy SgMemberFunctionSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  197377             : 
  197378             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  197379             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  197380             :   // The default value of the depth is 0, so after this call the depth is 1!
  197381           0 :      help.incrementDepth();
  197382             : 
  197383             : #if 0
  197384             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  197385             :   // but it is not generally true that things can only be copied once!
  197386             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  197387             :   // AstAttribute* existingAttribute = const_cast<SgMemberFunctionSymbol*>(this)->attribute["copied"];
  197388             :      bool previouslyCopied = const_cast<SgMemberFunctionSymbol*>(this)->attribute.exists("copied");
  197389             :      if (previouslyCopied == true)
  197390             :         {
  197391             :           this->get_file_info()->display("Called from copy SgMemberFunctionSymbol: debug");
  197392             :         }
  197393             :      ROSE_ASSERT(previouslyCopied == false);
  197394             : 
  197395             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  197396             :      AstAttribute* newAttribute = new AstAttribute();
  197397             :      ROSE_ASSERT(newAttribute != NULL);
  197398             : 
  197399             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  197400             :      const_cast<SgMemberFunctionSymbol*>(this)->attribute.add("copied",newAttribute);
  197401             : #endif
  197402             : 
  197403             :   // Copy data members from base classes
  197404             :   // Copy constructor parameter data member: declaration_copy
  197405           0 :      SgFunctionDeclaration* declaration_copy; 
  197406             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  197407           0 :           if (get_declaration() != NULL) 
  197408             :              { 
  197409           0 :                declaration_copy = static_cast<SgFunctionDeclaration*>(help.copyAst(get_declaration())); 
  197410             :              } 
  197411             :             else 
  197412             :              { 
  197413             :                declaration_copy = NULL; 
  197414             :              } 
  197415             :  
  197416             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197417             : 
  197418             :   // Build an empty copy of this object (will be filled in, but 
  197419             :   // the parent can't be set and must be set by the caller)
  197420           0 :      result = new SgMemberFunctionSymbol(  declaration_copy );
  197421           0 :      ROSE_ASSERT(result != NULL);
  197422             : 
  197423             :   // Copy data members of "this" class
  197424             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  197425             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  197426             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  197427           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  197428           0 :      if ( p_attributeMechanism != NULL ) 
  197429             :         { 
  197430           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  197431             :         } 
  197432             :        else 
  197433             :         { 
  197434             :           attributeMechanism_copy = NULL; 
  197435             :         } 
  197436             :   /* check for a valid pointer and delete if present */ 
  197437           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  197438             :   /* add assignment to result here */ 
  197439           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  197440             :   // case: not a listType for (using conditionalToSetParent)declaration
  197441           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  197442             :              { 
  197443           0 :                declaration_copy->set_parent(result); 
  197444             :              } 
  197445             : 
  197446             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197447             : 
  197448             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  197449             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  197450             :   // fixupCopy(result,help);
  197451             : 
  197452             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  197453             :   // the Sg_File_Info objects that are built for the new IR nodes.
  197454           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  197455           0 :      if (locatedNode != NULL)
  197456             :         {
  197457             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197458           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  197459           0 :           ROSE_ASSERT(start != NULL);
  197460             : #if 0
  197461             :        // Debugging information
  197462             :           if (start->get_parent() == NULL)
  197463             :              {
  197464             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197465             :              }
  197466             : #endif
  197467           0 :           start->set_parent(locatedNode);
  197468           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197469             : 
  197470           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  197471             : 
  197472             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  197473             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  197474             :        // ROSE_ASSERT(end != NULL);
  197475           0 :           if (end == NULL)
  197476             :              {
  197477           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  197478             :              }
  197479             :             else
  197480             :              {
  197481             : #if 0
  197482             :             // Debugging information
  197483             :                if (end->get_parent() == NULL)
  197484             :                   {
  197485             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197486             :                   }
  197487             : #endif
  197488           0 :                end->set_parent(locatedNode);
  197489           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  197490             :              }
  197491             : 
  197492           0 :           SgExpression* expression = isSgExpression(result);
  197493           0 :           if (isSgExpression(this) != NULL)
  197494             :              {
  197495           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  197496             : 
  197497             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  197498           0 :                if (operatorPosition != NULL)
  197499             :                   {
  197500             : #if 0
  197501             :                  // Debugging information
  197502             :                     if (operatorPosition->get_parent() == NULL)
  197503             :                        {
  197504             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197505             :                        }
  197506             : #endif
  197507           0 :                     operatorPosition->set_parent(expression);
  197508           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  197509             :                   }
  197510             :              }
  197511             :         }
  197512             : 
  197513             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  197514           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  197515           0 :      if (initializedName != NULL)
  197516             :         {
  197517             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197518           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  197519           0 :           ROSE_ASSERT(start != NULL);
  197520             : #if 0
  197521             :        // Debugging information
  197522             :           if (start->get_parent() == NULL)
  197523             :              {
  197524             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197525             :              }
  197526             : #endif
  197527           0 :           start->set_parent(initializedName);
  197528           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197529             : 
  197530             : #if 0
  197531             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  197532             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  197533             : 
  197534             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  197535             :        // ROSE_ASSERT(end != NULL);
  197536             :           if (end == NULL)
  197537             :              {
  197538             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  197539             :              }
  197540             :             else
  197541             :              {
  197542             :                if (end->get_parent() == NULL)
  197543             :                   {
  197544             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197545             :                   }
  197546             :                end->set_parent(initializedName);
  197547             :                ROSE_ASSERT(end->get_parent() != NULL);
  197548             :              }
  197549             : #endif
  197550             :         }
  197551             : 
  197552             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  197553           0 :      help.insertCopiedNodePair(this,result);
  197554             : 
  197555             :   // printf ("End of copy SgMemberFunctionSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  197556             : 
  197557             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  197558             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  197559           0 :      help.decrementDepth();
  197560             : 
  197561             :   // Test if this is the root of the copy!
  197562           0 :      if (help.get_depth() == 0)
  197563             :         {
  197564             :        // This is the original calling node.
  197565             : 
  197566             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  197567             :        // printf ("Calling SgMemberFunctionSymbol::fixupCopy() (from root of AST being copied) \n");
  197568             : #if ALT_FIXUP_COPY
  197569             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  197570           0 :           fixupCopy_scopes (result,help);
  197571           0 :           fixupCopy_symbols (result,help);
  197572           0 :           fixupCopy_references (result,help);
  197573             : #else
  197574             :           fixupCopy(result,help);
  197575             : #endif
  197576             :        // Allow this to be called recursively, so accumulate the state.
  197577             :        // Also, clear the state in the SgCopyHelp object.
  197578             :        // help.clearState();
  197579             :         }
  197580             : 
  197581           0 :      return result;
  197582             :    }
  197583             : 
  197584             : 
  197585             : /* #line 197586 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  197586             : 
  197587             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197588             : 
  197589           0 : SgNode* SgTemplateMemberFunctionSymbol::copy ( SgCopyHelp& help) const
  197590             :    {
  197591           0 :      SgTemplateMemberFunctionSymbol* result = NULL;
  197592             : 
  197593             :   // printf ("Copy SgTemplateMemberFunctionSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  197594             : 
  197595             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  197596             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  197597             :   // The default value of the depth is 0, so after this call the depth is 1!
  197598           0 :      help.incrementDepth();
  197599             : 
  197600             : #if 0
  197601             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  197602             :   // but it is not generally true that things can only be copied once!
  197603             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  197604             :   // AstAttribute* existingAttribute = const_cast<SgTemplateMemberFunctionSymbol*>(this)->attribute["copied"];
  197605             :      bool previouslyCopied = const_cast<SgTemplateMemberFunctionSymbol*>(this)->attribute.exists("copied");
  197606             :      if (previouslyCopied == true)
  197607             :         {
  197608             :           this->get_file_info()->display("Called from copy SgTemplateMemberFunctionSymbol: debug");
  197609             :         }
  197610             :      ROSE_ASSERT(previouslyCopied == false);
  197611             : 
  197612             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  197613             :      AstAttribute* newAttribute = new AstAttribute();
  197614             :      ROSE_ASSERT(newAttribute != NULL);
  197615             : 
  197616             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  197617             :      const_cast<SgTemplateMemberFunctionSymbol*>(this)->attribute.add("copied",newAttribute);
  197618             : #endif
  197619             : 
  197620             :   // Copy data members from base classes
  197621             :   // Copy constructor parameter data member: declaration_copy
  197622           0 :      SgFunctionDeclaration* declaration_copy; 
  197623             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  197624           0 :           if (get_declaration() != NULL) 
  197625             :              { 
  197626           0 :                declaration_copy = static_cast<SgFunctionDeclaration*>(help.copyAst(get_declaration())); 
  197627             :              } 
  197628             :             else 
  197629             :              { 
  197630             :                declaration_copy = NULL; 
  197631             :              } 
  197632             :  
  197633             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197634             : 
  197635             :   // Build an empty copy of this object (will be filled in, but 
  197636             :   // the parent can't be set and must be set by the caller)
  197637           0 :      result = new SgTemplateMemberFunctionSymbol(  declaration_copy );
  197638           0 :      ROSE_ASSERT(result != NULL);
  197639             : 
  197640             :   // Copy data members of "this" class
  197641             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  197642             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  197643             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  197644           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  197645           0 :      if ( p_attributeMechanism != NULL ) 
  197646             :         { 
  197647           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  197648             :         } 
  197649             :        else 
  197650             :         { 
  197651             :           attributeMechanism_copy = NULL; 
  197652             :         } 
  197653             :   /* check for a valid pointer and delete if present */ 
  197654           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  197655             :   /* add assignment to result here */ 
  197656           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  197657             :   // case: not a listType for (using conditionalToSetParent)declaration
  197658           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  197659             :              { 
  197660           0 :                declaration_copy->set_parent(result); 
  197661             :              } 
  197662             : 
  197663             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197664             : 
  197665             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  197666             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  197667             :   // fixupCopy(result,help);
  197668             : 
  197669             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  197670             :   // the Sg_File_Info objects that are built for the new IR nodes.
  197671           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  197672           0 :      if (locatedNode != NULL)
  197673             :         {
  197674             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197675           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  197676           0 :           ROSE_ASSERT(start != NULL);
  197677             : #if 0
  197678             :        // Debugging information
  197679             :           if (start->get_parent() == NULL)
  197680             :              {
  197681             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197682             :              }
  197683             : #endif
  197684           0 :           start->set_parent(locatedNode);
  197685           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197686             : 
  197687           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  197688             : 
  197689             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  197690             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  197691             :        // ROSE_ASSERT(end != NULL);
  197692           0 :           if (end == NULL)
  197693             :              {
  197694           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  197695             :              }
  197696             :             else
  197697             :              {
  197698             : #if 0
  197699             :             // Debugging information
  197700             :                if (end->get_parent() == NULL)
  197701             :                   {
  197702             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197703             :                   }
  197704             : #endif
  197705           0 :                end->set_parent(locatedNode);
  197706           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  197707             :              }
  197708             : 
  197709           0 :           SgExpression* expression = isSgExpression(result);
  197710           0 :           if (isSgExpression(this) != NULL)
  197711             :              {
  197712           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  197713             : 
  197714             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  197715           0 :                if (operatorPosition != NULL)
  197716             :                   {
  197717             : #if 0
  197718             :                  // Debugging information
  197719             :                     if (operatorPosition->get_parent() == NULL)
  197720             :                        {
  197721             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197722             :                        }
  197723             : #endif
  197724           0 :                     operatorPosition->set_parent(expression);
  197725           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  197726             :                   }
  197727             :              }
  197728             :         }
  197729             : 
  197730             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  197731           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  197732           0 :      if (initializedName != NULL)
  197733             :         {
  197734             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197735           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  197736           0 :           ROSE_ASSERT(start != NULL);
  197737             : #if 0
  197738             :        // Debugging information
  197739             :           if (start->get_parent() == NULL)
  197740             :              {
  197741             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197742             :              }
  197743             : #endif
  197744           0 :           start->set_parent(initializedName);
  197745           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197746             : 
  197747             : #if 0
  197748             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  197749             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  197750             : 
  197751             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  197752             :        // ROSE_ASSERT(end != NULL);
  197753             :           if (end == NULL)
  197754             :              {
  197755             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  197756             :              }
  197757             :             else
  197758             :              {
  197759             :                if (end->get_parent() == NULL)
  197760             :                   {
  197761             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197762             :                   }
  197763             :                end->set_parent(initializedName);
  197764             :                ROSE_ASSERT(end->get_parent() != NULL);
  197765             :              }
  197766             : #endif
  197767             :         }
  197768             : 
  197769             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  197770           0 :      help.insertCopiedNodePair(this,result);
  197771             : 
  197772             :   // printf ("End of copy SgTemplateMemberFunctionSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  197773             : 
  197774             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  197775             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  197776           0 :      help.decrementDepth();
  197777             : 
  197778             :   // Test if this is the root of the copy!
  197779           0 :      if (help.get_depth() == 0)
  197780             :         {
  197781             :        // This is the original calling node.
  197782             : 
  197783             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  197784             :        // printf ("Calling SgTemplateMemberFunctionSymbol::fixupCopy() (from root of AST being copied) \n");
  197785             : #if ALT_FIXUP_COPY
  197786             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  197787           0 :           fixupCopy_scopes (result,help);
  197788           0 :           fixupCopy_symbols (result,help);
  197789           0 :           fixupCopy_references (result,help);
  197790             : #else
  197791             :           fixupCopy(result,help);
  197792             : #endif
  197793             :        // Allow this to be called recursively, so accumulate the state.
  197794             :        // Also, clear the state in the SgCopyHelp object.
  197795             :        // help.clearState();
  197796             :         }
  197797             : 
  197798           0 :      return result;
  197799             :    }
  197800             : 
  197801             : 
  197802             : /* #line 197803 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  197803             : 
  197804             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197805             : 
  197806           0 : SgNode* SgTemplateFunctionSymbol::copy ( SgCopyHelp& help) const
  197807             :    {
  197808           0 :      SgTemplateFunctionSymbol* result = NULL;
  197809             : 
  197810             :   // printf ("Copy SgTemplateFunctionSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  197811             : 
  197812             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  197813             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  197814             :   // The default value of the depth is 0, so after this call the depth is 1!
  197815           0 :      help.incrementDepth();
  197816             : 
  197817             : #if 0
  197818             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  197819             :   // but it is not generally true that things can only be copied once!
  197820             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  197821             :   // AstAttribute* existingAttribute = const_cast<SgTemplateFunctionSymbol*>(this)->attribute["copied"];
  197822             :      bool previouslyCopied = const_cast<SgTemplateFunctionSymbol*>(this)->attribute.exists("copied");
  197823             :      if (previouslyCopied == true)
  197824             :         {
  197825             :           this->get_file_info()->display("Called from copy SgTemplateFunctionSymbol: debug");
  197826             :         }
  197827             :      ROSE_ASSERT(previouslyCopied == false);
  197828             : 
  197829             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  197830             :      AstAttribute* newAttribute = new AstAttribute();
  197831             :      ROSE_ASSERT(newAttribute != NULL);
  197832             : 
  197833             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  197834             :      const_cast<SgTemplateFunctionSymbol*>(this)->attribute.add("copied",newAttribute);
  197835             : #endif
  197836             : 
  197837             :   // Copy data members from base classes
  197838             :   // Copy constructor parameter data member: declaration_copy
  197839           0 :      SgFunctionDeclaration* declaration_copy; 
  197840             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  197841           0 :           if (get_declaration() != NULL) 
  197842             :              { 
  197843           0 :                declaration_copy = static_cast<SgFunctionDeclaration*>(help.copyAst(get_declaration())); 
  197844             :              } 
  197845             :             else 
  197846             :              { 
  197847             :                declaration_copy = NULL; 
  197848             :              } 
  197849             :  
  197850             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197851             : 
  197852             :   // Build an empty copy of this object (will be filled in, but 
  197853             :   // the parent can't be set and must be set by the caller)
  197854           0 :      result = new SgTemplateFunctionSymbol(  declaration_copy );
  197855           0 :      ROSE_ASSERT(result != NULL);
  197856             : 
  197857             :   // Copy data members of "this" class
  197858             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  197859             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  197860             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  197861           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  197862           0 :      if ( p_attributeMechanism != NULL ) 
  197863             :         { 
  197864           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  197865             :         } 
  197866             :        else 
  197867             :         { 
  197868             :           attributeMechanism_copy = NULL; 
  197869             :         } 
  197870             :   /* check for a valid pointer and delete if present */ 
  197871           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  197872             :   /* add assignment to result here */ 
  197873           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  197874             :   // case: not a listType for (using conditionalToSetParent)declaration
  197875           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  197876             :              { 
  197877           0 :                declaration_copy->set_parent(result); 
  197878             :              } 
  197879             : 
  197880             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  197881             : 
  197882             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  197883             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  197884             :   // fixupCopy(result,help);
  197885             : 
  197886             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  197887             :   // the Sg_File_Info objects that are built for the new IR nodes.
  197888           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  197889           0 :      if (locatedNode != NULL)
  197890             :         {
  197891             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197892           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  197893           0 :           ROSE_ASSERT(start != NULL);
  197894             : #if 0
  197895             :        // Debugging information
  197896             :           if (start->get_parent() == NULL)
  197897             :              {
  197898             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197899             :              }
  197900             : #endif
  197901           0 :           start->set_parent(locatedNode);
  197902           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197903             : 
  197904           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  197905             : 
  197906             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  197907             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  197908             :        // ROSE_ASSERT(end != NULL);
  197909           0 :           if (end == NULL)
  197910             :              {
  197911           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  197912             :              }
  197913             :             else
  197914             :              {
  197915             : #if 0
  197916             :             // Debugging information
  197917             :                if (end->get_parent() == NULL)
  197918             :                   {
  197919             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197920             :                   }
  197921             : #endif
  197922           0 :                end->set_parent(locatedNode);
  197923           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  197924             :              }
  197925             : 
  197926           0 :           SgExpression* expression = isSgExpression(result);
  197927           0 :           if (isSgExpression(this) != NULL)
  197928             :              {
  197929           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  197930             : 
  197931             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  197932           0 :                if (operatorPosition != NULL)
  197933             :                   {
  197934             : #if 0
  197935             :                  // Debugging information
  197936             :                     if (operatorPosition->get_parent() == NULL)
  197937             :                        {
  197938             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197939             :                        }
  197940             : #endif
  197941           0 :                     operatorPosition->set_parent(expression);
  197942           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  197943             :                   }
  197944             :              }
  197945             :         }
  197946             : 
  197947             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  197948           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  197949           0 :      if (initializedName != NULL)
  197950             :         {
  197951             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  197952           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  197953           0 :           ROSE_ASSERT(start != NULL);
  197954             : #if 0
  197955             :        // Debugging information
  197956             :           if (start->get_parent() == NULL)
  197957             :              {
  197958             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197959             :              }
  197960             : #endif
  197961           0 :           start->set_parent(initializedName);
  197962           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  197963             : 
  197964             : #if 0
  197965             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  197966             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  197967             : 
  197968             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  197969             :        // ROSE_ASSERT(end != NULL);
  197970             :           if (end == NULL)
  197971             :              {
  197972             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  197973             :              }
  197974             :             else
  197975             :              {
  197976             :                if (end->get_parent() == NULL)
  197977             :                   {
  197978             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  197979             :                   }
  197980             :                end->set_parent(initializedName);
  197981             :                ROSE_ASSERT(end->get_parent() != NULL);
  197982             :              }
  197983             : #endif
  197984             :         }
  197985             : 
  197986             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  197987           0 :      help.insertCopiedNodePair(this,result);
  197988             : 
  197989             :   // printf ("End of copy SgTemplateFunctionSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  197990             : 
  197991             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  197992             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  197993           0 :      help.decrementDepth();
  197994             : 
  197995             :   // Test if this is the root of the copy!
  197996           0 :      if (help.get_depth() == 0)
  197997             :         {
  197998             :        // This is the original calling node.
  197999             : 
  198000             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  198001             :        // printf ("Calling SgTemplateFunctionSymbol::fixupCopy() (from root of AST being copied) \n");
  198002             : #if ALT_FIXUP_COPY
  198003             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  198004           0 :           fixupCopy_scopes (result,help);
  198005           0 :           fixupCopy_symbols (result,help);
  198006           0 :           fixupCopy_references (result,help);
  198007             : #else
  198008             :           fixupCopy(result,help);
  198009             : #endif
  198010             :        // Allow this to be called recursively, so accumulate the state.
  198011             :        // Also, clear the state in the SgCopyHelp object.
  198012             :        // help.clearState();
  198013             :         }
  198014             : 
  198015           0 :      return result;
  198016             :    }
  198017             : 
  198018             : 
  198019             : /* #line 198020 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  198020             : 
  198021             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198022             : 
  198023           0 : SgNode* SgRenameSymbol::copy ( SgCopyHelp& help) const
  198024             :    {
  198025           0 :      SgRenameSymbol* result = NULL;
  198026             : 
  198027             :   // printf ("Copy SgRenameSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  198028             : 
  198029             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  198030             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  198031             :   // The default value of the depth is 0, so after this call the depth is 1!
  198032           0 :      help.incrementDepth();
  198033             : 
  198034             : #if 0
  198035             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  198036             :   // but it is not generally true that things can only be copied once!
  198037             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  198038             :   // AstAttribute* existingAttribute = const_cast<SgRenameSymbol*>(this)->attribute["copied"];
  198039             :      bool previouslyCopied = const_cast<SgRenameSymbol*>(this)->attribute.exists("copied");
  198040             :      if (previouslyCopied == true)
  198041             :         {
  198042             :           this->get_file_info()->display("Called from copy SgRenameSymbol: debug");
  198043             :         }
  198044             :      ROSE_ASSERT(previouslyCopied == false);
  198045             : 
  198046             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  198047             :      AstAttribute* newAttribute = new AstAttribute();
  198048             :      ROSE_ASSERT(newAttribute != NULL);
  198049             : 
  198050             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  198051             :      const_cast<SgRenameSymbol*>(this)->attribute.add("copied",newAttribute);
  198052             : #endif
  198053             : 
  198054             :   // Copy data members from base classes
  198055             :   // Copy constructor parameter data member: declaration_copy
  198056           0 :      SgFunctionDeclaration* declaration_copy; 
  198057             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  198058           0 :           if (get_declaration() != NULL) 
  198059             :              { 
  198060           0 :                declaration_copy = static_cast<SgFunctionDeclaration*>(help.copyAst(get_declaration())); 
  198061             :              } 
  198062             :             else 
  198063             :              { 
  198064             :                declaration_copy = NULL; 
  198065             :              } 
  198066             :   // Copy constructor parameter data member: original_symbol_copy
  198067           0 :      SgSymbol* original_symbol_copy; 
  198068             :   // case: not a listType for (using conditionalToCopyVariable)original_symbol
  198069           0 :           if (get_original_symbol() != NULL) 
  198070             :              { 
  198071           0 :                original_symbol_copy = static_cast<SgSymbol*>(help.copyAst(get_original_symbol())); 
  198072             :              } 
  198073             :             else 
  198074             :              { 
  198075             :                original_symbol_copy = NULL; 
  198076             :              } 
  198077             :   // Copy constructor parameter data member: new_name_copy
  198078             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for new_name
  198079             :   // case: toBeCopied == COPY_DATA for new_name
  198080           0 :      SgName new_name_copy = p_new_name; 
  198081             :  
  198082             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198083             : 
  198084             :   // Build an empty copy of this object (will be filled in, but 
  198085             :   // the parent can't be set and must be set by the caller)
  198086           0 :      result = new SgRenameSymbol(  declaration_copy, original_symbol_copy, new_name_copy );
  198087           0 :      ROSE_ASSERT(result != NULL);
  198088             : 
  198089             :   // Copy data members of "this" class
  198090             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  198091             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  198092             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  198093           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  198094           0 :      if ( p_attributeMechanism != NULL ) 
  198095             :         { 
  198096           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  198097             :         } 
  198098             :        else 
  198099             :         { 
  198100             :           attributeMechanism_copy = NULL; 
  198101             :         } 
  198102             :   /* check for a valid pointer and delete if present */ 
  198103           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  198104             :   /* add assignment to result here */ 
  198105           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  198106             :   // case: not a listType for (using conditionalToSetParent)original_symbol
  198107           0 :           if ( (original_symbol_copy != NULL) && (original_symbol_copy->get_parent() == NULL) && (isSgType(original_symbol_copy) == NULL) ) 
  198108             :              { 
  198109           0 :                original_symbol_copy->set_parent(result); 
  198110             :              } 
  198111             :   // case: not a listType for (using conditionalToSetParent)declaration
  198112           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  198113             :              { 
  198114           0 :                declaration_copy->set_parent(result); 
  198115             :              } 
  198116             : 
  198117             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198118             : 
  198119             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  198120             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  198121             :   // fixupCopy(result,help);
  198122             : 
  198123             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  198124             :   // the Sg_File_Info objects that are built for the new IR nodes.
  198125           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  198126           0 :      if (locatedNode != NULL)
  198127             :         {
  198128             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  198129           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  198130           0 :           ROSE_ASSERT(start != NULL);
  198131             : #if 0
  198132             :        // Debugging information
  198133             :           if (start->get_parent() == NULL)
  198134             :              {
  198135             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198136             :              }
  198137             : #endif
  198138           0 :           start->set_parent(locatedNode);
  198139           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  198140             : 
  198141           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  198142             : 
  198143             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  198144             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  198145             :        // ROSE_ASSERT(end != NULL);
  198146           0 :           if (end == NULL)
  198147             :              {
  198148           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  198149             :              }
  198150             :             else
  198151             :              {
  198152             : #if 0
  198153             :             // Debugging information
  198154             :                if (end->get_parent() == NULL)
  198155             :                   {
  198156             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198157             :                   }
  198158             : #endif
  198159           0 :                end->set_parent(locatedNode);
  198160           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  198161             :              }
  198162             : 
  198163           0 :           SgExpression* expression = isSgExpression(result);
  198164           0 :           if (isSgExpression(this) != NULL)
  198165             :              {
  198166           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  198167             : 
  198168             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  198169           0 :                if (operatorPosition != NULL)
  198170             :                   {
  198171             : #if 0
  198172             :                  // Debugging information
  198173             :                     if (operatorPosition->get_parent() == NULL)
  198174             :                        {
  198175             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198176             :                        }
  198177             : #endif
  198178           0 :                     operatorPosition->set_parent(expression);
  198179           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  198180             :                   }
  198181             :              }
  198182             :         }
  198183             : 
  198184             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  198185           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  198186           0 :      if (initializedName != NULL)
  198187             :         {
  198188             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  198189           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  198190           0 :           ROSE_ASSERT(start != NULL);
  198191             : #if 0
  198192             :        // Debugging information
  198193             :           if (start->get_parent() == NULL)
  198194             :              {
  198195             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198196             :              }
  198197             : #endif
  198198           0 :           start->set_parent(initializedName);
  198199           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  198200             : 
  198201             : #if 0
  198202             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  198203             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  198204             : 
  198205             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  198206             :        // ROSE_ASSERT(end != NULL);
  198207             :           if (end == NULL)
  198208             :              {
  198209             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  198210             :              }
  198211             :             else
  198212             :              {
  198213             :                if (end->get_parent() == NULL)
  198214             :                   {
  198215             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198216             :                   }
  198217             :                end->set_parent(initializedName);
  198218             :                ROSE_ASSERT(end->get_parent() != NULL);
  198219             :              }
  198220             : #endif
  198221             :         }
  198222             : 
  198223             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  198224           0 :      help.insertCopiedNodePair(this,result);
  198225             : 
  198226             :   // printf ("End of copy SgRenameSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  198227             : 
  198228             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  198229             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  198230           0 :      help.decrementDepth();
  198231             : 
  198232             :   // Test if this is the root of the copy!
  198233           0 :      if (help.get_depth() == 0)
  198234             :         {
  198235             :        // This is the original calling node.
  198236             : 
  198237             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  198238             :        // printf ("Calling SgRenameSymbol::fixupCopy() (from root of AST being copied) \n");
  198239             : #if ALT_FIXUP_COPY
  198240             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  198241           0 :           fixupCopy_scopes (result,help);
  198242           0 :           fixupCopy_symbols (result,help);
  198243           0 :           fixupCopy_references (result,help);
  198244             : #else
  198245             :           fixupCopy(result,help);
  198246             : #endif
  198247             :        // Allow this to be called recursively, so accumulate the state.
  198248             :        // Also, clear the state in the SgCopyHelp object.
  198249             :        // help.clearState();
  198250             :         }
  198251             : 
  198252           0 :      return result;
  198253             :    }
  198254             : 
  198255             : 
  198256             : /* #line 198257 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  198257             : 
  198258             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198259             : 
  198260           0 : SgNode* SgFunctionTypeSymbol::copy ( SgCopyHelp& help) const
  198261             :    {
  198262           0 :      SgFunctionTypeSymbol* result = NULL;
  198263             : 
  198264             :   // printf ("Copy SgFunctionTypeSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  198265             : 
  198266             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  198267             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  198268             :   // The default value of the depth is 0, so after this call the depth is 1!
  198269           0 :      help.incrementDepth();
  198270             : 
  198271             : #if 0
  198272             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  198273             :   // but it is not generally true that things can only be copied once!
  198274             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  198275             :   // AstAttribute* existingAttribute = const_cast<SgFunctionTypeSymbol*>(this)->attribute["copied"];
  198276             :      bool previouslyCopied = const_cast<SgFunctionTypeSymbol*>(this)->attribute.exists("copied");
  198277             :      if (previouslyCopied == true)
  198278             :         {
  198279             :           this->get_file_info()->display("Called from copy SgFunctionTypeSymbol: debug");
  198280             :         }
  198281             :      ROSE_ASSERT(previouslyCopied == false);
  198282             : 
  198283             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  198284             :      AstAttribute* newAttribute = new AstAttribute();
  198285             :      ROSE_ASSERT(newAttribute != NULL);
  198286             : 
  198287             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  198288             :      const_cast<SgFunctionTypeSymbol*>(this)->attribute.add("copied",newAttribute);
  198289             : #endif
  198290             : 
  198291             :   // Copy data members from base classes
  198292             :   // Copy constructor parameter data member: name_copy
  198293             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  198294             :   // case: toBeCopied == COPY_DATA for name
  198295           0 :      SgName name_copy = p_name; 
  198296             :   // Copy constructor parameter data member: type_copy
  198297             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
  198298             :   // case: toBeCopied == COPY_DATA for type
  198299           0 :      SgType* type_copy = p_type; 
  198300             :  
  198301             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198302             : 
  198303             :   // Build an empty copy of this object (will be filled in, but 
  198304             :   // the parent can't be set and must be set by the caller)
  198305           0 :      result = new SgFunctionTypeSymbol(  name_copy, type_copy );
  198306           0 :      ROSE_ASSERT(result != NULL);
  198307             : 
  198308             :   // Copy data members of "this" class
  198309             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  198310             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  198311             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  198312           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  198313           0 :      if ( p_attributeMechanism != NULL ) 
  198314             :         { 
  198315           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  198316             :         } 
  198317             :        else 
  198318             :         { 
  198319             :           attributeMechanism_copy = NULL; 
  198320             :         } 
  198321             :   /* check for a valid pointer and delete if present */ 
  198322           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  198323             :   /* add assignment to result here */ 
  198324           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  198325             : 
  198326             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198327             : 
  198328             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  198329             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  198330             :   // fixupCopy(result,help);
  198331             : 
  198332             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  198333             :   // the Sg_File_Info objects that are built for the new IR nodes.
  198334           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  198335           0 :      if (locatedNode != NULL)
  198336             :         {
  198337             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  198338           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  198339           0 :           ROSE_ASSERT(start != NULL);
  198340             : #if 0
  198341             :        // Debugging information
  198342             :           if (start->get_parent() == NULL)
  198343             :              {
  198344             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198345             :              }
  198346             : #endif
  198347           0 :           start->set_parent(locatedNode);
  198348           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  198349             : 
  198350           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  198351             : 
  198352             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  198353             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  198354             :        // ROSE_ASSERT(end != NULL);
  198355           0 :           if (end == NULL)
  198356             :              {
  198357           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  198358             :              }
  198359             :             else
  198360             :              {
  198361             : #if 0
  198362             :             // Debugging information
  198363             :                if (end->get_parent() == NULL)
  198364             :                   {
  198365             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198366             :                   }
  198367             : #endif
  198368           0 :                end->set_parent(locatedNode);
  198369           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  198370             :              }
  198371             : 
  198372           0 :           SgExpression* expression = isSgExpression(result);
  198373           0 :           if (isSgExpression(this) != NULL)
  198374             :              {
  198375           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  198376             : 
  198377             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  198378           0 :                if (operatorPosition != NULL)
  198379             :                   {
  198380             : #if 0
  198381             :                  // Debugging information
  198382             :                     if (operatorPosition->get_parent() == NULL)
  198383             :                        {
  198384             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198385             :                        }
  198386             : #endif
  198387           0 :                     operatorPosition->set_parent(expression);
  198388           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  198389             :                   }
  198390             :              }
  198391             :         }
  198392             : 
  198393             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  198394           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  198395           0 :      if (initializedName != NULL)
  198396             :         {
  198397             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  198398           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  198399           0 :           ROSE_ASSERT(start != NULL);
  198400             : #if 0
  198401             :        // Debugging information
  198402             :           if (start->get_parent() == NULL)
  198403             :              {
  198404             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198405             :              }
  198406             : #endif
  198407           0 :           start->set_parent(initializedName);
  198408           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  198409             : 
  198410             : #if 0
  198411             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  198412             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  198413             : 
  198414             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  198415             :        // ROSE_ASSERT(end != NULL);
  198416             :           if (end == NULL)
  198417             :              {
  198418             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  198419             :              }
  198420             :             else
  198421             :              {
  198422             :                if (end->get_parent() == NULL)
  198423             :                   {
  198424             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198425             :                   }
  198426             :                end->set_parent(initializedName);
  198427             :                ROSE_ASSERT(end->get_parent() != NULL);
  198428             :              }
  198429             : #endif
  198430             :         }
  198431             : 
  198432             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  198433           0 :      help.insertCopiedNodePair(this,result);
  198434             : 
  198435             :   // printf ("End of copy SgFunctionTypeSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  198436             : 
  198437             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  198438             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  198439           0 :      help.decrementDepth();
  198440             : 
  198441             :   // Test if this is the root of the copy!
  198442           0 :      if (help.get_depth() == 0)
  198443             :         {
  198444             :        // This is the original calling node.
  198445             : 
  198446             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  198447             :        // printf ("Calling SgFunctionTypeSymbol::fixupCopy() (from root of AST being copied) \n");
  198448             : #if ALT_FIXUP_COPY
  198449             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  198450           0 :           fixupCopy_scopes (result,help);
  198451           0 :           fixupCopy_symbols (result,help);
  198452           0 :           fixupCopy_references (result,help);
  198453             : #else
  198454             :           fixupCopy(result,help);
  198455             : #endif
  198456             :        // Allow this to be called recursively, so accumulate the state.
  198457             :        // Also, clear the state in the SgCopyHelp object.
  198458             :        // help.clearState();
  198459             :         }
  198460             : 
  198461           0 :      return result;
  198462             :    }
  198463             : 
  198464             : 
  198465             : /* #line 198466 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  198466             : 
  198467             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198468             : 
  198469           0 : SgNode* SgClassSymbol::copy ( SgCopyHelp& help) const
  198470             :    {
  198471           0 :      SgClassSymbol* result = NULL;
  198472             : 
  198473             :   // printf ("Copy SgClassSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  198474             : 
  198475             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  198476             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  198477             :   // The default value of the depth is 0, so after this call the depth is 1!
  198478           0 :      help.incrementDepth();
  198479             : 
  198480             : #if 0
  198481             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  198482             :   // but it is not generally true that things can only be copied once!
  198483             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  198484             :   // AstAttribute* existingAttribute = const_cast<SgClassSymbol*>(this)->attribute["copied"];
  198485             :      bool previouslyCopied = const_cast<SgClassSymbol*>(this)->attribute.exists("copied");
  198486             :      if (previouslyCopied == true)
  198487             :         {
  198488             :           this->get_file_info()->display("Called from copy SgClassSymbol: debug");
  198489             :         }
  198490             :      ROSE_ASSERT(previouslyCopied == false);
  198491             : 
  198492             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  198493             :      AstAttribute* newAttribute = new AstAttribute();
  198494             :      ROSE_ASSERT(newAttribute != NULL);
  198495             : 
  198496             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  198497             :      const_cast<SgClassSymbol*>(this)->attribute.add("copied",newAttribute);
  198498             : #endif
  198499             : 
  198500             :   // Copy data members from base classes
  198501             :   // Copy constructor parameter data member: declaration_copy
  198502           0 :      SgClassDeclaration* declaration_copy; 
  198503             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  198504           0 :           if (get_declaration() != NULL) 
  198505             :              { 
  198506           0 :                declaration_copy = static_cast<SgClassDeclaration*>(help.copyAst(get_declaration())); 
  198507             :              } 
  198508             :             else 
  198509             :              { 
  198510             :                declaration_copy = NULL; 
  198511             :              } 
  198512             :  
  198513             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198514             : 
  198515             :   // Build an empty copy of this object (will be filled in, but 
  198516             :   // the parent can't be set and must be set by the caller)
  198517           0 :      result = new SgClassSymbol(  declaration_copy );
  198518           0 :      ROSE_ASSERT(result != NULL);
  198519             : 
  198520             :   // Copy data members of "this" class
  198521             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  198522             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  198523             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  198524           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  198525           0 :      if ( p_attributeMechanism != NULL ) 
  198526             :         { 
  198527           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  198528             :         } 
  198529             :        else 
  198530             :         { 
  198531             :           attributeMechanism_copy = NULL; 
  198532             :         } 
  198533             :   /* check for a valid pointer and delete if present */ 
  198534           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  198535             :   /* add assignment to result here */ 
  198536           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  198537             :   // case: not a listType for (using conditionalToSetParent)declaration
  198538           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  198539             :              { 
  198540           0 :                declaration_copy->set_parent(result); 
  198541             :              } 
  198542             : 
  198543             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198544             : 
  198545             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  198546             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  198547             :   // fixupCopy(result,help);
  198548             : 
  198549             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  198550             :   // the Sg_File_Info objects that are built for the new IR nodes.
  198551           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  198552           0 :      if (locatedNode != NULL)
  198553             :         {
  198554             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  198555           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  198556           0 :           ROSE_ASSERT(start != NULL);
  198557             : #if 0
  198558             :        // Debugging information
  198559             :           if (start->get_parent() == NULL)
  198560             :              {
  198561             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198562             :              }
  198563             : #endif
  198564           0 :           start->set_parent(locatedNode);
  198565           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  198566             : 
  198567           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  198568             : 
  198569             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  198570             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  198571             :        // ROSE_ASSERT(end != NULL);
  198572           0 :           if (end == NULL)
  198573             :              {
  198574           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  198575             :              }
  198576             :             else
  198577             :              {
  198578             : #if 0
  198579             :             // Debugging information
  198580             :                if (end->get_parent() == NULL)
  198581             :                   {
  198582             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198583             :                   }
  198584             : #endif
  198585           0 :                end->set_parent(locatedNode);
  198586           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  198587             :              }
  198588             : 
  198589           0 :           SgExpression* expression = isSgExpression(result);
  198590           0 :           if (isSgExpression(this) != NULL)
  198591             :              {
  198592           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  198593             : 
  198594             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  198595           0 :                if (operatorPosition != NULL)
  198596             :                   {
  198597             : #if 0
  198598             :                  // Debugging information
  198599             :                     if (operatorPosition->get_parent() == NULL)
  198600             :                        {
  198601             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198602             :                        }
  198603             : #endif
  198604           0 :                     operatorPosition->set_parent(expression);
  198605           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  198606             :                   }
  198607             :              }
  198608             :         }
  198609             : 
  198610             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  198611           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  198612           0 :      if (initializedName != NULL)
  198613             :         {
  198614             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  198615           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  198616           0 :           ROSE_ASSERT(start != NULL);
  198617             : #if 0
  198618             :        // Debugging information
  198619             :           if (start->get_parent() == NULL)
  198620             :              {
  198621             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198622             :              }
  198623             : #endif
  198624           0 :           start->set_parent(initializedName);
  198625           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  198626             : 
  198627             : #if 0
  198628             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  198629             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  198630             : 
  198631             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  198632             :        // ROSE_ASSERT(end != NULL);
  198633             :           if (end == NULL)
  198634             :              {
  198635             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  198636             :              }
  198637             :             else
  198638             :              {
  198639             :                if (end->get_parent() == NULL)
  198640             :                   {
  198641             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198642             :                   }
  198643             :                end->set_parent(initializedName);
  198644             :                ROSE_ASSERT(end->get_parent() != NULL);
  198645             :              }
  198646             : #endif
  198647             :         }
  198648             : 
  198649             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  198650           0 :      help.insertCopiedNodePair(this,result);
  198651             : 
  198652             :   // printf ("End of copy SgClassSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  198653             : 
  198654             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  198655             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  198656           0 :      help.decrementDepth();
  198657             : 
  198658             :   // Test if this is the root of the copy!
  198659           0 :      if (help.get_depth() == 0)
  198660             :         {
  198661             :        // This is the original calling node.
  198662             : 
  198663             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  198664             :        // printf ("Calling SgClassSymbol::fixupCopy() (from root of AST being copied) \n");
  198665             : #if ALT_FIXUP_COPY
  198666             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  198667           0 :           fixupCopy_scopes (result,help);
  198668           0 :           fixupCopy_symbols (result,help);
  198669           0 :           fixupCopy_references (result,help);
  198670             : #else
  198671             :           fixupCopy(result,help);
  198672             : #endif
  198673             :        // Allow this to be called recursively, so accumulate the state.
  198674             :        // Also, clear the state in the SgCopyHelp object.
  198675             :        // help.clearState();
  198676             :         }
  198677             : 
  198678           0 :      return result;
  198679             :    }
  198680             : 
  198681             : 
  198682             : /* #line 198683 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  198683             : 
  198684             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198685             : 
  198686           0 : SgNode* SgTemplateClassSymbol::copy ( SgCopyHelp& help) const
  198687             :    {
  198688           0 :      SgTemplateClassSymbol* result = NULL;
  198689             : 
  198690             :   // printf ("Copy SgTemplateClassSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  198691             : 
  198692             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  198693             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  198694             :   // The default value of the depth is 0, so after this call the depth is 1!
  198695           0 :      help.incrementDepth();
  198696             : 
  198697             : #if 0
  198698             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  198699             :   // but it is not generally true that things can only be copied once!
  198700             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  198701             :   // AstAttribute* existingAttribute = const_cast<SgTemplateClassSymbol*>(this)->attribute["copied"];
  198702             :      bool previouslyCopied = const_cast<SgTemplateClassSymbol*>(this)->attribute.exists("copied");
  198703             :      if (previouslyCopied == true)
  198704             :         {
  198705             :           this->get_file_info()->display("Called from copy SgTemplateClassSymbol: debug");
  198706             :         }
  198707             :      ROSE_ASSERT(previouslyCopied == false);
  198708             : 
  198709             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  198710             :      AstAttribute* newAttribute = new AstAttribute();
  198711             :      ROSE_ASSERT(newAttribute != NULL);
  198712             : 
  198713             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  198714             :      const_cast<SgTemplateClassSymbol*>(this)->attribute.add("copied",newAttribute);
  198715             : #endif
  198716             : 
  198717             :   // Copy data members from base classes
  198718             :   // Copy constructor parameter data member: declaration_copy
  198719           0 :      SgClassDeclaration* declaration_copy; 
  198720             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  198721           0 :           if (get_declaration() != NULL) 
  198722             :              { 
  198723           0 :                declaration_copy = static_cast<SgClassDeclaration*>(help.copyAst(get_declaration())); 
  198724             :              } 
  198725             :             else 
  198726             :              { 
  198727             :                declaration_copy = NULL; 
  198728             :              } 
  198729             :  
  198730             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198731             : 
  198732             :   // Build an empty copy of this object (will be filled in, but 
  198733             :   // the parent can't be set and must be set by the caller)
  198734           0 :      result = new SgTemplateClassSymbol(  declaration_copy );
  198735           0 :      ROSE_ASSERT(result != NULL);
  198736             : 
  198737             :   // Copy data members of "this" class
  198738             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  198739             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  198740             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  198741           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  198742           0 :      if ( p_attributeMechanism != NULL ) 
  198743             :         { 
  198744           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  198745             :         } 
  198746             :        else 
  198747             :         { 
  198748             :           attributeMechanism_copy = NULL; 
  198749             :         } 
  198750             :   /* check for a valid pointer and delete if present */ 
  198751           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  198752             :   /* add assignment to result here */ 
  198753           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  198754             :   // case: not a listType for (using conditionalToSetParent)declaration
  198755           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  198756             :              { 
  198757           0 :                declaration_copy->set_parent(result); 
  198758             :              } 
  198759             : 
  198760             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198761             : 
  198762             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  198763             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  198764             :   // fixupCopy(result,help);
  198765             : 
  198766             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  198767             :   // the Sg_File_Info objects that are built for the new IR nodes.
  198768           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  198769           0 :      if (locatedNode != NULL)
  198770             :         {
  198771             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  198772           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  198773           0 :           ROSE_ASSERT(start != NULL);
  198774             : #if 0
  198775             :        // Debugging information
  198776             :           if (start->get_parent() == NULL)
  198777             :              {
  198778             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198779             :              }
  198780             : #endif
  198781           0 :           start->set_parent(locatedNode);
  198782           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  198783             : 
  198784           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  198785             : 
  198786             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  198787             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  198788             :        // ROSE_ASSERT(end != NULL);
  198789           0 :           if (end == NULL)
  198790             :              {
  198791           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  198792             :              }
  198793             :             else
  198794             :              {
  198795             : #if 0
  198796             :             // Debugging information
  198797             :                if (end->get_parent() == NULL)
  198798             :                   {
  198799             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198800             :                   }
  198801             : #endif
  198802           0 :                end->set_parent(locatedNode);
  198803           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  198804             :              }
  198805             : 
  198806           0 :           SgExpression* expression = isSgExpression(result);
  198807           0 :           if (isSgExpression(this) != NULL)
  198808             :              {
  198809           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  198810             : 
  198811             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  198812           0 :                if (operatorPosition != NULL)
  198813             :                   {
  198814             : #if 0
  198815             :                  // Debugging information
  198816             :                     if (operatorPosition->get_parent() == NULL)
  198817             :                        {
  198818             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198819             :                        }
  198820             : #endif
  198821           0 :                     operatorPosition->set_parent(expression);
  198822           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  198823             :                   }
  198824             :              }
  198825             :         }
  198826             : 
  198827             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  198828           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  198829           0 :      if (initializedName != NULL)
  198830             :         {
  198831             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  198832           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  198833           0 :           ROSE_ASSERT(start != NULL);
  198834             : #if 0
  198835             :        // Debugging information
  198836             :           if (start->get_parent() == NULL)
  198837             :              {
  198838             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198839             :              }
  198840             : #endif
  198841           0 :           start->set_parent(initializedName);
  198842           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  198843             : 
  198844             : #if 0
  198845             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  198846             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  198847             : 
  198848             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  198849             :        // ROSE_ASSERT(end != NULL);
  198850             :           if (end == NULL)
  198851             :              {
  198852             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  198853             :              }
  198854             :             else
  198855             :              {
  198856             :                if (end->get_parent() == NULL)
  198857             :                   {
  198858             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198859             :                   }
  198860             :                end->set_parent(initializedName);
  198861             :                ROSE_ASSERT(end->get_parent() != NULL);
  198862             :              }
  198863             : #endif
  198864             :         }
  198865             : 
  198866             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  198867           0 :      help.insertCopiedNodePair(this,result);
  198868             : 
  198869             :   // printf ("End of copy SgTemplateClassSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  198870             : 
  198871             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  198872             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  198873           0 :      help.decrementDepth();
  198874             : 
  198875             :   // Test if this is the root of the copy!
  198876           0 :      if (help.get_depth() == 0)
  198877             :         {
  198878             :        // This is the original calling node.
  198879             : 
  198880             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  198881             :        // printf ("Calling SgTemplateClassSymbol::fixupCopy() (from root of AST being copied) \n");
  198882             : #if ALT_FIXUP_COPY
  198883             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  198884           0 :           fixupCopy_scopes (result,help);
  198885           0 :           fixupCopy_symbols (result,help);
  198886           0 :           fixupCopy_references (result,help);
  198887             : #else
  198888             :           fixupCopy(result,help);
  198889             : #endif
  198890             :        // Allow this to be called recursively, so accumulate the state.
  198891             :        // Also, clear the state in the SgCopyHelp object.
  198892             :        // help.clearState();
  198893             :         }
  198894             : 
  198895           0 :      return result;
  198896             :    }
  198897             : 
  198898             : 
  198899             : /* #line 198900 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  198900             : 
  198901             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198902             : 
  198903           0 : SgNode* SgTemplateSymbol::copy ( SgCopyHelp& help) const
  198904             :    {
  198905           0 :      SgTemplateSymbol* result = NULL;
  198906             : 
  198907             :   // printf ("Copy SgTemplateSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  198908             : 
  198909             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  198910             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  198911             :   // The default value of the depth is 0, so after this call the depth is 1!
  198912           0 :      help.incrementDepth();
  198913             : 
  198914             : #if 0
  198915             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  198916             :   // but it is not generally true that things can only be copied once!
  198917             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  198918             :   // AstAttribute* existingAttribute = const_cast<SgTemplateSymbol*>(this)->attribute["copied"];
  198919             :      bool previouslyCopied = const_cast<SgTemplateSymbol*>(this)->attribute.exists("copied");
  198920             :      if (previouslyCopied == true)
  198921             :         {
  198922             :           this->get_file_info()->display("Called from copy SgTemplateSymbol: debug");
  198923             :         }
  198924             :      ROSE_ASSERT(previouslyCopied == false);
  198925             : 
  198926             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  198927             :      AstAttribute* newAttribute = new AstAttribute();
  198928             :      ROSE_ASSERT(newAttribute != NULL);
  198929             : 
  198930             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  198931             :      const_cast<SgTemplateSymbol*>(this)->attribute.add("copied",newAttribute);
  198932             : #endif
  198933             : 
  198934             :   // Copy data members from base classes
  198935             :   // Copy constructor parameter data member: declaration_copy
  198936           0 :      SgTemplateDeclaration* declaration_copy; 
  198937             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  198938           0 :           if (get_declaration() != NULL) 
  198939             :              { 
  198940           0 :                declaration_copy = static_cast<SgTemplateDeclaration*>(help.copyAst(get_declaration())); 
  198941             :              } 
  198942             :             else 
  198943             :              { 
  198944             :                declaration_copy = NULL; 
  198945             :              } 
  198946             :  
  198947             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198948             : 
  198949             :   // Build an empty copy of this object (will be filled in, but 
  198950             :   // the parent can't be set and must be set by the caller)
  198951           0 :      result = new SgTemplateSymbol(  declaration_copy );
  198952           0 :      ROSE_ASSERT(result != NULL);
  198953             : 
  198954             :   // Copy data members of "this" class
  198955             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  198956             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  198957             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  198958           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  198959           0 :      if ( p_attributeMechanism != NULL ) 
  198960             :         { 
  198961           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  198962             :         } 
  198963             :        else 
  198964             :         { 
  198965             :           attributeMechanism_copy = NULL; 
  198966             :         } 
  198967             :   /* check for a valid pointer and delete if present */ 
  198968           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  198969             :   /* add assignment to result here */ 
  198970           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  198971             :   // case: not a listType for (using conditionalToSetParent)declaration
  198972           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  198973             :              { 
  198974           0 :                declaration_copy->set_parent(result); 
  198975             :              } 
  198976             : 
  198977             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  198978             : 
  198979             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  198980             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  198981             :   // fixupCopy(result,help);
  198982             : 
  198983             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  198984             :   // the Sg_File_Info objects that are built for the new IR nodes.
  198985           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  198986           0 :      if (locatedNode != NULL)
  198987             :         {
  198988             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  198989           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  198990           0 :           ROSE_ASSERT(start != NULL);
  198991             : #if 0
  198992             :        // Debugging information
  198993             :           if (start->get_parent() == NULL)
  198994             :              {
  198995             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  198996             :              }
  198997             : #endif
  198998           0 :           start->set_parent(locatedNode);
  198999           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199000             : 
  199001           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  199002             : 
  199003             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  199004             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  199005             :        // ROSE_ASSERT(end != NULL);
  199006           0 :           if (end == NULL)
  199007             :              {
  199008           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  199009             :              }
  199010             :             else
  199011             :              {
  199012             : #if 0
  199013             :             // Debugging information
  199014             :                if (end->get_parent() == NULL)
  199015             :                   {
  199016             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199017             :                   }
  199018             : #endif
  199019           0 :                end->set_parent(locatedNode);
  199020           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  199021             :              }
  199022             : 
  199023           0 :           SgExpression* expression = isSgExpression(result);
  199024           0 :           if (isSgExpression(this) != NULL)
  199025             :              {
  199026           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  199027             : 
  199028             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  199029           0 :                if (operatorPosition != NULL)
  199030             :                   {
  199031             : #if 0
  199032             :                  // Debugging information
  199033             :                     if (operatorPosition->get_parent() == NULL)
  199034             :                        {
  199035             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199036             :                        }
  199037             : #endif
  199038           0 :                     operatorPosition->set_parent(expression);
  199039           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  199040             :                   }
  199041             :              }
  199042             :         }
  199043             : 
  199044             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  199045           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  199046           0 :      if (initializedName != NULL)
  199047             :         {
  199048             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  199049           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  199050           0 :           ROSE_ASSERT(start != NULL);
  199051             : #if 0
  199052             :        // Debugging information
  199053             :           if (start->get_parent() == NULL)
  199054             :              {
  199055             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199056             :              }
  199057             : #endif
  199058           0 :           start->set_parent(initializedName);
  199059           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199060             : 
  199061             : #if 0
  199062             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  199063             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  199064             : 
  199065             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  199066             :        // ROSE_ASSERT(end != NULL);
  199067             :           if (end == NULL)
  199068             :              {
  199069             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  199070             :              }
  199071             :             else
  199072             :              {
  199073             :                if (end->get_parent() == NULL)
  199074             :                   {
  199075             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199076             :                   }
  199077             :                end->set_parent(initializedName);
  199078             :                ROSE_ASSERT(end->get_parent() != NULL);
  199079             :              }
  199080             : #endif
  199081             :         }
  199082             : 
  199083             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  199084           0 :      help.insertCopiedNodePair(this,result);
  199085             : 
  199086             :   // printf ("End of copy SgTemplateSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199087             : 
  199088             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199089             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199090           0 :      help.decrementDepth();
  199091             : 
  199092             :   // Test if this is the root of the copy!
  199093           0 :      if (help.get_depth() == 0)
  199094             :         {
  199095             :        // This is the original calling node.
  199096             : 
  199097             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  199098             :        // printf ("Calling SgTemplateSymbol::fixupCopy() (from root of AST being copied) \n");
  199099             : #if ALT_FIXUP_COPY
  199100             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  199101           0 :           fixupCopy_scopes (result,help);
  199102           0 :           fixupCopy_symbols (result,help);
  199103           0 :           fixupCopy_references (result,help);
  199104             : #else
  199105             :           fixupCopy(result,help);
  199106             : #endif
  199107             :        // Allow this to be called recursively, so accumulate the state.
  199108             :        // Also, clear the state in the SgCopyHelp object.
  199109             :        // help.clearState();
  199110             :         }
  199111             : 
  199112           0 :      return result;
  199113             :    }
  199114             : 
  199115             : 
  199116             : /* #line 199117 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  199117             : 
  199118             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199119             : 
  199120           0 : SgNode* SgEnumSymbol::copy ( SgCopyHelp& help) const
  199121             :    {
  199122           0 :      SgEnumSymbol* result = NULL;
  199123             : 
  199124             :   // printf ("Copy SgEnumSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199125             : 
  199126             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199127             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199128             :   // The default value of the depth is 0, so after this call the depth is 1!
  199129           0 :      help.incrementDepth();
  199130             : 
  199131             : #if 0
  199132             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  199133             :   // but it is not generally true that things can only be copied once!
  199134             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  199135             :   // AstAttribute* existingAttribute = const_cast<SgEnumSymbol*>(this)->attribute["copied"];
  199136             :      bool previouslyCopied = const_cast<SgEnumSymbol*>(this)->attribute.exists("copied");
  199137             :      if (previouslyCopied == true)
  199138             :         {
  199139             :           this->get_file_info()->display("Called from copy SgEnumSymbol: debug");
  199140             :         }
  199141             :      ROSE_ASSERT(previouslyCopied == false);
  199142             : 
  199143             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  199144             :      AstAttribute* newAttribute = new AstAttribute();
  199145             :      ROSE_ASSERT(newAttribute != NULL);
  199146             : 
  199147             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  199148             :      const_cast<SgEnumSymbol*>(this)->attribute.add("copied",newAttribute);
  199149             : #endif
  199150             : 
  199151             :   // Copy data members from base classes
  199152             :   // Copy constructor parameter data member: declaration_copy
  199153           0 :      SgEnumDeclaration* declaration_copy; 
  199154             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  199155           0 :           if (get_declaration() != NULL) 
  199156             :              { 
  199157           0 :                declaration_copy = static_cast<SgEnumDeclaration*>(help.copyAst(get_declaration())); 
  199158             :              } 
  199159             :             else 
  199160             :              { 
  199161             :                declaration_copy = NULL; 
  199162             :              } 
  199163             :  
  199164             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199165             : 
  199166             :   // Build an empty copy of this object (will be filled in, but 
  199167             :   // the parent can't be set and must be set by the caller)
  199168           0 :      result = new SgEnumSymbol(  declaration_copy );
  199169           0 :      ROSE_ASSERT(result != NULL);
  199170             : 
  199171             :   // Copy data members of "this" class
  199172             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  199173             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  199174             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  199175           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  199176           0 :      if ( p_attributeMechanism != NULL ) 
  199177             :         { 
  199178           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  199179             :         } 
  199180             :        else 
  199181             :         { 
  199182             :           attributeMechanism_copy = NULL; 
  199183             :         } 
  199184             :   /* check for a valid pointer and delete if present */ 
  199185           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  199186             :   /* add assignment to result here */ 
  199187           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  199188             :   // case: not a listType for (using conditionalToSetParent)declaration
  199189           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  199190             :              { 
  199191           0 :                declaration_copy->set_parent(result); 
  199192             :              } 
  199193             : 
  199194             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199195             : 
  199196             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  199197             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  199198             :   // fixupCopy(result,help);
  199199             : 
  199200             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  199201             :   // the Sg_File_Info objects that are built for the new IR nodes.
  199202           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  199203           0 :      if (locatedNode != NULL)
  199204             :         {
  199205             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  199206           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  199207           0 :           ROSE_ASSERT(start != NULL);
  199208             : #if 0
  199209             :        // Debugging information
  199210             :           if (start->get_parent() == NULL)
  199211             :              {
  199212             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199213             :              }
  199214             : #endif
  199215           0 :           start->set_parent(locatedNode);
  199216           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199217             : 
  199218           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  199219             : 
  199220             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  199221             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  199222             :        // ROSE_ASSERT(end != NULL);
  199223           0 :           if (end == NULL)
  199224             :              {
  199225           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  199226             :              }
  199227             :             else
  199228             :              {
  199229             : #if 0
  199230             :             // Debugging information
  199231             :                if (end->get_parent() == NULL)
  199232             :                   {
  199233             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199234             :                   }
  199235             : #endif
  199236           0 :                end->set_parent(locatedNode);
  199237           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  199238             :              }
  199239             : 
  199240           0 :           SgExpression* expression = isSgExpression(result);
  199241           0 :           if (isSgExpression(this) != NULL)
  199242             :              {
  199243           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  199244             : 
  199245             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  199246           0 :                if (operatorPosition != NULL)
  199247             :                   {
  199248             : #if 0
  199249             :                  // Debugging information
  199250             :                     if (operatorPosition->get_parent() == NULL)
  199251             :                        {
  199252             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199253             :                        }
  199254             : #endif
  199255           0 :                     operatorPosition->set_parent(expression);
  199256           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  199257             :                   }
  199258             :              }
  199259             :         }
  199260             : 
  199261             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  199262           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  199263           0 :      if (initializedName != NULL)
  199264             :         {
  199265             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  199266           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  199267           0 :           ROSE_ASSERT(start != NULL);
  199268             : #if 0
  199269             :        // Debugging information
  199270             :           if (start->get_parent() == NULL)
  199271             :              {
  199272             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199273             :              }
  199274             : #endif
  199275           0 :           start->set_parent(initializedName);
  199276           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199277             : 
  199278             : #if 0
  199279             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  199280             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  199281             : 
  199282             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  199283             :        // ROSE_ASSERT(end != NULL);
  199284             :           if (end == NULL)
  199285             :              {
  199286             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  199287             :              }
  199288             :             else
  199289             :              {
  199290             :                if (end->get_parent() == NULL)
  199291             :                   {
  199292             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199293             :                   }
  199294             :                end->set_parent(initializedName);
  199295             :                ROSE_ASSERT(end->get_parent() != NULL);
  199296             :              }
  199297             : #endif
  199298             :         }
  199299             : 
  199300             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  199301           0 :      help.insertCopiedNodePair(this,result);
  199302             : 
  199303             :   // printf ("End of copy SgEnumSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199304             : 
  199305             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199306             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199307           0 :      help.decrementDepth();
  199308             : 
  199309             :   // Test if this is the root of the copy!
  199310           0 :      if (help.get_depth() == 0)
  199311             :         {
  199312             :        // This is the original calling node.
  199313             : 
  199314             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  199315             :        // printf ("Calling SgEnumSymbol::fixupCopy() (from root of AST being copied) \n");
  199316             : #if ALT_FIXUP_COPY
  199317             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  199318           0 :           fixupCopy_scopes (result,help);
  199319           0 :           fixupCopy_symbols (result,help);
  199320           0 :           fixupCopy_references (result,help);
  199321             : #else
  199322             :           fixupCopy(result,help);
  199323             : #endif
  199324             :        // Allow this to be called recursively, so accumulate the state.
  199325             :        // Also, clear the state in the SgCopyHelp object.
  199326             :        // help.clearState();
  199327             :         }
  199328             : 
  199329           0 :      return result;
  199330             :    }
  199331             : 
  199332             : 
  199333             : /* #line 199334 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  199334             : 
  199335             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199336             : 
  199337           0 : SgNode* SgEnumFieldSymbol::copy ( SgCopyHelp& help) const
  199338             :    {
  199339           0 :      SgEnumFieldSymbol* result = NULL;
  199340             : 
  199341             :   // printf ("Copy SgEnumFieldSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199342             : 
  199343             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199344             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199345             :   // The default value of the depth is 0, so after this call the depth is 1!
  199346           0 :      help.incrementDepth();
  199347             : 
  199348             : #if 0
  199349             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  199350             :   // but it is not generally true that things can only be copied once!
  199351             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  199352             :   // AstAttribute* existingAttribute = const_cast<SgEnumFieldSymbol*>(this)->attribute["copied"];
  199353             :      bool previouslyCopied = const_cast<SgEnumFieldSymbol*>(this)->attribute.exists("copied");
  199354             :      if (previouslyCopied == true)
  199355             :         {
  199356             :           this->get_file_info()->display("Called from copy SgEnumFieldSymbol: debug");
  199357             :         }
  199358             :      ROSE_ASSERT(previouslyCopied == false);
  199359             : 
  199360             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  199361             :      AstAttribute* newAttribute = new AstAttribute();
  199362             :      ROSE_ASSERT(newAttribute != NULL);
  199363             : 
  199364             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  199365             :      const_cast<SgEnumFieldSymbol*>(this)->attribute.add("copied",newAttribute);
  199366             : #endif
  199367             : 
  199368             :   // Copy data members from base classes
  199369             :   // Copy constructor parameter data member: declaration_copy
  199370             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration
  199371             :   // case: toBeCopied == COPY_DATA for declaration
  199372           0 :      SgInitializedName* declaration_copy = p_declaration; 
  199373             :  
  199374             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199375             : 
  199376             :   // Build an empty copy of this object (will be filled in, but 
  199377             :   // the parent can't be set and must be set by the caller)
  199378           0 :      result = new SgEnumFieldSymbol(  declaration_copy );
  199379           0 :      ROSE_ASSERT(result != NULL);
  199380             : 
  199381             :   // Copy data members of "this" class
  199382             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  199383             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  199384             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  199385           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  199386           0 :      if ( p_attributeMechanism != NULL ) 
  199387             :         { 
  199388           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  199389             :         } 
  199390             :        else 
  199391             :         { 
  199392             :           attributeMechanism_copy = NULL; 
  199393             :         } 
  199394             :   /* check for a valid pointer and delete if present */ 
  199395           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  199396             :   /* add assignment to result here */ 
  199397           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  199398             : 
  199399             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199400             : 
  199401             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  199402             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  199403             :   // fixupCopy(result,help);
  199404             : 
  199405             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  199406             :   // the Sg_File_Info objects that are built for the new IR nodes.
  199407           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  199408           0 :      if (locatedNode != NULL)
  199409             :         {
  199410             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  199411           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  199412           0 :           ROSE_ASSERT(start != NULL);
  199413             : #if 0
  199414             :        // Debugging information
  199415             :           if (start->get_parent() == NULL)
  199416             :              {
  199417             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199418             :              }
  199419             : #endif
  199420           0 :           start->set_parent(locatedNode);
  199421           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199422             : 
  199423           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  199424             : 
  199425             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  199426             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  199427             :        // ROSE_ASSERT(end != NULL);
  199428           0 :           if (end == NULL)
  199429             :              {
  199430           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  199431             :              }
  199432             :             else
  199433             :              {
  199434             : #if 0
  199435             :             // Debugging information
  199436             :                if (end->get_parent() == NULL)
  199437             :                   {
  199438             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199439             :                   }
  199440             : #endif
  199441           0 :                end->set_parent(locatedNode);
  199442           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  199443             :              }
  199444             : 
  199445           0 :           SgExpression* expression = isSgExpression(result);
  199446           0 :           if (isSgExpression(this) != NULL)
  199447             :              {
  199448           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  199449             : 
  199450             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  199451           0 :                if (operatorPosition != NULL)
  199452             :                   {
  199453             : #if 0
  199454             :                  // Debugging information
  199455             :                     if (operatorPosition->get_parent() == NULL)
  199456             :                        {
  199457             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199458             :                        }
  199459             : #endif
  199460           0 :                     operatorPosition->set_parent(expression);
  199461           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  199462             :                   }
  199463             :              }
  199464             :         }
  199465             : 
  199466             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  199467           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  199468           0 :      if (initializedName != NULL)
  199469             :         {
  199470             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  199471           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  199472           0 :           ROSE_ASSERT(start != NULL);
  199473             : #if 0
  199474             :        // Debugging information
  199475             :           if (start->get_parent() == NULL)
  199476             :              {
  199477             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199478             :              }
  199479             : #endif
  199480           0 :           start->set_parent(initializedName);
  199481           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199482             : 
  199483             : #if 0
  199484             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  199485             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  199486             : 
  199487             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  199488             :        // ROSE_ASSERT(end != NULL);
  199489             :           if (end == NULL)
  199490             :              {
  199491             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  199492             :              }
  199493             :             else
  199494             :              {
  199495             :                if (end->get_parent() == NULL)
  199496             :                   {
  199497             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199498             :                   }
  199499             :                end->set_parent(initializedName);
  199500             :                ROSE_ASSERT(end->get_parent() != NULL);
  199501             :              }
  199502             : #endif
  199503             :         }
  199504             : 
  199505             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  199506           0 :      help.insertCopiedNodePair(this,result);
  199507             : 
  199508             :   // printf ("End of copy SgEnumFieldSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199509             : 
  199510             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199511             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199512           0 :      help.decrementDepth();
  199513             : 
  199514             :   // Test if this is the root of the copy!
  199515           0 :      if (help.get_depth() == 0)
  199516             :         {
  199517             :        // This is the original calling node.
  199518             : 
  199519             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  199520             :        // printf ("Calling SgEnumFieldSymbol::fixupCopy() (from root of AST being copied) \n");
  199521             : #if ALT_FIXUP_COPY
  199522             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  199523           0 :           fixupCopy_scopes (result,help);
  199524           0 :           fixupCopy_symbols (result,help);
  199525           0 :           fixupCopy_references (result,help);
  199526             : #else
  199527             :           fixupCopy(result,help);
  199528             : #endif
  199529             :        // Allow this to be called recursively, so accumulate the state.
  199530             :        // Also, clear the state in the SgCopyHelp object.
  199531             :        // help.clearState();
  199532             :         }
  199533             : 
  199534           0 :      return result;
  199535             :    }
  199536             : 
  199537             : 
  199538             : /* #line 199539 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  199539             : 
  199540             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199541             : 
  199542           0 : SgNode* SgTypedefSymbol::copy ( SgCopyHelp& help) const
  199543             :    {
  199544           0 :      SgTypedefSymbol* result = NULL;
  199545             : 
  199546             :   // printf ("Copy SgTypedefSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199547             : 
  199548             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199549             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199550             :   // The default value of the depth is 0, so after this call the depth is 1!
  199551           0 :      help.incrementDepth();
  199552             : 
  199553             : #if 0
  199554             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  199555             :   // but it is not generally true that things can only be copied once!
  199556             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  199557             :   // AstAttribute* existingAttribute = const_cast<SgTypedefSymbol*>(this)->attribute["copied"];
  199558             :      bool previouslyCopied = const_cast<SgTypedefSymbol*>(this)->attribute.exists("copied");
  199559             :      if (previouslyCopied == true)
  199560             :         {
  199561             :           this->get_file_info()->display("Called from copy SgTypedefSymbol: debug");
  199562             :         }
  199563             :      ROSE_ASSERT(previouslyCopied == false);
  199564             : 
  199565             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  199566             :      AstAttribute* newAttribute = new AstAttribute();
  199567             :      ROSE_ASSERT(newAttribute != NULL);
  199568             : 
  199569             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  199570             :      const_cast<SgTypedefSymbol*>(this)->attribute.add("copied",newAttribute);
  199571             : #endif
  199572             : 
  199573             :   // Copy data members from base classes
  199574             :   // Copy constructor parameter data member: declaration_copy
  199575           0 :      SgTypedefDeclaration* declaration_copy; 
  199576             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  199577           0 :           if (get_declaration() != NULL) 
  199578             :              { 
  199579           0 :                declaration_copy = static_cast<SgTypedefDeclaration*>(help.copyAst(get_declaration())); 
  199580             :              } 
  199581             :             else 
  199582             :              { 
  199583             :                declaration_copy = NULL; 
  199584             :              } 
  199585             :  
  199586             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199587             : 
  199588             :   // Build an empty copy of this object (will be filled in, but 
  199589             :   // the parent can't be set and must be set by the caller)
  199590           0 :      result = new SgTypedefSymbol(  declaration_copy );
  199591           0 :      ROSE_ASSERT(result != NULL);
  199592             : 
  199593             :   // Copy data members of "this" class
  199594             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  199595             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  199596             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  199597           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  199598           0 :      if ( p_attributeMechanism != NULL ) 
  199599             :         { 
  199600           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  199601             :         } 
  199602             :        else 
  199603             :         { 
  199604             :           attributeMechanism_copy = NULL; 
  199605             :         } 
  199606             :   /* check for a valid pointer and delete if present */ 
  199607           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  199608             :   /* add assignment to result here */ 
  199609           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  199610             :   // case: not a listType for (using conditionalToSetParent)declaration
  199611           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  199612             :              { 
  199613           0 :                declaration_copy->set_parent(result); 
  199614             :              } 
  199615             : 
  199616             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199617             : 
  199618             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  199619             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  199620             :   // fixupCopy(result,help);
  199621             : 
  199622             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  199623             :   // the Sg_File_Info objects that are built for the new IR nodes.
  199624           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  199625           0 :      if (locatedNode != NULL)
  199626             :         {
  199627             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  199628           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  199629           0 :           ROSE_ASSERT(start != NULL);
  199630             : #if 0
  199631             :        // Debugging information
  199632             :           if (start->get_parent() == NULL)
  199633             :              {
  199634             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199635             :              }
  199636             : #endif
  199637           0 :           start->set_parent(locatedNode);
  199638           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199639             : 
  199640           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  199641             : 
  199642             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  199643             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  199644             :        // ROSE_ASSERT(end != NULL);
  199645           0 :           if (end == NULL)
  199646             :              {
  199647           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  199648             :              }
  199649             :             else
  199650             :              {
  199651             : #if 0
  199652             :             // Debugging information
  199653             :                if (end->get_parent() == NULL)
  199654             :                   {
  199655             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199656             :                   }
  199657             : #endif
  199658           0 :                end->set_parent(locatedNode);
  199659           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  199660             :              }
  199661             : 
  199662           0 :           SgExpression* expression = isSgExpression(result);
  199663           0 :           if (isSgExpression(this) != NULL)
  199664             :              {
  199665           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  199666             : 
  199667             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  199668           0 :                if (operatorPosition != NULL)
  199669             :                   {
  199670             : #if 0
  199671             :                  // Debugging information
  199672             :                     if (operatorPosition->get_parent() == NULL)
  199673             :                        {
  199674             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199675             :                        }
  199676             : #endif
  199677           0 :                     operatorPosition->set_parent(expression);
  199678           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  199679             :                   }
  199680             :              }
  199681             :         }
  199682             : 
  199683             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  199684           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  199685           0 :      if (initializedName != NULL)
  199686             :         {
  199687             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  199688           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  199689           0 :           ROSE_ASSERT(start != NULL);
  199690             : #if 0
  199691             :        // Debugging information
  199692             :           if (start->get_parent() == NULL)
  199693             :              {
  199694             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199695             :              }
  199696             : #endif
  199697           0 :           start->set_parent(initializedName);
  199698           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199699             : 
  199700             : #if 0
  199701             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  199702             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  199703             : 
  199704             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  199705             :        // ROSE_ASSERT(end != NULL);
  199706             :           if (end == NULL)
  199707             :              {
  199708             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  199709             :              }
  199710             :             else
  199711             :              {
  199712             :                if (end->get_parent() == NULL)
  199713             :                   {
  199714             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199715             :                   }
  199716             :                end->set_parent(initializedName);
  199717             :                ROSE_ASSERT(end->get_parent() != NULL);
  199718             :              }
  199719             : #endif
  199720             :         }
  199721             : 
  199722             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  199723           0 :      help.insertCopiedNodePair(this,result);
  199724             : 
  199725             :   // printf ("End of copy SgTypedefSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199726             : 
  199727             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199728             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199729           0 :      help.decrementDepth();
  199730             : 
  199731             :   // Test if this is the root of the copy!
  199732           0 :      if (help.get_depth() == 0)
  199733             :         {
  199734             :        // This is the original calling node.
  199735             : 
  199736             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  199737             :        // printf ("Calling SgTypedefSymbol::fixupCopy() (from root of AST being copied) \n");
  199738             : #if ALT_FIXUP_COPY
  199739             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  199740           0 :           fixupCopy_scopes (result,help);
  199741           0 :           fixupCopy_symbols (result,help);
  199742           0 :           fixupCopy_references (result,help);
  199743             : #else
  199744             :           fixupCopy(result,help);
  199745             : #endif
  199746             :        // Allow this to be called recursively, so accumulate the state.
  199747             :        // Also, clear the state in the SgCopyHelp object.
  199748             :        // help.clearState();
  199749             :         }
  199750             : 
  199751           0 :      return result;
  199752             :    }
  199753             : 
  199754             : 
  199755             : /* #line 199756 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  199756             : 
  199757             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199758             : 
  199759           0 : SgNode* SgTemplateTypedefSymbol::copy ( SgCopyHelp& help) const
  199760             :    {
  199761           0 :      SgTemplateTypedefSymbol* result = NULL;
  199762             : 
  199763             :   // printf ("Copy SgTemplateTypedefSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199764             : 
  199765             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199766             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199767             :   // The default value of the depth is 0, so after this call the depth is 1!
  199768           0 :      help.incrementDepth();
  199769             : 
  199770             : #if 0
  199771             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  199772             :   // but it is not generally true that things can only be copied once!
  199773             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  199774             :   // AstAttribute* existingAttribute = const_cast<SgTemplateTypedefSymbol*>(this)->attribute["copied"];
  199775             :      bool previouslyCopied = const_cast<SgTemplateTypedefSymbol*>(this)->attribute.exists("copied");
  199776             :      if (previouslyCopied == true)
  199777             :         {
  199778             :           this->get_file_info()->display("Called from copy SgTemplateTypedefSymbol: debug");
  199779             :         }
  199780             :      ROSE_ASSERT(previouslyCopied == false);
  199781             : 
  199782             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  199783             :      AstAttribute* newAttribute = new AstAttribute();
  199784             :      ROSE_ASSERT(newAttribute != NULL);
  199785             : 
  199786             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  199787             :      const_cast<SgTemplateTypedefSymbol*>(this)->attribute.add("copied",newAttribute);
  199788             : #endif
  199789             : 
  199790             :   // Copy data members from base classes
  199791             :   // Copy constructor parameter data member: declaration_copy
  199792           0 :      SgTypedefDeclaration* declaration_copy; 
  199793             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  199794           0 :           if (get_declaration() != NULL) 
  199795             :              { 
  199796           0 :                declaration_copy = static_cast<SgTypedefDeclaration*>(help.copyAst(get_declaration())); 
  199797             :              } 
  199798             :             else 
  199799             :              { 
  199800             :                declaration_copy = NULL; 
  199801             :              } 
  199802             :  
  199803             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199804             : 
  199805             :   // Build an empty copy of this object (will be filled in, but 
  199806             :   // the parent can't be set and must be set by the caller)
  199807           0 :      result = new SgTemplateTypedefSymbol(  declaration_copy );
  199808           0 :      ROSE_ASSERT(result != NULL);
  199809             : 
  199810             :   // Copy data members of "this" class
  199811             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  199812             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  199813             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  199814           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  199815           0 :      if ( p_attributeMechanism != NULL ) 
  199816             :         { 
  199817           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  199818             :         } 
  199819             :        else 
  199820             :         { 
  199821             :           attributeMechanism_copy = NULL; 
  199822             :         } 
  199823             :   /* check for a valid pointer and delete if present */ 
  199824           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  199825             :   /* add assignment to result here */ 
  199826           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  199827             :   // case: not a listType for (using conditionalToSetParent)declaration
  199828           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  199829             :              { 
  199830           0 :                declaration_copy->set_parent(result); 
  199831             :              } 
  199832             : 
  199833             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199834             : 
  199835             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  199836             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  199837             :   // fixupCopy(result,help);
  199838             : 
  199839             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  199840             :   // the Sg_File_Info objects that are built for the new IR nodes.
  199841           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  199842           0 :      if (locatedNode != NULL)
  199843             :         {
  199844             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  199845           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  199846           0 :           ROSE_ASSERT(start != NULL);
  199847             : #if 0
  199848             :        // Debugging information
  199849             :           if (start->get_parent() == NULL)
  199850             :              {
  199851             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199852             :              }
  199853             : #endif
  199854           0 :           start->set_parent(locatedNode);
  199855           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199856             : 
  199857           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  199858             : 
  199859             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  199860             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  199861             :        // ROSE_ASSERT(end != NULL);
  199862           0 :           if (end == NULL)
  199863             :              {
  199864           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  199865             :              }
  199866             :             else
  199867             :              {
  199868             : #if 0
  199869             :             // Debugging information
  199870             :                if (end->get_parent() == NULL)
  199871             :                   {
  199872             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199873             :                   }
  199874             : #endif
  199875           0 :                end->set_parent(locatedNode);
  199876           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  199877             :              }
  199878             : 
  199879           0 :           SgExpression* expression = isSgExpression(result);
  199880           0 :           if (isSgExpression(this) != NULL)
  199881             :              {
  199882           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  199883             : 
  199884             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  199885           0 :                if (operatorPosition != NULL)
  199886             :                   {
  199887             : #if 0
  199888             :                  // Debugging information
  199889             :                     if (operatorPosition->get_parent() == NULL)
  199890             :                        {
  199891             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199892             :                        }
  199893             : #endif
  199894           0 :                     operatorPosition->set_parent(expression);
  199895           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  199896             :                   }
  199897             :              }
  199898             :         }
  199899             : 
  199900             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  199901           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  199902           0 :      if (initializedName != NULL)
  199903             :         {
  199904             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  199905           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  199906           0 :           ROSE_ASSERT(start != NULL);
  199907             : #if 0
  199908             :        // Debugging information
  199909             :           if (start->get_parent() == NULL)
  199910             :              {
  199911             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199912             :              }
  199913             : #endif
  199914           0 :           start->set_parent(initializedName);
  199915           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  199916             : 
  199917             : #if 0
  199918             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  199919             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  199920             : 
  199921             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  199922             :        // ROSE_ASSERT(end != NULL);
  199923             :           if (end == NULL)
  199924             :              {
  199925             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  199926             :              }
  199927             :             else
  199928             :              {
  199929             :                if (end->get_parent() == NULL)
  199930             :                   {
  199931             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  199932             :                   }
  199933             :                end->set_parent(initializedName);
  199934             :                ROSE_ASSERT(end->get_parent() != NULL);
  199935             :              }
  199936             : #endif
  199937             :         }
  199938             : 
  199939             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  199940           0 :      help.insertCopiedNodePair(this,result);
  199941             : 
  199942             :   // printf ("End of copy SgTemplateTypedefSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199943             : 
  199944             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199945             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199946           0 :      help.decrementDepth();
  199947             : 
  199948             :   // Test if this is the root of the copy!
  199949           0 :      if (help.get_depth() == 0)
  199950             :         {
  199951             :        // This is the original calling node.
  199952             : 
  199953             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  199954             :        // printf ("Calling SgTemplateTypedefSymbol::fixupCopy() (from root of AST being copied) \n");
  199955             : #if ALT_FIXUP_COPY
  199956             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  199957           0 :           fixupCopy_scopes (result,help);
  199958           0 :           fixupCopy_symbols (result,help);
  199959           0 :           fixupCopy_references (result,help);
  199960             : #else
  199961             :           fixupCopy(result,help);
  199962             : #endif
  199963             :        // Allow this to be called recursively, so accumulate the state.
  199964             :        // Also, clear the state in the SgCopyHelp object.
  199965             :        // help.clearState();
  199966             :         }
  199967             : 
  199968           0 :      return result;
  199969             :    }
  199970             : 
  199971             : 
  199972             : /* #line 199973 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  199973             : 
  199974             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  199975             : 
  199976           0 : SgNode* SgLabelSymbol::copy ( SgCopyHelp& help) const
  199977             :    {
  199978           0 :      SgLabelSymbol* result = NULL;
  199979             : 
  199980             :   // printf ("Copy SgLabelSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  199981             : 
  199982             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  199983             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  199984             :   // The default value of the depth is 0, so after this call the depth is 1!
  199985           0 :      help.incrementDepth();
  199986             : 
  199987             : #if 0
  199988             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  199989             :   // but it is not generally true that things can only be copied once!
  199990             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  199991             :   // AstAttribute* existingAttribute = const_cast<SgLabelSymbol*>(this)->attribute["copied"];
  199992             :      bool previouslyCopied = const_cast<SgLabelSymbol*>(this)->attribute.exists("copied");
  199993             :      if (previouslyCopied == true)
  199994             :         {
  199995             :           this->get_file_info()->display("Called from copy SgLabelSymbol: debug");
  199996             :         }
  199997             :      ROSE_ASSERT(previouslyCopied == false);
  199998             : 
  199999             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  200000             :      AstAttribute* newAttribute = new AstAttribute();
  200001             :      ROSE_ASSERT(newAttribute != NULL);
  200002             : 
  200003             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  200004             :      const_cast<SgLabelSymbol*>(this)->attribute.add("copied",newAttribute);
  200005             : #endif
  200006             : 
  200007             :   // Copy data members from base classes
  200008             :   // Copy constructor parameter data member: declaration_copy
  200009           0 :      SgLabelStatement* declaration_copy; 
  200010             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  200011           0 :           if (get_declaration() != NULL) 
  200012             :              { 
  200013           0 :                declaration_copy = static_cast<SgLabelStatement*>(help.copyAst(get_declaration())); 
  200014             :              } 
  200015             :             else 
  200016             :              { 
  200017             :                declaration_copy = NULL; 
  200018             :              } 
  200019             :  
  200020             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200021             : 
  200022             :   // Build an empty copy of this object (will be filled in, but 
  200023             :   // the parent can't be set and must be set by the caller)
  200024           0 :      result = new SgLabelSymbol(  declaration_copy );
  200025           0 :      ROSE_ASSERT(result != NULL);
  200026             : 
  200027             :   // Copy data members of "this" class
  200028             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  200029             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  200030             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  200031           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  200032           0 :      if ( p_attributeMechanism != NULL ) 
  200033             :         { 
  200034           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  200035             :         } 
  200036             :        else 
  200037             :         { 
  200038             :           attributeMechanism_copy = NULL; 
  200039             :         } 
  200040             :   /* check for a valid pointer and delete if present */ 
  200041           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  200042             :   /* add assignment to result here */ 
  200043           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  200044             :   // Copy non-constructor parameter data member (access function): fortran_statement_copy
  200045             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fortran_statement
  200046             :   // case: toBeCopied == COPY_DATA for fortran_statement
  200047           0 :      SgStatement* fortran_statement_copy = p_fortran_statement; 
  200048           0 :      result->p_fortran_statement = fortran_statement_copy; 
  200049             :   // Copy non-constructor parameter data member (access function): fortran_alternate_return_parameter_copy
  200050             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for fortran_alternate_return_parameter
  200051             :   // case: toBeCopied == COPY_DATA for fortran_alternate_return_parameter
  200052           0 :      SgInitializedName* fortran_alternate_return_parameter_copy = p_fortran_alternate_return_parameter; 
  200053           0 :      result->p_fortran_alternate_return_parameter = fortran_alternate_return_parameter_copy; 
  200054             :   // Copy non-constructor parameter data member (access function): numeric_label_value_copy
  200055             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for numeric_label_value
  200056             :   // case: toBeCopied == COPY_DATA for numeric_label_value
  200057           0 :      int numeric_label_value_copy = p_numeric_label_value; 
  200058           0 :      result->p_numeric_label_value = numeric_label_value_copy; 
  200059             :   // Copy non-constructor parameter data member (access function): label_type_copy
  200060             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for label_type
  200061             :   // case: toBeCopied == COPY_DATA for label_type
  200062           0 :      SgLabelSymbol::label_type_enum label_type_copy = p_label_type; 
  200063           0 :      result->p_label_type = label_type_copy; 
  200064             :   // case: not a listType for (using conditionalToSetParent)declaration
  200065           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  200066             :              { 
  200067           0 :                declaration_copy->set_parent(result); 
  200068             :              } 
  200069             : 
  200070             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200071             : 
  200072             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  200073             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  200074             :   // fixupCopy(result,help);
  200075             : 
  200076             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  200077             :   // the Sg_File_Info objects that are built for the new IR nodes.
  200078           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  200079           0 :      if (locatedNode != NULL)
  200080             :         {
  200081             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  200082           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  200083           0 :           ROSE_ASSERT(start != NULL);
  200084             : #if 0
  200085             :        // Debugging information
  200086             :           if (start->get_parent() == NULL)
  200087             :              {
  200088             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200089             :              }
  200090             : #endif
  200091           0 :           start->set_parent(locatedNode);
  200092           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  200093             : 
  200094           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  200095             : 
  200096             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  200097             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  200098             :        // ROSE_ASSERT(end != NULL);
  200099           0 :           if (end == NULL)
  200100             :              {
  200101           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  200102             :              }
  200103             :             else
  200104             :              {
  200105             : #if 0
  200106             :             // Debugging information
  200107             :                if (end->get_parent() == NULL)
  200108             :                   {
  200109             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200110             :                   }
  200111             : #endif
  200112           0 :                end->set_parent(locatedNode);
  200113           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  200114             :              }
  200115             : 
  200116           0 :           SgExpression* expression = isSgExpression(result);
  200117           0 :           if (isSgExpression(this) != NULL)
  200118             :              {
  200119           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  200120             : 
  200121             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  200122           0 :                if (operatorPosition != NULL)
  200123             :                   {
  200124             : #if 0
  200125             :                  // Debugging information
  200126             :                     if (operatorPosition->get_parent() == NULL)
  200127             :                        {
  200128             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200129             :                        }
  200130             : #endif
  200131           0 :                     operatorPosition->set_parent(expression);
  200132           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  200133             :                   }
  200134             :              }
  200135             :         }
  200136             : 
  200137             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  200138           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  200139           0 :      if (initializedName != NULL)
  200140             :         {
  200141             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  200142           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  200143           0 :           ROSE_ASSERT(start != NULL);
  200144             : #if 0
  200145             :        // Debugging information
  200146             :           if (start->get_parent() == NULL)
  200147             :              {
  200148             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200149             :              }
  200150             : #endif
  200151           0 :           start->set_parent(initializedName);
  200152           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  200153             : 
  200154             : #if 0
  200155             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  200156             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  200157             : 
  200158             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  200159             :        // ROSE_ASSERT(end != NULL);
  200160             :           if (end == NULL)
  200161             :              {
  200162             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  200163             :              }
  200164             :             else
  200165             :              {
  200166             :                if (end->get_parent() == NULL)
  200167             :                   {
  200168             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200169             :                   }
  200170             :                end->set_parent(initializedName);
  200171             :                ROSE_ASSERT(end->get_parent() != NULL);
  200172             :              }
  200173             : #endif
  200174             :         }
  200175             : 
  200176             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  200177           0 :      help.insertCopiedNodePair(this,result);
  200178             : 
  200179             :   // printf ("End of copy SgLabelSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  200180             : 
  200181             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  200182             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  200183           0 :      help.decrementDepth();
  200184             : 
  200185             :   // Test if this is the root of the copy!
  200186           0 :      if (help.get_depth() == 0)
  200187             :         {
  200188             :        // This is the original calling node.
  200189             : 
  200190             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  200191             :        // printf ("Calling SgLabelSymbol::fixupCopy() (from root of AST being copied) \n");
  200192             : #if ALT_FIXUP_COPY
  200193             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  200194           0 :           fixupCopy_scopes (result,help);
  200195           0 :           fixupCopy_symbols (result,help);
  200196           0 :           fixupCopy_references (result,help);
  200197             : #else
  200198             :           fixupCopy(result,help);
  200199             : #endif
  200200             :        // Allow this to be called recursively, so accumulate the state.
  200201             :        // Also, clear the state in the SgCopyHelp object.
  200202             :        // help.clearState();
  200203             :         }
  200204             : 
  200205           0 :      return result;
  200206             :    }
  200207             : 
  200208             : 
  200209             : /* #line 200210 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  200210             : 
  200211             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200212             : 
  200213           0 : SgNode* SgDefaultSymbol::copy ( SgCopyHelp& help) const
  200214             :    {
  200215           0 :      SgDefaultSymbol* result = NULL;
  200216             : 
  200217             :   // printf ("Copy SgDefaultSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  200218             : 
  200219             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  200220             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  200221             :   // The default value of the depth is 0, so after this call the depth is 1!
  200222           0 :      help.incrementDepth();
  200223             : 
  200224             : #if 0
  200225             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  200226             :   // but it is not generally true that things can only be copied once!
  200227             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  200228             :   // AstAttribute* existingAttribute = const_cast<SgDefaultSymbol*>(this)->attribute["copied"];
  200229             :      bool previouslyCopied = const_cast<SgDefaultSymbol*>(this)->attribute.exists("copied");
  200230             :      if (previouslyCopied == true)
  200231             :         {
  200232             :           this->get_file_info()->display("Called from copy SgDefaultSymbol: debug");
  200233             :         }
  200234             :      ROSE_ASSERT(previouslyCopied == false);
  200235             : 
  200236             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  200237             :      AstAttribute* newAttribute = new AstAttribute();
  200238             :      ROSE_ASSERT(newAttribute != NULL);
  200239             : 
  200240             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  200241             :      const_cast<SgDefaultSymbol*>(this)->attribute.add("copied",newAttribute);
  200242             : #endif
  200243             : 
  200244             :   // Copy data members from base classes
  200245             :   // Copy constructor parameter data member: type_copy
  200246             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for type
  200247             :   // case: toBeCopied == COPY_DATA for type
  200248           0 :      SgType* type_copy = p_type; 
  200249             :  
  200250             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200251             : 
  200252             :   // Build an empty copy of this object (will be filled in, but 
  200253             :   // the parent can't be set and must be set by the caller)
  200254           0 :      result = new SgDefaultSymbol(  type_copy );
  200255           0 :      ROSE_ASSERT(result != NULL);
  200256             : 
  200257             :   // Copy data members of "this" class
  200258             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  200259             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  200260             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  200261           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  200262           0 :      if ( p_attributeMechanism != NULL ) 
  200263             :         { 
  200264           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  200265             :         } 
  200266             :        else 
  200267             :         { 
  200268             :           attributeMechanism_copy = NULL; 
  200269             :         } 
  200270             :   /* check for a valid pointer and delete if present */ 
  200271           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  200272             :   /* add assignment to result here */ 
  200273           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  200274             : 
  200275             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200276             : 
  200277             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  200278             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  200279             :   // fixupCopy(result,help);
  200280             : 
  200281             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  200282             :   // the Sg_File_Info objects that are built for the new IR nodes.
  200283           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  200284           0 :      if (locatedNode != NULL)
  200285             :         {
  200286             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  200287           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  200288           0 :           ROSE_ASSERT(start != NULL);
  200289             : #if 0
  200290             :        // Debugging information
  200291             :           if (start->get_parent() == NULL)
  200292             :              {
  200293             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200294             :              }
  200295             : #endif
  200296           0 :           start->set_parent(locatedNode);
  200297           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  200298             : 
  200299           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  200300             : 
  200301             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  200302             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  200303             :        // ROSE_ASSERT(end != NULL);
  200304           0 :           if (end == NULL)
  200305             :              {
  200306           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  200307             :              }
  200308             :             else
  200309             :              {
  200310             : #if 0
  200311             :             // Debugging information
  200312             :                if (end->get_parent() == NULL)
  200313             :                   {
  200314             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200315             :                   }
  200316             : #endif
  200317           0 :                end->set_parent(locatedNode);
  200318           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  200319             :              }
  200320             : 
  200321           0 :           SgExpression* expression = isSgExpression(result);
  200322           0 :           if (isSgExpression(this) != NULL)
  200323             :              {
  200324           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  200325             : 
  200326             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  200327           0 :                if (operatorPosition != NULL)
  200328             :                   {
  200329             : #if 0
  200330             :                  // Debugging information
  200331             :                     if (operatorPosition->get_parent() == NULL)
  200332             :                        {
  200333             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200334             :                        }
  200335             : #endif
  200336           0 :                     operatorPosition->set_parent(expression);
  200337           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  200338             :                   }
  200339             :              }
  200340             :         }
  200341             : 
  200342             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  200343           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  200344           0 :      if (initializedName != NULL)
  200345             :         {
  200346             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  200347           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  200348           0 :           ROSE_ASSERT(start != NULL);
  200349             : #if 0
  200350             :        // Debugging information
  200351             :           if (start->get_parent() == NULL)
  200352             :              {
  200353             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200354             :              }
  200355             : #endif
  200356           0 :           start->set_parent(initializedName);
  200357           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  200358             : 
  200359             : #if 0
  200360             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  200361             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  200362             : 
  200363             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  200364             :        // ROSE_ASSERT(end != NULL);
  200365             :           if (end == NULL)
  200366             :              {
  200367             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  200368             :              }
  200369             :             else
  200370             :              {
  200371             :                if (end->get_parent() == NULL)
  200372             :                   {
  200373             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200374             :                   }
  200375             :                end->set_parent(initializedName);
  200376             :                ROSE_ASSERT(end->get_parent() != NULL);
  200377             :              }
  200378             : #endif
  200379             :         }
  200380             : 
  200381             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  200382           0 :      help.insertCopiedNodePair(this,result);
  200383             : 
  200384             :   // printf ("End of copy SgDefaultSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  200385             : 
  200386             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  200387             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  200388           0 :      help.decrementDepth();
  200389             : 
  200390             :   // Test if this is the root of the copy!
  200391           0 :      if (help.get_depth() == 0)
  200392             :         {
  200393             :        // This is the original calling node.
  200394             : 
  200395             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  200396             :        // printf ("Calling SgDefaultSymbol::fixupCopy() (from root of AST being copied) \n");
  200397             : #if ALT_FIXUP_COPY
  200398             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  200399           0 :           fixupCopy_scopes (result,help);
  200400           0 :           fixupCopy_symbols (result,help);
  200401           0 :           fixupCopy_references (result,help);
  200402             : #else
  200403             :           fixupCopy(result,help);
  200404             : #endif
  200405             :        // Allow this to be called recursively, so accumulate the state.
  200406             :        // Also, clear the state in the SgCopyHelp object.
  200407             :        // help.clearState();
  200408             :         }
  200409             : 
  200410           0 :      return result;
  200411             :    }
  200412             : 
  200413             : 
  200414             : /* #line 200415 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  200415             : 
  200416             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200417             : 
  200418           0 : SgNode* SgNamespaceSymbol::copy ( SgCopyHelp& help) const
  200419             :    {
  200420           0 :      SgNamespaceSymbol* result = NULL;
  200421             : 
  200422             :   // printf ("Copy SgNamespaceSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  200423             : 
  200424             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  200425             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  200426             :   // The default value of the depth is 0, so after this call the depth is 1!
  200427           0 :      help.incrementDepth();
  200428             : 
  200429             : #if 0
  200430             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  200431             :   // but it is not generally true that things can only be copied once!
  200432             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  200433             :   // AstAttribute* existingAttribute = const_cast<SgNamespaceSymbol*>(this)->attribute["copied"];
  200434             :      bool previouslyCopied = const_cast<SgNamespaceSymbol*>(this)->attribute.exists("copied");
  200435             :      if (previouslyCopied == true)
  200436             :         {
  200437             :           this->get_file_info()->display("Called from copy SgNamespaceSymbol: debug");
  200438             :         }
  200439             :      ROSE_ASSERT(previouslyCopied == false);
  200440             : 
  200441             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  200442             :      AstAttribute* newAttribute = new AstAttribute();
  200443             :      ROSE_ASSERT(newAttribute != NULL);
  200444             : 
  200445             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  200446             :      const_cast<SgNamespaceSymbol*>(this)->attribute.add("copied",newAttribute);
  200447             : #endif
  200448             : 
  200449             :   // Copy data members from base classes
  200450             :   // Copy constructor parameter data member: name_copy
  200451             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for name
  200452             :   // case: toBeCopied == COPY_DATA for name
  200453           0 :      SgName name_copy = p_name; 
  200454             :   // Copy constructor parameter data member: declaration_copy
  200455           0 :      SgNamespaceDeclarationStatement* declaration_copy; 
  200456             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  200457           0 :           if (get_declaration() != NULL) 
  200458             :              { 
  200459           0 :                declaration_copy = static_cast<SgNamespaceDeclarationStatement*>(help.copyAst(get_declaration())); 
  200460             :              } 
  200461             :             else 
  200462             :              { 
  200463             :                declaration_copy = NULL; 
  200464             :              } 
  200465             :   // Copy constructor parameter data member: aliasDeclaration_copy
  200466           0 :      SgNamespaceAliasDeclarationStatement* aliasDeclaration_copy; 
  200467             :   // case: not a listType for (using conditionalToCopyVariable)aliasDeclaration
  200468           0 :           if (get_aliasDeclaration() != NULL) 
  200469             :              { 
  200470           0 :                aliasDeclaration_copy = static_cast<SgNamespaceAliasDeclarationStatement*>(help.copyAst(get_aliasDeclaration())); 
  200471             :              } 
  200472             :             else 
  200473             :              { 
  200474             :                aliasDeclaration_copy = NULL; 
  200475             :              } 
  200476             :   // Copy constructor parameter data member: isAlias_copy
  200477             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isAlias
  200478             :   // case: toBeCopied == COPY_DATA for isAlias
  200479           0 :      bool isAlias_copy = p_isAlias; 
  200480             :  
  200481             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200482             : 
  200483             :   // Build an empty copy of this object (will be filled in, but 
  200484             :   // the parent can't be set and must be set by the caller)
  200485           0 :      result = new SgNamespaceSymbol(  name_copy, declaration_copy, aliasDeclaration_copy, isAlias_copy );
  200486           0 :      ROSE_ASSERT(result != NULL);
  200487             : 
  200488             :   // Copy data members of "this" class
  200489             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  200490             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  200491             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  200492           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  200493           0 :      if ( p_attributeMechanism != NULL ) 
  200494             :         { 
  200495           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  200496             :         } 
  200497             :        else 
  200498             :         { 
  200499             :           attributeMechanism_copy = NULL; 
  200500             :         } 
  200501             :   /* check for a valid pointer and delete if present */ 
  200502           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  200503             :   /* add assignment to result here */ 
  200504           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  200505             :   // case: not a listType for (using conditionalToSetParent)declaration
  200506           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  200507             :              { 
  200508           0 :                declaration_copy->set_parent(result); 
  200509             :              } 
  200510             :   // case: not a listType for (using conditionalToSetParent)aliasDeclaration
  200511           0 :           if ( (aliasDeclaration_copy != NULL) && (aliasDeclaration_copy->get_parent() == NULL) && (isSgType(aliasDeclaration_copy) == NULL) ) 
  200512             :              { 
  200513           0 :                aliasDeclaration_copy->set_parent(result); 
  200514             :              } 
  200515             : 
  200516             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200517             : 
  200518             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  200519             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  200520             :   // fixupCopy(result,help);
  200521             : 
  200522             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  200523             :   // the Sg_File_Info objects that are built for the new IR nodes.
  200524           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  200525           0 :      if (locatedNode != NULL)
  200526             :         {
  200527             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  200528           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  200529           0 :           ROSE_ASSERT(start != NULL);
  200530             : #if 0
  200531             :        // Debugging information
  200532             :           if (start->get_parent() == NULL)
  200533             :              {
  200534             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200535             :              }
  200536             : #endif
  200537           0 :           start->set_parent(locatedNode);
  200538           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  200539             : 
  200540           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  200541             : 
  200542             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  200543             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  200544             :        // ROSE_ASSERT(end != NULL);
  200545           0 :           if (end == NULL)
  200546             :              {
  200547           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  200548             :              }
  200549             :             else
  200550             :              {
  200551             : #if 0
  200552             :             // Debugging information
  200553             :                if (end->get_parent() == NULL)
  200554             :                   {
  200555             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200556             :                   }
  200557             : #endif
  200558           0 :                end->set_parent(locatedNode);
  200559           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  200560             :              }
  200561             : 
  200562           0 :           SgExpression* expression = isSgExpression(result);
  200563           0 :           if (isSgExpression(this) != NULL)
  200564             :              {
  200565           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  200566             : 
  200567             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  200568           0 :                if (operatorPosition != NULL)
  200569             :                   {
  200570             : #if 0
  200571             :                  // Debugging information
  200572             :                     if (operatorPosition->get_parent() == NULL)
  200573             :                        {
  200574             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200575             :                        }
  200576             : #endif
  200577           0 :                     operatorPosition->set_parent(expression);
  200578           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  200579             :                   }
  200580             :              }
  200581             :         }
  200582             : 
  200583             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  200584           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  200585           0 :      if (initializedName != NULL)
  200586             :         {
  200587             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  200588           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  200589           0 :           ROSE_ASSERT(start != NULL);
  200590             : #if 0
  200591             :        // Debugging information
  200592             :           if (start->get_parent() == NULL)
  200593             :              {
  200594             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200595             :              }
  200596             : #endif
  200597           0 :           start->set_parent(initializedName);
  200598           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  200599             : 
  200600             : #if 0
  200601             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  200602             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  200603             : 
  200604             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  200605             :        // ROSE_ASSERT(end != NULL);
  200606             :           if (end == NULL)
  200607             :              {
  200608             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  200609             :              }
  200610             :             else
  200611             :              {
  200612             :                if (end->get_parent() == NULL)
  200613             :                   {
  200614             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200615             :                   }
  200616             :                end->set_parent(initializedName);
  200617             :                ROSE_ASSERT(end->get_parent() != NULL);
  200618             :              }
  200619             : #endif
  200620             :         }
  200621             : 
  200622             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  200623           0 :      help.insertCopiedNodePair(this,result);
  200624             : 
  200625             :   // printf ("End of copy SgNamespaceSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  200626             : 
  200627             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  200628             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  200629           0 :      help.decrementDepth();
  200630             : 
  200631             :   // Test if this is the root of the copy!
  200632           0 :      if (help.get_depth() == 0)
  200633             :         {
  200634             :        // This is the original calling node.
  200635             : 
  200636             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  200637             :        // printf ("Calling SgNamespaceSymbol::fixupCopy() (from root of AST being copied) \n");
  200638             : #if ALT_FIXUP_COPY
  200639             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  200640           0 :           fixupCopy_scopes (result,help);
  200641           0 :           fixupCopy_symbols (result,help);
  200642           0 :           fixupCopy_references (result,help);
  200643             : #else
  200644             :           fixupCopy(result,help);
  200645             : #endif
  200646             :        // Allow this to be called recursively, so accumulate the state.
  200647             :        // Also, clear the state in the SgCopyHelp object.
  200648             :        // help.clearState();
  200649             :         }
  200650             : 
  200651           0 :      return result;
  200652             :    }
  200653             : 
  200654             : 
  200655             : /* #line 200656 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  200656             : 
  200657             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200658             : 
  200659           0 : SgNode* SgIntrinsicSymbol::copy ( SgCopyHelp& help) const
  200660             :    {
  200661           0 :      SgIntrinsicSymbol* result = NULL;
  200662             : 
  200663             :   // printf ("Copy SgIntrinsicSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  200664             : 
  200665             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  200666             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  200667             :   // The default value of the depth is 0, so after this call the depth is 1!
  200668           0 :      help.incrementDepth();
  200669             : 
  200670             : #if 0
  200671             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  200672             :   // but it is not generally true that things can only be copied once!
  200673             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  200674             :   // AstAttribute* existingAttribute = const_cast<SgIntrinsicSymbol*>(this)->attribute["copied"];
  200675             :      bool previouslyCopied = const_cast<SgIntrinsicSymbol*>(this)->attribute.exists("copied");
  200676             :      if (previouslyCopied == true)
  200677             :         {
  200678             :           this->get_file_info()->display("Called from copy SgIntrinsicSymbol: debug");
  200679             :         }
  200680             :      ROSE_ASSERT(previouslyCopied == false);
  200681             : 
  200682             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  200683             :      AstAttribute* newAttribute = new AstAttribute();
  200684             :      ROSE_ASSERT(newAttribute != NULL);
  200685             : 
  200686             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  200687             :      const_cast<SgIntrinsicSymbol*>(this)->attribute.add("copied",newAttribute);
  200688             : #endif
  200689             : 
  200690             :   // Copy data members from base classes
  200691             :   // Copy constructor parameter data member: declaration_copy
  200692             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration
  200693             :   // case: toBeCopied == COPY_DATA for declaration
  200694           0 :      SgInitializedName* declaration_copy = p_declaration; 
  200695             :  
  200696             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200697             : 
  200698             :   // Build an empty copy of this object (will be filled in, but 
  200699             :   // the parent can't be set and must be set by the caller)
  200700           0 :      result = new SgIntrinsicSymbol(  declaration_copy );
  200701           0 :      ROSE_ASSERT(result != NULL);
  200702             : 
  200703             :   // Copy data members of "this" class
  200704             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  200705             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  200706             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  200707           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  200708           0 :      if ( p_attributeMechanism != NULL ) 
  200709             :         { 
  200710           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  200711             :         } 
  200712             :        else 
  200713             :         { 
  200714             :           attributeMechanism_copy = NULL; 
  200715             :         } 
  200716             :   /* check for a valid pointer and delete if present */ 
  200717           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  200718             :   /* add assignment to result here */ 
  200719           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  200720             : 
  200721             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200722             : 
  200723             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  200724             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  200725             :   // fixupCopy(result,help);
  200726             : 
  200727             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  200728             :   // the Sg_File_Info objects that are built for the new IR nodes.
  200729           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  200730           0 :      if (locatedNode != NULL)
  200731             :         {
  200732             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  200733           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  200734           0 :           ROSE_ASSERT(start != NULL);
  200735             : #if 0
  200736             :        // Debugging information
  200737             :           if (start->get_parent() == NULL)
  200738             :              {
  200739             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200740             :              }
  200741             : #endif
  200742           0 :           start->set_parent(locatedNode);
  200743           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  200744             : 
  200745           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  200746             : 
  200747             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  200748             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  200749             :        // ROSE_ASSERT(end != NULL);
  200750           0 :           if (end == NULL)
  200751             :              {
  200752           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  200753             :              }
  200754             :             else
  200755             :              {
  200756             : #if 0
  200757             :             // Debugging information
  200758             :                if (end->get_parent() == NULL)
  200759             :                   {
  200760             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200761             :                   }
  200762             : #endif
  200763           0 :                end->set_parent(locatedNode);
  200764           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  200765             :              }
  200766             : 
  200767           0 :           SgExpression* expression = isSgExpression(result);
  200768           0 :           if (isSgExpression(this) != NULL)
  200769             :              {
  200770           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  200771             : 
  200772             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  200773           0 :                if (operatorPosition != NULL)
  200774             :                   {
  200775             : #if 0
  200776             :                  // Debugging information
  200777             :                     if (operatorPosition->get_parent() == NULL)
  200778             :                        {
  200779             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200780             :                        }
  200781             : #endif
  200782           0 :                     operatorPosition->set_parent(expression);
  200783           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  200784             :                   }
  200785             :              }
  200786             :         }
  200787             : 
  200788             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  200789           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  200790           0 :      if (initializedName != NULL)
  200791             :         {
  200792             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  200793           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  200794           0 :           ROSE_ASSERT(start != NULL);
  200795             : #if 0
  200796             :        // Debugging information
  200797             :           if (start->get_parent() == NULL)
  200798             :              {
  200799             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200800             :              }
  200801             : #endif
  200802           0 :           start->set_parent(initializedName);
  200803           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  200804             : 
  200805             : #if 0
  200806             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  200807             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  200808             : 
  200809             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  200810             :        // ROSE_ASSERT(end != NULL);
  200811             :           if (end == NULL)
  200812             :              {
  200813             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  200814             :              }
  200815             :             else
  200816             :              {
  200817             :                if (end->get_parent() == NULL)
  200818             :                   {
  200819             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200820             :                   }
  200821             :                end->set_parent(initializedName);
  200822             :                ROSE_ASSERT(end->get_parent() != NULL);
  200823             :              }
  200824             : #endif
  200825             :         }
  200826             : 
  200827             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  200828           0 :      help.insertCopiedNodePair(this,result);
  200829             : 
  200830             :   // printf ("End of copy SgIntrinsicSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  200831             : 
  200832             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  200833             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  200834           0 :      help.decrementDepth();
  200835             : 
  200836             :   // Test if this is the root of the copy!
  200837           0 :      if (help.get_depth() == 0)
  200838             :         {
  200839             :        // This is the original calling node.
  200840             : 
  200841             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  200842             :        // printf ("Calling SgIntrinsicSymbol::fixupCopy() (from root of AST being copied) \n");
  200843             : #if ALT_FIXUP_COPY
  200844             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  200845           0 :           fixupCopy_scopes (result,help);
  200846           0 :           fixupCopy_symbols (result,help);
  200847           0 :           fixupCopy_references (result,help);
  200848             : #else
  200849             :           fixupCopy(result,help);
  200850             : #endif
  200851             :        // Allow this to be called recursively, so accumulate the state.
  200852             :        // Also, clear the state in the SgCopyHelp object.
  200853             :        // help.clearState();
  200854             :         }
  200855             : 
  200856           0 :      return result;
  200857             :    }
  200858             : 
  200859             : 
  200860             : /* #line 200861 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  200861             : 
  200862             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200863             : 
  200864           0 : SgNode* SgModuleSymbol::copy ( SgCopyHelp& help) const
  200865             :    {
  200866           0 :      SgModuleSymbol* result = NULL;
  200867             : 
  200868             :   // printf ("Copy SgModuleSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  200869             : 
  200870             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  200871             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  200872             :   // The default value of the depth is 0, so after this call the depth is 1!
  200873           0 :      help.incrementDepth();
  200874             : 
  200875             : #if 0
  200876             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  200877             :   // but it is not generally true that things can only be copied once!
  200878             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  200879             :   // AstAttribute* existingAttribute = const_cast<SgModuleSymbol*>(this)->attribute["copied"];
  200880             :      bool previouslyCopied = const_cast<SgModuleSymbol*>(this)->attribute.exists("copied");
  200881             :      if (previouslyCopied == true)
  200882             :         {
  200883             :           this->get_file_info()->display("Called from copy SgModuleSymbol: debug");
  200884             :         }
  200885             :      ROSE_ASSERT(previouslyCopied == false);
  200886             : 
  200887             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  200888             :      AstAttribute* newAttribute = new AstAttribute();
  200889             :      ROSE_ASSERT(newAttribute != NULL);
  200890             : 
  200891             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  200892             :      const_cast<SgModuleSymbol*>(this)->attribute.add("copied",newAttribute);
  200893             : #endif
  200894             : 
  200895             :   // Copy data members from base classes
  200896             :   // Copy constructor parameter data member: declaration_copy
  200897           0 :      SgModuleStatement* declaration_copy; 
  200898             :   // case: not a listType for (using conditionalToCopyVariable)declaration
  200899           0 :           if (get_declaration() != NULL) 
  200900             :              { 
  200901           0 :                declaration_copy = static_cast<SgModuleStatement*>(help.copyAst(get_declaration())); 
  200902             :              } 
  200903             :             else 
  200904             :              { 
  200905             :                declaration_copy = NULL; 
  200906             :              } 
  200907             :  
  200908             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200909             : 
  200910             :   // Build an empty copy of this object (will be filled in, but 
  200911             :   // the parent can't be set and must be set by the caller)
  200912           0 :      result = new SgModuleSymbol(  declaration_copy );
  200913           0 :      ROSE_ASSERT(result != NULL);
  200914             : 
  200915             :   // Copy data members of "this" class
  200916             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  200917             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  200918             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  200919           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  200920           0 :      if ( p_attributeMechanism != NULL ) 
  200921             :         { 
  200922           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  200923             :         } 
  200924             :        else 
  200925             :         { 
  200926             :           attributeMechanism_copy = NULL; 
  200927             :         } 
  200928             :   /* check for a valid pointer and delete if present */ 
  200929           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  200930             :   /* add assignment to result here */ 
  200931           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  200932             :   // case: not a listType for (using conditionalToSetParent)declaration
  200933           0 :           if ( (declaration_copy != NULL) && (declaration_copy->get_parent() == NULL) && (isSgType(declaration_copy) == NULL) ) 
  200934             :              { 
  200935           0 :                declaration_copy->set_parent(result); 
  200936             :              } 
  200937             : 
  200938             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  200939             : 
  200940             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  200941             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  200942             :   // fixupCopy(result,help);
  200943             : 
  200944             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  200945             :   // the Sg_File_Info objects that are built for the new IR nodes.
  200946           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  200947           0 :      if (locatedNode != NULL)
  200948             :         {
  200949             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  200950           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  200951           0 :           ROSE_ASSERT(start != NULL);
  200952             : #if 0
  200953             :        // Debugging information
  200954             :           if (start->get_parent() == NULL)
  200955             :              {
  200956             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200957             :              }
  200958             : #endif
  200959           0 :           start->set_parent(locatedNode);
  200960           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  200961             : 
  200962           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  200963             : 
  200964             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  200965             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  200966             :        // ROSE_ASSERT(end != NULL);
  200967           0 :           if (end == NULL)
  200968             :              {
  200969           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  200970             :              }
  200971             :             else
  200972             :              {
  200973             : #if 0
  200974             :             // Debugging information
  200975             :                if (end->get_parent() == NULL)
  200976             :                   {
  200977             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200978             :                   }
  200979             : #endif
  200980           0 :                end->set_parent(locatedNode);
  200981           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  200982             :              }
  200983             : 
  200984           0 :           SgExpression* expression = isSgExpression(result);
  200985           0 :           if (isSgExpression(this) != NULL)
  200986             :              {
  200987           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  200988             : 
  200989             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  200990           0 :                if (operatorPosition != NULL)
  200991             :                   {
  200992             : #if 0
  200993             :                  // Debugging information
  200994             :                     if (operatorPosition->get_parent() == NULL)
  200995             :                        {
  200996             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  200997             :                        }
  200998             : #endif
  200999           0 :                     operatorPosition->set_parent(expression);
  201000           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  201001             :                   }
  201002             :              }
  201003             :         }
  201004             : 
  201005             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  201006           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  201007           0 :      if (initializedName != NULL)
  201008             :         {
  201009             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  201010           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  201011           0 :           ROSE_ASSERT(start != NULL);
  201012             : #if 0
  201013             :        // Debugging information
  201014             :           if (start->get_parent() == NULL)
  201015             :              {
  201016             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201017             :              }
  201018             : #endif
  201019           0 :           start->set_parent(initializedName);
  201020           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  201021             : 
  201022             : #if 0
  201023             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  201024             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  201025             : 
  201026             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  201027             :        // ROSE_ASSERT(end != NULL);
  201028             :           if (end == NULL)
  201029             :              {
  201030             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  201031             :              }
  201032             :             else
  201033             :              {
  201034             :                if (end->get_parent() == NULL)
  201035             :                   {
  201036             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201037             :                   }
  201038             :                end->set_parent(initializedName);
  201039             :                ROSE_ASSERT(end->get_parent() != NULL);
  201040             :              }
  201041             : #endif
  201042             :         }
  201043             : 
  201044             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  201045           0 :      help.insertCopiedNodePair(this,result);
  201046             : 
  201047             :   // printf ("End of copy SgModuleSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  201048             : 
  201049             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  201050             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  201051           0 :      help.decrementDepth();
  201052             : 
  201053             :   // Test if this is the root of the copy!
  201054           0 :      if (help.get_depth() == 0)
  201055             :         {
  201056             :        // This is the original calling node.
  201057             : 
  201058             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  201059             :        // printf ("Calling SgModuleSymbol::fixupCopy() (from root of AST being copied) \n");
  201060             : #if ALT_FIXUP_COPY
  201061             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  201062           0 :           fixupCopy_scopes (result,help);
  201063           0 :           fixupCopy_symbols (result,help);
  201064           0 :           fixupCopy_references (result,help);
  201065             : #else
  201066             :           fixupCopy(result,help);
  201067             : #endif
  201068             :        // Allow this to be called recursively, so accumulate the state.
  201069             :        // Also, clear the state in the SgCopyHelp object.
  201070             :        // help.clearState();
  201071             :         }
  201072             : 
  201073           0 :      return result;
  201074             :    }
  201075             : 
  201076             : 
  201077             : /* #line 201078 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  201078             : 
  201079             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  201080             : 
  201081           0 : SgNode* SgInterfaceSymbol::copy ( SgCopyHelp& help) const
  201082             :    {
  201083           0 :      SgInterfaceSymbol* result = NULL;
  201084             : 
  201085             :   // printf ("Copy SgInterfaceSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  201086             : 
  201087             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  201088             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  201089             :   // The default value of the depth is 0, so after this call the depth is 1!
  201090           0 :      help.incrementDepth();
  201091             : 
  201092             : #if 0
  201093             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  201094             :   // but it is not generally true that things can only be copied once!
  201095             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  201096             :   // AstAttribute* existingAttribute = const_cast<SgInterfaceSymbol*>(this)->attribute["copied"];
  201097             :      bool previouslyCopied = const_cast<SgInterfaceSymbol*>(this)->attribute.exists("copied");
  201098             :      if (previouslyCopied == true)
  201099             :         {
  201100             :           this->get_file_info()->display("Called from copy SgInterfaceSymbol: debug");
  201101             :         }
  201102             :      ROSE_ASSERT(previouslyCopied == false);
  201103             : 
  201104             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  201105             :      AstAttribute* newAttribute = new AstAttribute();
  201106             :      ROSE_ASSERT(newAttribute != NULL);
  201107             : 
  201108             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  201109             :      const_cast<SgInterfaceSymbol*>(this)->attribute.add("copied",newAttribute);
  201110             : #endif
  201111             : 
  201112             :   // Copy data members from base classes
  201113             :   // Copy constructor parameter data member: declaration_copy
  201114             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration
  201115             :   // case: toBeCopied == COPY_DATA for declaration
  201116           0 :      SgInterfaceStatement* declaration_copy = p_declaration; 
  201117             :  
  201118             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  201119             : 
  201120             :   // Build an empty copy of this object (will be filled in, but 
  201121             :   // the parent can't be set and must be set by the caller)
  201122           0 :      result = new SgInterfaceSymbol(  declaration_copy );
  201123           0 :      ROSE_ASSERT(result != NULL);
  201124             : 
  201125             :   // Copy data members of "this" class
  201126             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  201127             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  201128             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  201129           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  201130           0 :      if ( p_attributeMechanism != NULL ) 
  201131             :         { 
  201132           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  201133             :         } 
  201134             :        else 
  201135             :         { 
  201136             :           attributeMechanism_copy = NULL; 
  201137             :         } 
  201138             :   /* check for a valid pointer and delete if present */ 
  201139           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  201140             :   /* add assignment to result here */ 
  201141           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  201142             : 
  201143             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  201144             : 
  201145             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  201146             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  201147             :   // fixupCopy(result,help);
  201148             : 
  201149             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  201150             :   // the Sg_File_Info objects that are built for the new IR nodes.
  201151           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  201152           0 :      if (locatedNode != NULL)
  201153             :         {
  201154             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  201155           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  201156           0 :           ROSE_ASSERT(start != NULL);
  201157             : #if 0
  201158             :        // Debugging information
  201159             :           if (start->get_parent() == NULL)
  201160             :              {
  201161             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201162             :              }
  201163             : #endif
  201164           0 :           start->set_parent(locatedNode);
  201165           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  201166             : 
  201167           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  201168             : 
  201169             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  201170             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  201171             :        // ROSE_ASSERT(end != NULL);
  201172           0 :           if (end == NULL)
  201173             :              {
  201174           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  201175             :              }
  201176             :             else
  201177             :              {
  201178             : #if 0
  201179             :             // Debugging information
  201180             :                if (end->get_parent() == NULL)
  201181             :                   {
  201182             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201183             :                   }
  201184             : #endif
  201185           0 :                end->set_parent(locatedNode);
  201186           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  201187             :              }
  201188             : 
  201189           0 :           SgExpression* expression = isSgExpression(result);
  201190           0 :           if (isSgExpression(this) != NULL)
  201191             :              {
  201192           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  201193             : 
  201194             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  201195           0 :                if (operatorPosition != NULL)
  201196             :                   {
  201197             : #if 0
  201198             :                  // Debugging information
  201199             :                     if (operatorPosition->get_parent() == NULL)
  201200             :                        {
  201201             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201202             :                        }
  201203             : #endif
  201204           0 :                     operatorPosition->set_parent(expression);
  201205           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  201206             :                   }
  201207             :              }
  201208             :         }
  201209             : 
  201210             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  201211           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  201212           0 :      if (initializedName != NULL)
  201213             :         {
  201214             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  201215           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  201216           0 :           ROSE_ASSERT(start != NULL);
  201217             : #if 0
  201218             :        // Debugging information
  201219             :           if (start->get_parent() == NULL)
  201220             :              {
  201221             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201222             :              }
  201223             : #endif
  201224           0 :           start->set_parent(initializedName);
  201225           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  201226             : 
  201227             : #if 0
  201228             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  201229             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  201230             : 
  201231             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  201232             :        // ROSE_ASSERT(end != NULL);
  201233             :           if (end == NULL)
  201234             :              {
  201235             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  201236             :              }
  201237             :             else
  201238             :              {
  201239             :                if (end->get_parent() == NULL)
  201240             :                   {
  201241             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201242             :                   }
  201243             :                end->set_parent(initializedName);
  201244             :                ROSE_ASSERT(end->get_parent() != NULL);
  201245             :              }
  201246             : #endif
  201247             :         }
  201248             : 
  201249             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  201250           0 :      help.insertCopiedNodePair(this,result);
  201251             : 
  201252             :   // printf ("End of copy SgInterfaceSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  201253             : 
  201254             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  201255             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  201256           0 :      help.decrementDepth();
  201257             : 
  201258             :   // Test if this is the root of the copy!
  201259           0 :      if (help.get_depth() == 0)
  201260             :         {
  201261             :        // This is the original calling node.
  201262             : 
  201263             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  201264             :        // printf ("Calling SgInterfaceSymbol::fixupCopy() (from root of AST being copied) \n");
  201265             : #if ALT_FIXUP_COPY
  201266             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  201267           0 :           fixupCopy_scopes (result,help);
  201268           0 :           fixupCopy_symbols (result,help);
  201269           0 :           fixupCopy_references (result,help);
  201270             : #else
  201271             :           fixupCopy(result,help);
  201272             : #endif
  201273             :        // Allow this to be called recursively, so accumulate the state.
  201274             :        // Also, clear the state in the SgCopyHelp object.
  201275             :        // help.clearState();
  201276             :         }
  201277             : 
  201278           0 :      return result;
  201279             :    }
  201280             : 
  201281             : 
  201282             : /* #line 201283 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  201283             : 
  201284             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  201285             : 
  201286           0 : SgNode* SgCommonSymbol::copy ( SgCopyHelp& help) const
  201287             :    {
  201288           0 :      SgCommonSymbol* result = NULL;
  201289             : 
  201290             :   // printf ("Copy SgCommonSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  201291             : 
  201292             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  201293             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  201294             :   // The default value of the depth is 0, so after this call the depth is 1!
  201295           0 :      help.incrementDepth();
  201296             : 
  201297             : #if 0
  201298             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  201299             :   // but it is not generally true that things can only be copied once!
  201300             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  201301             :   // AstAttribute* existingAttribute = const_cast<SgCommonSymbol*>(this)->attribute["copied"];
  201302             :      bool previouslyCopied = const_cast<SgCommonSymbol*>(this)->attribute.exists("copied");
  201303             :      if (previouslyCopied == true)
  201304             :         {
  201305             :           this->get_file_info()->display("Called from copy SgCommonSymbol: debug");
  201306             :         }
  201307             :      ROSE_ASSERT(previouslyCopied == false);
  201308             : 
  201309             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  201310             :      AstAttribute* newAttribute = new AstAttribute();
  201311             :      ROSE_ASSERT(newAttribute != NULL);
  201312             : 
  201313             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  201314             :      const_cast<SgCommonSymbol*>(this)->attribute.add("copied",newAttribute);
  201315             : #endif
  201316             : 
  201317             :   // Copy data members from base classes
  201318             :   // Copy constructor parameter data member: declaration_copy
  201319             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for declaration
  201320             :   // case: toBeCopied == COPY_DATA for declaration
  201321           0 :      SgInitializedName* declaration_copy = p_declaration; 
  201322             :  
  201323             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  201324             : 
  201325             :   // Build an empty copy of this object (will be filled in, but 
  201326             :   // the parent can't be set and must be set by the caller)
  201327           0 :      result = new SgCommonSymbol(  declaration_copy );
  201328           0 :      ROSE_ASSERT(result != NULL);
  201329             : 
  201330             :   // Copy data members of "this" class
  201331             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  201332             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  201333             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  201334           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  201335           0 :      if ( p_attributeMechanism != NULL ) 
  201336             :         { 
  201337           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  201338             :         } 
  201339             :        else 
  201340             :         { 
  201341             :           attributeMechanism_copy = NULL; 
  201342             :         } 
  201343             :   /* check for a valid pointer and delete if present */ 
  201344           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  201345             :   /* add assignment to result here */ 
  201346           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  201347             : 
  201348             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  201349             : 
  201350             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  201351             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  201352             :   // fixupCopy(result,help);
  201353             : 
  201354             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  201355             :   // the Sg_File_Info objects that are built for the new IR nodes.
  201356           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  201357           0 :      if (locatedNode != NULL)
  201358             :         {
  201359             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  201360           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  201361           0 :           ROSE_ASSERT(start != NULL);
  201362             : #if 0
  201363             :        // Debugging information
  201364             :           if (start->get_parent() == NULL)
  201365             :              {
  201366             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201367             :              }
  201368             : #endif
  201369           0 :           start->set_parent(locatedNode);
  201370           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  201371             : 
  201372           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  201373             : 
  201374             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  201375             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  201376             :        // ROSE_ASSERT(end != NULL);
  201377           0 :           if (end == NULL)
  201378             :              {
  201379           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  201380             :              }
  201381             :             else
  201382             :              {
  201383             : #if 0
  201384             :             // Debugging information
  201385             :                if (end->get_parent() == NULL)
  201386             :                   {
  201387             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201388             :                   }
  201389             : #endif
  201390           0 :                end->set_parent(locatedNode);
  201391           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  201392             :              }
  201393             : 
  201394           0 :           SgExpression* expression = isSgExpression(result);
  201395           0 :           if (isSgExpression(this) != NULL)
  201396             :              {
  201397           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  201398             : 
  201399             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  201400           0 :                if (operatorPosition != NULL)
  201401             :                   {
  201402             : #if 0
  201403             :                  // Debugging information
  201404             :                     if (operatorPosition->get_parent() == NULL)
  201405             :                        {
  201406             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201407             :                        }
  201408             : #endif
  201409           0 :                     operatorPosition->set_parent(expression);
  201410           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  201411             :                   }
  201412             :              }
  201413             :         }
  201414             : 
  201415             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  201416           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  201417           0 :      if (initializedName != NULL)
  201418             :         {
  201419             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  201420           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  201421           0 :           ROSE_ASSERT(start != NULL);
  201422             : #if 0
  201423             :        // Debugging information
  201424             :           if (start->get_parent() == NULL)
  201425             :              {
  201426             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201427             :              }
  201428             : #endif
  201429           0 :           start->set_parent(initializedName);
  201430           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  201431             : 
  201432             : #if 0
  201433             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  201434             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  201435             : 
  201436             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  201437             :        // ROSE_ASSERT(end != NULL);
  201438             :           if (end == NULL)
  201439             :              {
  201440             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  201441             :              }
  201442             :             else
  201443             :              {
  201444             :                if (end->get_parent() == NULL)
  201445             :                   {
  201446             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201447             :                   }
  201448             :                end->set_parent(initializedName);
  201449             :                ROSE_ASSERT(end->get_parent() != NULL);
  201450             :              }
  201451             : #endif
  201452             :         }
  201453             : 
  201454             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  201455           0 :      help.insertCopiedNodePair(this,result);
  201456             : 
  201457             :   // printf ("End of copy SgCommonSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  201458             : 
  201459             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  201460             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  201461           0 :      help.decrementDepth();
  201462             : 
  201463             :   // Test if this is the root of the copy!
  201464           0 :      if (help.get_depth() == 0)
  201465             :         {
  201466             :        // This is the original calling node.
  201467             : 
  201468             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  201469             :        // printf ("Calling SgCommonSymbol::fixupCopy() (from root of AST being copied) \n");
  201470             : #if ALT_FIXUP_COPY
  201471             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  201472           0 :           fixupCopy_scopes (result,help);
  201473           0 :           fixupCopy_symbols (result,help);
  201474           0 :           fixupCopy_references (result,help);
  201475             : #else
  201476             :           fixupCopy(result,help);
  201477             : #endif
  201478             :        // Allow this to be called recursively, so accumulate the state.
  201479             :        // Also, clear the state in the SgCopyHelp object.
  201480             :        // help.clearState();
  201481             :         }
  201482             : 
  201483           0 :      return result;
  201484             :    }
  201485             : 
  201486             : 
  201487             : /* #line 201488 "../../../src/frontend/SageIII//Cxx_GrammarCopyMemberFunctions.C" */
  201488             : 
  201489             : /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  201490             : 
  201491           0 : SgNode* SgAliasSymbol::copy ( SgCopyHelp& help) const
  201492             :    {
  201493           0 :      SgAliasSymbol* result = NULL;
  201494             : 
  201495             :   // printf ("Copy SgAliasSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  201496             : 
  201497             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  201498             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  201499             :   // The default value of the depth is 0, so after this call the depth is 1!
  201500           0 :      help.incrementDepth();
  201501             : 
  201502             : #if 0
  201503             :   // DQ (10/22/2005): This is a useful test for the copy mechanism (in preprocessor.C)
  201504             :   // but it is not generally true that things can only be copied once!
  201505             :   // Check and see if this has been marked as copied! (detects recursive copy bug)
  201506             :   // AstAttribute* existingAttribute = const_cast<SgAliasSymbol*>(this)->attribute["copied"];
  201507             :      bool previouslyCopied = const_cast<SgAliasSymbol*>(this)->attribute.exists("copied");
  201508             :      if (previouslyCopied == true)
  201509             :         {
  201510             :           this->get_file_info()->display("Called from copy SgAliasSymbol: debug");
  201511             :         }
  201512             :      ROSE_ASSERT(previouslyCopied == false);
  201513             : 
  201514             :   // If not previously copied then build an attribute (on the heap) to mark it as copied
  201515             :      AstAttribute* newAttribute = new AstAttribute();
  201516             :      ROSE_ASSERT(newAttribute != NULL);
  201517             : 
  201518             :   // Add it to the AST (so it can be found later in any other attempt to copy this AST node)
  201519             :      const_cast<SgAliasSymbol*>(this)->attribute.add("copied",newAttribute);
  201520             : #endif
  201521             : 
  201522             :   // Copy data members from base classes
  201523             :   // Copy constructor parameter data member: alias_copy
  201524           0 :      SgSymbol* alias_copy; 
  201525             :   // case: not a listType for (using conditionalToCopyVariable)alias
  201526           0 :           if (get_alias() != NULL) 
  201527             :              { 
  201528           0 :                alias_copy = static_cast<SgSymbol*>(help.copyAst(get_alias())); 
  201529             :              } 
  201530             :             else 
  201531             :              { 
  201532             :                alias_copy = NULL; 
  201533             :              } 
  201534             :   // Copy constructor parameter data member: isRenamed_copy
  201535             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for isRenamed
  201536             :   // case: toBeCopied == COPY_DATA for isRenamed
  201537           0 :      bool isRenamed_copy = p_isRenamed; 
  201538             :   // Copy constructor parameter data member: new_name_copy
  201539             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for new_name
  201540             :   // case: toBeCopied == COPY_DATA for new_name
  201541           0 :      SgName new_name_copy = p_new_name; 
  201542             :  
  201543             : /* #line 35 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  201544             : 
  201545             :   // Build an empty copy of this object (will be filled in, but 
  201546             :   // the parent can't be set and must be set by the caller)
  201547           0 :      result = new SgAliasSymbol(  alias_copy, isRenamed_copy, new_name_copy );
  201548           0 :      ROSE_ASSERT(result != NULL);
  201549             : 
  201550             :   // Copy data members of "this" class
  201551             :   // Copy non-constructor parameter data member (access function): attributeMechanism_copy
  201552             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for attributeMechanism
  201553             :   // case: toBeCopied == CLONE_PTR for attributeMechanism
  201554           0 :      AstAttributeMechanism* attributeMechanism_copy = NULL; 
  201555           0 :      if ( p_attributeMechanism != NULL ) 
  201556             :         { 
  201557           0 :           attributeMechanism_copy = new AstAttributeMechanism( *p_attributeMechanism); 
  201558             :         } 
  201559             :        else 
  201560             :         { 
  201561             :           attributeMechanism_copy = NULL; 
  201562             :         } 
  201563             :   /* check for a valid pointer and delete if present */ 
  201564           0 :      if (result->p_attributeMechanism != NULL) delete result->p_attributeMechanism; 
  201565             :   /* add assignment to result here */ 
  201566           0 :      result->p_attributeMechanism = attributeMechanism_copy; 
  201567             :   // Copy non-constructor parameter data member (list access function): result->get_causal_nodes()
  201568             :   // case: (toBeTraversed == false) && (toBeCopied != CLONE_TREE) for causal_nodes
  201569             :   // case: toBeCopied == COPY_DATA for causal_nodes
  201570           0 :      SgNodePtrList causal_nodes_copy = p_causal_nodes; 
  201571           0 :      result->p_causal_nodes = causal_nodes_copy; 
  201572             :   // case: not a listType for (using conditionalToSetParent)alias
  201573           0 :           if ( (alias_copy != NULL) && (alias_copy->get_parent() == NULL) && (isSgType(alias_copy) == NULL) ) 
  201574             :              { 
  201575           0 :                alias_copy->set_parent(result); 
  201576             :              } 
  201577             : 
  201578             : /* #line 43 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/copyMemberFunction.macro" */
  201579             : 
  201580             :   // DQ (10/9/2007): comment out to test template problem ... This breaks test2004_76.C and test2004_142.C
  201581             :   // DQ (10/5/2007): Add custom function to be called to fixup IR node specific details.
  201582             :   // fixupCopy(result,help);
  201583             : 
  201584             :   // DQ (10/16/2007): The semantics of copy should include setting the parents of all 
  201585             :   // the Sg_File_Info objects that are built for the new IR nodes.
  201586           0 :      SgLocatedNode* locatedNode = isSgLocatedNode(result);
  201587           0 :      if (locatedNode != NULL)
  201588             :         {
  201589             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  201590           0 :           Sg_File_Info* start = locatedNode->get_startOfConstruct();
  201591           0 :           ROSE_ASSERT(start != NULL);
  201592             : #if 0
  201593             :        // Debugging information
  201594             :           if (start->get_parent() == NULL)
  201595             :              {
  201596             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201597             :              }
  201598             : #endif
  201599           0 :           start->set_parent(locatedNode);
  201600           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  201601             : 
  201602           0 :           Sg_File_Info* end = locatedNode->get_endOfConstruct();
  201603             : 
  201604             :        // DQ (10/27/2007): Some input AST's have not been constructed properly so that the copy of the endOfConstruct was not made.
  201605             :        // Warn about this but allow it for now so that the outliner can be allowed to work (under older semantics).
  201606             :        // ROSE_ASSERT(end != NULL);
  201607           0 :           if (end == NULL)
  201608             :              {
  201609           0 :                printf ("Warning, input to AST copy was not a correct AST (with valid endOfConstruct pointer) this = %p = %s \n",this,this->class_name().c_str());
  201610             :              }
  201611             :             else
  201612             :              {
  201613             : #if 0
  201614             :             // Debugging information
  201615             :                if (end->get_parent() == NULL)
  201616             :                   {
  201617             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201618             :                   }
  201619             : #endif
  201620           0 :                end->set_parent(locatedNode);
  201621           0 :                ROSE_ASSERT(end->get_parent() != NULL);
  201622             :              }
  201623             : 
  201624           0 :           SgExpression* expression = isSgExpression(result);
  201625           0 :           if (isSgExpression(this) != NULL)
  201626             :              {
  201627           0 :                Sg_File_Info* operatorPosition = expression->get_operatorPosition();
  201628             : 
  201629             :             // Not all SgExpression IR nodes have a valid operatorPosition (only applies to actual operators)
  201630           0 :                if (operatorPosition != NULL)
  201631             :                   {
  201632             : #if 0
  201633             :                  // Debugging information
  201634             :                     if (operatorPosition->get_parent() == NULL)
  201635             :                        {
  201636             :                          printf ("Detected a result->get_operatorPosition() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201637             :                        }
  201638             : #endif
  201639           0 :                     operatorPosition->set_parent(expression);
  201640           0 :                     ROSE_ASSERT(operatorPosition->get_parent() != NULL);
  201641             :                   }
  201642             :              }
  201643             :         }
  201644             : 
  201645             :   // DQ (10/16/2007): Also set the Sg_File_Info parents for the SgInitializedName
  201646           0 :      SgInitializedName* initializedName = isSgInitializedName(result);
  201647           0 :      if (initializedName != NULL)
  201648             :         {
  201649             :        // If this is a SgLocatedNode then check the parents of the Sg_File_Info objects
  201650           0 :           Sg_File_Info* start = initializedName->get_startOfConstruct();
  201651           0 :           ROSE_ASSERT(start != NULL);
  201652             : #if 0
  201653             :        // Debugging information
  201654             :           if (start->get_parent() == NULL)
  201655             :              {
  201656             :                printf ("Detected a result->get_startOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201657             :              }
  201658             : #endif
  201659           0 :           start->set_parent(initializedName);
  201660           0 :           ROSE_ASSERT(start->get_parent() != NULL);
  201661             : 
  201662             : #if 0
  201663             :        // DQ (10/16/2007): Note that a SgInitializedName does not have a get_endOfConstruct() member function yet with g++ this does compile!
  201664             :           Sg_File_Info* end = initializedName->get_endOfConstruct();
  201665             : 
  201666             :        // DQ (10/16/2007): For the moment allow the initializedName->get_endOfConstruct() to be NULL and issue a warning.
  201667             :        // ROSE_ASSERT(end != NULL);
  201668             :           if (end == NULL)
  201669             :              {
  201670             :                printf ("Detected a result->get_endOfConstruct() == NULL for result = %p = %s \n",result,result->class_name().c_str());
  201671             :              }
  201672             :             else
  201673             :              {
  201674             :                if (end->get_parent() == NULL)
  201675             :                   {
  201676             :                     printf ("Detected a result->get_endOfConstruct() with NULL parent for result = %p = %s \n",result,result->class_name().c_str());
  201677             :                   }
  201678             :                end->set_parent(initializedName);
  201679             :                ROSE_ASSERT(end->get_parent() != NULL);
  201680             :              }
  201681             : #endif
  201682             :         }
  201683             : 
  201684             :   // DQ (10/15/2007): Add everything to the map held internally so that we can more easily reference things like scopes.
  201685           0 :      help.insertCopiedNodePair(this,result);
  201686             : 
  201687             :   // printf ("End of copy SgAliasSymbol = %p = %s \n",this,SageInterface::get_name(this).c_str());
  201688             : 
  201689             :   // Record the depth of the copy so that we build an clear internal state (new feature) 
  201690             :   // used to associated old and new symbols in the original AST and the copy of the AST.
  201691           0 :      help.decrementDepth();
  201692             : 
  201693             :   // Test if this is the root of the copy!
  201694           0 :      if (help.get_depth() == 0)
  201695             :         {
  201696             :        // This is the original calling node.
  201697             : 
  201698             :        // Call the fixup mechanism to correct details of the AST copy mechanism.
  201699             :        // printf ("Calling SgAliasSymbol::fixupCopy() (from root of AST being copied) \n");
  201700             : #if ALT_FIXUP_COPY
  201701             :        // DQ (11/7/2007): These need to be called separately (see documentation)
  201702           0 :           fixupCopy_scopes (result,help);
  201703           0 :           fixupCopy_symbols (result,help);
  201704           0 :           fixupCopy_references (result,help);
  201705             : #else
  201706             :           fixupCopy(result,help);
  201707             : #endif
  201708             :        // Allow this to be called recursively, so accumulate the state.
  201709             :        // Also, clear the state in the SgCopyHelp object.
  201710             :        // help.clearState();
  201711             :         }
  201712             : 
  201713           0 :      return result;
  201714             :    }
  201715             : 
  201716             : 
  201717             : 

Generated by: LCOV version 1.14